Ladestation (öffentlich) Zustandabfrage per HTTPMOD

Begonnen von Sany, 20 Dezember 2025, 13:33:45

Vorheriges Thema - Nächstes Thema

betateilchen

Zitat von: Prof. Dr. Peter Henning am 08 März 2026, 12:57:16Im Prinzip müsste es möglich sein, das "count()" mehrstufig anzulegen.

Das ist die Sache mit den verschachtelten arrays...

Noch cooler wäre aber sowas:

jsonPath('$.[chargePoints].[connectors]')
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Prof. Dr. Peter Henning

Immerhin geht das hier:
multi(jsonPath('$.chargePoints.[*]'),concat('test_',count()),concat(property('state.value'),',  ',property('connectors.0.maxPowerInKw'),'kW, ',property('connectors.0.tariffInfo.tariffGroup'),', ',property('connectors.0.tariffInfo.tariffDescription')))
Man könnte also tatsächlich für jeden Ladepunkt eine schöne Zeile machen. Heute aber nicht mehr, hier ist gleich Wahlparty.

Ach ja, noch etwas: Zumindest in Vahrn sind das Doppelsäulen mit je ZWEI Kabeln, jedes wird als eigener Connector angezeigt. Wir können also ziemlich sicher davon ausgehen, dass das connectors-array nur eine Rolle spielt, wenn wirklich an einem Ladepunkt unterschiedliche Stecker angeboten werden.

LG

pah

Prof. Dr. Peter Henning

Hier die Tabelle:attr Ladestation_xxx readingList single(jsonPath('$.additionalInfo'),'location','?') single(jsonPath('$.numberOfChargePoints'),'cports') single(jsonPath('$.availableChargePoints'),'cports_avail')  single(jsonPath('$.unknownStateChargePoints'),'cports_unknown') multi(jsonPath('$.chargePoints.[*]'),concat('port_',count()),concat(property('state.value'),'|',property('connectors.0.maxPowerInKw'),'|',property('connectors.0.tariffInfo.tariffGroup'),'|',property('connectors.0.tariffInfo.tariffDescription')))

attr Ladestation_xxx stateFormat {my $n=ReadingsVal("$name","cports",0);;my $ret="<table border=\"1\"><tr><td>Status</td><td>Leistung</td><td>Typ</td><td>Preis ab</td></tr>";;for(my $i=0;;$i<$n;;$i++){my @s=split('\|',ReadingsVal("$name","port_$i","UNKNOWN|||"));;my $t1=($s[0]=~/^A/)?"frei":(($s[0]=~/^O/)?"belegt":"?");;my $t2=$s[1].'kW';;my $t3=($s[2]=~/^D/)?"DC":(($s[2]=~/^A/)?"AC":"?");;$s[3]=~/(\d,\d\d) €/;;my $t4="$1  €";;$ret.="<tr><td>$t1</td><td>$t2</td><td>$t3</td><td>$t4</td></tr>\n"};;$ret.="</table>";;$ret}

LG

pah