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?
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
Lieben Dank! Probiere ich die Tage mal aus...
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.
ufff... jetzt bin ich überfordert ::)
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);