[PATCH] SetExtensions (on-for-timer etc.) für MQTT_Device

Begonnen von ThoTo, 05 Januar 2018, 18:38:26

Vorheriges Thema - Nächstes Thema

hexenmeister

#15
Zitat von: Master_Nick am 16 Februar 2018, 00:37:32
Habe herausgefunden, was mein Problem ist das Publishset gibt zwar an man könne dort für an und aus 2 strings angeben die dann auf das Topic gesendet werden - es ist aber fest verdrahtet mit on und off daher mein ganzes Problem mit eventmap und co :-)

Das ist falsch. Gesendet wird alles, was man angibt. Die Werte beeinflussen nur die set-Liste.
Habe hier was dazu schon geschrieben (incl. einer funktionierenden Beispielkonfiguration): https://forum.fhem.de/index.php/topic,84448.msg767485.html#msg767485
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

fuppking

Hallo Thomas hier meine Daten

defmod Basic1 MQTT_DEVICE
attr Basic1 IODev MQTT_Broker
attr Basic1 publishSet ON OFF cmnd/Basic/POWER
attr Basic1 room MQTT
attr Basic1 stateFormat transmission-state
attr Basic1 subscribeReading_Sensor tele/Basic/SENSOR
attr Basic1 subscribeReading_presence tele/Basic/LWT
attr Basic1 subscribeReading_state stat/Basic/POWER
attr Basic1 useSetExtensions 1
attr Basic1 webCmd ON:OFF

setstate Basic1 outgoing publish sent
setstate Basic1 2018-02-15 20:35:11 presence Offline
setstate Basic1 2018-02-15 20:39:52 state on

Danke für deine Hilfe

lg
setstate Basic1 2018-02-15 20:39:52 transmission-state outgoing publish sent

Master_Nick

Zitat von: hexenmeister am 16 Februar 2018, 11:42:53
Das ist falsch. Gesendet wird alles, was man angibt. Die Werte beeinflussen nur die set-Liste.
Habe hier was dazu schon geschrieben (incl. einer funktionierenden Beispielkonfiguration): https://forum.fhem.de/index.php/topic,84448.msg767485.html#msg767485

ACK  8)
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Master_Nick

Okay dann bin ich hier wohl doch richtig, da das andere nicht zutraf.

Mit folgendem Setup ist Toggle nicht nutzbar:

Internals:
   CFGFN     
   IODev      MQTT_Broker
   NAME       Sonoff_S20_1
   NR         130
   STATE      off
   TYPE       MQTT_DEVICE
   qos        *:1
   retain     *:1
   READINGS:
     2018-02-16 03:29:16   online          true
     2018-02-16 12:37:24   state           false
     2018-02-16 12:37:24   transmission-state incoming publish received
   message_ids:
   publishSets:
     :
       topic      homeland/haushalt/elektrik/sonoff/sonoff-s20-1/outlet/on/set
       values:
         true
         false
   sets:
     false     
     true       
   subscribe:
     homeland/haushalt/elektrik/sonoff/sonoff-s20-1/$online
     homeland/haushalt/elektrik/sonoff/sonoff-s20-1/outlet/on
   subscribeExpr:
     ^homeland\/haushalt\/elektrik\/sonoff\/sonoff-s20-1\/\$online$
     ^homeland\/haushalt\/elektrik\/sonoff\/sonoff-s20-1\/outlet\/on$
   subscribeReadings:
     homeland/haushalt/elektrik/sonoff/sonoff-s20-1/$online:
       cmd       
       name       online
     homeland/haushalt/elektrik/sonoff/sonoff-s20-1/outlet/on:
       cmd       
       name       state
Attributes:
   IODev      MQTT_Broker
   alexaName  Paravent
   alexaRoom  Schlafzimmer
   alias      Paravent
   devStateIcon on:10px-kreis-gruen off:10px-kreis-rot .*:hourglass
   eventMap   true:on false:off
   group      Licht
   icon       ge_wht_steckdose
   publishSet true false homeland/haushalt/elektrik/sonoff/sonoff-s20-1/outlet/on/set
   qos        1
   retain     1
   room       Echo,Schlafzimmer
   stateFormat state
   subscribeReading_online homeland/haushalt/elektrik/sonoff/sonoff-s20-1/$online
   subscribeReading_state homeland/haushalt/elektrik/sonoff/sonoff-s20-1/outlet/on
   useSetExtensions 1
   webCmd     on:off


Es schaltet nur ein, nicht aus. Hab ich da nun noch einen Fehler? ??? Auch die Timer funktionieren nicht.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

hexenmeister

Zum timer kann ich nichts sagen, habe nie genutzt. Was funktioniert bei toggle nicht? Was genau meinst Du damit? Klick aufs Icon? Das klappt bei mir ohne Probleme.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Master_Nick

#20
Der Klick klappt, aber es schaltet nur auf on/true und beim nächsten Klick nicht auf off/false sondern erneut/nochmal auf on/true.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

fuppking

Hallo Thomas

anbei meine list...


Internals:
   IODev      MQTT_Broker
   NAME       Basic1
   NR         141
   STATE      outgoing publish sent
   TYPE       MQTT_DEVICE
   READINGS:
     2018-02-15 20:35:11   presence        Offline
     2018-02-15 20:39:52   state           on
     2018-02-15 20:39:52   transmission-state outgoing publish sent
   message_ids:
   publishSets:
     :
       topic      cmnd/Basic/POWER
       values:
         ON
         OFF
   sets:
     OFF       
     ON         
   subscribe:
     tele/Basic/SENSOR
     tele/Basic/LWT
     stat/Basic/POWER
   subscribeExpr:
     ^tele\/Basic\/SENSOR$
     ^tele\/Basic\/LWT$
     ^stat\/Basic\/POWER$
   subscribeReadings:
     stat/Basic/POWER:
       cmd       
       name       state
     tele/Basic/LWT:
       cmd       
       name       presence
     tele/Basic/SENSOR:
       cmd       
       name       Sensor
Attributes:
   IODev      MQTT_Broker
   publishSet ON OFF cmnd/Basic/POWER
   room       MQTT
   stateFormat transmission-state
   subscribeReading_Sensor tele/Basic/SENSOR
   subscribeReading_presence tele/Basic/LWT
   subscribeReading_state stat/Basic/POWER
   useSetExtensions 1
   webCmd     ON:OFF

Danke für die Hilfe

hexenmeister

Zitat von: Master_Nick am 16 Februar 2018, 13:34:37
Der Klick klappt, aber es schaltet nur auf on/true und beim nächsten Klick nicht auf off/false sondern erneut/nochmal auf on/true.
Sonderbar, bei mir geht es. Der Unterschied ist natürlich, dass ich die Originalversion teste, ohne den Extension-Patch. Könnte natürlich sein, dass das Problem darin begründet ist.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

ThoTo

@hexenmeister
Dürfte ich dich bitten bei Gelegenheit mal einen Blick über den Patch zu werfen?
Würde mich über Feedback/Korrekturen freuen und erst dann mal den Maintainer kontaktieren....

Danke Thomas
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)

Master_Nick

Ohne die Extension war toggle (meine ich) gar nicht verfügbar bei mir.  :D
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

fuppking

bei mir klappt nix rein garnix....
so zum angang mal gesagt wenn ich webcmd OF:OFF:TOGGLE drinn habe geht auch toggle ohne probleme.
ich habe in der set auswahl nur ON und OFF sonst nix.

@Thomas: ich hab dein Patch  eingeflegt und auch useSetReExternsions auf 1 stehn aber mein dringend
gebrauchtes on-for-timer funzt nicht. ich habe weiter oben schon mal meine settings gepoostet.

Bitte schauch dir die mal an.

Danke Dir und weiter so

ThoTo

Zitat von: fuppking am 17 Februar 2018, 14:43:38
@Thomas: ich hab dein Patch  eingeflegt und auch useSetReExternsions auf 1 stehn aber mein dringend
gebrauchtes on-for-timer funzt nicht. ich habe weiter oben schon mal meine settings gepoostet.

Ich habe das versucht bei mir nachzubauen und mit folgender Definition funktioniert es:

defmod Basic1 MQTT_DEVICE
attr Basic1 IODev MQTT_Broker
attr Basic1 publishSet on off cmnd/Basic/POWER
attr Basic1 room MQTT
attr Basic1 stateFormat state
attr Basic1 subscribeReading_Sensor tele/Basic/SENSOR
attr Basic1 subscribeReading_presence tele/Basic/LWT
attr Basic1 subscribeReading_state stat/Basic/POWER
attr Basic1 useSetExtensions 1


Bitte lösche das bestehende Device, starte FHEM neu, starte deinen MQTT Broker neu und lege dann das Device neu an.

LG Thomas
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)

Master_Nick

@ThoTo ist das bei mir abweichend, dass es da nicht geht?
Wäre cool wenn du einmal drüber schauen würdest - ist etwas höher oder halt hier das Link:

https://forum.fhem.de/index.php/topic,82240.msg767528.html#msg767528
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

hexenmeister

Zitat von: ThoTo am 16 Februar 2018, 17:03:04
@hexenmeister
Dürfte ich dich bitten bei Gelegenheit mal einen Blick über den Patch zu werfen?

Bin kein Experte, was 'setExtensions' angeht, habe noch nie verwendet. Habe mir das jetzt ein wenig angeschaut. Der Patch sieht für mich in Ordnung aus. Ich kann jedoch das zuletzt diskutierte Problem nachvollziehen. Hier schlägt eventMap leider dazwischen. Mapt man on auf true und entsprechend off auf falsch, dann kommt anstatt 'on-for-timer' eben 'true-for-timer' in Modul an und wird so auch brav per MQTT verschicht. (Ohne Ummappen funktioniert bei mir alles.)

Ich habe versucht, eventMap explizit mit Perl-Expression vorzugeben:
{dev=>{ 'true'=>'on', 'false'=>'off'}, usr=>{ 'on'  => 'true', 'off' => 'false'} }

Damit werden Befehle nicht mehr 'kaputgemappt', allerdings habe ich dann den selbn Effekt, wie auch schon vorher mit 'toggle'. Es wird eingeschaltet, dann kommt statt dem Befehl zum Ausschalten ein Fragezeichen an. Warum, verstehe ich bis jetzt nicht. Den Grund müsste man wahrscheinlich im Modul SetExtensions.pm suchen.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

ThoTo

Zitat von: hexenmeister am 17 Februar 2018, 20:17:23
Bin kein Experte, was 'setExtensions' angeht, habe noch nie verwendet. Habe mir das jetzt ein wenig angeschaut. Der Patch sieht für mich in Ordnung aus. Ich kann jedoch das zuletzt diskutierte Problem nachvollziehen. Hier schlägt eventMap leider dazwischen. Mapt man on auf true und entsprechend off auf falsch, dann kommt anstatt 'on-for-timer' eben 'true-for-timer' in Modul an und wird so auch brav per MQTT verschicht. (Ohne Ummappen funktioniert bei mir alles.)

Danke dir fürs Drüberschauen!!!

ZitatIch habe versucht, eventMap explizit mit Perl-Expression vorzugeben:
{dev=>{ 'true'=>'on', 'false'=>'off'}, usr=>{ 'on'  => 'true', 'off' => 'false'} }

Damit werden Befehle nicht mehr 'kaputgemappt', allerdings habe ich dann den selbn Effekt, wie auch schon vorher mit 'toggle'. Es wird eingeschaltet, dann kommt statt dem Befehl zum Ausschalten ein Fragezeichen an. Warum, verstehe ich bis jetzt nicht. Den Grund müsste man wahrscheinlich im Modul SetExtensions.pm suchen.

Hab jetzt auch 2 Stunden damit verbracht das Verhalten zu analysieren.
Keine Chance es in den Griff zu bekommen.

atttr device eventMap on-for-timer:on-for-timer off-for-timer:off-for-timer on-till:on-till off-till:off-till on-till-overnight:on-till-overnight off-till-overnight:off-till-overnight true:on false:off
Das führt zum fehlerhaften toggle und neben den setExtension-Befehlen werden mir keine Textfelder mehr angezeigt, via set xxx on-for-timer x funktionierts normal.

{dev=>{ 'true'=>'on', 'false'=>'off'}, usr=>{ 'on'  => 'true', 'off' => 'false'} }
Mir werden dann keine SetExtensions angezeigt, was mache ich falsch??

LG Thomas
KNX | MQTT | Docker | Sonos | FHEMapp

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)