update readingsGroup

Begonnen von justme1968, 03 September 2013, 22:59:01

Vorheriges Thema - Nächstes Thema

Elektrolurch

Hallo Andre,

so beim schnellen Durchsehen:

Ausblenden über "nonames" geht.

Mit der Berechnung von eval in der Lookup2 gebe ich Dir recht, glaube, dass ich das auch im Kommentar geschrieben hatte.
Was aber wohl fehlt, ist dass ich in Lookup auch im hash einen perl-Ausdruck zulasse, der dann über eval ausgewertet wird.

mapping {'rd1' => '{perl...code}',

Ich fand die "Symetrie ganz spannend und nützlich, da auch nur eine kleine Änderung notwendig war in lookup.

Dann noch eine Frage:

Wenn zu einem reading ein command definiert wird (z.B. textField oder Menü), geht zwar das mapping noch (was ganz nützlich ist und ich gestern noch zum verschönern eingebaut habe), aber valueFormat geht nicht.
Die Idee war, hinter dem Textfield oder Menü ohne Spaltenvorschub über valueFormat die Einheit (Celsius, Watt usw) noch auszugeben.

Leider habe ich das noch nicht so ganz durchblickt, wie das command ausgegeben wird, scheint irgendwie durch einen Aufruf an fhem-web zu gehen.
Und der command-Block liegt in einem großen else-Zweig (zweimal?).
Um da besser durchzublicken, müsste ich erst Mal hinter jeder } einen Kommentar schreiben, welcher if-Block da zu Ende ist.

Vielleicht hast Du doch noch einen Tipp für mich.

Gruß und danke.

Elektrolurch
configDB und Windows befreite Zone!

justme1968

mapping {'rd1' => '{perl...code}', aber genau das sollte doch gehen. zuerst wird der hash ausgewertet und wenn ein {...} zurück kommt wird das noch duch das eval geschickt. das gilt für lookup2.

in lookup habe ich das noch nicht frei geschaltet weil ich angst habe das dadurch irgendetwas schief geht und nicht mehr kompatibel ist.

das geht leider nicht weil der html text für das menü direkt von fhemweb erzeugt wird und ich da nicht wirklich etwas einfügen ohne zu parsen und zu verstehen was da zurück kommt. das ausblenden des labels ist schon nicht ganz sauber und wird früher oder später schief gehen wenn sich an der fhemweb seite etwas ändert.

du kannst über das die style attribute aber den spalten vorschub für diese spalten so klein machen das es nicht mehr wirklich auffällt.

gruss
  andre

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

ich hab die version von oben schon mal eingecheckt.

mal sehen wie wir das mit dem lookup machen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Elektrolurch

Sorry, was ich natürlich nicht gemacht habe, war die in dem .p File die html - Beschreibung zu erweitern.

Mal eine Frage dazu: Wie macht man das am Besten? Welchen Editor? Ich muss ja immer schauen, ob der auch mit meinem Screenreader ordentlich ztusammen spielt.
Bei den Forumsseiten geht es z.B. leider nicth, während des Editierens das TExtfeld zu verlassen, um z.B. die Knöpfe für Code oder zitieren usw. zu aktivieren...
Dann ist nämlich die Selektion im Textfeld weg und der Knopf nicht mehr wirksam.

Was mich zunächst einmal auch daran gehindert hat, Beiträge ins Wiki zu stellen.
configDB und Windows befreite Zone!

justme1968

du kannst jeden editor verwenden der dir liegt. wichtig ist das ganze anschliestend ein mal durch commandref_join.pl zu jagen und nach fehlern dort zu schauen.

für das forum kann ich dir leider keinen tip geben. ausser die formatierungsanweisungen einfach selber von hand zu schreiben.
du brauchst aber nicht unbedingt die selektion. die cursor position reicht. dann werden die öffnenden und schliessenden tags direkt nebeneinander eingefügt und du kannst dann direkt dazwischen schreiben. ich weiss aber natürlich nicht ob da auch der screenreader dazwischenfunkt.

im wiki ist es das gleiche. die meisten schreiben die formatierung einfach von hand hin. das ist nicht wirklich aufwändig.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

SABINEMUELLER

Hallo ich habe die readingsGroup mit meinem MAX System ausprobiert und klappt ganz gut.

Ich habe aber noch folgende Probleme mit der Anpassung.
Folgender Code läuft ohne Probleme macht aber bei beiden Geräten (MAX_Heizung_Brenner oder MAX_Heizung_Pumpe) das gleiche Icon.

#  Diverse readings aller Schaltkontakte des Typs MAX.
define Heizungsstatus readingsGroup <%icoHeizungAus>,<Status>,<Batterie> MAX_Heizung_Brenner.*:onoff,battery MAX_Heizung_Pumpe.*:onoff,battery
attr Heizungsstatus nameStyle style="color:blue;;font-weight:bold"
attr Heizungsstatus room develop
attr Heizungsstatus valueIcon {'onoff.0' => 'icoHeizungAn','onoff.1' => 'icoHeizungAus','battery.ok' => 'batterie@lightgreen','battery.low' => 'batterie@red'}

Hier soll später abhängig vom Gerät (MAX_Heizung_Brenner oder MAX_Heizung_Pumpe) ein anderes Icon eingesetzt werden.
Dieser Code läuft nicht.

attr Heizungsstatus valueIcon {if ($NAME eq "MAX_Heizung_Brenner") ['onoff.0' => 'icoHeizungAn','onoff.1' => 'icoHeizungAus','battery.ok' => 'batterie@lightgreen','battery.low' => 'batterie@red'] else ['onoff.0' => 'icoHeizungAn','onoff.1' => 'icoHeizungAus','battery.ok' => 'batterie@lightgreen','battery.low' => 'batterie@red']}


Aehnliches Problem habe ich bei den Heizthermostaten.
Hier soll unter der Ueberschrift Fenster ein Open/Closed Window Icon Angezeigt werden, wenn Sollwert=Window_Open_Temperatur.

#  Diverse readings aller Heizungstermostate des Typs MAX.
define Heizungstermostate readingsGroup <%sani_heating>,<Ventil>,<Istwert>,<Sollwert>,<Betriebsart>,<>,<>,<Batterie>,<Fenster> MAX_HT.*:valveposition,temperature,desiredTemperature,mode,<%Auto>,<%Manuell>,battery window.*:window
attr Heizungstermostate commands { 'Heizungstermostate.Auto' => 'set $DEVICE desiredTemperature auto', 'Heizungstermostate.Manuell' => 'set $DEVICE desiredTemperature manual', 'desiredTemperature' => 'desiredTemperature:' }
attr Heizungstermostate mapping {'desiredTemperature' => '','desiredTemperature.auto' => 'Auto','desiredTemperature.manual' => 'Manuell'}
attr Heizungstermostate nameStyle style="color:blue;;font-weight:bold"
attr Heizungstermostate room develop
attr Heizungstermostate valueFormat { 'valveposition' => "%3d%%",'desiredTemperature' => "%.1f&deg;;C", 'temperature' => "%.1f&deg;;C" }
attr Heizungstermostate valueIcon {'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red','window.open' => 'fts_window_1w@lightgreen', 'window.closed' => 'fts_window_1w_open@red', 'mode.auto' => 'sani_heating_automatic@green', 'mode.manual' => 'sani_heating_manual@red' }

Hat einer von euch Tipp fuer mich.
Als Anhang ein Screen-Shot von meiner momentanen Anzeige.

Mfg. Susanne


justme1968

für valueIcon wird für das mapping aktuell nur die hash version unterstütz und noch kein perl code. das ist zwar im prinzip schon vorbereitet ich weiss aber noch nicht ob das rückwärts kompatibel ist. du müsstest auch in deinem code die eckigen klammern gegen geschweifte austauschen.

um unterschiedliche icons zu bekommen wäre zur zeit das einfachste in den gekappten icon den device namen oder device alias mit einzubauen und jeweils passende icons auf platte zu legen. also etwas in der art:..., 'onoff.0' => 'ico$ALIASAn', ...

du brauchst dann icons mit namen icoHeizungsbrennerAn, icoHeizungsbrennerAus, icoHeizungspumpeAn und icoHeizungspumpeAus.

für das reading abhängig open/closed icon gilt das oben gesagt zur perl funktion auch. hier gibt es aber keinen workaround. ich muss es einbauen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

SABINEMUELLER

Hallo hab Sache mit dem Brenner Pumpen Icon wie folgt nach deinem Vorschlag geändert:

#  Die Alias-Raumnamen werden angezeigt.
#  Die Überschriften sollen blau (fett) sein.
#  Die "readingsgroup" wird dem Raum "MAX" zugeordnet.
#  Es wird noch die Einheit °C hinter den Temperaturwerten angezeigt.   
#  Es wird noch die Einheit % hinter der Ventilstellung angezeigt.   
#  Für den Batteriezustand wird ein farbiges Icons anstatt Klartextwerte     
#  angezeigt    
#  Diverse readings aller Schaltkontakte des Typs MAX.
define Heizungsstatus readingsGroup <%icoHeizungAus>,<Status>,<Batterie> MAX_Heizung_Brenner.*:onoff,battery MAX_Heizung_Pumpe.*:onoff,battery
attr Heizungsstatus group Heizungsstatus
attr Heizungsstatus nameStyle style="color:blue;;font-weight:bold"
attr Heizungsstatus room Heizung
attr Heizungsstatus valueIcon {'onoff.0' => 'ico_$DEVICE_An','onoff.1' => 'ico_$DEVICE_Aus','battery.ok' => 'batterie@lightgreen','battery.low' => 'batterie@red'}

Klappt ganz gut.

In Bezug auf die Frage nach der Window Open Funktion:
Kann ich mir ein eigenes Reading (Variable oder so ...) aus "Sollwert=Window_Open_Temperatur" erzeugen und damit in die ReadingsGroup gehen um mir das Window Open anzeigen zu lassen?

Danke für die Hilfe.

justme1968

ja klar. schau dir mal userReadings an. damit geht das.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

mcbo

Hallo,

ich lese jetzt das Thema schon 2 Tage hoch und runter und komme nicht so richtig weiter.

Für meine 7 Homatic Thermostate "HM-CC-RT-DN",
möchte ich mit readingsGroup eine Liste bauen.

Wie bekomme ich bei den DropDowns die Beschriftungen "controlMode" und "desired-temp" entfernt?

Bei dem "HM-CC-RT-DN" stehen die meisten Werte im Kanal "_Clima".
Wie kann ich den Batteriestatus aus dem Hauptkanal hinzufügen?

Hier im Forum sind zwar einzelen Codeschnippsel aufgeführt, aber kein komplettes Beispiel für ein "HM-CC-RT-DN".  :-\

Hier mein Code:
# Heizungsinfos anzeigen
define Heizungswerte readingsGroup <%sani_heating>, < >,<Mode>,<Ventil>,<Temp>,<Soll>,<Setting> NAME=.*._hz.Clima:controlMode,ValvePosition,measured-temp,desired-temp,<%auto>,<%manuell>

attr Heizungswerte commands { 'Heizungswerte.auto' => 'set $DEVICE controlMode auto', 'Heizungswerte.manuell' => 'set $DEVICE controlMode manual','controlMode' => 'controlMode:','desired-temp' => 'desired-temp:'}

justme1968

über  mapping kannst du controllMode und desired-temp auf &nbsp; also einen leer string mappen.

der patch um das label komplett zu entfernen ist noch in arbeit. 

ein reading aus einem anderen device bekommst du mit reading@device in die readingsGroup.

schau im forum oder wiki nach beispielen. die gibt es auch zu deinen devices.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

wkarl

Hall mcbo,

hier meine Umsetzung.
define Heizung_EG readingsGroup <%sani_heating@darkblue>,<%temperature_humidity@darkblue>,<%temp_inside@darkblue>,<SOLL FH>,<Modus FH>,<SOLL HK>,<Modus HK>,<%sani_heating_temp@darkblue>,<>,<> ^(?!File).*(Wohnzimmer|Esszimmer|Kueche|Buero|DieleWindfang|GaesteToilette)(_TC):humidity,measured-temp,desired-temp,controlMode@{$DEVICE."_Climate"},desired-temp@{$DEVICE=~s/_TC//g;;$DEVICE."_HK_Clima"},controlMode@{$DEVICE=~s/_TC//g;;$DEVICE."_HK_Clima"},actuator,battery,battery@{$DEVICE=~s/_TC//g;;$DEVICE."_HK"}
attr Heizung_EG commands { 'controlMode' => 'controlMode:', 'desired-temp' => 'desired-temp:' }
attr Heizung_EG fp_H_HZ_Erdgeschoss 50,170,0,
attr Heizung_EG icon it_television
attr Heizung_EG mapping { 'Buero_TC' => '%ROOM', 'DieleWindfang_TC' => '%ROOM', 'Esszimmer_TC' => '%ROOM', 'GaesteToilette_TC' => '%ROOM', 'Kueche_TC' => '%ROOM', 'Wohnzimmer_TC' => '%ROOM', 'desired-temp' => '', 'controlMode' => '' }
attr Heizung_EG nameStyle style=color:darkblue;;font-weight:bold;;text-align:center
attr Heizung_EG room Heizung-Raeume,Z-HA-FloorPlans
attr Heizung_EG valueColumn { 'actuator' => 7, 'battery' => 8 }
attr Heizung_EG valueFormat { 'actuator' => "%.0f %%", 'humidity' => "%.0f %%", 'desired-temp' => "%.1f &deg;;C", 'measured-temp' => "%.1f &deg;;C" }
attr Heizung_EG valueIcon {'battery.ok' => 'measure_battery_100@green', 'battery.low' => 'measure_battery_25@red' }
attr Heizung_EG valueStyle { if($READING eq "humidity" && $VALUE < 45) { 'style="color:orange;;text-align:center"'} elsif ($READING eq "humidity" && $VALUE >= 45 && $VALUE <=60) { 'style="color:black;;text-align:center"'} elsif ($READING eq "humidity" && $VALUE > 60) { 'style="color:magenta;;text-align:center"'} elsif ($READING eq "measured-temp" && $VALUE < 20) { 'style="color:blue;;text-align:center"'} elsif ($READING eq "measured-temp" && $VALUE >= 20 && $VALUE <= 24) { 'style="color:black;;text-align:center"'} elsif ($READING eq "measured-temp" && $VALUE > 24) { 'style="color:red;;text-align:center"'} }


und der screenshot dazu.

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

mcbo

Vielen Dank,

ich habe das jetzt erst einmal so gelöst:

define Heizungswerte readingsGroup <%sani_heating>, < >,<%sani_heating_manual>,<%sani_heating_temp>,<%temp_control>,<%hc_wht_regler>,<%batterie>,<> sz_hz:controlMode@{$DEVICE."_Clima"},measured-temp@{$DEVICE."_Clima"},desired-temp@{$DEVICE."_Clima"},ValvePosition@{$DEVICE."_Clima"},battery,batteryLevel
attr Heizungswerte commands { 'Heizungswerte.auto' => 'set $DEVICE controlMode auto', 'Heizungswerte.manual' => 'set $DEVICE controlMode manual','controlMode' => 'controlMode:auto,manual','desired-temp' => 'desired-temp:'}
attr Heizungswerte group Heizung
attr Heizungswerte mapping { "controlMode" => " ", "desired-temp" => " "}
attr Heizungswerte nameStyle style=color:white;;font-weight:bold;;text-align:center
attr Heizungswerte room Heizung
attr Heizungswerte valueFormat { 'ValvePosition' => "%.0f%", 'desired-temp' => "%.1f&deg;;C", 'measured-temp' => "%.1f&deg;;C" ,'batteryLevel' => "%.1fV"}
attr Heizungswerte valueIcon {'battery.ok' => 'measure_battery_100@green', 'battery.low' => 'measure_battery_25@red'}


Jetzt würde ich noch gerne das DropDown-Feld für Auto/Manuell,
gegen ein Icon mit Toggle-Funktion tauschen.

Wie muß ich das anfangen? Mit einem Dummy?

Gruß

Marcel

justme1968

mit valueIcon kannst du icons für reading werte anzeigen lassen. mit commands kannst du festlegen was beim klick auf das icon passieren soll.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968