Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Hilfe zu: aus HEX String 0 / 1 finden und Position ermitteln

    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

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

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

      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 Reply Quote 0
      • Stuebi
        Stuebi last edited by

        @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]
        
        1 Reply Last reply Reply Quote 0
        • J
          jupzup last edited by

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

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

          Support us

          ioBroker
          Community Adapters
          Donate

          819
          Online

          31.7k
          Users

          79.9k
          Topics

          1.3m
          Posts

          2
          3
          315
          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