FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: kamp am 13 Juni 2023, 09:54:28

Titel: stateFormat in TeslaCar verhält sich seltsam
Beitrag von: kamp am 13 Juni 2023, 09:54:28
Hallo,
ich habe ein Device "TeslaCar" und möchte dort mittels stateFormat und defStateIcon es etwas hübscher machen. Mein erster Ansatz war:

attr fin devStateIcon online:car_in@green asleep:car_in@blue:wakeUpCar offline:car_in@red:wakeUpCar Charging:electric_car_charger@green Complete:electric_car_charger@blue
attr fin stateFormat state<br/>charging_state

Das funktioniert leider nicht, hier zeigt er mir leider nur den Text der beiden Readings an, nicht die Icons aus devStateIcon.

Mein zweiter Versuch war der:
attr fin devStateIcon online:car_in@green asleep:car_in@blue:wakeUpCar offline:car_in@red:wakeUpCar Charging:electric_car_charger@green Complete:electric_car_charger@blue
attr fin stateFormat {ReadingsVal("$name","state","offline"). sprintf("<br/>").ReadingsVal("$name","charging_state","Complete")}

Hier werden mir nun zwar wieder zwei Zeilen im state angezeigt, aber ebenfalls als Text, nicht als Icons wie in devStateIcon definiert. Was ist hier falsch?
Titel: Aw: stateFormat in TeslaCar verhält sich seltsam
Beitrag von: betateilchen am 13 Juni 2023, 10:14:02
Mein Bauchgefühl sagt mir, dass das <br/> in stateFormat da nicht hingehört.
Bei mir ist da jedenfalls in mehrzeiligen Fällen immer ein newLine, kein <br/>
Gib doch die zwei Zeilen mal direkt im Frontend ein, anstatt sie von Hand in die Konfiguration zu schreiben.
Titel: Aw: stateFormat in TeslaCar verhält sich seltsam
Beitrag von: ch.eick am 13 Juni 2023, 15:51:28
Ich habe meinen falschen Post gelöscht.

VG  Christian
Titel: Aw: stateFormat in TeslaCar verhält sich seltsam
Beitrag von: betateilchen am 13 Juni 2023, 17:28:29
Zitat von: ch.eick am 13 Juni 2023, 15:51:28So wie es da steht würde der "/" ein escapen von ">" bedeuten,

Das ist doch Unfug. Escapen macht man mit \ und nicht mit /
<br/> ist ein völlig korrekter HTML Ausdruck.
Titel: Aw: stateFormat in TeslaCar verhält sich seltsam
Beitrag von: kamp am 14 Juni 2023, 07:50:07
also es funktioniert weder mit <br> und ein NewLine kann ich nicht einfügen, da beim TeslaCar Device sich nicht das Popup mit dem mehrzeiligen Editor öffnet zur Eingabe, wie bei allen anderen Devices, wenn man in das Textfeld klickt. Ich editiere nicht in der Konfigurationsdatei, ausschließlich übers UI.
Titel: Aw: stateFormat in TeslaCar verhält sich seltsam
Beitrag von: ch.eick am 14 Juni 2023, 08:29:16
Zitat von: betateilchen am 13 Juni 2023, 17:28:29
Zitat von: ch.eick am 13 Juni 2023, 15:51:28So wie es da steht würde der "/" ein escapen von ">" bedeuten,

Das ist doch Unfug. Escapen macht man mit \ und nicht mit /
<br/> ist ein völlig korrekter HTML Ausdruck.
Okay, ich korrigiere meinen Post...
Titel: Aw: stateFormat in TeslaCar verhält sich seltsam
Beitrag von: Otto123 am 14 Juni 2023, 10:07:33
@kamp versuch mal - bitte direkt so in die Kommandozeile einwerfen
attr fin stateFormat state\
charging_state
Oder im "attr Editor" einfach einen Zeilenumbruch einfügen.nicht richtig gelesen: letzteres geht nicht. Aber per attr Befehl sollte es gehen?
 
Achtung: Damit wird der STATE mehrzeilig und der Inhalt von devStateIcon wird für jede STATE Zeile angewendet. Die Ansicht in der Device Übersicht wird damit nicht automatisch mehrzeilig!
Titel: Aw: stateFormat in TeslaCar verhält sich seltsam
Beitrag von: betateilchen am 14 Juni 2023, 11:14:56
Zitat von: kamp am 14 Juni 2023, 07:50:07und ein NewLine kann ich nicht einfügen, da beim TeslaCar Device sich nicht das Popup mit dem mehrzeiligen Editor öffnet zur Eingabe, wie bei allen anderen Devices, wenn man in das Textfeld klickt.

Das deutet für mich darauf hin, dass die readingsFnAttributes nicht wie vorgesehen in das zugehörige Modul eingebunden sind. stateFormat bringt bei korrekter Implementierung das textfield-long automatisch mit. Du solltest das aber zumindest manuell per widgetOverride nachträglich machen können.
Titel: Aw: stateFormat in TeslaCar verhält sich seltsam
Beitrag von: Otto123 am 14 Juni 2023, 13:22:07
Zitat von: betateilchen am 14 Juni 2023, 11:14:56sich nicht das Popup mit dem mehrzeiligen Editor öffnet ...
das nicht habe ich doch glattweg dreimal überlesen  :-X
Titel: Aw: stateFormat in TeslaCar verhält sich seltsam
Beitrag von: betateilchen am 14 Juni 2023, 14:38:55
Zitat von: betateilchen am 14 Juni 2023, 11:14:56Das deutet für mich darauf hin, dass die readingsFnAttributes nicht wie vorgesehen in das zugehörige Modul eingebunden sind.


sub TeslaCar_Initialize($)
{
  my ($hash) = @_;

  $hash->{SetFn}     = "TeslaCar_Set";
  $hash->{DefFn}     = "TeslaCar_Define";
  $hash->{GetFn}     = "TeslaCar_Get";
  $hash->{AttrList}  = "updateTimer pollingTimer streamingTimer dataRequest stateFormat";
}

q.e.d.

Es ist für mich ziemlich unklar, wo man nun eigentlich die aktuelle Version von 49_TeslaCar.pm herbekommt.
Aber egal, welche Version aus welcher Quelle ich mir angeschaut habe, der Code ist an vielen Stellen ziemlich gruslig zusammengefrickelt.

Hoffentlich findet das in dieser Form nie den Weg in die offizielle Verteilung von FHEM.
Titel: Aw: stateFormat in TeslaCar verhält sich seltsam
Beitrag von: kamp am 16 Juni 2023, 16:02:07
Zitat von: Otto123 am 14 Juni 2023, 10:07:33@kamp versuch mal - bitte direkt so in die Kommandozeile einwerfen
attr fin stateFormat state\
charging_state
Oder im "attr Editor" einfach einen Zeilenumbruch einfügen.nicht richtig gelesen: letzteres geht nicht. Aber per attr Befehl sollte es gehen?
 
Achtung: Damit wird der STATE mehrzeilig und der Inhalt von devStateIcon wird für jede STATE Zeile angewendet. Die Ansicht in der Device Übersicht wird damit nicht automatisch mehrzeilig!
Leider kein Erfolg, das kommt dabei raus:
Screenshot 2023-06-16 155613.png

Titel: Aw: stateFormat in TeslaCar verhält sich seltsam
Beitrag von: Otto123 am 16 Juni 2023, 16:08:14
Ja mein Fehler, ich meinte nicht die (einzeilige) Kommandozeile sondern die Raw Definition. Findest Du je nach Oberfläche / Version unter dem Device , hinter dem Copy for Forum ... Klappmenu oder beim großen Plus links oben vor der einzeiligen Kommandozeile.
Titel: Aw: stateFormat in TeslaCar verhält sich seltsam
Beitrag von: kamp am 16 Juni 2023, 16:16:13
Zitat von: betateilchen am 14 Juni 2023, 11:14:56
Zitat von: kamp am 14 Juni 2023, 07:50:07und ein NewLine kann ich nicht einfügen, da beim TeslaCar Device sich nicht das Popup mit dem mehrzeiligen Editor öffnet zur Eingabe, wie bei allen anderen Devices, wenn man in das Textfeld klickt.

Das deutet für mich darauf hin, dass die readingsFnAttributes nicht wie vorgesehen in das zugehörige Modul eingebunden sind. stateFormat bringt bei korrekter Implementierung das textfield-long automatisch mit. Du solltest das aber zumindest manuell per widgetOverride nachträglich machen können.
Das verstehe ich leider nicht, laut Wiki ist ein widgetOverride dazu da, Bedienelemente, die vom Modulautor eigentlich vorgesehen waren, verändern. So wie ich das sehe, könnte ich da eines der möglichen Widgets anzeigen lassen. Aber keines bietet ein passendes Symbol wie in meinem Eingangsbeitrag.
Meine Überlegung ging so weit:
attr widgetOverride state:Das Ding ist ja, dass dieser set-Befehl ein anderer ist, als das Reading. Andere Beispiele im Forum verfolgen da ja einen einfacheren Ansatz: attr EZ.Thermostat widgetOverride setpointHeating:knob,min:16,max:24.
Ich will ja nicht den state setzen... sondern ein Icon farblich abhängig vom state angezeigt bekommen und bei gewissen state-Zuständen den set-Befehl zum aufwachen hinterlegen.

Sowas ginge z.B. beim set-Befehl für den SoC, aber das habe ich einfach mit einem webCmd gelöst:
attr fin webCmd charge_limit_soc
Titel: Aw: stateFormat in TeslaCar verhält sich seltsam
Beitrag von: kamp am 16 Juni 2023, 16:18:00
Zitat von: Otto123 am 16 Juni 2023, 16:08:14Ja mein Fehler, ich meinte nicht die (einzeilige) Kommandozeile sondern die Raw Definition. Findest Du je nach Oberfläche / Version unter dem Device , hinter dem Copy for Forum ... Klapmenu oder beim großen Plus links oben vor der einzeiligen Kommandozeile.

Mein Held! Danke, wusste bislang gar nicht, dass man darin auch bearbeiten kann, habe das immer nur zum rauskopieren verwendet  :P
Screenshot 2023-06-16 161704.png
Titel: Aw: stateFormat in TeslaCar verhält sich seltsam
Beitrag von: betateilchen am 16 Juni 2023, 16:21:48
Zitat von: kamp am 16 Juni 2023, 16:16:13stateFormat bringt bei korrekter Implementierung das textfield-long automatisch mit. Du solltest das aber zumindest manuell per widgetOverride nachträglich machen können.
...
Das verstehe ich leider nicht, laut Wiki ist ein widgetOverride dazu da, Bedienelemente, die vom Modulautor eigentlich vorgesehen waren, verändern.

Bei meinem Vorschlag ging es nicht um das gesuchte devStateIcon, sondern darum, im Attribut stateFormat den mehrzeiligen Editor zu bekommen.

attr fin widgetOverride stateFormat:textField-long
Titel: Aw: stateFormat in TeslaCar verhält sich seltsam
Beitrag von: kamp am 16 Juni 2023, 16:24:15
Oha, da hab ich wohl zu kompliziert gedacht :) Auch mit deinem Tipp funktioniert es (wie gewohnt nun mit Editor)! Danke