Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Portierung CCU.IO

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.4k

Portierung CCU.IO

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
52 Beiträge 4 Kommentatoren 6.3k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • BluefoxB Offline
    BluefoxB Offline
    Bluefox
    schrieb am zuletzt editiert von
    #22

    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 Antwort Letzte Antwort
    0
    • D Offline
      D Offline
      derrapf
      schrieb am zuletzt editiert von
      #23

      @Bluefox:

      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');
         }
      }); 
      ```` `  
      

      Da wird wieder nichts getriggert.

      Mein Sayit ist so eingestellt (Viel gibt's ja nicht einzustellen):
      743_bild1.jpg

      Gruss Ralf

      1 Antwort Letzte Antwort
      0
      • BluefoxB Offline
        BluefoxB Offline
        Bluefox
        schrieb am zuletzt editiert von
        #24

        Hast du Raspi?

        Schon das gemacht?
        > To enable the text to speech on RaspberryPI or linux system call one time following command sudo apt-get -y install mpg321 to install mpg321.

        Vielleicjt auch testen, dass es tatsächlich geht:

        https://jeffskinnerbox.wordpress.com/20 … pberry-pi/

        1 Antwort Letzte Antwort
        0
        • D Offline
          D Offline
          derrapf
          schrieb am zuletzt editiert von
          #25

          Hallo Bluefox
          @Bluefox:

          Hast du Raspi? `

          Banana-Pi
          @Bluefox:

          Schon das gemacht? `
          Ich habe nicht das Problem dass Sayit nicht spricht. Er spricht ja. Er triggert nur nicht richtig und beim Triggern dieser einen Sysvar geht er auf die Bretter. Wenn die die idWaschmaschine ändere, dann spricht er ohne Probleme.

          Und: Er spricht NICHT, wenn ich die sayit.0.tts.text Variabe direkt im Reiter Zustände ändere.

          Gruss Ralf

          1 Antwort Letzte Antwort
          0
          • D Offline
            D Offline
            derrapf
            schrieb am zuletzt editiert von
            #26

            Ich habe mal Dein Script nochmal angepasst und sowohl obj.newState.val als auch obj.oldState.val ausgegeben:

            var idTrockner       = 'hm-rega.0.44879';     //*STAT_W.Trockner_fertig*/
            var idSprache        = 'sayit.0.tts.text';    // Sprachausgabe Browser
            
            on ({id: idTrockner, change:'ne'}, function (obj) {
               log("getriggert! State = "+obj.newState.val);
               log("getriggert! State = "+obj.oldState.val);
               if (obj.newState.val == 2) {
                  sayFinish(idTrockner, 'Der Trockner ist fertig');
               }
            }); 
            
            function sayFinish(idGeraet, text)
            {
                                   setState(idSprache, text);
                                   log('Saying again: '+text);
            }
            

            Im Log steht

            javascript.0	2015-11-04 00:54:30	info	javascript.0 script.js.Test2: getriggert! State = fertig
            javascript.0	2015-11-04 00:54:30	info	javascript.0 script.js.Test2: getriggert! State = 0
            
            

            Da stimmt doch was nicht, oder?

            Warum gibt obj.newState.val den Index der Werteliste aus, aber obj.oldState.val den Wert?

            Das ist doch nicht konsistent!

            Und auf was triggert die On-Syntax? Auf newState oder oldState?

            Zum Verständnis: Ich setze die Variable manuell im IoBroker auf den Wert2; Irgendwas (nicht die CCU, hab ich grad nachgesehen) setzt sie dann aber recht schnell wieder auf 0 gesetzt so dass sich eben oldState = 2 und newState = 0 ergibt.

            Auf jeden Fall kommt er nicht in die if-Bedingung, weil newState zu schnell wieder auf 0 geht.

            Ändere ich die Bedingung auf if (obj.newState.val == 2) {, dann wird setState(idSprache, text) aufgerufen, aber dann geht der Adapter wieder auf die Bretter.

            Gruss Ralf

            1 Antwort Letzte Antwort
            0
            • D Offline
              D Offline
              derrapf
              schrieb am zuletzt editiert von
              #27

              Neue Erkenntnisse:

              Ich hab jetzt in einem ersten Schritt nur die Probleme mit dem Trigger untersucht:

              var idTrockner       = 'hm-rega.0.44879';     //*STAT_W.Trockner_fertig*/
              var idSprache        = 'sayit.0.tts.text';    // Sprachausgabe Browser
              
              on ({id: idTrockner, change:'ne', val: 'fertig'}, function (obj) {
                 log("getriggert! newState = "+obj.newState.val);
                 log("getriggert! oldState = "+obj.oldState.val);
                 if (obj.newState.val == 0) {
                    sayFinish(idTrockner, 'Der Trockner ist fertig');
                 }
              }); 
              
              function sayFinish(idGeraet, text)
              {
                             //        setState(idSprache, text);
                                     log('Saying again: '+text);
              }
              

              Man muss scheinbar auf val: "fertig" prüfen. In diesem Fall wird die Funktion auch nur bei dem Wert "fertig" getriggert. So soll es sen.

              Was mich jetzt wundert ist das Log: Nun steht hier nämlich richtg:

              javascript-0	2015-11-04 01:29:28	info	script.js.Test2: getriggert! oldState = laeuft
              javascript-0	2015-11-04 01:29:28	info	script.js.Test2: getriggert! newState = fertig
              

              Lasse ich val: 'fertig' weg, ist newState plötzlich nicht "aus" sondern 0:

              javascript-0	2015-11-04 01:34:31	info	script.js.Test2: getriggert! oldState = fertig
              javascript-0	2015-11-04 01:34:31	info	script.js.Test2: getriggert! newState = 0
              

              Warum wird einmal der Index verwendet und dann wieder der Wert der Enumeration? Das ist doch ein Bug oder?

              Gruss Ralf

              1 Antwort Letzte Antwort
              0
              • BluefoxB Offline
                BluefoxB Offline
                Bluefox
                schrieb am zuletzt editiert von
                #28

                @derrapf:

                Neue Erkenntnisse:

                Ich hab jetzt in einem ersten Schritt nur die Probleme mit dem Trigger untersucht:

                var idTrockner       = 'hm-rega.0.44879';     //*STAT_W.Trockner_fertig*/
                var idSprache        = 'sayit.0.tts.text';    // Sprachausgabe Browser
                
                   
                on ({id: idTrockner, change:'ne', val: 'fertig'}, function (obj) {
                   log("getriggert! newState = "+obj.newState.val);
                   log("getriggert! oldState = "+obj.oldState.val);
                   if (obj.newState.val == 0) {
                      sayFinish(idTrockner, 'Der Trockner ist fertig');
                   }
                }); 
                
                function sayFinish(idGeraet, text)
                {
                               //        setState(idSprache, text);
                                       log('Saying again: '+text);
                }
                

                Man muss scheinbar auf val: "fertig" prüfen. In diesem Fall wird die Funktion auch nur bei dem Wert "fertig" getriggert. So soll es sen.

                Was mich jetzt wundert ist das Log: Nun steht hier nämlich richtg:

                javascript-0	2015-11-04 01:29:28	info	script.js.Test2: getriggert! oldState = laeuft
                javascript-0	2015-11-04 01:29:28	info	script.js.Test2: getriggert! newState = fertig
                

                Lasse ich val: 'fertig' weg, ist newState plötzlich nicht "aus" sondern 0:

                javascript-0	2015-11-04 01:34:31	info	script.js.Test2: getriggert! oldState = fertig
                javascript-0	2015-11-04 01:34:31	info	script.js.Test2: getriggert! newState = 0
                

                Warum wird einmal der Index verwendet und dann wieder der Wert der Enumeration? Das ist doch ein Bug oder?

                Gruss Ralf `
                Das ist ein bug. Frage ist nur wo.

                1 Antwort Letzte Antwort
                0
                • D Offline
                  D Offline
                  derrapf
                  schrieb am zuletzt editiert von
                  #29

                  Hi Bluefox
                  > Das ist ein bug. Frage ist nur wo.
                  Das würde ich Dir gerne sagen wenn ich könnte.

                  Immerhin wissen wir jetzt wie man es machen muss, bzw. nicht machen darf.

                  Eine Zusammenfassung dieser Erkenntnisse wäre vielleicht was für's Wiki.

                  Jetzt aber das eigentliche Problem was mir mehr Sorge bereitet: Das ist der Absturz des Sayit Adapters.

                  Und jetzt wird es immer ominöser. Ich habe ein wenig rumgespielt:

                  Kannst Du Dir erklären, dass der Absturz vom Text kommt der ausgegeben werden soll?

                  Ich habe eben "Die Waschmaschine ist fertig" in beide ON's eingegeben und es hat beides mal ohne Absturz funktioniert.

                  Danach habe ich als zweiten Text "Die Waschmaschine ist nicht fertig" eingegeben und prompt hat es geknallt.

                  Andere Texte wie "Du bloedes Teil" oder "test2" und "test1" funktionieren auch nicht und bringen den Adapter zu Absturz.

                  Hää?????

                  Wer soll das kapieren?

                  Du müsstest das theoretisch reproduzieren können mit diesem Code. Der erste Text funktioniert; der zweite Text lässt den Adapter abrauchen.

                  var idTrockner       = 'hm-rega.0.44879';     //*STAT_W.Trockner_fertig*/
                  var idSprache        = 'sayit.0.tts.text';    // Sprachausgabe Browser
                  
                  on ({id: idTrockner, change:'ne', val: 'fertig'}, function (obj) {
                        setState(idSprache, 'Die Waschmaschine ist fertig');
                        setState(idSprache, 'Der Trockner ist fertig');
                  }); 
                  

                  Gruss Ralf

                  1 Antwort Letzte Antwort
                  0
                  • D Offline
                    D Offline
                    derrapf
                    schrieb am zuletzt editiert von
                    #30

                    Hallo

                    Da bluefox nichts mehr zum Thema schreibt: Könnte bitte irgend jemand den Code oben ausprobieren (ev eine andere Variable verwenden)?

                    Mich würde interessieren ob das ein Bug ist, oder ob was an meiner Installation nicht stimmt.

                    Gruss Ralf

                    1 Antwort Letzte Antwort
                    0
                    • BluefoxB Offline
                      BluefoxB Offline
                      Bluefox
                      schrieb am zuletzt editiert von
                      #31

                      @derrapf:

                      Hi Bluefox
                      > Das ist ein bug. Frage ist nur wo.
                      Das würde ich Dir gerne sagen wenn ich könnte.

                      Immerhin wissen wir jetzt wie man es machen muss, bzw. nicht machen darf.

                      Eine Zusammenfassung dieser Erkenntnisse wäre vielleicht was für's Wiki.

                      Jetzt aber das eigentliche Problem was mir mehr Sorge bereitet: Das ist der Absturz des Sayit Adapters.

                      Und jetzt wird es immer ominöser. Ich habe ein wenig rumgespielt:

                      Kannst Du Dir erklären, dass der Absturz vom Text kommt der ausgegeben werden soll?

                      Ich habe eben "Die Waschmaschine ist fertig" in beide ON's eingegeben und es hat beides mal ohne Absturz funktioniert.

                      Danach habe ich als zweiten Text "Die Waschmaschine ist nicht fertig" eingegeben und prompt hat es geknallt.

                      Andere Texte wie "Du bloedes Teil" oder "test2" und "test1" funktionieren auch nicht und bringen den Adapter zu Absturz.

                      Hää?????

                      Wer soll das kapieren?

                      Du müsstest das theoretisch reproduzieren können mit diesem Code. Der erste Text funktioniert; der zweite Text lässt den Adapter abrauchen.

                      var idTrockner       = 'hm-rega.0.44879';     //*STAT_W.Trockner_fertig*/
                      var idSprache        = 'sayit.0.tts.text';    // Sprachausgabe Browser
                      
                         
                      on ({id: idTrockner, change:'ne', val: 'fertig'}, function (obj) {
                            setState(idSprache, 'Die Waschmaschine ist fertig');
                            setState(idSprache, 'Der Trockner ist fertig');
                      }); 
                      

                      Gruss Ralf `
                      change und val sind überflüssig.

                      Es triggert erst "change - not equal" (auf Änderung) und dann falls change nicht getriggert hat, dann wird noch geprüft ob es 'fertig' ist.

                      D.h. dein Fall muss einfach so sein "{id: idTrockner, val: 'fertig'}"

                      1 Antwort Letzte Antwort
                      0
                      • BluefoxB Offline
                        BluefoxB Offline
                        Bluefox
                        schrieb am zuletzt editiert von
                        #32

                        Ich habe jetzt dein Skript auf das reduziert:

                              setState('sayit.0.tts.text', 'Die Waschmaschine ist fertig');
                              setState('sayit.0.tts.text', 'Der Trockner ist fertig');
                        
                        

                        Bei mir auf Raspi2 stürzt nichts ab. Und bei dir?

                        1 Antwort Letzte Antwort
                        0
                        • D Offline
                          D Offline
                          derrapf
                          schrieb am zuletzt editiert von
                          #33

                          Hallo Bluefox
                          @Bluefox:

                          change und val sind überflüssig.

                          Es triggert erst "change - not equal" (auf Änderung) und dann falls change nicht getriggert hat, dann wird noch geprüft ob es 'fertig' ist.

                          D.h. dein Fall muss einfach so sein "{id: idTrockner, val: 'fertig'}" `
                          Hab ich das richtig verstanden?

                          Diese Syntax bedeudet dann sinngemäss: "Triggere wenn sich der Wert geändert hat oder wenn sich der Wert auf 'fertig' geändert hat"?

                          Gruss Ralf

                          1 Antwort Letzte Antwort
                          0
                          • D Offline
                            D Offline
                            derrapf
                            schrieb am zuletzt editiert von
                            #34

                            Hi Bluefox
                            @Bluefox:

                            Ich habe jetzt dein Skript auf das reduziert:

                                  setState('sayit.0.tts.text', 'Die Waschmaschine ist fertig');
                                  setState('sayit.0.tts.text', 'Der Trockner ist fertig');
                            
                            

                            Bei mir auf Raspi2 stürzt nichts ab. Und bei dir? `

                            Das ist doch das Script was ich oben zum Testen gepostet habe. Nur ohne den Trigger drum rum.

                            Soll ich nur ein Script mit diesen zwei Zeilen schreiben?

                            Wie, oder wodurch wird das ausgeführt wenn es keinen "ON…" Code gibt??

                            Gruss Ralf
                            3476_log.txt

                            1 Antwort Letzte Antwort
                            0
                            • D Offline
                              D Offline
                              derrapf
                              schrieb am zuletzt editiert von
                              #35

                              Ah, ja.

                              Geht. Wenn man das Script speichert wird es scheinbar gleich augeführt.

                              Ergebnis: Der erste Satz wird gesagt; beim zweiten Satz krachts. Und jetzt?

                              hm-rpc.0	2015-11-13 00:31:26	error	hm-rpc.0 Error: not connected
                              host-bananapi	2015-11-13 00:31:26	info	Restart adapter system.adapter.sayit.0 because enabled
                              host-bananapi	2015-11-13 00:31:26	error	instance system.adapter.sayit.0 terminated with code 6 (uncaught exception)
                              Error:	2015-11-13 00:31:25	error	at TCP.close (net.js:485:12)
                              Error:	2015-11-13 00:31:25	error	at TLSSocket.emit (events.js:129:20)
                              Error:	2015-11-13 00:31:25	error	at TLSSocket.socketCloseListener (_http_client.js:247:23)
                              Error:	2015-11-13 00:31:25	error	at createHangUpError (_http_client.js:215:15)
                              Error:	2015-11-13 00:31:25	error	socket hang up
                              uncaught	2015-11-13 00:31:25	error	exception: socket hang up
                              Error:	2015-11-13 00:31:25	error	at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1010:19)
                              Error:	2015-11-13 00:31:25	error	at exports._errnoException (util.js:746:11)
                              Error:	2015-11-13 00:31:25	error	connect EHOSTUNREACH
                              uncaught	2015-11-13 00:31:25	error	exception: connect EHOSTUNREACH
                              sayit-0	2015-11-13 00:31:22	info	saying: Der Trockner ist fertig
                              hm-rega-0	2015-11-13 00:31:18	info	State 48905 0
                              hm-rega-0	2015-11-13 00:31:18	info	State 46718 21.5
                              hm-rega-0	2015-11-13 00:31:18	info	State 46717 39.1
                              hm-rega-0	2015-11-13 00:31:18	info	State 46031 0
                              hm-rega-0	2015-11-13 00:31:18	info	State 46030 2
                              hm-rega-0	2015-11-13 00:31:18	info	State 44879 2
                              hm-rega-0	2015-11-13 00:31:17	info	State 42820 true
                              sayit-0	2015-11-13 00:31:17	info	saying: Die Waschmaschine ist fertig
                              

                              Gruss Ralf
                              6359_logfilemultiroom.txt.zip.txt

                              1 Antwort Letzte Antwort
                              0
                              • P Offline
                                P Offline
                                pix
                                schrieb am zuletzt editiert von
                                #36

                                Hallo Ralf,

                                die beiden Ansagen kommen natürlich ultrakurz hingereinander. Die Maschine kann schneller denken, als reden.

                                Kannst du mal eine kleine Verzögerung einbauen?

                                setState('sayit.0.tts.text', 'Die Waschmaschine ist fertig');
                                setStateDelayed('sayit.0.tts.text', 'Der Trockner ist fertig', 5000);
                                

                                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 Antwort Letzte Antwort
                                0
                                • D Offline
                                  D Offline
                                  derrapf
                                  schrieb am zuletzt editiert von
                                  #37

                                  Hallo Pix, Hallo bluefox

                                  Es bleibt ominös bei mir.

                                  Eben wollte ich die Pix'sche Scriptverion probieren, als ich feststellen musste, dass IoBroker nicht mehr reagierte. Da ich zwischenzeitlich auf dem Bananapi mit MQTT rumgespielt und ein paar Dinge intalliert hatte, war ich nicht sonderlich verwundert und habe IOBroker neu gestartet.

                                  Danach habe ich nochmal das Testscript (ohne die Verzögerung) gestartet und auf einmal hat der Sayit beide Sätze ohne abzurauchen gesagt.

                                  Juhu, dachte ich, dann probierst Du mal das "richtige" Script; und siehe da: Es meldet sowohl die fertige Waschmaschine als auch den fertigen Trockner.

                                  Da ich inzwischen das Script erweitert hatte, dass auch das zu lange geöffnete Badfenster gemeldet wird, bin ich mutig geworden und habe die entsprechende Variable auf den Wert "daueroffen" gesetzt: Hat auch geklappt!

                                  Mein Übermut wurde immer grösser und die Variable wurde auf den dritten Wert gesetzt den sie hat: "zu lange offen": Krach!

                                  Und schon hat es wieder geknallt. Der Code ist der Gleiche, nur der Satz ein anderer.

                                  Also habe ich (Pix'sche Timing Theorie) gewartet. Lange. Und nochmal den entsprechenden Satz sagen lassen:

                                  Und was soll ich sagen: Es krachte schon wieder.

                                  Irgendwie finde ich kein Muster bei diesem seltamen Verhalten. Das einzige was bleibt ist ein sehr instabiler Eindruck dieses Moduls. Ich poste hier nochmal den Code und das Log, obwohl ich nicht glaube, dass das hier noch irgend jemand versteht…

                                  Code

                                  var idSprache        = 'sayit.0.tts.text';    // Sprachausgabe Browser
                                  
                                  var idWaschmaschine  = 'hm-rega.0.39968';     //STAT_Waschmaschine_fertig
                                  var idTrockner       = 'hm-rega.0.44879';     //STAT_W.Trockner_fertig
                                  var idBad_daueroffen = 'hm-rega.0.37449';     //Badezimmer_Alarm_daueroffen. Werte: zu; daueroffen; zu lang offen
                                  
                                  var timer = {};
                                  var debug = true;
                                  var repeat = true;
                                  var no_repeat = false;
                                  
                                  on ({id: idBad_daueroffen, val: 'daueroffen'}, function (data) {
                                     //sayOpen(idBad_daueroffen, "Achtung Systemmeldung um " +d.getHours() + " Uhr und " + d.getMinutes() + " Minuten:", 1000, no_repeat);
                                     saySomething(idBad_daueroffen, 'Achtung. Das Badezimmerfenster ist schon lenger als 15 Minuten offen', no_repeat);
                                  });  
                                  
                                  on ({id: idBad_daueroffen, val: 'zu lang offen'}, function (data) {
                                     //sayOpen(idBad_daueroffen, "Achtung Systemmeldung um " +d.getHours() + " Uhr und " + d.getMinutes() + " Minuten:", 1000; no_repeat);
                                     saySomething(idBad_daueroffen, 'Das Fenster im Bad ist schon lenger als eine halbe Stunde offen. Bitte endlich mal zu machen.', repeat);
                                  });  
                                  
                                  //----------------------------------------- Waschmaschine und Trockner --------------------------------
                                  on ({id: idWaschmaschine, val: 'fertig'}, function (data) {
                                     saySomething(idWaschmaschine, 'Die Waschmaschine ist fertig');
                                  });     
                                  
                                  on ({id: idTrockner, val: 'fertig'}, function (data) {
                                     saySomething(idTrockner, 'Der Trockner ist fertig');
                                  });  
                                  
                                  function saySomething(idGeraet, text, repeat)
                                  {
                                     // 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);
                                  
                                       if (repeat)
                                       {
                                        // 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)
                                           {
                                              log('Saying again: ' + text);
                                              setState(idSprache, text);
                                           }
                                           else
                                           {
                                              if (timer[idGeraet]) clearInterval(timer[idGeraet]);
                                              timer[idGeraet] = null;
                                           }
                                        }, 600000);
                                       }
                                     }
                                  }
                                  
                                  

                                  Und hier die Logs. Man sieht, dass mehrfach die Texte richtig gesagt wurden aber es zwischen durch immer wieder Fehler gab.

                                  Unter anderem den Fehler > hm-rpc-0 2015-11-14 17:53:04 error Error: not connected und ein Node-Red Fehler

                                  Ich hoffe nicht, dass die damit zuammen hängen..
                                  > host-bananapi 2015-11-14 17:54:06 error instance system.adapter.node-red.0 terminated with code 7 (Adapter already running)

                                  host-bananapi	2015-11-14 17:51:59	info	Restart adapter system.adapter.sayit.0 because enabled
                                  host-bananapi	2015-11-14 17:51:59	error	instance system.adapter.sayit.0 terminated with code 6 (uncaught exception)
                                  TypeError:	2015-11-14 17:51:58	error	at FSReqWrap.oncomplete (fs.js:95:15)
                                  TypeError:	2015-11-14 17:51:58	error	at /opt/iobroker/node_modules/iobroker.sayit/main.js:276:21
                                  TypeError:	2015-11-14 17:51:58	error	at getLength (/opt/iobroker/node_modules/iobroker.sayit/main.js:164:27)
                                  TypeError:	2015-11-14 17:51:58	error	at /opt/iobroker/node_modules/iobroker.sayit/main.js:277:39
                                  TypeError:	2015-11-14 17:51:58	error	at /opt/iobroker/node_modules/iobroker.sayit/main.js:415:21
                                  TypeError:	2015-11-14 17:51:58	error	at cacheFile (/opt/iobroker/node_modules/iobroker.sayit/main.js:397:5)
                                  TypeError:	2015-11-14 17:51:58	error	at sayItSystem (/opt/iobroker/node_modules/iobroker.sayit/main.js:672:9)
                                  TypeError:	2015-11-14 17:51:58	error	at sayFinished (/opt/iobroker/node_modules/iobroker.sayit/main.js:203:45)
                                  TypeError:	2015-11-14 17:51:58	error	Cannot read property 'text' of undefined
                                  uncaught	2015-11-14 17:51:58	error	exception: Cannot read property 'text' of undefined
                                  sayit-0	2015-11-14 17:51:58	warn	Received file is too short:
                                  sayit-0	2015-11-14 17:51:58	warn	Cannot read length of file /opt/iobroker/node_modules/iobroker.sayit/say.mp3
                                  sayit-0	2015-11-14 17:51:58	warn	Received file is too short:
                                  sayit-0	2015-11-14 17:51:57	info	saying: Das Fenster im Bad ist schon lenger als eine halbe Stunde offen. Bitte endlich mal zu machen.
                                  hm-rega-0	2015-11-14 17:51:56	info	State 37449 zu lang offen
                                  javascript-0	2015-11-14 17:51:56	info	script.js.Statusaenderungen_sagen: Saying: Das Fenster im Bad ist schon lenger als eine halbe Stunde offen. Bitte endlich mal zu machen.
                                  hm-rega-0	2015-11-14 17:51:56	info	State 37449 zu lang offen
                                  ...
                                  hm-rega-0	2015-11-14 17:51:48	info	State 36815 8.19
                                  hm-rega-0	2015-11-14 17:51:48	info	State 36162 7
                                  host-bananapi	2015-11-14 17:51:48	info	Restart adapter system.adapter.node-red.0 because enabled
                                  host-bananapi	2015-11-14 17:51:48	error	instance system.adapter.node-red.0 terminated with code 7 (Adapter already running)
                                  hm-rega-0	2015-11-14 17:51:48	info	State 34330 5.3
                                  ...
                                  hm-rega-0	2015-11-14 17:51:41	info	State 41 10
                                  host-bananapi	2015-11-14 17:51:41	info	instance system.adapter.node-red.0 started with pid 17945
                                  javascript-0	2015-11-14 17:51:37	info	script.js.Statusaenderungen_sagen: Get State=0
                                  javascript-0	2015-11-14 17:51:37	info	script.js.Statusaenderungen_sagen: Timer[hm-rega.0.37449]=null
                                  hm-rpc-0	2015-11-14 17:51:34	error	Error: not connected
                                  ...
                                  hm-rega-0	2015-11-14 17:51:11	info	State 41 10
                                  host-bananapi	2015-11-14 17:51:11	info	Restart adapter system.adapter.node-red.0 because enabled
                                  host-bananapi	2015-11-14 17:51:11	error	instance system.adapter.node-red.0 terminated with code 7 (Adapter already running)
                                  host-bananapi	2015-11-14 17:51:07	info	instance system.adapter.node-red.0 started with pid 17938
                                  hm-rega-0	2015-11-14 17:50:48	info	State 48905 66
                                  ...
                                  hm-rega-0	2015-11-14 17:50:41	info	State 41 10
                                  host-bananapi	2015-11-14 17:50:37	info	Restart adapter system.adapter.node-red.0 because enabled
                                  host-bananapi	2015-11-14 17:50:37	error	instance system.adapter.node-red.0 terminated with code 7 (Adapter already running)
                                  host-bananapi	2015-11-14 17:50:33	info	instance system.adapter.node-red.0 started with pid 17931
                                  ...
                                  hm-rpc-0	2015-11-14 17:50:04	error	Error: not connected
                                  host-bananapi	2015-11-14 17:50:03	info	Restart adapter system.adapter.node-red.0 because enabled
                                  host-bananapi	2015-11-14 17:50:03	error	instance system.adapter.node-red.0 terminated with code 7 (Adapter already running)
                                  host-bananapi	2015-11-14 17:50:00	info	instance system.adapter.node-red.0 started with pid 17924
                                  javascript-0	2015-11-14 17:49:50	info	script.js.Statusaenderungen_sagen: Get State=0
                                  javascript-0	2015-11-14 17:49:50	info	script.js.Statusaenderungen_sagen: Timer[hm-rega.0.37449]=null
                                  
                                  
                                  1 Antwort Letzte Antwort
                                  0
                                  • P Offline
                                    P Offline
                                    pix
                                    schrieb am zuletzt editiert von
                                    #38

                                    Hallo,

                                    das ist ja verzwickt. Hier noch ein paar Versuche:

                                    ` > ````

                                    javascript-0 2015-11-14 17:51:56 info script.js.Statusaenderungen_sagen: Saying: Das Fenster im Bad ist schon lenger als eine halbe Stunde offen. Bitte endlich mal zu machen.
                                    ```` `
                                    Der Text hat schon sehr viele Zeichen. Ich habe mit solch langen Texten immer wieder Probleme.

                                    Das Log meldet ein Problem mit der Variable 'text'. Umgehe das doch nochmal und lasse die Erinnerungsfunktion 'saySomething' erstmal weg.

                                    Alternativ oder vielleicht probierst du zuerst:

                                    saySomething erwartet (idGeraet, text, repeat) - ich weiß nicht, ob repeat optional ist oder doch jedesmal mit übergeben werden muss. Kann es sein, dass der Adapter das 'true' oder 'false' aus repeat evtl. in der Funktion in 'text' schreiben will, wenn du nur zwei der drei Parameter übergibst? Ausserdem ist es unglücklich, 'repeat' oben für das ganze Skript zu deklarieren und in saySomething nochmal. Und eine Variable 'repeat' reicht doch, da boolean. Da brauchst du no-repeat nicht mehr.

                                    Besser so:

                                    var idSprache        = 'sayit.0.tts.text';    // Sprachausgabe Browser
                                    
                                    var idWaschmaschine  = 'hm-rega.0.39968';     //STAT_Waschmaschine_fertig
                                    var idTrockner       = 'hm-rega.0.44879';     //STAT_W.Trockner_fertig
                                    var idBad_daueroffen = 'hm-rega.0.37449';     //Badezimmer_Alarm_daueroffen. Werte: zu; daueroffen; zu lang offen
                                    
                                    var timer = {};
                                    var debug = true;
                                    var repeat = false; // bei Skriptstart ausschalten
                                    
                                    // Eigentlich reicht ein subscribe, in dem alle 3 Zustände abgefragt werden, aber zum Test mal so:
                                    on ({id: idBad_daueroffen, val: 'zu'}, function (data) {
                                       repeat = false;
                                    });  
                                    
                                    on ({id: idBad_daueroffen, val: 'daueroffen'}, function (data) {
                                       repeat = false; // Einmalige Ansage
                                       //sayOpen(idBad_daueroffen, "Achtung Systemmeldung um " +d.getHours() + " Uhr und " + d.getMinutes() + " Minuten:", 1000, repeat);
                                       saySomething(idBad_daueroffen, 'Achtung. Das Badezimmerfenster ist schon lenger als 15 Minuten offen', repeat);
                                    });  
                                    
                                    on ({id: idBad_daueroffen, val: 'zu lang offen'}, function (data) {
                                        repeat = true; // Ansage wiederholen
                                       //sayOpen(idBad_daueroffen, "Achtung Systemmeldung um " +d.getHours() + " Uhr und " + d.getMinutes() + " Minuten:", 1000; repeat);
                                       saySomething(idBad_daueroffen, 'Das Fenster im Bad ist schon lenger als eine halbe Stunde offen. Bitte endlich mal zu machen.', repeat);
                                    });  
                                    
                                    //----------------------------------------- Waschmaschine und Trockner --------------------------------
                                    on ({id: idWaschmaschine, val: 'fertig'}, function (data) {
                                       saySomething(idWaschmaschine, 'Die Waschmaschine ist fertig', false); // nicht wiederholen
                                    });     
                                    
                                    on ({id: idTrockner, val: 'fertig'}, function (data) {
                                       saySomething(idTrockner, 'Der Trockner ist fertig', false); // nicht wiederholen
                                    });  
                                    
                                    function saySomething(idGeraet, text, wiederholung)
                                    {
                                       // 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);
                                    
                                         if (wiedeholung)
                                         {
                                          // 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)
                                             {
                                                log('Saying again: ' + text);
                                                setState(idSprache, text);
                                             }
                                             else
                                             {
                                                if (timer[idGeraet]) clearInterval(timer[idGeraet]);
                                                timer[idGeraet] = null;
                                             }
                                          }, 600000);
                                         }
                                       }
                                    
                                    }
                                    

                                    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 Antwort Letzte Antwort
                                    0
                                    • D Offline
                                      D Offline
                                      derrapf
                                      schrieb am zuletzt editiert von
                                      #39

                                      Hallo Pix

                                      Danke, dass Du Dich meiner annimmst.

                                      Dein Code zeigt aber den gleichen Effekt:

                                      Alle Sayings funktionieren. Nur das eine nicht:

                                      sayit.0	2015-11-15 21:15:02	info	sayit.0 Upload announce mp3 files
                                      sayit.0	2015-11-15 21:15:02	info	sayit.0 starting. Version 0.3.11 in /opt/iobroker/node_modules/iobroker.sayit
                                      bananapi	2015-11-15 21:14:58	info	host.bananapi instance system.adapter.sayit.0 started with pid 4849
                                      bananapi	2015-11-15 21:14:28	info	host.bananapi Restart adapter system.adapter.sayit.0 because enabled
                                      bananapi	2015-11-15 21:14:28	error	host.bananapi instance system.adapter.sayit.0 terminated with code 6 (uncaught exception)
                                      sayit.0	2015-11-15 21:14:27	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-15 21:14:27	error	uncaught exception: socket hang up
                                      sayit.0	2015-11-15 21:14:27	error	Error: connect EHOSTUNREACH at exports._errnoException (util.js:746:11) at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1010:19)
                                      sayit.0	2015-11-15 21:14:27	error	uncaught exception: connect EHOSTUNREACH
                                      sayit-0	2015-11-15 21:14:24	info	saying: Das Fenster im Bad ist schon lenger als eine halbe Stunde offen.
                                      hm-rega-0	2015-11-15 21:14:24	info	Got unexpected ID: hm-rega.0.37449
                                      javascript-0	2015-11-15 21:14:24	info	script.js.Test2: Saying: Das Fenster im Bad ist schon lenger als eine halbe Stunde offen.
                                      sayit-0	2015-11-15 21:14:13	info	saying: Achtung. Das Badezimmerfenster ist schon lenger als 15 Minuten offen
                                      javascript-0	2015-11-15 21:14:13	info	script.js.Test2: Saying: Achtung. Das Badezimmerfenster ist schon lenger als 15 Minuten offen
                                      hm-rega-0	2015-11-15 21:14:13	info	Got unexpected ID: hm-rega.0.37449
                                      sayit-0	2015-11-15 21:13:59	info	saying: Der Trockner ist fertig
                                      hm-rega-0	2015-11-15 21:13:59	info	Got unexpected ID: hm-rega.0.44879
                                      javascript-0	2015-11-15 21:13:59	info	script.js.Test2: Saying: Der Trockner ist fertig
                                      sayit-0	2015-11-15 21:13:51	info	saying: Die Waschmaschine ist fertig
                                      javascript-0	2015-11-15 21:13:51	info	script.js.Test2: Saying: Die Waschmaschine ist fertig
                                      

                                      Gruss Ralf

                                      1 Antwort Letzte Antwort
                                      0
                                      • P Offline
                                        P Offline
                                        pix
                                        schrieb am zuletzt editiert von
                                        #40

                                        Für mich liegt der Fehler im TTS-Adapter, nicht im Javascript.

                                        Das sind meine Einstellungen. EinsUnterschied zu Deinen aus diesem Beitrag (http://forum.iobroker.net/download/file … &mode=view) ist die Einstellung bei Typ.

                                        261_bildschirmfoto_2015-11-16_um_13.13.58.jpg

                                        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 Antwort Letzte Antwort
                                        0
                                        • D Offline
                                          D Offline
                                          derrapf
                                          schrieb am zuletzt editiert von
                                          #41

                                          Hallo Pix

                                          Bei mir sieht's anders aus: Typ ist "System" weil ja der Banana-Pi über die an ihm angeschlossenen Aktivboxen reden soll.

                                          Systemkommando ist leer und bei Ankündigung steht "keins"

                                          Und jetzt kommt der Hammer: Ich habe heute gefühlt ca. 1000 mal den Banana-Pi rebootet, weil er einfach kein Default-Gateway für's WLAN hatte. Manuell konnte man auf der Konsole mitsudo route add default gw 192.168.1.1 wlan0eines hinzufügen, aber nach dem Booten musste man diesen Befehl immer wieder von Hand eingeben. Ich habe zig Versuche mit````
                                          up route add default gw 192.168.1.1 dev wlan0

                                          
                                          Wie auch immer: Nachdem ich hier Erfolg verbuchen konnte, wollte ich nochmal Pix's Script untersuchen und testen.
                                          
                                          Und was soll ich sagen: Auf einmal funktioniert alles. Hä? Warum?? Wer soll das denn blicken?
                                          
                                          Hier nochmal der Code der geht:
                                          

                                          var idSprache = 'sayit.0.tts.text'; // Sprachausgabe Browser

                                          var idWaschmaschine = 'hm-rega.0.39968'; //STAT_Waschmaschine_fertig
                                          var idTrockner = 'hm-rega.0.44879'; //STAT_W.Trockner_fertig
                                          var idBad_daueroffen = 'hm-rega.0.37449'; //Badezimmer_Alarm_daueroffen. Werte: zu; daueroffen; zu lang offen

                                          var timer = {};
                                          var debug = true;
                                          var repeat = false; // bei Skriptstart ausschalten

                                          // Eigentlich reicht ein subscribe, in dem alle 3 Zustände abgefragt werden, aber zum Test mal so:
                                          on ({id: idBad_daueroffen, val: 'zu'}, function (data) {
                                          repeat = false;
                                          });

                                          on ({id: idBad_daueroffen, val: 'daueroffen'}, function (data) {
                                          repeat = false; // Einmalige Ansage
                                          //sayOpen(idBad_daueroffen, "Achtung Systemmeldung um " +d.getHours() + " Uhr und " + d.getMinutes() + " Minuten:", 1000, repeat);
                                          saySomething(idBad_daueroffen, 'Achtung. Das Badezimmerfenster ist schon lenger als 15 Minuten offen', repeat);
                                          });

                                          on ({id: idBad_daueroffen, val: 'zu lang offen'}, function (data) {
                                          repeat = true; // Ansage wiederholen
                                          //sayOpen(idBad_daueroffen, "Achtung Systemmeldung um " +d.getHours() + " Uhr und " + d.getMinutes() + " Minuten:", 1000; repeat);
                                          saySomething(idBad_daueroffen, 'Das Fenster im Bad ist schon lenger als eine halbe Stunde offen.', repeat);
                                          });

                                          //----------------------------------------- Waschmaschine und Trockner --------------------------------
                                          on ({id: idWaschmaschine, val: 'fertig'}, function (data) {
                                          saySomething(idWaschmaschine, 'Die Waschmaschine ist fertig', false); // nicht wiederholen
                                          });

                                          on ({id: idTrockner, val: 'fertig'}, function (data) {
                                          saySomething(idTrockner, 'Der Trockner ist fertig', false); // nicht wiederholen
                                          });

                                          function saySomething(idGeraet, text, wiederholung)
                                          {
                                          // 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);

                                           if (wiederholung)
                                           {
                                            // 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)
                                               {
                                                  log('Saying again: ' + text);
                                                  setState(idSprache, text);
                                               }
                                               else
                                               {
                                                  if (timer[idGeraet]) clearInterval(timer[idGeraet]);
                                                  timer[idGeraet] = null;
                                               }
                                            }, 600000);
                                           }
                                          

                                          }

                                          }

                                          
                                          Ich bin mal gespannt wie lange.
                                          
                                          Jetzt teste ich mal ob es wirklich an der Länge des Textes liegt.
                                          
                                          Werde berichten.
                                          
                                          Gruss Ralf
                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          795

                                          Online

                                          32.4k

                                          Benutzer

                                          81.6k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe