JsonMod readings mappen

Begonnen von satprofi, 24 August 2025, 14:39:20

Vorheriges Thema - Nächstes Thema

satprofi

Hallo.
Habe hier Ladestellenverzeichnis -> Link das ich auf div. Anbieter filtere. Jetzt möchte ich die Werte Conditions auf die richtige Summe ausgeben. Habe dazu die Umrechnungstabelle, wo der Wert COM255 eine bestimete Zahl bedeutet. Wie mappe ich diese Readings jetzt auf diese Zahl?
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

TomLee

Zitat von: herrmannj am 25 Juli 2020, 12:59:00...
Ersetzen und Umrechnen von Werten (Anforderung von Rewe2000): Weil jetzt beliebige perl Ausdrücke verwendet werden können problemlos. Ich würde mir eine kleine Funktion in eine 99.my.. schreiben, zum Beispiel ...


satprofi

Danke für den Wink, aber da steh ich trotzdem etwas an.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

TomLee

#3
Keine Ahnung wie Du filterst.
Bspw. könnte ein single-Eintrag in readingList so ähnlich aussehen:

single(convELWA(jsonPath('$.bli.1.bla')), 'blub', 'nA')
Die Funktion convELWA() mappt die Werte zu Zahlen mittels Hash (%lookup) und wird in einer 99_my_Utils-Datei angelegt.

Die würd ich so definieren:
sub convELWA {
  my $val = shift;
  my  %lookup= (
    'COM255' => 2,
    'MC_T_4500 EUR' => 6,
    'bla' => 9
  );
 
my $ret = $lookup{$val};
return $val if !$ret;
return $ret;
}

Oder noch kürzer so:
sub convELWA {
  my $val = shift;
  my %lookup = (
    'COM255' => 2,
    'MC_T_4500 EUR' => 6,
    'bla' => 9
  );
  return $lookup{$val} // $val;
}



betateilchen

#4
Zitat von: TomLee am 25 August 2025, 11:23:01Keine Ahnung wie Du filterst.

Das würde mich auch interessieren. Im Moment kommen über den angegebenen Link fast 21 MB an json-Input. Es macht doch wahrscheinlich wenig Sinn, diese riesige Datenmenge verarbeiten zu wollen, wenn man am Ende (vermutlich) nur eine Handvoll Ladestationen haben möchte.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

satprofi

Vergesst es, ich hatte nach der Nummer gefiltert, wo aber täglich andere Anbieter stehen. Nur der erste dürfte immer gleich sein.
Es gäbe auch eine XML Datei zum abrufen, hab's aber aufgegeben. Umgerechnet der Werte, die ja fix sind, auf zahlen hatte ich über Script erledigt
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram