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.2k

  • 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.
  • 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
      • D Offline
        D Offline
        derrapf
        schrieb am zuletzt editiert von
        #42

        … tatsächlich. Habe jetzt den Satz verlängert auf "Achtung. Das Badezimmerfenster ist schon lenger als eine halbe Stunde offen. Bitte zu machen"

        Und schon knallts wieder:

        host-bananapi	2015-11-16 23:10:05	info	Restart adapter system.adapter.sayit.0 because enabled
        host-bananapi	2015-11-16 23:10:05	error	instance system.adapter.sayit.0 terminated with code 6 (uncaught exception)
        TypeError:	2015-11-16 23:10:05	error	at FSReqWrap.oncomplete (fs.js:95:15)
        TypeError:	2015-11-16 23:10:05	error	at /opt/iobroker/node_modules/iobroker.sayit/main.js:276:21
        TypeError:	2015-11-16 23:10:05	error	at getLength (/opt/iobroker/node_modules/iobroker.sayit/main.js:164:27)
        TypeError:	2015-11-16 23:10:05	error	at /opt/iobroker/node_modules/iobroker.sayit/main.js:277:39
        TypeError:	2015-11-16 23:10:05	error	at /opt/iobroker/node_modules/iobroker.sayit/main.js:415:21
        TypeError:	2015-11-16 23:10:05	error	at cacheFile (/opt/iobroker/node_modules/iobroker.sayit/main.js:397:5)
        TypeError:	2015-11-16 23:10:05	error	at sayItSystem (/opt/iobroker/node_modules/iobroker.sayit/main.js:672:9)
        TypeError:	2015-11-16 23:10:05	error	at sayFinished (/opt/iobroker/node_modules/iobroker.sayit/main.js:203:45)
        TypeError:	2015-11-16 23:10:05	error	Cannot read property 'text' of undefined
        uncaught	2015-11-16 23:10:05	error	exception: Cannot read property 'text' of undefined
        sayit-0	2015-11-16 23:10:05	warn	Received file is too short:
        sayit-0	2015-11-16 23:10:05	warn	Cannot read length of file /opt/iobroker/node_modules/iobroker.sayit/say.mp3
        sayit-0	2015-11-16 23:10:05	warn	Received file is too short:
        sayit-0	2015-11-16 23:10:04	info	saying: Achtung. Das Badezimmerfenster ist schon lenger als eine halbe Stunde offen. Bitte zu machen
        

        Gruss Ralf

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

          Hallo Pix, Bluefox

          Ich habe, nachdem jetzt das Script läuft (mit kurzen Sätzen) ein weiteres Problem:

          Das Script wird getriggert, wenn ich im Reiter "Zustände" den Wert der Systemvariable ändere.

          Wenn allerdings die CCU die Systemvariable ändert wird das Script NICHT getriggert.

          Ich habe die Sysvar auch mal manuell im HQ-WebUI geändert: Ergebnis: IOBroker zeigt die Änderung unter "Zustände" korrekt an, aber das Script läuft nicht los.

          Es läuft also nur, wenn ich die Varible in IOBroker selber ändere.

          Gruss Ralf

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

            @derrapf:

            Hallo Pix, Bluefox

            Ich habe, nachdem jetzt das Script läuft (mit kurzen Sätzen) ein weiteres Problem:

            Das Script wird getriggert, wenn ich im Reiter "Zustände" den Wert der Systemvariable ändere.

            Wenn allerdings die CCU die Systemvariable ändert wird das Script NICHT getriggert.

            Ich habe die Sysvar auch mal manuell im HQ-WebUI geändert: Ergebnis: IOBroker zeigt die Änderung unter "Zustände" korrekt an, aber das Script läuft nicht los.

            Es läuft also nur, wenn ich die Varible in IOBroker selber ändere.

            Gruss Ralf `
            Vielleicht stimmt Datentyp nicht. Kannst du mal dein Skript erweitern:

            on('DEINE_TRIGGER_VARIABLE', function (obj) {
                console.log(JSON.stringify(obj.newState));
            });
            
            

            und posten hier was kommt?

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

              Hallo Bluefox

              Habe folgende Ausgabe:

              javascript.0	2015-11-22 19:08:41	info	javascript.0 script.js.Test2: {"val":2,"ts":1448215722,"ack":true,"lc":1448215706,"from":"system.adapter.hm-rega.0"}
              javascript.0	2015-11-22 19:07:42	info	javascript.0 script.js.Test2: {"val":1,"ts":1448215662,"ack":true,"lc":1448215655,"from":"system.adapter.hm-rega.0"}
              javascript-0	2015-11-22 19:05:12	info	script.js.Test2: {"val":0,"ts":1448215512,"ack":true,"lc":1448215493,"from":"system.adapter.hm-rega.0"}
              sayit-0	2015-11-22 19:04:51	info	saying: Achtung. Das Badezimmerfenster ist schon lenger als 15 Minuten offen
              hm-rega-0	2015-11-22 19:04:51	info	State 37449 daueroffen
              javascript-0	2015-11-22 19:04:51	info	script.js.Test2: {"val":"daueroffen","ts":1448215491,"ack":false,"lc":1448215491,"from":"system.adapter.admin.0"}
              javascript-0	2015-11-22 19:04:51	info	script.js.Test2: Saying: Achtung. Das Badezimmerfenster ist schon lenger als 15 Minuten offen
              javascript-0	2015-11-22 19:04:42	info	script.js.Test2: {"val":2,"ts":1448215482,"ack":true,"lc":1448215459,"from":"system.adapter.hm-rega.0"}
              javascript-0	2015-11-22 19:04:01	info	script.js.Test2: registered 6 subscriptions and 0 schedules
              javascript-0	2015-11-22 19:04:00	info	Start javascript script.js.Test2
              

              Wurde aber wieder nur getriggert indem ich im IOBroker die Variable geändert habe.

              Die letzten zwei JSON Augaben sind durch die Änderung der Variablen im HQ-WebUI entstanden. D.h. das Script scheint Deinen Triger ausgeführt zu haben, aber nicht meine. D.h. die Triggerbedingungen val und oder change:"ne" funktuonieren nicht?

              Gruss Ralf

              1 Antwort Letzte Antwort
              0
              • paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #46

                @derrapf:

                D.h. die Triggerbedingungen val und oder change:"ne" funktuonieren nicht? `
                Die Triggerbedingungen funktionieren schon. Allerdings ist val vom Typ "number" (0, 1, 2) und nicht vom Typ "string" (z.B. "daueroffen").

                Wenn Du per admin einen string reinschreibst, wird dieser in newState.val übernommen, da offenbar keine Typprüfung erfolgt. Deshalb wird in diesem Fall getriggert.

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

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

                  Hallo Pix Bluefox

                  Ich glaube irgendwie hängt alles an den Triggerbedingungen;

                  Folgendermassen hat es jetzt funktioniert: Ich triggere einfach (wie im letzten BlueFox-Beispiel) auf die Variable. Ohne irgendwelche Bedingungen.

                  Dann frage ich den Zustand der Variablen von Hand ab und starte das entsprechende Unterprpgramm. Ist nicht ganz so elegant aber funktioniert nun:

                  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
                  
                  on(idBad_daueroffen, function (obj) 
                  {
                     console.log(JSON.stringify(obj.newState));
                     repeat = false; // Einmalige Ansage
                     value = obj.newState.val;
                     log('Get State=' + value);
                  
                     if (value == 1)
                     {
                       saySomething(idBad_daueroffen, 'Achtung. Das Badezimmerfenster ist schon lenger als 15 Minuten offen', repeat);
                     }
                     else if (value == 2)
                     {
                       repeat = true;
                       saySomething(idBad_daueroffen, 'Das Badezimmerfenster ist schon lenger als eine halbe Stunde offen', repeat);
                     }
                  }); 
                  
                  //----------------------------------------- Waschmaschine und Trockner --------------------------------
                  
                  on(idWaschmaschine, function (obj) 
                  {
                     console.log(JSON.stringify(obj.newState));
                     value = obj.newState.val;
                     log('Get State=' + value);
                  
                     if (value == 0)   {
                        saySomething(idTrockner, 'Die Waschmaschine ist fertig', true); //  wiederholen
                     }
                  }); 
                  
                  on(idTrockner, function (obj) 
                  {
                     console.log(JSON.stringify(obj.newState));
                     value = obj.oldState.val;
                     log('Get State=' + value);
                  
                     if (value == 0)   {
                        saySomething(idTrockner, 'Der Trockner ist fertig', true); //  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);
                       }
                     }
                  
                  }
                  

                  Nichtsdestotrotz solten wir vielleicht doch klären und herausfinden warum die Trigger nicht so funktionieren wie man sich das vorstelt. Das hilft sicher auch Anderen.

                  Gruss Ralf

                  1 Antwort Letzte Antwort
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #48

                    So sollte es auch funktionieren (Beispiel Waschmaschine):

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

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

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

                      Hallo Paul, Hallo Bluefox, Hall Pix.

                      ZUm Beweis, dass es so wie Paul vorgeschlagen hat nicht geht, hab ich seinen Code eingebaut und weiter experimentiert.

                      Ich glaube ich habe es inzwischen geschnallt was nicht funktioniert:

                      Die Systemvariable ist ja eine Liste von Strings. Beispielsweise "aus, läuft, fertig". Die Indizes des zughörigen "Arrays"

                      sind 0,1 und 2

                      Jetzt kommt der Witz:

                      Wenn ich nach dem String triggere, also

                      on ({id: idWaschmaschine, val: "fertig"}, function () 
                      

                      dann funktioniert das nur wenn ich die Variable im IOBroker ändere, aber nicht wenn die CCU diese ändert.

                      Wenn ich wie folgt triggere

                      on ({id: idWaschmaschine, val: 2}, function () 
                      

                      Dann funktioniert es im IOBroker nicht mehr, dafür aber wenn die CCU die Variable ändert-

                      Hier läuft irgendwas gründlich schief. Aber den Fehler haben wir indirekt schon ein paar Seiten vorher entdeckt. Ich dacht nur nicht, dass es hier einen Unterschied gibt wer! die Variable setzt.

                      Wer kann sich denn diesen Bug mal angicken und fixen? Und: Könnt ihr das reproduzieren oder ist das nur bei mir so?

                      Gruss Ralf

                      1 Antwort Letzte Antwort
                      0
                      • paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von
                        #50

                        @derrapf:

                        Dann funktioniert es im IOBroker nicht mehr, dafür aber wenn die CCU die Variable ändert- `
                        Welche Version von ioBroker.admin verwendest Du ? Ab Version 0.6.4 wurde dies für Multistate-Datenpunkte (Werteliste) gefixt.

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

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

                          Hallo Paul

                          @paul53:

                          Welche Version von ioBroker.admin verwendest Du ? Ab Version 0.6.4 wurde dies für Multistate-Datenpunkte (Werteliste) gefixt. `
                          Ich habe hier 0.5.11

                          Das ist die Version die mit Hormoran's fertigem Image kommt.

                          Dann date ich denn wohl mal up. Mal sehen ob sich dann was ändert.

                          edit: Raaa! Nach dem Update sind alle meine Scripte weg!!!

                          Es lassen sich auch keine mehr hinzufügen. Was ist denn da schief gegangen? Kann ich noch was retten? Wo wären denn die Scripte gewesen? Kann ich ev. per Winscp noch was finden?

                          Noch eine Frage: Kann ich den Sayit direkt über html quatschen lassen?

                          So wie früher bei CCU.IO?

                          Da konnte man ja z.B. in der CCU folgendes programmieren

                          string url="'http://192.168.111.171:8080/api/set/72910/?value="blablabla"'";
                          dom.GetObject("CUxD.CUX2801002:1.CMD_EXEC").State("wget -q -O /dev/null " # url);
                          
                          

                          Und dann hat er schon gesprochen.

                          Wie geht denn das beim IOBroker?

                          Gruss Ralf
                          743_bild1.jpg

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

                            Hallo?

                            Jemand da?

                            Lasst mich bitte nicht hängen. Irgendwie hab ich den IOBroker kaputt upgedatet.

                            Bevor ich jetzt alles platt mache würde ich gerne noch retten was zu retten ist…

                            Ich hoffe jemand kann mir da helfen.

                            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

                            826

                            Online

                            32.4k

                            Benutzer

                            81.5k

                            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