Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Portierung CCU.IO

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Portierung CCU.IO

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

      > Can't find a suitable libao driver. (Is device in use?)
      Ich denke, das ist einfach Timing gewesen. Wenn du jetzt ausführst, dann wird es gehen.

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

        Hi Bluefox
        @Bluefox:

        > Can't find a suitable libao driver. (Is device in use?)
        Ich denke, das ist einfach Timing gewesen. Wenn du jetzt ausführst, dann wird es gehen. `
        Tatsächlich!

        Aber was bedeudet das genau? Dass man zwischen zwei Ansagen eine gewissen Zeit verstreichen lassen muss?

        Wieviel wäre das und warum?

        Kannst Du mir noch sagen ob ich überhaupt nach data.newState.val == 'fertig' abfragen muss oder kann ich einstellen dass der Coder erst dann getriggert wird wenn die Sys-Var = fertig ist?

        ich dachte man kann das so machen, geht aber nicht:

        on (
               {
                  id: 'hm-rega.0.39968',
                  change: 'ne'
                  val: 'fertig'
               }, function (data) {..});
        

        Und noch ne Frage: Ich würde gerne function (data) {} in unterschiedlichen on Statements mit verschiedenen Texten für Sayit verwenden. Das heisst ich würde der function gerne den Text der gesagt werden soll übergeben. Wie geht das?

        So funktioniert es auf jeden Fall

        on (
               {
                  id: 'hm-rega.0.39968',
                  change: 'ne'
                  val: 'fertig'
               }, message);
        
               function message(data) {..};
        
        

        Aber wie übergebe ich der function message die Message? Im on-statement wird ja offensichtlich nur der Name erwartet. D.h. ich muss den Text über data übergeben? Aber wie krieg ich ihn da rein?

        Gruss Ralf

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

          Erstens, ich bin immer noch nicht sicher, was für einen Wert deine Variable hat: "2" oder "fertig"

          Zweitens: change: 'ne' heißt trigger "not equal". Du brauchst aber "eq" - "equal.

          Das heißt es geht wieder nur zufällig.

          Eigentlich muss es so sein:

          on (

          {

          id: 'hm-rega.0.39968',

          change: 'eq'

          val: 2

          }, function (obj) {..});

          Aber erst musst du raus finden ob es 2 oder fertig ist.

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

            Hallo Bluefox
            @Bluefox:

            Erstens, ich bin immer noch nicht sicher, was für einen Wert deine Variable hat: "2" oder "fertig"

            Zweitens: change: 'ne' heißt trigger "not equal". Du brauchst aber "eq" - "equal. `
            Ich habe jetzt ein wenig rumprobiert. Es muss so heissen:

             on (
                   {
                      id: idWaschmaschine,
                      change: 'ne',
                      val: 'fertig'
                   }, function (data) {
            

            Ich habe erst ewig mit "eq" rumgetestet, aber eigentlich ist es logisch, dass es "ne" heissen muss, denn es wird wohl immer erst dann getriggert, wenn sich der Wert der Systemvariablen gegenüber dem Alten geändert hat. Also wie bei der CCU ein Trigger auf "Änderung". Val: 'fertig' prüft dann ob der neue Wert 'fertig' ist. Das ist übrigens ein Unterschied zu CCU.IO wo der Array Index übergeben wurde, statt dessen Wert.

            Mein Code sieht also nun so aus und funktoniert:

                var idWaschmaschine  = 'hm-rega.0.39968';     //*STAT_Waschmaschine_fertig*/
                var idTrockner       = 'hm-rega.0.44879';     //*STAT_W.Trockner_fertig*/
                var idSprache        = 'sayit.0.tts.text';    // Sprachausgabe Browser
                var timerWash1 = null;
                var timerWash2 = null;
            
                on (
                   {
                      id: idWaschmaschine,
                      change: 'ne',
                      val: 'fertig'
                   }, function (data) {
                      // Sage zum ersten Mal
                      var d = new Date ();
                      var h = d.getHours();
            
                      if ( (h < 22) && (h > 9)) // nur zwischen 9 und 20 Uhr
                      {
                         log('Waschmaschine fertig 2');
                         setState(idSprache, 'Die Waschmaschine ist fertig');
            
                         // Sag jede 10 Min dass die Waesche fertig ist
                         log('Timerwash='+timerWash1);
                         if (!timerWash1) {
                            timerWash1 = setInterval(function()  {
                               log('Timerwash=' + timerWash1);
                               log('Get State=' + getState(idWaschmaschine).val);
                               if (getState(idWaschmaschine).val == 'fertig')
                               {
                                  setState(idSprache, 'Die Waschmaschine ist fertig');
                                  log('Waschmaschine fertig');
                               } else {
                                  clearInterval(timerWash1);
                                  timerWash1 = null;
                               }
                            }, 600000);
                         }
                      }
                   }
                ); 
            
            

            Jetzt brauchen ich noch einen Tipp um das Ganze zu optimieren.

            Und zwar möchte ich noch eine andere Systemvariable beobachten und bei deren Änderung den gleichen Code laufen-, aber eine andere Meldung ausgeben lassen. D.h. ich müsste der aufgerufenen Funktion irgendwie einen Parameter (den zu sprechenden Text) mitgeben. Aber wie geht das?

            Gruss Ralf

            1 Reply Last reply Reply Quote 0
            • P
              pix last edited by

              Hallo,

              function say (ansage) {
                 setState (idSprache, ansage);  // ggf.  Zur Sicherheit ansage.toString 
              }
              
              // Aufruf
              say ('Das ist die Ansage');
              
              

              Meinst du das?

              Gruß,

              Pix

              Gesendet von meinem iPhone mit Tapatalk

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

                Hi Pix
                @pix:

                Meinst du das? `
                Nee.

                Ich meine Folgendes:

                Das Prinzip auf eine Änderung zu reagieren ist ja das Folgende:

                
                on ( {id: sysVariable,
                        change: 'ne',
                     }, meineFunktion
                   );
                
                function meineFunktion(data)                    
                {
                              ....    //viel Code
                              setState(idSprache, zuSagenderText);
                }                    
                
                

                Mein Problem ist nun: Ich würde die Funktion "meineFunktion" an mehreren Stellen verwenden (also auch wenn sich z.B eine andere Systemvariablen die ich mit on ({id: andereSysVar …); beobachte ändert.

                Da aber in der on-Syntax nur der Name der Funktion, die aufgerufen werden soll, angegeben wird, kann man da ja scheinbar dieser keine Parameter mitgeben. Ich müsste aber zumindest den zu sprechenden Text mitgeben, der ja bei einer anderen SysVar anders sein muss (z.B. statt "Die Waschmaschine ist fertig", "Der Trockner ist fertig".

                Gruss Ralf

                1 Reply Last reply Reply Quote 0
                • P
                  pix last edited by

                  Tut mir leid, mir ist noch nicht klar was du meinst. Kannst du etwas deutlicher werden?

                  Du überwachst die Waschmaschine. Wenn sie fertig ist und es ist tagsüber, wird ein Text ("Waschmaschine fertig") angesagt. Wann sollte der Text noch angesagt werden? Und warum sollte ein anderer Text angesagt werden, bei gleichem Trigger?

                  Tut mir leid, erklär es einfach nochmal anders herum. 😛

                  Gruß,

                  Pix

                  Edit:

                  Das Prinzip, auf eine Änderung zu reagieren ist doch eigentlich so:

                  on ( {id: sysVariable,
                          change: 'ne',
                       }, function () {
                         // viel Code
                         meineFunktion('Ansagetext');// zB
                     });
                  
                  function meineFunktion(zuSagenderText)                    
                  {
                                setState(idSprache, zuSagenderText);
                  }     
                  
                  1 Reply Last reply Reply Quote 0
                  • D
                    derrapf last edited by

                    Hallo Pix
                    @pix:

                    Tut mir leid, mir ist noch nicht klar was du meinst.

                    …

                    on ( {id: sysVariable,
                            change: 'ne',
                         }, function () {
                           // viel Code
                           meineFunktion('Ansagetext');// zB
                       });
                                        
                                        
                    function meineFunktion(zuSagenderText)                    
                    {
                                  setState(idSprache, zuSagenderText);
                    }     
                    ```` `  
                    

                    Du hast mir trotzdem die Lösung gezeigt! Super!

                    Der Trick war der die Verschachtelung der beiden Funktionen:````
                    function () {
                    // viel Code
                    meineFunktion('Ansagetext');// zB
                    }

                    
                    ABER:
                    
                    Wenn ich das so mache:
                    
                    var idWaschmaschine  = 'hm-rega.0.39968';     //*STAT_Waschmaschine_fertig*/
                    var idTrockner       = 'hm-rega.0.44879';     //*STAT_W.Trockner_fertig*/ 
                    var idSprache        = 'sayit.0.tts.text';    // Sprachausgabe Browser
                    var timerWash1 = null;
                    var timerWash2 = null;
                    var debug = true;
                    

                    on (
                    {
                    id: idWaschmaschine,
                    change: 'ne',
                    val: 'fertig'
                    },
                    function (data)
                    {
                    sayFinish(data, 'Die Waschmaschine ist fertig');
                    }
                    );

                    on (
                    {
                    id: idTrockner,
                    change: 'ne',
                    val: 'fertig'
                    },
                    function (data)
                    {
                    sayFinish(data, 'Der Trockner ist fertig');
                    }
                    );

                    function sayFinish(data, text)
                    {
                    // Sage zum ersten Mal
                    var d = new Date ();
                    var h = d.getHours();

                          if ( debug || (h < 22) && (h > 9)) // nur zwischen 9 und 20 Uhr
                          {
                             log('Saying: '+text);
                             setState(idSprache, text);
                    
                             // Sag jede 10 Min Text an
                             log('Timerwash='+timerWash2);
                             if (!timerWash2) 
                             {
                                timerWash1 = setInterval(
                                  function()  
                                  {
                                    log('Timerwash=' + timerWash2);
                                    log('Get State=' + getState(idWaschmaschine).val);
                                    if (getState(idWaschmaschine).val == 'fertig')
                                    {
                                       setState(idSprache, text);
                                       log('Saying: '+text);
                                    } else {
                                       clearInterval(timerWash2);
                                       timerWash2 = null;
                                    }
                                  }, 600000
                                );
                             }
                          }
                    

                    }

                    
                    Dann funktionert es bei der ersten Variable, aber bei der zweiten (die den gleichen Code nutzt) kackt der Adapter ab.
                    
                    Ich denke das ist nicht das Timing Problem von letztem Mal, sondern irgend was anders…:
                    
                    

                    bananapi 2015-11-01 02:30:46 info host.bananapi Restart adapter system.adapter.sayit.0 because enabled
                    bananapi 2015-11-01 02:30:46 error host.bananapi instance system.adapter.sayit.0 terminated with code 6 (uncaught exception)
                    sayit.0 2015-11-01 02:30:46 error Error: socket hang up at createHangUpError (_http_client.js:215:15) at TLSSocket.socketCloseListener (_http_client.js:247:23) at TLSSocket.emit (events.js:129:20) at TCP.close (net.js:
                    sayit.0 2015-11-01 02:30:46 error uncaught exception: socket hang up
                    sayit.0 2015-11-01 02:30:46 error Error: connect EHOSTUNREACH at exports._errnoException (util.js:746:11) at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1010:19)
                    sayit.0 2015-11-01 02:30:46 error uncaught exception: connect EHOSTUNREACH
                    sayit-0 2015-11-01 02:30:43 info saying: Der Trockner ist fertig
                    javascript-0 2015-11-01 02:30:43 info script.js.Waschmaschine_fertig: Timerwash=null
                    javascript-0 2015-11-01 02:30:43 info script.js.Waschmaschine_fertig: Saying: Der Trockner ist fertig
                    hm-rega-0 2015-11-01 02:30:43 info State 44879 fertig
                    hm-rega-0 2015-11-01 02:30:37 info State 44879
                    sayit-0 2015-11-01 02:30:22 info saying: Die Waschmaschine ist fertig
                    javascript-0 2015-11-01 02:30:22 info script.js.Waschmaschine_fertig: Timerwash=null
                    javascript-0 2015-11-01 02:30:22 info script.js.Waschmaschine_fertig: Saying: Die Waschmaschine ist fertig
                    hm-rega-0 2015-11-01 02:30:22 info State 39968 fertig
                    sayit-0 2015-11-01 02:30:05 info Upload announce mp3 files
                    sayit-0 2015-11-01 02:30:05 info starting. Version 0.3.11 in /opt/iobroker/node_modules/iobroker.sayit
                    host-bananapi 2015-11-01 02:29:59 info instance system.adapter.sayit.0 started with pid 3119
                    javascript-0 2015-11-01 02:29:41 info script.js.Waschmaschine_fertig: Timerwash=null
                    hm-rega-0 2015-11-01 02:29:41 info State 44879 fertig

                    
                    Immerhin bin ich einen Schritt weiter. Danke dafür.
                    
                    Gruss Ralf
                    1 Reply Last reply Reply Quote 0
                    • P
                      pix last edited by

                      Hallo, @derrapf:

                      
                                sayFinish(data, 'Der Trockner ist fertig');
                      
                       
                      function sayFinish(data, text)
                      
                      ```` `  
                      

                      Lass bei diesen Zeilen das data bitte mal weg.

                      Schwer zu tippen auf dem iPhone mit Tapatalk 🙂

                      Gruß,

                      Pix

                      Gesendet von meinem iPhone mit Tapatalk

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

                        Ich vermute, dass

                        clearInterval(timerWash2);
                        
                        

                        Macht Probleme. Bei dir wird doch timerWash2 nirgendwo gesetzt.

                        Mach so:

                        if (timerWash2) clearInterval(timerWash2);
                        
                        

                        Obwohl ich verstehe nicht ganz, was genau du machen willst.

                        Auch "ne" ist falsch.

                        Was siehst du beim Aufruf:

                        cd /opt/iobroker
                        iobroker state get hm-rega.0.39968
                        
                        1 Reply Last reply Reply Quote 0
                        • D
                          derrapf last edited by

                          Hallo Bluefox, Hallo Pix
                          @Bluefox:

                          Ich vermute, dass

                          clearInterval(timerWash2);
                          
                          

                          Macht Probleme. Bei dir wird doch timerWash2 nirgendwo gesetzt. `
                          Das war natuerlich alles völliger Mist was ich da zusammenprogrammiert hatte. Kommt davon, wenn man nachts totmüde mit cut copy paste programmiert.

                          Ich habe die Funktion jetzt von unbenutzten Variablen gereingt. Die Timer Variable soll dafür verwendet werden ,dass mir das System alle 10 Minuten mit dieser Meldung auf die Nerven geht, bis ich die Maschine ausgeschaltet habe.

                          Da ich die data Variable erstmal nicht brauche, habe ich Sie wie Pix geraten hatte entsorgt. Hat aber leider nichts genutzt.

                          @Bluefox:

                          Auch "ne" ist falsch. `
                          Da würde ich Dir widersprechen wollen: "ne" soll ja triggern wenn der Wert sich geändert hat, also not equal zum vorherigen ist.

                          Mit val:'fertig' prüfe ich dann ob der Wert "fertig" ist.

                          @Bluefox:

                          Was siehst du beim Aufruf:

                          cd /opt/iobroker
                          iobroker state get hm-rega.0.39968
                          ```` `  
                          

                          Da kommt folgendes (ich habs mal für Beide gemacht):

                          root@bananapi:~# cd /opt/iobroker
                          root@bananapi:/opt/iobroker# iobroker state get hm-rega.0.39968
                          {"val":0,"ack":true,"ts":1446410115,"from":"system.adapter.hm-rega.0","lc":1446410108}
                          root@bananapi:/opt/iobroker# iobroker state get hm-rega.0.44879
                          {"val":0,"ack":true,"ts":1446410776,"from":"system.adapter.hm-rega.0","lc":1446410022}
                          
                          

                          Sehe ich das richtig, dass dann val nicht auf "fertig" geprüft werden muss, sondern auf 2? (0="aus", 1="läuft", 2="fertig")

                          Der Code sieht jetzt so aus (Ich hab sogar mal val: rausgenommen und de Timervariable aus 6s runtergesetzt, damit man leichter sieht ob's geht):

                          
                              var idWaschmaschine  = 'hm-rega.0.39968';     //*STAT_Waschmaschine_fertig*/
                              var idTrockner       = 'hm-rega.0.44879';     //*STAT_W.Trockner_fertig*/ 
                              var idSprache        = 'sayit.0.tts.text';    // Sprachausgabe Browser
                          //    var timer = null;
                              var debug = true;
                          
                          on (
                                 {
                                    id: idWaschmaschine,
                                    change: 'ne'
                                 }, 
                                 function (data) 
                                 {
                                    sayFinish(idWaschmaschine, 'Die Waschmaschine ist fertig');
                                 }
                             ); 
                          
                          on (
                                 {
                                    id: idTrockner,
                                    change: 'ne'
                                 }, 
                                 function (data) 
                                 {
                                    sayFinish(idTrockner, 'Der Trockner ist fertig');
                                 }
                             ); 
                          
                          function sayFinish(idGeraet, text)
                          {
                                    // Sage zum ersten Mal
                                    var d = new Date ();
                                    var h = d.getHours();
                          
                                    if ( debug || (h < 22) && (h > 9)) // nur zwischen 9 und 20 Uhr
                                    {
                                       log('Saying: '+text);
                                       setState(idSprache, text);
                          
                                       // Sag jede 10 Min Text an           
                                       var timer = setInterval(
                                            function()  
                                            {
                                              log('Timer=' + timer);
                                              log('Get State=' + getState(idGeraet).val);
                                              if (getState(idGeraet).val == 'fertig')
                                              {
                                                 setState(idSprache, text);
                                                 log('Saying again: '+text);
                                              } 
                                              else 
                                              {
                                                 clearInterval(timer);
                                                 timer = null;
                                              }
                                            }, 6000
                                      );
                                    } 
                          }
                          

                          Aber immer noch unverändertes Verhalten. Der Trigger auf die Sysvar der Waschmaschine funktioniert, der Trigger auf die des Wäschetrockners nicht:

                          sayit.0	2015-11-01 22:30:35	info	sayit.0 Upload announce mp3 files
                          sayit.0	2015-11-01 22:30:35	info	sayit.0 starting. Version 0.3.11 in /opt/iobroker/node_modules/iobroker.sayit
                          bananapi	2015-11-01 22:30:31	info	host.bananapi instance system.adapter.sayit.0 started with pid 3900
                          javascript.0	2015-11-01 22:30:23	info	javascript.0 script.js.Geraete_sind_fertig: Get State=0
                          javascript.0	2015-11-01 22:30:23	info	javascript.0 script.js.Geraete_sind_fertig: Timer=[object Object]
                          javascript.0	2015-11-01 22:30:21	info	javascript.0 script.js.Geraete_sind_fertig: Get State=0
                          javascript.0	2015-11-01 22:30:21	info	javascript.0 script.js.Geraete_sind_fertig: Timer=[object Object]
                          javascript.0	2015-11-01 22:30:17	info	javascript.0 script.js.Geraete_sind_fertig: Saying: Der Trockner ist fertig
                          javascript.0	2015-11-01 22:30:15	info	javascript.0 script.js.Geraete_sind_fertig: Saying again: Der Trockner ist fertig
                          javascript.0	2015-11-01 22:30:15	info	javascript.0 script.js.Geraete_sind_fertig: Get State=fertig
                          javascript.0	2015-11-01 22:30:15	info	javascript.0 script.js.Geraete_sind_fertig: Timer=[object Object]
                          javascript.0	2015-11-01 22:30:09	info	javascript.0 script.js.Geraete_sind_fertig: Saying again: Der Trockner ist fertig
                          javascript.0	2015-11-01 22:30:09	info	javascript.0 script.js.Geraete_sind_fertig: Get State=fertig
                          javascript.0	2015-11-01 22:30:09	info	javascript.0 script.js.Geraete_sind_fertig: Timer=[object Object]
                          javascript.0	2015-11-01 22:30:03	info	javascript.0 script.js.Geraete_sind_fertig: Saying again: Der Trockner ist fertig
                          javascript.0	2015-11-01 22:30:03	info	javascript.0 script.js.Geraete_sind_fertig: Get State=fertig
                          javascript.0	2015-11-01 22:30:03	info	javascript.0 script.js.Geraete_sind_fertig: Timer=[object Object]
                          bananapi	2015-11-01 22:30:01	info	host.bananapi Restart adapter system.adapter.sayit.0 because enabled
                          bananapi	2015-11-01 22:30:01	error	host.bananapi instance system.adapter.sayit.0 terminated with code 6 (uncaught exception)
                          sayit.0	2015-11-01 22:30:00	error	Error: socket hang up at createHangUpError (_http_client.js:215:15) at TLSSocket.socketCloseListener (_http_client.js:247:23) at TLSSocket.emit (events.js:129:20) at TCP.close (net.js:
                          sayit.0	2015-11-01 22:30:00	error	uncaught exception: socket hang up
                          sayit.0	2015-11-01 22:30:00	error	Error: connect EHOSTUNREACH at exports._errnoException (util.js:746:11) at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1010:19)
                          sayit.0	2015-11-01 22:30:00	error	uncaught exception: connect EHOSTUNREACH
                          sayit-0	2015-11-01 22:29:57	info	saying: Der Trockner ist fertig
                          hm-rega-0	2015-11-01 22:29:57	info	State 44879 fertig
                          javascript-0	2015-11-01 22:29:57	info	script.js.Geraete_sind_fertig: Saying: Der Trockner ist fertig
                          javascript-0	2015-11-01 22:29:22	info	script.js.Geraete_sind_fertig: Get State=0
                          javascript-0	2015-11-01 22:29:22	info	script.js.Geraete_sind_fertig: Timer=[object Object]
                          javascript-0	2015-11-01 22:29:18	info	script.js.Geraete_sind_fertig: Get State=0
                          javascript-0	2015-11-01 22:29:18	info	script.js.Geraete_sind_fertig: Timer=[object Object]
                          sayit-0	2015-11-01 22:29:17	info	saying: Die Waschmaschine ist fertig
                          javascript-0	2015-11-01 22:29:16	info	script.js.Geraete_sind_fertig: Saying: Die Waschmaschine ist fertig
                          sayit-0	2015-11-01 22:29:12	info	saying: Die Waschmaschine ist fertig
                          javascript-0	2015-11-01 22:29:12	info	script.js.Geraete_sind_fertig: Saying again: Die Waschmaschine ist fertig
                          javascript-0	2015-11-01 22:29:12	info	script.js.Geraete_sind_fertig: Get State=fertig
                          javascript-0	2015-11-01 22:29:12	info	script.js.Geraete_sind_fertig: Timer=[object Object]
                          sayit-0	2015-11-01 22:29:06	info	saying: Die Waschmaschine ist fertig
                          javascript-0	2015-11-01 22:29:06	info	script.js.Geraete_sind_fertig: Saying again: Die Waschmaschine ist fertig
                          javascript-0	2015-11-01 22:29:06	info	script.js.Geraete_sind_fertig: Get State=fertig
                          javascript-0	2015-11-01 22:29:06	info	script.js.Geraete_sind_fertig: Timer=[object Object]
                          sayit-0	2015-11-01 22:29:00	info	saying: Die Waschmaschine ist fertig
                          hm-rega-0	2015-11-01 22:29:00	info	State 39968 fertig
                          

                          Beide Variablen sind in der CCU aber gleich definiert.

                          Gruss Ralf

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

                            Probier mal so:

                            
                            var idWaschmaschine  = 'hm-rega.0.39968';     //*STAT_Waschmaschine_fertig*/
                            var idTrockner       = 'hm-rega.0.44879';     //*STAT_W.Trockner_fertig*/ 
                            var idSprache        = 'sayit.0.tts.text';    // Sprachausgabe Browser
                            var debug = true;
                            
                            on ({id: idWaschmaschine, val: 2}, function (data) {
                            	sayFinish(idWaschmaschine, 'Die Waschmaschine ist fertig');
                            }); 
                            on ({id: idTrockner, val: 2}, function (data) {
                            	sayFinish(idTrockner, 'Die Waschmaschine ist fertig');
                            });     
                            var timer = {};
                            
                            function sayFinish(idGeraet, text)
                            {
                            	// Sage zum ersten Mal
                            	var d = new Date ();
                            	var h = d.getHours();
                            
                            	if (debug || (h < 22) && (h > 9)) // nur zwischen 9 und 20 Uhr
                            	{
                            		log('Saying: ' + text);
                            		setState(idSprache, text);
                            
                            		// Sag jede 10 Min Text an           
                            		timer[idGeraet] = setInterval(function() {
                            			log('Timer[' + idGeraet + ']=' + timer[idGeraet]);
                            			log('Get State=' + getState(idGeraet).val);
                            			if (getState(idGeraet).val == 2)
                            			{
                            				setState(idSprache, text);
                            				log('Saying again: ' + text);
                            			} 
                            			else 
                            			{
                            				if (timer[idGeraet]) clearInterval(timer[idGeraet]);
                            				timer[idGeraet] = null;
                            			}
                            		}, 60000);
                            	} 
                            }
                            

                            Es konnte trotzdem noch sein, dass timer war null.

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

                              Hallo Bluefox

                              Alles Voodoo. Ich verstehe es nicht: Dein Code triggert nicht die Änderung der System Variable.

                              Also

                              on ({id: idWaschmaschine, val: 2}, function (data) {
                                 sayFinish(idWaschmaschine, 'Die Waschmaschine ist fertig');
                              }); 
                              

                              Funktioniert nicht.

                              Ich hab den Code ergänzt und wieder change 'ne' eingebaut, aber auch dann hat er nicht getriggert.

                              Erst als ich geschrieben habe

                              on ({id: idWaschmaschine}, function (data) {
                                 sayFinish(idWaschmaschine, 'Die Waschmaschine ist fertig');
                              }); 
                              

                              Wurde wieder getriggert, aber jetzt kommts: Ich habe keinen Fehler wenn idWaschmaschine getriggert wird, aber solbad idTrockner triggert kommt wieder der Fehler wie in meinem letzten Post.

                              Muss man das verstehen???

                              Gruss Ralf
                              743_bild1.jpg

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

                                Nächster Effekt:

                                Die Scriptengine scheint in einer Endlosschleife zu sein. Im Log tauchen nun ständig folgende Sequenzen auf und wiederholen sich immer wieder:

                                sayit.0	2015-11-03 22:16:39	info	sayit.0 Upload announce mp3 files
                                sayit.0	2015-11-03 22:16:39	info	sayit.0 starting. Version 0.3.11 in /opt/iobroker/node_modules/iobroker.sayit
                                bananapi	2015-11-03 22:16:35	info	host.bananapi instance system.adapter.sayit.0 started with pid 5070
                                bananapi	2015-11-03 22:16:05	info	host.bananapi Restart adapter system.adapter.sayit.0 because enabled
                                bananapi	2015-11-03 22:16:05	error	host.bananapi instance system.adapter.sayit.0 terminated with code 6 (uncaught exception)
                                sayit.0	2015-11-03 22:16:01	info	sayit.0 saying: Der Trockner ist fertig
                                javascript.0	2015-11-03 22:15:41	info	javascript.0 script.js.Test2: registered 1 subscription and 0 schedules
                                javascript.0	2015-11-03 22:15:41	info	javascript.0 Start javascript script.js.Test2
                                javascript.0	2015-11-03 22:15:41	info	javascript.0 received all states
                                javascript.0	2015-11-03 22:15:41	info	javascript.0 received all objects
                                sayit.0	2015-11-03 22:15:40	info	sayit.0 Upload announce mp3 files
                                sayit.0	2015-11-03 22:15:40	info	sayit.0 starting. Version 0.3.11 in /opt/iobroker/node_modules/iobroker.sayit
                                javascript.0	2015-11-03 22:15:36	info	javascript.0 requesting all objects
                                javascript.0	2015-11-03 22:15:36	info	javascript.0 requesting all states
                                javascript-0	2015-11-03 22:15:36	info	requesting all objects
                                javascript-0	2015-11-03 22:15:36	info	requesting all states
                                javascript-0	2015-11-03 22:15:36	info	starting. Version 0.5.7 in /opt/iobroker/node_modules/iobroker.javascript
                                host-bananapi	2015-11-03 22:15:33	info	instance system.adapter.sayit.0 started with pid 5058
                                host-bananapi	2015-11-03 22:15:23	info	instance system.adapter.javascript.0 started with pid 5055
                                host-bananapi	2015-11-03 22:15:21	info	instance system.adapter.javascript.0 terminated with code 0 (OK)
                                host-bananapi	2015-11-03 22:15:20	info	stopInstance system.adapter.javascript.0 killing pid 2485
                                host-bananapi	2015-11-03 22:15:20	info	stopInstance system.adapter.javascript.0
                                host-bananapi	2015-11-03 22:15:20	info	object change system.adapter.javascript.0
                                host-bananapi	2015-11-03 22:15:03	info	Restart adapter system.adapter.sayit.0 because enabled
                                host-bananapi	2015-11-03 22:15:03	error	instance system.adapter.sayit.0 terminated with code 6 (uncaught exception)
                                Error:	2015-11-03 22:15:03	error	at TCP.close (net.js:485:12)
                                Error:	2015-11-03 22:15:03	error	at TLSSocket.emit (events.js:129:20)
                                Error:	2015-11-03 22:15:03	error	at TLSSocket.socketCloseListener (_http_client.js:247:23)
                                Error:	2015-11-03 22:15:03	error	at createHangUpError (_http_client.js:215:15)
                                Error:	2015-11-03 22:15:03	error	socket hang up
                                uncaught	2015-11-03 22:15:03	error	exception: socket hang up
                                Error:	2015-11-03 22:15:03	error	at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1010:19)
                                Error:	2015-11-03 22:15:03	error	at exports._errnoException (util.js:746:11)
                                Error:	2015-11-03 22:15:03	error	connect EHOSTUNREACH
                                uncaught	2015-11-03 22:15:03	error	exception: connect EHOSTUNREACH
                                sayit-0	2015-11-03 22:15:00	info	saying: Der Trockner ist fertig
                                

                                Auch nach dem Restart von iobroker loggt er diese Sequenz immer wieder.

                                Wie kann ich das denn abbrechen?

                                Gruss Ralf

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

                                  Wenn du sayit deaktivierst. Passiert immer noch?

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

                                    Hab grad mal getestet:

                                    Wenn ich alle Scripte deaktiviere ist Ruhe.

                                    Ich habe ein Testscript mal eben aktiviert:

                                    var idTrockner       = 'hm-rega.0.44879';     //*STAT_W.Trockner_fertig*/
                                    var idSprache        = 'sayit.0.tts.text';    // Sprachausgabe Browser
                                    
                                    on ({id: idTrockner}, function (data) {
                                       sayFinish(idTrockner, 'Der Trockner ist fertig');
                                    });     
                                    
                                    function sayFinish(idGeraet, text)
                                    {
                                                setState(idSprache, text);
                                    }
                                    

                                    Sobald das aktiviert st kommen die Logs. Ohne dass überhaupt ein Wert von idTrockner geändert wird.

                                    bananapi	2015-11-03 22:56:02	info	host.bananapi instance system.adapter.sayit.0 started with pid 5408
                                    bananapi	2015-11-03 22:56:02	info	host.bananapi instance system.adapter.sayit.0 started with pid 5408
                                    hm-rega.0	2015-11-03 22:55:58	info	hm-rega.0 State 46031 650
                                    hm-rega.0	2015-11-03 22:55:58	info	hm-rega.0 State 46030 1019
                                    hm-rega.0	2015-11-03 22:55:57	info	hm-rega.0 State 36952 7.87
                                    hm-rega.0	2015-11-03 22:55:57	info	hm-rega.0 State 36816 8.32
                                    hm-rega.0	2015-11-03 22:55:57	info	hm-rega.0 State 36815 7.97
                                    hm-rega.0	2015-11-03 22:55:56	info	hm-rega.0 State 34330 5.3
                                    hm-rega.0	2015-11-03 22:55:56	info	hm-rega.0 State 34124 101954
                                    hm-rega.0	2015-11-03 22:55:56	info	hm-rega.0 State 34122 9.82
                                    hm-rega.0	2015-11-03 22:55:56	info	hm-rega.0 State 32642 78
                                    hm-rega.0	2015-11-03 22:55:55	info	hm-rega.0 State 12338 10
                                    hm-rega.0	2015-11-03 22:55:55	info	hm-rega.0 State 11970 6.1
                                    bananapi	2015-11-03 22:55:32	info	host.bananapi Restart adapter system.adapter.sayit.0 because enabled
                                    bananapi	2015-11-03 22:55:32	error	host.bananapi instance system.adapter.sayit.0 terminated with code 6 (uncaught exception)
                                    bananapi	2015-11-03 22:55:32	info	host.bananapi Restart adapter system.adapter.sayit.0 because enabled
                                    bananapi	2015-11-03 22:55:32	error	host.bananapi instance system.adapter.sayit.0 terminated with code 6 (uncaught exception)
                                    Error:	2015-11-03 22:55:31	error	at TCP.close (net.js:485:12)
                                    Error:	2015-11-03 22:55:31	error	at TLSSocket.emit (events.js:129:20)
                                    Error:	2015-11-03 22:55:31	error	at TLSSocket.socketCloseListener (_http_client.js:247:23)
                                    Error:	2015-11-03 22:55:31	error	at createHangUpError (_http_client.js:215:15)
                                    Error:	2015-11-03 22:55:31	error	socket hang up
                                    uncaught	2015-11-03 22:55:31	error	exception: socket hang up
                                    Error:	2015-11-03 22:55:31	error	at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1010:19)
                                    Error:	2015-11-03 22:55:31	error	at exports._errnoException (util.js:746:11)
                                    Error:	2015-11-03 22:55:31	error	connect EHOSTUNREACH
                                    uncaught	2015-11-03 22:55:31	error	exception: connect EHOSTUNREACH
                                    hm-rega-0	2015-11-03 22:55:28	info	State 46031 650
                                    hm-rega-0	2015-11-03 22:55:28	info	State 46030 1019
                                    sayit-0	2015-11-03 22:55:28	info	saying: Der Trockner ist fertig
                                    hm-rega-0	2015-11-03 22:55:27	info	State 36952 7.87
                                    hm-rega-0	2015-11-03 22:55:27	info	State 36816 8.32
                                    hm-rega-0	2015-11-03 22:55:27	info	State 36815 7.97
                                    hm-rega-0	2015-11-03 22:55:26	info	State 34330 5.3
                                    hm-rega-0	2015-11-03 22:55:26	info	State 34124 101954
                                    hm-rega-0	2015-11-03 22:55:26	info	State 34122 9.82
                                    hm-rega-0	2015-11-03 22:55:26	info	State 32642 78
                                    hm-rega-0	2015-11-03 22:55:25	info	State 12338 10
                                    hm-rega-0	2015-11-03 22:55:25	info	State 11970 6.1
                                    sayit-0	2015-11-03 22:55:06	info	Upload announce mp3 files
                                    sayit-0	2015-11-03 22:55:06	info	starting. Version 0.3.11 in /opt/iobroker/node_modules/iobroker.sayit
                                    host-bananapi	2015-11-03 22:55:02	info	instance system.adapter.sayit.0 started with pid 5400
                                    hm-rega-0	2015-11-03 22:54:58	info	State 46717 41.4
                                    hm-rega-0	2015-11-03 22:54:58	info	State 46031 647
                                    hm-rega-0	2015-11-03 22:54:58	info	State 46030 1018
                                    hm-rega-0	2015-11-03 22:54:57	info	State 36952 7.87
                                    hm-rega-0	2015-11-03 22:54:57	info	State 36816 8.32
                                    hm-rega-0	2015-11-03 22:54:57	info	State 36815 7.97
                                    hm-rega-0	2015-11-03 22:54:56	info	State 34330 5.3
                                    hm-rega-0	2015-11-03 22:54:56	info	State 34124 101954
                                    hm-rega-0	2015-11-03 22:54:56	info	State 34122 9.82
                                    hm-rega-0	2015-11-03 22:54:56	info	State 32642 78
                                    hm-rega-0	2015-11-03 22:54:55	info	State 12338 10
                                    hm-rega-0	2015-11-03 22:54:55	info	State 11970 6.1
                                    host-bananapi	2015-11-03 22:54:32	info	Restart adapter system.adapter.sayit.0 because enabled
                                    host-bananapi	2015-11-03 22:54:32	error	instance system.adapter.sayit.0 terminated with code 6 (uncaught exception)
                                    Error:	2015-11-03 22:54:31	error	at TCP.close (net.js:485:12)
                                    Error:	2015-11-03 22:54:31	error	at TLSSocket.emit (events.js:129:20)
                                    Error:	2015-11-03 22:54:31	error	at TLSSocket.socketCloseListener (_http_client.js:247:23)
                                    Error:	2015-11-03 22:54:31	error	at createHangUpError (_http_client.js:215:15)
                                    Error:	2015-11-03 22:54:31	error	socket hang up
                                    uncaught	2015-11-03 22:54:31	error	exception: socket hang up
                                    Error:	2015-11-03 22:54:31	error	at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1010:19)
                                    Error:	2015-11-03 22:54:31	error	at exports._errnoException (util.js:746:11)
                                    Error:	2015-11-03 22:54:31	error	connect EHOSTUNREACH
                                    uncaught	2015-11-03 22:54:31	error	exception: connect EHOSTUNREACH
                                    hm-rega-0	2015-11-03 22:54:28	info	State 46717 41.4
                                    hm-rega-0	2015-11-03 22:54:28	info	State 46031 647
                                    hm-rega-0	2015-11-03 22:54:28	info	State 46030 1018
                                    sayit-0	2015-11-03 22:54:28	info	saying: Der Trockner ist fertig
                                    hm-rega-0	2015-11-03 22:54:26	info	State 36952 7.87
                                    hm-rega-0	2015-11-03 22:54:26	info	State 36816 8.32
                                    hm-rega-0	2015-11-03 22:54:26	info	State 36815 7.97
                                    hm-rega-0	2015-11-03 22:54:26	info	State 34330 5.3
                                    hm-rega-0	2015-11-03 22:54:26	info	State 34124 101954
                                    hm-rega-0	2015-11-03 22:54:26	info	State 34122 9.82
                                    hm-rega-0	2015-11-03 22:54:25	info	State 32642 78
                                    hm-rega-0	2015-11-03 22:54:24	info	State 12338 10
                                    hm-rega-0	2015-11-03 22:54:24	info	State 11970 6.1
                                    sayit-0	2015-11-03 22:54:06	info	Upload announce mp3 files
                                    sayit-0	2015-11-03 22:54:06	info	starting. Version 0.3.11 in /opt/iobroker/node_modules/iobroker.sayit
                                    host-bananapi	2015-11-03 22:54:02	info	instance system.adapter.sayit.0 started with pid 5392
                                    hm-rega-0	2015-11-03 22:53:58	info	State 46717 41.4
                                    hm-rega-0	2015-11-03 22:53:58	info	State 46031 647
                                    hm-rega-0	2015-11-03 22:53:58	info	State 46030 1018
                                    hm-rega-0	2015-11-03 22:53:57	info	State 36952 7.87
                                    hm-rega-0	2015-11-03 22:53:57	info	State 36816 8.32
                                    hm-rega-0	2015-11-03 22:53:57	info	State 36815 7.97
                                    hm-rega-0	2015-11-03 22:53:56	info	State 34330 5.3
                                    hm-rega-0	2015-11-03 22:53:56	info	State 34124 101954
                                    hm-rega-0	2015-11-03 22:53:56	info	State 34122 9.82
                                    hm-rega-0	2015-11-03 22:53:56	info	State 32642 78
                                    hm-rega-0	2015-11-03 22:53:55	info	State 12338 10
                                    hm-rega-0	2015-11-03 22:53:55	info	State 11970 6.1
                                    host-bananapi	2015-11-03 22:53:32	info	Restart adapter system.adapter.sayit.0 because enabled
                                    host-bananapi	2015-11-03 22:53:32	error	instance system.adapter.sayit.0 terminated with code 6 (uncaught exception)
                                    Error:	2015-11-03 22:53:32	error	at TCP.close (net.js:485:12)
                                    Error:	2015-11-03 22:53:32	error	at TLSSocket.emit (events.js:129:20)
                                    Error:	2015-11-03 22:53:32	error	at TLSSocket.socketCloseListener (_http_client.js:247:23)
                                    Error:	2015-11-03 22:53:32	error	at createHangUpError (_http_client.js:215:15)
                                    Error:	2015-11-03 22:53:32	error	socket hang up
                                    uncaught	2015-11-03 22:53:32	error	exception: socket hang up
                                    Error:	2015-11-03 22:53:32	error	at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1010:19)
                                    Error:	2015-11-03 22:53:32	error	at exports._errnoException (util.js:746:11)
                                    Error:	2015-11-03 22:53:32	error	connect EHOSTUNREACH
                                    uncaught	2015-11-03 22:53:32	error	exception: connect EHOSTUNREACH
                                    hm-rega-0	2015-11-03 22:53:29	info	State 46717 41.4
                                    sayit-0	2015-11-03 22:53:28	info	saying: Der Trockner ist fertig
                                    hm-rega-0	2015-11-03 22:53:29	info	State 46031 647
                                    hm-rega-0	2015-11-03 22:53:29	info	State 46030 1018
                                    hm-rega-0	2015-11-03 22:53:27	info	State 36952 7.87
                                    hm-rega-0	2015-11-03 22:53:27	info	State 36816 8.32
                                    hm-rega-0	2015-11-03 22:53:27	info	State 36815 7.97
                                    hm-rega-0	2015-11-03 22:53:27	info	State 34330 5.3
                                    hm-rega-0	2015-11-03 22:53:27	info	State 34124 101954
                                    hm-rega-0	2015-11-03 22:53:27	info	State 34122 9.82
                                    hm-rega-0	2015-11-03 22:53:26	info	State 32642 78
                                    hm-rega-0	2015-11-03 22:53:25	info	State 12338 10
                                    hm-rega-0	2015-11-03 22:53:25	info	State 11970 6.1
                                    javascript-0	2015-11-03 22:53:03	info	script.js.Test2: registered 1 subscription and 0 schedules
                                    javascript-0	2015-11-03 22:53:03	info	Start javascript script.js.Test2
                                    

                                    Gruss Ralf

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

                                      Wenn du die Variable sayit.0.tts.text händisch beschreibst (aus admin), kannst du was hören?

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

                                        Ah!

                                        Ich weiss warum das Dings loopt:

                                        Weil ich nur geschrieben habe:

                                        on ({id: idTrockner'}, function (data) {
                                           sayFinish(idTrockner, 'Der Trockner ist fertig');
                                        }); 
                                        
                                        

                                        Soll das so sein?

                                        Wenn ich change: 'ne' dazu schreibe wird wieder getriggert, aber dann kommt auch wieder der Absturz des Adapters.

                                        Wir haben also zwei Baustellen:

                                        a) Wie triggert man richtig (also nur wenn die Variable auf 2 geht) val:2 alleine geht nicht und val:2 mit change geht auch nicht. Nur change alleine scheint zu funktionieren oder eben ganz one change und val. Dann loopt der Mist aber sogar ohne Änderung der Varable

                                        Kannst Du vielleicht kurz erläutern wie die on Syntax eigentlch funktioneren soll? Also was bewirken change und val genau und in kombination?

                                        b) Der Absturz des Adapters sobald er was sagen soll. Interessanterweise aber nur bei dieser Sysvariablen…

                                        Gruss Ralf

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

                                          @Bluefox:

                                          Wenn du die Variable sayit.0.tts.text händisch beschreibst (aus admin), kannst du was hören? `

                                          Nein. Wenn ich unter Zustände die Variable beschreibe passiert gar nichts.

                                          Gruss Ralf

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

                                            Probier mal mit:

                                            on ({id: idTrockner, change: 'any'}, function (obj) {
                                               log(obj.newState.val);
                                               if (obj.newState.val == 2) {
                                               	sayFinish(idTrockner, 'Der Trockner ist fertig');
                                               }
                                            }); 
                                            

                                            > Nein. Wenn ich unter Zustände die Variable beschreibe passiert gar nichts.
                                            Dann ist dein sayit falsch eingestellt.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.2k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            52
                                            5542
                                            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