Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Hilfe zu: aus HEX String 0 / 1 finden und Position ermitteln

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.0k

Hilfe zu: aus HEX String 0 / 1 finden und Position ermitteln

Hilfe zu: aus HEX String 0 / 1 finden und Position ermitteln

Scheduled Pinned Locked Moved Skripten / Logik
3 Posts 2 Posters 366 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    J Offline
    jupzup
    wrote on last edited by
    #1

    Hallo zusammen,

    ich stehe gerade vor einem für mich unlösbaren Problem ( Aufgrund fehlender Programmierkenntnisse ).

    Über Node RED importiere ich erfolgreich über UART die Melder Aktivität einer Alarmanlge mittels eines HEX String der immer aus 14 Zeichen besteht.

    Dieser String muss in jeweils 2ér HEX also in Summe in 7 HEX Pärchen gesplittet werden und diese dann jeweils nach Binär konvertiert werden.

    Anschliessend benötige ich dann noch eine Logik, welche es erlaubt, anhand von True & False den Status der einzelnen Melder ( 0-55 ) über jeweils einen Datenpunkt im iobroker anzuzeigen.

    Folgende Matrix kommt hier zum Einsatz:

    String aus Alarmanlage: 00 08 01 20 00 02 00

    HEX 00 08 01 20 00 02 00

    BIN 0000 0000 0000 1000 0000 0001 0010 0000 0000 0000 0000 0010 0000 0000

    Melder 7 0 15 8 23 16 31 24 39 32 47 40 55 48

    Ergebnis: Melder 11, 16, 29, 41 sind aktiv bzw. wären somit True

    EDIT: Leider funktioniert die Formatierung des Textes nicht daher hier ein Screenshot zur besseren Veranschaulichung.

    4863_2018-07-26_19-45-16.jpeg

    Wäre das aufwendig oder kompliziert das in Javascript umzusetzen ?

    Vielen Dank für eure Unterstützung !!

    VG

    Sascha

    1 Reply Last reply
    0
    • StuebiS Offline
      StuebiS Offline
      Stuebi
      wrote on last edited by
      #2

      @jupzup:

      Hallo zusammen,

      ich stehe gerade vor einem für mich unlösbaren Problem ( Aufgrund fehlender Programmierkenntnisse ).

      Über Node RED importiere ich erfolgreich über UART die Melder Aktivität einer Alarmanlge mittels eines HEX String der immer aus 14 Zeichen besteht.

      Dieser String muss in jeweils 2ér HEX also in Summe in 7 HEX Pärchen gesplittet werden und diese dann jeweils nach Binär konvertiert werden.

      Anschliessend benötige ich dann noch eine Logik, welche es erlaubt, anhand von True & False den Status der einzelnen Melder ( 0-55 ) über jeweils einen Datenpunkt im iobroker anzuzeigen.

      Folgende Matrix kommt hier zum Einsatz:

      String aus Alarmanlage: 00 08 01 20 00 02 00

      HEX 00 08 01 20 00 02 00

      BIN 0000 0000 0000 1000 0000 0001 0010 0000 0000 0000 0000 0010 0000 0000

      Melder 7 0 15 8 23 16 31 24 39 32 47 40 55 48

      Ergebnis: Melder 11, 16, 29, 41 sind aktiv bzw. wären somit True

      EDIT: Leider funktioniert die Formatierung des Textes nicht daher hier ein Screenshot zur besseren Veranschaulichung.

      2018-07-26_19-45-16.jpeg

      Wäre das aufwendig oder kompliziert das in Javascript umzusetzen ?

      Vielen Dank für eure Unterstützung !!

      VG

      Sascha `

      Vielleicht hilft Dir das weiter. Geht sicherlich eleganter.

      `function hex2bin(hex){
          return ("00000000" + (parseInt(hex, 16)).toString(2)).substr(-8);
      }
      
      function alarmstring(hex) {
      
          var result = "";
          var hexarr = hex.split(" ");
          var n = 0;
          var m = 0;
          var resarr = [];
      
          // Binärwert für jeden HEX Block
          for (var i=0; i < hexarr.length; i++) { 
      
            result = hex2bin(hexarr[i]);
            // console.log(result);
      
            // Loopen über Binärwert
            for(var j=0; j<8; j++) {
      
              n = result.charAt(j);
              m = (8 - j) + (i * 8 - 1);
      
              if(n == "1") { 
                  // Melder ist aktiv
                  resarr[m] = true;
              } else { 
                  // Melder ist nicht aktiv  
                  resarr[m] = false;
              }
      
            }
      
          }
      
           return resarr;
      
      }
      
      var hex = "00 08 01 20 00 02 00";
      var res = alarmstring(hex);
      
      for (var i=0; i < res.length; i++) {
      
          if(res[i] === true) {
              console.log("Melder "+ i + " ist aktiv"); 
          } else {
              console.log("Melder "+ i + " ist nicht aktiv");  
          }
      
      }` 
      
      Ausgabe sieht dann so aus:
      
      `~~[code]~~07:18:20.835	[info]	javascript.0 script.js.common.zeit: Melder 0 ist nicht aktiv
      07:18:20.835	[info]	javascript.0 script.js.common.zeit: Melder 1 ist nicht aktiv
      07:18:20.835	[info]	javascript.0 script.js.common.zeit: Melder 2 ist nicht aktiv
      07:18:20.835	[info]	javascript.0 script.js.common.zeit: Melder 3 ist nicht aktiv
      07:18:20.836	[info]	javascript.0 script.js.common.zeit: Melder 4 ist nicht aktiv
      07:18:20.836	[info]	javascript.0 script.js.common.zeit: Melder 5 ist nicht aktiv
      07:18:20.836	[info]	javascript.0 script.js.common.zeit: Melder 6 ist nicht aktiv
      07:18:20.836	[info]	javascript.0 script.js.common.zeit: Melder 7 ist nicht aktiv
      07:18:20.836	[info]	javascript.0 script.js.common.zeit: Melder 8 ist nicht aktiv
      07:18:20.836	[info]	javascript.0 script.js.common.zeit: Melder 9 ist nicht aktiv
      07:18:20.836	[info]	javascript.0 script.js.common.zeit: Melder 10 ist nicht aktiv
      07:18:20.836	[info]	javascript.0 script.js.common.zeit: Melder 11 ist aktiv
      07:18:20.836	[info]	javascript.0 script.js.common.zeit: Melder 12 ist nicht aktiv
      07:18:20.836	[info]	javascript.0 script.js.common.zeit: Melder 13 ist nicht aktiv
      07:18:20.836	[info]	javascript.0 script.js.common.zeit: Melder 14 ist nicht aktiv
      07:18:20.836	[info]	javascript.0 script.js.common.zeit: Melder 15 ist nicht aktiv
      07:18:20.836	[info]	javascript.0 script.js.common.zeit: Melder 16 ist aktiv
      07:18:20.836	[info]	javascript.0 script.js.common.zeit: Melder 17 ist nicht aktiv
      07:18:20.836	[info]	javascript.0 script.js.common.zeit: Melder 18 ist nicht aktiv
      07:18:20.836	[info]	javascript.0 script.js.common.zeit: Melder 19 ist nicht aktiv
      07:18:20.837	[info]	javascript.0 script.js.common.zeit: Melder 20 ist nicht aktiv
      07:18:20.837	[info]	javascript.0 script.js.common.zeit: Melder 21 ist nicht aktiv
      07:18:20.837	[info]	javascript.0 script.js.common.zeit: Melder 22 ist nicht aktiv
      07:18:20.837	[info]	javascript.0 script.js.common.zeit: Melder 23 ist nicht aktiv
      07:18:20.837	[info]	javascript.0 script.js.common.zeit: Melder 24 ist nicht aktiv
      07:18:20.837	[info]	javascript.0 script.js.common.zeit: Melder 25 ist nicht aktiv
      07:18:20.837	[info]	javascript.0 script.js.common.zeit: Melder 26 ist nicht aktiv
      07:18:20.837	[info]	javascript.0 script.js.common.zeit: Melder 27 ist nicht aktiv
      07:18:20.837	[info]	javascript.0 script.js.common.zeit: Melder 28 ist nicht aktiv
      07:18:20.837	[info]	javascript.0 script.js.common.zeit: Melder 29 ist aktiv
      07:18:20.837	[info]	javascript.0 script.js.common.zeit: Melder 30 ist nicht aktiv
      07:18:20.837	[info]	javascript.0 script.js.common.zeit: Melder 31 ist nicht aktiv
      07:18:20.837	[info]	javascript.0 script.js.common.zeit: Melder 32 ist nicht aktiv
      07:18:20.837	[info]	javascript.0 script.js.common.zeit: Melder 33 ist nicht aktiv
      07:18:20.837	[info]	javascript.0 script.js.common.zeit: Melder 34 ist nicht aktiv
      07:18:20.837	[info]	javascript.0 script.js.common.zeit: Melder 35 ist nicht aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 36 ist nicht aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 37 ist nicht aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 38 ist nicht aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 39 ist nicht aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 40 ist nicht aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 41 ist aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 42 ist nicht aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 43 ist nicht aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 44 ist nicht aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 45 ist nicht aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 46 ist nicht aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 47 ist nicht aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 48 ist nicht aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 49 ist nicht aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 50 ist nicht aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 51 ist nicht aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 52 ist nicht aktiv
      07:18:20.838	[info]	javascript.0 script.js.common.zeit: Melder 53 ist nicht aktiv
      07:18:20.839	[info]	javascript.0 script.js.common.zeit: Melder 54 ist nicht aktiv
      07:18:20.839	[info]	javascript.0 script.js.common.zeit: Melder 55 ist nicht aktiv
      [/code]`[/i][/i]
      

      ioBroker auf Synology DS216+II im Docker Container

      1 Reply Last reply
      0
      • J Offline
        J Offline
        jupzup
        wrote on last edited by
        #3

        Auf jeden Fall hilft das weiter. Super vielen Dank dafür !!!!

        1 Reply Last reply
        0
        Reply
        • Reply as topic
        Log in to reply
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes


        Support us

        ioBroker
        Community Adapters
        Donate

        260

        Online

        32.4k

        Users

        81.3k

        Topics

        1.3m

        Posts
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
        ioBroker Community 2014-2025
        logo
        • Login

        • Don't have an account? Register

        • Login or register to search.
        • First post
          Last post
        0
        • Recent
        • Tags
        • Unread 0
        • Categories
        • Unreplied
        • Popular
        • GitHub
        • Docu
        • Hilfe