Re: Timerausfall - benötige Hilfe
Verfasst: 05.12.2016, 14:21
Na das ist ja mal vielversprechend
Grüße
Tom
Heimautomation mit ELV HomeMatic und FHZ Funk-Hauszentralen
https://homematic-forum.de/forum/
Code: Alles auswählen
################ cat /usr/local/x
#!/bin/tclsh
load tclrega.so
rega_script {
string lSysvarCounterName = "CCU-TimerControl-Counter";
string lSysvarInfoName = "CCU-TimerControl-Info";
!---------------Ende Einstellungen
object lSysvars = dom.GetObject(ID_SYSTEM_VARIABLES);
object lSrc = dom.GetObject("$src$");
object lThis = dom.GetObject("$this$");
object lSysvarCounter = lSysvars.Get(lSysvarCounterName);
object lSysvarInfo = lSysvars.Get(lSysvarInfoName);
integer lCounter = 0;
string lInfo = "TimerControl: " # currenttime.ToString();
if(lThis)
{
lInfo = lInfo # " " # lThis.Name();
}
if(lSysvarCounter)
{
lCounter = lSysvarCounter.Value();
if(lCounter > 1000000000)
{
lCounter = 0;
}
lSysvarCounter.State(lCounter + 1);
}
if(lSysvarInfo)
{
if(lSrc)
{
if(lSrc.Type() == OT_CALENDARDP)
{
lInfo = lInfo # " ID: " # lSrc.ID();
lInfo = lInfo # " TS: " # (lSrc.Timestamp()).ToString();
lInfo = lInfo # " LTS: " # (lSrc.LastTimestamp()).ToString();
lInfo = lInfo # " N: " # (lSrc.Next()).ToString();
}
else
{
lInfo = lInfo # " ausgelöst durch " # lSrc.ID();
}
}
else
{
lInfo = lInfo # " manuell gestartet";
}
lSysvarInfo.State(lInfo);
}
}
Habe ich direkt im Skript auf Seite 17 gerade gemacht.Bulli hat geschrieben:Hier müßte BadenPower nur das Kontrollscript verschönern.
Und falls das CUxD-AddOn installiert ist, kann beim CUxD System.Timer() die folgende CMD_EXEC-Zeile eingetragen werden.Bulli hat geschrieben:Ich bin ja schon immer der Meinung ein "cronjob" funkioniert zu 100%. Das wollte ich zur Sicherheit auch auf der Test-CCU verifizieren.
Ergebniss 100%
Code: Alles auswählen
/usr/local/x
Code: Alles auswählen
root@Bulli-L:/tmp# diff xyz xyz1
3,4c3,4
< rega_script {
< boolean lReactivate = true;
---
> rega_script {
> boolean lReactivate = true;
78,83c78,84
< lProtocolText = "Timerausfall -";
< lProtocolText = lProtocolText # " Programm: '" # lProgram.Name() # "'";
< lProtocolText = lProtocolText # " PrgID: '" # lProgram.ID() # "'";
< lProtocolText = lProtocolText # " TimerID: '" # lTimer.ID() # "'";
< lProtocolText = lProtocolText # " TS: '" # lTimer.Timestamp() # "'";
< lProtocolText = lProtocolText # " N: '" # lTimer.Next() # "'";
---
> lProtocolText = "Timerausfall ";
> lProtocolText = lProtocolText # " Programm: " # lProgram.Name();
> lProtocolText = lProtocolText # " PrgID: " # (lProgram.ID()).ToString();
> lProtocolText = lProtocolText # " TimerID: " # (lTimer.ID()).ToString();
> lProtocolText = lProtocolText # " TS: " # (lTimer.Timestamp()).ToString();
> lProtocolText = lProtocolText # " N: " # (lTimer.Next()).ToString();
> lProtocolText = lProtocolText # " Ende"
130c131
< }
---
> }
Code: Alles auswählen
# pwd
/var/spool/cron
# ll
total 0
227 0 drwxrwxr-x 2 root root 60 Dec 6 07:37 .
220 0 drwxrwxr-x 3 root root 60 Dec 2 09:26 ..
228 0 lrwxrwxrwx 1 root root 19 Dec 2 09:26 crontabs -> /usr/local/crontabs
# cd /usr/local/crontabs
# ll
total 4
65 0 drwxrwxr-x 2 root root 224 Dec 6 07:37 .
1 0 drwxr-xr-x 4 default default 488 Dec 5 18:58 ..
400 4 -rw------- 1 root root 264 Dec 6 07:37 root
# cat root
12 4 * * * /bin/setHWClock.sh
14 4 * * * /bin/SetInterfaceClock 127.0.0.1:2001
#* * * * * /usr/local/x;sleep 1;/usr/local/x;sleep 1;/usr/local/x;sleep 1;/usr/local/x;sleep 1;/usr/local/x;sleep 1;/usr/local/x;sleep 1
#* * * * * /usr/local/xx;sleep 30;/usr/local/xx
Wenn ein Skript in der Abarbeitung durch eine lahme Internetverbindung hängt und 5 Minuten braucht, dann hilft Dir auch ein CUxD-Timer nicht, denn das Event wird auch nicht zu dem Zeitpunkt der Auslösung verarbeitet, sondern auch erst wenn es dann endlich mal an die Reihe kommt.Bulli hat geschrieben:Mit CuxD Timern hat man für Windowsuser eine machbare Alternative.
In diesem Fall schon, denn das Event wird überhaupt nicht benötigt.BadenPower hat geschrieben:Wenn ein Skript in der Abarbeitung durch eine lahme Internetverbindung hängt und 5 Minuten braucht, dann hilft Dir auch ein CUxD-Timer nicht, denn das Event wird auch nicht zu dem Zeitpunkt der Auslösung verarbeitet, sondern auch erst wenn es dann endlich mal an die Reihe kommt.