FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: costa2 am 15 September 2017, 14:51:59

Titel: Temperaturdaten aus json Datei auslesen?
Beitrag von: costa2 am 15 September 2017, 14:51:59
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
Titel: Antw:Temperaturdaten aus json Datei auslesen?
Beitrag von: amenomade am 23 September 2017, 23:32:59
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
Titel: Antw:Temperaturdaten aus json Datei auslesen?
Beitrag von: Hans Franz am 24 September 2017, 00:26:52
evtl. hilft dir auch dies. (https://forum.fhem.de/index.php/topic,38463.msg306821.html#msg306821)
Gruß
Hans
Titel: Antw:Temperaturdaten aus json Datei auslesen?
Beitrag von: costa2 am 24 September 2017, 11:38:08
Vielen Dank.

Ich habe das Problem mittlerweile gelöst.

https://forum.fhem.de/index.php/topic,38463.msg686345.html#msg686345

Volker