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
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]
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
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" } )}
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
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.
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
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)
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
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)
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...
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)...
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.).
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 :
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...
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 ;)
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 :-(
? wie versuchst du das einzugeben?
Die Codes sind zum "RAW-Import" gedacht, und zumindest mein Testsystem hat das eigentlich auch so anstandslos "gefressen"...
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? :-)
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...
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.