NEWS
UNSOLVED Pumpenabschaltung läuft nicht - Anfängerfehler?
-
Ich hab ein Skript geschrieben, dass die Pumpe immer dann abschalten soll, wenn der Stand der Zisterne unter einen bestimmten Stand fehlt. Eigentlich sollte das gaaaanz einfach sein - es funktioniert aber dennoch nicht.
Was mache ich falsch? Bei so wenig Script sollte man sowas eigentlich hinbekommen...
Jemand einen Tipp für mich?// Script zum Abschalten der Pumpe bei leerer Zisterne // Datenpunkt-ID var idZisterne_Stand = "hm-rpc.0.NEQ1012222.1.FILLING_LEVEL"; /*FM_GN_01.FILLING_LEVEL*/ var Zisterne_Stand = getState("hm-rpc.0.NEQ1012612.1.FILLING_LEVEL"/*FM_GN_01.FILLING_LEVEL*/).val; var idPumpe = "hm-rpc.0.NEQ01234567.1.STATE"; // Verknüpfung mit Aktor für Steckdose Pumpe var Zisterne_Stand_neu = 10.6; /*Zisterne_Stand_neu als number definiert*/ Zisterne_Stand_neu = "vis.0.datapoints.Zisterne_Stand_neu"; /*Zisterne_Stand_neu*/ // wenn der Füllstand der Zisterne unter xx% fällt soll die Pumpe abgeschaltet werden. on({id: idZisterne_Stand, change: "any"}, function (obj) { if (Zisterne_Stand_neu < 23) { setState(idPumpe, false); // Pumpe ausschalten console.log("If-Schleife in function Abschaltung_Pumpe durchlaufen!"); } });
-
@erhard_stgt :
Woher soll der Vis-Datenpunkt wissen, was der tatsächliche Stand in der Zisterne Ist ? Versuche es mal so:on({id: idZisterne_Stand, valLt: 23, oldValGe: 23}, function () { setState(idPumpe, false); // Pumpe ausschalten console.log("Abschaltung Pumpe"); });
-
@paul53 :
Klingt logisch...
Vielen lieben Dank, probier ich demnächst gleich mal aus (mir fehlt gerade ein wenig die Zeit und hab das daher aus den Augen verloren, daher auch die späte Rückantwort, sorry). -
@paul53 :
hab mir gerade weitere Gedanken gemacht. Ist mir doch nicht so logisch.
Ich muss vielleicht noch was zum Skript erklären: Zisterne_Stand_neu wird aus dem Wert des Sensors erst noch berechnet (hab keine saubere Kalibrierung des Füllstandsensors hinbekommen, aber mit Umrechnung passt der Wert).
in einem anderen Skript wird aus Zisterne_Stand der neue Werte berechnet und heißt dann Zisterne_Stand_neu, der sollte dann im vis-Datenpunkt stehen, den ich als Objekt angelegt habe.
Interessanter weiße zeigt mir mein vis den Zisterneninhalt korrekt an, und wenn ich den Datenpunkt dort auswähle steht 100% (Zisterne ist gerade randvoll), aber unter Objekte im iobroker steht 0%, obwohl der Sensor dort einen Wert von 100% zeigt.
Jetzt bin ich ganz verwirrt. Daher mal die Frage: wenn ich in einem Skript einen Wert berechne und einen neuen neuen Namen dem Wert gebe (z.B. var Zisterne_Stand_neu"), wie ist der korrekte Weg, um daraus dann eine objekt-ID zu machen, die ich im Vis verwenden kann? ich dachte bisher, ich leg da einfach was an im Ordner vis.0 und fertig ist die Laube.Also mal ganz ehrlich: einfach ist diese Programmiererei echt nicht, wenn man mit so ziemlich kaum einer Ahnung startet...
-
@erhard_stgt sagte in Pumpenabschaltung läuft nicht - Anfängerfehler?:
ich dachte bisher, ich leg da einfach was an im Ordner vis.0 und fertig ist die Laube.
Adapter verwalten ihre Datenpunkte selbst, also sollte man keine eigenen Datenpunkte im Namensraum von Instanzen erstellen. Wie das mit vis.0 ist, kann ich nicht beurteilen, denn das habe ich nie versucht. Problemlos ist die Erstellung eigener Datenpunkte unter javascript.N (N = 0, 1, ...), so wie man sie auch per Skript mit createState() erstellen kann.
@erhard_stgt sagte in Pumpenabschaltung läuft nicht - Anfängerfehler?:
wenn man mit so ziemlich kaum einer Ahnung startet...
Um nicht ahnungslos zu bleiben, gibt es Dokus.