Temperaturdaten aus json Datei auslesen?

Begonnen von costa2, 15 September 2017, 14:51:59

Vorheriges Thema - Nächstes Thema

costa2

Hallo.

Ich lese die Temperaturdaten meiner Mobile Alerts Sensoren mittels "maserver", ohne Umweg über die Cloud, direkt aus dem Gateway aus.
Dabei wird eine Datei "lastSensorMessages.json" erzeugt, welche die letzten Daten enthält.
Diese Datei erneuert sich alle 7 Minuten.
Nun möchte ich die Temperaturen in für FHEM verständlichen Readings und einem Logfile ausgeben.
Die Datei liegt in folgendem Pfad: /opt/fhem/maserver, also schon im fhem Verzeichnis.

Der Inhalt von lastSensorMessages.json sieht so aus:

{
    "020a3739d217": {
        "buffer": {
            "type": "Buffer",
            "data": [
                206,
                89,
                186,
                133,
                213,
                18,
                2,
                10,
                55,
                57,
                210,
                23,
                48,
                93,
                0,
                127,
                0,
                127,
                27,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                88
            ]
        },
        "unixTime": "2017-09-14T13:36:21.000Z",
        "packageLength": 18,
        "sensorType": 2,
        "timeoutInMinutes": 60,
        "ID": "020a3739d217",
        "tx": 12381,
        "bufferOffset": 14,
        "json": {
            "temperature": [
                12.7,
                12.7
            ],
            "id": "020a3739d217",
            "t": "2017-09-14T13:36:21.000Z"
        },
        "isOffline": true
    },
    "02083fb10bac": {
        "buffer": {
            "type": "Buffer",
            "data": [
                206,
                89,
                187,
                166,
                160,
                18,
                2,
                8,
                63,
                177,
                11,
                172,
                2,
                42,
                0,
                220,
                0,
                219,
                26,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                104
            ]
        },
        "unixTime": "2017-09-15T10:08:32.000Z",
        "packageLength": 18,
        "sensorType": 2,
        "timeoutInMinutes": 60,
        "ID": "02083fb10bac",
        "tx": 554,
        "bufferOffset": 14,
        "json": {
            "temperature": [
                22,
                21.9
            ],
            "id": "02083fb10bac",
            "t": "2017-09-15T10:08:32.000Z",
            "offline": false
        },
        "isOffline": false
    },
    "0315a0114432": {
        "buffer": {
            "type": "Buffer",
            "data": [
                210,
                89,
                187,
                167,
                55,
                22,
                3,
                21,
                160,
                17,
                68,
                50,
                27,
                33,
                128,
                168,
                74,
                70,
                128,
                162,
                10,
                73,
                26,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                28
            ]
        },
        "unixTime": "2017-09-15T10:11:03.000Z",
        "packageLength": 22,
        "sensorType": 3,
        "timeoutInMinutes": 60,
        "ID": "0315a0114432",
        "tx": 6945,
        "bufferOffset": 14,
        "json": {
            "temperature": [
                16.8,
                16.2
            ],
            "humidity": [
                70,
                73
            ],
            "id": "0315a0114432",
            "t": "2017-09-15T10:11:03.000Z",
            "offline": false
        },
        "isOffline": false
    },
    "022bd216fd85": {
        "buffer": {
            "type": "Buffer",
            "data": [
                206,
                89,
                187,
                166,
                146,
                18,
                2,
                43,
                210,
                22,
                253,
                133,
                31,
                181,
                128,
                156,
                128,
                152,
                26,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                101
            ]
        },
        "unixTime": "2017-09-15T10:08:18.000Z",
        "packageLength": 18,
        "sensorType": 2,
        "timeoutInMinutes": 60,
        "ID": "022bd216fd85",
        "tx": 8117,
        "bufferOffset": 14,
        "json": {
            "temperature": [
                15.6,
                15.2
            ],
            "id": "022bd216fd85",
            "t": "2017-09-15T10:08:18.000Z",
            "offline": false
        },
        "isOffline": false
    }
}


Kann man damit etwas anfangen?

Gruß,
Volker
RPI3, Nanocul 433 MHz, 433 MHz Steckdosen, DVB-T Stick für 868 MHz TX Sensoren, MOBILE ALERTS Sensoren und Gateway

amenomade

Ich kenne "maserver" nicht, aber wäre es nicht möglich, statt eine Datei zu erzeugen, einige Werte in Fhem direkt zu schreiben? Das wäre mehr in der Ereignis-Logik von Fhem.

Ansonsten, HTTPSRV iVm HTTPMOD würden dir das Einlesen von der Datei, und das Parsing vom Json sparen.
https://fhem.de/commandref.html#HTTPSRV
https://fhem.de/commandref.html#HTTPMOD

Andere Möglichkeit, CustomReadings.
https://fhem.de/commandref.html#CustomReadings
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Hans Franz

Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

costa2

RPI3, Nanocul 433 MHz, 433 MHz Steckdosen, DVB-T Stick für 868 MHz TX Sensoren, MOBILE ALERTS Sensoren und Gateway