update readingsGroup

Begonnen von justme1968, 07 Oktober 2013, 22:25:25

Vorheriges Thema - Nächstes Thema

justme1968

ich habe eben eine aktualisierte version der readingsGroup eingecheckt. die änderungen sind:

- es ist möglich statt dem text eines readings auch ein icon anzuzeigen.
- für state kann das auch das devStateIcon des devices sein. dieses ist dann auch anklickbar.
- es lassen sich mehrere readings eines devices auf einer zeile darstellen.

- intern einiges aufgeräumt. ich hoffe es ist dabei nichts kaputt gegangen.

hier beispiel für die beiden neuen das die verbrauchswerte aller PCA301 steckdosen in einer übersicht anzeigt. werte über 100 watt werden rot eingefärbt. die icons sind anklickbar:define Verbrauch readingsGroup TYPE=PCA301:state,power,consumption
attr Verbrauch mapping %ALIAS
attr Verbrauch nameStyle style="font-weight:bold"
attr Verbrauch style style="font-size:20px"
attr Verbrauch valueFormat {power => "%.1f W", consumption => "%.2f kWh"}
attr Verbrauch valueIcon { state => '%devStateIcon' }
attr Verbrauch valueStyle {($READING eq "power" && $VALUE > 100)?'style="color:red"':'style="color:green"'}


(siehe Anhang / see attachement)


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

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

justme1968

ich habe eben ein kleines update eingecheckt mit dem das disable attribut unterstütz wird:

1 -> die notify verarbeitung und longpoll aktualisierung wird deaktiviert
2 -> zusätzlich wird keine html tabelle mehr erzeugt sondern nur ein kurzer hinweis
3 -> auch der hinweis verschwindet und die readingsGroup verhält sich (fast) als wäre sie nicht da

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

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

justme1968

ein neues update:

es gibt jetzt die möglichkeit in der der device liste oder in der liste der readings für eine multi readings zeile einen ausdruck der form <STRING> oder <{perl}> zu verwenden.

damit lassen sich zwischenüberschriften oder label für einzelne readings erzeugen (und mit ein paar tricks auch die html ausgabe manipulieren).

im angehängten screenshot sieht man Beispiele für alle drei möglichkeiten. die zugehörige readingsGroup ist so definiert:define Verbrauch readingsGroup <Eine Überschrift> TYPE=PCA301:state,<Last>,power,<Verbrauch>,consumption,<{ReadingsTimestamp($DEVICE,"power","xx")}> <{appendTrigger($DEVICE,"clear","Alle löschen")}>
attr style style="font-size:20px"
attr valueFormat {power => "%.1f W", consumption => "%.2f kWh", consumptionTotal => undef}
attr valueIcon { state => '%devStateIcon' }
attr valueStyle {($READING eq "power" && $VALUE > 80)?'style="color:red"':'style="color:green"'}


appendTrigger ist hier: http://forum.fhem.de/index.php/topic,14425.msg106767.html#msg106767 beschrieben und kann z.b. verwendet werden um die verbrauchs zähler zurück zu setzen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

justme1968

ich habe eben ein update eingecheckt das bei ausrücken der form <{...}> einen zusätzlichen #readings parater zwischen } und > erlaubt. also z.b. so etwas...<{ReadingsTimestamp($DEVICE,"power","xx")}#power>...für das beispiel aus aus dem letzen post.

dadurch wird das modul informiert welche readings im perl ausdruck verwendet werden bzw. bei welchen readings änderungen der ausdruck dann neu ausgewertet werden soll um die anzeige dann per longpoll zu aktualisieren.

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

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

justme1968

ab morgen wird valueStyle auch bei longpoll updates ausgewertet.

d.h. wenn man z.b. werte ab einer bestimmten schwelle einfärben möchte wird die farbe 'live' aktualisiert wenn sich der wert ändert.

wichtig dabei ist das valueStyle für jeden möglichen style einen nicht leeren wert zurückliefert. also z.b. als default grün, über der schwelle rot.

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

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

andies

#5
<EDIT> hat sich erledigt. devStateStyle macht, was ich brauche. Und webcmd auch. Falls jemand die gleiche Frage hat, siehe unten meine Lösung. Vermutlich ist die aber programmtechnisch verquer, das wäre vielleicht noch interessant zu wissen.</EDIT>

Ich brauche mal Hilfe bei diesem device. Ich lasse mir eine Anrufliste aus meinem Speedport auslesen, die so in FHEM ankommt:
--angerufen
04.05.2017  18:24:06  TelNr1 Dauer 1' 40''
04.05.2017  15:19:52  TelNr2 Dauer 0' 0''
04.05.2017  11:31:16  TelNr3 Dauer 22' 13''

Nach den Minutenangaben sind \n im Text (newlines). Ich möchte das gern in der ReadingGroup aber zeilenweise und linksbündig haben. Mein erstes Problem sind genau die Zeilenumbrüche, ich kann die nicht in <br> wandeln. Eine Funktion der Form
sub HTMLFormatiereTelefonliste($) {
my ($liste) = $_[$0];
$liste =~ s/\n/<br>/g;
return $liste
}

liefert mir keine Breaks, sondern ausgeschriebene Zeichen <br> zurück. Damit scheint dann aber auch
attr Telefonliste style style="text-align:left"
witzlos, weil das ein einzeiliger Text ist  >:(

Besteht zudem die Chance, der ReadingGroup eine Möglichkeit zur Aktualisierung des ursprünglichen Dummies einzufügen? Ich habe versucht
attr Telefonliste commands { "einlesen" => "trigger Telefon einlesen"}
schaffe es aber nicht, ein webcmd "einlesen" oder etwas anderes in der ReadingGroup selbst "klickbar" zu machen. Das device Telefon (in dem die Dinge ablaufen) habe ich von der Seite, auf der ich die ReadingsGroup lese, verbannt.

<LÖSUNG>
defmod Telefon dummy
attr Telefon devStateStyle style="text-align:left;;;;"
attr Telefon setList einlesen
attr Telefon stateFormat {ReadingsVal($name,"anrufliste","")." <br><br>vom ".\
ReadingsTimestamp($name,"anrufliste","")}
attr Telefon userReadings anrufliste
attr Telefon webCmd einlesen
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann