NEWS
[gelöst]Überwachung einer Poolpumpe
-
Muss bei einer Überwachung der Leistung denn nicht jede Änderung der Leistung "überwacht" werden?
oder verstehe ich da was falsch?Ja, Wert und vorheriger Wert sind keine eigenen Variablen.
Habe ich denn das Timeout richtig gesetzt?
Ich habe noch einen Timer in einem anderen Skript verwendet, dort wurde erst Stop Timout ausgeführt und dann der Timer gestartet.
Kann es sein das ich das hier auch machen muss?Hier das Beispiel das ich meine:

In dem Skript wird nach Sonnenuntergang eine Lampe für eine bestimmte Zeit eingeschaltet, wenn ein Bewegungsmelder eine Bewegung erkennt. -
Ich bekomme z.B. eine Pushover wenn ich die Pumpe manuell ausschalte. Dazu löst es glaube ich nicht zuverlässig aus bzw bekomme ich keine Pushover wenn die Pumpe durch das Skript ausgeschaltet wurde.
Ich lasse bis dieses Skript richtig funktioniert mein ursprüngliches daneben laufen was zuverlässig funktioniert. Glaube bei dem hast du mir auch geholfen. Ich möchte nur auf Blockly switschen da ich das einfacher finde und mich damit zukünftig auseinandersetzen möchte.
Hier ist das funktionierende:
const logging = true; const id_Power_Poolpumpe = 'alias.0.DR_Garage.Steckdose Poolpumpe.POWER'/*Poolpumpe POWER*/; const id_Poolpumpe = 'alias.0.DR_Garage.Steckdose Poolpumpe.STATE'/*Poolpumpe Switch state*/; var timer = null; var pumpe = getState(id_Poolpumpe).val; const prio_Poolpumpe = 0; //Variablen für Pushover const sendpush = true; //true = verschickt per Pushover Nachrchten // false = Pushover wird nicht benutzt const pushover_Instanz0 = 'pushover.0'; // Pushover instance für Prio = 0 const pushover_Instanz1 = 'pushover.1'; // Pushover instance für Prio = 1 const pushover_Instanz2 = 'pushover.2'; // Pushover instance für Prio = 2 const pushover_Instanz3 = 'pushover.3'; // Pushover instance für Prio = -1 oder -2 var prio = -2; //nicht verändern die höchste Prio nach Fehlertyp wird verwendet var titel; var message; //var device = 'Handy_Domi'; //Welches Gerät soll die Nachricht bekommen var device = 'All'; var tmp; //Ab hier eigentliches Script function send_pushover(device, message, titel, prio) { var pushover_Instanz; if (prio === 0) { pushover_Instanz = pushover_Instanz0; } else if (prio == 1) { pushover_Instanz = pushover_Instanz1; } else if (prio == 2) { pushover_Instanz = pushover_Instanz2; } else { pushover_Instanz = pushover_Instanz3; } sendTo(pushover_Instanz, { device: device, message: message, title: titel, priority: 0, }); } on(id_Power_Poolpumpe, function (dp) { if (dp.state.val < 500) { if (dp.oldState.val >= 500) { timer = setTimeout(function () { if (pumpe) { setState(id_Poolpumpe, false); tmp = 'Poolpumpe ausgeschaltet - Poolpumpe überprüfen'; if (logging) { log(tmp); } if (sendpush) { prio = prio_Poolpumpe; message = tmp; titel = 'Fehler Poolpumpe'; send_pushover(device, message, titel, prio); } } }, 10000); } } else if (timer) clearTimeout(timer); }); on(id_Poolpumpe, function (dp) { pumpe = dp.state.val; });@dominik-f sagte in Überwachung einer Poolpumpe:
Ich lasse bis dieses Skript richtig funktioniert mein ursprüngliches daneben laufen was zuverlässig funktioniert.
Laufen wirklich beide Scripte parallel oder schaltest du beim Test das JavaScript ab?
-
@dominik-f sagte in Überwachung einer Poolpumpe:
Ich lasse bis dieses Skript richtig funktioniert mein ursprüngliches daneben laufen was zuverlässig funktioniert.
Laufen wirklich beide Scripte parallel oder schaltest du beim Test das JavaScript ab?
Ja, bisher laufen beide parallel
-
Muss bei einer Überwachung der Leistung denn nicht jede Änderung der Leistung "überwacht" werden?
oder verstehe ich da was falsch?Ja, Wert und vorheriger Wert sind keine eigenen Variablen.
Habe ich denn das Timeout richtig gesetzt?
Ich habe noch einen Timer in einem anderen Skript verwendet, dort wurde erst Stop Timout ausgeführt und dann der Timer gestartet.
Kann es sein das ich das hier auch machen muss?Hier das Beispiel das ich meine:

In dem Skript wird nach Sonnenuntergang eine Lampe für eine bestimmte Zeit eingeschaltet, wenn ein Bewegungsmelder eine Bewegung erkennt.@dominik-f sagte: Habe ich denn das Timeout richtig gesetzt?
Ja.
@dominik-f sagte in Überwachung einer Poolpumpe:
dort wurde erst Stop Timout ausgeführt und dann der Timer gestartet.
Funktioniert genauso, ist nur etwas eleganter gelöst.
-
Ja, bisher laufen beide parallel
@dominik-f sagte in Überwachung einer Poolpumpe:
Ja, bisher laufen beide parallel
Dann stop mal das JavaScript, wenn du das Blockly testen möchtest. Ansonsten funkt dir das dazwischen, weil ja beide auf den selben Datenpunkt triggern.
Gruß Tom
-
@dominik-f sagte: Habe ich denn das Timeout richtig gesetzt?
Ja.
@dominik-f sagte in Überwachung einer Poolpumpe:
dort wurde erst Stop Timout ausgeführt und dann der Timer gestartet.
Funktioniert genauso, ist nur etwas eleganter gelöst.
Könntest du mir die elegantere Lösung eventuell zeigen?
Habe das andere Skript nun gestoppt und lasse die Power mit InfluxDB aufzeichnen. Heute ist das Skript angesprungen und hat die Pumpe ausgeschaltet, ich weiß nur nicht ob es so richtig war das die ausgeht, daher das aufzeichnen. Melde mich sobald ich weiß ob das Skript richtig funktioniert bzw. wann genau es probleme gibt.
-
Könntest du mir die elegantere Lösung eventuell zeigen?
Habe das andere Skript nun gestoppt und lasse die Power mit InfluxDB aufzeichnen. Heute ist das Skript angesprungen und hat die Pumpe ausgeschaltet, ich weiß nur nicht ob es so richtig war das die ausgeht, daher das aufzeichnen. Melde mich sobald ich weiß ob das Skript richtig funktioniert bzw. wann genau es probleme gibt.
-
@dominik-f sagte: Könntest du mir die elegantere Lösung eventuell zeigen?
falls Wert >= 500 mache stop timeout sonst falls vorheriger Wert >= 500 mache Ausführen timeoutSo richtig?

Was ich feststellen konnte ist bisher, dass das Skript die Pumpe öfter ausschaltet, als das javascript. Die Frage ist nur, ob sich was an der Pumpe verändert hat oder welches der beiden Skripte richtig funktioniert. Ich logge erst mal die Leistung eine Zeit ohne Skript und schaue wie sich die Leistung so verhält.
-
So richtig?

Was ich feststellen konnte ist bisher, dass das Skript die Pumpe öfter ausschaltet, als das javascript. Die Frage ist nur, ob sich was an der Pumpe verändert hat oder welches der beiden Skripte richtig funktioniert. Ich logge erst mal die Leistung eine Zeit ohne Skript und schaue wie sich die Leistung so verhält.
-
@dominik-f sagte: So richtig?
Nein.
falls Wert >= 500Anstelle des falls-Blockes unten, kann man "sonst falls" verwenden.
-
-
Du meinst das mit Wert <500?
-
Du meinst das mit Wert <500?
-
@dominik-f sagte: Du meinst das mit Wert <500?
Ja, denn so wird der Timeout nie gestoppt, denn Wert kann nicht gleichzeitig < 500 und >= 500 sein.
-
-
Woher weiß das Skript denn nun, dass wenn der Wert für 15 Sekunden unter 500 ist er die Pumpe ausschalten soll?
-
Woher weiß das Skript denn nun, dass wenn der Wert für 15 Sekunden unter 500 ist er die Pumpe ausschalten soll?
-
@dominik-f sagte: Woher weiß das Skript denn nun, dass wenn der Wert für 15 Sekunden unter 500 ist er die Pumpe ausschalten soll?
sonstbedeutet, dass die falls-Bedingung (Wert >= 500) nicht erfüllt ist, also Wert < 500 sein muss.Ich danke dir für deine Erklärung. Da wäre ich so nicht drauf gekommen^^
-
@dominik-f sagte: Woher weiß das Skript denn nun, dass wenn der Wert für 15 Sekunden unter 500 ist er die Pumpe ausschalten soll?
sonstbedeutet, dass die falls-Bedingung (Wert >= 500) nicht erfüllt ist, also Wert < 500 sein muss.Jetzt läuft das Skript ja so, dass wenn der Wert erst über 500 ist und dann 15 Sekunden unter 500, die Pumpe ausgeschaltet ist.
Das schützt die Pumpe wenn im laufenden Betrieb was passiert.
Die Pumpe wird jedoch mehrmals am Tag an und ausgestellt. Ich würde jetzt gerne noch einen Schutz einbauen, wenn die Pumpe vorher aus war.
Das bedeutet, wenn die Pumpe eingeschaltet wird und der Wert für 15 Sekunden unter 500 bleibt, sich die Pumpe wieder ausschaltet.
Wie müsste ich das dort einbringen? -
Jetzt läuft das Skript ja so, dass wenn der Wert erst über 500 ist und dann 15 Sekunden unter 500, die Pumpe ausgeschaltet ist.
Das schützt die Pumpe wenn im laufenden Betrieb was passiert.
Die Pumpe wird jedoch mehrmals am Tag an und ausgestellt. Ich würde jetzt gerne noch einen Schutz einbauen, wenn die Pumpe vorher aus war.
Das bedeutet, wenn die Pumpe eingeschaltet wird und der Wert für 15 Sekunden unter 500 bleibt, sich die Pumpe wieder ausschaltet.
Wie müsste ich das dort einbringen?Oder könnte man so beide Fälle verbinden? Also falls die Pumpe an ist und die Leistung für 15 Sekunden unter 500 ist, dann schalte aus?


