Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Ansage "Wäsche ist fertig" HILFE

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    997

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Ansage "Wäsche ist fertig" HILFE

Scheduled Pinned Locked Moved Skripten / Logik
8 Posts 7 Posters 2.6k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    Dragonius
    wrote on last edited by
    #1

    Hallo zusammen,

    ich muß mal wieder lauthals "HILFE" rufen.

    Ich versuche gerade die Scripte aus CCU.IO zu importieren und….... versage kläglich. :roll:

    Ein Script das bis dato wunderbar funktioniert hat, ist ein Script das mir ansagt wann die Wäsche fertig ist (Waschmaschine steht in anderem Stockwerk. Frau war begeistert ;) ). Gelöst mit einem Zwischenstecker mit Leistungsmessung.

    Erstellt wurde es mit dem Scripteditor.

    Hier die "angepasste" Version:
    ` > // Force Variablen

    setObject(Wasch, true);

    // Timeout Variablen

    var loop_2 = 0;

    var loop_2_delay;

    // Variablen

    function loop_2_loop(data) {

    if (loop_2 < 2) {

    loop_2++;

    codebox_0(data);

    loop_2_delay = setTimeout(function() {

    loop_2_loop(data)}, 30000);

    }

    }

    function loop_2_in1(data) { loop_2 = 0;clearTimeout(loop_2_delay);

    loop_2_loop(data);

    }

    function loop_2_in2(data) { clearInterval(loop_2_delay);

    loop_2 = 2;

    }

    // CCU.IO Objekte

    var Wasch = true;

    //setObject("Wasch"), {Name: "var_Waschmaschine",TypeName: "VARDP",_persistent: true});

    // Trigger

    var Daten="hm-rpc.0.LEQ0529875.2.POWER";

    var Power = getState(Daten);

    subscribe({id:(getState(Power).val),valLt: 2}, function(data) {codebox_12(data);});

    subscribe({id: (getState(Power).val),valLt: 1}, function(data) {codebox_12(data);});

    subscribe({id: (getState(Power).val),valGt: 4}, function(data) {codebox_9(data);});

    //Bedingungsabfrage_Leistungsdaten

    function codebox_0(data) {

    var input_1_out = getState("hm-rpc.0.LEQ0529875.2.POWER"/Waschmaschine-Daten.POWER/).val;

    var string_2_out = "2";

    var input_13_out = getState("hm-rpc.0.LEQ0529875.2.CURRENT"/Waschmaschine-Daten.CURRENT/).val;

    var string_14_out = "40";

    var wenn_3_out=true;

    var wenn_16_out = true;

    var und_15_out = true;

    if (input_1_out < string_2_out) {

    wenn_3_out = true;

    } else {

    wenn_3_out = false;

    } if (input_13_out < string_14_out) {

    wenn_16_out = true;

    } else {

    wenn_16_out = false;

    } if (wenn_3_out === true && wenn_16_out === true) {

    und_15_out = true;

    } else {

    und_15_out = false;

    } if (und_15_out === true) {

    codebox_1(data);

    }

    }

    //Sprachausgabe

    function codebox_1(data) {

    var string_4_out = "Die Waesche ist fertig.";

    setState("sayit.0.tts.text"/Text to speech/, string_4_out);

    }

    //Abfrage_Bedingung_Abbruch

    function codebox_3(data) {

    var input_7_out = getState(Wasch);

    var true_8_out = true;

    var wenn_6_out = true;

    if (input_7_out == true_8_out) {

    wenn_6_out=true;

    } else {

    setState(wenn_6_out, false);

    } if (wenn_6_out === true) {loop_2_in2(data);}}

    //Abfrage_Variable_unwahr

    function codebox_5(data) {

    Log("Codebox_5");

    var input_18_out = getState(Wasch);

    Log("Varable Wasch: "+Wasch);

    var true_19_out = true;

    var wenn_17_out = false;

    if (input_18_out != true_19_out) {

    wenn_17_out = true;

    } else {

    wenn_17_out = false;

    }

    codebox_3(data);

    if (wenn_17_out === true) {loop_2_in1(data);}

    }

    //Trigger_Variable_unwahr_setzen

    function codebox_9(data) {

    var false_27_out = false;

    setState(Wasch, false_27_out);

    }

    //Trigger_Variable_wahr_setzen

    function codebox_12(data) {

    var true_31_out = true;

    setState(Wasch, true_31_out);

    } `

    Ziemlich wirr. Ich weiß…...

    Das folgende Script hab ich versucht selbst zu erstellen. Hat auch teilweise funktioniert. Hab dann aber so lange dran rum experimentiert bis gar nichts mehr ging...

    var varWatt ='hm-rpc.0.LEQ0529875.2.POWER';
    var varAmpere = 'hm-rpc.0.LEQ0529875.2.CURRENT';
    var ccuvar_1 ="hm-rega.0.9531";
    var ccuvar_2 = "hm-rega.0.11273";
    var varWaschmaschine =getState(ccuvar_2).val;
    
    {
    subscribe ({id: varWatt, change: "lt"}, Ausgabe);
    //subscribe ({id: varWatt, change: "any"}, Steuerung);
    
    }
    function Ausgabe()
    {  
     var varWaschmaschine =getState(ccuvar_2).val;
     var Leistung =getState(varWatt).val;
     var strom=getState(varAmpere).val;
     var varAnzeige=getState(ccuvar_1).val;
        if (varWaschmaschine===true)
           if(Leistung<1)
               if(strom<40)
                    setState("sayit.0.tts.text", "Die Wäsche ist fertig!")
                    setState("hm-rega.0.11273", "0");
    }
    function Steuerung()
    {
      var varWaschmaschine =getState(ccuvar_2).val;
      var Leistung=getState(varWatt).val;
      var strom=getState(varAmpere).val;
      var varAnzeige=getState(ccuvar_1).val;
    
        if(Leistung>1)
            if(strom>40)
                setState("hm-rega.0.11273", "1")
                setState("hm-rega.0.9531", "1")
                setState("hm-rega.0.11330", true);
    }
    

    Kann mir einer sagen was ich zum :evil: verkehrt mache?

    Danke und Gruß

    Dragonius

    1 Reply Last reply
    0
    • paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #2

      1. Bei der verschachtelten if-Abfrage fehlen geschweifte Klammern. Besser man verwendet eine UND-Verknüpfung.

      2. if (varWaschmaschine===true) erwartet einen boolean Wert. setState("hm-rega.0.11273", "0"); achreibt aber einen String !

      Vielleicht funktioniert es so ?

      var varWatt ='hm-rpc.0.LEQ0529875.2.POWER';
      var varAmpere = 'hm-rpc.0.LEQ0529875.2.CURRENT';
      var ccuvar_1 = "hm-rega.0.9531";
      var ccuvar_2 = "hm-rega.0.11273";
      // var varWaschmaschine =getState(ccuvar_2).val;
      
      subscribe ({id: varWatt, change: "lt"}, Ausgabe);
      //subscribe ({id: varWatt, change: "any"}, Steuerung);
      
      function Ausgabe()
      { 
      	var varWaschmaschine = getState(ccuvar_2).val;
      	var Leistung  = getState(varWatt).val;
      	var strom = getState(varAmpere).val;
      	var varAnzeige = getState(ccuvar_1).val;
      	if (varWaschmaschine && Leistung < 1 && strom < 40)
      	{
      		setState("sayit.0.tts.text", "Die Wäsche ist fertig!");
      		setState(ccuvar_2, false);
      	}
      }
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Reply Last reply
      0
      • D Offline
        D Offline
        Dragonius
        wrote on last edited by
        #3

        Danke für die Hilfe. Hat nicht ganz auf Anhieb geklappt. Die "Und" Dedingung wollte er so nicht fressen.

        Hier das Script, dass jetzt fehlerfrei und so wie es soll läuft:

        var varWatt ='hm-rpc.0.LEQ0529875.2.POWER';
        var varAmpere = 'hm-rpc.0.LEQ0529875.2.CURRENT';
        var ccuvar_1 = "hm-rega.0.9531";
        var ccuvar_2 = "hm-rega.0.11273";
        
        subscribe ({id: varWatt, change: "lt"}, Ausgabe);
        subscribe ({id: varAmpere, change: "lt"}, Ausgabe);
        subscribe ({id: varWatt, change: "any"}, Steuerung);
        
        function Ausgabe()  // Abfrage der Energiedaten und Sprachausgabe
        {
           var varWaschmaschine = getState(ccuvar_2).val;
           var Leistung  = getState(varWatt).val;
           var strom = getState(varAmpere).val;
        {   
           if (Leistung < 1)
                if (strom < 40)
                   setState("sayit.0.tts.text", "Die Wäsche ist fertig!");
                   setState(ccuvar_2, 0);
                   setState(ccuvar_1, false);
        }}
        
        function Steuerung()  // Zum setzen der Anzeige
        {
            var varWaschmaschine =getState(ccuvar_2).val;
            var Leistung=getState(varWatt).val;
            var strom=getState(varAmpere).val;
        
              if(Leistung > 1)
                  if(strom>40)
                      setState(ccuvar_2, 1);
                      setState(ccuvar_1, true);
        }
        

        Gruß

        Dragonius

        1 Reply Last reply
        0
        • J Offline
          J Offline
          jack77
          wrote on last edited by
          #4

          Hi,

          kann mir einer sagen wie ich die Ansage über ein Sonos herausgeben kann?

          1 Reply Last reply
          0
          • D Offline
            D Offline
            dwm
            wrote on last edited by
            #5

            Du brauchst den Sonos Adapter und den text-to-speech adapter, entsprechend konfiguriert.

            Im Script unten erfolgt dann die Ausgabe mit der Zeile

            setState("sayit.0.tts.text", "Die Wäsche ist fertig!");
            

            Nach einem schnellen Blick …

            Ich glaub ja nicht, dass das Script so 100% funktioniert.

            Diese komische geschweifte Klammer in function Ausgabe() macht ... nix.

            EINRÜCKUNGEN sagen der if Abfrage auch NIX.

            das heisst bei Aufruf von "Ausgabe" werden die CCU-Variablen IMMER 0 bzw. false.

            Genau so wird bei der function Steuerung die ccuvar_1 IMMER auf true gesetzt, die ist AUSSERHALB der if Abfragen - es ist wie gesagt EGAL, wie weit die eingerückt ist.

            Siehe z.B. ... https://developer.mozilla.org/de/docs/W ... behandlung

            Wenn Du also willst, dass z.B. in function Ausgabe die ccu-Variablen nur auf 0 bzw. false gehen, wenn die Wäsche fertig ist, muss das heissen ...

            function Ausgabe()  // Abfrage der Energiedaten und Sprachausgabe
            {
               var varWaschmaschine = getState(ccuvar_2).val;
               var Leistung  = getState(varWatt).val;
               var strom = getState(varAmpere).val;
            
               if (Leistung < 1)
                    if (strom < 40)
                    {
                       setState("sayit.0.tts.text", "Die Wäsche ist fertig!");
                       setState(ccuvar_2, 0);
                       setState(ccuvar_1, false);
                    }
            }
            
            function Steuerung()  // Zum setzen der Anzeige
            {
                var varWaschmaschine =getState(ccuvar_2).val;
                var Leistung=getState(varWatt).val;
                var strom=getState(varAmpere).val;
            
                  if(Leistung > 1)
                      if(strom>40)
                      {
                          setState(ccuvar_2, 1);
                          setState(ccuvar_1, true);
                      }
            }
            
            

            Übrigens fragst Du in beiden Funktionen die varWaschmaschine zwar ab, aber machst nichts damit…

            Gibt es eigentlich einen Grund, den Strom und die Leistung abzufragen? Naiv hätte ich gesagt, P=U x I ... und wir haben doch recht konstant U = 230V...

            CU

            Werner

            1 Reply Last reply
            0
            • P Offline
              P Offline
              pix
              wrote on last edited by
              #6

              Hallo,

              Werner hat recht, die letzte gepostete Version des Skriptes kann so nicht fehlerfrei laufen. Da muss doch auch der Editor im Javascript Adapter meckern (auf die Symbole am linken Rand achten!)

              Ich denke vielleicht so:

              ! ````
              var varWatt ='hm-rpc.0.LEQ0529875.2.POWER';
              var varAmpere = 'hm-rpc.0.LEQ0529875.2.CURRENT';
              var ccuvar_1 = "hm-rega.0.9531";
              var ccuvar_2 = "hm-rega.0.11273";
              ! on({
              id: varWatt,
              change: "lt"
              }, Ausgabe);
              ! on({
              id: varAmpere,
              change: "lt"
              }, Ausgabe);
              ! on({
              id: varWatt,
              change: "any"
              }, function(obj) {
              // var varWaschmaschine = getState(ccuvar_2).val; // wozu wurde dieser State abgefragt?
              var Leistung = obj.state.val;
              var strom=getState(varAmpere).val;
              if (Leistung > 1 && strom > 40) {
              setState(ccuvar_2, 1);
              setState(ccuvar_1, true);
              }
              });
              ! function Ausgabe() { // Abfrage der Energiedaten und Sprachausgabe
              var varWaschmaschine = getState(ccuvar_2).val;
              var Leistung = getState(varWatt).val;
              var strom = getState(varAmpere).val;
              if (Leistung < 1 && strom < 40) {
              setState("sayit.0.tts.text", "Die Wäsche ist fertig!");
              setState(ccuvar_2, 0);
              setState(ccuvar_1, false);
              }
              }

              ! ````

              Gruß

              Pix

              ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

              1 Reply Last reply
              0
              • DirkKD Offline
                DirkKD Offline
                DirkK
                wrote on last edited by
                #7

                Hallo Dragonius,

                so sieht es bei mir aus, Ausgabe über Lautsprecher und Telegram
                1162_image_2.png

                Gruß Dirk

                Raspi3 CCU

                1 Reply Last reply
                0
                • P Offline
                  P Offline
                  ple
                  wrote on last edited by
                  #8

                  Mein Code sieht so aus. Einfach und funktioniert super. besonders beim Trockner, weil der am Ende noch auflockert.

                  Das valLt und oldValGe sind echt gute Funktionen.

                  Gruß

                  var timer = null;
                  
                  // Einschaltverzögerung   
                  on({id: "hm-rpc.0.LEQ1314518.2.POWER", valLt: 1.1, oldValGe: 100}, function() {
                      timer = setTimeout(meldung, 120000);  // in ms
                      log("Einschaltverzögerung ausgelöst");
                  });
                  // Timer löschen
                  on({id: "hm-rpc.0.LEQ1314518.2.POWER", valGe: 100, oldValLt: 5}, function() {
                      if(timer) clearTimeout(timer);
                      log("Timer löschen");
                  });
                  
                  // Anweisung
                  function meldung() {
                      log("Trockner fertig");
                      //Sayit
                      setState("sayit.0.tts.text", "de;40;" + 'Der Trockner ist fertig');
                      //Push schicken
                      sendTo("telegram.0", "send", {
                          text: 'Trockner',
                     });
                  }
                  

                  Intel Nuc + Proxmox

                  1 Reply Last reply
                  0
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  717

                  Online

                  32.6k

                  Users

                  82.3k

                  Topics

                  1.3m

                  Posts
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  logo
                  • Login

                  • Don't have an account? Register

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Home
                  • Recent
                  • Tags
                  • Unread 0
                  • Categories
                  • Unreplied
                  • Popular
                  • GitHub
                  • Docu
                  • Hilfe