NEWS
Schedule per Tastendruck starten und stoppen
-
Ich verzweifel grad an meiner Wallboxsteuereung...
Ich habe ein Script geschrieben mit der ich die Wallbox steuern kann, hierzu muss alle X-Sekunden eine Funktion ausgelöst werden. Über Schedule() funktioniert das auch, aber dann müsste ich das komplette Script immer starten und stoppen da auch das Lader des Autos per Wallbox jederzeit mit voller Leistung möglich sein soll.
Ziel soll sein, über einen Taster (auch virtuell) die Funktion zu starte zu starten und alle 10 Sekunden auszuführen. Wenn der Taster ein weiteres mal gedrückt wird, soll die Funktion gestoppt werden, wie krieg ich das am Besten hin? Wichtig ist, das die Funktion auch wieder angehalten werden kann.
// Startet das Skript alle 10 Sekunden neu schedule("*/10 * * * * *", function() { starteLaden(); });
// Startet das Skript einmalig auf Tastendruck on({id: 'javascript.0.Taster_1', change: "ne"}, function (obj) { starteLaden() });
-
@funcarv3r sagte:
über einen Taster (auch virtuell) die Funktion zu starte zu starten und alle 10 Sekunden auszuführen. Wenn der Taster ein weiteres mal gedrückt wird, soll die Funktion gestoppt werden
Vorschlag:
var freigabe = false; schedule("*/10 * * * * *", function() { if(freigabe) starteLaden(); }); on({id: 'javascript.0.Taster_1'}, function () { freigabe = !freigabe; });
-
@paul53
Klasse, danke Dir, funktioniert ...Wo bekommt man solche Infos her? Ich habe mir die Einführung in Javascript für den IOBroker und hab sowas nicht gefunden. Auch google hat mir keine brauchbaren Ergebnisse angezeigt...
-
@paul53
ich hab hier jetzt doch noch eine Frage:Das script funktioniert soweit aber wie kann ich im VIS sehen ob die Funktion gerade läuft oder nicht? Des Weiteren müsste beim deaktivieren noch ein weiterer Befehl abgesetzt werden.
setState('mqtt.0.go-eCharger.000000.cmd.req', "alw=0");
Durch die Funktion wird überprüft wieviel Strom gerade produziert wird und dementsprechend wird die Wallbox ein/ausgeschaltet und der Ladestrom eingestellt. Wenn die Funktion angehalten wird während der Ladevorgang noch läuft wird dieser nicht angehalten.
Ich wollte mir hier einen Schalter machen mit dem ich die Funktion dan ein und ausschalten kann, es muss aber sichtbar sein was gerade der Zustand ist.
-
@funcarv3r sagte :
Ich wollte mir hier einen Schalter machen mit dem ich die Funktion dan ein und ausschalten kann, es muss aber sichtbar sein was gerade der Zustand ist.
... Des Weiteren müsste beim deaktivieren noch ein weiterer Befehl abgesetzt werden.Mit einem Schalter anstelle eines Tasters kann man es so machen:
const idSchalter = 'javascript.0.Schalter_1'; // Anpassen ! var freigabe = getState(idSchalter).val; schedule("*/10 * * * * *", function() { if(freigabe) starteLaden(); }); on(idSchalter, function (dp) { freigabe = dp.state.val; if(!freigabe) setState('mqtt.0.go-eCharger.000000.cmd.req', "alw=0"); });
-
@paul53
Super, danke dir, funktioniert. Ich hab die Befehle noch etwas erweitert, er setzt mir beim Starten jetzt auch noch eine nVariable auf true, beim Beenden auf False, so kann ich alles besser überwachen ...