FHEM Forum

FHEM => Sonstiges => Thema gestartet von: stauraum am 13 Januar 2020, 09:18:19

Titel: structure schaltet nicht?!
Beitrag von: stauraum am 13 Januar 2020, 09:18:19
Hallo zusammen,

ich habe mal wieder ein, für euch sicher, kleines Problem mit einem structure. Ich habe mit Testweise ein paar Xiaomi Fenster/Türkontakte bestellt und eingerichtet. Diese funktionieren jeder für sich über einen cc2351/zigbee2mqtt ohne Probleme.

Nun habe ich ein structure angelegt:

Internals:
   ATTR       strc_tueren
   CHANGEDCNT 4
   DEF        strc_tueren eg_wohnzimmer_terrassentuer eg_kueche_terrassentuer eg_flur_haustuer
   FUUID      5e1c1b4a-f33f-684f-4106-e0fc98696671dcdd
   NAME       strc_tueren
   NR         110
   NTFY_ORDER 50-strc_tueren
   STATE      true
   TYPE       structure
   Helper:
     DBLOG:
       state:
         DBLogging:
           TIME       1578902356.52314
           VALUE      true
   READINGS:
     2020-01-13 08:59:16   LastDevice      eg_flur_haustuer
     2020-01-13 08:59:16   LastDevice_Abs  eg_flur_haustuer
     2020-01-13 08:59:16   state           true
Attributes:
   clientstate_behavior relative
   clientstate_priority true false
   devStateIcon true:fts_door@green false:fts_door_open@red
   icon       fts_door
   room       97_Logik


An Devices selber wurden die userattr automatisch gepflegt.


Internals:
   CID        zigbee_0x00158d000424a2b4
   DEF        zigbee_0x00158d000424a2b4
   DEVICETOPIC eg_kueche_terrassentuer
   FUUID      5e10b052-f33f-684f-191d-4ece8f2de83b4412
   IODev      mqtt2server
   LASTInputDev mqtt2server
   MSGCNT     2
   NAME       eg_kueche_terrassentuer
   NR         103
   STATE      true
   TYPE       MQTT2_DEVICE
   mqtt2server_MSGCNT 2
   mqtt2server_TIME 2020-01-13 08:57:10
   Helper:
     DBLOG:
       battery:
         DBLogging:
           TIME       1578902230.03217
           VALUE      100
       contact:
         DBLogging:
           TIME       1578902230.03217
           VALUE      true
       linkquality:
         DBLogging:
           TIME       1578902230.03217
           VALUE      18
       voltage:
         DBLogging:
           TIME       1578902230.03217
           VALUE      3035
   READINGS:
     2020-01-04 16:33:38   associatedWith  MQTT2_zigbee2mqtt
     2020-01-13 08:57:10   battery         100
     2020-01-13 08:57:10   contact         true
     2020-01-13 08:57:10   linkquality     18
     2020-01-13 08:57:10   voltage         3035
Attributes:
   IODev      mqtt2server
   devStateIcon true:fts_door_right@green false:fts_door_right_open@red
   icon       fts_door_right_open
   readingList zigbee2mqtt/0x00158d000424a2b4:.* { json2nameValue($EVENT) }
   room       10_Erdgeschoß -> 02_Küche
   stateFormat contact
   userattr   strc_tueren strc_tueren_map structexclude


Dummerweise schaltet das structure aber nicht um?! Es bleibt immer auf true.

Vllt. habt ihr ja noch einen Tip, wo ich suchen könnte?

VG
stauraum
Titel: Antw:structure schaltet nicht?!
Beitrag von: CoolTux am 13 Januar 2020, 09:26:06
Dir fehlt ein state Reading im MQTT Device. Lege es an und dann sollte auch die Structure schalten.
Titel: Antw:structure schaltet nicht?!
Beitrag von: rudolfkoenig am 13 Januar 2020, 09:29:22
Zitatich habe mal wieder ein, für euch sicher, kleines Problem mit einem structure.
Diese Annahme ist leider falsch, insb. wenn die clientstate Attribute gesetzt wurden.

ZitatVllt. habt ihr ja noch einen Tip, wo ich suchen könnte?
Das Wissen um _alle_ state Readings ist relevant, d.h. ich wuerde gerne die Ausgabe sehen von:
list eg_wohnzimmer_terrassentuer,eg_kueche_terrassentuer,eg_flur_haustuer state

Titel: Antw:structure schaltet nicht?!
Beitrag von: stauraum am 13 Januar 2020, 09:37:34
Das State-Reading ist vorhanden, allerdings groß geschrieben.


eg_wohnzimmer_terrassentuer     true
eg_kueche_terrassentuer     true
eg_flur_haustuer         true


Das wird mir auch so im structure angezeigt.


Probably associated with
eg_flur_haustuer
true
MQTT2_DEVICE
eg_kueche_terrassentuer
true
MQTT2_DEVICE
eg_wohnzimmer_terrassentuer
true
MQTT2_DEVICE


:o
Titel: Antw:structure schaltet nicht?!
Beitrag von: CoolTux am 13 Januar 2020, 09:48:15
Zitat von: stauraum am 13 Januar 2020, 09:37:34
Das State-Reading ist vorhanden, allerdings groß geschrieben.


eg_wohnzimmer_terrassentuer     true
eg_kueche_terrassentuer     true
eg_flur_haustuer         true


Das wird mir auch so im structure angezeigt.


Probably associated with
eg_flur_haustuer
true
MQTT2_DEVICE
eg_kueche_terrassentuer
true
MQTT2_DEVICE
eg_wohnzimmer_terrassentuer
true
MQTT2_DEVICE


:o

Das STATE ist kein Reading sondenr ein Internal und dieses wird wirft kein Event welches aber von structure benötigt wird.
Bitte sei so nett und befolge die Nachfragen von Rudi.
Zitat von: rudolfkoenig am 13 Januar 2020, 09:29:22
Das Wissen um _alle_ state Readings ist relevant, d.h. ich wuerde gerne die Ausgabe sehen von:
list eg_wohnzimmer_terrassentuer,eg_kueche_terrassentuer,eg_flur_haustuer state
Titel: Antw:structure schaltet nicht?!
Beitrag von: rudolfkoenig am 13 Januar 2020, 09:57:14
ZitatDas STATE ist kein Reading sondenr ein Internal und dieses wird wirft kein Event welches aber von structure benötigt wird.
Anders ausgedrueckt: man _muss_ ueberall das state _Reading_ setzen, sonst wird das nix mit dem structure :)
Titel: Antw:structure schaltet nicht?!
Beitrag von: stauraum am 13 Januar 2020, 09:57:51

list eg_wohnzimmer_terrassentuer,eg_kueche_terrassentuer,eg_flur_haustuer state


bringt keinen Output. Da es das klein geschriebene Reading nicht gibt ...
Titel: Antw:structure schaltet nicht?!
Beitrag von: CoolTux am 13 Januar 2020, 10:00:19
Dann musst Du es setzen. Entweder über die MQTT Konfiguration (kenne mich damit nicht aus) oder über ein userreadings

attr DEVICENAME userreadings state:contact:.* { ReadingsVal($name,'contact','none') }
Titel: Antw:structure schaltet nicht?!
Beitrag von: rudolfkoenig am 13 Januar 2020, 10:03:39
Das Attribut fuer die "MQTT Konfiguration" heisst in diesem Fall jsonMap, und ist ein Attribut der MQTT2_DEVICE Instanzen.
Titel: Antw:structure schaltet nicht?!
Beitrag von: TomLee am 13 Januar 2020, 10:24:00
jsonmap greift bei mir in dem Fall eigenartigerweise aber nicht.
Der Sensor hat jetzt schon mehrfach ausgelöst:


Internals:
   CID        zigbee_0x00158d000302cc1e
   DEF        zigbee_0x00158d000302cc1e
   DEVICETOPIC MQTT2_zigbee_0x00158d000302cc1e
   FUUID      5cee4ef2-f33f-78f5-9b6b-00a7475b7ccd180f
   IODev      MQTT2_Server
   LASTInputDev MQTT2_Server
   MQTT2_Server_MSGCNT 114
   MQTT2_Server_TIME 2020-01-13 10:11:58
   MSGCNT     114
   NAME       MQTT2_zigbee_0x00158d000302cc1e
   NR         148
   STATE      Motion: false<br>Luminance: 318
   TYPE       MQTT2_DEVICE
   JSONMAP:
     occupancy  state
   READINGS:
     2019-05-29 11:20:50   associatedWith  MQTT2_Zigbee_Bridge
     2020-01-13 10:11:58   battery         91
     2020-01-13 10:11:58   illuminance     318
     2020-01-13 10:11:58   linkquality     2
     2020-01-13 10:11:58   occupancy       false
     2020-01-13 10:11:58   voltage         2985
Attributes:
   IODev      MQTT2_Server
   imageLink  /fhem/deviceimages/mqtt2/RTCGQ11LM.jpg
   jsonMap    occupancy:state
   model      L_08_Human_Motion_TempSensor
   readingList zigbee2mqtt/0x00158d000302cc1e:.* { json2nameValue($EVENT) }
   room       MQTT2_DEVICE,Rollladen
   stateFormat Motion: occupancy<br>Luminance: illuminance


Gruß

Thomas
Titel: Antw:structure schaltet nicht?!
Beitrag von: stauraum am 13 Januar 2020, 10:33:27
Also bei mir greift weder userreading noch jsonMap:


attr eg_wohnzimmer_terrassentuer state:contact:.* { ReadingsVal($name,'contact','none') }



attr eg_wohnzimmer_terrassentuer jsonMap contact:state


Es taucht kein Reading "state" auf.  :o
Titel: Antw:structure schaltet nicht?!
Beitrag von: rudolfkoenig am 13 Januar 2020, 10:42:51
Wenn man jsonMap (neu) setzt, muss die passende Zeile in readingsList von
  zigbee2mqtt/0x00158d000424a2b4:.* { json2nameValue($EVENT) }
nach
  zigbee2mqtt/0x00158d000424a2b4:.* { json2nameValue($EVENT,'',$JSONMAP) }
geaendert werden.


Zitatattr eg_wohnzimmer_terrassentuer state:contact:.* { ReadingsVal($name,'contact','none') }
Das muesste
attr eg_wohnzimmer_terrassentuer userReadings state:contact:.* { ReadingsVal($name,'contact','none') }
sein, habs gerade mit einem dummy getestet.
Titel: Antw:structure schaltet nicht?!
Beitrag von: stauraum am 13 Januar 2020, 10:47:58
bei jsonMap hab ich mich einfach auf das Template zigbee2mqtt_ContactSensor gestützt. Habe das auf alle drei Kontakte gesetzt, da war neben jsonMap auch die readingList richtig gesetzt. Genützt hat es nur nichts ... #argh!

Das userReading war schon richtig in FHEM einggbn. Hatte es hier nur schnell runter getippt. Aber wenn ich es richtig verstanden habe brauche ist das userreading ja mit jsonMap nicht ... ;-)
Titel: Antw:structure schaltet nicht?!
Beitrag von: rudolfkoenig am 13 Januar 2020, 10:56:07
ZitatGenützt hat es nur nichts ...
Wenn ich das untersuchen soll, brauche ich ein FHEM Log Mitschnitt einer Nachricht, mit vorher gesetzten "attr mqtt2server verbose 5"
Titel: Antw:structure schaltet nicht?!
Beitrag von: TomLee am 13 Januar 2020, 10:57:16
Ach ja, die Erklärung (https://forum.fhem.de/index.php/topic,106677.msg1005898.html#msg1005898) warum und weshalb war schon wieder in Vergessenheit geraten ;D
Titel: Antw:structure schaltet nicht?!
Beitrag von: stauraum am 13 Januar 2020, 11:23:00
vllt. war ich einfach zu hektisch ...


list eg_wohnzimmer_terrassentuer,eg_kueche_terrassentuer,eg_flur_haustuer state


bringt jetzt:


eg_wohnzimmer_terrassentuer 2020-01-13 10:41:11    true
eg_kueche_terrassentuer 2020-01-13 11:16:02    true
eg_flur_haustuer     2020-01-13 10:39:43    true


Das strc_tueren steht nun auf undefined. Unter "Probably associated with" steht nun:


eg_flur_haustuer
close
MQTT2_DEVICE
eg_kueche_terrassentuer
close
MQTT2_DEVICE
eg_wohnzimmer_terrassentuer
close
MQTT2_DEVICE


Muss jetzt bei "clientstate_priority"

true false oder
open close rein?!

Fragen über Fragen ...

Das Log wird a weng unübersichtlich denke ich. Da schreiben alle 10 Sekunden auch diverse Steckdosen mit Tasmota rein ...
Titel: Antw:structure schaltet nicht?!
Beitrag von: stauraum am 13 Januar 2020, 14:09:21

2020-01-13 13:34:00 Global global ATTR eg_wohnzimmer_terrassentuer verbose 5
2020-01-13 13:34:00 Global global ATTR eg_kueche_terrassentuer verbose 5
2020-01-13 13:34:00 Global global ATTR eg_flur_haustuer verbose 5
2020-01-13 13:34:00 Global global ATTR strc_tueren verbose 5
2020-01-13 13:57:05 structure strc_tueren true
2020-01-13 13:57:05 MQTT2_DEVICE eg_kueche_terrassentuer linkquality: 15
2020-01-13 13:57:05 MQTT2_DEVICE eg_kueche_terrassentuer voltage: 3035
2020-01-13 13:57:05 MQTT2_DEVICE eg_kueche_terrassentuer battery: 100
2020-01-13 13:57:05 MQTT2_DEVICE eg_kueche_terrassentuer close
2020-01-13 14:00:46 structure strc_tueren true
2020-01-13 14:00:46 MQTT2_DEVICE eg_flur_haustuer voltage: 3025
2020-01-13 14:00:46 MQTT2_DEVICE eg_flur_haustuer linkquality: 0
2020-01-13 14:00:46 MQTT2_DEVICE eg_flur_haustuer close
2020-01-13 14:00:46 MQTT2_DEVICE eg_flur_haustuer battery: 100
2020-01-13 14:01:23 structure strc_tueren true
2020-01-13 14:01:23 MQTT2_DEVICE eg_wohnzimmer_terrassentuer battery: 100
2020-01-13 14:01:23 MQTT2_DEVICE eg_wohnzimmer_terrassentuer close
2020-01-13 14:01:23 MQTT2_DEVICE eg_wohnzimmer_terrassentuer linkquality: 18
2020-01-13 14:01:23 MQTT2_DEVICE eg_wohnzimmer_terrassentuer voltage: 3035
2020-01-13 14:06:07 structure strc_tueren undefined
2020-01-13 14:06:07 MQTT2_DEVICE eg_kueche_terrassentuer battery: 100
2020-01-13 14:06:07 MQTT2_DEVICE eg_kueche_terrassentuer open
2020-01-13 14:06:07 MQTT2_DEVICE eg_kueche_terrassentuer linkquality: 18
2020-01-13 14:06:07 MQTT2_DEVICE eg_kueche_terrassentuer voltage: 3035



2020.01.13 13:57:04 5: in:  PUBLISH: 0^(0)(30)zigbee2mqtt/0x00158d000424a2b4{"battery":100,"voltage":3035,"contact":true,"linkquality":15}
2020.01.13 13:57:04 4:   mqtt2server_192.168.2.10_53230 zigbee2mqtt PUBLISH zigbee2mqtt/0x00158d000424a2b4:{"battery":100,"voltage":3035,"contact":true,"linkquality":15}
2020.01.13 13:57:04 5: mqtt2server: dispatch autocreate=simple\000zigbee2mqtt\000zigbee2mqtt/0x00158d000424a2b4\000{"battery":100,"voltage":3035,"contact":true,"linkquality":15}
2020.01.13 13:57:04 4: MQTT2_DEVICE_Parse: eg_kueche_terrassentuer zigbee2mqtt/0x00158d000424a2b4 => { json2nameValue($EVENT,'',$JSONMAP) }
2020.01.13 13:58:04 4:   mqtt2server_192.168.2.10_53230 zigbee2mqtt PINGREQ
2020.01.13 13:59:04 4:   mqtt2server_192.168.2.10_53230 zigbee2mqtt PINGREQ
2020.01.13 14:00:04 4:   mqtt2server_192.168.2.10_53230 zigbee2mqtt PINGREQ
2020.01.13 14:00:45 5: in:  PUBLISH: 0](0)(30)zigbee2mqtt/0x00158d00040aa902{"battery":100,"voltage":3025,"contact":true,"linkquality":0}
2020.01.13 14:00:45 4:   mqtt2server_192.168.2.10_53230 zigbee2mqtt PUBLISH zigbee2mqtt/0x00158d00040aa902:{"battery":100,"voltage":3025,"contact":true,"linkquality":0}
2020.01.13 14:00:45 5: mqtt2server: dispatch autocreate=simple\000zigbee2mqtt\000zigbee2mqtt/0x00158d00040aa902\000{"battery":100,"voltage":3025,"contact":true,"linkquality":0}
2020.01.13 14:00:45 4: MQTT2_DEVICE_Parse: eg_flur_haustuer zigbee2mqtt/0x00158d00040aa902 => { json2nameValue($EVENT,'',$JSONMAP) }
2020.01.13 14:01:22 5: in:  PUBLISH: 0^(0)(30)zigbee2mqtt/0x00158d00040ab06c{"battery":100,"voltage":3035,"contact":true,"linkquality":18}
2020.01.13 14:01:22 4:   mqtt2server_192.168.2.10_53230 zigbee2mqtt PUBLISH zigbee2mqtt/0x00158d00040ab06c:{"battery":100,"voltage":3035,"contact":true,"linkquality":18}
2020.01.13 14:01:22 5: mqtt2server: dispatch autocreate=simple\000zigbee2mqtt\000zigbee2mqtt/0x00158d00040ab06c\000{"battery":100,"voltage":3035,"contact":true,"linkquality":18}
2020.01.13 14:01:22 4: MQTT2_DEVICE_Parse: eg_wohnzimmer_terrassentuer zigbee2mqtt/0x00158d00040ab06c => { json2nameValue($EVENT,'',$JSONMAP) }
2020.01.13 14:02:22 4:   mqtt2server_192.168.2.10_53230 zigbee2mqtt PINGREQ
2020.01.13 14:03:22 4:   mqtt2server_192.168.2.10_53230 zigbee2mqtt PINGREQ
2020.01.13 14:04:22 4:   mqtt2server_192.168.2.10_53230 zigbee2mqtt PINGREQ
2020.01.13 14:05:22 4:   mqtt2server_192.168.2.10_53230 zigbee2mqtt PINGREQ
2020.01.13 14:06:07 5: in:  PUBLISH: 0_(0)(30)zigbee2mqtt/0x00158d000424a2b4{"battery":100,"voltage":3035,"contact":false,"linkquality":18}
2020.01.13 14:06:07 4:   mqtt2server_192.168.2.10_53230 zigbee2mqtt PUBLISH zigbee2mqtt/0x00158d000424a2b4:{"battery":100,"voltage":3035,"contact":false,"linkquality":18}
2020.01.13 14:06:07 5: mqtt2server: dispatch autocreate=simple\000zigbee2mqtt\000zigbee2mqtt/0x00158d000424a2b4\000{"battery":100,"voltage":3035,"contact":false,"linkquality":18}
2020.01.13 14:06:07 4: MQTT2_DEVICE_Parse: eg_kueche_terrassentuer zigbee2mqtt/0x00158d000424a2b4 => { json2nameValue($EVENT,'',$JSONMAP) }
2020.01.13 14:07:07 4:   mqtt2server_192.168.2.10_53230 zigbee2mqtt PINGREQ
root@bruno ~ #


Stand ist jetzt aktuell:
strc_tueren steht auf true, wenn alle Kontakte geschlossen sind. Geht einer auf false, geht das strc_tueren auf undefined.

Ich habe das strc_tueren ohne jegliche Attribute laufen lassen. Ich gehe mal davon aus das ich clientstate_priority "true false" setzen muss. Ist die Reihenfolge "true false" oder "false true" relevant?
Titel: Antw:structure schaltet nicht?!
Beitrag von: rudolfkoenig am 13 Januar 2020, 18:24:47
Wie ich geschrieben habe: sobald irgendetwas mit clientstate kommt, muss ich selbst in der Doku nachschauen.
Kommt daher, dass dieser Feature nicht von mir stammt, und mein Hirn weigert sich daraus dauerhaft einen Sinn zu machen.

In der Doku (https://fhem.de/commandref_modular.html#clientstate_priority) steht aber relativ klar beschrieben:
ZitatIf clientstate_behavior is set to relative, then you have to set the attribute "clientstate_priority" with all states of the defined devices to this structure in descending order[...]

Man braucht also:attr strc_tueren clientstate_behavior relative
attr strc_tueren clientstate_priority false true
Titel: Antw:structure schaltet nicht?!
Beitrag von: stauraum am 14 Januar 2020, 07:48:56
Sehr verwirrend ... ;-)

Zumindest funktioniert es nun so aber erst einmal. Was mich noch irritiert ist, das das angehängt notify jedesmal auslöst, wenn ein Kontakt auf geht, auch wenn der State selber schon auf false ist.

Sprich, ein Kontakt geht auf, 2 bleiben zu. Das structure geht auf false, das notify wird ausgelöst. Soweit so gut. Geht jetzt aber ein zweiter Kontakt auf false wird ja am structure eigentlich nichts mehr geändert, das notify aber trotzdem noch einmal ausgelöst?