Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Gelöst: WARN in Script

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Gelöst: WARN in Script

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

      @michihorn
      Existieren die Datenpunkte mit den IDs 'javascript.0.Rolladen.Zeitsteuerung.ZWEI.Nr' bis
      'javascript.0.Rolladen.Zeitsteuerung.FÜNF.Nr' ?

      M 1 Reply Last reply Reply Quote 0
      • S
        stephan61 last edited by

        Hallo Michihorn
        Bin nicht so fit in Javascript aber ich glaube in den Zeilen fehl 86 usw fehlt vor Nr Var sowie in Zeile 79

        var Nr = Status.substr(1, 1);

        Gruß Stephan

        paul53 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @stephan61 last edited by

          @stephan61 sagte:

          fehlt vor Nr Var sowie in Zeile 79

          Nein, eine Variable soll nur einmal deklariert werden.

          1 Reply Last reply Reply Quote 0
          • M
            michihorn @paul53 last edited by

            @paul53 Ja alles da
            Unbenannt2.JPG

            paul53 2 Replies Last reply Reply Quote 0
            • paul53
              paul53 @michihorn last edited by paul53

              @michihorn
              Weshalb erzeugst Du die Datenpunkte alle 2 Minuten neu ? Einmal genügt doch !

              Du deklarierst die Variablen Statuswert und Nr innerhalb der Schedule-Callback-Funktion. Damit sind die Variablen in dieser Funktion lokal, also unnütz deklariert, weil sie in dieser Funktion nicht verwendet werden.
              Lösche besser Zeilen 1 und 14 !

                      var Kanal = RL.substr(8, 2);
              

              Kanal ist also ein String ! Weiter unten vergleichst Du Kanal mit Zahlen.

              Hat es einen Grund, warum Du ausgerechnet mit den Zahlen 01, 02, 04, 08 und 10 vergleichst ?

              M 2 Replies Last reply Reply Quote 0
              • paul53
                paul53 @michihorn last edited by paul53

                @michihorn
                Versuche es mal so:

                createState('Rolladen.WZ_Links');
                createState('Rolladen.WZ_Rechts');
                createState('Rolladen.EZ');
                createState('Rolladen.Küche');
                createState('Rolladen.WC');
                createState('Rolladen.Move_WZ_Links');
                createState('Rolladen.Move_WZ_Rechts');
                createState('Rolladen.Move_EZ');
                createState('Rolladen.Move_Küche');
                createState('Rolladen.Move_WC');
                
                var Statuswert;
                var Status;
                var Nr;
                var Kanal;
                
                function Rolladen(rollo, zeit) {
                      setState('javascript.0.Rolladen.' + rollo, Statuswert, true);
                      setState('javascript.0.Rolladen.Move_' + rollo, Status, true);
                      setState('javascript.0.Rolladen.Zeitsteuerung.' + zeit + '.Nr', Nr, true);
                      log(Kanal + ' ' + rollo + ' ' + Status + ' ' + Statuswert);
                }
                
                on(id: 'hm-rpc.1.CUX4000002.6.RCVS', function(dp) {
                      var RL = dp.state.val;
                      Kanal = parseInt(RL.substr(8, 2), 16);
                      Status = RL.substr(10, 2);
                      Nr = parseInt(Status, 16);
                
                      if (Status == "00") Statuswert = "No Information";
                      else if (Status == "01") Statuswert = "OBEN";
                      else if (Status == "02") Statuswert = "UNTEN";
                      else if (Status == "03") Statuswert = "Intermediate position stop";
                      else if (Status == "04") Statuswert = "Tilt/ventilation position stop";
                      else if (Status == "05") Statuswert = "Blocking";
                      else if (Status == "06") Statuswert = "Overheated";
                      else if (Status == "07") Statuswert = "Timeout";
                      else if (Status == "08") Statuswert = "Start to move up";
                      else if (Status == "09") Statuswert = "Start to move down";
                      else if (Status == "0A") Statuswert = "Fährt AUF";
                      else if (Status == "0B") Statuswert = "Fährt AB";
                      else if (Status == "0D") Statuswert = "Stopped in undefined position";
                      else if (Status == "0E") Statuswert = "Top position stop which is tilt position";
                      else if (Status == "0F") Statuswert = "Bottom position stop which is intermediate position";
                      else if (Status == "10") Statuswert = "Switching devices switched off";
                      else if (Status == "11") Statuswert = "Switching devices switched on";
                
                      if (Kanal & 1) Rolladen('WZ_Links', 'EINS');
                      if (Kanal & 2) Rolladen('WZ_Rechts', 'ZWEI');
                      if (Kanal & 4) Rolladen('EZ', 'DREI');
                      if (Kanal & 8) Rolladen('Küche', 'VIER');
                      if (Kanal & 16) Rolladen('WC', 'FÜNF');
                });
                
                1 Reply Last reply Reply Quote 0
                • M
                  michihorn @paul53 last edited by

                  @paul53 Ich checke alle 2 Minuten den Status den mir der Elero-Stick anbietet. Könnte ja sein das ein Rollo per Handfernbedienung betätigt wird. Der Kanal ist das entsprechende Rollo, eigentlich eine Zahl, ich habe mehrere Versuche gemacht diese Warnmeldung raus zu bekommen, daher ist es wohl noch einmal eine Zahl und da wieder ein String.

                  paul53 1 Reply Last reply Reply Quote 0
                  • M
                    michihorn @paul53 last edited by

                    @paul53 sagte in WARN in Script:

                    Hat es einen Grund, warum Du ausgerechnet mit den Zahlen 01, 02, 04, 08 und 10 vergleichst ?

                    Das gibt die Elero Doku so vor:
                    Easy Control Transmitter Stick.pdf

                    1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @michihorn last edited by

                      @michihorn sagte:

                      Ich checke alle 2 Minuten den Status den mir der Elero-Stick anbietet.

                      Das machst Du im 2-Minuten-Schedule nicht, sondern es wird nur createState() (Datenpunkte erzeugen) ausgeführt.

                      M 1 Reply Last reply Reply Quote 0
                      • M
                        michihorn last edited by michihorn

                        Stimmt die Schedule sollte direkt vor dem eigentlichen Script sein.

                        1 Reply Last reply Reply Quote 0
                        • M
                          michihorn @paul53 last edited by

                          @paul53 DerDatenpunkt "hm-rpc.1.CUX4000002.6.RCVS" wird von den Elero-Stick geschrieben, dort steht der Status des jeweiligen Rollo drin.

                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @michihorn last edited by

                            @michihorn sagte:

                            DerDatenpunkt "hm-rpc.1.CUX4000002.6.RCVS" wird von den Elero-Stick geschrieben

                            Der Datenpunkt dient als Trigger, dann solltest Du kein Schedule verwenden.

                            1 Reply Last reply Reply Quote 0
                            • M
                              michihorn last edited by

                              Stimmt den habe ich gerade schon raus geworfen reagiert ja auf "ne"

                              1 Reply Last reply Reply Quote 0
                              • M
                                michihorn last edited by michihorn

                                Das Script sieht nun wie folgt aus:

                                createState('Rolladen.WZ_Links');
                                createState('Rolladen.WZ_Rechts');
                                createState('Rolladen.EZ');
                                createState('Rolladen.Küche');
                                createState('Rolladen.WC');
                                createState('Rolladen.Move_WZ_Links');
                                createState('Rolladen.Move_WZ_Rechts');
                                createState('Rolladen.Move_EZ');
                                createState('Rolladen.Move_Küche');
                                createState('Rolladen.Move_WC');
                                var Statuswert;
                                var Status;
                                var Nr;
                                var Kanal;
                                
                                on({id:'hm-rpc.1.CUX4000002.6.RCVS', change: "ne"},
                                    function(Rolladen) {
                                        var RL = getState("hm-rpc.1.CUX4000002.6.RCVS").val;
                                        Kanal = RL.substr(8, 2);
                                        Status = RL.substr(10, 2);
                                
                                    if (Status == "00") Statuswert = "No Information";
                                      else if (Status == "01") Statuswert = "OBEN";
                                      else if (Status == "02") Statuswert = "UNTEN";
                                      else if (Status == "03") Statuswert = "Intermediate position stop";
                                      else if (Status == "04") Statuswert = "Tilt/ventilation position stop";
                                      else if (Status == "05") Statuswert = "Blocking";
                                      else if (Status == "06") Statuswert = "Overheated";
                                      else if (Status == "07") Statuswert = "Timeout";
                                      else if (Status == "08") Statuswert = "Start to move up";
                                      else if (Status == "09") Statuswert = "Start to move down";
                                      else if (Status == "0A") Statuswert = "Fährt AUF";
                                      else if (Status == "0B") Statuswert = "Fährt AB";
                                      else if (Status == "0D") Statuswert = "Stopped in undefined position";
                                      else if (Status == "0E") Statuswert = "Top position stop which is tilt position";
                                      else if (Status == "0F") Statuswert = "Bottom position stop which is intermediate position";
                                      else if (Status == "10") Statuswert = "Switching devices switched off";
                                      else if (Status == "11") Statuswert = "Switching devices switched on";
                                      
                                        if (Kanal == "01") {
                                            setState('javascript.0.Rolladen.WZ_Links', Statuswert);
                                            setState('javascript.0.Rolladen.Move_WZ_Links', Status);
                                            var Nr = Status.substr(1, 1);
                                            setState('javascript.0.Rolladen.Zeitsteuerung.EINS.Nr',Nr);
                                                        log(Kanal + " WZ Links " + Status + " " + Statuswert);
                                        } else {
                                            if (Kanal == "02") {
                                                setState('javascript.0.Rolladen.WZ_Rechts', Statuswert);
                                                setState('javascript.0.Rolladen.Move_WZ_Rechts', Status);
                                                Nr = Status.substr(1, 1);
                                                setState('javascript.0.Rolladen.Zeitsteuerung.ZWEI.Nr',Nr);
                                                log(Kanal + " WZ Rechts " + Status + " " + Statuswert);
                                            } else {
                                                if (Kanal == "04") {
                                                    setState('javascript.0.Rolladen.EZ', Statuswert);
                                                    setState('javascript.0.Rolladen.Move_EZ', Status);
                                                    Nr = Status.substr(1, 1);
                                                    setState('javascript.0.Rolladen.Zeitsteuerung.DREI.Nr',Nr); 
                                                    log(Kanal + " EZ " + Status + " " + Statuswert);
                                                } else {
                                                    if (Kanal == "08") {
                                                        setState('javascript.0.Rolladen.Küche', Statuswert);
                                                        setState('javascript.0.Rolladen.Move_Küche', Status);
                                                         Nr = Status.substr(1, 1);
                                                        setState('javascript.0.Rolladen.Zeitsteuerung.VIER.Nr',Nr);
                                                        log(Kanal + " Küche " + Status + " " + Statuswert);
                                                    } else {
                                                        if (Kanal == "10") {
                                                            setState('javascript.0.Rolladen.WC', Statuswert);
                                                            setState('javascript.0.Rolladen.Move_WC', Status);
                                                            Nr = Status.substr(1, 1);
                                                            setState('javascript.0.Rolladen.Zeitsteuerung.FÜNF.Nr',Nr); 
                                                            log(Kanal + " WC " + Status + " " + Statuswert);
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                       
                                    });
                                
                                

                                Die Warnmeldungen kommen bei Zeile 17, 21, 25, 29
                                Anbei das LOG-File
                                log.txt

                                paul53 1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @michihorn last edited by paul53

                                  @michihorn sagte:

                                  Die Warnmeldungen kommen bei Zeile 17, 21, 25, 29

                                  Nein, Warnungen kommen bei den setState('javascript.0.Rolladen.Zeitsteuerung.ZWEI.Nr',Nr) bis FÜNF. Sind die Datenpunkte vom Typ "Zeichenkette"(string) ? Das sollten sie sein.
                                  17, 21, 25, 29 sind die Zeichenpositionen in der Zeile.

                                  1 Reply Last reply Reply Quote 0
                                  • M
                                    michihorn last edited by

                                    Doch schon:
                                    Unbenannt3.JPG

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      michihorn last edited by michihorn

                                      Jetzt klappt es:
                                      Hab CreateState so ausgedrückt: "createState("javascript.0.Rolladen.Zeitsteuerung.FÜNF.Nr");"
                                      Fehler war so: "createState("javascript.0.Rolladen.Zeitsteuerung.FÜNF.Nr",{read: true,write: true,desc: "Berechneter Wert,",type: "string",min:'0', max:'12',def:1});"

                                      Danke Paul53

                                      paul53 1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 @michihorn last edited by

                                        @michihorn
                                        Ja, min: und max: machen bei Strings keinen Sinn.

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        393
                                        Online

                                        31.8k
                                        Users

                                        79.9k
                                        Topics

                                        1.3m
                                        Posts

                                        javascript
                                        3
                                        19
                                        502
                                        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