Ankündigung

Einklappen
Keine Ankündigung bisher.

JSON Wert entschlüsseln

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

  • danit
    antwortet
    Ich habe nun alles ein bisschen durchgetestet.

    Die Werte wie von dir En3rGy angegeben kann ich entziffern.
    Jedoch das mit der Zeit funktioniert so nicht.
    Wenn ich es so probiere wie erklärt ergibt das keinen Sinn.
    Ich versuche es weiter.

    Trotzdem vielen Dank.

    Einen Kommentar schreiben:


  • En3rGy
    antwortet
    Zitat von danit Beitrag anzeigen
    Wie kann ich so etwas auf de HS umsetzen? Kann der das
    Prinzipiell kann der HS das schon. Ich bezweifle, dass es einen 1:1 Baustein dafür gibt. Du musst halt mal im DL Bereich suchen. Da gibt es auf jeden Fall einen Json Baustein. Sicherlich gibt es auch Bausteine mit denen du die Bytes neu anordnen kannst (Text kopieren und zusammensetzen. Vermutlich gibt‘s auch Byte zu Int Bausteine mit denen du dann an die Zahl kommst usw...

    Einen Kommentar schreiben:


  • danit
    antwortet
    WOW Ok Vielen Dank En3rGy

    Sowas habe ich auch noch nie gesehen.
    Wie kann ich so etwas auf de HS umsetzen? Kann der das?


    Einen Kommentar schreiben:


  • En3rGy
    antwortet
    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.

    Einen Kommentar schreiben:


  • danit
    antwortet
    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.

    Einen Kommentar schreiben:


  • SvenB
    antwortet
    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/

    Einen Kommentar schreiben:


  • wknx
    antwortet
    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.

    Einen Kommentar schreiben:


  • En3rGy
    antwortet
    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.

    Einen Kommentar schreiben:


  • derPaul
    antwortet
    is das vielleicht msgpack ?

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • derPaul
    antwortet
    Die Daten bekommst du wie? via Bluetooth?

    Einen Kommentar schreiben:


  • danit
    antwortet
    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.

    Einen Kommentar schreiben:


  • tobiasr
    antwortet
    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.

    Einen Kommentar schreiben:


  • danit
    antwortet
    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?

    Einen Kommentar schreiben:


  • tobiasr
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X