Hauptmenü

Neueste Beiträge

#41
Wallboxen und E-Fahrzeuge / Aw: Ladestation (öffentlich) Z...
Letzter Beitrag von betateilchen - 08 März 2026, 11:43:40
Zitat von: betateilchen am 08 März 2026, 11:26:10Punkt 2 ist komplizierter. JsonMod hat noch einige funktionale Lücken und ich fürchte, verschachtelte arrays gehören dazu.
Mal sehen, ob mir dazu was einfällt.

Schau mal, ob Dir das weiterhilft:

multi(jsonPath('$.chargePoints.[*].connectors.0'),concat('test_',count()),property('maxPowerInKw'))

Da es offenbar an der Station keine chargepoints mit mehr als einem connector gibt, liefert das zumindest korrekte Ergebnisse.


Edit: angenommen, es gäbe am chargepoint 2 (oder mehr) connectors, dann könnte man die multi-Zeile einfach mehrfach angeben und die Nummer des connectors (.0) hochzählen. Dann natürlich den readingName auch entsprechend anpassen.

#42
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von 300P - 08 März 2026, 11:28:57
Zitat von: DS_Starter am 08 März 2026, 09:56:37aber die Leerzeichen in der Indexliste könnten stören. Wenn das so ist, kann ich an der Stelle noch nachbessern im Code.

Ja das hatte ich beim löschen von vielen Daten bei mir - hab sie damals von Hand (Text-EDITOR) "ersetzt" ", " =>> ","  ;D
#43
Wallboxen und E-Fahrzeuge / Aw: Ladestation (öffentlich) Z...
Letzter Beitrag von betateilchen - 08 März 2026, 11:26:10
Zitat von: Prof. Dr. Peter Henning am 08 März 2026, 10:52:19allerdings scheitere ich noch daran, 1.mehrere Properties des Ladepunktes in eine Zeile einzutragen

readingList single(concat("addInfo:",jsonPath('$.additionalInfo')," / stationId:",jsonPath('$.stationId')),'combiReading','?')
Punkt 2 ist komplizierter. JsonMod hat noch einige funktionale Lücken und ich fürchte, verschachtelte arrays gehören dazu.
Mal sehen, ob mir dazu was einfällt.
#44
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von DS_Starter - 08 März 2026, 11:15:21
Ich denke das hängt mit dem Standard linearen scaleMode zusammen.
Bei der linearen Skalierung sollen die linearen Verhältnisse zwischen Balken 1 und 2 gewahrt bleiben. Wenn die Differenz zwischen den Balken hinreichend groß ist, passt der größere der beiden Balken nicht in die Vorgabe der px-Höhe. Da abschneiden keine Option ist, wird die Höhe des Bereiches vergrößert.
Du könntest den Bereich z.B. logarithmisch darstellen -> scaleMode=3:log
#45
Anfängerfragen / Aw: Klärungsbedarf bei einem U...
Letzter Beitrag von Marko1976 - 08 März 2026, 11:11:09
Zitat von: betateilchen am 04 März 2026, 19:00:49Tipp: wenn man mit regex nicht klarkommt, kann man auch darüber nachdenken, ob es andere - einfachere - Möglichkeiten gibt, zum Ergebnis zu kommen.
Klar das mag sein, diese Möglichkeit habe ich auch bereits selbst gefunden. Doch es hat ja nichts damit zu tun das ich nicht erkenne woher das Ergebnis in meiner Konstellation stammt und somit NIEMALS ohne Hilfe verstehen und lernen kann warum es so wie es ist nicht funktioniert bzw. das fehlerhafte Ergebnis kommt.
Zitat/Month:.([\d.]+)/
Und genau so etwas verstehe ich nicht, darum lasse ich nach möglichkeit die Finger davon. Diese Symbolik und Bedeutung der einzelnen Platzhalter will einfach nicht in meinen Schädel rein - zumindest nicht dauerhaft zum behalten.
Zitat von: betateilchen am 05 März 2026, 08:34:45Du hast in Deinem Attribut userReadings vor allem das Problem, dass sinnvolle Trigger für die Anlage der einzelnen userReadings fehlen. Bei JEDEM beliebigen Event in diesem device versucht es, ALLE userReadings neu zu ermitteln.
Das ist doch nach meinem Verständnis auch Sinn eines UserReadings. Ein UserReading soll soweit ich es verstehe bestehnde Readings manipulieren, verändern oder daraus ableitende Berechnungen vornehmen. Wenn das nicht bei jedem Trigger passiert, sind die hälfte der Werte doch ständig veraltet.
Zitat von: betateilchen am 05 März 2026, 08:34:45Das führt dazu, dass Du gar nicht erkennen kannst, aus welchem Event das userReading erzeugt wird, das dann mit dem Namen gefüttert wird. Höchstwahrscheinlich wird das gar nicht aus der Zeile erzeugt, die Du als problematisch vermutest.
Es wird doch mit
statEnergy_kWh_Month { ReadingsVal("$name","statEnergy_kWh","") =~ /Month\":\"([^\"]*)\"/; return $1 }explizit das Reading "statEnergy_kWh" des Device ausgelesen und (ich nenne es mal) kastriert. In diesem Reading steht aber  folgendes drin:
Hour: 0.4 Day: 4.2 Month: 40.6 Year: 40.6 (since: 2026-03-05 )Es spielt doch gar keine Rolle wann oder wodurch die Berechnung ausgelöst wird, sondern NUR was berechnet wird, nämlich der Inhalt dieses spezifischen Readings. Wenn dieses Reading aber den Device-Namen gar nicht enthält, wie kann dann das UserReading diesen als Ergebnis ausspucken - das ist die Frage.
Das ist gerade so als wenn ich sagen würde: "Ich habe meine Mutter lieb" und das Ergebnis lautet "Vater". Darum hatte ich ja bewusst dabei geschrieben, dass es mir nicht um eine Lösung des eigentlichen Problems geht sondern in dem Fall EINZIG um das Verständnis warum, wieso, weshalb das Ergebnis hier so lautet.
Zitat von: betateilchen am 05 März 2026, 08:34:45(ob es sinnvoll ist, den Namen des userReadings so zu wählen, dass der Name des Ursprungsreadings darin 1:1 vorkommt, lasse ich jetzt unbetrachtet)
Das erleichtert zum einen die Fehlersuche und zum anderen reduziert es die FHEM-interne Last durch unnötige Durchläufe bei jedem event.
Verstehe ich nicht, da ganau das es ist was ich mache. Mein UserReading hat den gleichen Namen wie das Ursrungsreading + eine Erweiterung.

Tipp & Frage zugleich:
In deinen Beiträgen sind Codezeilen immer nicht lesbar, da sie von der Höhe zu klein dargestellt werden. Keine Ahnung ob das gewollt ist oder nicht, aber es macht das lesen deiner Beiträge enorm schwer, da man den Code immer erstmal kopieren und irgendwo einfügen muss um zu sehen was darin steht. Keine Ahnung ob das bei Mehrzeilern auch so ist, hier sind es ja alles immer nur Einzeiler.

Zitat von: Prof. Dr. Peter Henning am 07 März 2026, 12:15:53singularReadings
Habe ich exakt wie in der commandRef beschrieben benutzt was sofort zu einem Overflow geführt hat der mir den kompletten Server für einen halben Tag lahmgelegt hat. Sorry, aber nein Danke - das Risiko ist mir zu unüberschaubar.

Zitat von: RalfRog am 08 März 2026, 09:18:12Inwieweit das Sinn macht,wenn es durch das Modul bereit gestellt wird...
Ich verstehe leider nicht den Kontext in dem dein Kommentar steht.
#46
Wallboxen und E-Fahrzeuge / Aw: Ladestation (öffentlich) Z...
Letzter Beitrag von betateilchen - 08 März 2026, 11:04:01
Zitat von: Prof. Dr. Peter Henning am 07 März 2026, 16:05:54P.S.: Beim Beispiel von betateilchen dachte ich "Donnerwetter, eine Ladestation am Gotthard?"...

Natürlich, kurz vor der Einfahrt in den Tunnel.
Was glaubst Du, wie die E-Loks sonst da durchkommen? 8)
#47
Anfängerfragen / Aw: Logfiles - Groesse reduzie...
Letzter Beitrag von betateilchen - 08 März 2026, 10:58:17
Alternativ:

Lass die Werte gar nicht permanent loggen, sondern schreibe sie mit addLog() alle 5 Minuten selbst ins Log.
#48
MQTT / Aw: (WIP) z2m-Remote FUT089Z a...
Letzter Beitrag von betateilchen - 08 März 2026, 10:56:36
Das Ganze über events auszuwerten, ist doch etwas komplexer, als zuerst gedacht.

Sowohl das Farbrad als auch die Tasten R,G,B als auch der Farbtemperatur-Slider liefern u.U. die gleiche event-Folge "move_to_hue_and_saturation, followed by brightness_move_to_level"

Der Farbtemperatur-Slider kann aber auch die event-Folge "color_temperature_move, followed by brightness_move_to_level" liefern.

Falls der Farbtemperatur-Slider die Sequenz "color_temperature_move, followed by brightness_move_to_level" liefert, ist wiederum keine Unterscheidung zur Taste "W" möglich, die die gleiche event-Folge immer liefert.

Da jede Farbveränderung auch ein event "brightness_move_to_level" verursacht, funktioniert auch mein watchdog für die Rollosteuerung mittels Helligkeits-Slider nicht eindeutig, wenn man auch die Farbeinstellungen nutzen möchte.

Inzwischen arbeite ich mit devices vom Typ "sequence" um diverse event-Folgen auszuwerten. Auf die Sequenz triggert dann jeweils ein watchdog.

Ein ziemlich lustiges Ding, diese Fernbedienung...
#49
So, mit

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()),property('state.value'))

attr Ladestation_xxx stateFormat {my $n=ReadingsVal("$name","cports",0);;my $ret="<table>";;for(my $i=0;;$i<$n;;$i++){my $s=ReadingsVal("$name","port_$i","UNKNOWN");;my $t=($s=~/^A/)?"A":(($s=~/^O/)?"O":"U");;$ret.="<tr><td>$t</td></tr>\n"};;$ret.="</table>";;$ret}
gibt es schon einmal eine vertikale Tabelle mit A/O/U-Einträgen. Ich würde jetzt gerne in jeder Zeile noch mehr Informationen hinzufügen - allerdings scheitere ich noch daran, 1.mehrere Properties des Ladepunktes in eine Zeile einzutragen und 2. einen Datenpunkt (z.B. maximale Ladeleistung) aus dem unter "chargePoints" liegenden Array "connectors" abzufragen. Mit
multi(jsonPath('$.chargePoints.[*]'),concat('portPower_',count()),property('connectors[0].maxPowerInKw.value')) geht es jedenfalls nicht.

Vlt. kann das jemand beisteuern, der sich mit JsonMod besser auskennt.

LG

pah
#50
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von peterboeckmann - 08 März 2026, 10:50:05
Hallo Heiko,

Die dritte Grafik sieht leider doch noch zu hoch aus, wenn der erste Balken der höchste ist.
Eigentlich sollten alle drei gleich hoch sein:
attr graphicControl showDiff=1:bottom,2:bottom,3:bottom hourStyle=:00 beamWidth=24 beamHeightlevel=1:250,2:250,3:250
Viele Grüße,
Peter