FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: morrpheus am 05 Oktober 2025, 00:27:22

Titel: devStateIcon aus readings von anderem Device
Beitrag von: morrpheus am 05 Oktober 2025, 00:27:22
Moin Moin.
Ich brauche mal Hilfe.
Ich habe an meinem Garagentor einen Shelly 1 Gen 3 verbaut. Zusätzlich ein Shelly Addon mit Magnetschalter um die Position zu erfassen.
Ich habe bei Geräte in fhem eingebunden. Den Shelly übers entsprechende Modul und das Addon per MQTT.

Einmal das Addon:
defmod Torsensor MQTT2_DEVICE shelly1g3
attr Torsensor devStateIcon {my $onl = ReadingsVal($name,'online','false') eq 'false'?'10px-kreis-rot':'10px-kreis-gruen';; $onl = FW_makeImage($onl);; my $light = FW_makeImage(ReadingsVal($name,'state','off'));; my $temp = ReadingsVal($name,'temperature','-100');; my $ip = ReadingsVal($name,'ip','none');; my $reb = ReadingsVal($name,'sys_restart_required','false') eq 'true'?'<a href="/fhem?cmd.dummy=set '.$name.' x_reboot&XHR=1"> ... Notwendigen Reboot durchführen</a>':'';; qq(<a href="http://$ip" target="_blank">${onl}</a><a href="/fhem?cmd.dummy=set $name toggle&XHR=1">${light}</a>$reb<div>Temp: $temp °C</div>)}
attr Torsensor devicetopic Torsensor
attr Torsensor genericDeviceType switch
attr Torsensor getList in_mode:noArg in_mode $DEVICETOPIC/rpc {"id": 1,"src":"$DEVICETOPIC", "method": "Switch.GetConfig", "params": {"id": 0}}
attr Torsensor icon message_socket
attr Torsensor jsonMap switch_state:state switch_temperature_tC:temperature switch_temperature_tF:0 params_wifi_sta_ip:ip params_switch_0_temperature_tC:temperature params_switch_0_temperature_tF:0 req_result_in_mode:in_mode
attr Torsensor model shellyPlus_1
attr Torsensor readingList $DEVICETOPIC/online:.* online\
  $DEVICETOPIC/events/rpc:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  $DEVICETOPIC/status/mqtt:.* { json2nameValue($EVENT, 'mqtt_', $JSONMAP) }\
  $DEVICETOPIC/status/sys:.* { json2nameValue($EVENT, 'sys_', $JSONMAP) }\
  $DEVICETOPIC/status/switch_0:.* { $EVENT =~ s/"output":true/"state":"on"/g;; $EVENT =~ s/"output":false/"state":"off"/g;; json2nameValue($EVENT, 'switch_', $JSONMAP) }\
  $DEVICETOPIC/status/cloud:.* {}\
  $DEVICETOPIC/rpc:.* { json2nameValue($EVENT, 'req_', $JSONMAP, 'in_mode')}\
  $DEVICETOPIC/status/input_0:.* { json2nameValue($EVENT, 'input_', $JSONMAP) }\
  fhem2shelly/rpc:.* {}\
shelly1g3:shelly1g3-28372f2a9320/events/rpc:.* { json2nameValue($EVENT, 'rpc_', $JSONMAP) }\
shelly1g3:shelly1g3-28372f2a9320/online:.* online
attr Torsensor room MQTT2_DEVICE
attr Torsensor setList toggle:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Toggle","params": {"id":0}}\
  off:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":false}}\
  on:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":true}}\
  on-for-timer $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":true,"toggle_after":$EVTPART1}}\
  off-for-timer $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":false,"toggle_after":$EVTPART1}}\
  in_mode:toggle,flip,detached {fhem("sleep 0.2;; get $NAME in_mode");; my $val = $EVTPART1 ne 'toggle' ? $EVTPART1 : ReadingsVal($NAME,'in_mode','flip') eq 'flip' ? 'detached':'flip';; qq($DEVICETOPIC/rpc {"id":1,"src":"fhem2shelly","method":"Switch.SetConfig","params": {"id":0, "config": {"in_mode": "$val"}}})}\
  x_update:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Shelly.Update","params": {"stage":"stable"}}\
  x_reboot:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Shelly.Reboot"}\
  x_eco:true,false $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Sys.SetConfig","params": {"config": {"device": {"eco_mode": $EVTPART1}}}}
attr Torsensor setStateList on off toggle on-for-timer off-for-timer
attr Torsensor webCmd :

setstate Torsensor 2025-10-04 17:44:09 IODev MQTT2Server
setstate Torsensor 2025-10-04 17:44:39 attrTemplateVersion 20220304
setstate Torsensor 2025-10-04 17:47:38 online true
setstate Torsensor 2025-10-04 23:58:04 rpc_dst shelly1g3-28372f2a9320/events
setstate Torsensor 2025-10-04 23:58:04 rpc_method NotifyStatus
setstate Torsensor 2025-10-04 20:13:23 rpc_params_input_100_state false
setstate Torsensor 2025-10-04 17:47:38 rpc_params_mqtt_connected true
setstate Torsensor 2025-10-04 20:13:02 rpc_params_switch_0_output false
setstate Torsensor 2025-10-04 20:13:02 rpc_params_switch_0_source timer
setstate Torsensor 2025-10-04 20:13:01 rpc_params_switch_0_timer_duration 1.00
setstate Torsensor 2025-10-04 20:13:01 rpc_params_switch_0_timer_started_at 1759601581.80
setstate Torsensor 2025-10-04 23:58:04 rpc_params_sys_last_sync_ts 1759615084
setstate Torsensor 2025-10-04 23:58:04 rpc_params_sys_time 23:58
setstate Torsensor 2025-10-04 23:58:04 rpc_params_sys_unixtime 1759615084
setstate Torsensor 2025-10-04 23:58:04 rpc_params_ts 1759615084.70
setstate Torsensor 2025-10-04 23:58:04 rpc_src shelly1g3-28372f2a9320
setstate Torsensor 2025-10-04 17:44:39 x_reboot set


Und einmal der Shelly

defmod Tor Shelly 192.168.178.166
attr Tor icon fts_garage
attr Tor model shellypro1
attr Tor room 2.0 aussen

setstate Tor off
setstate Tor 2025-10-04 16:54:24 addon sensor
setstate Tor 2025-10-04 16:54:24 cloud enabled(connected)
setstate Tor 2025-10-04 16:54:24 firmware v1.7.1
setstate Tor 2025-10-04 16:54:24 input_0 unknown
setstate Tor 2025-10-04 16:54:24 input_0_mode button straight momentary
setstate Tor 2025-10-05 00:00:29 inttemp 37.2
setstate Tor 2025-10-04 16:54:24 network <html>connected to <a href="http://192.168.178.166">192.168.178.166</a> (Wifi)</html>
setstate Tor 2025-10-04 16:43:31 network_disconnects 1
setstate Tor 2025-10-04 23:54:15 network_rssi -58
setstate Tor 2025-10-04 16:54:24 network_ssid Speed!Box
setstate Tor 2025-10-04 16:58:25 network_threshold -80
setstate Tor 2025-10-04 16:54:15 relay off
setstate Tor 2025-10-04 17:46:10 source timer
setstate Tor 2025-10-04 16:54:15 state off
setstate Tor 2025-10-04 16:54:04 webhook_cnt 0
setstate Tor 2025-10-04 16:54:04 webhook_ver 0



Das Reading vom Magnetkontakt ist "rpc_params_input_100_state false" oder eben true.
Ich hätte gerne je nachdem als devStateIcon vom Shelly die icons fts_garage_door_10 und fts_garage_door_100.

Wie bekomme ich das am besten hin?