NEWS
[VORLAGE] Blockly Meldung wenn Waschmaschine fertig
-
@dehein2
CheckFertig wird mehrmals aufgerufen. Wichtig ist dabei mit welchem Parameter.Timer können mehrmals aufgerufen werden. Dabei werden jedesmal NEUE Timer gestartet, die parallel zu den Anderen laufen. Deshalb stoppt man vor einem erneuten Aufruf einen eventuell schon laufenden..
Wenn ein Timer gestoppt wird, werden die Bausteine in dem Timer NICHT ausgeführt.
Dein Problem wird wahrscheinlich der "GrenzWertInWatt" sein. 300 finde ich zu hoch.
Beobachte doch einfach mal die Werte wenn die Waschmaschine läuft. -
@rantanplan
Danke. Die Sache ist, dass selbst wenn die Maschine fertig ist und dauerhaft <5W braucht die Schleife ja immer mit dem befehl stop(timeout) gebinnt, oder? Und das obwohl die funktion immer mit dem parameter wahr aufgerunfen wird...oder verstehe ich das falsch?
-
Also ich meine, und das sieht man im Log ja auch, es ist dann immer
stop(timeout) -> timout(60) -> stop (timeout)....
Daran, dass immer nur "Wert" auftaucht sieht man ja, dass die falls-Funktion das tut was sie soll, oder?
-
@dehein2 sagte in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
@rantanplan
Danke. Die Sache ist, dass selbst wenn die Maschine fertig ist und dauerhaft <5W braucht die Schleife ja immer mit dem befehl stop(timeout) gebinnt, oder? Und das obwohl die funktion immer mit dem parameter wahr aufgerunfen wird...oder verstehe ich das falsch?
Das Script triggert "Power" auf Änderung. Jedes Mal wenn sich der Wert ändert, wird es durchlaufen.
Wie schon gesagt dient das "Stop timeout" zur Sicherheit.Es sind zwei Bedingungen um "CheckFertig" mit "wahr" aufzurufen. Wenn das laufend aufgerufen wird, obwohl die Waschmaschine fertig ist, stimmt "WaschmaschineAn" nicht. Schau mal nach ob dort ein Wert eingetragen ist.
Wenn das Script zum ersten Mal gestartet wird, wird "WaschmaschineAN" zwar angelegt aber enthält KEINEN Wert.Das Script ist schon etwas älter. Da gab es noch keinen "Init-Wert" bei "Datenpunkt erzeugen". Muss ich mal bei Gelegenheit anpassen.
Funktioniert das Script bei Dir nicht oder geht es nur um eine Verständnisfrage?
-
Hi @rantanplan.
Danke. Nein es funktioniert leider nicht. Die Ini Werte habe ich gesetzt und die "an" erkennung funktioniert auch.
Im Prinzip durchläuft das script dies mehrmals pro minute, alle 2-3 Sekunden (halt immer wenn sich der POWER Wert ändert). Dies passiert wenn Power <300W ist (deutlich darunter):
16:33:34.298 info javascript.0 (16094) script.js.Geräte.Waschmaschine: Timer WM stop 16:33:34.299 info javascript.0 (16094) script.js.Geräte.Waschmaschine: Timer WM start 16:33:34.300 info javascript.0 (16094) script.js.Geräte.Waschmaschine: WERT2 16:33:44.778 info javascript.0 (16094) script.js.Geräte.Waschmaschine: Timer WM stop 16:33:44.779 info javascript.0 (16094) script.js.Geräte.Waschmaschine: Timer WM start 16:33:44.780 info javascript.0 (16094) script.js.Geräte.Waschmaschine: WERT2
Dadurch wird der Timer natürlich immer wieder gestoppt.
Sorry, so ganz verstehe ich es immernoch nicht.
Das Hauptscirpt hat ja im Prinzip 2 Optionen dir alle paar Sekunden durchlaufen werden
A: Wert > GrenzWertInWatt -> checkfertig wird aufgerufen mit false -> es durchläuft nur stop(timeout)
B: Wert < GrenzWertInWatt && WaschmaschineAN=true ->checkfertig wird aufgerufen mit true -> es durchläuft erst stop(timeout) und dann Ausführen in 60 sekWas ich nicht verstehe: (beispiel wie im code oben (Wert 2 ist Fall B))
Sek 1: A -> kein Timer
Sek 3 B -> Timer stop -> Timer start
Sek 5 B -> Timer stop - Timer startIrgendwie wird der timer ja IMMER gestoppt, oder?
DANKE!
-
@dehein2 sagte in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
Hi @rantanplan.
Danke. Nein es funktioniert leider nicht. Die Ini Werte habe ich gesetzt und die "an" erkennung funktioniert auch.
Im Prinzip durchläuft das script dies mehrmals pro minute, alle 2-3 Sekunden (halt immer wenn sich der POWER Wert ändert). Dies passiert wenn Power <300W ist (deutlich darunter):
Was benutzt Du denn für einen Stecker? Änderungen alle 2-3 Sekunden? Das ist happig. Wie sieht denn da Dein DutyCycle aus?
Da müsstest Du Dir eventuell einen "Puffer" einbauen. Ähnlich so wie ich am Anfang auf "0" prüfe.Falls "vorheriger Wert" > "vorheriger Wert" + "x" ODER "vorheriger Wert" < "vorheriger Wert" - "y"
Irgendwie wird der timer ja IMMER gestoppt, oder?
Ja. In Deinem Fall ist das auch gut so. Sonst hättest Du in kürzester Zeit 1000sende Timer am Laufen und ioBroker würde einfrieren.
Ich würde mir einen anderen Stecker besorgen.
-
@rantanplan
Das ist ein Shelly PlugS. Vielliecht sind es auch 10sek Aber ist das wirklich so relevant. Selbst wenn der Wert nur alle 30sek neu käme würde es ja nicht klappen oder?Dann würde ja trotzdem nach 30 sek obwohl der wert < 300W sit Option B durchlaufen und der Timer gestoppt. Oder stehe ich total auf dem Schlauch?
-
@dehein2 sagte in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
@rantanplan
Das ist ein Shelly PlugS. Vielliecht sind es auch 10sek Aber ist das wirklich so relevant. Selbst wenn der Wert nur alle 30sek neu käme würde es ja nicht klappen oder?Dann würde ja trotzdem nach 30 sek obwohl der wert < 300W sit Option B durchlaufen und der Timer gestoppt. Oder stehe ich total auf dem Schlauch?
Alles ein Zeitproblem. Wenn ein Timer nach 40 Sek. etwas machen soll, sich aber alle 10 bis 30 Sek. etwas ändert funktioniert das nicht. Dafür ist das Script in der Form nicht geeignet.
Endweder anderer Stecker oder Script mit mit "Puffer" anpassen. -
@rantanplan : spricht denn etwas dagegen den Stop timeout" auf in eine if Abfrage zu packen und nur zu durchlaufen wenn der wert false übergeben wird? Dann hätte ich wahrscheinlich das Problem, dass der Timer x mal gestartet wird, oder?
-
@dehein2 sagte in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
@rantanplan : spricht denn etwas dagegen den Stop timeout" auf in eine if Abfrage zu packen und nur zu durchlaufen
wenn der wert false übergeben wird? Dann hätte ich wahrscheinlich das Problem, dass der Timer x mal gestartet wird, oder?Der Timer ist schon wichtig und richtig. Sonst kann man die Waschfunktionen (Richtungswechsel, Änderung Waschprogramm usw.) nicht richtig überwachen.
Das Script ist schon älter und wird von mir und etlichen anderen Usern fehlerfrei eingesetzt,Deine schnellen Änderungen sind nicht normal.
Diese müsstest Du mal überwachen und feststellen was sich um wieviel ändert. Das kann nicht viel sein.
Ich sehe nur eine Chance in dem von mir beschriebenen "Puffer".
Etwa so
Ausprobieren kannst nur Du das.
-
@rantanplan
Danke. Das werde ich nächste Woche mal testen -
@rantanplan
Danke nochmal. Ich habe es nun etwas anders probiert.
Und zwar habe ich eine 2. Variable eingeführt die den Status des Timers enthält. Also Timer läuft und timer läuft nicht. Passend dazu habe in der CheckFertig dann die if-Abfrage erweitert. Außerdem habe ich einen Grenzwert für Einschalterkennung und einen anderen Grenzwert für die Ausschalterkennung eingebaut.Bei den erstem 3 tests hat es gut geklappt. Mal schauen wie es mit unterschiedlichen Wasch-/Trocken-Programmen aussieht.
VG
-
@dslraser said in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
@Vazi
dieser "erste Block" erstellt den nötigen Datenpunkt, der hat sich in der Zwischenzeit geändert. Bei Dir fehlen die Werte in Common und event. wie er initialisiert werden soll.@Vazi said in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
Hallo Leute
Habe Script erfolggreich inportiert, beim Test bekomme ich jedoch die FM: "Deiser Block ist mit anderen nicht richig verbunden".
Ich habe leider genau das Gleiche Problem. An sich scheint alles zu passen, aber irgendwie läuft das Skript nicht los.
Wie muss ich denn die Werte in common und event anpassen und welche müssen da rein!Danke für die Hilfe
Mod-Edit: Vollzitat gekürzt! Bitte vermeidet Vollzitate! Siehe Forum Regeln, Punkt 2
-
@Master-Rudi
meinst Du das ? -
@dslraser said in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
@Master-Rudi
meinst Du das ?Ja genau, das hatte ich mir angeschaut, muss aber ehrlich gesagt sagen, dass ich nicht weiß, wie es dann bei dem Waschmaschinen Script aussehen müsste... Ich denke das ausschlaggebende ist die richtige Definiton der role. Aber als was muss ich den das JS definieren? Als command, oder json oder, kA vielleicht seh ich auch grad den wald vor lauter Bäumen nicht...
-
@Master-Rudi sagte in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
@dslraser said in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
@Vazi
dieser "erste Block" erstellt den nötigen Datenpunkt, der hat sich in der Zwischenzeit geändert. Bei Dir fehlen die Werte in Common und event. wie er initialisiert werden soll.In "Common" muss nichts rein. In "Init-Wert" sollte "falsch" rein.
@Vazi said in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
Hallo Leute
Habe Script erfolggreich inportiert, beim Test bekomme ich jedoch die FM: "Deiser Block ist mit anderen nicht richig verbunden".
Wahrscheinlich nicht komplett importiert.
Ich habe leider genau das Gleiche Problem. An sich scheint alles zu passen, aber irgendwie läuft das Skript nicht los.
Wie muss ich denn die Werte in common und event anpassen und welche müssen da rein!Siehe oben.
-
Danke für die Hilfe! Den Init Wert hatte ich bereits auf falsch gesetzt.
Irgendws funktioniert aber nicht. Ich habe den Wert auf 1 gesetzt, weil ich die Steckdose zum Test neben mir stecken habe und da immer ein Ambilight ein und aus schalte, dass so 3 W abnimmt. Daran sollte es ja nicht liegen oder? Also der Abnahmewert der ankommt (3 W) ist ja größer als der eingestellte Wert (1).
Der Telegram Adapter funktioniert jedenfalls, ich hatte nämlich schon einmal eine Nachricht vom Skript. Aber kann es nicht mehr reproduzieren. Scheint also nur eine Kleinigkeit zu sein?So sieht es aus bei mir
Danke für jede Hilfe
-
Irgendws funktioniert aber nicht. Ich habe den Wert auf 1 gesetzt, weil ich die Steckdose zum Test neben mir stecken habe und da immer ein Ambilight ein und aus schalte, dass so 3 W abnimmt. Daran sollte es ja nicht liegen oder? Also der Abnahmewert der ankommt (3 W) ist ja größer als der eingestellte Wert (1).
Eine Lampe zum Test ist sehr schlecht. Das Script triggert auf Änderung! Wenn die Lampe einmal an ist, ändert sich ja nichts mehr. Ein Test mit Waschmaschine wäre aussagekräftiger.
-
@rantanplan said in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
Eine Lampe zum Test ist sehr schlecht. Das Script triggert auf Änderung! Wenn die Lampe einmal an ist, ändert sich ja nichts mehr. Ein Test mit Waschmaschine wäre aussagekräftiger.
Ok, Wasserkocher? Funktioniert nämlich auch irgendwie nicht. Im Endeffekt sollte es ja egal sein wielange der Vorgang an sich dauert. Wichtig ist doch, dass das Skript merkt, dass von 0 Watt auf > 1 Watt geht und dann wieder von > 1 Watt auf 0 Watt? Oder versteh ich das falsch?
Danke! Sorry, mein erstes Skript
-
@Master-Rudi sagte in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
@rantanplan said in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
Eine Lampe zum Test ist sehr schlecht. Das Script triggert auf Änderung! Wenn die Lampe einmal an ist, ändert sich ja nichts mehr. Ein Test mit Waschmaschine wäre aussagekräftiger.
Ok, Wasserkocher? Funktioniert nämlich auch irgendwie nicht.
Ein Wasserkocher mit Waschprogrammen und Drehrichtungswechsel?
Power muss sich HÄUFIG ändern.Schließe doch einfach mal die Waschmashine an den Stecker und beobachte den Datenpunkt "POWER" wärend gewaschen wird. Wo ist das Problem?
Danke! Sorry, mein erstes Skript
Kein Problem. Aber dann sollte man ein Script einsetzen wofür es gedacht ist.