mqtt2.template: bugs, Fragen, Anregungen

Begonnen von Beta-User, 15 Dezember 2018, 11:44:43

Vorheriges Thema - Nächstes Thema

Martin Fischer

Zitat von: Beta-User am 19 April 2023, 14:56:40Stups:
BASE_TOPIC/([0-9A-F][0-9A-F]\x2e\S{12})/.*:.* "OWFS_$1" oder
 
BASE_TOPIC/([[:xdigit:]]{2}\x2e\S{12})/.*:.* "OWFS_$1"

ABSOLUT! Was für ein Schnitzer. :-[  Es fehlte tatsächlich ein "Stelle". Ich habe es vollkommen übersehen. Danke!
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

Martin Fischer

Noch eine Frage zum setList in einem Template in Verbindung mit MQTT:
Wenn das Attribut devicetopic gesetzt ist und das Template ein
attr DEVICE setList \
request:noArg $\DEVICETOPIC/command/REQUEST\
refreshDevices:noArg $\DEVICETOPIC/command/REFRESH_\DEVICES\
refreshValues:noArg $\DEVICETOPIC/command/REFRESH_VALUES
sollte das dann ausreichen, dass der Command published wird? Oder muss da noch irgendetwas bzgl. des IODEV rein?
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

Beta-User

$DEVICETOPIC wird auch in setList aufgelöst, der publish geht dann über das für das Device gültige IO - was auch "falsch" sein kann... Da sollte man aber so oder so prüfen, ob das (Reading) richtig ist und ggf. dann das korrigieren (mAn. via Attribut).

Ansonsten wegen der zwei Zeichen: Hast du jetzt schon mal "heiteres Würfeln mit Perl" ausprobiert oder nicht...?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

87insane

#528
Hey zusammen,

da ich gerade mein FHEM umziehe, bearbeite ich die ganzen alten Sachen und passe sie an. Dazu gehört auch das Shelly 1 Washer Example. Anbei mal eine Version die ein wenig aufgeräumt ist, mit devStateIcon und event-on.*

Was habe ich angepasst:
- devStateIcon
- devicetopic eingefügt
- event-on-change-reading eingefügt
- event-on-update-reading eingefügt
- readingList $DEVICETOPIC/relay/0/energy:.* energy gelöscht und nur relay_0_kWh übergelassen. $DEVICETOPIC/relay/0/power:.* Werteprüfung eingebaut, da meine Waschmaschine z.B. sonst immer einen 0.x Wert anzeigt obwohl sie aus ist.
- userReadings auf Gegebenheiten angepasst.

defmod MQTT2_shellyplug_s_040C7E MQTT2_DEVICE shellyplug_s_040C7E
attr MQTT2_shellyplug_s_040C7E devStateIcon { \
my $amp = ReadingsVal($name,"online","false") eq "false" \
? "rot" \
: ReadingsVal($name,"new_fw","false") eq "true" \
? "gelb" \
: "gruen";; \
my $pic = ReadingsVal($name,"loadState","") eq "on"\
? 'scene_laundry_room_fem@red'\
: 'scene_laundry_room_fem';; \
my $text = ReadingsVal($name,"loadState","") eq "on"\
? "Waschmaschine läuft - Aktuell: ".ReadingsVal($name,"relay_0_power","")." W"\
: 'Standby';; \
my $show = "$amp" eq "gelb" \
? "<a href=\"/fhem?cmd.dummy=set $name x_update&XHR=1\">".FW_makeImage("10px-kreis-".$amp)."</a>" \
: "<a href=\"http://".ReadingsVal($name,"ip","none")." \"target=\"_blank\">".FW_makeImage("10px-kreis-".$amp)."</a>";;\
"<div> $show <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\"></a>".FW_makeImage($pic)." $text </div>" \
}
attr MQTT2_shellyplug_s_040C7E devicetopic shellies/shellyplug-s-040C7E
attr MQTT2_shellyplug_s_040C7E event-on-change-reading state,online,overtemperature,relay_0_.*,relay0,loadState,wash,price,relay_0_kWh_total
attr MQTT2_shellyplug_s_040C7E event-on-update-reading stat[ERT].*
attr MQTT2_shellyplug_s_040C7E genericDeviceType switch
attr MQTT2_shellyplug_s_040C7E model shelly1_w_energy_measuring
attr MQTT2_shellyplug_s_040C7E readingList $DEVICETOPIC/relay/0:.* {{ state => $EVENT, relay0 => $EVENT}}\
  $DEVICETOPIC/online:.* online\
  shellies/announce:.* { $EVENT =~ m,..id...shellyplug-s-040C7E...mac.*, ? json2nameValue($EVENT) : return }\
  $DEVICETOPIC/announce:.* { json2nameValue($EVENT) }\
  $DEVICETOPIC/relay/0/power:.* {'relay_0_power' => $EVENT > 1 ? $EVENT : '0'}\
  $DEVICETOPIC/relay/0/power:.* { my $compare = $EVTPART0 < 3 ? 'off':'on';; ReadingsVal($NAME,'loadState','off') ne $compare ? { loadState => $compare } : return }\
  $DEVICETOPIC/temperature:.* temperature\
  $DEVICETOPIC/temperature_f:.* {}\
  $DEVICETOPIC/input_event/0:.* { json2nameValue($EVENT) }\
  $DEVICETOPIC/overtemperature:.* overtemperature\
  $DEVICETOPIC/relay/0/energy:.* { relay_0_kWh => sprintf("%.2f",$EVENT/60/1000)}\
  $DEVICETOPIC/longpush/0:.* longpush_0\
  $DEVICETOPIC/info:.* { json2nameValue($EVENT) }
attr MQTT2_shellyplug_s_040C7E setList relay0:on,off,toggle $DEVICETOPIC/relay/0/command $EVTPART1\
  toggle:noArg $DEVICETOPIC/relay/0/command toggle\
  off:noArg $DEVICETOPIC/relay/0/command off\
  on:noArg $DEVICETOPIC/relay/0/command on\
  x_update:noArg $DEVICETOPIC/command update_fw\
  x_mqttcom $DEVICETOPIC/command $EVTPART1
attr MQTT2_shellyplug_s_040C7E setStateList on off toggle
attr MQTT2_shellyplug_s_040C7E userReadings total_temp:loadState:.on { ReadingsNum($name,'relay_0_kWh',0) },\
wash:loadState:.off { ReadingsNum($name,'relay_0_kWh',0) - ReadingsNum($name,'total_temp',0) },\
price:loadState:.off {sprintf("%.2f",ReadingsNum($name,'wash',1)*ReadingsNum('du_kosten','kWhPreis',0))},\
time:loadState:.off {strftime("%H:%M", localtime(ReadingsAge($name,'total_temp',0)-3600))},\
relay_0_kWh_total:relay_0_kWh:.* monotonic {ReadingsNum($name,'relay_0_kWh',0)}
attr MQTT2_shellyplug_s_040C7E webCmd :

ich weiß, @Beta-User du hast gerne fertige Templates. Das mache ich aber noch gesammelt, da ich auch im Bereich Zigbee2mqtt aufräume. Hinzu kommt, dass ich meine alten Gen1 Shellys bis auf die PlugS rauß geschmissen habe und mit den Gen2 Shelly noch einiges testen muss.

Gruß,
87insane

tomcat.x

Kann es sein, dass es im "Template hoymiles_opendtu_hub_bridge" einen Bug gibt? Oder ist der mehr in meine Hirn, wegen der mqtt Verwirrungen? ;-)

Aber "ac/power" und "dc/power" werden doch beide auf "power" gemapped. Damit hat man immer nur einen der beiden Werte ("dc/power"). Und zwar in dem Fall nicht den, der in der Weboberfläche der openDTU als "Gesamtleitung" angezeigt wird. Dadurch ist es mir aufgefallen. Das gleiche gilt für "is_valid", aber da habe ich noch keine unterschiedlichen Werte gesehen.

Entsprechend dem "hoymiles_opendtu_microinverter" könnte man für "dc/power" "powerdc" nehmen und für "ac/power" "power" lassen.
FHEM: 6.1 auf Raspi 3, Raspbian (Buster), Perl v5.28.1
Sender/Empfänger: 2 x CULv3, Duofern Stick, HM-MOD-RPI-PCB
Gateways: FRITZ!Box 6591 (OS: 7.57), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo

Beta-User

Zitat von: tomcat.x am 23 Mai 2023, 09:54:09Kann es sein, dass es im "Template hoymiles_opendtu_hub_bridge" einen Bug gibt? Oder ist der mehr in meine Hirn, wegen der mqtt Verwirrungen? ;-)
Kann schon sein - das ist vor längerem mal auf die Schnelle entstanden und ggf. schlicht "unfertig" - daher auch das "early version" in der desc..

Du kannst gerne hier (oder im hoymiles-Thread) einen aktualisierten Vorschlag machen, ich mag nur nicht "raten". Die aktuell vercodete readingList für das bub_bridge-Dingens ist nämlich irritierend kurz...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

grizu

Hallo,

ich hab vor Kurzem gesehen, dass Nuki in ihrer neuen Firmware für das Nuki 3.0 Pro jetzt auch ein Interface per MQTT implementiert hat - damit sollte es möglich sein, dieses Schloss jetzt ohne dedizierte bridge in FHEM einzubinden.
Nach dem Anmelden an den MQTT-Server habe ich folgende Einträge in der reading-List der bridge gefunden (ID durch xxx ersetzt):

fhemRPI3:nuki/xxx/connected:.* connected
fhemRPI3:nuki/xxx/deviceType:.* deviceType
fhemRPI3:nuki/xxx/name:.* name
fhemRPI3:nuki/xxx/firmware:.* firmware
fhemRPI3:nuki/xxx/serverConnected:.* serverConnected
fhemRPI3:nuki/xxx/state:.* state
fhemRPI3:nuki/xxx/mode:.* mode
fhemRPI3:nuki/xxx/doorsensorState:.* doorsensorState
fhemRPI3:nuki/xxx/batteryCritical:.* batteryCritical
fhemRPI3:nuki/xxx/batteryChargeState:.* batteryChargeState
fhemRPI3:nuki/xxx/batteryCharging:.* batteryCharging
fhemRPI3:nuki/xxx/keypadBatteryCritical:.* keypadBatteryCritical
fhemRPI3:nuki/xxx/doorsensorBatteryCritical:.* doorsensorBatteryCritical
fhemRPI3:nuki/xxx/timestamp:.* timestamp
fhemRPI3:nuki/xxx/lockActionEvent:.* lockActionEvent
fhemRPI3:nuki/xxx/commandResponse:.* commandResponse

nach dem ich die set list dann folgendermassen gesetzt habe:
lock:noArg nuki/xxx/lockAction 2
unlock:noArg nuki/xxx/lockAction 1
open:noArg nuki/xxx/lockAction 3

hat das eigentlich schon recht gut funktioniert.

Ich bin leider nicht soweit, dass ich selber ein template anlegen könnte, aber vielleicht hat ja ein anderer Interesse.

Die Dokumentation der aktuellen mqtt-Api von Nuki habe ich hier gefunden:
https://developer.nuki.io/t/mqtt-api-specification-v1-4/19223

Grüsse,
Chris


Beta-User

Zitat von: grizu am 10 August 2023, 16:25:19Hallo,

ich hab vor Kurzem gesehen, dass Nuki in ihrer neuen Firmware für das Nuki 3.0 Pro jetzt auch ein Interface per MQTT implementiert hat - damit sollte es möglich sein, dieses Schloss jetzt ohne dedizierte bridge in FHEM einzubinden.
[...]

Ich bin leider nicht soweit, dass ich selber ein template anlegen könnte, aber vielleicht hat ja ein anderer Interesse.
Danke auf alle Fälle für's Posten.

Vielleicht kannst du mal auch die Readings bzw. deren Änderung (in einem separaten Thread und selbstredend anonymisiert) posten?

Speziell interessieren würde mich, ob die "state"-Anweisungen dann in der Rückmeldung von der Nuki-Bridge dann auch wieder in state landen oder woanders. In letzterem Fall sollte man das ggf. irgendwie umbiegen....
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

kabanett

Hallo Beta-User

im Template shelly25_roller_invert_0 ist ein kleiner Fehler drin.
Das Attribut devStateIcon müsste von
.*/open:fts_shutter_up@red .*/close:fts_shutter_down@red true:10px-kreis-gruen false:10px-kreis-rot 0/stop:fts_shutter_100 100/stop:fts_shutter_10 9\d/stop:fts_shutter_10 8\d/stop:fts_shutter_20 7\d/stop:fts_shutter_30 6\d/stop:fts_shutter_40 5\d/stop:fts_shutter_50 4\d/stop:fts_shutter_60 3\d/stop:fts_shutter_70 2\d/stop:fts_shutter_80 1\d/stop:fts_shutter_90 0\d/stop:fts_shutter_100 set_.*:fts_shutter_updownzu
.*/opens:fts_shutter_up@red .*/closes:fts_shutter_down@red true:10px-kreis-gruen false:10px-kreis-rot 0/stop:fts_shutter_100 100/stop:fts_shutter_10 9\d/stop:fts_shutter_10 8\d/stop:fts_shutter_20 7\d/stop:fts_shutter_30 6\d/stop:fts_shutter_40 5\d/stop:fts_shutter_50 4\d/stop:fts_shutter_60 3\d/stop:fts_shutter_70 2\d/stop:fts_shutter_80 1\d/stop:fts_shutter_90 0\d/stop:fts_shutter_100 set_.*:fts_shutter_updowngeändert werden.
Das angehangene "s" bei open und close macht den unterschied.

Danke
Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

grappa24

melde mich seit langem mal wieder, bin nicht auf dem Laufenden  ;)

Frage:
Ich hab mir ein paar neue Shelly PlusPlugS geholt und festgestellt, dass die sich in der Struktur der Daten doch gewaltig von der ersten Generation PlugS unterscheiden.

Gibts (vielleicht schon) eine Empfehlung für ein passendes Template?

Grüße, Dieter
FHEM 6.3, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

87insane

Wie beim normalen PlugS auch.. Nimm einfach das Plus1PM Template.

grappa24

#536
Zitat von: 87insane am 10 November 2023, 14:50:16Wie beim normalen PlugS auch.. Nimm einfach das Plus1PM Template.
ah, cool - danke
Auslesen kann ich den PlusPlugS damit, aber nicht schalten?

Vielleicht hab ich auch nur die MQTT-Parameter im Shelly falsch gesetzt (siehe Anhang)?

hier noch ein List:
Internals:
   CFGFN     
   CID        shellyplusplugs_hwr_trockner
   DEF        shellyplusplugs_hwr_trockner
   FUUID      6550e8e8-f33f-b5ae-3f85-6bcf55dc21bfcd1a
   IODev      myBroker
   LASTInputDev myBroker
   MSGCNT     8
   NAME       MQTT2_shellyplusplugs_hwr_trockner
   NR         68739
   STATE      ???
   TYPE       MQTT2_DEVICE
   eventCount 12
   myBroker_CONN myBroker_192.168.178.130_50105
   myBroker_MSGCNT 8
   myBroker_TIME 2023-11-12 16:04:01
   JSONMAP:
     params_switch_0_temperature_tC temperature
     params_switch_0_temperature_tF 0
     params_wifi_sta_ip ip
     result_in_mode in_mode
     switch_aenergy_total aenergy_total
     switch_apower apower
     switch_state state
     switch_temperature_tC temperature
     switch_temperature_tF 0
   OLDREADINGS:
   READINGS:
     2023-11-12 16:02:00   IODev           myBroker
     2023-11-12 16:03:41   attrTemplateVersion 20220303
     2023-11-12 16:04:01   dst             shellyplusplugs/events
     2023-11-12 16:03:47   ip              192.168.178.130
     2023-11-12 16:04:01   method          NotifyStatus
     2023-11-12 16:03:47   online          true
     2023-11-12 16:03:47   params_cloud_connected false
     2023-11-12 16:03:42   params_events_1_component sys
     2023-11-12 16:03:42   params_events_1_event scheduled_restart
     2023-11-12 16:03:42   params_events_1_time_ms 997
     2023-11-12 16:03:42   params_events_1_ts 1699801422.01
     2023-11-12 16:03:47   params_mqtt_connected true
     2023-11-12 16:04:01   params_switch_0_aenergy_by_minute_1 0.000
     2023-11-12 16:04:01   params_switch_0_aenergy_by_minute_2 0.000
     2023-11-12 16:04:01   params_switch_0_aenergy_by_minute_3 0.000
     2023-11-12 16:04:01   params_switch_0_aenergy_minute_ts 1699801439
     2023-11-12 16:04:01   params_switch_0_aenergy_total 741.019
     2023-11-12 16:03:47   params_switch_0_apower 0.0
     2023-11-12 16:03:47   params_switch_0_current 0.000
     2023-11-12 16:04:01   params_switch_0_id 0
     2023-11-12 16:03:47   params_switch_0_output true
     2023-11-12 16:03:47   params_switch_0_source init
     2023-11-12 16:03:47   params_switch_0_voltage 237.3
     2023-11-12 16:03:47   params_sys_cfg_rev 43
     2023-11-12 16:03:47   params_sys_fs_free 143360
     2023-11-12 16:03:47   params_sys_fs_size 458752
     2023-11-12 16:03:47   params_sys_kvs_rev 0
     2023-11-12 16:03:47   params_sys_mac  D4D4DAEBA234
     2023-11-12 16:03:47   params_sys_ram_free 133480
     2023-11-12 16:03:47   params_sys_ram_size 261236
     2023-11-12 16:03:47   params_sys_restart_required false
     2023-11-12 16:03:47   params_sys_schedule_rev 0
     2023-11-12 16:03:47   params_sys_time 16:03
     2023-11-12 16:03:47   params_sys_unixtime 1699801426
     2023-11-12 16:03:47   params_sys_uptime 3
     2023-11-12 16:03:47   params_sys_webhook_rev 0
     2023-11-12 16:04:01   params_ts       1699801440.56
     2023-11-12 16:03:47   params_wifi_rssi -77
     2023-11-12 16:03:47   params_wifi_ssid Skynet
     2023-11-12 16:03:47   params_wifi_status got ip
     2023-11-12 16:03:47   params_ws_connected false
     2023-11-12 16:04:01   src             shellyplusplugs-d4d4daeba234
     2023-11-12 16:03:47   temperature     36.9
     2023-11-12 16:03:41   x_reboot        set
Attributes:
   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 $cons = ReadingsNum($name,'apower',0); my $total = round(ReadingsNum($name,'aenergy_total',0)/1000,3); 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>Verbrauch: $cons W / Total: $total kwh / Temp: $temp °C</div>)}
   devicetopic shellyplusplugs
   getList    in_mode:noArg in_mode $DEVICETOPIC/rpc {"id": 1,"src":"$DEVICETOPIC", "method": "Switch.GetConfig", "params": {"id": 0}}
   icon       message_socket
   jsonMap    switch_state:state switch_aenergy_total:aenergy_total switch_apower:apower 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 result_in_mode:in_mode
   model      shellyPlus_1pm
   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:.* {}
   room       MQTT2_DEVICE
   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}}}}
   setStateList on off toggle on-for-timer off-for-timer
   webCmd     :
FHEM 6.3, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

grappa24

Zitat von: grappa24 am 11 November 2023, 23:37:08Vielleicht hab ich auch nur die MQTT-Parameter im Shelly falsch gesetzt (siehe Anhang)?
das wars, "Generic status update over MQTT" muss aktiviert sein in der Shelly-Konfig.
Danke nochmal @87insane für den Tipp mit dem Plus_1pm Template  ;)
FHEM 6.3, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

Motivierte linke Hände

Hi, ich versuche ein Template für den Philips HUE Outdoor Sensor zu erstellen (der ein paar Werte/Einstellungen bietet, die im vorhandenen Template für den hue sensor nicht enthalten sind). U.a. möchte ich, dass das Reading für erkannte Bewegung nicht "occupancy", sondern "motion" heißt. Deswegen habe ich im Template

attr DEVICE jsonMap occupancy:motion
gesetzt. Das funktioniert aber nicht. Was übersehe ich?

MQTT2_DEVICE vor dem Anwenden des Templates:

Internals:
   CFGFN     
   CID        zigbee_Motion_ELW_Eingang
   DEF        zigbee_Motion_ELW_Eingang
   FUUID      6555ce25-f33f-e1ef-c901-36d864d7c921bd4c
   IODev      myBroker
   LASTInputDev myBroker
   MSGCNT     55
   NAME       MQTT2_zigbee_Motion_ELW_Eingang
   NR         3441
   STATE      ???
   TYPE       MQTT2_DEVICE
   eventCount 56
   myBroker_MSGCNT 55
   myBroker_TIME 2023-11-16 10:17:21
   READINGS:
     2023-11-16 09:09:09   IODev           myBroker
     2023-11-16 10:17:21   Motion_ELW_Eingang_battery 100
     2023-11-16 10:17:21   Motion_ELW_Eingang_illuminance 26262
     2023-11-16 10:17:21   Motion_ELW_Eingang_illuminance_lux 423
     2023-11-16 10:17:21   Motion_ELW_Eingang_led_indication false
     2023-11-16 10:17:21   Motion_ELW_Eingang_linkquality 47
     2023-11-16 10:17:21   Motion_ELW_Eingang_motion_sensitivity low
     2023-11-16 10:17:21   Motion_ELW_Eingang_occupancy false
     2023-11-16 10:17:21   Motion_ELW_Eingang_occupancy_timeout 1
     2023-11-16 10:17:21   Motion_ELW_Eingang_temperature 7.64
     2023-11-16 09:09:09   associatedWith  MQTT2_zigbee_bridge
Attributes:
   readingList zigbee2mqtt/Motion_ELW_Eingang:.* { json2nameValue($EVENT, 'Motion_ELW_Eingang_', $JSONMAP) }
   room       MQTT2_DEVICE

Und danach:

Internals:
   CFGFN     
   CID        zigbee_Motion_ELW_Eingang
   DEF        zigbee_Motion_ELW_Eingang
   FUUID      6555ce25-f33f-e1ef-c901-36d864d7c921bd4c
   IODev      myBroker
   LASTInputDev myBroker
   MSGCNT     57
   NAME       Motion_ELW_Eingang
   NR         3441
   STATE      motion
   TYPE       MQTT2_DEVICE
   eventCount 59
   myBroker_MSGCNT 57
   myBroker_TIME 2023-11-16 10:27:20
   JSONMAP:
     occupancy  motion
   OLDREADINGS:
   READINGS:
     2023-11-16 09:09:09   IODev           myBroker
     2023-11-16 09:09:09   associatedWith  MQTT2_zigbee_bridge
     2023-11-16 10:21:08   attrTemplateVersion 20231115
     2023-11-16 10:27:20   battery         100
     2023-11-16 10:27:20   illuminance     25807
     2023-11-16 10:27:20   illuminance_lux 381
     2023-11-16 10:27:20   led_indication  false
     2023-11-16 10:27:20   linkquality     47
     2023-11-16 10:27:20   motion_sensitivity low
     2023-11-16 10:27:20   occupancy       false
     2023-11-16 10:27:20   occupancy_timeout 1
     2023-11-16 10:27:20   temperature     7.64
Attributes:
   devStateIcon motion:motion_detector@red .*:motion_detector
   devicetopic zigbee2mqtt/Motion_ELW_Eingang
   icon       people_sensor
   jsonMap    occupancy:motion
   model      zigbee2mqtt_hueMotionOutdoorSensor
   readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }
  $DEVICETOPIC/availability:.* availability
   room       MQTT2_DEVICE
   setList    motion_sensitivity:low,medium,high,very_high,max $DEVICETOPIC/set {"motion_sensitivity": "$EVTPART1"}
  led_indication:true,false $DEVICETOPIC/set {"led_indication": "$EVTPART1"}
  occupancy_timeout:slider,0,1,40,0 $DEVICETOPIC/set {"occupancy_timeout": "$EVTPART1"}
   stateFormat motion

Der aktuelle Template-Entwurf:

name:zigbee2mqtt_hueMotionOutdoorSensor
desc: Philips Hue Outdoor Motion Sensor
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
order:L_04a
par:BASE_TOPIC;base topic set in configuration.yaml of the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[\b]?([^/:]+)[/].+, ? $1 : undef }
par:DEV_ID;name of the device in the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[^/]+[/]([^/:]+).*, ? $1 : undef }
par:ICON;ICON as set, defaults to motion_detector;{ AttrVal("DEVICE","icon","people_sensor") }
attr DEVICE icon ICON
attr DEVICE jsonMap occupancy:motion
# attr DEVICE readingList $\DEVICETOPIC:.* { my $ret=json2nameValue($EVENT); $ret->{state}=lc($ret->{state}) if defined $ret->{state}; return $ret }
attr DEVICE readingList $\DEVICETOPIC:.* { json2nameValue($EVENT) }\
  $\DEVICETOPIC/availability:.* availability
deletereading -q DEVICE (?!associatedWith|IODev).*
attr DEVICE devStateIcon motion:motion_detector@red .*:motion_detector
attr DEVICE devicetopic BASE_TOPIC/DEV_ID
attr DEVICE setList \
  motion_sensitivity:low,medium,high,very_high,max $\DEVICETOPIC/set {"motion_sensitivity": "$EVTPART1"}\
  led_indication:true,false $\DEVICETOPIC/set {"led_indication": "$EVTPART1"}\
  occupancy_timeout:slider,0,1,40,0 $\DEVICETOPIC/set {"occupancy_timeout": "$EVTPART1"}
attr DEVICE stateFormat motion
attr DEVICE model zigbee2mqtt_hueMotionOutdoorSensor
setreading DEVICE attrTemplateVersion 20231115

Wäre klasse, wenn mir jemand kurz vom Schlauch helfen könnte bitte.
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

TomLee

Hallo,

im Template bei :

attr DEVICE readingList $\DEVICETOPIC:.* { json2nameValue($EVENT) }
json2namevalue so ergänzen:

attr DEVICE readingList $\DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
Dein MQTT2_SERVER myBroker ist auf autocreate complex eingestellt ? Warum ?