Vermutlich habt ihr Recht ..... bin noch am Basteln....
nächste Frage:
kann man in einer Rule den aktuellen Zählerstand von ruletimer1 ermitteln/auswerten?
Vermutlich habt ihr Recht ..... bin noch am Basteln....
nächste Frage:
kann man in einer Rule den aktuellen Zählerstand von ruletimer1 ermitteln/auswerten?
kann man in einer Rule den aktuellen Zählerstand von ruletimer1 ermitteln/auswerten?
Wenn du in der Konsole ruletimer eingibst wird dir der aktuelle Wert der timer angezeigt.
Was du machen könntest:
einen ruletimer der bis 100 zählt z.b. in Zehnerschritte zerlegen und ne Variable mit hochzählen lassen:
rule1 on <trigger> do backlog rultimer1 10, var1 0 endon on rules#timer=1 do backlog ruletimer1 10; add1 1 endon on var1#state>10 do <wasauchimmer z.b. rule1 0> endon
Ist zwar kein echtes auslesen aber ich kann ja den variablen Wert verwenden um daran den Timerstand abzufragen.
Ist die Frage warum den Status brauchst und in welchen Intervallen der abgerufen werden soll, sonnst kann man auch gleich mit den Timerwerten spielen...
Klimmzüge eben
so - ich war viel anderweitg unterwegs - aber JETZT will ich mein Projekt wieder in Angriff nehmen.... ( und vielleicht auch als Version 1 abschließen)
Wie ihr schon vermutet habe - es ist ziemlich kompliziert...
Ein Problem habe ich noch:
Da das System in einem abgeschlossenen Bereich laufen wird - und das WLAN per Fritzbox zur Verfügung gestellt bekommt ...
Wie kann ich die interne Systemzeit von der Fritzbox holen?
das Kommando "ntpserver [192.168.x.x]" habe ich schon abgesetzt - aber es tut sich nichts ...
Die Fritzbox ist als interer Zeitserver konfiguriert und - soweit ich das sehen kann - funktioniert das auch...
vielen Dank
Der Befehl um den ntpserver zu setzen lautet:
ntpserver1 [ip/Host]
Bzw.
ntpserver2 [ip/Host]
ntpserver3 [ip/Host]
war die Tage unterwegs ...
"HoerMirAuf" : super - ein DICKES DANKE für deine zahlreichen Hilfestellungen!
Leider funktioniert es nicht - wo kann ich die aktuelle Systemzeit erkennen - bzw. ist die Zeit am Anfang der Logzeilen die Systemzeit?
Im "Log" sehe ich dannz.B. "00:02:00 RSL: tele/sonoff/UPTIME = {"Time":"1970-01-01T00:02:00","Uptime":"0T00:02:00"}"
Die tatsächlich Zeit wäre "2019-05-06 10:31:15" ...
Ich war zu ungeduldig - jetzt klappt es doch!
... gibt es auch ein Command, mit dem ich manuell eine Aktualisierung starten kann?
... gibt es auch ein Command, mit dem ich manuell eine Aktualisierung starten kann?
Eine Aktualisierung von was?
Eine Aktualisierung von was?
... des Systemdatums manuell auslösen ....
Jetzt habe ich tagelang nach dem Problem gesucht und dachte schon, dass mein SonnoffPow defekt wäre ...
ABER - ich hatte "nur" das "backlog" im Commandoblock vergessen ....
KOMISCH dass dann die Befehle falsch ankommen
Jetzt geht es
GRRRRRRRRRR ...
( die Storry vom Wald und den vielen Bäumen ...)
... des Systemdatums manuell auslösen ....
meines Wissens nach nicht.
Ich bilde mir aber ein, das der sync ausgelöst wird wenn der ntpserver gesetzt wird. Ist aber reine Vermutung und wäre zu testen.
ntpserver1 <ip>
... es funktioniert doch nicht vollständig - inzwischen bin ich irgendwie Fehlerblind....
Rule2
on mem1#State do backlog websend [192.168.178.61] mem1 %mem1%; var5 %mem1%; add5 %mem2%; add5 15; mem3 0 endon
on mem2#State do backlog websend [192.168.178.61] mem2 %mem2%; var5 %mem1%; add5 %mem2%; add5 15; mem3 0 endon
on mem3#State==0 do backlog rule2 0; mem3 %Var5%; rule2 1; var5 0 endon
on Var1#State<=3 do backlog websend [192.168.178.61] var1 %var1%; ruletimer3 %mem3%; ruletimer1 %mem1%; ruletimer2 15 endon
on var1#State>3 do var1 1 endon
Zur besseren Übersicht habe ich die einzelnen Anweisungsblöcke HIER in separate Zeilen geschrieben - im Orginal fehlen die "CR"
Der 1. RuleAnweisungsBlock startet ordnungsgemäß mit z.B. "mem1 30" - es kommt bei [x.x.x.61] mem1 und bei var5 und auch bei mem3 alles richtig an
der 2. RuleAnweisungsBlock verweigert sich obwohl er identisch zum 1.Block von mem1 ist - es tut sich bei z.B. "mem2 15" NIX
der 3. RuleAnweisungsBlock startet auch nicht obwohl nach dem 1. und dem 2. RuleAnweisungsBlock jeweils mem3 der Wert 0 zugewiesen wird und dort auch landet.
Komischer Weise funktioniert aber die 5. und 6. RuleAnweisungsBlöcke wieder - z.B. wenn ich "var1 5" eingebe
ICH VERSTEHE ES NICHT!
ist denn die Rule2 überhaupt aktiv?
hier mal der Ablauf....
13:04:21 CMD: mem3 50
13:04:21 RSL: stat/sonoff/RESULT = {"Mem3":"50"}
13:04:26 CMD: mem1 30
13:04:26 RSL: stat/sonoff/RESULT = {"Mem1":"30"}
13:04:26 RUL: MEM1#STATE performs "backlog websend [192.168.178.61] mem1 30; var5 30; add5 15; add5 15; mem3 0"
13:04:26 RSL: stat/sonoff/RESULT = {"WebSend":"Done"}
13:04:26 RSL: stat/sonoff/RESULT = {"Var5":"30"}
13:04:26 RSL: stat/sonoff/RESULT = {"Add5":"45.000"}
13:04:27 RSL: stat/sonoff/RESULT = {"Add5":"60.000"}
13:04:27 RSL: stat/sonoff/RESULT = {"Mem3":"0"}
13:04:35 CMD: mem3
13:04:35 RSL: stat/sonoff/RESULT = {"Mem3":"0"}
Alles anzeigen
... und DANN tut sich nichts ....
es scheint, dass die "on memX#State .." pro Systemstart nur EINMAL ausgeführt werden - egal welches memX danach verändert wird ....
also: wenn ich "mem1 xx" mehrfach aufrufe wird es genau nur einmal ausgeführt - danach tut sich nichts mehr ...
verstehe ich nicht!
ist denn die Rule2 überhaupt aktiv?
klar - dort stehen ja alle Regeln für die Änderungen der mem1...3 ...
und sonst würde es auf "mem1 30" überhaupt nicht reagieren
in den anderen Rules stehen keine Kommandos zu den memX
Puh .... wie ich bereits in Post #21 erwähnte:
ZitatHmmm musste eigentlich auch gehen. Aber an der Stelle steig ich dann aus.
Aber vermutlich geht es deswegen nicht (Wiki - Rules)
ZitatHinweis
Folgendes funktioniert nicht:
Code
- rule on event#setvar1 do backlog var1 %value%; power1 %var1% endon
Zumindest nicht so, wie man es erwarten könnte. Der vom Befehl power1 verwendete Wert var1 ist der Wert, der vorhanden ist, bevor der Befehl backlog ausgeführt wird. Dies ist der Fall, weil die Rule den Wert in %var1% einsetzt, BEVOR die Backlog-Befehle in das Backlog-Protokoll eingestellt werden.
mit dem Umweg über VarX-Speicher funktioniert es nun:
rule2
on var1#State>0 do backlog mem1 %var1%; websend [192.168.178.61] mem1 %mem1%; var1 -1 endon
on var2#State>0 do backlog mem2 %var2%; websend [192.168.178.61] mem2 %mem2%; var1 -1 endon
on var1#State==-1 do backlog var5 %mem1%; add5 %mem2%; add5 15; var2 -1 endon
on var2#State==-1 do backlog mem3 %var5%; var5 0; var2 0 endon
on var3#State<=3 do backlog websend [192.168.178.61] var1 %var3%; ruletimer3 %mem3%; ruletimer1 %mem1%; ruletimer2 15 endon
on var3#State>3 do var3 1 endon
Offensichtlich klemmt der CommandoBlock "on memX#State do backlog ..." - ohne einen "backlog"-Block funktioniert es... (z.B. i [x.x.x.61]-Client)
schon irgendwie komisch
hallo HoerMirauf
Das mit der WerteZuweisung innerhalb eines Backlog-Blocks VOR dessen Ausführung ist ja einer der Gründe, warum es so "von hinten durch die Brust" geht.
Jedenfalls bin ich dir sehr, SEHR dankbar, dass du dir trotz Allem noch meine Fragen ansiehst und immer wieder hilfreiche Antworten gibst!
herzlichen Gruß aus der Knobelkiste ...
Jedenfalls bin ich dir sehr, SEHR dankbar, dass du dir trotz Allem noch meine Fragen ansiehst und immer wieder hilfreiche Antworten gibst!
Kein Ding, gerne.
Ich verfolge das Ganze auch mit großem Interesse und bin echt gespannt ob Du das echt noch zum laufen bekommst.
Viel helfen kann ich da allerdings nicht mehr und mir wäre auch der Aufwand zu hoch sowas mit Websend und Rules lösen zu wollen Respekt vor Deinem Enthusiasmus.