Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. (gesucht) Kleines Script: Kaffeemaschine

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    (gesucht) Kleines Script: Kaffeemaschine

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      DiJaexxl last edited by

      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

      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        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
        
        
        1 Reply Last reply Reply Quote 0
        • D
          DiJaexxl last edited by

          Das Einschalten mach ich anders.

          DANKE!!!!

          1 Reply Last reply Reply Quote 0
          • D
            DiJaexxl last edited by

            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
            
            
            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 last edited by

              Sorry, richtig muss es lauten:

              function ausschalten() {
              
              
              1 Reply Last reply Reply Quote 0
              • D
                DiJaexxl last edited by

                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
                
                
                1 Reply Last reply Reply Quote 0
                • S
                  Solear last edited by

                  Da sind noch mehr Stellen, wo ein Leerzeichen vor der Klammer ist, mache die mal weg (die Leerzeichen).

                  1 Reply Last reply Reply Quote 0
                  • D
                    DiJaexxl last edited by

                    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

                    1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 last edited by

                      @DiJaexxl:

                      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.

                      1 Reply Last reply Reply Quote 0
                      • D
                        DiJaexxl last edited by

                        Hallo Paul,

                        DANKE, jetzt läuft es.

                        Tschuldigung für meine blöden Fehler!

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        1.1k
                        Online

                        31.7k
                        Users

                        79.7k
                        Topics

                        1.3m
                        Posts

                        3
                        10
                        1848
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo