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 -
Hallo Paul,
ich bekomme im Log folgenden Fehler
[error] javascript.0 script.js.Test.Kaffeemaschine compile failed: SyntaxError: Unexpected token functionIm 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 -
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 eingeschaltetWenn 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 -
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 MinutenWenn 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.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden