Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Kev 0

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    K
    • Profile
    • Following 0
    • Followers 0
    • Topics 2
    • Posts 20
    • Best 0
    • Groups 1

    Kev 0

    @Kev 0

    Starter

    0
    Reputation
    4
    Profile views
    20
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Kev 0 Follow
    Starter

    Latest posts made by Kev 0

    • RE: Bits to Word / Word to Bits

      @ticaki Vielen Dank für deine Antwort aber leider habe ich so meine Probleme damit bzw. auch Javascript
      Ich bekomme die Fehlermeldung dass arrWordsToBits nicht iterierbar ist.
      Viell. war es an meinem ersten Beispiel nicht gut ersichtlich aber es kann noch mehr MyInts geben die wiederum andere Bool schreiben z.B.

      let arrWordsToBits = [
          [
              "modbus.1.holdingRegisters.0_Fensterkontakte",
              [
                  ["0_userdata.0.Fensterkontakte.BalkonKindNordGeschlossen", BIT0],
                  ["0_userdata.0.Fensterkontakte.BalkonKindSuedGeschlossen", BIT1],
                  ["0_userdata.0.Fensterkontakte.BalkonSchlafGeschlossen", BIT2],
                  ["0_userdata.0.Fensterkontakte.FensterAnkleideGeschlossen", BIT3],
              ]
          ],
          [
              "modbus.1.holdingRegisters.1_Lichtzustaende_1",
              [
                  ["0_userdata.0.Leuchten.Zustaende.Dielentreppe", BIT0],
                  ["0_userdata.0.Leuchten.Zustaende.Technik", BIT1],
                  ["0_userdata.0.Leuchten.Zustaende.Werkstatt", BIT2],
              ]
          ]
      

      Dann ist mir aufgefallen, dass du unten inner_element.id verwendest aber müsste das nicht inner_element.dp sein?

      posted in JavaScript
      K
      Kev 0
    • Modbus Verhalten nicht klar

      Guten Tag,

      ich hoffe ihr könnt mir helfen das Modbus Verhalten hier zu verstehen.
      Ich habe eine Modbus Variable (HoldingRegisters) die gelesen und geschrieben werden soll.
      Ich schreibe diese Mittels setState wenn ein Ereignis eintritt, gleichzeitig überwache ich diese Modbus-Variable mit on.
      Ein Minimalbeispiel sieht wie folgt aus:

      on({id: "0_userdata.0.Test.MyBool", change: 'ne'}, function(obj)
          {
              console.log("0_userdata.0.Test.MyBool");
              console.log(getState("0_userdata.0.Test.MyBool"));
              if (getState("0_userdata.0.Test.MyBool").val)
              {
                  setState("modbus.1.holdingRegisters.32114_Test", 1);
              }
              else
              {
                  setState("modbus.1.holdingRegisters.32114_Test", 0);
              }
          });
      
      
      on({id: "modbus.1.holdingRegisters.32114_Test", change: 'ne'}, function(obj)
          {
              console.log("modbus.1.holdingRegisters.32114_Test");
              console.log(getState("modbus.1.holdingRegisters.32114_Test"));
          });
      

      Die Logausgaben sind wie folgt:

      2023-09-28 15:33:59.210  - info: javascript.0 (4971) script.js.common.TestModbus: 0_userdata.0.Test.MyBool
      2023-09-28 15:33:59.211  - info: javascript.0 (4971) script.js.common.TestModbus: {'val':false,'ack':false,'ts':1695908039206,'q':0,'from':'system.adapter.admin.0','user':'system.user.admin','lc':1695908039206}
      2023-09-28 15:33:59.224  - info: javascript.0 (4971) script.js.common.TestModbus: modbus.1.holdingRegisters.32114_Test
      2023-09-28 15:33:59.225  - info: javascript.0 (4971) script.js.common.TestModbus: {'val':0,'ack':false,'ts':1695908039212,'q':0,'c':'script.js.common.TestModbus','from':'system.adapter.javascript.0','user':'system.user.admin','lc':1695908039212}
      2023-09-28 15:33:59.380  - info: javascript.0 (4971) script.js.common.TestModbus: modbus.1.holdingRegisters.32114_Test
      2023-09-28 15:33:59.381  - info: javascript.0 (4971) script.js.common.TestModbus: {'val':1,'ack':true,'ts':1695908039377,'q':0,'from':'system.adapter.modbus.1','user':'system.user.admin','lc':1695908039377}
      2023-09-28 15:33:59.427  - info: javascript.0 (4971) script.js.common.TestModbus: modbus.1.holdingRegisters.32114_Test
      2023-09-28 15:33:59.428  - info: javascript.0 (4971) script.js.common.TestModbus: {'val':0,'ack':true,'ts':1695908039423,'q':0,'from':'system.adapter.modbus.1','user':'system.user.admin','lc':1695908039423}
      

      Zeile 6 vom Log verstehe ich nicht. Wieso ist der Value wieder kurzzeitig auf 1?

      Mit freundlichen Grüßen
      Kevin Haybach

      posted in ioBroker Allgemein
      K
      Kev 0
    • Bits to Word / Word to Bits

      Hi,

      ich schreibe gerade meine ersten Skripte mit JavaScript (habe bis jetzt Erfahrungen mit C++ und SCL) und wollte Mal eure Meinung zu folgenden einfachen Skripten hören. Anregungen und Verbesserungen gerne gewünscht.

      WordsToBits

      const BIT0 = 1;
      const BIT1 = 2;
      const BIT2 = 4;
      const BIT3 = 8;
      const BIT4 = 16;
      const BIT5 = 32;
      const BIT6 = 64;
      const BIT7 = 128;
      const BIT8 = 256;
      const BIT9 = 512;
      const BIT10 = 1024;
      const BIT11 = 2048;
      const BIT12 = 4096;
      const BIT13 = 8192;
      const BIT14 = 16384;
      const BIT15 = 32768;
      
      let arrWordsToBits = [
          [
              "0_userdata.0.Test.MyInt",
              [
                  ["0_userdata.0.Test.MyBool", BIT0],
                  ["0_userdata.0.Test.MyBool2", BIT2]
              ]
          ]
      ]
      
      function ConvertWordToBit(word, position)
      {
          return Boolean(word & position);
      }
      
      for (const outer_element of arrWordsToBits)
      {
          on({id: outer_element[0].toString(), change: 'ne'}, function(obj)
          {
              var word_value = getState(outer_element[0].toString()).val;
              for (const inner_element of outer_element[1])
              {
                  setState(inner_element[0].toString(), ConvertWordToBit(word_value, inner_element[1]));
              }
          });
      }
      

      BitsToWords

      const BIT0 = 1;
      const BIT1 = 2;
      const BIT2 = 4;
      const BIT3 = 8;
      const BIT4 = 16;
      const BIT5 = 32;
      const BIT6 = 64;
      const BIT7 = 128;
      const BIT8 = 256;
      const BIT9 = 512;
      const BIT10 = 1024;
      const BIT11 = 2048;
      const BIT12 = 4096;
      const BIT13 = 8192;
      const BIT14 = 16384;
      const BIT15 = 32768;
      
      let arrBitsToWords = [
          [ "0_userdata.0.Test.MyBool", "0_userdata.0.Test.MyInt2", BIT0 ],
          [ "0_userdata.0.Test.MyBool2", "0_userdata.0.Test.MyInt2", BIT2 ]
      ]
      
      
      function ModifyWord(word, bit, position)
      {
          if (bit) // value true --> set position
          {
              return word | position;
          }
          else // value false --> reset position
          {
              return word & ~position;
          }
      }
      
      
      for (const element of arrBitsToWords)
      {
          on({id: element[0].toString(), change: 'ne'}, function(obj)
          {
              var bit_value = getState(element[0].toString()).val;
              var word_value = getState(element[1].toString()).val;
              setState(element[1].toString(), ModifyWord(word_value, bit_value, element[2]));
          });
      }
      

      Mit freundlichen Grüßen
      Kevin

      posted in JavaScript
      K
      Kev 0
    • RE: jarvis v3.0.0 - just another remarkable vis

      Hi,
      ich hoffe ihr könnt mir Mal wieder helfen.
      Eigentlich wollte ich den Lila Buble unten Rechts entfernen, da dieser bei mir Werte verdeckt. Beim ausprobieren habe ich aber jetzt links die Leiste entfernt, sodass ich nicht mehr in die Einstellungen komme. Wie kann ich das wieder ändern?

      posted in Tester
      K
      Kev 0
    • RE: jarvis v3.0.0 - just another remarkable vis

      @zefau
      Mein Beitrag bezieht sich auf die Aussage
      "das liegt daran, dass du den Body State ausgewählt hast, dann zieht der Standard" vom 16,10 19:35

      Kannst du mir das genauer erklären? Ich habe jetzt ein neues Device angelegt und bei den meisten States habe ich Body Element leer gelassen, 2 States haben als Body Element LevelBody. Wenn ich das Popup jetzt öffne haben die States bei denen ich das BodyElement leer gelassen habe "vor 3 Minuten" ... dabei stehen.
      Habe ich bereits ein BodyElement ausgewählt kann ich nicht "keins" auswählen sondern muss den Eintrag löschen ist das so gewollt?
      6a5d9f09-025c-488e-92bc-39d0914add89-image.png

      Nachtrag:
      Ich habe jetzt überall mal einen BodyElement ausgewählt und anschließend gelöscht und nun ist "vor ... Minuten" verschwunden.

      posted in Tester
      K
      Kev 0
    • RE: jarvis v3.0.0 - just another remarkable vis

      @MCU
      Danke das habe ich schon gesehen aber gehofft es würde etwas leichteres geben. Habe mich bis jetzt noch nicht an das Tutorial dran getraut

      posted in Tester
      K
      Kev 0
    • RE: jarvis v3.0.0 - just another remarkable vis

      @mcu
      Ich denke dann muss ich ein wenig weiter ausholen weil ich ein generelles Problem mit dem BlindLevelAction habe. Mein Problem ist das die Werte sich nicht zurücksetzen. Stell dir vor ich gebe den Befehl runter --> Wert wird auf 0 gesetzt. Meine überlagerte Steuerung verwirft aber den Befehl weil z.B. die Tür Offen ist. Anschließend schließe ich die Tür und jetzt fährt die Jalousie runter weil der Befehl noch ansteht --> nicht sicher oder aber ich mache eine Flankenauswertung damit das nicht passiert aber dann habe ich das Problem das ich keine Flanke erkenne weil ein erneutes setzen auf 0 nicht sichtbar ist. Deshalb habe ich mir überlegt für min und max Codes zu verwenden z.B. -1 und -2 und über bidirektionale Holding Register den Wert zu empfangen und anschließend von der Steuerung auf 0 zu setzen damit ich eine erneute Betätigung mitbekomme.
      Wenn ich aber jetzt schon Codes für Auf und Ab verwende würde ich auch gerne noch für Stop einen Code verwenden. z.B. -3. Dann hätte ich eine bidirektionale Variable mit der ich der Steuerung Auf/Ab/Stop mitteilen kann.
      Ich hoffe das war jetzt nicht zu verwirrend. Long Story Short ich will eigentlich in der Visualisierung immer nur Taster verwenden und so kann ich einen Workaround dafür schaffen und die Anzahl der Variablen stark reduzieren

      posted in Tester
      K
      Kev 0
    • RE: jarvis v3.0.0 - just another remarkable vis

      Gibt es eine Möglichkeit beim BlindLevelAction eine Zahl anstelle von True für Stop zu senden? Ich habe mir so etwas vorgestellt wie {"min":-2,"max":-1,"setOn":-3,"setOff":-3} aber das funktioniert leider nicht

      posted in Tester
      K
      Kev 0
    • RE: jarvis v3.0.0 - just another remarkable vis

      @mcu
      Vielen Dank für deine Hilfe. Es gibt ja mehrere Lösungen.

      1. Ich kann die 5 Devices die es betrifft über Styles deaktivieren.
      2. Ich gehe in den Expertenmodus und trage überall die fehlende Zeile ein.
      posted in Tester
      K
      Kev 0
    • RE: jarvis v3.0.0 - just another remarkable vis

      @mcu
      Nein dort steht überhaupt kein "bodyElement": drin. Ich habe es jetzt mal um ein "bodyElement": null ergänzt und siehe da es funktioniert.
      a98c68ec-40f9-4b01-916a-49b412b1a235-image.png
      4bac63b1-5e24-41ee-a453-ded047d1d38a-image.png

      posted in Tester
      K
      Kev 0
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo