JSON DAten von curl in Dummy device readings soeichern

Begonnen von roli, 13 Juli 2024, 16:11:24

Vorheriges Thema - Nächstes Thema

roli

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
FHEM auf Debian (RASPI), 2 * CUL868/433 *  FS20 STR, 2 * HMS100 T, 2 * , 1* FS20 SU, 2 *  FS20 SM8, 2 ; 1-wire Temp,i2c Bus; ESP32 WROOM; ESP8266; Arduino
Sonnenbatterie Eco8;Elektro  Nachspeicher-Ofen Ladesteuerung,
Haus Lüftung,
Integration von HardwareAlarmanlag

betateilchen

#1
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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

roli

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; 
   }
   
   
}
FHEM auf Debian (RASPI), 2 * CUL868/433 *  FS20 STR, 2 * HMS100 T, 2 * , 1* FS20 SU, 2 *  FS20 SM8, 2 ; 1-wire Temp,i2c Bus; ESP32 WROOM; ESP8266; Arduino
Sonnenbatterie Eco8;Elektro  Nachspeicher-Ofen Ladesteuerung,
Haus Lüftung,
Integration von HardwareAlarmanlag