HAlle ich mache Curl aufruf in meinem Perl code und bekomme hierbei JSON Daten.
Diese hätte ich germe in einem Dummy device ( readings ) gespeichert/bzw. aktualisiert.
Nun gibt es wohl Json2nameValue , Json2reading aber leider sind für mich kein Einträge so,
dass ich genau verstehen würde, was hier zu tun ist.
my $url_data = shift ;
$content = `$url_cmd --data $url_data`
# decode return DAten
my $decoded = eval { decode_json($content) };
if($@) {
Log 1, " #### WG WiFi call $url_data . JSOn error $@ in $content ";
return "json error!";
}
else
{
}
Wie bekomme ich jetzt die DAten
Zitat von: roli am 13 Juli 2024, 16:11:24HAlle ich mache Curl aufruf in meinem Perl code und bekomme hierbei JSON Daten.
Diese hätte ich germe in einem Dummy device ( readings ) gespeichert/bzw. aktualisiert.
Warum benutzt Du nicht einfach das Modul JsonMod? Das ist doch genau dafür gemacht.
https://commandref.fhem.de/#JsonMod
Zitat von: roli am 13 Juli 2024, 16:11:24Wie bekomme ich jetzt die DAten
Ohne die Daten zu kennen, läßt sich das nicht beantworten.
ja genau. das neue Modul ist dafür gemacht aber verlangt eine neuere Perl Version -- und ich möchte jetzt nicht in ein update galama laufen.
Ich hab es aber geschafft - nachdem ich durch viel Schrott im Web gehen musste !
sub rw_WG_WiFi_Call($)
{
my $url_data = shift ;
$content = `$url_cmd --data $url_data` ;
# decode return DAten
my $decoded ;
my $rc = eval { $decoded = decode_json($content); 1; };
if ( !$rc ) {
my $err= $@;
Log 1, " #### WG WiFi call $url_data . JSOn error $err ";
return "json error!";
}
else
{
# loop over list and update dummy device readings
foreach my $key(keys %$decoded) {
my $val = $decoded->{$key};
#Log 1, " #### WG key : $key VAl: $val ";
fhem ("setreading WG_HTTP_Return $key $val");
}
return $boolTrue;
}
}