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.
    • D
      derrapf last edited by

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

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

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

            @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.

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

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

                So sollte es auch funktionieren (Beispiel Waschmaschine):

                on ({id: idWaschmaschine, val: 0}, function () {
                   saySomething(idWaschmaschine, 'Die Waschmaschine ist fertig', false); // nicht wiederholen
                });
                
                1 Reply Last reply Reply Quote 0
                • D
                  derrapf last edited by

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

                    @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.

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

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

                        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 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        820
                        Online

                        31.7k
                        Users

                        79.7k
                        Topics

                        1.3m
                        Posts

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