mqtt2.template: Contributing

Begonnen von Beta-User, 15 Dezember 2018, 11:45:40

Vorheriges Thema - Nächstes Thema

Beta-User

Thx, ist seit eben eingecheckt.
Server: HP-T620@Debian 11, 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

dietpe1g

Hallo und erstmal danke für die Templates für MQTT.

Zur meiner HW: Habe eine openDTU(DX-DTU), ein Hoymiles HM-300 und 48V Batterie um 24/7 eine Nulleinspeisung für den Grundbedarf (wenn genug Sonne vorhanden ist) zu ermöglichen.

Der HM-300 ist über die DX-DTU angebunden und im device hm300 "abgebildet":
Internals:
   CID        192.168.178.105
   DEF        192.168.178.105
   FUUID      649c6c9d-f33f-39c2-cb5a-ce7d555d4c3658ee
   IODev      mqtt_client
   LASTInputDev mqtt_client
   MSGCNT     11121
   NAME       hm300
   NR         316
   STATE      133.1
   TYPE       MQTT2_DEVICE
   eventCount 12560
   mqtt_client_MSGCNT 11121
   mqtt_client_TIME 2023-07-03 19:54:38
   READINGS:
     2023-07-03 17:03:02   IODev           mqtt_client
     2023-07-03 19:54:38   battery_current 2.57
     2023-07-03 19:54:38   battery_voltage 54.3
     2023-07-03 19:54:34   change_limit    44
     2023-07-03 19:49:36   increment       1
     2023-07-03 19:54:38   limit_absolute  132.00
     2023-07-03 19:54:38   limit_relative  44.00
     2023-06-30 15:43:43   nominal_power   300
     2023-07-03 19:54:38   state           133.1
     2023-07-03 19:54:38   version         02.00
Attributes:
   autocreate 1
   bridgeRegexp solar/hm300/([^/]+)/ch[0-9]+/.*:.* "solar/hm300_$1"
   icon       inverter
   model      hoymiles_microinverter_hub_bridge
   mqttName   hm300
   mqttRoom   solar
   readingList solar/hm300/112183835921/device/hwversion:.* version
solar/hm300/hm-id/status/limit_relative:.* limit_relative
solar/hm300/hm-id/status/limit_absolute:.* limit_absolute
solar/hm300/hm-id/1/voltage:.* battery_voltage
solar/hm300/hm-id/1/current:.* battery_current
solar/hm300/ac/power:.* state
   room       1_Überwachung

Dank des DTU Templates konnte ich die Readings ermitteln und einbringen. Ich habe allerdings nur die eingebracht, die mir informativ sind.
Das Auslesen funktioniert soweit, top!

Um die Grundlast auf Nulleinspeisung zu bringen, ist es notwendig den HM-300 anzusteuern. Dazu setze ich das Reading  change_limit auf den gewünschten Wert. Irgendwo fand ich, dass die Leistung des WR mit folgendem MQTT Befehl funktioniert:
setList change_limit solar/hm300/hm-id/ctrl/limit_nonpersistent_relative/0:Das hat auch dann tatsächlich geklappt, allerdings nur eine Nacht lang. Am nächsten Tag war es vorbei. Auch der MQTT-Explorer bewirkte hier nichts.

Weitere Recherche ergab dass dieser Befehl funktioniert:
change_limit solar/hm300/hm-id/cmd/limit_nonpersistent_relative/0:allerdings nur im MQTT-Explorer.

Bisher habe ich allerdings die Funktion nicht im hm300 device hinbekommen:
setList change_limit solar/hm300/hm-id/cmd/limit_nonpersistent_relative/0:
Was mache ich hier falsch?



Raspi Pi3 mit FHEM, Homematic Komponenten: Funk-Bewegungsmelder innen:HM-Sec-MDIR-2, Funk-Tür/Fensterkont.: HM-Sec-SCo, Funk-Bew.Melder aussen: HM-Sen-MDIR-O-2, Funk LAN Gateway: HM-LGW-O-TW-W-EU-2, Funk-Schaltaktor 4-fach:HM-LC-Sw4-DR, Panasonic TV, AVM Router 7490 / AVM Powerlines 546

Beta-User

Falscher Thread, du stellst eine Frage....

Bitte den "hoymiles"-Thread nutzen, da lesen ggf. die wenigen openDTU-user mit (ich bin auf ahoy). Generell: die mcu auf dem Inverter startet neu, wenn DC weg war, daher auch " non persistent ". Ggf. müßtest du die Logik dahinter anpassen, damit das Limit mit einer gewissen Regelmäßigkeit neu gesetzt wird.
Server: HP-T620@Debian 11, 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

twdotnet

#213
Hallo Zusammen,

für den Shelly Plus i4 mit Tasmota Firmware habe ich ein neues MQTT Template. Als Grundlage hab ich mein Template zum Shelly i3 mit Tasmota genommen, und es um den 4. Kanal erweitert.

Getestet mit Tasmota 13.0.0 und Device Config von https://templates.blakadder.com/shelly_plus_i4.html

# shelly plus i4 4 channel input switches with device configuration
name:tasmota_4channel_input_shelly_i4
filter:TYPE=MQTT2_DEVICE
desc:Shelly i4 device flashed with Tasmota, provides four input only channels. <p>Device will be configured with selectable SwitchMode and optional GPIO Template. <br>Recommended SwitchModes 1=FollowMode (normally open switches> or 2=InvertedFollowMode (normally closed switches) </p><p>Tasmota 9.1+ is required for <a href=https://tasmota.github.io/docs/Buttons-and-Switches/#setoption114>SetOption114</a> to detach switches from relays.<p>NOTE: <br>A second, third and fourth device will be created for the second, third and fourth input with suffixes *_CH2, *_CH3 and *_CH4</p>
order:A_04
par:RADIO_TEMPLATE;Configure device and GPIO;{ undef }
par:RADIO_NO_TEMPLATE;Configure device without GPIO template;{ undef }
par:SWITCHMODE1;SwitchMode for Input 1;{ undef }
par:SWITCHMODE2;SwitchMode for Input 2;{ undef }
par:SWITCHMODE3;SwitchMode for Input 3;{ undef }
par:SWITCHMODE3;SwitchMode for Input 4;{ undef }
par:CMNDTOPIC;Command topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}cmnd$3" : undef }
par:TELETOPIC;info topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}tele$3" : undef }
par:STATTOPIC;ack topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}stat$3" : undef }
par:SETCHANNELINFO;Set this to 0 to not set channelinfo;{ 1 }
par:ICON;ICON as set, defaults to taster;{ AttrVal("DEVICE","icon","taster") }
par:IO_DEV;Currently used IO;{ AttrVal('DEVICE','IODev',InternalVal('DEVICE','IODev',undef)->{NAME}) }
# autoconfigure device
option:{RADIO_NO_TEMPLATE}
set IO_DEV publish CMNDTOPIC/Backlog StateText1 off; StateText2 on; StateText3 toggle; StateText4 hold; SwitchMode1 SWITCHMODE1; SwitchMode2 SWITCHMODE2; SwitchMode3 SWITCHMODE3; SwitchMode4 SWITCHMODE4; SetOption26 1; SetOption114 1; SaveData 1
option:{RADIO_TEMPLATE}
set IO_DEV publish CMNDTOPIC/Backlog StateText1 off; StateText2 on; StateText3 toggle; StateText4 hold; SwitchMode1 SWITCHMODE1; SwitchMode2 SWITCHMODE2; SwitchMode3 SWITCHMODE3; SwitchMode4 SWITCHMODE4; SetOption26 1; SetOption114 1; SaveData 1; template {"NAME":"Shelly Plus i4","GPIO":[0,0,0,0,0,0,0,0,192,0,193,0,0,0,0,0,0,0,0,0,0,0,195,194,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1,"CMND":"SwitchMode1 1 | SwitchMode2 1 | SwitchMode3 1 | SwitchMode4 1 | SwitchTopic 0 | SetOption114 1"}; module 0
option:global
# setup main device channel 1
attr DEVICE icon ICON
attr DEVICE jsonMap Switch1_Action:state
attr DEVICE setList \
  off:noArg    STATTOPIC/Switch1 0\
  on:noArg     STATTOPIC/Switch1 1\
  toggle:noArg STATTOPIC/Switch1 2
attr DEVICE readingList \
  TELETOPIC/LWT:.* LWT\
  STATTOPIC/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
deletereading -q DEVICE (?!associatedWith|IODev).*
attr DEVICE setStateList on off toggle
attr DEVICE autocreate 0
# channel 2
copy DEVICE DEVICE_CH2
deleteattr DEVICE_CH2 alias
attr DEVICE_CH2 readingList \
  STATTOPIC/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr DEVICE_CH2 jsonMap Switch2_Action:state
attr DEVICE_CH2 setList \
  off:noArg    STATTOPIC/Switch2 0\
  on:noArg     STATTOPIC/Switch2 1\
  toggle:noArg STATTOPIC/Switch2 2
# channel 3
copy DEVICE_CH2 DEVICE_CH3
deleteattr DEVICE_CH3 alias
attr DEVICE_CH3 jsonMap Switch3_Action:state
attr DEVICE_CH3 setList \
  off:noArg    STATTOPIC/Switch3 0\
  on:noArg     STATTOPIC/Switch3 1\
  toggle:noArg STATTOPIC/Switch3 2
# channel 4
copy DEVICE_CH3 DEVICE_CH4
deleteattr DEVICE_CH4 alias
attr DEVICE_CH4 jsonMap Switch4_Action:state
attr DEVICE_CH4 setList \
  off:noArg    STATTOPIC/Switch4 0\
  on:noArg     STATTOPIC/Switch4 1\
  toggle:noArg STATTOPIC/Switch4 2
# associations
option:{SETCHANNELINFO}
set DEVICE attrTemplate set_associatedWith \CHANNELS=4
attr DEVICE,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4 model tasmota_shelly_i4
setreading DEVICE,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4 attrTemplateVersion 20210729 

Viele Grüße
Oliver

Beta-User

Zitat von: twdotnet am 30 Juli 2023, 00:39:51Hallo Zusammen,

für den Shelly Plus i4 mit Tasmota Firmware habe ich ein neues MQTT Template. Als Grundlage hab ich mein Template zum Shelly i3 mit Tasmota genommen, und es um den 4. Kanal erweitert.
Moin, habe eben eine etwas modifizierte Fassung eingecheckt.
Dabei ist mir aufgefallen, dass da (wie im i3) die setList auf STATTOPIC publisht. Kommt mir komisch (im Sinne von unüblich für Tasmota) vor, mag das jemand bitte bestätigen, dass das so korrekt ist?

Server: HP-T620@Debian 11, 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

F_Klee

#215
Moin Leute,
ich habe mich mal mit dem Eqiva eq-3 Heizkörperthermostat und Tasmota beschäftigt. Ein ESP32 dient dabei als eine Art Gateway (Dokumentation). Ich habe dazu mal ein Template gebastelt:
name:tasmota_tasmota32bt_EQ3BT
filter:TYPE=MQTT2_DEVICE
desc:Applies to Eqiva Bluetooth® Smart Radiator thermostat with tasmota32 bluetooth
order:A_06t02
par:TOPIC;tasmota device topic (..../tasmota_123456/....)
par:MAC;MAC-address of the thermostat (aabbccddeeff)
par:ICON;ICON as set, defaults to hm-cc-rt-dn;{ AttrVal('DEVICE','icon','hm-cc-rt-dn') }
attr DEVICE devStateIcon 1.Online:WLAN_Status.1 1.Offline:WLAN_Status.0\
2.ok:bluetooth@lightgreen 2.fail:bluetooth@red\
3.GOOD:batterie@lightgreen 3.LOW:batterie@red
attr DEVICE getList Status:noArg result cmnd/TOPIC/EQ3/MAC/state\
Tagesprofil0_Samstag:noArg result cmnd/TOPIC/EQ3/MAC/reqprofile 0\
Tagesprofil1_Sonntag:noArg result cmnd/TOPIC/EQ3/MAC/reqprofile 1\
Tagesprofil2_Montag:noArg result cmnd/TOPIC/EQ3/MAC/reqprofile 2\
Tagesprofil3_Dienstag:noArg result cmnd/TOPIC/EQ3/MAC/reqprofile 3\
Tagesprofil4_Mittwoch:noArg result cmnd/TOPIC/EQ3/MAC/reqprofile 4\
Tagesprofil5_Donnerstag:noArg result cmnd/TOPIC/EQ3/MAC/reqprofile 5\
Tagesprofil6_Freitag:noArg result cmnd/TOPIC/EQ3/MAC/reqprofile 6
attr DEVICE icon ICON
attr DEVICE jsonMap profileday0:profile0_Samstag\
profileday1:profile1_Sonntag\
profileday2:profile2_Montag\
profileday3:profile3_Dienstag\
profileday4:profile4_Mittwoch\
profileday5:profile5_Donnerstag\
profileday6:profile6_Freitag\
posn:valve
attr DEVICE readingList \
  tele/TOPIC/LWT:.* LWT\
  stat/EQ3/MAC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr DEVICE setList temp cmnd/TOPIC/EQ3/MAC/settemp\
mode cmnd/TOPIC/EQ3/MAC/mode\
holiday:textField cmnd/TOPIC/EQ3/MAC/setholiday\
setvalvetime:noArg cmnd/TOPIC/EQ3/MAC/settime\
profile0_Samstag cmnd/TOPIC/EQ3/MAC/setprofile 0\
profile1_Sonntag cmnd/TOPIC/EQ3/MAC/setprofile 1\
profile2_Montag cmnd/TOPIC/EQ3/MAC/setprofile 2\
profile3_Dienstag cmnd/TOPIC/EQ3/MAC/setprofile 3\
profile4_Mittwoch cmnd/TOPIC/EQ3/MAC/setprofile 4\
profile5_Donnerstag cmnd/TOPIC/EQ3/MAC/setprofile 5\
profile6_Freitag cmnd/TOPIC/EQ3/MAC/setprofile 6
attr DEVICE periodicCmd setvalvetime:1440
attr DEVICE stateFormat 1:LWT\
2:result\
3:battery
attr DEVICE userReadings valveTime {FmtDateTime(ReadingsNum($name,"stattime",0))}
attr DEVICE webCmd mode:temp
attr DEVICE widgetOverride mode:select,auto,manual,on,off temp:slider,4.5,0.5,30.0,1
attr DEVICE autocreate 0

Es ist mein erstes Template und sicher verbesserungswürdig.

Eine Sache gefällt mir noch nicht, allerdings habe ich noch nicht geschafft, es zu ändern. Wenn man ein neues Tagesprofil an das Thermostat schickt, bekommt man nur eine Erfolgsmeldung aber nicht das geänderte Profil zurück. Man müsste nach dem Senden noch einen zweiten Befehl zum Lesen des geänderten Profils schicken. Für einen Experten sicher kein Problem, das noch zu ergänzen. Danke!

borsti67

Moin,
ich hätte da mal eine Ergänzung anzumerken für das Shelly_TRV Template.

Die SetList habe ich noch erweitert um:
window:open,close {my $val=$EVTPART1 eq 'open'?1:0; qq($DEVICETOPIC/thermostat/0/command/window_open $val)}
Hintergrund: Ich habe einen Raum mit einem Heizkörper, aber mehreren Fenstern. Somit wollte ich mittels DOIF den Status im TRV setzen lassen; aber die Methode mit GetHttpFile habe ich nicht zum Laufen bekommen ("unauthorized", da passwortgeschützt). Habe dann mal ganz frech obiges Command ausprobiert, das in der Shelly-API-Doku nicht steht, und siehe da, das geht.  8)
cu/2
Borsti
---
FHEM 5.8 auf Synology DS211j (bis 11/17) | FHEM 6.0 auf Raspi Zero W (bis 11/20) | FHEM 6.2 als VM in Synology DS1815+ (ab 11/20)

Gasmast3r

#217
Hallo, hab grad ein Shelly PM MINI eingebunden als Template hab ich tasmota POW genommen und es dementsprechend angepasst

name:tasmota_PM_MINI
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*(tele|cmnd).*
desc:Applies to Shelly PM MINI devices with power measuring abilities.<br>NOTE:; the format the device is sending data will also be changed to lowercase!
order:A_ ????
par:CMNDTOPIC;Command topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\b(tele)(/.*)?/LWT:, ? "${1}cmnd$3" : undef }
par:CALLSPEECHRECOGN;Set this to 0 to not set any speech recogn. related attributes;{ 1 }
set DEVICE attrTemplate tasmota_PM_MINI \CALLSPEECHRECOGN=CALLSPEECHRECOG
attr DEVICE devStateIcon {my $text = ' uptime: '.ReadingsVal($name,"Uptime","unknown").sprintf(" aktuell: %.1f W Tag: %.2f kWh Gestern: %.3f kWh Gesamt: %.4f kWh", ReadingsVal($name,"ENERGY_Power","-1"), ReadingsVal($name,"ENERGY_Today","-1"), ReadingsVal($name,"ENERGY_Yesterday","-1"), ReadingsVal($name,"ENERGY_Total","-1"));; my $onl = ReadingsVal($name,"LWT","false") eq "Online"?"10px-kreis-gruen":"10px-kreis-rot";;}
attr DEVICE stateFormat {sprintf("aktuell: %.1f W Tag: %.2f kWh Gestern: %.3f kWh Gesamt: %.4f kWh", ReadingsVal($name,"ENERGY_Power","-1"), ReadingsVal($name,"ENERGY_Today","-1"), ReadingsVal($name,"ENERGY_Yesterday","-1"), ReadingsVal($name,"ENERGY_Total","-1"))}
deletereading -q DEVICE (?!associatedWith|IODev).*
attr DEVICE model tasmota_PM-MINI
setreading DEVICE attrTemplateVersion 20231202


ich bin nicht so bewandert und würde mich freuen wenn da noch mal wer drüber schaut und wenn es ok ist kann es ja eingefügt werden.

Habe es selber in meine Template kopiert und einen zweiten PM_MINI integriert, Ergebnis FHEM ist eingefroren.


denis.robel

hier mein RAW Device für eine Aubess Steckdose 20A (LSPA9 clone).

Das Teil habe ich vorher mit tuya-cloudcutter mit openbeken geflashed und dann fuktioniert das Teil mit mqtt.

defmod MQTT2_obkFFC5CF49 MQTT2_DEVICE obkFFC5CF49
attr MQTT2_obkFFC5CF49 alias SchreibtischlampeJannik
attr MQTT2_obkFFC5CF49 icon hue_filled_outlet
attr MQTT2_obkFFC5CF49 readingList obkFFC5CF49:obkFFC5CF49/connected:.* connected\
obkFFC5CF49:obkFFC5CF49/host:.* host\
obkFFC5CF49:obkFFC5CF49/build:.* build\
obkFFC5CF49:obkFFC5CF49/mac:.* mac\
obkFFC5CF49:obkFFC5CF49/ssid:.* ssid\
obkFFC5CF49:obkFFC5CF49/sockets:.* sockets\
obkFFC5CF49:obkFFC5CF49/rssi:.* rssi\
obkFFC5CF49:obkFFC5CF49/uptime:.* uptime\
obkFFC5CF49:obkFFC5CF49/freeheap:.* freeheap\
obkFFC5CF49:obkFFC5CF49/ip:.* ip\
obkFFC5CF49:obkFFC5CF49/1/get:.* obkFFC5CF49_1_get\
obkFFC5CF49:stat/obkFFC5CF49/RESULT:.* { json2nameValue($EVENT) }\
obkFFC5CF49:obkFFC5CF49/voltage/get:.* ENERGY_Voltage\
obkFFC5CF49:obkFFC5CF49/current/get:.* ENERGY_Current\
obkFFC5CF49:obkFFC5CF49/power/get:.* ENERGY_Power\
obkFFC5CF49:obkFFC5CF49/energycounter/get:.* ENERGY_Total\
obkFFC5CF49:obkFFC5CF49/energycounter_last_hour/get:.* ENERGY_LastHour\
obkFFC5CF49:tele/obkFFC5CF49/STATE:.* { json2nameValue($EVENT) }\
obkFFC5CF49:tele/obkFFC5CF49/SENSOR:.* { json2nameValue($EVENT) }
attr MQTT2_obkFFC5CF49 room MQTT2_DEVICE
attr MQTT2_obkFFC5CF49 setList off:noArg cmnd/obkFFC5CF49/POWER1 0\
on:noArg cmnd/obkFFC5CF49/POWER1 1\
VG

Denis

denis.robel

Ich habe ein Tuya IR-Gateway mit Hilfe des tuya-cloudcutter mit openbeken versehen.
IR-Gateway

Senden und Empfangen funktionieren. Das Senden funktioniert mit der setList.

defmod MQTT2_obk1F39E4A3 MQTT2_DEVICE obk1F39E4A3
attr MQTT2_obk1F39E4A3 autocreate 1
attr MQTT2_obk1F39E4A3 readingList obk1F39E4A3:obk1F39E4A3/connected:.* connected\
obk1F39E4A3:obk1F39E4A3/sockets:.* sockets\
obk1F39E4A3:obk1F39E4A3/rssi:.* rssi\
obk1F39E4A3:obk1F39E4A3/uptime:.* uptime\
obk1F39E4A3:obk1F39E4A3/freeheap:.* freeheap\
obk1F39E4A3:obk1F39E4A3/ip:.* ip\
obk1F39E4A3:obk1F39E4A3/ir/get:.* get\
obk1F39E4A3:obk1F39E4A3/RESULT:.* { json2nameValue($EVENT) }
attr MQTT2_obk1F39E4A3 room MQTT2_DEVICE
attr MQTT2_obk1F39E4A3 setList jedi_on:noArg cmnd/obk1F39E4A3/IRSend NEC 0xFE02 0x1 1\
jedi_off:noArg cmnd/obk1F39E4A3/IRSend NEC 0xFE02 0x2 0 1\
jedi_fackel:noArg cmnd/obk1F39E4A3/IRSend NEC 0xFE02 0xD 1

setstate MQTT2_obk1F39E4A3 jedi_on
setstate MQTT2_obk1F39E4A3 2023-12-03 09:13:07 IODev myBroker
setstate MQTT2_obk1F39E4A3 2023-12-03 19:05:04 IrReceived_Bits 32
setstate MQTT2_obk1F39E4A3 2023-12-03 19:05:04 IrReceived_Data 0xFD02FE02
setstate MQTT2_obk1F39E4A3 2023-12-03 19:05:04 IrReceived_Protocol NEC
setstate MQTT2_obk1F39E4A3 2023-12-03 09:13:07 connected online
setstate MQTT2_obk1F39E4A3 2023-12-03 09:13:10 freeheap 88432
setstate MQTT2_obk1F39E4A3 2023-12-03 19:05:04 get IR_NEC 0xFE02 0x2 0
setstate MQTT2_obk1F39E4A3 2023-12-03 09:13:11 ip 192.168.179.246
setstate MQTT2_obk1F39E4A3 2023-12-03 09:13:09 rssi -55
setstate MQTT2_obk1F39E4A3 2023-12-03 09:13:08 sockets 2
setstate MQTT2_obk1F39E4A3 2023-12-03 19:05:54 state jedi_on
setstate MQTT2_obk1F39E4A3 2023-12-03 09:13:54 subscriptions cmnd/obk1F39E4A3/+ obk1F39E4A3/+/set
setstate MQTT2_obk1F39E4A3 2023-12-03 09:13:09 uptime 35087
VG

Denis

Django.Edwards

Zitat von: Beta-User am 17 August 2023, 07:21:54
Zitat von: twdotnet am 30 Juli 2023, 00:39:51Hallo Zusammen,

für den Shelly Plus i4 mit Tasmota Firmware habe ich ein neues MQTT Template. Als Grundlage hab ich mein Template zum Shelly i3 mit Tasmota genommen, und es um den 4. Kanal erweitert.
Moin, habe eben eine etwas modifizierte Fassung eingecheckt.
Dabei ist mir aufgefallen, dass da (wie im i3) die setList auf STATTOPIC publisht. Kommt mir komisch (im Sinne von unüblich für Tasmota) vor, mag das jemand bitte bestätigen, dass das so korrekt ist?


Hallo, wenn ich versuche das Template anzuwenden erhalte ich folgende Fehlermeldung:
ERROR executing perl-code { AttrVal('MQTT2_Shellyi4_Garage','icon",'taster') } for param ICON: Bad name after taster' at (eval 131) line 1.

Ich habe mir das in der mqtt2.template Datei angeschaut und da ist in folgender Zeile ein Fehler (Rot markiert) " statt ':
par:ICON;ICON as set, defaults to taster;{ AttrVal('DEVICE','icon",'taster') }
#contributed by twdotnet, https://forum.fhem.de/index.php?msg=1282883
# shelly plus i4 4 channel input switches with device configuration
name:tasmota_4channel_input_shelly_i4
filter:TYPE=MQTT2_DEVICE
desc:Shelly i4 device flashed with Tasmota, provides four input only channels. <p>Device will be configured with selectable SwitchMode and optional GPIO Template. <br>Recommended SwitchModes 1=FollowMode (normally open switches> or 2=InvertedFollowMode (normally closed switches) </p><p>Tasmota 9.1+ is required for <a href=https://tasmota.github.io/docs/Buttons-and-Switches/#setoption114>SetOption114</a> to detach switches from relays.<p>NOTE: <br>A second, third and fourth device will be created for the second, third and fourth input with suffixes *_CH2, *_CH3 and *_CH4</p>
order:A_03a
par:RADIO_TEMPLATE;Configure device and GPIO;{ undef }
par:RADIO_NO_TEMPLATE;Configure device without GPIO template;{ undef }
par:SWITCHMODE1;SwitchMode for Input 1;{ undef }
par:SWITCHMODE2;SwitchMode for Input 2;{ undef }
par:SWITCHMODE3;SwitchMode for Input 3;{ undef }
par:SWITCHMODE3;SwitchMode for Input 4;{ undef }
par:CMNDTOPIC;Command topic prefix, without trailing /;{ AttrVal('DEVICE','readingList','') =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}cmnd$3" : undef }
par:TELETOPIC;info topic prefix, without trailing /;{ AttrVal('DEVICE','readingList','') =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}tele$3" : undef }
par:STATTOPIC;ack topic prefix, without trailing /;{ AttrVal('DEVICE','readingList','') =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}stat$3" : undef }
par:SETCHANNELINFO;Set this to 0 to not set channelinfo;{ 1 }
par:ICON;ICON as set, defaults to taster;{ AttrVal('DEVICE','icon",'taster') }
par:IO_DEV;Currently used IO;{ AttrVal('DEVICE','IODev',InternalVal('DEVICE','IODev',undef)->{NAME}) }

Kann das vielleicht jemand korrigieren? Ich weiß leider nicht wie das geht.

Beta-User

Zitat von: Django.Edwards am 07 Dezember 2023, 13:45:05Kann das vielleicht jemand korrigieren? Ich weiß leider nicht wie das geht.
Thx für den Hinweis, Korrektur ist seit eben im svn und kann ab morgen per update bezogen werden.

(Korrigieren kann das theoretisch jeder, der svn-Schreibrechte hat, und es ist m.E. ganz sinnvolle Praxis, dass da nicht jeder drin schreiben kann...).
Server: HP-T620@Debian 11, 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

denis.robel

Zitat von: denis.robel am 03 Dezember 2023, 19:26:27Ich habe ein Tuya IR-Gateway mit Hilfe des tuya-cloudcutter mit openbeken versehen.
IR-Gateway

Senden und Empfangen funktionieren. Das Senden funktioniert mit der setList.

Ich habe jetzt versucht ein Template zu bauen. Es klappt aber nicht so richtig. Könnte hier bitte mal jemand drüber schauen?
###########################################
# $Id: mqtt2.template 23288 2020-12-04 06:11:47Z Beta-User $
#
# Comments start with #. Empty lines are ignored.
# Syntax of one entry: name: line, one optional filter: line, zero or more par: lines,  FHEM-Commands
# filter:INTERNAL=VALUE (optional)
# par: name of the parameter; comment; perl_code (optional)
# perl_code returns a value for the parameter, or undef.
# If undef, the user has to specify them (the comment is shown to the user)

###########################################
# OpenBeken

name:OPNBEKEN_SmartPlug

filter:TYPE=MQTT2_DEVICE
desc:Applies to OpenBeken SmartPlug like Tuya LSPA9 clones


par:ICON;ICON as set, defaults to hue_filled_outlet;{ AttrVal("DEVICE","icon","hue_filled_gu10") }

deletereading -q DEVICE (?!associatedWith).*
attr DEVICE setList \
  off:noArg    cmnd/DEVICE/Power1 0\
  on:noArg     cmnd/DEVICE/Power1 1\
  toggle:noArg cmnd/DEVICE/Power1 2\
  reboot:noArg cmnd/DEVICE/Restart 1
 
attr DEVICE webCmd on:off:toggle:reboot
attr DEVICE event-on-change-reading .*
attr DEVICE icon ICON
attr DEVICE room MQTT2_DEVICE
attr DEVICE devStateIcon ON:rc_GREEN:off OFF:rc_RED:on offline:rc_BLUE:off
attr DEVICE stateFormat { if(ReadingsVal("DEVICE","POWER",0) eq "ON") {return "on";;} else {return "off";;} }
attr DEVICE readingList \
  DEVICE/connected:.* connected\
  DEVICE/host:.* host\
  DEVICE/build:.* build\
  DEVICE/mac:.* mac\
  DEVICE/sockets:.* sockets\
  DEVICE/rssi:.* rssi\
  DEVICE/uptime:.* uptime\
  DEVICE/freeheap:.* freeheap\
  DEVICE/ip:.* ip\
  DEVICE//1/get:.* obkFFC5CF49_1_get\
  stat/DEVICE/RESULT:.* { json2nameValue($EVENT) }\
  tele/DEVICE/STATE:.* { json2nameValue($EVENT) }\
  tele/DEVICE/SENSOR:.* { json2nameValue($EVENT) }\
  DEVICE/voltage/get:.* ENERGY_Voltage\
  DEVICE/current/get:.* ENERGY_Current\
  DEVICE/power/get:.* ENERGY_Power\
  DEVICE/energycounter/get:.* ENERGY_Total\
  DEVICE/energycounter_last_hour/get:.* ENERGY_LastHour
 
attr DEVICE model OpnBeken_SmartPlug
setreading DEVICE attrTemplateVersion 20231202 or prior

VG

Denis

Beta-User

Zitat von: denis.robel am 15 Dezember 2023, 23:09:51Ich habe jetzt versucht ein Template zu bauen. Es klappt aber nicht so richtig. Könnte hier bitte mal jemand drüber schauen?
Magst du zu openbeken bitte einen gesonderten Thread aufmachen? Das fällt nach meinem Eindruck noch nicht unter "fertiges template" (dieser Thread), sondern unter "support für neue templates".

Dort bitte links zur Doku des Projekts und ein _ganzes_ raw-list. Vielleicht auch noch etwas MQTT-Traffic, mal sehen. Aber an sich sieht das erst mal aus wie ein etwas angepaßtes Tasmota, so dass diese template-Familie eigentlich eine gute Basis sein könnte (ggf. auch, was das Umkonfigurieren des "on/off"-Werts angeht)?
Server: HP-T620@Debian 11, 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

denis.robel

Zitat von: Beta-User am 18 Dezember 2023, 08:05:16Magst du zu openbeken bitte einen gesonderten Thread aufmachen? Das fällt nach meinem Eindruck noch nicht unter "fertiges template" (dieser Thread), sondern unter "support für neue templates".

Dort bitte links zur Doku des Projekts und ein _ganzes_ raw-list. Vielleicht auch noch etwas MQTT-Traffic, mal sehen. Aber an sich sieht das erst mal aus wie ein etwas angepaßtes Tasmota, so dass diese template-Familie eigentlich eine gute Basis sein könnte (ggf. auch, was das Umkonfigurieren des "on/off"-Werts angeht)?

ist hiermit geschehen: https://forum.fhem.de/index.php?topic=136291.0
VG

Denis