NEWS
Laden wenn false
-
Moin
seit langer Zeit laden ich meine Tab's über einen Shelly Plug S.
Das Script sieht so aus:
Funktioniert super.
Doch steigt der Fully im iob seit einiger Zeit irgendwie aus.
Ist der Shelly noch eingeschaltet ist das kein Problem, aber ist der aus , geht auch das Tab aus wenn der Akku leer ist.Also habe ich ein Script gemacht, der den Zustand vom Fully ermittelt, in dem Fall "alive".
So sieht das dann auf:
Das sollte bewirken das der Shelly dann schaltet sollte der Fully aussteigen ... also "false".
Nun passiert folgendes:
Akku bei 80% und der Shelly schaltet ab und der Akku entlädt.
Akku dann bei 75% der Shelly schaltet an und lädt den Akku bis 80% und schaltet ab.Stoppe ich das Script zur Ermittlung von "alive" , schaltet der Shelly ein bei 20% und aus bei 80%.
Was stimmt da denn nicht ??
Danke
-
@dr-pie Das ist "korrekt" so. Ein Trigger wird nur beim starten von Javascript initialisiert.
Dein Trigger wird nun beim starten ausgeführt: Ist die Objekt-ID Is Fully alive? falsch ? --> Dann "steure..."
Danach wird der Trigger nie wieder etwas machen, denn er hat seine Aufgabe erfüllt. Du musst schon auf eine "Änderung" reagieren, dann wird er jedes mal bei einer "Änderung" ausgeführt. Erst dann darfst du prüfen ob er "falsch" oder "wahr" ist -
-
@dr-pie sagte in Laden wenn false:
Was ist denn da noch falsch ?
nimm einen debug Baustein und du siehst wo es klemmt.
eventuell gehört dieses https://forum.iobroker.net/post/1092760 ja zusammen hier her.
-
@homoran Das mit dem "get axiosGetDevicesInfo" betrifft nur das Tab im Schlafzimmer.
Das Tab bei dem ich das "alive" teste, hat eine andere IP und steht im Büro.
Wo muss der debug-Baustein denn rein und auf was muss er gestellt werden ?
-
@dr-pie sagte in Laden wenn false:
Wo muss der debug-Baustein denn rein
über all dort wo es hängen bleiben kann.
Dann sinnvolle Ausgaben schreiben, am besten als Info, dann steht es auch im großen Log -
@dr-pie
Zum einen da wo du ihn hast. Damit bekommst du erst einmal mit ob dein Trigger überhaupt auslöst. Als Text nimmst du dann etwas was du im Log auch Zweifelsfrei identifizieren kannst wie bspw. Samsung Debug: im TriggerEinen zweiten dann hinter den Kommentar "Burö (zumindest mal im "mache"-Block). Samsung Debug: im falls-Block
Dann weißt du ob dein Vergleich bei "falls" korrekt arbeitet.Die Stufen geben nur an wie es im Log eingetragen wird. Danach kannst du dann bspw. filtern (wenn es bspw. nachts um 3:00 Uhr war musst du sonst zig Zeilen Log sichten). "warning" wird dabei noch orange eingefärbt, "error" rot.
-
@sborg Das das Script auslöst ist ja auch richtig.
Nur wer oder was löst es aus .
Das Script löst auch aus wenn der Fully auf true ist.
Aber stoppe ich das Script, stoppt auch das Schalten des Shellys ... mir irgendwie unverständlich. -
@dr-pie Ist denn der DP
Is Fully alive?
auch wirklich vom Typ boolean? Nicht das der ein "String" ist in dem nur true/false drin steht. Dann wäre deine Abfrage nämlich immer "true" und würde ausgeführt werden (was so zu deinem Fehlerbild passt). -
Beende ich den Fully in dem Tab Büro, schaltet der DP von true auf false und das Script schaltet den Shelly.
Also an sich funktioniert das schon so wie es soll ... aber eben nicht wie es sollte. -
jetzt hat das Script ausgelöst ... bei alive von Fully.
16:30:00.231 info javascript.0 (198) script.js.common.Tabs_laden: Auslöser 16:30:00.234 info javascript.0 (198) script.js.common.Tabs_laden: getState(id=fullybrowser.0.Büro.alive, timerId=undefined) => {"val":null,"ack":true,"ts":1702222200228,"q":0,"from":"system.adapter.fullybrowser.0","user":"system.user.admin","lc":1702222200228} 16:30:00.237 info javascript.0 (198) script.js.common.Tabs_laden: Schalter 16:30:04.748 info javascript.0 (198) script.js.common.Tabs_laden: Auslöser 16:30:04.751 info javascript.0 (198) script.js.common.Tabs_laden: getState(id=fullybrowser.0.Büro.alive, timerId=undefined) => {"val":false,"ack":true,"ts":1702222204746,"q":0,"from":"system.adapter.fullybrowser.0","user":"system.user.admin","lc":1702222204746} 16:30:04.753 info javascript.0 (198) script.js.common.Tabs_laden: setForeignState(id=shelly.0.SHPLG-S#E868E76F3EF9#1.Relay0.Switch, state={"val":true,"ack":false,"ts":1702222204753,"q":0,"from":"system.adapter.javascript.0","lc":1702222204753,"c":"script.js.common.Tabs_laden"}) 16:30:04.755 info javascript.0 (198) script.js.common.Tabs_laden: Büro 16:30:04.756 info javascript.0 (198) script.js.common.Tabs_laden: Schalter 16:30:05.426 info javascript.0 (198) script.js.common.Tabs_laden: Auslöser 16:30:05.429 info javascript.0 (198) script.js.common.Tabs_laden: getState(id=fullybrowser.0.Büro.alive, timerId=undefined) => {"val":true,"ack":true,"ts":1702222205424,"q":0,"from":"system.adapter.fullybrowser.0","user":"system.user.admin","lc":1702222205424} 16:30:05.432 info javascript.0 (198) script.js.common.Tabs_laden: Schalter
-
@dr-pie
ob Du in Zukunft auch die Texte in CODETAGS einstellen würdest ?
Das hat man Dir schon so oft gepredigt und Du ignorierst das !
Danke dafür -
@djmarc75 irgendwie peile ich das manchmal nicht was wo wie gepostet werden sollte.
Aber meinen Beitrag habe ich angepasst. -
@dr-pie sagte in Laden wenn false:
irgendwie peile ich das manchmal nicht was wo wie gepostet werden sollte.
https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1
-
Ich bekomme es einfach nicht hin.
Meine Vermutung ist, das der Adapter kurzzeitig neu startet und deswegen alive false liefert.
Aber das sind einfach nur Vermutungen. -
Moin
mit einem neuen Script habe ich nun festgestellt das der Adapter immer zur vollen und halben Stunde neu startet.
Das scheint das alive false auszulösen.Nun müßte man eine Abfrage nach Zeit hinzufügen.
Das heißt wenn der Adapter z.B. 5 Minuten lang false ist dann mache etwas.
Nur wie muss ein Blockly aussehen mit einer solchen Abfrage ?
Danke
-
@sborg sagte in Laden wenn false:
Dein Trigger wird nun beim starten ausgeführt: Ist die Objekt-ID Is Fully alive? falsch ? --> Dann "steure..."
Danach wird der Trigger nie wieder etwas machen, denn er hat seine Aufgabe erfüllt.Die Info ist nicht korrekt. Das ist einfach ein Trigger auf einen Wert. Immer, wenn der Wert
false
gesetzt wird, wird der Trigger ausgeführt. Nicht beim Start des Scripts - da wird der Trigger nur im System registriert (wie jeder andere Trigger auch).