[gelöst] DOIF Format für ui_Table card im devStateIcon

Begonnen von enno, 25 April 2021, 10:21:16

Vorheriges Thema - Nächstes Thema

enno

Moin moin,

ich hole mir täglich die RKI Zahlen wie hier beschrieben: https://forum.fhem.de/index.php?topic=113798.0
Die Darstellung für Hannover sieht dann so aus:
defmod RKI_H DOIF ##
attr RKI_H uiTable {package ui_Table;;}\
card ([RKI7:Region_Hannover:col24],"7-Tage-Inzidenz Hannover","air",50,160,120,0,undef,undef,0,130,1,50)


Frage: Kann ich das ganze auch als devStateIcon definieren? Meine Versuche gehen leider schief, da ich keine Idee habe wie ich das mit ReadingsVal kombinieren kann.

attr RKI_H devStateIcon {ui_Table::card(ReadingsVal("RKI7","Region_Hannover",0,"col24"),"7-Tage-Inzidenz Hannover","air",50,160,120,0,undef,undef,0,130,1,50)}

Über Tips würde ich mir freuen.

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC mit Proxmox und Debian

Damian

#1
Das geht direkt nicht, da [RKI7:Region_Hannover:col24] nicht einem ReadingsVal entspricht. Die "col"-Syntax initiiert eine Menge Sachen in einem DOIF, um die Daten zu sammeln und für die card-Funktion aufzubereiten. Es wird kein Wert zurückgegeben, sondern eine Referenz auf eine hash-Struktur.

Man kann es aber recht einfach auf indirektem Wege schaffen, card-Funktionalität in einem devStateIcon unterzubringen.

Zur Vorgehensweise am Beispiel der Temperatur eines Aussensensors.

Zu erst wird ein Collector-DOIF gebaut, der die Daten des Sensors sammelt und die Referenz in einem Reading ablegt:

defmod di_collect_data DOIF {\
set_Reading ("temperature",[Aussensensor:temperature:col1],1);;\
## hier könnten noch weitere set_Reading-Befehle folgen für weitere Device-Reading-Kombinationen, die man wo anders per card visualisieren möchte
}


Im jeweiligen Device wird dann nur noch das passende devStateIcon auf das entsprechende Reading des Collectors mit der Referenz definiert:

defmod Aussensensor CUL_WS 5
attr Aussensensor devStateIcon {ui_Table::card(ReadingsVal("di_collect_data","temperature",""),"Außentemperatur","temp_outside",-10,30,undef,undef,"°C",\&ui_Table::temp_hue)}




Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

enno

#2
Moin Damian,

Danke! Hat geklappt:
defmod di_RKI DOIF {set_Reading ("Hannover",[RKI7:Region_Hannover:col24],1);;;;}
attr di_RKI devStateIcon {ui_Table::card(ReadingsVal("di_RKI","Hannover",""),"7-Tage-Inzidenz Hannover","air",50,160,120,0,undef,undef,0,130,1,50);;;;}


So kann ich das Ganze in meinen Floorplan einbauen.

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC mit Proxmox und Debian

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

enno

Moin Damian,

Wenn ich FHEM nach einem Update neu starte, habe ich die Fehlermeldungen im Log:

2021.05.11 17:17:59 1: devStateIcon RKI7: Can't use string ("HASH(0x563ab93d56f8)") as a HASH ref while "strict refs" in use at ./FHEM/98_DOIF.pm line 4534.

Wenn ich das Reading im DOIF lösche und neu anlege ist die Fehlermeldung weg aber auch die Vergangenheitsdaten. Hast du dafür auch noch einen Trick auf Lager?

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC mit Proxmox und Debian

Damian

ja, es gibt da ein Problem. Die Auswertung der gespeicherten Daten muss erst erfolgen, wenn das System hochgefahren ist und die Readings mit den gespeicherten Daten geladen sind, das ist in dieser Konstellation nicht der Fall. Ich muss mir da für diesen Fall noch etwas überlegen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Ich habe die aktuelle Version aus dem Post mit Floorplan getestet. Es funktioniert über uiState, wie erhofft. Die Grafik wird sauber dargestellt und übersteht einen Neustart mit allen Daten, wenn man vor dem Neustart ein save ausgeführt hat.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ToKa

Hallo Damian,

ich habe das jetzt bei mir mal ausprobiert und das DOIF mit dem devStateIcon nachgebaut, echt cool!

Kann man das auch mit mehreren "cards" machen? Und wenn ja, wie sieht dann die Syntax aus?

VG
Torsten
RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight

Damian

Zitat von: ToKa am 13 Mai 2021, 17:23:44
Hallo Damian,

ich habe das jetzt bei mir mal ausprobiert und das DOIF mit dem devStateIcon nachgebaut, echt cool!

Kann man das auch mit mehreren "cards" machen? Und wenn ja, wie sieht dann die Syntax aus?

VG
Torsten

Mit devStateIcon wirst du keinen Spaß mit cards auf Dauer haben, spätestens nach dem Neustart funktioniert es mit card nicht mehr, du musst die neue Funktionalität über uiState nutzen: https://forum.fhem.de/index.php/topic,121004.0.html

Dort kannst du so viele cards reinpacken wie du willst.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ToKa

RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight

enno

Moin Damian,

habe die neue Version bei mir eingebaut. Funktioniert perfekt. Vielen Dank!

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC mit Proxmox und Debian