structure mit Devices "Switch Detect: on/off" soll den Status on/off annehmen

Begonnen von grappa24, 12 Dezember 2013, 21:36:25

Vorheriges Thema - Nächstes Thema

grappa24

Nachdem ich hier http://forum.fhem.de/index.php/topic,17360.msg114072.html#msg114072 mit Eurer Hilfe meine Gedanken sortiert habe, jetzt nochmal klar formuliert mein Problem:

Ich möchte in einer structure mehrere Devices vom Typ HMS100-TFK zusammenfassen, die alle "Switch Detect: on" bzw. "Switch Detect: off" annehmen können. Die übergeordnete Struktur soll aber die Zustände "on" (wenn nur einer der Devices "Switch Detect: on" ist) oder "off" (wenn alle Devices "Switch Detect: off" sind) annehmen. Mit clientstate_priority hab ich es nicht geschafft, da dessen Syntax nicht den "/" als Delimiter erlaubt ...

Dann hatte ich zunächst versucht, mit eventMap die einzelnen Devices auf on|off umzuschreiben, was sich aber nur auf STATE und nicht auf das Reading state auswirkt - und die übergeordnete structure wertet wohl die Readings aus ?

VG, Dieter
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

Strippenzieher

#1
Ich habe gerade so etwas ähnliches im anderen Thread geschrieben vllt. hilft das ja:

Zitatattr <StructureNAME> clientstate_behavior relative
attr <StructureNAME> clientstate_priority present absent

das hatte zur folge, dass present der Status war wenn ein Gerät in der Structure present war und absent wenn kein Gerät present war.

in deinem Fall dann wohl:

attr <StructureNAME> clientstate_behavior relative
attr <StructureNAME> clientstate_priority on off

EDIT:

Habe gerade in deinem anderen Thread gesehen, dass du das schon probiert hast ... also ignorieren ...

Matscher

Hallo,

in der Attribute-Liste vom HMS müsste bei Dir ein <structureName>_map auftauchen. Das benutzte ich um das Reading switch_detect, welches on oder off sein kann, in die Structure zu mappen.


define FensterKGstruct structure structFensterKG Keller_Tuer
attr FensterKGstruct clientstate_behavior relative
attr FensterKGstruct clientstate_priority on off
...



define Keller_Tuer HMS 7b12
...
attr Keller_Tuer structFensterKG FensterKGstruct
attr Keller_Tuer structFensterKG_map switch_detect
Rasp 3
CUL V3 868Mhz + nanoCUL 868Mhz als RFR + nanoCUL 868Mhz für Homematic + SIGNALduino
Zigbee CC2531 - Aquara TempSensor
MySensors Ethernet Gateway, Water meter, Gas meter
Modul: 09_CUL_FHTTK.pm (assumed), culfw part HAS_FHT_TF

rudolfkoenig

Das Problem mit clientstate_priority und das _map Attribut ist, dass sie erstmal an Leerzeichen trennen, und deswegen "Switch Detect: on" nicht spezifizierbar ist. Ich habe fuer structure das Trennen jetzt wie beim eventmap durch optionalen / am Anfang ergaenzt, und das Mapping mit stateFormat geloest:

define tf structure tf tfk1 tfk2
attr tf clientstate_behavior relative
attr tf clientstate_priority /Switch Detect: on/Switch Detect: off/
attr tf stateFormat {ReadingsVal("tf","state","") eq "Switch Detect: on" ? "on" : "off"}


Eigentlich waeren die _map Attribute fuer sowas zustaendig, leider steht hier nicht nur das Leerzeichen, sondern auch das Doppelpunkt im Weg. Wie man das elegant loest, ist mir noch ein Raetsel.

justme1968

in den _map attributen regex zuzulassen wäre nicht elegant genug?

attr tfk1 tf_map /.*on:on/.*off:off/

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

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

grappa24

Matschers Lösung hat auch bei mir auf Anhieb funktioniert, Rudolfs Ansatz nicht (werde diesen aber nochmals testen, vlt. hab ich beim Umsetzen was falsch gemacht).

Auf jeden Fall: "Danke, Danke, Danke, ..."

VG, Dieter
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

grappa24

Zitat von: Matscher am 13 Dezember 2013, 08:43:16
in der Attribute-Liste vom HMS müsste bei Dir ein <structureName>_map auftauchen. Das benutzte ich um das Reading switch_detect, welches on oder off sein kann, in die Structure zu mappen.
Ist das irgendwo beschrieben? ... jetzt möcht ichs auch verstehen, nachdem es funktioniert ...
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

Matscher

Sehr gut :)

Zitat von: grappa24 am 13 Dezember 2013, 17:18:06
Ist das irgendwo beschrieben? ... jetzt möcht ichs auch verstehen, nachdem es funktioniert ...

Beschrieben ist das Ganze etwas versteckt bei http://fhem.de/commandref.html#structure unter dem Punkt "clientstate_priority".

Oder auch hier: https://groups.google.com/d/msg/fhem-developers/8vwAZd04TjY/3OTZly2Sxb4J
ZitatAlle Devices einer structure erhalten folgendes Attribut:
<struct-type>_map
  -> hier stellt man ein, welches Reading des Devices für die Structure  relevant ist, und ob ein mapping vorgenommen werden soll (mapping ähnlich zu eventmap)
Rasp 3
CUL V3 868Mhz + nanoCUL 868Mhz als RFR + nanoCUL 868Mhz für Homematic + SIGNALduino
Zigbee CC2531 - Aquara TempSensor
MySensors Ethernet Gateway, Water meter, Gas meter
Modul: 09_CUL_FHTTK.pm (assumed), culfw part HAS_FHT_TF

grappa24

In einer anderen structure möchte ich zwei EIB-Devices und ein HMS100TFK zusammenfassen

define ug structure ug_type ug1_eib ug2_eib ug2_hms

Die EIB-Devices sind einfach nur on|off, das HMS-Device wieder Switch Detect: on|Switch Detect: off mit den bekannen Readings.

Die structure ug soll dann on|off sein.

Hab auch hier schon mit clientstate_priority experimentiert, geht das vlt. auch mit <struct-type>_map?
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

rudolfkoenig

Zitatattr tfk1 tf_map /.*on:on/.*off:off/
Eingecheckt.

Damit kommt mein Beispiel auch ohne stateFormat aus:

define tf structure tf tfk1 tfk2
attr tf clientstate_behavior relative
attr tf clientstate_priority on off
attr tfk1 tf_map .*on:on .*off:off
attr tfk2 tf_map .*on:on .*off:off


grappa24

Zitat von: grappa24 am 13 Dezember 2013, 23:22:51
In einer anderen structure möchte ich zwei EIB-Devices und ein HMS100TFK zusammenfassen

define ug structure ug_type ug1_eib ug2_eib ug2_hms

Die EIB-Devices sind einfach nur on|off, das HMS-Device wieder Switch Detect: on|Switch Detect: off mit den bekannen Readings.

Die structure ug soll dann on|off sein.

Hab auch hier schon mit clientstate_priority experimentiert, geht das vlt. auch mit <struct-type>_map?
ich geb mir mal selbst die Antwort: "Klar geht das ...

attr ug_type clientstate_priority on off
attr ug_type_map switch_detect


Matscher, you saved my day .....
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...