JSON Datensatz in FHEM zusammenstellen und in Datei schreiben?

Begonnen von TubeHead, 03 Juli 2026, 15:56:08

Vorheriges Thema - Nächstes Thema

TubeHead

Hallo in die Runde,

(ich habe es mal unter "Sonstiges" abgelegt, da ich nicht genau wusste, wohin ich es packen soll. Nötigenfalls bitte verschieben...)

Für das Lesen von JSON Daten aus Webseiten u.ä. gibt es ja das Modul "JsonMod".
Aber gibt es auch eine Möglichkeit die ganze Sache umgedreht zu gestalten?

Also z.B. ein DOIF mit Zeitsteuerung, welches periodisch die Daten verschiedenster Geräte einsammelt und dann "JSON-Key:value" zusammenbastelt und in eine physische Datei schreibt?


TomLee

Hallo,

so in etwa und das Ergebnis dann mit FileWrite in eine Datei schreiben:

my @devices = ("Devicename1", "Devicename2", "Devicename3");
my @result;

foreach my $name (@devices) {
    next unless defined($defs{$name});

    push @result, {
        device   => $name,
        status   => ReadingsVal($name, "state", "unknown"),
        occupied => ReadingsVal($name, "occupied", "0"),
        battery  => ReadingsVal($name, "battery", undef),
    };
}

my $json = encode_json(\@result);

Braucht man gar kein DOIF dazu, geht mit einem einfachen at.

Gruss Thomas

TubeHead


rudolfkoenig

encode_json benoetigt "use JSON", was zwar viele Module laden, aber bei weitem nicht alle.

Eine Alternative dazu ist toJSON, was im fhem.pl implementiert ist, z.Bsp. als toJSON($defs{WEB}), oder als toJSON(@result) aus dem obigen Beispiel.

TubeHead