NEWS
(gesucht) Kleines Script: Kaffeemaschine
-
Hallo zusammen,
ich habe einen Zwischenstecker an der hängt unsere Kaffeemaschine in der Küche.
Jetzt suche ich jemanden, der mir ein kleines Script schreibt zum folgenden Ablauf.
Ich möchte gerne das, nachdem ich den Zwischenstecker (Variabel) eingeschaltet habe, und ein Stromverbrauch (variabel) erreicht wurde, der Zwischenstecker nach x Sek. (variabel) sich abschaltet.
Die Zeitvariabel möchte ich auch dafür nutzen, dass wenn die Kaffeemaschine garnicht eingeschaltet wurde, der Stecker sich nach der Zeit auch wieder abschaltet.
Ich habe den MEQ0273558 (das ist das Teil mit Leistungsmessung).
Der Pfad zum mA Wert lautet: MEQ0273558.2.CURRENT
Kann mir da bitte einer ein "kleines" Script erstellen?
Ich möchte es mit den Variablen haben, dann kann man es auch anderswo einsetzten.
Oder gibt es im E-Net einen besseren Platz für die Frage/Bitte.
Danke im voraus
-
Das folgende Skript enthält nicht das Einschalten des Zwischensteckers:
var stromid = "hm-rpc.0.MEQ0273558.2.CURRENT"; var steckerid = "hm-rpc.0.MEQ0273558.1.STATE"; var eindauerid = getIdByName("Kaffee.Einschaltdauer"); // Einschaltdauer in Minuten var schwelleid = getIdByName("Kaffee.Stromschwelle"); // Stromgrenzwert in mA var timer = null; var stromschwelle = getState(schwelleid).val; var eindauer = 60000 * getState(eindauerid).val; function ausschalten() { if (timer) { clearTimeout(timer); timer = null; } timer = setTimeout(function() { setState(steckerid, false); }, eindauer); // nach eindauer Minuten aus } on(stromid, function(dp) { if (dp.state.val > stromschwelle) ausschalten(); // Kaffeemaschine wird eingeschaltet }); on({id: steckerid, val: true}, ausschalten); // Stecker wird eingeschaltet
-
Das Einschalten mach ich anders.
DANKE!!!!
-
Hallo Paul,
ich bekomme im Log folgenden Fehler
[error] javascript.0 script.js.Test.Kaffeemaschine compile failed: SyntaxError: Unexpected token function
Im Scripteditor habe ich eine Fehlermeldung bei der Zeile 10
ausschalten function () {
var stromid = "hm-rpc.0.MEQ0273558.2.CURRENT"; var steckerid = "hm-rpc.0.MEQ0273558.1.STATE"; var eindauerid = getIdByName("3"); // Einschaltdauer in Minuten var schwelleid = getIdByName("100"); // Stromgrenzwert in mA var timer = null; var stromschwelle = getState(schwelleid).val; var eindauer = 60000 * getState(eindauerid).val; ausschalten function () { if (timer) { clearTimeout(timer); timer = null; } timer = setTimeout(function () { setState(steckerid, false); }, eindauer); // nach eindauer Minuten aus } on(stromid, function(dp) { if (dp.state.val > stromschwelle) ausschalten(); // Kaffeemaschine wird eingeschaltet }); on({id: steckerid, val: true}, ausschalten); // Stecker wird eingeschaltet
-
Sorry, richtig muss es lauten:
function ausschalten() {
-
Mmmmhhh,
Zeile habe ich getauscht, nun sieht das Script so aus:
var stromid = "hm-rpc.0.MEQ0273558.2.CURRENT"; var steckerid = "hm-rpc.0.MEQ0273558.1.STATE"; var eindauerid = getIdByName("3"); // Einschaltdauer in Minuten var schwelleid = getIdByName("100"); // Stromgrenzwert in mA var timer = null; var stromschwelle = getState(schwelleid).val; var eindauer = 60000 * getState(eindauerid).val; function ausschalten() { if (timer) { clearTimeout(timer); timer = null; } timer = setTimeout(function () { setState(steckerid, false); }, eindauer); // nach eindauer Minuten aus } on(stromid, function(dp) { if (dp.state.val > stromschwelle) ausschalten(); // Kaffeemaschine wird eingeschaltet }); on({id: steckerid, val: true}, ausschalten); // Stecker wird eingeschaltet
Wenn ich es einschalte, bekomme ich die folgende Loginfo:
javascript-0 02 19:26:54.373 error at script.js.Test.Kaffeemaschine:7:41 javascript-0 02 19:26:54.373 error script.js.Test.Kaffeemaschine: TypeError: Cannot read property 'val' of null javascript-0 02 19:26:54.369 warn State "undefined" not found javascript-0 02 19:26:54.364 info Start javascript script.js.Test.Kaffeemaschine
-
Da sind noch mehr Stellen, wo ein Leerzeichen vor der Klammer ist, mache die mal weg (die Leerzeichen).
-
Wo jetzt noch?
! var stromid = "hm-rpc.0.MEQ0273558.2.CURRENT";
! var steckerid = "hm-rpc.0.MEQ0273558.1.STATE";
! var eindauerid = getIdByName("3"); // Einschaltdauer in Minuten
! var schwelleid = getIdByName("100"); // Stromgrenzwert in mA
! var timer = null;
! var stromschwelle = getState(schwelleid).val;
! var eindauer = 60000 * getState(eindauerid).val;
! function ausschalten(){
! if(timer){
! clearTimeout(timer);
! timer = null;
! }
! timer = setTimeout(function(){
! setState(steckerid, false);
! }, eindauer); // nach eindauer Minuten aus
! }
! on(stromid, function(dp){
! if(dp.state.val > stromschwelle) ausschalten(); // Kaffeemaschine wird eingeschaltet
! });
! on({id: steckerid, val: true}, ausschalten); // Stecker wird eingeschaltet -
var eindauerid = getIdByName("3"); // Einschaltdauer in Minuten var schwelleid = getIdByName("100"); // Stromgrenzwert in mA ```` `
Das funktioniert nicht !
"Kaffee.Einschaltdauer" und "Kaffee.Stromschwelle" sind die Namen von Datenpunkten, die vorher im Reiter "Objekte" unter javascript.0 angelegt werden müssen. Wenn Du es erst einmal mit festen Werten testen möchtest, dann so:
var stromid = "hm-rpc.0.MEQ0273558.2.CURRENT"; var steckerid = "hm-rpc.0.MEQ0273558.1.STATE"; // var eindauerid = getIdByName("Kaffee.Einschaltdauer"); // Einschaltdauer in Minuten // var schwelleid = getIdByName("Kaffee.Stromschwelle"); // Stromgrenzwert in mA var timer = null; var stromschwelle = 100; // 100 mA var eindauer = 60000 * 3; // 3 Minuten
Wenn Du die Datenpunkte nicht im Reiter "Objekte" erstellen möchtest", kannst Du sie auch im Skript anlegen:
createState("Kaffee.Einschaltdauer", 3, { read: true, write: true, desc: "Einschaltdauer Kaffeemaschine", type: "number", min: 0, max: 30, def: 3, unit: "min" }); createState("Kaffee.Stromschwelle", 100, { read: true, write: true, desc: "Stromschwellwert Kaffeemaschine läuft", type: "number", min: 0, max: 1000, def: 100, unit: "mA" });
Damit sie im Skript ausgewertet werden, ist ein zweiter Skript-Start erforderlich.
-
Hallo Paul,
DANKE, jetzt läuft es.
Tschuldigung für meine blöden Fehler!