FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: homeuser2003 am 12 Juni 2022, 22:15:34

Titel: Aus "True" und "False" Toggle machen
Beitrag von: homeuser2003 am 12 Juni 2022, 22:15:34
Mahlzeit,

ich bastle schon ne ganz Weile mit FHEM und vieles klappt auch. Ich bin aber nur "Copy & Paste" Programmierer mit einigermaßener Auffassungsgabe (kann also Transferleistungen erbringen, bringe es aber nicht selbst zusammen).

Für Folgendes Problem wäre ich für Hilfe dankbar:
Ich nutze neuerdings Zigbee Rauchmelder, deren "Sirene" man per Zigbee aktivieren und wieder deaktivieren kann UND wenn der Rauchmelder tatsächlich auslöst auch die Sirene stumm schalten kann.

Sieht nun wie in der Anlage aus.

Ich würde nun gern "Alarm_on" und "Alarm_off" zu einem "Toggle" zusammenfügen. Leider unterstützen die Rauchmelder kein Toggle sondern ich muss "True" oder "False" über Zigbee2MQTT senden. Vermutlich nicht weiter schwer, aber ich bekomms nicht hin.

Besten Dank für jeden Tipp - und jaaa ich hab in die Commandref geschaut, aber so richtig "sprechend" finde ich die bei meinem begrenzten Vorkenntnislevel leider oft nicht...

homeuser
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: supernova1963 am 13 Juni 2022, 07:31:10
Mit list [device] wäre konkretere Hilfe möglich.

Aber schau mal ob ggf. das Attribut devStateIcon weiter hilft.
attr [device Name] devStateIcon [aktueller Wert von state]:[zugehöriges icon]:[auszuführender command bei Klicken]
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: homeuser2003 am 13 Juni 2022, 08:53:48
Zunächst mal vielen Dank für die schnelle Reaktion!

Wieder was gelernt - "List" kannte ich bisher nicht. Hier der Output und wie man sieht habe ich mich bereits an DevStateIcon probiert:
Internals:
   CID        zigbee_RMTest
   DEF        zigbee_RMTest
   FUUID      62a5b65c-f33f-8ada-b02a-14cfb9ad120f34d7
   IODev      MQTT
   LASTInputDev MQTT
   MQTT_CONN  MQTT_127.0.0.1_54120
   MQTT_MSGCNT 17
   MQTT_TIME  2022-06-12 16:45:57
   MSGCNT     17
   NAME       MQTT2_zigbee_RMTest
   NR         440
   STATE      false
   TYPE       MQTT2_DEVICE
   eventCount 22
   READINGS:
     2022-06-12 14:19:54   IODev           MQTT
     2022-06-12 16:45:57   alarm           false
     2022-06-12 16:45:22   associatedWith  MQTT2_zigbee_pi
     2022-06-12 11:49:41   attrTemplateVersion 20200904
     2022-06-12 16:45:57   battery         6553
     2022-06-12 16:45:57   device_applicationVersion 72
     2022-06-12 16:45:57   device_dateCode
     2022-06-12 16:45:57   device_friendlyName RMTest
     2022-06-12 16:45:57   device_hardwareVersion 1
     2022-06-12 16:45:57   device_ieeeAddr 0xa4c138bad9e8ab6d
     2022-06-12 16:45:57   device_manufacturerID 4417
     2022-06-12 16:45:57   device_manufacturerName _TZE200_5d3vhjro
     2022-06-12 16:45:57   device_model    SA12IZL
     2022-06-12 16:45:57   device_networkAddress 59913
     2022-06-12 16:45:57   device_powerSource Battery
     2022-06-12 16:45:57   device_stackVersion 0
     2022-06-12 16:45:57   device_type     EndDevice
     2022-06-12 16:45:57   device_zclVersion 3
     2022-06-12 16:45:57   linkquality     69
     2022-06-12 16:45:57   silence_siren   false
     2022-06-12 16:45:57   smoke           false
     2022-06-12 15:38:06   state           Alarm_off
Attributes:
   devStateIcon false:secur_smoke_detector@green true:secur_smoke_detector_blink@red
   devicetopic zigbee2mqtt/RMTest
   model      zigbee2mqtt_smokeDetector
   readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }
zigbee2mqtt/RMTest/set/silence_siren:.* silence_siren
zigbee2mqtt/RMTest/set/alarm:.* alarm
   room       MQTT2_DEVICE
   setList    Alarm_on:noArg $DEVICETOPIC/set {"alarm":"true"}
Alarm_off:noArg $DEVICETOPIC/set {"alarm":"false"}
Silence_on:noArg $DEVICETOPIC/set {"silence_siren":"true"}
Silence_off:noArg $DEVICETOPIC/set {"silence_siren":"false"}
   stateFormat smoke
   webCmd     Alarm_on:Alarm_off:Silence_on:Silence_off
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: TomLee am 13 Juni 2022, 09:14:30
Eine Möglichkeit es anzugehen:
attr MQTT2_zigbee_RMTest setList toggle:noArg {my $cmd=ReadingsVal($NAME,'alarm','') eq 'false' ? 'true' : 'false');return qq($DEVICETOPIC/set { "command": "$cmd" } )}
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: homeuser2003 am 13 Juni 2022, 10:24:32
Scheint ne Klammer zu fehlen:
syntax error at (eval 91193) line 1, near "'false')"
Missing right curly or square bracket at (eval 91193) line 1, at end of line
syntax error at (eval 91193) line 1, at EOF

Unknown command return, try help

Ich probier es mal selbst, vielleicht komm ich ja drauf...

DANKE
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: TomLee am 13 Juni 2022, 10:43:18
Zitatattr MQTT2_zigbee_RMTest setList toggle:noArg {my $cmd=ReadingsVal($NAME,'alarm','') eq 'false' ? 'true' : 'false');return qq($DEVICETOPIC/set { "command": "$cmd" } )}

Lass die letzte Klammer bei dem if mal weg, sollte dann klappen, wenn immer noch nicht dann vor dem ReadingsVal eine öffnende ergänzen.
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: homeuser2003 am 13 Juni 2022, 12:13:11
Leider nein bzw. bin ich zu blöd zu. So würd ers nehmen
attr MQTT2_zigbee_RMTest setList toggle:noArg {my $cmd=ReadingsVal($NAME,'alarm','') eq 'false' ? 'true' : 'false'};return qq($DEVICETOPIC/set { "command": "$cmd" } )}

Dann kommt aber gar nicht die volle SetList in den Attributes an:
Internals:
   CID        zigbee_RMTest
   DEF        zigbee_RMTest
   FUUID      62a5b65c-f33f-8ada-b02a-14cfb9ad120f34d7
   IODev      MQTT
   LASTInputDev MQTT
   MQTT_CONN  MQTT_127.0.0.1_56060
   MQTT_MSGCNT 29
   MQTT_TIME  2022-06-13 12:05:16
   MSGCNT     29
   NAME       MQTT2_zigbee_RMTest
   NR         440
   STATE      false
   TYPE       MQTT2_DEVICE
   eventCount 47
   READINGS:
     2022-06-12 14:19:54   IODev           MQTT
     2022-06-13 12:05:16   alarm           false
     2022-06-13 09:13:07   associatedWith  MQTT2_zigbee_pi
     2022-06-12 11:49:41   attrTemplateVersion 20200904
     2022-06-13 12:05:15   availability    online
     2022-06-13 12:05:16   battery         6553
     2022-06-13 12:05:16   device_applicationVersion 72
     2022-06-13 12:05:16   device_dateCode
     2022-06-13 12:05:16   device_friendlyName RMTest
     2022-06-13 12:05:16   device_hardwareVersion 1
     2022-06-13 12:05:16   device_ieeeAddr 0xa4c138bad9e8ab6d
     2022-06-13 12:05:16   device_manufacturerID 4417
     2022-06-13 12:05:16   device_manufacturerName _TZE200_5d3vhjro
     2022-06-13 12:05:16   device_model    SA12IZL
     2022-06-13 12:05:16   device_networkAddress 59913
     2022-06-13 12:05:16   device_powerSource Battery
     2022-06-13 12:05:16   device_stackVersion 0
     2022-06-13 12:05:16   device_type     EndDevice
     2022-06-13 12:05:16   device_zclVersion 3
     2022-06-13 10:56:01   linkquality     69
     2022-06-13 12:05:16   silence_siren   false
     2022-06-13 12:05:16   smoke           false
     2022-06-13 12:08:22   state           toggle
Attributes:
   devStateIcon false:secur_smoke_detector@green true:secur_smoke_detector_blink@red
   devicetopic zigbee2mqtt/RMTest
   model      zigbee2mqtt_smokeDetector
   readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }
zigbee2mqtt/RMTest/set/silence_siren:.* silence_siren
zigbee2mqtt/RMTest/set/alarm:.* alarm
zigbee2mqtt/RMTest/availability:.* availability
   room       MQTT2_DEVICE
   setList    toggle:noArg {my $cmd=ReadingsVal($NAME,'alarm','') eq 'false' ? 'true' : 'false'}
   stateFormat smoke
   webCmd     toggle
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: TomLee am 13 Juni 2022, 12:30:30
Bin der Meinung das es wie zuletzt vorgeschlagen, ohne die Klammer nach dem if (war ein Kopierfehler) klappen sollte.

Hatten wir bei s2m auch mal so umgestzt, mit dem mute-setter.

mute:noArg { my $value = ReadingsVal($NAME,'mute','false') eq "true" ? "unmute" : "mute"; qq(sonos/RINCON_000E58F7F67C01400/control { "command": "$value" } ) }

Ich bin jetzt am arbeiten, evt kann wer anders was zu sagen.




Lists lesen sich besser in Code-Tags ( die Raute über den Smileys)
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: Beta-User am 13 Juni 2022, 12:34:10
Zitat von: TomLee am 13 Juni 2022, 12:30:30
evt kann wer anders was zu sagen.
https://fhem.de/commandref_modular.html#command, dort "escape rules" sollte weiterhelfen...
Konkret für das FHEM-Kommandofeld:
attr MQTT2_zigbee_RMTest setList toggle:noArg {my $cmd=ReadingsVal($NAME,'alarm','') eq 'false' ? 'true' : 'false';;return qq($DEVICETOPIC/set { "command": "$cmd" } )}

Das ergibt dann in der Anzeige innerhalb des Attribut-Edits nur ein ";"...
ZitatLists lesen sich besser in Code-Tags ( die Raute über den Smileys)
+1
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: homeuser2003 am 13 Juni 2022, 13:26:04
Danke, die Snytax passt nun. Und das mit der # mach ich auch direkt


Internals:
   CID        zigbee_RMTest
   DEF        zigbee_RMTest
   FUUID      62a5b65c-f33f-8ada-b02a-14cfb9ad120f34d7
   IODev      MQTT
   LASTInputDev MQTT
   MQTT_CONN  MQTT_127.0.0.1_56350
   MQTT_MSGCNT 31
   MQTT_TIME  2022-06-13 12:18:48
   MSGCNT     31
   NAME       MQTT2_zigbee_RMTest
   NR         440
   STATE      false
   TYPE       MQTT2_DEVICE
   eventCount 52
   READINGS:
     2022-06-12 14:19:54   IODev           MQTT
     2022-06-13 12:18:48   alarm           false
     2022-06-13 09:13:07   associatedWith  MQTT2_zigbee_pi
     2022-06-12 11:49:41   attrTemplateVersion 20200904
     2022-06-13 12:18:47   availability    online
     2022-06-13 12:18:48   battery         6553
     2022-06-13 12:18:48   device_applicationVersion 72
     2022-06-13 12:18:48   device_dateCode
     2022-06-13 12:18:48   device_friendlyName RMTest
     2022-06-13 12:18:48   device_hardwareVersion 1
     2022-06-13 12:18:48   device_ieeeAddr 0xa4c138bad9e8ab6d
     2022-06-13 12:18:48   device_manufacturerID 4417
     2022-06-13 12:18:48   device_manufacturerName _TZE200_5d3vhjro
     2022-06-13 12:18:48   device_model    SA12IZL
     2022-06-13 12:18:48   device_networkAddress 59913
     2022-06-13 12:18:48   device_powerSource Battery
     2022-06-13 12:18:48   device_stackVersion 0
     2022-06-13 12:18:48   device_type     EndDevice
     2022-06-13 12:18:48   device_zclVersion 3
     2022-06-13 10:56:01   linkquality     69
     2022-06-13 12:18:48   silence_siren   false
     2022-06-13 12:18:48   smoke           false
     2022-06-13 13:19:45   state           toggle
Attributes:
   devStateIcon false:secur_smoke_detector@green true:secur_smoke_detector_blink@red
   devicetopic zigbee2mqtt/RMTest
   model      zigbee2mqtt_smokeDetector
   readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }
zigbee2mqtt/RMTest/set/silence_siren:.* silence_siren
zigbee2mqtt/RMTest/set/alarm:.* alarm
zigbee2mqtt/RMTest/availability:.* availability
   room       MQTT2_DEVICE
   setList    toggle:noArg {my $cmd=ReadingsVal($NAME,'alarm','') eq 'false' ? 'true' : 'false';return qq($DEVICETOPIC/set { "command": "$cmd" } )}
   stateFormat smoke
   webCmd     toggle

Das "Alarm" geht aber nicht mit, denn Zigbee2MQTT sagt Folgendes:

Zigbee2MQTT:debug 2022-06-13 13:19:45: Received MQTT message on 'zigbee2mqtt/RMTest/set' with data '{ "command": "true" } '
Zigbee2MQTT:debug 2022-06-13 13:19:45: Publishing 'set' 'command' to 'RMTest'
Zigbee2MQTT:error 2022-06-13 13:19:45: Publish 'set' 'command' to 'RMTest' failed: 'Error: Cluster with name 'undefined' does not exist'
Zigbee2MQTT:debug 2022-06-13 13:19:45: Error: Cluster with name 'undefined' does not exist
    at Object.getCluster (/opt/zigbee2mqtt/node_modules/zigbee-herdsman/src/zcl/utils.ts:66:19)
    at Endpoint.command (/opt/zigbee2mqtt/node_modules/zigbee-herdsman/src/controller/model/endpoint.ts:755:35)
    at Object.convertSet (/opt/zigbee2mqtt/node_modules/zigbee-herdsman-converters/converters/toZigbee.js:62:26)
    at Publish.onMQTTMessage (/opt/zigbee2mqtt/lib/extension/publish.ts:246:52)
    at EventEmitter.emit (events.js:412:35)
    at EventBus.emitMQTTMessage (/opt/zigbee2mqtt/lib/eventBus.ts:109:22)
    at MQTT.onMessage (/opt/zigbee2mqtt/lib/mqtt.ts:122:27)
    at MqttClient.emit (events.js:400:28)
    at MqttClient._handlePublish (/opt/zigbee2mqtt/node_modules/mqtt/lib/client.js:1547:12)
    at MqttClient._handlePacket (/opt/zigbee2mqtt/node_modules/mqtt/lib/client.js:535:12)


Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: Beta-User am 13 Juni 2022, 13:40:23
Hmm, sorry, ich hatte die Ausgangssyntax nicht näher angeschaut...

Du musst das dann "verheiraten" (siehe auch das sonos-Beispiel von TomLee), und ich würde mir beim Helfen wesentlich leichter tun, wenn du (ausnahmsweise, da MQTT2_DEVICE) "raw"-Lists liefern könntest (siehe auch die Links unter https://forum.fhem.de/index.php/topic,112327.0.html).

Dann wäre ggf. noch für die Nachwelt interessant, was das konkret für ein China-Gadget ist und ob es "geprüft" ist (du darfst das gerne im "[unboxing]"-Thread bei ZigBee verlinken!). Rauchmelder mit "Alarmfunktion" scheinen ein begehrtes Gut zu sein...
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: homeuser2003 am 13 Juni 2022, 14:09:57
Also für "sorry" besteht mal keinerlei Anlass - ich bin mega dankbar für die Hilfe!

Hier mal die raw-List:

define MQTT2_zigbee_RMTest MQTT2_DEVICE zigbee_RMTest
attr MQTT2_zigbee_RMTest devStateIcon false:secur_smoke_detector@green true:secur_smoke_detector_blink@red
attr MQTT2_zigbee_RMTest devicetopic zigbee2mqtt/RMTest
attr MQTT2_zigbee_RMTest model zigbee2mqtt_smokeDetector
attr MQTT2_zigbee_RMTest readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }\
zigbee2mqtt/RMTest/set/silence_siren:.* silence_siren\
zigbee2mqtt/RMTest/set/alarm:.* alarm\
zigbee2mqtt/RMTest/availability:.* availability
attr MQTT2_zigbee_RMTest room MQTT2_DEVICE
attr MQTT2_zigbee_RMTest setList toggle:noArg {my $cmd=ReadingsVal($NAME,'alarm','') eq 'false' ? 'true' : 'false';;return qq($DEVICETOPIC/set { "command": "$cmd" } )}
attr MQTT2_zigbee_RMTest stateFormat smoke
attr MQTT2_zigbee_RMTest webCmd toggle

setstate MQTT2_zigbee_RMTest false
setstate MQTT2_zigbee_RMTest 2022-06-12 14:19:54 IODev MQTT
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:48 alarm false
setstate MQTT2_zigbee_RMTest 2022-06-13 09:13:07 associatedWith MQTT2_zigbee_pi
setstate MQTT2_zigbee_RMTest 2022-06-12 11:49:41 attrTemplateVersion 20200904
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:47 availability online
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:48 battery 6553
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:48 device_applicationVersion 72
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:48 device_dateCode
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:48 device_friendlyName RMTest
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:48 device_hardwareVersion 1
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:48 device_ieeeAddr 0xa4c138bad9e8ab6d
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:48 device_manufacturerID 4417
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:48 device_manufacturerName _TZE200_5d3vhjro
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:48 device_model SA12IZL
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:48 device_networkAddress 59913
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:48 device_powerSource Battery
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:48 device_stackVersion 0
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:48 device_type EndDevice
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:48 device_zclVersion 3
setstate MQTT2_zigbee_RMTest 2022-06-13 10:56:01 linkquality 69
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:48 silence_siren false
setstate MQTT2_zigbee_RMTest 2022-06-13 12:18:48 smoke false
setstate MQTT2_zigbee_RMTest 2022-06-13 13:19:45 state toggle


Zum Gadget: Ich verkaufe die überschüssige Stückzahl auf Ebay (ich verlinke das hier mal nicht, will ja keine Werbung machen). Wer mag findet die dort unter den folgenden Suchbegriffen: Zigbee ac tuya rauchmelder 230v.

Das mit dem "unboxing" schaue ich mir gleich mal an und wenn ich falsch damit liege, dass es die Kombinaton aus Zigbee und AC-Power bisher nicht gibt korrigiere ich das auch gern ;-).

Was meinst Du mit "geprüft"? Ist nen CE Siegel und ne TÜV-Rheinland Zertifizierung drauf und bislang klappen die Dinger gut (auch mit Testspray und ein wenig echtem Rauch)...
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: Beta-User am 13 Juni 2022, 14:46:01
So sollte das klappen:
define MQTT2_zigbee_RMTest MQTT2_DEVICE zigbee_RMTest
attr MQTT2_zigbee_RMTest devStateIcon false:secur_smoke_detector@green true:secur_smoke_detector_blink@red
attr MQTT2_zigbee_RMTest devicetopic zigbee2mqtt/RMTest
attr MQTT2_zigbee_RMTest model zigbee2mqtt_smokeDetector
attr MQTT2_zigbee_RMTest readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }\
  $DEVICETOPIC/set/silence_siren:.* silence\
  $DEVICETOPIC/set/alarm:.* alarm\
  $DEVICETOPIC/availability:.* availability
attr MQTT2_zigbee_RMTest room MQTT2_DEVICE
attr MQTT2_zigbee_RMTest setList alarm:toggle,on,off {my $cmd = $EVTPART1 eq 'on' ? 'true' : $EVTPART1 eq 'off' ? 'false' : ReadingsVal($NAME,'alarm','') eq 'false' ? 'true' : 'false';;return qq($DEVICETOPIC/set { "alarm": "$cmd" } )}\
silence:toggle,on,off {my $cmd = $EVTPART1 eq 'on' ? 'true' : $EVTPART1 eq 'off' ? 'false' : ReadingsVal($NAME,'alarm','') eq 'false' ? 'true' : 'false';;return qq($DEVICETOPIC/set { "silence_siren": "$cmd" } )}
attr MQTT2_zigbee_RMTest stateFormat smoke
attr MQTT2_zigbee_RMTest webCmd alarm toggle:silence toggle

Komisch finde ich die "set"-Zweige in der readingList, aber das scheint wirklich das Ergebnis zu sein und nicht die Anweisung...

Zitat von: homeuser2003 am 13 Juni 2022, 14:09:57
Zum Gadget: Ich verkaufe die überschüssige Stückzahl auf Ebay (ich verlinke das hier mal nicht, will ja keine Werbung machen). Wer mag findet die dort unter den folgenden Suchbegriffen: Zigbee ac tuya rauchmelder 230v.

Das mit dem "unboxing" schaue ich mir gleich mal an und wenn ich falsch damit liege, dass es die Kombinaton aus Zigbee und AC-Power bisher nicht gibt korrigiere ich das auch gern ;-).

Was meinst Du mit "geprüft"? Ist nen CE Siegel und ne TÜV-Rheinland Zertifizierung drauf und bislang klappen die Dinger gut (auch mit Testspray und ein wenig echtem Rauch)...
Die TÜV-Rheinland-Geschichte war der mich interessierende Punkt gewesen (falls das nicht hinreichend ist, wird sich schon erfahrungsgemäß jemand melden...).

Falls du das messen kannst, wäre der effektive Energieverbrauch von den Dingern noch interessant, ansonsten ist die Kombi 230V, separate Kabelvernetzung, ZigBee + aktive Alarmierung auch nach meiner (vermutlich nicht vollständigen) Kenntnis des Marktes ziemlich unique... (Der Preis ist aber auch nicht ganz so klein, wie man das von China-ZigBee-Gadgets so allgemein gewohnt ist, und man müßte am Einbauort 230V anliegen haben.).
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: supernova1963 am 13 Juni 2022, 15:08:31
Ich finde es schöner, wenn ein "toggle button" auch den aktuellen Wert anzeigt, deswegen nutze ich i.d.R. devStateIcon.

Ungetestet und nur zur Verdeutlichung meiner Vorgehensweise:
defmod MQTT2_zigbee_RMTest MQTT2_DEVICE zigbee_RMTest
attr MQTT2_zigbee_RMTest devStateIcon false:secur_smoke_detector@green \
true:secur_smoke_detector_blink@red \
alarmon:control_standby@red:Alarm_off \
alarmoff:control_standby@lightgrey:Alarm_on \
silenceon:rc_MUTE@red:Silence_off \
silenceoff:rc_VOLUP@lime:Silence_on
attr MQTT2_zigbee_RMTest devStateStyle style="text-align:right"
attr MQTT2_zigbee_RMTest devicetopic zigbee2mqtt/RMTest
attr MQTT2_zigbee_RMTest model zigbee2mqtt_smokeDetector
attr MQTT2_zigbee_RMTest readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }\
zigbee2mqtt/RMTest/set/silence_siren:.* silence_siren\
zigbee2mqtt/RMTest/set/alarm:.* alarm\
zigbee2mqtt/RMTest/set/silence_siren:.* { $EVENT =~ m,.*true, ? {"silenceState" => "silenceon"} : {"silenceState" => "silenceoff"} }\
zigbee2mqtt/RMTest/set/alarm:.* { $EVENT =~ m,.*true, ? {"alarmState" => "alarmon"} : {"alarmState" => "alarmoff"} }
attr MQTT2_zigbee_RMTest setList Alarm_on:noArg $DEVICETOPIC/set {"alarm":"true"}\
Alarm_off:noArg $DEVICETOPIC/set {"alarm":"false"}\
Silence_on:noArg $DEVICETOPIC/set {"silence_siren":"true"}\
Silence_off:noArg $DEVICETOPIC/set {"silence_siren":"false"}
attr MQTT2_zigbee_RMTest stateFormat silenceState\
alarmState\
smoke
attr MQTT2_zigbee_RMTest webCmd :
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: homeuser2003 am 13 Juni 2022, 15:17:15
Preislich bin ich absolut bei Dir - war jetzt halt ne kleine Stückzahl (40 Stück) die die mir gebaut haben. Das gab nen knackigen Aufschlag beim Hersteller, dann 5 % für Paypal, Shipping wirklich SAUTEUER, ging angeblich nicht anders und dann noch Zoll und Einfuhr-USt drauf. Denke in größerer Stückzahl wäre das für gut 30 € zu haben, in ganz großer Stückzahl auch drunter.

Lasse da auch mit mir reden wenns mehr als ein Stück ist. Bringt ja keinem was wenn die hier lange rumliegen, ist ja eine Ware die "schlecht" wird...

Energieverbrauch: <0,5 Watt. Darunter zeigt mein Messgerät nicht genauer an... Macht aber Sinn denn das verbaute Zigbee-Board ist ja eigentlich für den Batteriebetrieb, also auf wenig Verbrauch ausgelegt...
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: homeuser2003 am 13 Juni 2022, 15:40:09
Zitat von: Beta-User am 13 Juni 2022, 14:46:01
So sollte das klappen:
define MQTT2_zigbee_RMTest MQTT2_DEVICE zigbee_RMTest
attr MQTT2_zigbee_RMTest devStateIcon false:secur_smoke_detector@green true:secur_smoke_detector_blink@red
attr MQTT2_zigbee_RMTest devicetopic zigbee2mqtt/RMTest
attr MQTT2_zigbee_RMTest model zigbee2mqtt_smokeDetector
attr MQTT2_zigbee_RMTest readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }\
  $DEVICETOPIC/set/silence_siren:.* silence\
  $DEVICETOPIC/set/alarm:.* alarm\
  $DEVICETOPIC/availability:.* availability
attr MQTT2_zigbee_RMTest room MQTT2_DEVICE
attr MQTT2_zigbee_RMTest setList alarm:toggle,on,off {my $cmd = $EVTPART1 eq 'on' ? 'true' : $EVTPART1 eq 'off' ? 'false' : ReadingsVal($NAME,'alarm','') eq 'false' ? 'true' : 'false';;return qq($DEVICETOPIC/set { "alarm": "$cmd" } )}\
silence:toggle,on,off {my $cmd = $EVTPART1 eq 'on' ? 'true' : $EVTPART1 eq 'off' ? 'false' : ReadingsVal($NAME,'alarm','') eq 'false' ? 'true' : 'false';;return qq($DEVICETOPIC/set { "silence_siren": "$cmd" } )}
attr MQTT2_zigbee_RMTest stateFormat smoke
attr MQTT2_zigbee_RMTest webCmd alarm toggle:silence toggle

Komisch finde ich die "set"-Zweige in der readingList, aber das scheint wirklich das Ergebnis zu sein und nicht die Anweisung...
Die TÜV-Rheinland-Geschichte war der mich interessierende Punkt gewesen (falls das nicht hinreichend ist, wird sich schon erfahrungsgemäß jemand melden...).

Falls du das messen kannst, wäre der effektive Energieverbrauch von den Dingern noch interessant, ansonsten ist die Kombi 230V, separate Kabelvernetzung, ZigBee + aktive Alarmierung auch nach meiner (vermutlich nicht vollständigen) Kenntnis des Marktes ziemlich unique... (Der Preis ist aber auch nicht ganz so klein, wie man das von China-ZigBee-Gadgets so allgemein gewohnt ist, und man müßte am Einbauort 230V anliegen haben.).

Öhm ja. Da bekomme ich sowohl beim Setzen der Readinglist als auch der Setlist einen Sytaxfehler... Probiere nun die andere Variante aus, denn schön ist die in der Tat ;)
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: homeuser2003 am 13 Juni 2022, 16:36:53
Zitat von: supernova1963 am 13 Juni 2022, 15:08:31
Ich finde es schöner, wenn ein "toggle button" auch den aktuellen Wert anzeigt, deswegen nutze ich i.d.R. devStateIcon.

Ungetestet und nur zur Verdeutlichung meiner Vorgehensweise:
defmod MQTT2_zigbee_RMTest MQTT2_DEVICE zigbee_RMTest
attr MQTT2_zigbee_RMTest devStateIcon false:secur_smoke_detector@green \
true:secur_smoke_detector_blink@red \
alarmon:control_standby@red:Alarm_off \
alarmoff:control_standby@lightgrey:Alarm_on \
silenceon:rc_MUTE@red:Silence_off \
silenceoff:rc_VOLUP@lime:Silence_on
attr MQTT2_zigbee_RMTest devStateStyle style="text-align:right"
attr MQTT2_zigbee_RMTest devicetopic zigbee2mqtt/RMTest
attr MQTT2_zigbee_RMTest model zigbee2mqtt_smokeDetector
attr MQTT2_zigbee_RMTest readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }\
zigbee2mqtt/RMTest/set/silence_siren:.* silence_siren\
zigbee2mqtt/RMTest/set/alarm:.* alarm\
zigbee2mqtt/RMTest/set/silence_siren:.* { $EVENT =~ m,.*true, ? {"silenceState" => "silenceon"} : {"silenceState" => "silenceoff"} }\
zigbee2mqtt/RMTest/set/alarm:.* { $EVENT =~ m,.*true, ? {"alarmState" => "alarmon"} : {"alarmState" => "alarmoff"} }
attr MQTT2_zigbee_RMTest setList Alarm_on:noArg $DEVICETOPIC/set {"alarm":"true"}\
Alarm_off:noArg $DEVICETOPIC/set {"alarm":"false"}\
Silence_on:noArg $DEVICETOPIC/set {"silence_siren":"true"}\
Silence_off:noArg $DEVICETOPIC/set {"silence_siren":"false"}
attr MQTT2_zigbee_RMTest stateFormat silenceState\
alarmState\
smoke
attr MQTT2_zigbee_RMTest webCmd :


Nimmt er bis auf ReadingList alles an. Da bekomme ich aber:
MQTT2_zigbee_RMTest: bad reading name { json2nameValue($EVENT) }\ (contains not A-Za-z/\d_\.- or is too long)

Himmel ich glaube vom Anspruch es möglichst verstanden zu haben muss ich mich verabschieden und zufrieden sein, wenn es klappt :-(
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: Beta-User am 13 Juni 2022, 16:41:29
? wie versuchst du das einzugeben?

Die Codes sind zum "RAW-Import" gedacht, und zumindest mein Testsystem hat das eigentlich auch so anstandslos "gefressen"...
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: homeuser2003 am 13 Juni 2022, 17:27:35
Zitat von: supernova1963 am 13 Juni 2022, 15:08:31
Ich finde es schöner, wenn ein "toggle button" auch den aktuellen Wert anzeigt, deswegen nutze ich i.d.R. devStateIcon.

Ungetestet und nur zur Verdeutlichung meiner Vorgehensweise:
defmod MQTT2_zigbee_RMTest MQTT2_DEVICE zigbee_RMTest
attr MQTT2_zigbee_RMTest devStateIcon false:secur_smoke_detector@green \
true:secur_smoke_detector_blink@red \
alarmon:control_standby@red:Alarm_off \
alarmoff:control_standby@lightgrey:Alarm_on \
silenceon:rc_MUTE@red:Silence_off \
silenceoff:rc_VOLUP@lime:Silence_on
attr MQTT2_zigbee_RMTest devStateStyle style="text-align:right"
attr MQTT2_zigbee_RMTest devicetopic zigbee2mqtt/RMTest
attr MQTT2_zigbee_RMTest model zigbee2mqtt_smokeDetector
attr MQTT2_zigbee_RMTest readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }\
zigbee2mqtt/RMTest/set/silence_siren:.* silence_siren\
zigbee2mqtt/RMTest/set/alarm:.* alarm\
zigbee2mqtt/RMTest/set/silence_siren:.* { $EVENT =~ m,.*true, ? {"silenceState" => "silenceon"} : {"silenceState" => "silenceoff"} }\
zigbee2mqtt/RMTest/set/alarm:.* { $EVENT =~ m,.*true, ? {"alarmState" => "alarmon"} : {"alarmState" => "alarmoff"} }
attr MQTT2_zigbee_RMTest setList Alarm_on:noArg $DEVICETOPIC/set {"alarm":"true"}\
Alarm_off:noArg $DEVICETOPIC/set {"alarm":"false"}\
Silence_on:noArg $DEVICETOPIC/set {"silence_siren":"true"}\
Silence_off:noArg $DEVICETOPIC/set {"silence_siren":"false"}
attr MQTT2_zigbee_RMTest stateFormat silenceState\
alarmState\
smoke
attr MQTT2_zigbee_RMTest webCmd :


Bin ich froh, dass ich ins Anfängerforum gepostet habe - ja inzwischen kann ich auch RAW importieren und siehe da, das klappt auch!

Die Variante von Supernova lässt sich auch importieren, funktioniert aber - anders als die "Beta" Variante leider nicht - Ergebnis siehe unten.

Die States sind auch gar nicht klickbar. Über den Set-Button gehen die States aber, so dass es nur ein Thema der Darstellung on FHEMWEB zu sein scheint?

Hab ich schon DANKE gesagt? :-)
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: Beta-User am 13 Juni 2022, 17:46:44
Na ja, habe eben nochmal etwas rumgetestet, und das sieht zumindest plausibel aus:
defmod MQTT2_zigbee_RMTest MQTT2_DEVICE zigbee_RMTest
attr MQTT2_zigbee_RMTest devStateIcon false:secur_smoke_detector@green true:secur_smoke_detector_blink@red 1.false:rc_MUTE@red:silence+on 1.true:rc_MUTE@lightgrey:silence+off 2.true:control_standby@red:alarm+off 2.false:control_standby@green:alarm+on
attr MQTT2_zigbee_RMTest devicetopic zigbee2mqtt/RMTest
attr MQTT2_zigbee_RMTest model zigbee2mqtt_smokeDetector
attr MQTT2_zigbee_RMTest readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }\
  $DEVICETOPIC/set/silence_siren:.* silence\
  $DEVICETOPIC/set/alarm:.* alarm\
  $DEVICETOPIC/availability:.* availability
attr MQTT2_zigbee_RMTest room MQTT2_DEVICE
attr MQTT2_zigbee_RMTest setList alarm:toggle,on,off {my $cmd = $EVTPART1 eq 'on' ? 'true' : $EVTPART1 eq 'off' ? 'false' : ReadingsVal($NAME,'alarm','') eq 'false' ? 'true' : 'false';;return qq($DEVICETOPIC/set { "alarm": "$cmd" } )}\
silence:toggle,on,off {my $cmd = $EVTPART1 eq 'on' ? 'true' : $EVTPART1 eq 'off' ? 'false' : ReadingsVal($NAME,'alarm','') eq 'false' ? 'true' : 'false';;return qq($DEVICETOPIC/set { "silence_siren": "$cmd" } )}
attr MQTT2_zigbee_RMTest stateFormat smoke\
1:silence\
2:alarm
attr MQTT2_zigbee_RMTest webCmd :

true/false in on/off zu mappen finde ich ok, aber was darüber rausgeht, ist m.E. "too much" - aber jedem das seine...
Titel: Antw:Aus "True" und "False" Toggle machen
Beitrag von: supernova1963 am 13 Juni 2022, 22:00:56
Zitat von: homeuser2003 am 13 Juni 2022, 17:27:35
...
Die Variante von Supernova lässt sich auch importieren, funktioniert aber - anders als die "Beta" Variante leider nicht - Ergebnis siehe unten.

Die States sind auch gar nicht klickbar. Über den Set-Button gehen die States aber, so dass es nur ein Thema der Darstellung on FHEMWEB zu sein scheint?

Hab ich schon DANKE gesagt? :-)

Nach der nächsten Aktualisierung der readings: alarm und silence_siren erhalten die neuen readings ihren Wert und werden gem. defStateIcon angezeigt.

Die Lösung von Beta-User zur Differenzierung der 3 true/false Werte ohne neue readings ist sicher besser.