Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [erledigt][Blockly] Homematic Rollo Unreach

    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

    [erledigt][Blockly] Homematic Rollo Unreach

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

      Hallo liebe Community,

      ich habe mir per Blockly ein Script gebaut, welches bei "nicht erreichen" eines Rollos (UNREACH) per Telegram eine Nachricht schicken soll und versuchen soll, den Befehl für "rauf" (level 100%) bzw. "runter" (level 0%) max 10 x ausführen, um danach einen neuen Status per Telegram zu schicken.

      Aus irgend einem Grund scheine ich mir hiermit einen Loop eingebaut zu haben, was meinen RPI3 zum Absturz bringt. Im Log von IoBroker siehe ich nur, dass der DUTY_CYCLE erreicht wird bevor er die Grätsche macht.

      Könnt ihr mir hierbei helfen?

      var kz, timeout, bz, timeout2, wc, timeout3, ezl, timeout4, hwr, timeout5, sz, timeout6, wz, timeout7, yz, timeout8, bu, timeout9, ku, timeout10, ezr, timeout11;
      
      on({id: new RegExp('hm-rpc\\.1\\.001118A98B35E3\\.0\\.UNREACH' + "|" + 'hm-rpc\\.1\\.001118A98B35F7\\.0\\.UNREACH' + "|" + 'hm-rpc\\.1\\.001118A98B37E3\\.0\\.UNREACH' + "|" + 'hm-rpc\\.1\\.001118A98B382F\\.0\\.UNREACH' + "|" + 'hm-rpc\\.1\\.001118A98B3868\\.0\\.UNREACH' + "|" + 'hm-rpc\\.1\\.001118A98B38B1\\.0\\.UNREACH' + "|" + 'hm-rpc\\.1\\.001118A98B3906\\.0\\.UNREACH' + "|" + 'hm-rpc\\.1\\.001118A98B390F\\.0\\.UNREACH' + "|" + 'hm-rpc\\.1\\.001118A98B3937\\.0\\.UNREACH' + "|" + 'hm-rpc\\.1\\.001118A98B3947\\.0\\.UNREACH' + "|" + 'hm-rpc\\.1\\.001118A98B3A5F\\.0\\.UNREACH'), val: true}, function (obj) {
          // Kinderzimmer
        if (getState("hm-rpc.1.001118A98B35E3.0.UNREACH").val == true) {
          setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung: Rollo Kinderzimmer');
          kz = 1;
          while (getState("hm-rpc.1.001118A98B35E3.0.UNREACH").val == true || kz <= 10) {
            timeout = setTimeout(function () {
              if (getState("javascript.0.Rollo_Soll_Unten").val == false) {
                setState("hm-rpc.1.001118A98B3947.4.LEVEL"/*Rollo_KUE:4.LEVEL*/, 100);
              } else {
                setState("hm-rpc.1.001118A98B3947.4.LEVEL"/*Rollo_KUE:4.LEVEL*/, 0);
              }
              kz = kz + 1;
            }, 60000);
          }
          if (getState("hm-rpc.1.001118A98B35E3.0.UNREACH").val == false) {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung behoben: Rollo Kinderzimmer');
          } else {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung nicht behoben: Rollo Kinderzimmer');
          }
        }
        // Badezimmer
        if (getState("hm-rpc.1.001118A98B35F7.0.UNREACH").val == true) {
          setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung: Rollo Badezimmer');
          bz = 1;
          while (getState("hm-rpc.1.001118A98B35F7.0.UNREACH").val == true || bz <= 10) {
            timeout2 = setTimeout(function () {
              if (getState("javascript.0.Rollo_Soll_Unten").val == false) {
                setState("hm-rpc.1.001118A98B35F7.4.LEVEL"/*Rollo_BZ:4.LEVEL*/, 100);
              } else {
                setState("hm-rpc.1.001118A98B35F7.4.LEVEL"/*Rollo_BZ:4.LEVEL*/, 0);
              }
              bz = bz + 1;
            }, 60000);
          }
          if (getState("hm-rpc.1.001118A98B35F7.0.UNREACH").val == false) {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung behoben: Rollo Badezimmer');
          } else {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung nicht behoben: Rollo Badezimmer');
          }
        }
        // WC
        if (getState("hm-rpc.1.001118A98B37E3.0.UNREACH").val == true) {
          setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung: Rollo WC');
          wc = 1;
          while (getState("hm-rpc.1.001118A98B37E3.0.UNREACH").val == true || wc <= 10) {
            timeout3 = setTimeout(function () {
              if (getState("javascript.0.Rollo_Soll_Unten").val == false) {
                setState("hm-rpc.1.001118A98B37E3.4.LEVEL"/*Rollo_WC:4.LEVEL*/, 100);
              } else {
                setState("hm-rpc.1.001118A98B37E3.4.LEVEL"/*Rollo_WC:4.LEVEL*/, 0);
              }
              wc = wc + 1;
            }, 60000);
          }
          if (getState("hm-rpc.1.001118A98B37E3.0.UNREACH").val == false) {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung behoben:  Rollo WC');
          } else {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung nicht behoben: Rollo WC');
          }
        }
        // Esszimmer links
        if (getState("hm-rpc.1.001118A98B382F.0.UNREACH").val == true) {
          setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung: Rollo Esszimmer links');
          ezl = 1;
          while (getState("hm-rpc.1.001118A98B382F.0.UNREACH").val == true || ezl <= 10) {
            timeout4 = setTimeout(function () {
              if (getState("javascript.0.Rollo_Soll_Unten").val == false) {
                setState("hm-rpc.1.001118A98B382F.4.LEVEL"/*Rollo_EZ_links:4.LEVEL*/, 100);
              } else {
                setState("hm-rpc.1.001118A98B382F.4.LEVEL"/*Rollo_EZ_links:4.LEVEL*/, 0);
              }
              ezl = ezl + 1;
            }, 60000);
          }
          if (getState("hm-rpc.1.001118A98B382F.0.UNREACH").val == false) {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung behoben: Rollo Esszimmer links');
          } else {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung nicht behoben: Rollo Esszimmer links');
          }
        }
        // Hauswirtschaftsraum
        if (getState("hm-rpc.1.001118A98B3868.0.UNREACH").val == true) {
          setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung: Rollo Hauswirtschaftsraum');
          hwr = 1;
          while (getState("hm-rpc.1.001118A98B3868.0.UNREACH").val == true || hwr <= 10) {
            timeout5 = setTimeout(function () {
              if (getState("javascript.0.Rollo_Soll_Unten").val == false) {
                setState("hm-rpc.1.001118A98B3868.4.LEVEL"/*Rollo_HWR:4.LEVEL*/, 100);
              } else {
                setState("hm-rpc.1.001118A98B3868.4.LEVEL"/*Rollo_HWR:4.LEVEL*/, 0);
              }
              hwr = hwr + 1;
            }, 60000);
          }
          if (getState("hm-rpc.1.001118A98B3868.0.UNREACH").val == false) {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung behoben: Rollo Hauswirtschaftsraum');
          } else {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung nicht behoben: Rollo Hauswirtschaftsraum');
          }
        }
        // Schlafzimmer
        if (getState("hm-rpc.1.001118A98B38B1.0.UNREACH").val == true) {
          setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung: Rollo Schlafzimmer');
          sz = 1;
          while (getState("hm-rpc.1.001118A98B38B1.0.UNREACH").val == true || sz <= 10) {
            timeout6 = setTimeout(function () {
              if (getState("javascript.0.Rollo_Soll_Unten").val == false) {
                setState("hm-rpc.1.001118A98B38B1.4.LEVEL"/*Rollo_SZ:4.LEVEL*/, 100);
              } else {
                setState("hm-rpc.1.001118A98B38B1.4.LEVEL"/*Rollo_SZ:4.LEVEL*/, 60);
              }
              sz = sz + 1;
            }, 60000);
          }
          if (getState("hm-rpc.1.001118A98B38B1.0.UNREACH").val == false) {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung behoben: Rollo Schlafzimmer');
          } else {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung nicht behoben: Rollo Schlafzimmer');
          }
        }
        // Wohnzimmer
        if (getState("hm-rpc.1.001118A98B3906.0.UNREACH").val == true) {
          setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung: Rollo Wohnzimmer');
          wz = 1;
          while (getState("hm-rpc.1.001118A98B3906.0.UNREACH").val == true || wz <= 10) {
            timeout7 = setTimeout(function () {
              if (getState("javascript.0.Rollo_Soll_Unten").val == false) {
                setState("hm-rpc.1.001118A98B3906.4.LEVEL"/*Rollo_WZ:4.LEVEL*/, 100);
              } else {
                setState("hm-rpc.1.001118A98B3906.4.LEVEL"/*Rollo_WZ:4.LEVEL*/, 0);
              }
              wz = wz + 1;
            }, 60000);
          }
          if (getState("hm-rpc.1.001118A98B3906.0.UNREACH").val == false) {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung behoben: Rollo Wohnzimmer');
          } else {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung nicht behoben: Rollo Wohnzimmer');
          }
        }
        // Yvonne´s Zimmer
        if (getState("hm-rpc.1.001118A98B390F.0.UNREACH").val == true) {
          setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung: Rollo Yvonne´s Zimmer');
          yz = 1;
          while (getState("hm-rpc.1.001118A98B390F.0.UNREACH").val == true || yz <= 10) {
            timeout8 = setTimeout(function () {
              if (getState("javascript.0.Rollo_Soll_Unten").val == false) {
                setState("hm-rpc.1.001118A98B390F.4.LEVEL"/*Rollo_YZ:4.LEVEL*/, 100);
              } else {
                setState("hm-rpc.1.001118A98B390F.4.LEVEL"/*Rollo_YZ:4.LEVEL*/, 0);
              }
              yz = yz + 1;
            }, 60000);
          }
          if (getState("hm-rpc.1.001118A98B390F.0.UNREACH").val == false) {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung behoben: Rollo Yvonne´s Zimmer');
          } else {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung nicht behoben: Rollo Yvonne´s Zimmer');
          }
        }
        // Büro
        if (getState("hm-rpc.1.001118A98B3937.0.UNREACH").val == true) {
          setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung: Rollo Büro');
          bu = 1;
          while (getState("hm-rpc.1.001118A98B3937.0.UNREACH").val == true || bu <= 10) {
            timeout9 = setTimeout(function () {
              if (getState("javascript.0.Rollo_Soll_Unten").val == false) {
                setState("hm-rpc.1.001118A98B3937.4.LEVEL"/*Rollo_BUE:4.LEVEL*/, 100);
              } else {
                setState("hm-rpc.1.001118A98B3937.4.LEVEL"/*Rollo_BUE:4.LEVEL*/, 0);
              }
              bu = bu + 1;
            }, 60000);
          }
          if (getState("hm-rpc.1.001118A98B3937.0.UNREACH").val == false) {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung behoben: Rollo Büro');
          } else {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung nicht behoben: Rollo Büro');
          }
        }
        // Küche
        if (getState("hm-rpc.1.001118A98B3947.0.UNREACH").val == true) {
          setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung: Rollo Küche');
          ku = 1;
          while (getState("hm-rpc.1.001118A98B3947.0.UNREACH").val == true || ku <= 10) {
            timeout10 = setTimeout(function () {
              if (getState("javascript.0.Rollo_Soll_Unten").val == false) {
                setState("hm-rpc.1.001118A98B3947.4.LEVEL"/*Rollo_KUE:4.LEVEL*/, 100);
              } else {
                setState("hm-rpc.1.001118A98B3947.4.LEVEL"/*Rollo_KUE:4.LEVEL*/, 0);
              }
              ku = ku + 1;
            }, 60000);
          }
          if (getState("hm-rpc.1.001118A98B3947.0.UNREACH").val == false) {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung behoben: Rollo Küche');
          } else {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung nicht behoben: Rollo Küche');
          }
        }
        // Esszimmer rechts
        if (getState("hm-rpc.1.001118A98B3A5F.0.UNREACH").val == true) {
          setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung: Rollo Esszimmer rechts');
          ezr = 1;
          while (getState("hm-rpc.1.001118A98B3A5F.0.UNREACH").val == true || ezr <= 10) {
            timeout11 = setTimeout(function () {
              if (getState("javascript.0.Rollo_Soll_Unten").val == false) {
                setState("hm-rpc.1.001118A98B3A5F.4.LEVEL"/*Rollo_EZ_rechts:4.LEVEL*/, 100);
              } else {
                setState("hm-rpc.1.001118A98B3A5F.4.LEVEL"/*Rollo_EZ_rechts:4.LEVEL*/, 0);
              }
              ezr = ezr + 1;
            }, 60000);
          }
          if (getState("hm-rpc.1.001118A98B3A5F.0.UNREACH").val == false) {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung behoben: Rollo Esszimmer rechts');
          } else {
            setState("telegram.0.communicate.response"/*Send text through telegram*/, 'Störung nicht behoben: Rollo Esszimmer rechts');
          }
        }
      });
      
      

      Anbei noch ein Ausschnitt als Bild, da es sonst zu lang wird und sich die Blöcke eh wiederholen.

      Ich hoffe auf eure Hilfe.

      VIelen Dank & Gruß

      Modjo
      4811_blockly.jpg

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

        Hi

        Ein Export von dem Script wäre besser. Da kann man besser "reparieren".

        So auf die Schnelle: Mach mal aus dem "oder" ein "und".

        Dann würde ich noch vor dem "ausführen timeout" ein "Stop timeout" setzen.

        Grüße

        1 Reply Last reply Reply Quote 0
        • J
          J Riemann last edited by

          Unabhängig von dem Skript wird Deine Wunschumsetzung nicht oder höchstens bedingt funktionieren.

          "Unreach" bedeutet das die Kommunikation zwischen dem Aktor und der Zentrale gestört ist. In den seltensten Fällen wird diese Störung eigenständig aufgehoben. Wenn es sich bei den Roll-Aktoren nicht um HM-IP Geräte handelt, dann senden diese Geräte keine zyklischen Statusmeldungen. Aus diesem Grund kann "unreach" frühesten beim nächsten erfolgreichen Fahrbefehl bzw. der nächsten Statusmeldung durch manuelle Betätigung aufgelöst werden.

          Handelt es sich um eine "echte" Verbindungsstörung so kann diese meist nur durch abstellen der Störeinflüsse und manueller Betätigung am Aktor beendet werden. Bei dieser Art der Verbindungsprobleme wäre das Skript erfolglos und würde sicher in einer Endlosschleife landen.

          Kurzzeitige Verbindungsprobleme haben ihre Ursache meisten in einer falschen Programmierung der Abläufe. Es werden dann viele Funkbefehle gleichzeitig abgesetzt wobei es zu Funkkollisionen kommt und Schaltbefehle bzw. Rückantworten ihr Ziel nicht erreichen.

          Verbindungsprobleme dieser Art durch ein Skript abfangen zu wollen ist sehr ungeschickt weil man lieber die Ursache statt der Symptome bekämpfen sollte.

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

            @rantanplan:

            Hi

            Ein Export von dem Script wäre besser. Da kann man besser "reparieren".

            So auf die Schnelle: Mach mal aus dem "oder" ein "und".

            Dann würde ich noch vor dem "ausführen timeout" ein "Stop timeout" setzen.

            Grüße `

            Hi rantanplan,

            ich werde nachher einmal deine Tipps einbauen und das Script exportieren.

            @J Riemann:

            Unabhängig von dem Skript wird Deine Wunschumsetzung nicht oder höchstens bedingt funktionieren.

            "Unreach" bedeutet das die Kommunikation zwischen dem Aktor und der Zentrale gestört ist. In den seltensten Fällen wird diese Störung eigenständig aufgehoben. Wenn es sich bei den Roll-Aktoren nicht um HM-IP Geräte handelt, dann senden diese Geräte keine zyklischen Statusmeldungen. Aus diesem Grund kann "unreach" frühesten beim nächsten erfolgreichen Fahrbefehl bzw. der nächsten Statusmeldung durch manuelle Betätigung aufgelöst werden.

            Handelt es sich um eine "echte" Verbindungsstörung so kann diese meist nur durch abstellen der Störeinflüsse und manueller Betätigung am Aktor beendet werden. Bei dieser Art der Verbindungsprobleme wäre das Skript erfolglos und würde sicher in einer Endlosschleife landen.

            Kurzzeitige Verbindungsprobleme haben ihre Ursache meisten in einer falschen Programmierung der Abläufe. Es werden dann viele Funkbefehle gleichzeitig abgesetzt wobei es zu Funkkollisionen kommt und Schaltbefehle bzw. Rückantworten ihr Ziel nicht erreichen.

            Verbindungsprobleme dieser Art durch ein Skript abfangen zu wollen ist sehr ungeschickt weil man lieber die Ursache statt der Symptome bekämpfen sollte. `

            Hi J Riemann,

            es handelt sich tatsächlich um Homematic IP Aktoren (HmIP-BROLL). Der Fehler behebt sich häufig von selbst, wenn ich den Aktor über Level neu anspreche.

            Ich schalte die Aktoren immer mit 1 Sekunde Versatz, also nicht gleichzeitig. Ich habe schon eine externe Antenne (https://www.stall.biz/project/externe-a … od-rpi-pcb) an meinem HM-MOD-RPI-PCB gelötet, was aber nur bedingt Abhilfe schafft. Ich schalte 11 Aktoren auf 2 Etagen (Einfamilienhaus, ca 130 qm insg.) Ich habe den RPi schon im OG möglichst mittig positioniert, aber manchmal sind die RSSI Werte gegen -70 bis -80 😞

            VG

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

              Hi rantanplan,

              ich habe deine Änderungen jetzt umgesetzt, ich hoffe so ist es richtig… ich werde es testen.

              4811_unreach.jpg

              Den Export habe ich in eine Textdatei gepackt, da die Zeichen für einen Beitrag um ein Vielfaches überschritten wird.

              VG

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

                Hi Zusammen,

                ich habe es noch einmal abgeändert getestet, der RPi3 stürzt immer noch ab und in dem Logfile steht immer noch:

                2018-09-18 18:32:51.807 - error: hm-rpc.1 xmlrpc -> setValue ["4","LEVEL",0.25] FLOAT

                2018-09-18 18:32:51.809 - error: hm-rpc.1 Error: XML-RPC fault: Generic error ( DUTY_CYCLE)

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

                  Mit wiederhole solange werden unmittelbar hintereinander Timer gestartet und es wird im ms-Abstand an die Rollos gesendet.

                  Du möchtest vermutlich im Minutenabstand senden, solange UNREACH noch wahr ist ? Dafür verwendet man Ausführen Intervall alle 1 Minute zusammen mit stop zyklische Ausführung Intervall, wenn UNREACH false oder die max. Anzahl erreicht ist.

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

                    Verwende besser für jedes UNREACH einen eigenen Trigger, da die einzelnen Rollos ohnehin individuell behandelt werden. Etwa so:
                    493_blockly_unreach_10xsenden.jpg

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

                      @paul53:

                      Verwende besser für jedes UNREACH einen eigenen Trigger, da die einzelnen Rollos ohnehin individuell behandelt werden. Etwa so:

                      Blockly_UNREACH_10xSenden.JPG `

                      Hallo paul53,

                      so?
                      4811_unbenannt.jpg

                      Oder ist das falsch? 🙂

                      Vielen Dank & Gruß

                      Modjo

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

                        @Modjo:

                        Oder ist das falsch? `
                        ja, das Triggern auf "ist wahr" verhindert, dass der sonst-Zweig der Abfrage jemals erreicht wird. Der Rest sollte funktionieren.

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

                          Hi,

                          sorry, die Rückmeldung kommt sehr spät, aber wie oben beschrieben funktioniert es dann.

                          Vielen Dank nochmal.

                          VG

                          Modjo

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          847
                          Online

                          31.8k
                          Users

                          79.9k
                          Topics

                          1.3m
                          Posts

                          4
                          11
                          793
                          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