Neues Modul readingsGroup

Begonnen von Niko, 24 August 2013, 11:59:11

Vorheriges Thema - Nächstes Thema

Phil__

Zitat von: justme1968 am 13 Juni 2014, 13:10:49
measured-temp und desired-temp müssen jeweils in anführungszeichen.

gruss
  andre

Danke, funktioniert!
Aber, verständnisshalber, mit welchem Hintergrund nur measured-temp und desired-temp? humidity ohne Anführungszeichen?

Grüße
Server: Intel DH77EB + Core i3-2120 mit Ubuntu Server 14.04
Backup: Beaglebone Black
Homematic: HM-LAN-Adapter, HM-CC-RT-DN, HM-CC-TC, HM-LC-SW1-PL2, HM-SEC-RHS, HM-SEC-SC, HM-TC-IT-WM-W-EU, HM-WDS10-TH-O
Weitere: Denon-AVR, PhilipsTV, PhilipsHue, Raspi+XBMC
Nexus 7 (WebViewControl + FTUI)

justme1968

alles was perl von sich als als string erkennt kann an dieser Stelle ohne anführungszeichen geschrieben werden.

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

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

Elektrolurch

Hallo Andre,

mir ist da noch eine Kleinigkeit aufgefallen:
Wenn der Wert eines readings = undef ist, wird er ja nicht angezeigt. Wenn aber für den Wert ein command definiert ist, wird fhemweb aufgerufen und liefert den Wert "0" als Link zurück. Außerdem gibt perl wegen dem regex-Anweisung einen Fehler.
Habe das wie folgt ausgebessert:
# Elektrolurch: $cmd kann leer sein

          if($cmd && $cmd =~ m/^([\w-]*):(\S*)?$/ ) {


Hintergrund: Wenn der Status meiner Heizungsanlage wechselt, dann werden manche einstellbaren readings undef.Ich glaube, dass das zweimal vorkommt.

Gruß

Elektrolurch

configDB und Windows befreite Zone!

MaJu

Ich bitte euch um Hilfe.
Ich nutze FHEM ausschließlich für einen Floorplan, der auf einem Display im Flur angezeigt wird.
Nun möchte ich von dutzenden Dummys, die alle einzeln auf dem Display platziert werden müssen, zu readingsGroup umschwenken, befinde mich hier noch am Anfang.

Ziel: Pro Zeile sollen alle Infos zu einem Raum dargestellt werden, dafür müssen Readings aus dem Heizungssensor und vom Fenstersensor rein. Das funktioniert soweit auch. Allerdings möchte ich auch beim Fenster-Sensor den Akku-Status als Icon sehen und dann auch wieder Icons je Fensterzustand.

So sieht die DEF aus:<>,<IST>,<SOLL>,<Ventil>,<>,<Fenster>,<>

Sensor_Wohnzimmer:measured-temp,desired-temp,actuator,battery,<{ReadingsVal("Fenster_Wohnzimmer","state","0")}@reading>,<{ReadingsVal("Fenster_Wohnzimmer","battery","0")}@reading>

Sensor_Katzenzimmer:measured-temp,desired-temp,actuator,battery,<{ReadingsVal("Fenster_Katzenzimmer","state","0")}@reading>,<{ReadingsVal("Fenster_Katzenzimmer","battery","0")}@reading>

Sensor_Schlafzimmer:measured-temp,desired-temp,actuator,battery,<{ReadingsVal("Fenster_Schlafzimmer","state","0")}@reading>,<{ReadingsVal("Fenster_Schlafzimmer","battery","0")}@reading>


Folgendes habe ich bei valueIcon, ich habe absichtlich überall zum Test erstmal das Batterie-Icon verwendet, da dieses ja teilweise funktioniert. Auch erstmal nur für das erste Fenster:{'battery.ok' => 'batterie@grey', 'battery.low' => 'batterie@red', 'state.open' => 'batterie@grey', 'Fenster_Wohnzimmer.open' => 'batterie@grey'}

Frage:
Warum wird beim obersten Fenster-Wert nicht das Batterie-Icon angezeigt, sondern das Wort "open" (siehe Anhang)? Warum wird für den Batteriewert der Sensoren das Batterie-Icon angezeigt, bei den Fensterkontakten aber nicht, obwohl das Reading auch "battery" heißt?

Was mir aufgefallen ist: Ich habe nameStyle als linksbündig formatiert, valueStyle rechtsbündig. Das funktioniert beim Namen und den Werten der Sensoren auch. Die Werte der Fensterkontakte werden aber nicht rechtsbündig dargestellt wie bei "valueStyle" eingestellt, sondern rechtsbündig wie für "nameStyle" definiert.

Ich bin eben den gesamten Thread durchgegangen, das Thema wurde mehrfach angesprochen, aber leider habe ich damit keine Lösung erzielt.
Erlebnisreiche Grüße aus Leipzig!

justme1968

#469
@Elektrolurch: ich schau es mir an.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

justme1968

@MaJu:

- es wird open statt einem icon angezeigt weil das was zwischen den <> steht kein reading ist sondern nur ein string der angezeigt wird.

- wenn du möchtest das hier ein icon angezeigt wird geht das am einfachsten in dem der <{...}> perl ausdruck direkt den namen des icons mit vorangestelltem % zurück gibt.

- du musst statt @reading den tatsächlichen namen des readings verwenden.

- wenn deine sensoren immer das schema aus dem beispiel haben und du ein passendes room attribut gesetzt hast kannst du das ganze auf eine zeile vereinfachen:Sensor_.*:measured-temp,desired-temp,actuator,battery,<{'%'.ReadingsVal("Fenster_$ROOM","state","0")}@state>,<{ReadingsVal("Fenster_$ROOM","battery","0")}@battery>hier wird aus open und closed gleich ein %open bzw. %closed was direkt als icon angezeigt wird wenn du icons mit entsprechendem namen hast.

- alles innerhalb der <> zählt als name und nicht als value. deshalb die formatierung nach nameStyle.

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

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

Phil__

Hallo,

eine kurze Frage...

lasse mir den Battery-Status meine HM Komponenten anzeigen.
In der Ausgabe steht dann "alias:battery und das Symbol"
Wie bekomme ich das :battery hinter dem ALias weg?

define rg_battery readingsGroup TYPE=CUL_HM:[Bb]attery
attr rg_battery alias Batteriestatus
attr rg_battery group BatterieStatus
attr rg_battery notime 1
attr rg_battery room Technik
attr rg_battery valueIcon {'battery.ok' => 'batterie@green', 'battery.low' => 'batterie@red'}



Grüße

Phil
Server: Intel DH77EB + Core i3-2120 mit Ubuntu Server 14.04
Backup: Beaglebone Black
Homematic: HM-LAN-Adapter, HM-CC-RT-DN, HM-CC-TC, HM-LC-SW1-PL2, HM-SEC-RHS, HM-SEC-SC, HM-TC-IT-WM-W-EU, HM-WDS10-TH-O
Weitere: Denon-AVR, PhilipsTV, PhilipsHue, Raspi+XBMC
Nexus 7 (WebViewControl + FTUI)

justme1968

zum beispiel mitattr rg_battery mapping %ALIAS

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

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

MaJu

#473
KORREKTUR:
Ich habe nun mal noch ein Bild "open.png" und auch eins "ok.png" gespeichert. Und nun werden diese Icons angezeigt. Die Icon-Definitionen werden hierbei scheinbar völlig ignoriert.

Hallo Andre,
danke für deine Mühe. Leider führt sie nicht zum Erfolg.
Ich habe es angepasst ('%'. mit rein und das Reading hinten geändert).[...]

Leider werden weiterhin nur Worte zurückgegeben wie zuvor, obwohl Icons im Ordner (www-images-default) vorhanden sind (Fenster_Wohnzimmer.open.png state.open.png battery.ok).
Obwohl ja sonst auch erstmal die Definitionen aus valueIcon greifen sollten.

FHEM-Version: Dev 5.5, aktuellste Updates geladen (gerade nochmal getestet) und schon mehrfach neu gestartet. Auf einen RasperryPi mit Raspbian. Bei den bisherigen Dummys funktionieren die Icons tadellos.
Ich habe es auch beim FHEM der Schwiegereltern (gleiche Hardware und Version wie bei mir) getestet, auch dort funktioniert es nicht mit den Icons.

__________________________________

Das vereinfachen auf eine Zeile ist eine super Sache, danke für das Schreiben!

Ich habe beim letzten Element auch noch '%'. vor das ReadingsVal gesetzt, da du es beim Reading davor auch reingeschrieben hast. Ist das richtig?

Für die Thermostate ("Sensor_...") klappt es, alle 3 werden mit den definierten Sachen ausgegeben. Die Fenster-Sensoren aber werden nicht dargestellt (auch wenn ich die Zeile ungeändert so nutze wie du sie geschrieben hast).
Ja, ich habe die 3 Raumnamen. Im Raum "Wohnzimmer" befinden sich das Thermostat "Sensor_Wohnzimmer" und auch "Fenster_Wohnzimmer". Die Anzeige "Lebensraum" kommt vom Alias bei "Sensor_Wohnzimmer", aber ändert ja am Raum nichts.

Da ich hierüber aber die Reihenfolge der Räume nicht mehr so einfach ändern kann, ist die Vereinfachung für mich weniger relavant. Bei 3 (bzw. 5) Räumen ist das bei der geringen Anzahl an Werten noch sehr überschaubar.
__________________________________

Und noch was Neues:
Der Zeitstempel wird nicht mehr ausgewiesen bei mehr als 1 Reading. Wie bekomme ich ihn aber doch ausgegeben?
Warum? Ich möchte den letzten Auslesezeitpunkt anzeigen lassen und wenn möglich soll er rot werden wenn für mehr als 10 Minuten keine aktuelle Meldung von einem Gerät kam.
Damit sehe ich, wenn es für den Außensensor zu schlechte Empfangsbedingungen waren und der Wert "uralt" ist bzw. wenn sich irgendein Gerät aufgehangen hat (ist bei der Entkalkungsfahrt des Venils passiert ...).

Danke ... Mario
Erlebnisreiche Grüße aus Leipzig!

justme1968

die icon definitionen sind nur für 'normale' readings. die <> ausdrücke sind normalerweise eher statisch.

der <> ausdruck muss den namen des icons zurück geben.

wenn das bei dir Fenster_Wohnzimmer.open.png ist dann muss %Fenster_Wohnzimmer.open zurück kommen. zum beispiel durch so etwas:<{'%'."$ALIAS.".ReadingsVal(...)}>statt dem $ALIAS. kannst du z.b. auch fts_window_1w verwenden und bekommst dann das fts_window_1w_open.svg svg icon.

der timestamp ist deshalb weg weil bei mehreren readings auf einer zeile du nicht mehr einen einzigen timestamp hast. wenn du einen möchtest kannst du mit <{ReadingsTimestamp("device","reading","")}@reading> selber bestimmen von welchem reading der timestamp sein soll.

wenn du hier etwas komplizierteres vor hast ist es besser das in eine sub in 99_myUtils.pm auszulagern und diese aufzurufen:<{meinIcon(...)}>im wiki gibt es auch hierzu beispiele.

ich würde an deiner stelle aber nicht zu viele dinge in die gleiche readingsGroup packen. empfang prüfen würde ich z.b. nicht im raum in dem ich etwas normalerweise bediene sondern in einem extra raum system und wenn es irgendwie geht automatisch per notify benachrichtigen. je nach system das du verwendest geht das mit dem ActionDetector oder dem DeviceMonitor.

wenn du trotzdem wert darauf legst in der normalen übersicht zu sehen ob es ein problem dann lass dir nur ein allgemeines problem ja/nein anzeigen. du kannst dann immer noch genau nachschauen was es ist.

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

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

MaJu

Danke Andre, das mit den Icons funktioniert nun wie gewünscht.
Auch ReadingTimestamp klappt, manchmal ist ein solcher Anstoß sehr hilfreich :-)

Nur eines noch: Wie kann ich den Timestamp auf nur die Uhrzeit (möglichst auch noch ohne Sekunden) kürzen?
Bei nur 3 (bzw. 5) auszulesenden Zeitstempeln würde ich das wenn möglich gern in der readingsGroup machen.
Erlebnisreiche Grüße aus Leipzig!

Phil__

Hallo,

Ich lasse mit dem Modul dewpoint den Taupunkt berechnen. Dieser wird ja dann unter Internals dem State hinzugefügt: Bsp.: state T:xy H:xy D:xy
Das ganze steht ja aber nicht unter Readings im State.

Wie kann ich denn Taupunkt auch auslesen und meiner ReadingsGroup hinzufügen?

Viele Grüße

phil
Server: Intel DH77EB + Core i3-2120 mit Ubuntu Server 14.04
Backup: Beaglebone Black
Homematic: HM-LAN-Adapter, HM-CC-RT-DN, HM-CC-TC, HM-LC-SW1-PL2, HM-SEC-RHS, HM-SEC-SC, HM-TC-IT-WM-W-EU, HM-WDS10-TH-O
Weitere: Denon-AVR, PhilipsTV, PhilipsHue, Raspi+XBMC
Nexus 7 (WebViewControl + FTUI)

justme1968

@MaJu: z.b. mit substr oder split den für dich relevanten treil rausschneiden.

@Phil_: du kannst in der definition von dewpoint angeben das ein normales reading erzeugt werden soll. das kannst du dann ganz normal überall verwenden. mit stateFormat bekommt du es auch wieder in den STATE deines device wenn du das möchtest.

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

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

MaJu

Nochmals Danke, ich wusste nicht, wo/wie ich das substr eintragen muss. Habe es mit probieren rausgefunden. Falls auch jemand anderes danach sucht:<{substr(ReadingsTimestamp("Balkon","state","0"),11,5)}@state>

Nun noch etwas. Ich möchte einzelne Werte hervorheben. In Antwort 208/209 wurde das schonmal besprochen, es klappt aber bei mir nicht.
Eigentlich müsste es rot geschrieben werden. Der String führt aber jeweils dazu, dass die gesamte Zeile nicht mehr angezeigt wird:<{nameStyle="color:red"}Balkon>

und auch:

<{{nameStyle="color:red"}ReadingsVal("Balkon","temperature","0").'°C'}@temperature>,


Wie muss der String richtig lauten?

Gruß ... Mario
Erlebnisreiche Grüße aus Leipzig!

Phil__

#479
Zitat von: justme1968 am 15 Juni 2014, 10:33:00
@Phil_: du kannst in der definition von dewpoint angeben das ein normales reading erzeugt werden soll. das kannst du dann ganz normal überall verwenden. mit stateFormat bekommt du es auch wieder in den STATE deines device wenn du das möchtest.
gruss
  andre

Hallo,

Danke für die schnellen Antworten. Habe es teilweise hinbekommen.

Für den State:
define dew_state dewpoint dewpoint .* T H D
Für das Reading:
define dew_all dewpoint dewpoint .* temperature humidity dewpoint


Allerdings funktioniert das nur bei meinen HM-TC-IT-WM-W-EU und den     
HM-WDS10-TH-O, bei den HM-CC-TCs wird nur der Taupunkt in State erzeugt, nicht die Readings.
Aber dafür ist das hier der falsche Thread.

Grüße
Philipp

Edit:
define dew_all dewpoint dewpoint .* measured-temp humidity dewpoint

So gehts ;-)[/i]
Server: Intel DH77EB + Core i3-2120 mit Ubuntu Server 14.04
Backup: Beaglebone Black
Homematic: HM-LAN-Adapter, HM-CC-RT-DN, HM-CC-TC, HM-LC-SW1-PL2, HM-SEC-RHS, HM-SEC-SC, HM-TC-IT-WM-W-EU, HM-WDS10-TH-O
Weitere: Denon-AVR, PhilipsTV, PhilipsHue, Raspi+XBMC
Nexus 7 (WebViewControl + FTUI)