Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Ist ioBroker vergesslich?

    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

    Ist ioBroker vergesslich?

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

      Hallo,

      ich hab den Eindruck ioBroker ist vergesslich. 😉

      Die (gelegentlichen) Probleme habe ich seit ca. einem halben Jahr. Als es losging dachte ich, es liegt an der eingeschränkten Performance des RasPi, ich bin deshalb jetzt auch auf den Rock64 gewechselt. Dabei habe dabei bewusst kein Backup eingespielt, sondern die Scripte ex- und importiert und auch die SD-Karte ist neu (das filesystem ist auch expandiert). Die Probleme treten trotz des Wechsels auf den Rock mit der gleichen Häufigkeit weiterhin auf.

      Fehlverhalten:

      Es werden gelegentlich schedules, setState oder setStateDelayed nicht ausgeführt.

      Dabei treten diese Aussetzer unregelmäßig auf. Ich erkenne keine Regel oder Zusammenhänge. Auch der RasPi/Rock64 sind in diesen Momenten nicht mit etwas anderem beschäftigt.

      Am deutlichsten merke ich es beim Lichtwecker. Dabei regle ich jeden Morgen über JavaScript die Helligkeit der Deckenleuchte (433MHz-Intertechno Dimmer via RFLink) und die Lautstärke der Sonos Box langsam hoch. Das habe ich insgesamt drei Mal (Schlafzimmer Eltern + 2 Kinderzimmer). Die Probleme treten auf, wenn die Wecker zeitgleich ausgeführt werden, aber auch wenn sie zu unterschiedlichen Zeiten laufen.

      3x das identische Script (mit anderen Variablenwerten) in "common"

      on("javascript.0.Timer."+NameWeckerState+".Zeit", function (obj) {
          wakeup_hour = JSON.parse(formatDate(getDateObject(getState("javascript.0.Timer."+NameWeckerState+".Zeit").val), "h"))/*Stunde Wecker = Start Lichtwecker*/;
          wakeup_minute = JSON.parse(formatDate(getDateObject(getState("javascript.0.Timer."+NameWeckerState+".Zeit").val), "m"))/*Minute Wecker = Start Lichtwecker*/;
          clearSchedule(Wecken);/*Weckerstart löschen*/
          Wecken = schedule({hour: wakeup_hour, minute: wakeup_minute}, function () {Wecker();});/*Weckerstart neu setzen*/
          log("Wecker " + NameWecker + ": " + getState("javascript.0.Timer."+NameWeckerState+".Zeit").val + " " + getState("javascript.0.Timer."+NameWeckerState+".Aktiv").val);
      });
      
      function Wecker() {
          if (getState("javascript.0.Timer."+NameWeckerState+".Aktiv").val === true) {
              log("Wecker " + NameWecker + ": Start");
              Light_DimmUp(actorLicht, 1, wakeup_DimmUp_duration, 0, 100, 5, 0);
              Sonos_VolumeUp(actorSonos, 1, wakeup_DimmUp_duration, 1, wakeup_Volume, 1, 2);
      }}
      

      1x das eigentlichen Weckerscript in "global"

      function Light_DimmUp(Dimmer, LightDimmStart, DimmUp_duration, iStart, iMax, iIncrement, TimeOffset) {
          var firstloop = true;
          for (i = iStart; i <= iMax; i += iIncrement) {
              setStateDelayed(Dimmer+".SET_LEVEL_1", LightDimmStart * i, (DimmUp_duration * 60 / 100) * 1000 * i, false)/*Helligkeit zeitverzögert erhöhen*/;
              if (firstloop === true) {
                  setStateDelayed(Dimmer+".SWITCH_1", true, (DimmUp_duration * 60 / 100 + 1) * 1000 * i, false)/*Licht einschalten, um es später wieder ausschalten zu können*/;
                  firstloop = false;
              }
          }
          setStateDelayed(Dimmer+".SWITCH_1", false, (DimmUp_duration + 20) * 60 *1000, false)/*Licht ausschalten (20 Minuten) falls nach dem Aufstehen das Ausschalten vergessen wurde*/;
          log("Wecker ENDE Light:" + Dimmer + formatDate(new Date(), "JJJJ.MM.TT SS:mm:ss.sss"));
      }
      
      function Sonos_VolumeUp(SonosBox_id, SonosVolumeStart, VolumeUp_duration, iStart, iMax, iIncrement, TimeOffset) {
          setState("sonos.0.root."+SonosBox_id+".volume", 0)/*Lautstärke auf Null setzen, damit die Box beim Setzen des favoritens nicht laut losspielt*/;
          if (getState("sonos.0.root."+SonosBox_id+".coordinator").val != SonosBox_id) {
              setStateDelayed("sonos.0.root."+SonosBox_id+".coordinator", SonosBox_id, 1000, false);}/*wenn der Lautsprecher Mitglied einer Partygruppe ist = entfernen (1 Sek zeitverzögert)*/
          if (getState("sonos.0.root."+SonosBox_id+".membersChannels").val != SonosBox_id) {
              setStateDelayed("sonos.0.root."+SonosBox_id+".remove_from_group", SonosBox_id, 1000, false);}/*wenn der Lautsprecher Koordinator einer Gruppe ist = entfernen (1 Sek zeitverzögert)*/
          setStateDelayed("sonos.0.root."+SonosBox_id+".favorites_set", radio, 20000, false)/*Abspielmedium setzen und starten (20 Sek zeitverzögert)*/;
          for (i = iStart; i <= iMax; i += iIncrement) {
              setStateDelayed("sonos.0.root."+SonosBox_id+".volume", SonosVolumeStart * i, (VolumeUp_duration * 60 / iMax) * 1000 * i + TimeOffset * 60000, false)/*Lautstärke zeitverzögert erhöhen*/;
          }
          setStateDelayed("sonos.0.root."+SonosBox_id+".state", 'stop', (VolumeUp_duration + 20) * 60 *1000, false)/*Abspielmedium stoppen (20 Minuten) falls nach dem Aufstehen das Ausschalten vergessen wurde*/;
          log("Wecker ENDE Sonos:" + SonosBox_id + formatDate(new Date(), "JJJJ.MM.TT SS:mm:ss.sss"));
      }
      

      Bei Auftreten einer Amnesie ist im Log rein gar nichts zu sehen - auch die sonst ausgegebenen Zeilen werden nicht geloggt. Normalerweise bekomme ich neben meinen selbstprogrammierten Logausschriften z.B. die für die Steuerung der Sonos-Box:

      2019-01-15 06:15:00.933  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.volume with {"val":0,"ack":false,"ts":1547529300931,"q":0,"from":"system.adapter.javascript.0","lc":1547529300931}
      2019-01-15 06:15:20.925  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.favorites_set with {"val":"MDR JUMP","ack":false,"ts":1547529320922,"q":0,"from":"system.adapter.javascript.0","lc":1547188220713}
      2019-01-15 06:17:16.926  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.volume with {"val":1,"ack":false,"ts":1547529436923,"q":0,"from":"system.adapter.javascript.0","lc":1547529436923}
      2019-01-15 06:17:32.928  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.volume with {"val":2,"ack":false,"ts":1547529452924,"q":0,"from":"system.adapter.javascript.0","lc":1547529452924}
      2019-01-15 06:17:48.931  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.volume with {"val":3,"ack":false,"ts":1547529468928,"q":0,"from":"system.adapter.javascript.0","lc":1547529468928}
      2019-01-15 06:18:05.024  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.volume with {"val":4,"ack":false,"ts":1547529485021,"q":0,"from":"system.adapter.javascript.0","lc":1547529485021}
      2019-01-15 06:18:20.926  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.volume with {"val":5,"ack":false,"ts":1547529500923,"q":0,"from":"system.adapter.javascript.0","lc":1547529500923}
      2019-01-15 06:18:36.932  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.volume with {"val":6,"ack":false,"ts":1547529516928,"q":0,"from":"system.adapter.javascript.0","lc":1547529516928}
      2019-01-15 06:18:52.927  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.volume with {"val":7,"ack":false,"ts":1547529532923,"q":0,"from":"system.adapter.javascript.0","lc":1547529532923}
      2019-01-15 06:19:08.928  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.volume with {"val":8,"ack":false,"ts":1547529548924,"q":0,"from":"system.adapter.javascript.0","lc":1547529548924}
      2019-01-15 06:19:24.928  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.volume with {"val":9,"ack":false,"ts":1547529564924,"q":0,"from":"system.adapter.javascript.0","lc":1547529564924}
      2019-01-15 06:19:40.928  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.volume with {"val":10,"ack":false,"ts":1547529580924,"q":0,"from":"system.adapter.javascript.0","lc":1547529580924}
      2019-01-15 06:19:56.927  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.volume with {"val":11,"ack":false,"ts":1547529596924,"q":0,"from":"system.adapter.javascript.0","lc":1547529596924}
      2019-01-15 06:20:12.927  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.volume with {"val":12,"ack":false,"ts":1547529612924,"q":0,"from":"system.adapter.javascript.0","lc":1547529612924}
      2019-01-15 06:20:28.928  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.volume with {"val":13,"ack":false,"ts":1547529628924,"q":0,"from":"system.adapter.javascript.0","lc":1547529628924}
      2019-01-15 06:20:44.927  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.volume with {"val":14,"ack":false,"ts":1547529644924,"q":0,"from":"system.adapter.javascript.0","lc":1547529644924}
      2019-01-15 06:21:00.927  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.volume with {"val":15,"ack":false,"ts":1547529660924,"q":0,"from":"system.adapter.javascript.0","lc":1547529660924}
      2019-01-15 06:39:00.930  - [32minfo[39m: sonos.0 try to control id sonos.0.root.192_168_178_81.state with {"val":"stop","ack":false,"ts":1547530740927,"q":0,"from":"system.adapter.javascript.0","lc":1547529872414}
      
      

      Manchmal ist es auch so, dass nur die ersten Sonos-Lautstärkesttings gesendet werden, dann aber nichts mehr.

      Was RFLink an den Lichtdimmer sendet bzw. senden sollte, sieht man im Log ja leider nicht, da RFLink keine Logs schreibt.

      Aber es ist nicht nur ein Problem beim Lichtwecker, sondern zum Teil auch beim Flurlicht, welches ich 5 Minuten nach dem Einschalten auf 40% runterdimme um es danach ganz auszuschalten. Da wird gelegentlich von ioBroker gern das Runterdimmen und Ausschalten oder nur das Ausschalten vergessen. Manchmal habe ich auch das Problem, dass ich das Licht erst nach dem x-ten Drücken des 433MHz Tasters einschalten kann.

      Nicht ganz in die Vergesslichkeitsmuster passt ein gelegentliches Verhalten seit ca. 1 Monat: wenn ich das Flurlicht einschalte, schaltet es sich sofort wieder aus. Wenn das so ist, tritt der Fehler innerhalb der nächsten Minuten bei jedem Einschalten auf (ich kann hintereinander 10-20 mal Einschalten und es geht jedesmal sofort wieder aus). Nach ein/zwei Minuten ist der Spuk vorbei und das Flurlicht funktioniert die nächsten Tage tadellos.

      Der Code zum Flurlicht ist folgender:

      on({id: "javascript.0.Licht.Flur_1", val: true}, function (obj) {
          if (getState("javascript.0.Licht.Flur_Timer").val === true) {
              Dauer = 5;
          }else{
              Dauer = 60;
          }
          clearStateDelayed ("javascript.0.Licht.Flur_1");
          clearStateDelayed (varLicht_Flur01+".SET_LEVEL_1");
          setStateDelayed(varLicht_Flur01+".SET_LEVEL_1", 40, (Dauer-0.2) * 60000, false);
          setStateDelayed("javascript.0.Licht.Flur_1", false,  Dauer      * 60000, false);
          setState(varLicht_Flur01+".SWITCH_1", true);
          setState(varLicht_Flur01+".SET_LEVEL_1", 100);
          setState("javascript.0.Licht.Flur_1_Time", formatDate(parseInt(JSON.stringify(getStateDelayed("javascript.0.Licht.Flur_1")).split(",")[1].split(":")[1]) + parseInt(new Date().getTime()), "hh:mm:ss"));
          setState("javascript.0.Licht.Flur_1_Aktiv", JSON.stringify(getStateDelayed("javascript.0.Licht.Flur_1")).split(",")[3].split(":")[1]);
          log("Licht Flur geplantes Ende: "+formatDate(new Date().getTime()+5*60000, "hh:mm:ss"));
      });
      

      Ich muss dazu sagen, die Scripte habe ich so vor ca. 1,5 Jahren geschrieben. Sie liefen die ersten 10 Monate ohne Probleme.

      Kann sich jemand einen Reim drauf machen?

      VG Peter

      1 Reply Last reply Reply Quote 0
      • R
        radioman last edited by

        Ich habe das Problem im Eingangspost jetzt noch etwas genauer beschrieben - vielleicht kommt doch noch jemandem einen Idee, woran es liegen könnte.

        1 Reply Last reply Reply Quote 0
        • FredF
          FredF Most Active Forum Testing last edited by

          Vielleicht liegt es daran das dein Weckerscript unter global liegt?

          Ich weis zwar nicht genau warum, lese aber immer das unter global nur skripte liegen sollen wenn man weis was man tut…

          Mit Tapatalk von unterwegs

          1 Reply Last reply Reply Quote 0
          • T
            tempestas last edited by

            Weil globale Skripte vor jedes Common Skript gehängt werden. Dh du kannst dann quasi in jedem Common. skirpt auf Funktionen aus global zugreifen und musst sie nicht immer neu schrieben.

            Daher sollen solche normalen Skripte nicht unter Global

            1 Reply Last reply Reply Quote 0
            • R
              radioman last edited by

              Hmm, - allerdings lief alles monatelang problemlos. :?

              Dass mit Scripten unter global ist mir bewusst. Es war von mir auch Absicht - so muss ich den Scriptteil, den alle Wecker benutzen, nicht in jedes der drei Weckerscripte reinkopieren. Werde es aber trotzdem mal probieren.

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

              Support us

              ioBroker
              Community Adapters
              Donate

              828
              Online

              31.8k
              Users

              79.9k
              Topics

              1.3m
              Posts

              3
              5
              414
              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