Ankündigung

Einklappen
Keine Ankündigung bisher.

JSON Wert entschlüsseln

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    HS/FS JSON Wert entschlüsseln

    Hallo Zusammen

    Ich hoffe hier kann mir jemand helfen.

    Ich bekomme von einer Duschsteuerung einen JSON String und weis nicht genau wie ich diesen entschlüsseln muss.
    Vielleich kennt hier jemand den Code und kann mir sagen wie ich die Werte interpretieren muss.

    Hier ein beispiel des Codes:
    Code:
    {
      "correlationId": "",
      "body": {
        "bleMac": "de:6a:aa:67:71:ea",
        "name": "Dusche D01 Ki",
        "type": 45,
        "results": {
          "11": "0313ff",
          "12": "2d0022",
          "13": "000000",
          "14": "0f0200",
          "15": "00ffff",
          "22": "01ffff",
          "26": "02ffff",
          "27": "02ffff",
          "32": "0103ff",
          "34": "03ffff",
          "1d": "870200",
          "dd": "eb8400",
          "de": "9cf201",
          "df": "c91500",
          "e0": "f50000",
          "e1": "ffffff",
          "d9": "8d2900",
          "e3": "ffffff",
          "a0": "000080",
          "f9": "0c00ff",
          "fd": "241314",
          "fa": "3b9a77"
        }
      }
    }
    Ich müsste wissen was für ein Format die Daten bei „resolut“ haben.
    Normales HEX ist es nicht.
    So viel weis ich:
    Wert 15 ist 0
    Wert 22 ist 1
    Wert 26 ist 2
    Wert 27 ist 2
    Wert 34 ist 3

    Die Werte „ff“ scheinen „leer“ zu sein und nicht wie bei HEX 250.

    Kennt jemand diese Art Code und kann mir sagen wie ich diesen umwandeln kann?
    Es handelt sich überall um Zahlenwerte.

    Leider habe ich keine Dokumentation darüber.
    Es ist eine Duschsteuerung von Similor/Sanimatic.

    Diese würde ich gerne in den HomeServer integrieren.

    Vielen Dank.

    Ich bin für jeden Tip dankbar.
    Zuletzt geändert von danit; 17.01.2021, 14:42.

    #2
    Was sollen diese Werte denn übertragen? Temperatur ist/soll, Mischerstellung, aktuelle Laufzeit, Datum der letzten Reinigung? Und kommen immer genau diese Werte oder eigentlich nur einer davon?

    PS: Kannst du oben mal die zusätzlichen Leerzeilen entfernen, dass ermöglicht einen schnelleren Überblick beim draufsehen.

    Kommentar


      #3
      Das JSON ist immer genau so aufgebaut.

      Es sind Werte wie:
      serial number sensor last succ. thermal desinfection [dd.mm.yyyy hh:mm] Last usage [dd.mm.yyyy hh:mm] Last hygiene flush [dd.mm.yyyy hh:mm] Total duration water flow [m] Total amount usage flush volume [l] operation hours [h]
      PS: Habe die Leerzeilen enfernt. Sorry.

      Kommentar


        #4
        Der oben gepostete Datensatz ist vollständig? Also alle von dir in der Tabelle gezeigten Werte müssten da drin stehen? JSON kennt keine fixe Reihenfolge. Daher müssen die 1. Zahlen der "Schlüssel" sein. Hier könnte also z.B. 11 für Minuten von "letzte thermische Desinfektion" stehen. Oder 11+12: Timestamp letzte Nutzung o.ä. Du müsstest sicherstellen, dass diese Gerät die richtige Uhrzeit und Datum hat. Dann mal thermische Desinfektion und Nutzung, Hygienespülung, etc. immer mit einigen Minuten Versatz auslösen und dir das Datum merken. Wenn du das getan hast, die dir bekannten Daten mal mit einem neuen Datensatz hier posten.

        Kommentar


          #5
          Ok vielen Dank. Werde ich morgen einmal machen.

          Ich werde morgen mal aktuelle Werte mit einer aktuellen Tabelle posten.

          Aber ich verstehe noch nicht, warum es Daten mit „ffffff“ hat.

          Diese Daten sind höchstwahrscheinglich leere Werte.

          Wiso gibt es so etwas? Was für eine Codierung ist das?

          Kommentar


            #6
            Leere Daten können Platzhalter sein (z.B: damit auch 1000000000 Stunden Betriebszeit anzeigen kann, ist das höherwertige Bytes der Betriebsstunden die ersten 2^8 Stunden ffffff).Oder es gibt Modelle, die können keine Uhrzeit sondern nur ein Datum ausgeben. Die aufgedruckte Seriennummer des Geräts bitte auch mitsenden.

            Kommentar


              #7
              Ahh ok, das wusste ich nicht.
              Aber wenn „ff“ nur als Platzhalter genutzt wird, wie kann man dies abfangen?
              Jeder normale HEX to DEC Converter wird ja dies als HEX Zahl interpretieren oder nicht?
              Zuletzt geändert von danit; 17.01.2021, 21:39.

              Kommentar


                #8
                Die Daten bekommst du wie? via Bluetooth?

                Kommentar


                  #9
                  Ja die Daten kommen von einem Bluetooth Gateway.
                  Unterdessen habe ich herausgefunden das der Wert „fa“ die Seriennummer ist.

                  Kommentar


                    #10
                    is das vielleicht msgpack ?

                    Kommentar


                      #11
                      Weiterer Rate-Tipp:
                      - evtl. Bigendian?
                      - in einem andern Protokoll, das ich kenne, werden immer 32 Bit übertragen, allerdings gibt es auch kleinere Datentypen. Die ungenutzten von z.B. 16 auf 32 Bit werden mit ff aufgefüllt.

                      Kommentar


                        #12
                        Zitat von danit Beitrag anzeigen
                        Aber wenn „ff“ nur als Platzhalter genutzt wird, wie kann man dies abfangen?
                        Jeder normale HEX to DEC Converter wird ja dies als HEX Zahl interpretieren oder nicht?
                        Ich kenne nun nicht die Möglichkeiten vom Homeserver, aber spontan sehe ich zwei Ansätze:
                        1. Nur die ersten zwei Zeichen nutzen Diese beiden Zeichen könntest Du dann in den Dezimalwert konvertieren.
                        2. Den gesamten Hex-String in den Dezimalwert konvertieren. anschließend durch 2^16=65536 dividieren (oder Rechts-Shift um 16Bit)
                        Auch wenn es so aussieht als würden immer 6 Zeichen rauskommen: Auf jeden Fall jeweils noch mal vorab prüfen, dass die Gesamtlänge 6 Zeichen beträgt. In anderen bekommst Du sonst alle möglichen unerwarteten Werten raus…

                        3 Byte fühlt sich irgendwie ein bisschen exotisch an.

                        Kommentar


                          #13
                          Schöne Knobelaufgabe.

                          c91500f50000 ist CDAB => 16107797 und mit zwei angehängten 00en: Saturday, 16-Jan-21 06:48:20 UTC in RFC 2822

                          Passt das?
                          Hilft das hier? https://www.scadacore.com/tools/prog...hex-converter/

                          Kommentar


                            #14
                            Vielen Dank für die ganzen Ideen.

                            Ich werde diese alle überprüfen.

                            Hier jetzt einmal das JSON und die aktuelle Tabelle dazu.
                            Wie schon erwähnt ist der Wert "fa" die Seriennummer.

                            serial number sensor last succ. thermal desinfection [dd.mm.yyyy hh:mm] Last usage [dd.mm.yyyy hh:mm] Last hygiene flush [dd.mm.yyyy hh:mm] Total duration water flow [m] Total amount usage flush volume [l] operation hours [h] update time sensor [dd.mm.yyyy hh:mm]
                            3906167 04.01.2021 11:36 10637 34027 127644 5664 18.01.2021 07:36
                            Code:
                            {
                            "correlationId": "",
                            "body": {
                            "bleMac": "de:6a:aa:67:71:ea",
                            "name": "Dusche D01 Ki",
                            "type": 45,
                            "results": {
                            "11": "0313ff",
                            "12": "2d0022",
                            "13": "000000",
                            "14": "0f0200",
                            "15": "00ffff",
                            "22": "01ffff",
                            "26": "02ffff",
                            "27": "02ffff",
                            "32": "0103ff",
                            "34": "03ffff",
                            "1d": "780200",
                            "dd": "eb8400",
                            "de": "9cf201",
                            "df": "1f1600",
                            "e0": "4b0100",
                            "e1": "ffffff",
                            "d9": "8d2900",
                            "e3": "ffffff",
                            "a0": "000080",
                            "f9": "0c00ff",
                            "fd": "241314",
                            "fa": "3b9a77"
                            }
                            }
                            }

                            serial number sensor last succ. thermal desinfection [dd.mm.yyyy hh:mm] Last usage [dd.mm.yyyy hh:mm] Last hygiene flush [dd.mm.yyyy hh:mm] Total duration water flow [m] Total amount usage flush volume [l] operation hours [h] update time sensor [dd.mm.yyyy hh:mm]
                            3906167 18.01.2021 07:38 10637 34029 127644 5664 18.01.2021 07:38
                            Code:
                            {
                            "correlationId": "",
                            "body": {
                            "bleMac": "de:6a:aa:67:71:ea",
                            "name": "Dusche D01 Ki",
                            "type": 45,
                            "results": {
                            "11": "0313ff",
                            "12": "2d0000",
                            "13": "000000",
                            "14": "0f0200",
                            "15": "00ffff",
                            "22": "01ffff",
                            "26": "02ffff",
                            "27": "02ffff",
                            "32": "0103ff",
                            "34": "03ffff",
                            "1d": "7f0200",
                            "dd": "ed8400",
                            "de": "9cf201",
                            "df": "201600",
                            "e0": "000000",
                            "e1": "ffffff",
                            "d9": "8d2900",
                            "e3": "ffffff",
                            "a0": "000080",
                            "f9": "0c00ff",
                            "fd": "241314",
                            "fa": "3b9a77"
                            }
                            }
                            }

                            serial number sensor last succ. thermal desinfection [dd.mm.yyyy hh:mm] Last usage [dd.mm.yyyy hh:mm] Last hygiene flush [dd.mm.yyyy hh:mm] Total duration water flow [m] Total amount usage flush volume [l] operation hours [h] update time sensor [dd.mm.yyyy hh:mm]
                            3906149 04.01.2021 13:36 10010 32442 120120 5639 18.01.2021 07:36
                            Code:
                            {
                            "correlationId": "",
                            "body": {
                            "bleMac": "dd:5f:42:5f:a4:d0",
                            "name": "Dusche D02 Ki",
                            "type": 45,
                            "results": {
                            "11": "0313ff",
                            "12": "2d0022",
                            "13": "000000",
                            "14": "0f0200",
                            "15": "00ffff",
                            "22": "01ffff",
                            "26": "02ffff",
                            "27": "02ffff",
                            "32": "0103ff",
                            "34": "03ffff",
                            "1d": "7d0200",
                            "dd": "ba7e00",
                            "de": "38d501",
                            "df": "071600",
                            "e0": "4a0100",
                            "e1": "ffffff",
                            "d9": "1a2700",
                            "e3": "ffffff",
                            "a0": "000080",
                            "f9": "0c00ff",
                            "fd": "241314",
                            "fa": "3b9a65"
                            }
                            }
                            }

                            serial number sensor last succ. thermal desinfection [dd.mm.yyyy hh:mm] Last usage [dd.mm.yyyy hh:mm] Last hygiene flush [dd.mm.yyyy hh:mm] Total duration water flow [m] Total amount usage flush volume [l] operation hours [h] update time sensor [dd.mm.yyyy hh:mm]
                            3906149 18.01.2021 07:38 10010 32444 120120 5639 18.01.2021 07:38
                            Code:
                            {
                            "correlationId": "",
                            "body": {
                            "bleMac": "dd:5f:42:5f:a4:d0",
                            "name": "Dusche D02 Ki",
                            "type": 45,
                            "results": {
                            "11": "0313ff",
                            "12": "2d0000",
                            "13": "000000",
                            "14": "0f0200",
                            "15": "00ffff",
                            "22": "01ffff",
                            "26": "02ffff",
                            "27": "02ffff",
                            "32": "0103ff",
                            "34": "03ffff",
                            "1d": "830200",
                            "dd": "bc7e00",
                            "de": "38d501",
                            "df": "081600",
                            "e0": "010000",
                            "e1": "ffffff",
                            "d9": "1a2700",
                            "e3": "ffffff",
                            "a0": "000080",
                            "f9": "0c00ff",
                            "fd": "241314",
                            "fa": "3b9a65"
                            }
                            }
                            }



                            Ich hoffe irgendjemand versteht das System.

                            Ich habe nur die Seriennummer aufschlüsseln können.

                            Vielen Dank.

                            Kommentar


                              #15
                              Total duration waterflow: 10010 = x27 x1A -> „d9“ als big endian

                              total amount usage: 32444 = x7e Xbox -> „dd“ als big endian

                              Wenn’s passt, einfach im Netz nach bin to hex suchen und nach Hex übertragen lassen. Dann die Bytes vertauschen (little zu big endian) und suchen.

                              was übrig bleibt müssen Zeitangaben sein. Die nach dem Schema ein paar Posts früher übersetzen und zuordnen.

                              Müsste klappen.

                              Kommentar

                              Lädt...
                              X