FHEM Forum

FHEM => Sonstiges => Thema gestartet von: TubeHead am 03 Juli 2026, 15:56:08

Titel: JSON Datensatz in FHEM zusammenstellen und in Datei schreiben?
Beitrag von: TubeHead am 03 Juli 2026, 15:56:08
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?

Titel: Aw: JSON Datensatz in FHEM zusammenstellen und in Datei schreiben?
Beitrag von: TomLee am 03 Juli 2026, 16:25:38
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
Titel: Aw: JSON Datensatz in FHEM zusammenstellen und in Datei schreiben?
Beitrag von: TubeHead am 03 Juli 2026, 16:29:11
Lieben Dank! Probiere ich die Tage mal aus...
Titel: Aw: JSON Datensatz in FHEM zusammenstellen und in Datei schreiben?
Beitrag von: rudolfkoenig am 03 Juli 2026, 16:52:58
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.
Titel: Aw: JSON Datensatz in FHEM zusammenstellen und in Datei schreiben?
Beitrag von: TubeHead am 03 Juli 2026, 17:04:50
ufff... jetzt bin ich überfordert  ::)
Titel: Aw: JSON Datensatz in FHEM zusammenstellen und in Datei schreiben?
Beitrag von: betateilchen am 03 Juli 2026, 19:06:16
Zitat von: TubeHead am 03 Juli 2026, 17:04:50ufff... jetzt bin ich überfordert  ::)

Warum? Einfach in der Zeile

my $json = encode_json(\@result);
den Funktionsaufruf ersetzen, wie von Rudi vorgeschlagen:

my $json = toJSON(@result);