NEWS
[gelöst]_Blockly Script - Fehlermeldung im Log
-
Hallo crepp
Nicht eine Bedingung/Verkleich triggern!
Sondern einen Datenpunkt Deines Aktors.
Ist "Power" ein Datenpunkt bei dem Aktor?
Welche Zustände kann der annehmen? true/false 0/1.
Das kannst Du im Reiter "Objekte" überprüfen.
Bei meinem Beispiel wird der Datenpunkt ".State" einer Steckdose überwacht/getriggert.
Dieser Datenpunkt kann wahr/true oder unwahr/false sein.
Schreibe uns doch die Datenpunke von dem Adapter oder was das für einer ist.
Grüße
-
Hallo,
Der Datenpunkt ist der Stromstärke-Messkanal meiner Steckdose. Ich frage damit ab, ob die angeschlossene Pumpe läuft (unter 1mA) oder nicht. Wenn nicht, schalte ich die Steckdose aus und nach 10sec wieder an. Damit reseste ich die Pumpe die evtl. mit einer Fehlermeldung steht. Dies will ich zukünftig in Abständen von 10-15min machen.
Hier mein jetziges Script mit den von dir empfohlenen Änderungen:
Läuft aber trotzdem nicht.Hier meine Version die komischerweise (?) funktioniert:
Die Fehlermeldung ist bei beiden Versionen identisch:
Gruß
crepp
-
Sorry, aber das kann nicht funktionieren.
Bzw. nur 1x beim Starten des Scripts.
Dann wird Dein Intervall gestartet. Diese Bausteine liegen außerhalb des Triggers.
Bausteine ausserhalb eines Triggers (ausser Funktionen) werden NUR bei Scriptstart EINMALIG ausgeführt.
Mach doch bitte einmal was wir Dir schon vorgeschlagen haben.
Trigger Deinen Datenpunkt.
Einfach auf das "ID Objekt" des Triggers klicken.
Dann kannst Du den gewünschten Datenpunkt auswählen.
Trigger auf "wurde geändert" setzen. NICHT auf "ist wahr"
Die Bedingung <= mit der ZAHL aus Mathematik NICHT TEXT nehmen.
Hier als Beispiel.
Grüße
-
Dies will ich zukünftig in Abständen von 10-15min machen. `
Dann wird das Blockly aber völlig anders aussehen
Jetzt machen wir aber erst mal das erste Problem
[EDIT] Noch ein Tipp. Gib Deinen Aktoren auf der CCU "sprechende" Namen.
Grüße
-
Hab jetzt den letzten Vorschlag umgesetzt:
Damit läuft es jetzt. Allerdings wird alle 10sec geschaltet (timeout fürs wieder anschalten) und nicht wie ich wollte alle 60sec.
Zur Erklärung hab ich die Objekte rausgesucht die beteiligt sind, vielleicht wird es so klarer was ich möchte:
Ich möchte den Trigger "Power" verwenden, wenn unter 1W, dann schalte "State" auf true.
-
Seltsam, habe jetzt zwischenzeitlich an einer anderen Version gebastelt, und das obenstehende Script inaktiv geschaltet.
Jetzt habe ich es wieder aktiv geschaltet und es läuft nicht mehr.
-
Damit läuft es jetzt. Allerdings wird alle 10sec geschaltet (timeout fürs wieder anschalten) und nicht wie ich wollte alle 60sec. `
Beobachte doch mal den Power State.Wie oft ändert der sich und ist dabei <=1?
Wenn die Bedingung erfüllt ist, wird JEDESMAL ein "Intervall" gestartet.
Der Intervall schaltet alle 60 Sek eine Lampe aus (egal ob sie schon aus ist).
Und das UNENDLICH!
Zudem wird durch den Intevall alle 60 Sek. ein Timer von 10 Sek. gestartet, der die Lampe einschaltet (egal ob sie schon an ist)
Wenn man 10x einen Intervall startet laufen auch 10 Intevalle.
Wenn man 10x einen Timer startet laufen auch 10 Timer.
Und bei Dir potenziert sich das!!!
(Bei mir hätte eigentlich eine Alarmglocke klingeln müssen :oops: ,sorry)
Du solltest Dein Konzept noch mal überdenken bzw. uns ausführlich erklären was Du möchtest.
Setze auf JEDENFALL "Stop Intervall" und "Stop Timer" ein.
Sonst bricht Dein System, wegen Überlastung zusammen.
Grüße
-
Hallo,
Danke die Info war sehr wichtig, ich versuche das jetzt mal selber hinzubekommen und werde die CPU und den Speicher dabei im Auge behalten.
Was ich möchte ist:
Schalte die Pumpe in regelmäßigen Abständen aus, wenn sie nicht gerade arbeitet (Reset einer evtl. Fehlermeldung)
Warte 10sec
Schalte dann wieder ein
Danke
Gruß
Torsten
-
Habe bei Wert <1 genommen, da die Pumpe im Standby ca. 0,4W zieht.
Ansonsten habe ich alles von Dir übernommen:
Leider stimmt irgendwas mit der Syntax nicht
-
Schalte die Pumpe in regelmäßigen Abständen aus, wenn sie nicht gerade arbeitet (Reset einer evtl. Fehlermeldung)
Warte 10sec
Schalte dann wieder ein `
Moin Torsten,und dieser Reset soll in der Tat ohne weitere Aktion 24 Stunden am Tag, 7 Tage die Woche, 365 Tage im Jahr alle 15 Minuten durchgeführt werden?
Oder gibt es irgend ein anderes Merkmal welches die Notwendigkeit eines präventiven Resets erkennen läßt?
-
Hallo crepp
Falls, wie BBTown nachgefragt hat, es keine andere Überprüfungsmöglichkeit gibt, kannst Du es mal so propieren.
Hier zum Importieren:
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="]oAs}e)hMyp{r5pcuh_#" x="138" y="88"><field name="COMMENT">Alle 15 Min. starten und prüfen</field>
<next><block type="schedule" id="=]=fSttVZM6gcuwI#}O8"><field name="SCHEDULE">*/15 * * * *</field>
<statement name="STATEMENT"><block type="comment" id="s#.eYlc?1gLJ:IG]~%VI"><field name="COMMENT">Hier den POWER überprüfen</field>
<next><block type="controls_if" id="7S6Srv[.a+#H4cZ;qk#7"><value name="IF0"><block type="logic_compare" id="Cs~sO0:i^_=0M%N4m1c"><field name="OP">LTE</field> <value name="A"><block type="get_value" id="c9DknPHn/*Cgso+8nj/f"><field name="ATTR">val</field> <field name="OID">hm-rpc.0.LEQ0661170.2.POWER</field></block></value> <value name="B"><block type="math_number" id="rF%~6z
0_?R0SjDP?(%:"><field name="NUM">1</field></block></value></block></value>
<statement name="DO0"><block type="comment" id="NI/QC]gjfznwda)^k%7o"><field name="COMMENT">Hier Dein Unischalter.STATE ausschalten</field>
<next><block type="control" id="uK+]?j:]MF|i^vM{=if0"><mutation delay_input="false"></mutation>
<field name="OID">Object ID</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE"><block type="logic_boolean" id="OSZ!PE:n^`jxR7qnX@pb"><field name="BOOL">FALSE</field></block></value>
<next><block type="comment" id="-2g,oBztlC~OuD!?T/G="><field name="COMMENT">Hier Dein Unischalter.STATE verzögert</field>
<next><block type="comment" id="fKq9};VgNAv/CVd97-ms"><field name="COMMENT">um 10 Sek. wieder einschalten</field>
<next><block type="control" id="M9LaUIsTA4EQE]C+uM,l"><mutation delay_input="true"></mutation>
<field name="OID">Object ID</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">10</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE"><block type="logic_boolean" id="yNi.rQ]h|w{/IjYDGshF"><field name="BOOL">TRUE</field></block></value></block></next></block></next></block></next></block></next></block></statement></block></next></block></statement></block></next></block></xml>Grüße
-
Mahlzeit BBTown,
Es handelt sich um ein Kärcher Hauswasserwerk, habe mit einem anderen (etwas größerem) Modell seit einem Jahr getestet. Dabei war das Teil 2x im Kärcher Service (eingeschickt) Zu guter letzt hab ich das Teil zurückgegeben und mir für das Geld eine etwas kleinere Pumpe mit denselben Anschlussmassen besorgt. Diese hab ich jetzt seit Montag im Test. Sie funktioniert auf jeden Fall besser als das andere Modell, hat aber eben ab u. zu das Problem das sie in den Fehlermodus geht. (Das ist evtl. ein Problem des zu empfindlichen Drucksensors, gehört aber nicht hier her)
Jedenfalls will ich diese evtl. Fehlermeldung ausschliessen. Ich werde, wenn das Script läuft. natürlich auch mit längeren Zeitspannen experiementieren, aber so weit bin ich ja noch nicht …
Hoffe, dass ich mein Problem verständlich erklärt habe, bin eben auch etwas gefrustet wg. Kärcher.
Werde jetzt mal den neuen Vorschlag testen u. berichten
Gruß
Torsten
-
Dann wird die Pumpe auch den ganzen Tag über benötigt?
Das Wasser soll/muss im Grunde den ganzen Tag über durch die Pumpe zur Verfügung gestellt werden?
… und nicht nur bei einem bstimmten Bedarf - z.B. wenn die Waschmaschine laufen soll, oder aus einem ähnlichen Grunde?
-
:mrgreen:
Hab jetzt den letzten Code probiert und es funzt !!!
Auch keine Fehlermeldungen mehr !
Hab auf jeden Fall in den letzten 2 Tagen viel lernen können,
Vielen Dank an alle Beteiligten für Eure Geduld!
Grüße
Torsten
-
Prima.
Setze bitte noch ein [gelöst] in den Betreff Deines ersten Beitrags.
Grüße
-
nachdem das Script nun läuft, könnten wir wiederum versuchen es zu verbessern 8-)
Ich würde dir empfehlen eine "Debug-Ausgabe" ins Log zu schreiben (ist auch ein Blockly-Baustein).
Und zwar immer dann wenn der Wert unterhalb deines Schwellwertes war und tatsächlich ein Reset durchgefüht wurde.
Wenn Du im Log nachschaust, dann bekommst Du Hinwiese darauf wie häufig es tatsächlich vorkommt und/oder ob womöglich sogar ein Muster zu erkennen ist.
-
Super,
werde ich machen !
-
stellst Du dann den Screenshot vorsichtshalber (oder für andere neue User) hier rein?
Danke!
-
nachdem das Script nun läuft, könnten wir wiederum versuchen es zu verbessern 8-)
Ich würde dir empfehlen eine "Debug-Ausgabe" ins Log zu schreiben (ist auch ein Blockly-Baustein).
Und zwar immer dann wenn der Wert unterhalb deines Schwellwertes war und tatsächlich ein Reset durchgefüht wurde.
Wenn Du im Log nachschaust, dann bekommst Du Hinwiese darauf wie häufig es tatsächlich vorkommt und/oder ob womöglich sogar ein Muster zu erkennen ist. `
Hab den Baustein gefunden:
2 Fragen:
test = log-Datei die geschrieben wird ? (wo wird abgespeichert)
Wo muss ich den Baustein anklemmen ?
-
Hänge den Baustein bitte direkt unter deinem ersten "Steuere" Baustein in das Script und der Trigger Bedingung mit rein.
Als Text empfehle ich dir so etwas wie: "Die Pumpe wurde neu gestartet, da der Stromverbrauch < 1 Wattt war.
Und als Debug-Typ wäre wohl "warn" die richtige Wahl
Der Eintrag erscheint ganz normal im Log (siehe die Registerkarten von ioBroker).
Aber eben nur wenn auch tatsächlcih ein Ausschalten der Steckdose notwendig gewesen ist.
Im Idealfall siehst du den Eintrag nie