FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: Turtle am 03 Oktober 2021, 09:37:02

Titel: WThermostat Beca MQTT
Beitrag von: Turtle am 03 Oktober 2021, 09:37:02
Hallo,

ich versuche vergeblich ein Thermostat über MQTT anzulegen es ist kein Template dafür vorhanden.
Es handelt sich um ein Thermostat mit ESP8266 Chip und Der Firmware von Fashberg WThermostat
v1.19.beta1-fas.
das Thermostat wird unter MQTT2_DEVICE angezeigt.

defmod MQTT2_wthermostat_4213660 MQTT2_DEVICE wthermostat_4213660
attr MQTT2_wthermostat_4213660 readingList wthermostat_4213660:Klima-Wohnbereich/tele/LWT:.* LWT\
wthermostat_4213660:devices/network:.* { json2nameValue($EVENT) }\
wthermostat_4213660:devices/clock:.* { json2nameValue($EVENT) }\
wthermostat_4213660:devices/thermostat:.* { json2nameValue($EVENT) }\
wthermostat_4213660:devices/logging:.* { json2nameValue($EVENT) }\
wthermostat_4213660:Klima-Wohnbereich/stat/things/network/properties:.* { json2nameValue($EVENT) }\
wthermostat_4213660:Klima-Wohnbereich/stat/things/thermostat/properties:.* { json2nameValue($EVENT) }\
wthermostat_4213660:Klima-Wohnbereich/stat/things/logging/properties:.* { json2nameValue($EVENT) }\
wthermostat_4213660:Klima-Wohnbereich/stat/things/clock/properties:.* { json2nameValue($EVENT) }
attr MQTT2_wthermostat_4213660 room MQTT2_DEVICE

setstate MQTT2_wthermostat_4213660 2021-10-03 08:19:24 IODev mqttBroker
setstate MQTT2_wthermostat_4213660 2021-10-03 08:19:26 LWT Online
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:26 action off
setstate MQTT2_wthermostat_4213660 2021-10-03 06:13:27 attrTemplateVersion 20210523
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:26 deviceOn false
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:26 ecoMode false
setstate MQTT2_wthermostat_4213660 2021-10-03 08:22:57 epochTime 1633245777
setstate MQTT2_wthermostat_4213660 2021-10-03 08:22:57 epochTimeLocalFormatted 2021-10-03 09:22:57
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:26 fanMode auto
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:26 firmware 1.19.beta1-fas
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:26 holdState manual
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:26 idx Klima-Wohnbereic
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:26 ip 192.168.188.36
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:26 locked false
setstate MQTT2_wthermostat_4213660 2021-10-03 06:48:07 log warning: startMcuInitialize
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:17 logLevel trace
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:26 mcuId N8bUqOZ8HBQjU0K01.0.0
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:26 mode off
setstate MQTT2_wthermostat_4213660 2021-10-03 08:22:57 ntpServer pool.ntp.org
setstate MQTT2_wthermostat_4213660 2021-10-03 08:22:57 offset 7200
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:27 rssi -56
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:26 schedulesMode off
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:26 state
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:26 switchBackToAuto false
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:26 systemMode cool
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:26 targetTemperature 20.00
setstate MQTT2_wthermostat_4213660 2021-10-03 08:27:26 temperature 20.50
setstate MQTT2_wthermostat_4213660 2021-10-03 08:22:57 timeDST 0,3,0,2,120
setstate MQTT2_wthermostat_4213660 2021-10-03 08:22:57 timeSTD 0,10,0,3,60
setstate MQTT2_wthermostat_4213660 2021-10-03 08:22:57 timeZone 99
setstate MQTT2_wthermostat_4213660 2021-10-03 08:19:26 topic Klima-Wohnbereich/stat/things/logging
setstate MQTT2_wthermostat_4213660 2021-10-03 08:22:57 uptime 54050
setstate MQTT2_wthermostat_4213660 2021-10-03 08:19:26 url http://192.168.188.36/things/logging
setstate MQTT2_wthermostat_4213660 2021-10-03 08:22:57 validTime true
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 03 Oktober 2021, 20:21:11
Hallo und vorab mal Willkommen im FHEM-Forum.

Das sieht nach einem "verbastelten Tasmota" aus. Gibt es irgendwo eine Beschreibung der MQTT-Schnittstelle zu dem Ding?

Ansonsten wäre interessant, was im Internal "subscriptions" steht, und was auf welchem der Topics denn so an Infos ausgetauscht wird. Gibt mehrere Methoden, wie man da drankommen kann. Bitte sag' Bescheid, wenn du dazu Hilfe brauchst (es gibt einige "unbekanntes MQTT(2)-Geräte"-Threads, fast in jedem sollte dazu was zu finden sein, wenn die Gegenstelle JSON sendet).
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Turtle am 04 Oktober 2021, 23:23:37
Hallo Beta-User danke für deine Antwort

Eines vorab ich habe nicht wirklich viel Erfahrung mit FHEM habe einige Aktoren mit Enocean Pi und ein paar Shellys in meinen Geräten.

Wenn du mir aber trotzdem hilfst wäre ich dir sehr dankbar.

Das habe ich auf der GitHub Seite gefunden.

Modifying parameters via MQTT
Send a json with changed parameters to <your_topic>/cmnd/things/thermostat/properties.
Send a json with changed schedules to <your_topic>/cmnd/things/thermostat/schedules. You also can change single values by sending the value to <your_topic>/cmnd/things/thermostat/properties/parameterName.

Examples:

# set device on
mosquitto_pub -h mqtt -t home/test/cmnd/things/thermostat/properties/deviceOn  -m "true"

# set device to heating
mosquitto_pub -h mqtt -t home/test/cmnd/things/thermostat/properties/mode  -m "heat"

# set target temperature
mosquitto_pub -h mqtt -t home/test/cmnd/things/thermostat/properties/targetTemperature  -m "23.5"

# set target temperature (json)
mosquitto_pub -h mqtt -t home/test/cmnd/things/thermostat/properties -m '{"targetTemperature":23.00}'

# set target temperature and mode (json)
mosquitto_pub -h mqtt -t home/test/cmnd/things/thermostat/properties -m '{"targetTemperature":22.00,"mode":heat}'

# set device to auto (target temperature controlled by MCU-Scheduler)
mosquitto_pub -h mqtt -t home/test/cmnd/things/thermostat/properties/mode -m "auto"

# just request properties
mosquitto_pub -h mqtt  -t home/test/cmnd/things/thermostat/properties -n

# request properties and show answer directly
mosquitto_rr -h mqtt -t home/test/cmnd/things/thermostat/properties  -n -e home/test/stat/things/thermostat/properties


# Change Schedules (here: weekday schedules)
mosquitto_pub -h mqtt -t home/test/cmnd/things/thermostat/schedules -m \
'{"w1h":"06:00","w1t":20.00,"w2h":"08:00","w2t":15.00,"w3h":"11:30","w3t":15.00,"w4h":"13:30","w4t":15.00,"w5h":"17:00","w5t":23.00,"w6h":"23:00","w6t":15.00}'

# disable MQTT logging
mosquitto_pub -h mqtt -t home/test/cmnd/things/logging/properties/logLevel -m "silent"

# set to level trace (available: silent|fatal|error|warning|notice|trace|verbose)
mosquitto_pub -h mqtt -t home/test/cmnd/things/logging/properties/logLevel -m "trace"

# show logs
mosquitto_sub -h mqtt -v -t "home/test/tele/log/#"

# send MCU command by MQTT
mosquitto_pub -t "home/test/cmnd/things
Titel: Antw:WTherostat Beca MQTT
Beitrag von: LuckyDay am 04 Oktober 2021, 23:53:03
https://github.com/fashberg/WThermostatBeca
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 05 Oktober 2021, 07:13:39
Zitat von: fhem-hm-knecht am 04 Oktober 2021, 23:53:03
https://github.com/fashberg/WThermostatBeca
Danke!

@turtle:
Ich schau's mir an, kann aber etwas dauern. Ggf. bitte einfach in ein paar Tagen nochmal anpingen. Falls du selbst was tun willst: die Tasmota-zigbee-Variante ist in vielen Details ähnlich, aber von der Struktur der (empfangenen) Payloads komplexer. Vielleicht magst du das mal überfliegen, dann muss ich zumindest ggf. dann nicht erläutern, warum dann manche setter heißen werden, wie sie heißen... (https://forum.fhem.de/index.php/topic,116535.0.html)
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 05 Oktober 2021, 21:37:48
Bitte morgen früh (nach 8:00) mal ein update machen, das attrTemplate sollte dann als "WThermostatBeca" verfügbar sein. Es ist Zusatzcode erforderlich (wird runtergeladen), und alles noch ziemlich geraten...
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Turtle am 06 Oktober 2021, 09:06:53
@ Beta-User

du bist der Wahnsinn funktionierte sofort vielen Dank!!!

:D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 06 Oktober 2021, 09:45:17
 8) Danke für die Rückmeldung.

Bin etwas überrascht, dass du die weekprofile-Integration so schnell hast austesten können, aber wenn auch das direkt funktioniert: umso besser ;) ...

Zeigst du mal noch ein raw-listing (optimalerweise nach einem get temperature)?
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Turtle am 06 Oktober 2021, 09:53:55
weekprofile hab ich nicht getestet benutze ich nicht probiere ich aber gerne aus hab es über den Google Assistant laufen.defmod MQTT2_wthermostat_4213660 MQTT2_DEVICE wthermostat_4213660
attr MQTT2_wthermostat_4213660 userattr weekprofile
attr MQTT2_wthermostat_4213660 alias Klima Wohnbereich
attr MQTT2_wthermostat_4213660 devStateIcon <a href="http://ip" target="_blank">\
LWT\
</a>\
state
attr MQTT2_wthermostat_4213660 event-on-change-reading state
attr MQTT2_wthermostat_4213660 genericDeviceType thermostat
attr MQTT2_wthermostat_4213660 getList desired-temp:noArg desired-temp Klima-Wohnbereich/cmnd/things/thermostat/properties
attr MQTT2_wthermostat_4213660 icon hm-tc-it-wm-w-eu
attr MQTT2_wthermostat_4213660 jsonMap targetTemperature:desired-temp
attr MQTT2_wthermostat_4213660 readingList Klima-Wohnbereich/tele/LWT:.* LWT\
  devices/network:.* { json2nameValue($EVENT,'d_network_',$JSONMAP) }\
  devices/clock:.* { json2nameValue($EVENT,'d_clock_',$JSONMAP) }\
  devices/thermostat:.* { json2nameValue($EVENT,'d_thermostat_',$JSONMAP) }\
  devices/logging:.* { json2nameValue($EVENT,'d_log_',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/network/properties:.* { json2nameValue($EVENT,'net_',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/thermostat/properties:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/logging/properties:.* { json2nameValue($EVENT,'log_',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/clock/properties:.* { json2nameValue($EVENT,'clock_',$JSONMAP) }\
wthermostat_4213660:Klima-Wohnbereich/stat/things/thermostat/deviceOn:.* deviceOn\
wthermostat_4213660:Klima-Wohnbereich/stat/things/thermostat/targetTemperature:.* targetTemperature
attr MQTT2_wthermostat_4213660 room GoogleAssistant
attr MQTT2_wthermostat_4213660 setList on Klima-Wohnbereich/cmnd/things/thermostat/properties/deviceOn true\
  off Klima-Wohnbereich/cmnd/things/thermostat/properties/deviceOn false\
  desired-temp:slider,5.0,0.5,35.0,1 Klima-Wohnbereich/cmnd/things/thermostat/properties/targetTemperature $EVTPART1\
  mode:cool,auto Klima-Wohnbereich/cmnd/things/thermostat/properties/mode $EVTPART1\
  weekprofile { FHEM::attrT_z2m_thermostat_Utils::z2t_send_Beca_weekprofile($NAME, $EVTPART1, $EVTPART2, 'Klima-Wohnbereich/cmnd/things/thermostat/schedules') }\
  x_send_mcucommand:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //g;; qq(Klima-Wohnbereich/cmnd/things/thermostat/mcucommand $payload)}
attr MQTT2_wthermostat_4213660 setStateList on off weekprofile
attr MQTT2_wthermostat_4213660 weekprofile MQTT2_wthermostat_4213660

setstate MQTT2_wthermostat_4213660 cooling
setstate MQTT2_wthermostat_4213660 2021-10-06 08:04:02 IODev mqttBroker
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:12 action off
setstate MQTT2_wthermostat_4213660 2021-10-06 08:12:21 attrTemplateVersion 20211005
setstate MQTT2_wthermostat_4213660 2021-10-06 08:46:48 clock_epochTime 1633506408
setstate MQTT2_wthermostat_4213660 2021-10-06 08:46:48 clock_epochTimeLocalFormatted 2021-10-06 09:46:48
setstate MQTT2_wthermostat_4213660 2021-10-06 08:46:48 clock_ntpServer pool.ntp.org
setstate MQTT2_wthermostat_4213660 2021-10-06 08:46:48 clock_offset 7200
setstate MQTT2_wthermostat_4213660 2021-10-06 08:46:48 clock_timeDST 0,3,0,2,120
setstate MQTT2_wthermostat_4213660 2021-10-06 08:46:48 clock_timeSTD 0,10,0,3,60
setstate MQTT2_wthermostat_4213660 2021-10-06 08:46:48 clock_timeZone 99
setstate MQTT2_wthermostat_4213660 2021-10-06 08:46:48 clock_uptime 3004
setstate MQTT2_wthermostat_4213660 2021-10-06 08:46:48 clock_validTime true
setstate MQTT2_wthermostat_4213660 2021-10-06 08:16:16 d_clock_ip 192.168.188.55
setstate MQTT2_wthermostat_4213660 2021-10-06 08:16:16 d_clock_topic Klima-Schlafzimmer/stat/things/clock
setstate MQTT2_wthermostat_4213660 2021-10-06 08:16:16 d_clock_url http://192.168.188.55/things/clock
setstate MQTT2_wthermostat_4213660 2021-10-06 08:16:16 d_log_ip 192.168.188.55
setstate MQTT2_wthermostat_4213660 2021-10-06 08:16:16 d_log_topic Klima-Schlafzimmer/stat/things/logging
setstate MQTT2_wthermostat_4213660 2021-10-06 08:16:16 d_log_url http://192.168.188.55/things/logging
setstate MQTT2_wthermostat_4213660 2021-10-06 08:16:16 d_network_ip 192.168.188.55
setstate MQTT2_wthermostat_4213660 2021-10-06 08:16:16 d_network_topic Klima-Schlafzimmer/stat/things/network
setstate MQTT2_wthermostat_4213660 2021-10-06 08:16:16 d_network_url http://192.168.188.55/things/network
setstate MQTT2_wthermostat_4213660 2021-10-06 08:16:16 d_thermostat_ip 192.168.188.55
setstate MQTT2_wthermostat_4213660 2021-10-06 08:16:16 d_thermostat_topic Klima-Schlafzimmer/stat/things/thermostat
setstate MQTT2_wthermostat_4213660 2021-10-06 08:16:16 d_thermostat_url http://192.168.188.55/things/thermostat
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:12 desired-temp 17.00
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:12 deviceOn false
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:12 ecoMode false
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:12 fanMode auto
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:12 firmware 1.19.beta1-fas
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:12 holdState manual
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:12 idx Klima-Wohnbereic
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:12 ip 192.168.188.36
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:12 locked false
setstate MQTT2_wthermostat_4213660 2021-10-06 08:46:48 log_logLevel trace
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:12 mcuId N8bUqOZ8HBQjU0K01.0.0
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:12 mode off
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:09 net_rssi -56
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:12 schedulesMode off
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:12 state cooling
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:12 switchBackToAuto false
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:12 systemMode cool
setstate MQTT2_wthermostat_4213660 2021-10-06 08:37:28 targetTemperature 17.00
setstate MQTT2_wthermostat_4213660 2021-10-06 08:50:12 temperature 20.50

Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 06 Oktober 2021, 10:47:36
Zitat von: Turtle am 06 Oktober 2021, 09:53:55
weekprofile hab ich nicht getestet benutze ich nicht probiere ich aber gerne aus.
Zu weekprofile müßtest du dich gesondert einlesen. Das ermöglicht es einfach, "anlassbezogen" Wochenprofile zu wechseln - zentral für alle möglichen Arten von Klimageräten (entstanden ist es wohl mal für MAX, es kann aber auch CUL_HM, HMCCUDEV, WeekdayTimer (und damit "alles") und eben MQTT2_DEVICE), wobei der Vorteil ist, dass es da, wo es hardwaremäßig geht, die Profile direkt auf die Hardware spielen läßt, so dass die Profile selbst dann dort autonom laufen.

Zitat
hab es über den Google Assistant laufen.
Kenne ich nicht, aber vermutlich läuft das direkt dadurch, dass es als "thermostat"-genericDeviceType gekennzeichnet wird ;) .
Von daher scheint deine Neigung nicht besonders ausgeprägt zu sein, das für FHEMWEB noch zu optimieren?
Sinnvoll erscheint mir noch
attr DEVICE webCmd mode:desired-temp
Und an stateFormat/devStateIcon könnte man auch noch schrauben.

Dein Model scheint ein ein Klimagerät zu sein, kein Heizthermostat...

Ich würde gerne öffentlich weitermachen, weil solche Threads dann hilfreich sind, wenn jemand ein ähnliches Problem hat oder eine Änderung vorschlagen will.

Tendenziell würde ich dazu neigen, alles direkt zu verwerfen, was über die "devices"-Zweige kommt. Sollte so gehen:
  devices/(network|clock|thermostat|logging):.* {}\

Und zu guter Letzt findet FHEM meistens on/off hilfreicher wie true/false. Könnte man noch umstellen (aus deviceOn=>false sollte m.E. state=>off werden).
Wären vermutlich zwei Eingriffe:
STATTOPIC/things/thermostat/properties:.* { $EVENT =~ s/true/"on"/g;; $EVENT =~ s/false/"off"/g;; json2nameValue($EVENT,'',$JSONMAP) }\und
attr DEVICE jsonMap targetTemperature:desired-temp deviceOn:state 
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Turtle am 06 Oktober 2021, 13:00:35
weekprofile kann ich direkt über die Webgui einstellen.

Ich habe vor noch alles für die FHEM APP zu konfigurieren.

Es handelt sich bei den Geräten um Thermostate die für eine Fancoil benutzt werden. Funktioniert genauso wie ein normales Thermostat (es wird auch ein Stellmotor geöffnet) der einzige Unterschied ist das noch ein Ventilator verbaut ist.

  devices/(network|clock|thermostat|logging):.* {}\

Habe ich eingetragen dabei geht es nur darum den Code zu verkürzen oder?

ich gehe mal davon aus das ich STATTOPIC/things/thermostat/properties:.* { $EVENT =~ s/true/"on"/g;; $EVENT =~ s/false/"off"/g;; json2nameValue($EVENT,'',$JSONMAP) }\ in die reading list eintragen muss.
Wenn ich das mache erscheint ein Fehler MQTT2_wthermostat_4213660: bad reading name { $EVENT =~ s/true/"on"/g;; $EVENT =~ s/false/"off"/g;; json2nameValue($EVENT,'',$JSONMAP) }\ (contains not A-Za-z/\d_\.- or is too long) über die Raw definition funktioniert es jedoch ändert sich true und false nicht.

defmod MQTT2_wthermostat_4213660 MQTT2_DEVICE wthermostat_4213660
attr MQTT2_wthermostat_4213660 userattr weekprofile
attr MQTT2_wthermostat_4213660 alias Klima Wohnbereich
attr MQTT2_wthermostat_4213660 devStateIcon <a href="http://ip" target="_blank">\
LWT\
</a>\
state
attr MQTT2_wthermostat_4213660 event-on-change-reading state
attr MQTT2_wthermostat_4213660 genericDeviceType thermostat
attr MQTT2_wthermostat_4213660 getList desired-temp:noArg desired-temp Klima-Wohnbereich/cmnd/things/thermostat/properties
attr MQTT2_wthermostat_4213660 icon hm-tc-it-wm-w-eu
!!!!attr MQTT2_wthermostat_4213660 jsonMap targetTemperature:desired-temp deviceOn:state!!!!
attr MQTT2_wthermostat_4213660 readingList Klima-Wohnbereich/tele/LWT:.* LWT\
  !!!!devices/(network|clock|thermostat|logging):.* {}\!!!!
  Klima-Wohnbereich/stat/things/network/properties:.* { json2nameValue($EVENT,'net_',$JSONMAP) }\
  !!!!!STATTOPIC/things/thermostat/properties:.* { $EVENT =~ s/true/"on"/g;; $EVENT =~ s/false/"off"/g;;
  json2nameValue($EVENT,'',$JSONMAP) }\!!!!!
  Klima-Wohnbereich/stat/things/thermostat/properties:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/logging/properties:.* { json2nameValue($EVENT,'log_',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/clock/properties:.* { json2nameValue($EVENT,'clock_',$JSONMAP) }\
wthermostat_4213660:Klima-Wohnbereich/stat/things/thermostat/deviceOn:.* deviceOn\
wthermostat_4213660:Klima-Wohnbereich/stat/things/thermostat/targetTemperature:.* targetTemperature\
wthermostat_4213660:Klima-Wohnbereich/tele/log:.* log
attr MQTT2_wthermostat_4213660 room GoogleAssistant
attr MQTT2_wthermostat_4213660 setList on Klima-Wohnbereich/cmnd/things/thermostat/properties/deviceOn true\
  off Klima-Wohnbereich/cmnd/things/thermostat/properties/deviceOn false\
  desired-temp:slider,5.0,0.5,35.0,1 Klima-Wohnbereich/cmnd/things/thermostat/properties/targetTemperature $EVTPART1\
  mode:cool,auto Klima-Wohnbereich/cmnd/things/thermostat/properties/mode $EVTPART1\
  weekprofile { FHEM::attrT_z2m_thermostat_Utils::z2t_send_Beca_weekprofile($NAME, $EVTPART1, $EVTPART2, 'Klima-Wohnbereich/cmnd/things/thermostat/schedules') }\
  x_send_mcucommand:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //g;; qq(Klima-Wohnbereich/cmnd/things/thermostat/mcucommand $payload)}
attr MQTT2_wthermostat_4213660 setStateList on off weekprofile
!!!!attr MQTT2_wthermostat_4213660 webCmd mode:desired-temp:on:off!!!!
attr MQTT2_wthermostat_4213660 weekprofile MQTT2_wthermostat_4213660

setstate MQTT2_wthermostat_4213660 cooling
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:25 IODev mqttBroker
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:31 LWT Online
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 action off
setstate MQTT2_wthermostat_4213660 2021-10-06 08:12:21 attrTemplateVersion 20211005
setstate MQTT2_wthermostat_4213660 2021-10-06 11:51:50 clock_epochTime 1633517509
setstate MQTT2_wthermostat_4213660 2021-10-06 11:51:50 clock_epochTimeLocalFormatted 2021-10-06 12:51:49
setstate MQTT2_wthermostat_4213660 2021-10-06 11:51:50 clock_ntpServer pool.ntp.org
setstate MQTT2_wthermostat_4213660 2021-10-06 11:51:50 clock_offset 7200
setstate MQTT2_wthermostat_4213660 2021-10-06 11:51:50 clock_timeDST 0,3,0,2,120
setstate MQTT2_wthermostat_4213660 2021-10-06 11:51:50 clock_timeSTD 0,10,0,3,60
setstate MQTT2_wthermostat_4213660 2021-10-06 11:51:50 clock_timeZone 99
setstate MQTT2_wthermostat_4213660 2021-10-06 11:51:50 clock_uptime 14105
setstate MQTT2_wthermostat_4213660 2021-10-06 11:51:50 clock_validTime true
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_clock_ip 192.168.188.36
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_clock_topic Klima-Wohnbereich/stat/things/clock
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_clock_url http://192.168.188.36/things/clock
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_log_ip 192.168.188.36
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_log_topic Klima-Wohnbereich/stat/things/logging
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_log_url http://192.168.188.36/things/logging
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_network_ip 192.168.188.36
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_network_topic Klima-Wohnbereich/stat/things/network
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_network_url http://192.168.188.36/things/network
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_thermostat_ip 192.168.188.36
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_thermostat_topic Klima-Wohnbereich/stat/things/thermostat
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_thermostat_url http://192.168.188.36/things/thermostat
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 desired-temp 17.50
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 deviceOn false
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 ecoMode false
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 fanMode auto
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 firmware 1.19.beta1-fas
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 holdState manual
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 idx Klima-Wohnbereic
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 ip 192.168.188.36
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 locked false
setstate MQTT2_wthermostat_4213660 2021-10-06 09:02:23 log warning: startMcuInitialize
setstate MQTT2_wthermostat_4213660 2021-10-06 11:51:50 log_logLevel trace
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 mcuId N8bUqOZ8HBQjU0K01.0.0
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 mode off
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:31 net_rssi -55
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 schedulesMode off
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 state cooling
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 switchBackToAuto false
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 systemMode cool
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:00 targetTemperature 17.50
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 temperature 20.50





Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 06 Oktober 2021, 13:15:20
Zitat von: Turtle am 06 Oktober 2021, 13:00:35
weekprofile kann ich direkt über die Webgui einstellen.
Jein. Ich spreche von https://fhem.de/commandref_modular.html#weekprofile (https://fhem.de/commandref_modular.html#weekprofile). In der Webgui sollte dann das Ergebnis stehen von dem, was FHEM "veranstaltet", wenn alles eingerichtet ist...

ZitatIch habe vor noch alles für die FHEM APP zu konfigurieren.
Für die sollte sich das Ding verhalten wie ein normales Thermostat.

Zitat
  devices/(network|clock|thermostat|logging):.* {}\

Habe ich eingetragen dabei geht es nur darum den Code zu verkürzen oder?
Jein. "Wichtiger" ist der "Pseudo-Perl-Code hinten. Der sorgt dafür, dass die Daten schlicht verworfen werden und keine Readings mehr aktualisiert werden.

Zitatich gehe mal davon aus das ich STATTOPIC/things/thermostat/properties:.* { $EVENT =~ s/true/"on"/g;; $EVENT =~ s/false/"off"/g;; json2nameValue($EVENT,'',$JSONMAP) }\ in die reading list eintragen muss.
Im Prinzip ja, wobei STATTOPIC halt nur als "Merkposten" zu verstehen ist, den du durch deine "Ist-Daten" ("Klima-Wohnbereich/stat") ersetzen musst. Sorry, ich hatte angenommen, das Prinzip wäre soweit klar.

Nochmal im Zusammenhang unter Berücksichtigung der "new news" in der readingList:
defmod MQTT2_wthermostat_4213660 MQTT2_DEVICE wthermostat_4213660
attr MQTT2_wthermostat_4213660 userattr weekprofile
attr MQTT2_wthermostat_4213660 alias Klima Wohnbereich
attr MQTT2_wthermostat_4213660 devStateIcon <a href="http://ip" target="_blank">\
LWT\
</a>\
state
attr MQTT2_wthermostat_4213660 event-on-change-reading state
attr MQTT2_wthermostat_4213660 genericDeviceType thermostat
attr MQTT2_wthermostat_4213660 getList desired-temp:noArg desired-temp Klima-Wohnbereich/cmnd/things/thermostat/properties
attr MQTT2_wthermostat_4213660 icon hm-tc-it-wm-w-eu
attr MQTT2_wthermostat_4213660 jsonMap targetTemperature:0 deviceOn:0
attr MQTT2_wthermostat_4213660 readingList Klima-Wohnbereich/tele/LWT:.* LWT\
  devices/(network|clock|thermostat|logging):.* {}\
  Klima-Wohnbereich/stat/things/network/properties:.* { json2nameValue($EVENT,'net_',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/thermostat/properties:.* { $EVENT =~ s/true/"on"/g;; $EVENT =~ s/false/"off"/g;; json2nameValue($EVENT,'',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/logging/properties:.* { json2nameValue($EVENT,'log_',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/clock/properties:.* { json2nameValue($EVENT,'clock_',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/thermostat/deviceOn:.* {{state => $EVENT eq 'false' ? 'off' : 'on'}}\
  Klima-Wohnbereich/stat/things/thermostat/targetTemperature:.* desired-temp
attr MQTT2_wthermostat_4213660 setList on:noArg Klima-Wohnbereich/cmnd/things/thermostat/properties/deviceOn true\
  off:noArg Klima-Wohnbereich/cmnd/things/thermostat/properties/deviceOn false\
  desired-temp:slider,5.0,0.5,35.0,1 Klima-Wohnbereich/cmnd/things/thermostat/properties/targetTemperature $EVTPART1\
  mode:cool,auto Klima-Wohnbereich/cmnd/things/thermostat/properties/mode $EVTPART1\
  weekprofile { FHEM::attrT_z2m_thermostat_Utils::z2t_send_Beca_weekprofile($NAME, $EVTPART1, $EVTPART2, 'Klima-Wohnbereich/cmnd/things/thermostat/schedules') }\
  x_send_mcucommand:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //g;; qq(Klima-Wohnbereich/cmnd/things/thermostat/mcucommand $payload)}
attr MQTT2_wthermostat_4213660 setStateList on off weekprofile
attr MQTT2_wthermostat_4213660 weekprofile MQTT2_wthermostat_4213660
attr MQTT2_wthermostat_4213660 webCmd mode:desired-temp


EDIT: readingList bzgl. state/true/false nochmal angepaßt
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Turtle am 06 Oktober 2021, 14:03:10
Beta-User es funktioniert alles so wie ich es haben will  :)
Danke für deine Zeit!!!

falls es jemand braucht nochmal die fertige Konfiguration mit Screenshot.

defmod MQTT2_wthermostat_4213660 MQTT2_DEVICE wthermostat_4213660
attr MQTT2_wthermostat_4213660 userattr weekprofile
attr MQTT2_wthermostat_4213660 alias Klima Wohnbereich
attr MQTT2_wthermostat_4213660 devStateIcon <a href="http://ip" target="_blank">\
LWT\
</a>\
state
attr MQTT2_wthermostat_4213660 event-on-change-reading state
attr MQTT2_wthermostat_4213660 genericDeviceType thermostat
attr MQTT2_wthermostat_4213660 getList desired-temp:noArg desired-temp Klima-Wohnbereich/cmnd/things/thermostat/properties
attr MQTT2_wthermostat_4213660 icon hm-tc-it-wm-w-eu
attr MQTT2_wthermostat_4213660 jsonMap targetTemperature:0 deviceOn:0
attr MQTT2_wthermostat_4213660 readingList Klima-Wohnbereich/tele/LWT:.* LWT\
  devices/(network|clock|thermostat|logging):.* {}\
  Klima-Wohnbereich/stat/things/network/properties:.* { json2nameValue($EVENT,'net_',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/thermostat/properties:.* { $EVENT =~ s/true/"on"/g;; $EVENT =~ s/false/"off"/g;; json2nameValue($EVENT,'',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/logging/properties:.* { json2nameValue($EVENT,'log_',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/clock/properties:.* { json2nameValue($EVENT,'clock_',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/thermostat/deviceOn:.* state\
  Klima-Wohnbereich/stat/things/thermostat/targetTemperature:.* desired-temp
attr MQTT2_wthermostat_4213660 room GoogleAssistant
attr MQTT2_wthermostat_4213660 setList on:noArg Klima-Wohnbereich/cmnd/things/thermostat/properties/deviceOn true\
  off:noArg Klima-Wohnbereich/cmnd/things/thermostat/properties/deviceOn false\
  desired-temp:slider,5.0,0.5,35.0,1 Klima-Wohnbereich/cmnd/things/thermostat/properties/targetTemperature $EVTPART1\
  mode:cool,auto Klima-Wohnbereich/cmnd/things/thermostat/properties/mode $EVTPART1\
  weekprofile { FHEM::attrT_z2m_thermostat_Utils::z2t_send_Beca_weekprofile($NAME, $EVTPART1, $EVTPART2, 'Klima-Wohnbereich/cmnd/things/thermostat/schedules') }\
  x_send_mcucommand:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //g;; qq(Klima-Wohnbereich/cmnd/things/thermostat/mcucommand $payload)}
attr MQTT2_wthermostat_4213660 setStateList on off weekprofile
attr MQTT2_wthermostat_4213660 webCmd mode:desired-temp:on:off
attr MQTT2_wthermostat_4213660 weekprofile MQTT2_wthermostat_4213660
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 06 Oktober 2021, 15:16:10
Danke für die Rückmeldung.

Kannst du bitte noch checken ob die eine Zeile in der readingList nicht besser auf
Klima-Wohnbereich/stat/things/thermostat/deviceOn:.* {{state => $EVENT eq 'false' ? 'off' : 'on'}}\geändert werden sollte?

Damit sollte der Info-"Kreis" für "state" geschlossen werden und das Ding beim Klick auf die "Glühbirne" z.B. von "off" auf "set_on" und "on" umschalten (bzw. dann entsprechend in Richtung aus).

Zitatfalls es jemand braucht nochmal die fertige Konfiguration mit Screenshot.
Wenn es dann soweit fertig ist, kommt auch das update in mqtt2.template, dann kann es jeder finden (und ggf. als "Steinbruch" verwenden), der das Ding (oder was ähnliches) hat ;) .
Und wer Verbesserungsvorschläge hat, findet diesen Thread und kann die plazieren ;) ...
(v.a. rund um "event-on-.*" gibt es in der Regel erst nach etwas Betrieb konsolidierte Meinungen, wie das aussehen sollte...)
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Turtle am 07 Oktober 2021, 08:50:06
habs getestet, aber die Glühbirne erscheint nur wenn ich auf das Wort cooling drücke.
Ausschalten kann ich das Thermostat erst wieder nach mehrmaligen drücken auf die Glühbirne. Sie wechselt immer zwischen "cooling" einer "Glühbirne mit Licht" und einer "Glühbirne mit Ausrufezeichen".

deswegen habe ich auch immer on off zu webCmd hinzugefügt.


defmod MQTT2_wthermostat_4213660 MQTT2_DEVICE wthermostat_4213660
attr MQTT2_wthermostat_4213660 userattr weekprofile
attr MQTT2_wthermostat_4213660 alias Klima Wohnbereich
attr MQTT2_wthermostat_4213660 devStateIcon <a href="http://ip" target="_blank">\
LWT\
</a>\
state
attr MQTT2_wthermostat_4213660 event-on-change-reading state
attr MQTT2_wthermostat_4213660 genericDeviceType thermostat
attr MQTT2_wthermostat_4213660 getList desired-temp:noArg desired-temp Klima-Wohnbereich/cmnd/things/thermostat/properties
attr MQTT2_wthermostat_4213660 icon hm-tc-it-wm-w-eu
attr MQTT2_wthermostat_4213660 jsonMap targetTemperature:0 deviceOn:0
attr MQTT2_wthermostat_4213660 readingList Klima-Wohnbereich/tele/LWT:.* LWT\
  devices/(network|clock|thermostat|logging):.* {}\
  Klima-Wohnbereich/stat/things/network/properties:.* { json2nameValue($EVENT,'net_',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/thermostat/properties:.* { $EVENT =~ s/true/"on"/g;; $EVENT =~ s/false/"off"/g;; json2nameValue($EVENT,'',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/logging/properties:.* { json2nameValue($EVENT,'log_',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/clock/properties:.* { json2nameValue($EVENT,'clock_',$JSONMAP) }\
  Klima-Wohnbereich/stat/things/thermostat/deviceOn:.* {{state => $EVENT eq 'false' ? 'off' : 'on'}}\
  Klima-Wohnbereich/stat/things/thermostat/targetTemperature:.* desired-temp
attr MQTT2_wthermostat_4213660 room GoogleAssistant
attr MQTT2_wthermostat_4213660 setList on:noArg Klima-Wohnbereich/cmnd/things/thermostat/properties/deviceOn true\
  off:noArg Klima-Wohnbereich/cmnd/things/thermostat/properties/deviceOn false\
  desired-temp:slider,5.0,0.5,35.0,1 Klima-Wohnbereich/cmnd/things/thermostat/properties/targetTemperature $EVTPART1\
  mode:cool,auto Klima-Wohnbereich/cmnd/things/thermostat/properties/mode $EVTPART1\
  weekprofile { FHEM::attrT_z2m_thermostat_Utils::z2t_send_Beca_weekprofile($NAME, $EVTPART1, $EVTPART2, 'Klima-Wohnbereich/cmnd/things/thermostat/schedules') }\
  x_send_mcucommand:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //g;; qq(Klima-Wohnbereich/cmnd/things/thermostat/mcucommand $payload)}
attr MQTT2_wthermostat_4213660 setStateList on off weekprofile
attr MQTT2_wthermostat_4213660 webCmd mode:desired-temp
attr MQTT2_wthermostat_4213660 weekprofile MQTT2_wthermostat_4213660

setstate MQTT2_wthermostat_4213660 cooling
setstate MQTT2_wthermostat_4213660 2021-10-07 07:38:38 IODev mqttBroker
setstate MQTT2_wthermostat_4213660 2021-10-06 12:39:51 LWT Online
setstate MQTT2_wthermostat_4213660 2021-10-07 07:41:25 action off
setstate MQTT2_wthermostat_4213660 2021-10-06 08:12:21 attrTemplateVersion 20211005
setstate MQTT2_wthermostat_4213660 2021-10-07 07:36:59 clock_epochTime 1633588618
setstate MQTT2_wthermostat_4213660 2021-10-07 07:36:59 clock_epochTimeLocalFormatted 2021-10-07 08:36:58
setstate MQTT2_wthermostat_4213660 2021-10-07 07:36:59 clock_ntpServer pool.ntp.org
setstate MQTT2_wthermostat_4213660 2021-10-07 07:36:59 clock_offset 7200
setstate MQTT2_wthermostat_4213660 2021-10-07 07:36:59 clock_timeDST 0,3,0,2,120
setstate MQTT2_wthermostat_4213660 2021-10-07 07:36:59 clock_timeSTD 0,10,0,3,60
setstate MQTT2_wthermostat_4213660 2021-10-07 07:36:59 clock_timeZone 99
setstate MQTT2_wthermostat_4213660 2021-10-07 07:36:59 clock_uptime 85214
setstate MQTT2_wthermostat_4213660 2021-10-07 07:36:59 clock_validTime true
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_clock_ip 192.168.188.36
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_clock_topic Klima-Wohnbereich/stat/things/clock
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_clock_url http://192.168.188.36/things/clock
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_log_ip 192.168.188.36
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_log_topic Klima-Wohnbereich/stat/things/logging
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_log_url http://192.168.188.36/things/logging
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_network_ip 192.168.188.36
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_network_topic Klima-Wohnbereich/stat/things/network
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_network_url http://192.168.188.36/things/network
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_thermostat_ip 192.168.188.36
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_thermostat_topic Klima-Wohnbereich/stat/things/thermostat
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:32 d_thermostat_url http://192.168.188.36/things/thermostat
setstate MQTT2_wthermostat_4213660 2021-10-06 13:37:18 desired-temp 18.00
setstate MQTT2_wthermostat_4213660 2021-10-06 11:54:00 deviceOn false
setstate MQTT2_wthermostat_4213660 2021-10-07 07:41:25 ecoMode off
setstate MQTT2_wthermostat_4213660 2021-10-07 07:41:25 fanMode high
setstate MQTT2_wthermostat_4213660 2021-10-07 07:41:25 firmware 1.19.beta1-fas
setstate MQTT2_wthermostat_4213660 2021-10-07 07:41:25 holdState manual
setstate MQTT2_wthermostat_4213660 2021-10-07 07:41:25 idx Klima-Wohnbereic
setstate MQTT2_wthermostat_4213660 2021-10-07 07:41:25 ip 192.168.188.36
setstate MQTT2_wthermostat_4213660 2021-10-07 07:41:25 locked off
setstate MQTT2_wthermostat_4213660 2021-10-07 02:19:56 log warning: NTP sync failed.
setstate MQTT2_wthermostat_4213660 2021-10-07 07:36:59 log_logLevel trace
setstate MQTT2_wthermostat_4213660 2021-10-07 07:41:25 mcuId N8bUqOZ8HBQjU0K01.0.0
setstate MQTT2_wthermostat_4213660 2021-10-07 07:41:25 mode off
setstate MQTT2_wthermostat_4213660 2021-10-07 07:41:40 net_rssi -59
setstate MQTT2_wthermostat_4213660 2021-10-07 07:41:25 schedulesMode off
setstate MQTT2_wthermostat_4213660 2021-10-07 07:41:25 state cooling
setstate MQTT2_wthermostat_4213660 2021-10-07 07:41:25 switchBackToAuto off
setstate MQTT2_wthermostat_4213660 2021-10-07 07:41:25 systemMode cool
setstate MQTT2_wthermostat_4213660 2021-10-06 11:42:00 targetTemperature 17.50
setstate MQTT2_wthermostat_4213660 2021-10-07 07:41:25 temperature 20.00

Titel: Antw:WTherostat Beca MQTT
Beitrag von: Turtle am 07 Oktober 2021, 08:56:53
und in dem Dropdown Menü kann ich zwischen "auto" und "cool" auswählen. Beide schalten das Thermostat ein, aber ändern keinen Modus am Thermostat.
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 07 Oktober 2021, 09:34:57
Hmm, also:
- Es gibt erst mal keine neuen Einträge in der readingList. Von daher könntest du auch das aktuelle attrTemplate "testen", wobei das nicht viel mehr bringt wie alte Readings zu löschen. Das ginge auch direkt mit "deletereading MQTT2_wthermostat_4213660 .* 86400";
- auto/cool müßte man evtl. noch mit "off" ergänzen*;
- Was das mit der "Glühbirne" angeht, ist ein Ausrufezeichen der Hinweis, dass ein Befehl entweder nicht ausgeführt wurde, oder die Rückmeldung nicht zum erwarteten paßt. Hier kommt über einen JSON-Blob das "state=>cooling" zurück, soweit ich das beurteilen kann. Das ist was anderes wie "on", was dann als "off" gewertet wird => also toggelt es dann auf "on"*; eigentlich sollte daraus nach meinem Verständnis eher "mode"=>"cool" werden...

*Um diese Feinheiten auch noch rauszubekommen, müßtest du etwas mehr mit dem Gerät "spielen" und v.a. dann direkt auf den MQTT-Verkehr zugreifen (ich nutze dazu in der Regel mosquitto_sub aus mosquitto-clients (bitte nicht das Server-Paket mosquitto installieren!); es geht aber auch anders, dabei die Parameter so setzen, dass auch die Topics mit ausgegeben werden). Nur da sieht man, wo was letztendlich herkommt. (Alternative wäre, die JSON-Blobs zusätzlich unausgepackt in "sprechende Readings" zu überführen und dann das zu loggen). Leider ist es dabei manchmal so, dass sich die firmwares auch nicht immer in sich konsistent verhalten.

Vorschlag: Du machst dich erst mal fit, was die Nutzung von mosquitto_sub auf der Linux-Kommandozeile angeht?
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Turtle am 07 Oktober 2021, 09:54:55
Zitat von: Beta-User am 07 Oktober 2021, 09:34:57
Vorschlag: Du machst dich erst mal fit, was die Nutzung von mosquitto_sub auf der Linux-Kommandozeile angeht?

Alles klar, ich werde ein bisschen rumprobieren  :)
Titel: Antw:WTherostat Beca MQTT
Beitrag von: mirror am 08 November 2022, 16:31:39
Ich versuche erstmalig ein attrTemplate anzuwenden und stehe etwas auf dem Schlauch. Ich habe das WThermostatBeca ausgewählt und nach set kommt eine Box hoch, die Eingaben erfordert:
Specify the unknown parameters for MQTT2_MyBroker/WThermostatBeca:
Command topic prefix, without trailing /
info topic prefix, without trailing /
ack topic prefix, without trailing /


Wo kann ich da was finden? Das topic meines Gerätes ist z.B. Thermostat_Bad. Wäre das der einzugebene topic?
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 08 November 2022, 16:42:13
Hmm, eigentlich sollte da sowas wie ein LWT-Topic vorher da sein. Das scheint bei dir nicht der Fall gewesen zu sein... Vielleicht mal abbrechen und dann den Thermostat neu booten, dass das kommt.
Titel: Antw:WTherostat Beca MQTT
Beitrag von: mirror am 08 November 2022, 17:36:17
Was ist LWT-topic?

Habe den Thermostat neu gebootet.

Ich habe jetzt einfach mal Thermostat_Bad für die 3 Prefixe eingegeben. Die Pfade sehen erstmal gar nicht so unsinnig aus:
Internals:
   CFGFN     
   CID        MyBroker
   DEF        MyBroker
   FUUID      XYZ...............
   IODev      MyBroker
   LASTInputDev MyBroker
   MSGCNT     571
   MyBroker_MSGCNT 571
   MyBroker_TIME 2022-11-08 17:25:57
   NAME       MQTT2_MyBroker
   NR         14572
   STATE      ???
   TYPE       MQTT2_DEVICE
   eventCount 577
   JSONMAP:
     deviceOn   0
     targetTemperature 0
   OLDREADINGS:
   READINGS:
     2022-11-07 16:42:10   IODev           MyBroker
     2022-11-08 16:34:20   attrTemplateVersion 20211006
     2022-11-08 17:23:24   properties_alive true
     2022-11-08 17:23:24   properties_deviceOn true
     2022-11-08 17:23:19   properties_epochTime 1667928199
     2022-11-08 17:23:19   properties_epochTimeFormatted 2022-11-08 17:23:19
     2022-11-08 17:23:24   properties_firmware 1.25beta
     2022-11-08 17:23:24   properties_idx  Thermostat_Bad
     2022-11-08 17:23:24   properties_ip   19x.cc.a.qwe
     2022-11-08 17:23:24   properties_locked false
     2022-11-08 17:23:19   properties_ntpServer pool.ntp.org
     2022-11-08 17:23:24   properties_schedulesMode off
     2022-11-08 17:23:24   properties_sensorSelection internal
     2022-11-08 17:23:24   properties_systemMode heat
     2022-11-08 17:23:24   properties_targetTemperature 22.00
     2022-11-08 17:23:24   properties_temperature 21.00
     2022-11-08 17:23:19   properties_timeZoneServer http://worldtimeapi.org/api/ip
     2022-11-08 17:23:19   properties_timezone Europe/Berlin
     2022-11-08 17:23:19   properties_validTime true
     2022-11-08 17:23:20   schedules_a1h   08:00
     2022-11-08 17:23:20   schedules_a1t   22.00
     2022-11-08 17:23:20   schedules_a2h   23:00
     2022-11-08 17:23:20   schedules_a2t   15.00
     2022-11-08 17:23:20   schedules_w1h   06:00
     2022-11-08 17:23:20   schedules_w1t   20.00
     2022-11-08 17:23:20   schedules_w2h   08:00
     2022-11-08 17:23:20   schedules_w2t   15.00
     2022-11-08 17:23:20   schedules_w3h   11:30
     2022-11-08 17:23:20   schedules_w3t   15.00
     2022-11-08 17:23:20   schedules_w4h   12:30
     2022-11-08 17:23:20   schedules_w4t   15.00
     2022-11-08 17:23:20   schedules_w5h   17:00
     2022-11-08 17:23:20   schedules_w5t   22.00
     2022-11-08 17:23:20   schedules_w6h   22:00
     2022-11-08 17:23:20   schedules_w6t   15.00
Attributes:
   devStateIcon <a href="http://ip" target="_blank">
LWT
</a>
state
   getList    desired-temp:noArg desired-temp Thermostat_Bad/things/thermostat/properties
   icon       hm-tc-it-wm-w-eu
   jsonMap    targetTemperature:0 deviceOn:0
   model      WThermostatBeca
   readingList Thermostat_Bad/LWT:.* LWT
  devices/(network|clock|thermostat|logging):.* {}
  Thermostat_Bad/things/network/properties:.* { json2nameValue($EVENT,'net_',$JSONMAP) }
  Thermostat_Bad/things/thermostat/properties:.* { $EVENT =~ s/true/"on"/g;; $EVENT =~ s/false/"off"/g;; json2nameValue($EVENT,'',$JSONMAP) }
  Thermostat_Bad/things/logging/properties:.* { json2nameValue($EVENT,'log_',$JSONMAP) }
  Thermostat_Bad/things/clock/properties:.* { json2nameValue($EVENT,'clock_',$JSONMAP) }
  Thermostat_Bad/things/thermostat/deviceOn:.* {{state => $EVENT eq 'false' ? 'off' : 'on'}}
  Thermostat_Bad/things/thermostat/targetTemperature:.* desired-temp
MyBroker:Thermostat_Bad/clock/properties:.* { json2nameValue($EVENT, 'properties_', $JSONMAP) }
MyBroker:Thermostat_Bad/thermostat/properties:.* { json2nameValue($EVENT, 'properties_', $JSONMAP) }
MyBroker:Thermostat_Bad/thermostat/properties/schedules:.* { json2nameValue($EVENT, 'schedules_', $JSONMAP) }
   room       MQTT2_DEVICE
   setList    on:noArg Thermostat_Bad/things/thermostat/properties/deviceOn true
  off:noArg Thermostat_Bad/things/thermostat/properties/deviceOn false
  desired-temp:slider,5.0,0.5,35.0,1 Thermostat_Bad/things/thermostat/properties/targetTemperature $EVTPART1
  mode:heat,auto,cool Thermostat_Bad/things/thermostat/properties/mode $EVTPART1
  weekprofile { FHEM::attrT_z2m_thermostat_Utils::z2t_send_Beca_weekprofile($NAME, $EVTPART1, $EVTPART2, 'Thermostat_Bad/things/thermostat/schedules') }
  x_send_mcucommand:textField { my $payload = $EVENT;$payload =~ s/$EVTPART0 //g; qq(Thermostat_Bad/things/thermostat/mcucommand $payload)}
   setStateList on off weekprofile
   userattr   weekprofile
   webCmd     mode:desired-temp
   weekprofile MQTT2_MyBroker


Die Readings stimmen. Aber wenn ich get desired-temp drücke kommt Time out.
Und die Fragezeichen im state kann ich mir auch nicht erklären.

Kannst Du mal auf das Listing schauen und vielleicht einen Tip geben.
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 09 November 2022, 15:38:51
Zitat von: mirror am 08 November 2022, 17:36:17
Was ist LWT-topic?
LWT=Last Will and Testament.

Dein list sieht aber komisch aus und anders als man das von einem Tasmota-Gerät erwarten würde (zumindest wertet das attrTemplate was aus, was in diese Richtung geht).

ZitatDie Pfade sehen erstmal gar nicht so unsinnig aus:
Die sehen eher so aus, als würde das, was du manuell eingegeben hast nicht verwendet, sondern was anderes. UND: Das ganze richt nach externem MQTT-Server und MQTT2_CLIENT.

Falls das so ist: Es ist keine gute Idee, sich mit einem "unbekannten" oder schwierigen Gerät in MQTT einzufuchsen, schon gleich nicht mit externem Server. Würde das (zumindest zum Einarbeiten) überdenken und ggf. einen MQTT2_SERVER parallel auf einem anderen Port aufsetzen. Umziehen ist dann relativ einfach, wenn mal klar ist, wie das Device aussehen muss.
Titel: Antw:WTherostat Beca MQTT
Beitrag von: mirror am 10 November 2022, 21:51:55
Es handelt sich um das Gerät wie im Betreff, welches auch bei der Thread Eröffnung angegeben wurde.

Alle Readings sind per autocreate gekommen und richtig. Da ist nichts manuell eingegeben. Und ja, es ist ein externer server auf dem gleiche pi.

Ich werde erstmal alles löschen und dann ohne attrTemplate nochmal versuchen. Den FHEM mqtt2 server kann ich dann immer noch nutzen.
Titel: Antw:WTherostat Beca MQTT
Beitrag von: mirror am 17 November 2022, 18:19:09
Ich trau mich nochmal aus der Deckung.

Das Gerät ist ein Thermostat Avatto ME81AH welches ich mit der Firmware von https://github.com/AlbertWeterings/WThermostatBeca (https://github.com/AlbertWeterings/WThermostatBeca) geflasht habe. Es ist nicht ganz so komplex wie das Gerät des Themeneröffners, was mir aber reicht. Ich brauche eigentlich nur die Temperatur lesen und die Zieltemperatur einstellen.

Angehangen ist ein Screenshot vom MQTT Explorer (ebenso mit mosquitto_pub / -sub).

Folgendes Listing des Devices ergibt sich bei autocreate des MTTQ2_CLIENT:
Internals:
   CFGFN     
   CID        MyBroker
   DEF        MyBroker
   FUUID      637558c7-f33f-333b-6282-f007634750e4bbcf
   IODev      MyBroker
   LASTInputDev MyBroker
   MSGCNT     1161
   MyBroker_MSGCNT 1161
   MyBroker_TIME 2022-11-17 11:52:44
   NAME       MQTT2_MyBroker
   NR         1602
   STATE      ???
   TYPE       MQTT2_DEVICE
   eventCount 1169
   READINGS:
     2022-11-16 22:40:23   IODev           MyBroker
     2022-11-17 11:44:51   TargetTemperature 22.00
     2022-11-17 11:52:44   Temperature     21.00
     2022-11-17 11:44:51   deviceOn        true
     2022-11-17 11:50:29   epochTime       1668685828
     2022-11-17 11:50:29   epochTimeFormatted 2022-11-17 11:50:28
     2022-11-17 11:44:51   locked          false
     2022-11-17 11:50:29   ntpServer       pool.ntp.org
     2022-11-17 11:44:51   schedulesMode   off
     2022-11-17 11:44:51   sensorSelection internal
     2022-11-17 11:44:51   systemMode      heat
     2022-11-17 11:50:29   timeZoneServer  http://worldtimeapi.org/api/ip
     2022-11-17 11:50:29   timezone        Europe/Berlin
     2022-11-17 11:50:29   validTime       true
Attributes:
   readingList MyBroker:Thermostat_Bad/clock/properties:.* { json2nameValue($EVENT) }
MyBroker:Thermostat_Bad/thermostat/properties/Temperature:.* Temperature
MyBroker:Thermostat_Bad/thermostat/properties/TargetTemperature:.* TargetTemperature
MyBroker:Thermostat_Bad/thermostat/properties/deviceOn:.* deviceOn
MyBroker:Thermostat_Bad/thermostat/properties/schedulesMode:.* schedulesMode
MyBroker:Thermostat_Bad/thermostat/properties/locked:.* locked
MyBroker:Thermostat_Bad/thermostat/properties/systemMode:.* systemMode
MyBroker:Thermostat_Bad/thermostat/properties/sensorSelection:.* sensorSelection
   room       MQTT2_DEVICE

Die Anzeige der Readings ist korrekt und wird erneuert.

Jetzt habe ich mal versucht das bestehende attrTemplate WThermostatBeca zu kopieren und anzupassen:
# Thermostat ME81AH Wifi
name:WThermostatME81AH
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*(tele|cmnd|stat).*
desc: First version for <a href="https://github.com/AlbertWeterings/WThermostatBeca">WThermostat ME81AH</a>. <br>Not yet tested... <br> see <a href="https://forum.fhem.de/index.php/topic,123212.0.html">Forum Thread</a>. Might also be ok for original firmware from https://github.com/klausahrenberg/WThermostatBeca
order:E_05b
par:TELETOPIC;info topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}tele$3" : undef }
par:ICON;ICON as set, defaults to hm-tc-it-wm-w-eu;{ AttrVal("DEVICE","icon","hm-tc-it-wm-w-eu") }
par:WPNAME;weekprofile attr value, defaults to device name;{ AttrVal('DEVICE','weekprofile','DEVICE') }
{ Svn_GetFile("contrib/AttrTemplate/99_attrT_z2m_thermostat_Utils.pm", "FHEM/99_attrT_z2m_thermostat_Utils.pm", sub(){ CommandReload(undef, "99_attrT_z2m_thermostat_Utils.pm") }) }
attr DEVICE icon ICON
attr DEVICE userattr weekprofile
attr DEVICE weekprofile WPNAME
attr DEVICE devStateIcon <a href="http://ip" target="_blank">\
LWT\
</a>\
state
attr DEVICE setStateList on off weekprofile
attr DEVICE readingList TELETOPIC/LWT:.* LWT\
  devices/(clock|thermostat):.* {}\
  DEVICE/clock/properties:.* { json2nameValue($EVENT,'clock_',$JSONMAP) }\
  DEVICE/thermostat/properties:.* { $EVENT =~ s/true/"on"/g;; $EVENT =~ s/false/"off"/g;; json2nameValue($EVENT,'',$JSONMAP) }\
  DEVICE/thermostat/properties/deviceOn:.* {{state => $EVENT eq 'false' ? 'off' : 'on'}}\
  DEVICE/thermostat/properties/TargetTemperature:.* desired-temp
attr DEVICE setList on:noArg DEVICE/thermostat/set/deviceOn true\
  off:noArg DEVICE/thermostat/set/deviceOn false\
  desired-temp:slider,5.0,1.0,35.0,1 DEVICE/thermostat/set/TargetTemperature $EVTPART1\
  systemMode:heat,auto,cool DEVICE/thermostat/set/systemMode $EVTPART1\
  weekprofile { FHEM::attrT_z2m_thermostat_Utils::z2t_send_ME81AH_weekprofile($NAME, $EVTPART1, $EVTPART2, 'DEVICE/thermostat/schedules') }
attr DEVICE getList desired-temp:noArg TargetTemperature DEVICE/thermostat/properties
attr DEVICE jsonMap TargetTemperature:0 deviceOn:0
attr DEVICE webCmd systemMode:desired-temp
deletereading -q DEVICE (?!associatedWith|IODev).*
attr DEVICE model WThermostatME81AH
setreading DEVICE attrTemplateVersion 20221115


Die Substitution des DEVICE in Thermostat_Bad für das mqtt handling klappt nicht richtig. Und der info Eintrag tele ist, wie man aus dem Bild sieht, völlig anders. Deshalb gibt es wohl auch keinen vernünftigen STATE.

@BETA_USER: Könntest Du mal ein paar Tips für das attrTemplate geben. Brauchst Du dazu weitere Infos?

Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 23 November 2022, 11:53:19
Zitat von: mirror am 17 November 2022, 18:19:09
Ich trau mich nochmal aus der Deckung.

[...]
@BETA_USER: Könntest Du mal ein paar Tips für das attrTemplate geben. Brauchst Du dazu weitere Infos?
Sorry, war mir irgendwie raus...

Vermutlich muss man das "from the scratch" machen, und mit sowas wie filter dann warten, bis man ziemlich fertig ist. Würde vorschlagen, das erst mal "im Klartext" anzufangen (also nicht gleich per attrTemplate), und dann erst den Transfer in ein attrTemplate vorzunehmen.

Magst du einen neuen Thread dazu aufmachen? Und am besten mal den recht neuen Thread zum Shelly-TRV überfliegen. Das ist zwar komplizierter, aber die Schritte sind da einigermaßen stringent nacheinander nachzuvollziehen, wenn ich das noch richtig im Kopf habe.

Titel: Antw:WTherostat Beca MQTT
Beitrag von: mirror am 23 November 2022, 19:57:40
Danke erstmal für die Antwort.

Die erste code Einfügung in meiner Antwort oben war ein listing ohne template Anwendung. Also so wie es der client vom broker bekommt.

Meine perl Kenntnisse sind zu gering. Es hapert schon daran, den device Namen aus der readinglist zu greppen.

Aber mir ist aufgefallen, daß es doch nicht so leicht ist ein eigenes template versuchsweise einzubinden, wie Du es in Deinem Einleitungsthread beschrieben hast. Also File.template rüberkopieren in /opt/fhem/FHEM/lib/AtrrTemplate und dann { use AttrTemplate } und { AttrTemplate_Initialize() } ausführen machen mein template in der Liste nicht sichtbar.

EDIT: Welchen Thread meinst Du mit Shelly-TRV?
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 24 November 2022, 14:49:55
Zitat von: mirror am 23 November 2022, 19:57:40
Die erste code Einfügung in meiner Antwort oben war ein listing ohne template Anwendung. Also so wie es der client vom broker bekommt.
Das ist mir klar, ich bevorzuge in dem neuen Thread dann aber bitte ein "raw"-list (list -r oder der Knopf unten in der Detailansicht etc.)

Zitat
Meine perl Kenntnisse sind zu gering. Es hapert schon daran, den device Namen aus der readinglist zu greppen.
Deswegen ja der Ansatz, das erst mal in einem gesonderten Thread im "Klartext" auszuentwickeln, und dann erst (irgendwann) den Schritt zu machen. Beim Ermitteln der Parameter habe ich dann schon etwas Übung, die ich auch einbringen würde ;) .

Zitat
Aber mir ist aufgefallen, daß es doch nicht so leicht ist ein eigenes template versuchsweise einzubinden, wie Du es in Deinem Einleitungsthread beschrieben hast. Also File.template rüberkopieren in /opt/fhem/FHEM/lib/AtrrTemplate und dann { use AttrTemplate } und { AttrTemplate_Initialize() } ausführen machen mein template in der Liste nicht sichtbar.
Das ist logisch, wenn du gleich ein (unpassendes) filter-Argument einbaust. Ansonsten ist es wirklich relativ einfach...

Zitat
EDIT: Welchen Thread meinst Du mit Shelly-TRV?
https://forum.fhem.de/index.php/topic,129394.0.html
Aber ist der so schwer zu finden? Habe nur Shelly und TRV benutzt...
Titel: Antw:WTherostat Beca MQTT
Beitrag von: mirror am 25 November 2022, 14:28:55
Ich denke, ich bin ein Stück weitergekommen, s.u.

Dies ist ein raw listing des devices:

define Thermostat_Bad MQTT2_DEVICE MyBroker
attr Thermostat_Bad userattr weekprofile
attr Thermostat_Bad devStateIcon <a href="http://ip" target="_blank">\
LWT\
</a>\
state
attr Thermostat_Bad getList TargetTemperature:noArg TargetTemperature Thermostat_Bad/thermostat/properties/TargetTemperature
attr Thermostat_Bad icon hm-tc-it-wm-w-eu
attr Thermostat_Bad jsonMap TargetTemperature:0 deviceOn:0
attr Thermostat_Bad model WThermostatME81AH
attr Thermostat_Bad readingList Thermostat_Bad/thermostat/properties/deviceOn:.* LWT\
  devices/(clock|thermostat):.* {}\
  Thermostat_Bad/clock/properties:.* { json2nameValue($EVENT,'clock_',$JSONMAP) }\
  Thermostat_Bad/thermostat/properties:.* { $EVENT =~ s/true/"on"/g;;;; $EVENT =~ s/false/"off"/g;;;; json2nameValue($EVENT,'',$JSONMAP) }\
  Thermostat_Bad/thermostat/properties/deviceOn:.* {{state => $EVENT eq 'true' ? 'on' : 'off'}}\
  Thermostat_Bad/thermostat/properties/systemMode:.* systemMode\
  Thermostat_Bad/thermostat/properties/sensorSelection:.* sensorSelection\
  Thermostat_Bad/thermostat/properties/Temperature:.* Temperature\
  Thermostat_Bad/thermostat/properties/TargetTemperature:.* TargetTemperature
attr Thermostat_Bad room MQTT2_DEVICE
attr Thermostat_Bad setList on:noArg Thermostat_Bad/thermostat/set/deviceOn true\
  off:noArg Thermostat_Bad/thermostat/set/deviceOn false\
  TargetTemperature:slider,5.0,1.0,35.0,1 Thermostat_Bad/thermostat/set/TargetTemperature $EVTPART1\
  schedulesMode:off,auto Thermostat_Bad/thermostat/set/schedulesMode $EVTPART1\
  sensorSelection:internal,floor,both Thermostat_Bad/thermostat/set/sensorSelection $EVTPART1\
  weekprofile { FHEM::attrT_z2m_thermostat_Utils::z2t_send_Beca_weekprofile($NAME, $EVTPART1, $EVTPART2, 'Thermostat_Bad/thermostat/schedules') }
attr Thermostat_Bad setStateList on off weekprofile
attr Thermostat_Bad webCmd deviceOn:TargetTemperature
attr Thermostat_Bad weekprofile Thermostat_Bad

setstate Thermostat_Bad on
setstate Thermostat_Bad 2022-11-24 09:15:50 IODev MyBroker
setstate Thermostat_Bad 2022-11-25 13:53:23 LWT true
setstate Thermostat_Bad 2022-11-25 13:53:23 TargetTemperature 21.00
setstate Thermostat_Bad 2022-11-25 13:53:23 Temperature 22.00
setstate Thermostat_Bad 2022-11-25 13:38:35 alive on
setstate Thermostat_Bad 2022-11-25 13:25:04 attrTemplateVersion 20221115
setstate Thermostat_Bad 2022-11-25 13:53:35 clock_epochTime 1669384415
setstate Thermostat_Bad 2022-11-25 13:53:35 clock_epochTimeFormatted 2022-11-25 13:53:35
setstate Thermostat_Bad 2022-11-25 13:53:35 clock_ntpServer pool.ntp.org
setstate Thermostat_Bad 2022-11-25 13:53:35 clock_timeZoneServer http://worldtimeapi.org/api/ip
setstate Thermostat_Bad 2022-11-25 13:53:35 clock_timezone Europe/Berlin
setstate Thermostat_Bad 2022-11-25 13:53:35 clock_validTime true
setstate Thermostat_Bad 2022-11-25 13:38:35 idx Thermostat_Bad
setstate Thermostat_Bad 2022-11-25 13:38:35 ip 192.168.178.22
setstate Thermostat_Bad 2022-11-25 13:53:23 sensorSelection internal
setstate Thermostat_Bad 2022-11-25 13:53:23 state on
setstate Thermostat_Bad 2022-11-25 13:53:23 systemMode cool


Das Weglassen des Filters hat noch nicht ganz gereicht, Ein zusätzlicher File im folder wird zwar erkannt als 255. template, aber ich kann es nicht auswählen.

EDIT:
Bekomme immer:
Unknown template_entry_name WThermostatME81AH

Habe erstmal mit einfügen in Deinen mqtt2.template file gearbeitet. Ist schon klar dass es verschwindet bei Update.

Das folgende template macht eigentlich so die wichtigsten Sachen, die ich benötige:

# Thermostat ME81AH Wifi
name:WThermostatME81AH
#filter:TYPE=MQTT2_DEVICE
desc: First version for <a href="https://github.com/AlbertWeterings/WThermostatBeca">WThermostat ME81AH</a>. <br>Not yet tested... <br> see <a href="https://forum.fhem.de/index.php/topic,123212.0.html">Forum Thread</a>. Might also be ok for original firmware from https://github.com/klausahrenberg/WThermostatBeca
order:E_05b
par:DEVNAME;Device's name in the topic tree;{ AttrVal('DEVICE','readingList','') =~ m,^\s*([^:]+/[^/]+)/clock/properties:,m ? $1 : "Thermostat_Bad" }
par:ICON;ICON as set, defaults to hm-tc-it-wm-w-eu;{ AttrVal("DEVICE","icon","hm-tc-it-wm-w-eu") }
par:WPNAME;weekprofile attr value, defaults to device name;{ AttrVal('DEVICE','weekprofile','DEVICE') }
{ Svn_GetFile("contrib/AttrTemplate/99_attrT_z2m_thermostat_Utils.pm", "FHEM/99_attrT_z2m_thermostat_Utils.pm", sub(){ CommandReload(undef, "99_attrT_z2m_thermostat_Utils.pm") }) }
attr DEVICE icon ICON
attr DEVICE userattr weekprofile
attr DEVICE weekprofile WPNAME
attr DEVICE devStateIcon <a href="http://ip" target="_blank">\
LWT\
</a>\
state
attr DEVICE setStateList on off weekprofile
attr DEVICE readingList DEVNAME/thermostat/properties/deviceOn:.* LWT\
  devices/(clock|thermostat):.* {}\
  DEVNAME/clock/properties:.* { json2nameValue($EVENT,'clock_',$JSONMAP) }\
  DEVNAME/thermostat/properties:.* { $EVENT =~ s/true/"on"/g;; $EVENT =~ s/false/"off"/g;; json2nameValue($EVENT,'',$JSONMAP) }\
  DEVNAME/thermostat/properties/deviceOn:.* {{state => $EVENT eq 'true' ? 'on' : 'off'}}\
  DEVNAME/thermostat/properties/systemMode:.* systemMode\
  DEVNAME/thermostat/properties/sensorSelection:.* sensorSelection\
  DEVNAME/thermostat/properties/Temperature:.* Temperature\
  DEVNAME/thermostat/properties/TargetTemperature:.* TargetTemperature
attr DEVICE setList on:noArg DEVNAME/thermostat/set/deviceOn true\
  off:noArg DEVNAME/thermostat/set/deviceOn false\
  TargetTemperature:slider,5.0,1.0,35.0,1 DEVNAME/thermostat/set/TargetTemperature $EVTPART1\
  schedulesMode:off,auto DEVNAME/thermostat/set/schedulesMode $EVTPART1\
  sensorSelection:internal,floor,both DEVNAME/thermostat/set/sensorSelection $EVTPART1\
  weekprofile { FHEM::attrT_z2m_thermostat_Utils::z2t_send_Beca_weekprofile($NAME, $EVTPART1, $EVTPART2, 'DEVICE/thermostat/schedules') }
attr DEVICE getList TargetTemperature:noArg TargetTemperature DEVNAME/thermostat/properties/TargetTemperature
attr DEVICE jsonMap TargetTemperature:0 deviceOn:0
attr DEVICE webCmd deviceOn:TargetTemperature
deletereading -q DEVICE (?!associatedWith|IODev).*
attr DEVICE model WThermostatME81AH
setreading DEVICE attrTemplateVersion 20221115


Die Firmware hat zwar sowas wie LWT, hier "alive" genannt. Ist aber nur beim booten auf true, danach false. Anfrage dazu läuft.
Hab mich mit dem Einschaltzustand "deviceOn" beholfen.
Das Gerät und die Firmware haben sowas wie ein Tagesprofile, welches über web interface und Gerät konfigurierbar ist. Bisher ist es mir nicht gelungen da über mqtt ranzukommen. Also die Einträge für weekprofile sind nur Platzhalter und können weg.
Ich nutze ja einen externen Server und in FHEM einen MQTT2_CLIENT (MyBroker). Wenn ich bei dem autocreate anlasse, tauche nach gewisser Zeit MyBroker:Thermostat_Bad Einträge im readingList auf, also nochmal die, die schon vorhanden sind.
Noch schlimmer ist, daß sich auch Readings von meinem einzigen zweiten mqtt Gerät, eine Tasmota Steckdose, mit einmischen. Aber das sind wohl andere Probleme.
Vielleicht gibt es ja noch Verbesserungsmöglichkeiten am template - wäre dankbar.
EDIT:
Ein Problem ist den Device Namen aus dem readingList zu greppen, z.B.:
MyBroker:Thermostat_Bad/clock/properties:.* { json2nameValue($EVENT) }

mit
par:DEVNAME;Device's name in the topic tree;{ AttrVal('DEVICE','readingList','') =~ m,^\s*([^:]+/[^/]+)/clock/properties:,m ? $1 : undef }


klappt das nicht, weil "MyBroker:" (mein MQTT2_CLIENT) davor steht. Hab schon diverse matchings probiert. Aber da hapert es halt.
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 28 November 2022, 15:07:27
Ein paar kurze Anmerkungen:
Zitat von: mirror am 25 November 2022, 14:28:55
  TargetTemperature:slider,5.0,1.0,35.0,1 Thermostat_Bad/thermostat/set/TargetTemperature $EVTPART1\
[/code]
Statt "TargetTemperature" würde ich "desired-temp" sehen, und da erst mal den Kreis schließen (passendes jsonMap). Du versuchst m.E. zu viel auf einmal und übersiehst dann die (mAn.) wichtigen Dinge (z.B. auch bzgl. "guter" Reading-Namen).

ZitatDas Weglassen des Filters hat noch nicht ganz gereicht
Da hast du das Kind mit dem Bade ausgekippt, der TYPE darf m.E. stressfrei stehen bleiben.

Keine Ahnung, warum es mit der separaten file nicht klappen sollte. Wird an anderer Stelle auch so gemacht.


ZitatIch nutze ja einen externen Server und in FHEM einen MQTT2_CLIENT (MyBroker). Wenn ich bei dem autocreate anlasse, tauche nach gewisser Zeit MyBroker:Thermostat_Bad Einträge im readingList auf, also nochmal die, die schon vorhanden sind.
Für MQTT2_CLIENT schaust du bitte mal ins Wiki? Es gibt da ein spezielles attrTemplate, das gewisse "Defizite" beseitigt, über die du hier zu stolpern scheinst.

ZitatEin Problem ist den Device Namen aus dem readingList zu greppen, z.B.:
MyBroker:Thermostat_Bad/clock/properties:.* { json2nameValue($EVENT) }
Es gibt einige Beispiele in der attrTemplate-File, die das Problem bereits gelöst haben.
Hier das passende für Tasmota:
par:CMNDTOPIC;Command topic prefix, without trailing /;{ AttrVal('DEVICE','readingList','') =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}cmnd$3" : undef }
Titel: Antw:WTherostat Beca MQTT
Beitrag von: mirror am 28 November 2022, 16:57:09
Ok, das ist wenig zielführend hier. Ich beende mal diese Aktivität. Falls jemand Interesse hat, hier mein letzter Stand, mit dem ich ganz gut zurecht komme, auch wenn da natürlich noch Schwächen drin sind:

# Thermostat ME81AH Wifi
name:WThermostatME81AH
filter:TYPE=MQTT2_DEVICE
desc: First version for <a href="https://github.com/AlbertWeterings/WThermostatBeca">WThermostat ME81AH</a>. <br>Not yet tested... <br> see <a href="https://forum.fhem.de/index.php/topic,123212.0.html">Forum Thread</a>. Might also be ok for original firmware from https://github.com/klausahrenberg/WThermostatBeca
order:E_05b
par:DEVNAME;Device's name in the topic tree;{ AttrVal('DEVICE','readingList','') =~ m,thermostat_1766228:([^/]*)/, ? $1 : undef }
par:ICON;ICON as set, defaults to hm-tc-it-wm-w-eu;{ AttrVal("DEVICE","icon","hm-tc-it-wm-w-eu") }
par:WPNAME;weekprofile attr value, defaults to device name;{ AttrVal('DEVICE','weekprofile','DEVICE') }
{ Svn_GetFile("contrib/AttrTemplate/99_attrT_z2m_thermostat_Utils.pm", "FHEM/99_attrT_z2m_thermostat_Utils.pm", sub(){ CommandReload(undef, "99_attrT_z2m_thermostat_Utils.pm") }) }
attr DEVICE icon ICON
attr DEVICE userattr weekprofile
attr DEVICE weekprofile WPNAME
attr DEVICE devStateIcon <a href="http://ip" target="_blank">\
LWT\
</a>\
state
attr DEVICE setStateList on off weekprofile
attr DEVICE readingList DEVNAME/thermostat/properties/deviceOn:.* LWT\
  devices/(clock|thermostat):.* {}\
  DEVNAME/clock/properties:.* { json2nameValue($EVENT,'clock_',$JSONMAP) }\
  DEVNAME/thermostat/properties:.* { $EVENT =~ s/true/"on"/g;; $EVENT =~ s/false/"off"/g;; json2nameValue($EVENT,'',$JSONMAP) }\
  DEVNAME/thermostat/properties/deviceOn:.* {{state => $EVENT eq 'true' ? 'on' : 'off'}}\
  DEVNAME/thermostat/properties/systemMode:.* systemMode\
  DEVNAME/thermostat/properties/sensorSelection:.* sensorSelection\
  DEVNAME/thermostat/properties/Temperature:.* Temperature\
  DEVNAME/thermostat/properties/TargetTemperature:.* desired-temp
attr DEVICE setList on:noArg DEVNAME/thermostat/set/deviceOn true\
  off:noArg DEVNAME/thermostat/set/deviceOn false\
  desired-temp:slider,5.0,1.0,35.0,1 DEVNAME/thermostat/set/TargetTemperature $EVTPART1\
  schedulesMode:off,auto DEVNAME/thermostat/set/schedulesMode $EVTPART1\
  sensorSelection:internal,floor,both DEVNAME/thermostat/set/sensorSelection $EVTPART1\
  weekprofile { FHEM::attrT_z2m_thermostat_Utils::z2t_send_Beca_weekprofile($NAME, $EVTPART1, $EVTPART2, 'DEVICE/thermostat/schedules') }
attr DEVICE getList desired-temp:noArg desired-temp DEVNAME/thermostat/properties/TargetTemperature
attr DEVICE jsonMap TargetTemperature:0 deviceOn:0
attr DEVICE webCmd deviceOn:desired-temp
deletereading -q DEVICE (?!associatedWith|IODev).*
attr DEVICE model WThermostatME81AH
setreading DEVICE attrTemplateVersion 20221115


Wenn man in mein raw listing guckt, sieht man schon, daß es sich nicht um Tasmota handelt.

Und anstatt

Zitat
Da hast du das Kind mit dem Bade ausgekippt, der TYPE darf m.E. stressfrei stehen bleiben.

Keine Ahnung, warum es mit der separaten file nicht klappen sollte. Wird an anderer Stelle auch so gemacht.

mal die eigenen init Kommandos zu verraten, außer { AttrTemplate_Initialize() } ausführen, wäre hilfreicher gewesen.

Danke trotzdem der Aufmerksamkeit.
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 28 November 2022, 17:06:19
?

Du hast als einziges weiteres MQTT-Gerät ein Tasmota-Ding. Das wird (wegen fehlendem Sortier-Template) mit da reingemischt (korrekterweise: es wurde, jetzt ist plötzlich eine andere ClientId im Spiel, also MQTT2_SERVER).

Und solange der Code im svn nichts passendes tut (um Profile aufzubereiten und zu versenden), macht es auch keinen Sinn, den runterzuladen....

Aber ok, wenn es für dich paßt, ist ja erst mal alles gut, es wird schon ggf. zu gegebener Zeit jemand hier weitermachen (bzw. sowieso besser in einem neuen Thread).
Titel: Antw:WTherostat Beca MQTT
Beitrag von: mirror am 08 Januar 2023, 21:30:16
Hallo,
ich hab mich nochmal versucht an den Attributen. Hier noch mal das Raw listing:
define MQTT2_thermostat_1766228 MQTT2_DEVICE thermostat_1766228
attr MQTT2_thermostat_1766228 readingList thermostat_1766228:Thermostat_Bad/thermostat/properties/Temperature:.* Temperature\
thermostat_1766228:Thermostat_Bad/thermostat/properties/systemMode:.* systemMode\
thermostat_1766228:Thermostat_Bad/clock/properties:.* { json2nameValue($EVENT) }\
thermostat_1766228:Thermostat_Bad/thermostat/properties/TargetTemperature:.* TargetTemperature\
thermostat_1766228:Thermostat_Bad/thermostat/properties/deviceOn:.* deviceOn\
thermostat_1766228:Thermostat_Bad/thermostat/properties/schedulesMode:.* schedulesMode\
thermostat_1766228:Thermostat_Bad/thermostat/properties/locked:.* locked\
thermostat_1766228:Thermostat_Bad/thermostat/properties/sensorSelection:.* sensorSelection\
thermostat_1766228:Thermostat_Bad/thermostat/properties:.* { json2nameValue($EVENT) }\
thermostat_1766228:Thermostat_Bad:.* { json2nameValue($EVENT) }\
thermostat_1766228:Thermostat_Bad/thermostat/properties/schedules:.* { json2nameValue($EVENT) }
attr MQTT2_thermostat_1766228 room MQTT2_DEVICE

setstate MQTT2_thermostat_1766228 2023-01-08 11:45:09 IODev myBroker
setstate MQTT2_thermostat_1766228 2023-01-08 13:01:05 TargetTemperature 22.00
setstate MQTT2_thermostat_1766228 2023-01-08 13:01:05 Temperature 22.50
setstate MQTT2_thermostat_1766228 2023-01-08 12:32:27 a1h 05:00
setstate MQTT2_thermostat_1766228 2023-01-08 12:32:27 a1t 23.00
setstate MQTT2_thermostat_1766228 2023-01-08 12:32:27 a2h 11:00
setstate MQTT2_thermostat_1766228 2023-01-08 12:32:27 a2t 22.00
setstate MQTT2_thermostat_1766228 2023-01-08 13:01:05 alive true
setstate MQTT2_thermostat_1766228 2023-01-08 13:01:05 deviceOn true
setstate MQTT2_thermostat_1766228 2023-01-08 13:02:16 epochTime 1673182936
setstate MQTT2_thermostat_1766228 2023-01-08 13:02:16 epochTimeFormatted 2023-01-08 13:02:16
setstate MQTT2_thermostat_1766228 2023-01-08 12:32:29 error Timeout: waiting for Wifi Working Mode response
setstate MQTT2_thermostat_1766228 2023-01-08 13:01:05 firmware 1.0.11 Beta
setstate MQTT2_thermostat_1766228 2023-01-08 13:01:05 idx Thermostat_Bad
setstate MQTT2_thermostat_1766228 2023-01-08 13:01:05 ip x.x.x.x
setstate MQTT2_thermostat_1766228 2023-01-08 13:01:05 locked false
setstate MQTT2_thermostat_1766228 2023-01-08 13:02:16 ntpServer pool.ntp.org
setstate MQTT2_thermostat_1766228 2023-01-08 13:01:05 schedulesMode auto
setstate MQTT2_thermostat_1766228 2023-01-08 13:01:05 sensorSelection internal
setstate MQTT2_thermostat_1766228 2023-01-08 11:45:09 subscriptions Thermostat_Bad/#
setstate MQTT2_thermostat_1766228 2023-01-08 13:01:05 systemMode cool
setstate MQTT2_thermostat_1766228 2023-01-08 13:02:16 timeZoneServer http://worldtimeapi.org/api/ip
setstate MQTT2_thermostat_1766228 2023-01-08 13:02:16 timezone Europe/Berlin
setstate MQTT2_thermostat_1766228 2023-01-08 13:02:16 validTime true
setstate MQTT2_thermostat_1766228 2023-01-08 12:32:27 w1h 05:00
setstate MQTT2_thermostat_1766228 2023-01-08 12:32:27 w1t 23.00
setstate MQTT2_thermostat_1766228 2023-01-08 12:32:27 w2h 09:00
setstate MQTT2_thermostat_1766228 2023-01-08 12:32:27 w2t 22.00
setstate MQTT2_thermostat_1766228 2023-01-08 12:32:27 w3h 11:30
setstate MQTT2_thermostat_1766228 2023-01-08 12:32:27 w3t 21.00
setstate MQTT2_thermostat_1766228 2023-01-08 12:32:27 w4h 12:30
setstate MQTT2_thermostat_1766228 2023-01-08 12:32:27 w4t 21.00
setstate MQTT2_thermostat_1766228 2023-01-08 12:32:27 w5h 17:00
setstate MQTT2_thermostat_1766228 2023-01-08 12:32:27 w5t 23.00
setstate MQTT2_thermostat_1766228 2023-01-08 12:32:27 w6h 21:00
setstate MQTT2_thermostat_1766228 2023-01-08 12:32:27 w6t 21.00


Das Ganze (desired-temp, manuell/automatic Einstellen, Anzeige des Heizzustandes) funktioniert schon sehr gut mit folgenden Attributen

Internals:
   CFGFN     
   CID        thermostat_1766228
   DEF        thermostat_1766228
   FUUID      63bac1d1-f33f-333b-2802-248215f68c1aafd1
   IODev      myBroker
   LASTInputDev myBroker
   MSGCNT     890
   NAME       Thermostat_Bad
   NR         3546
   STATE      off
   TYPE       MQTT2_DEVICE
   eventCount 922
   myBroker_CONN myBroker_x.x.x.x_64798
   myBroker_MSGCNT 890
   myBroker_TIME 2023-01-08 21:06:05
   JSONMAP:
     TargetTemperature 0
   OLDREADINGS:
   READINGS:
     2023-01-08 14:14:57   IODev           myBroker
     2023-01-08 20:50:47   LWT             true
     2023-01-08 14:23:40   attrTemplateVersion 20221115
     2023-01-08 21:06:05   clock_epochTime 1673211964
     2023-01-08 21:06:05   clock_epochTimeFormatted 2023-01-08 21:06:04
     2023-01-08 21:06:05   clock_ntpServer pool.ntp.org
     2023-01-08 21:06:05   clock_timeZoneServer http://worldtimeapi.org/api/ip
     2023-01-08 21:06:05   clock_timezone  Europe/Berlin
     2023-01-08 21:06:05   clock_validTime true
     2023-01-08 20:50:47   desired-temp    22.00
     2023-01-08 20:50:47   locked          false
     2023-01-08 20:50:47   schedulesMode   auto
     2023-01-08 20:50:47   sensorSelection internal
     2023-01-08 20:50:47   state           off
     2023-01-08 21:05:10   temp_mean       22.50
     2023-01-08 21:05:10   temperature     22.50
Attributes:
   devStateIcon <a href="http://ip" target="_blank">
LWT
</a>
state
   event-aggregator temp_mean:300:linear:mean
   getList    desired-temp:noArg desired-temp Thermostat_Bad/thermostat/properties/TargetTemperature
   icon       hm-tc-it-wm-w-eu
   jsonMap    TargetTemperature:0
   model      WThermostatME81AH
   readingList Thermostat_Bad/thermostat/properties/deviceOn:.* LWT
  devices/(clock|thermostat):.* {}
  Thermostat_Bad/clock/properties:.* { json2nameValue($EVENT,'clock_',$JSONMAP) }
  Thermostat_Bad/thermostat/properties:.* { $EVENT =~ s/true/"on"/g;; $EVENT =~ s/false/"off"/g;; json2nameValue($EVENT,'',$JSONMAP) }
  Thermostat_Bad/thermostat/properties/systemMode:.* {{state => $EVENT eq 'heat' ? 'on' : 'off'}}
  Thermostat_Bad/thermostat/properties/Temperature:.* temperature
  Thermostat_Bad/thermostat/properties/TargetTemperature:.* desired-temp
thermostat_1766228:Thermostat_Bad/thermostat/properties/schedulesMode:.* schedulesMode
thermostat_1766228:Thermostat_Bad/thermostat/properties/locked:.* locked
thermostat_1766228:Thermostat_Bad/thermostat/properties/sensorSelection:.* sensorSelection
   room       MQTT2_DEVICE
   setList    on:noArg Thermostat_Bad/thermostat/set/deviceOn true
  off:noArg Thermostat_Bad/thermostat/set/deviceOn false
  desired-temp:slider,5.0,1.0,35.0,1 Thermostat_Bad/thermostat/set/TargetTemperature $EVTPART1
  schedulesMode:auto,off Thermostat_Bad/thermostat/set/schedulesMode $EVTPART1
  systemMode:heat,cool,fan_only Thermostat_Bad/thermostat/set/systemMode $EVTPART1
  sensorSelection:internal,floor,both Thermostat_Bad/thermostat/set/sensorSelection $EVTPART1
   setStateList on off
   userReadings temp_mean:temperature:.* {ReadingsVal($name,"temperature",0)}
   webCmd     schedulesMode:desired-temp
   weekprofile Thermostat_Bad

Das Gerät liefert leider keinen state. Ich möchte, daß die Birne leuchtet, wenn das Relais angezogen hat und die Heizung an ist, statt nur anzuzeigen das der Thermostat an ist (deviceOn). Deshalb habe ich die einzige Variable, die den Zustand anzeigt, systemMode per reading auf state gelegt. Das klappt auch sehr gut.
Das Problem ist nun daß ich weder systemMode noch state in den FileLog bekomme. FileLog von systemMode ohne Umlegen auf state klappt, aber dann habe ich keinen state zum Umschalten der Birne. Ich habe versucht per userReading eine Kopie von state anzulegen, das klappt auch nicht:
userReadings temp_mean:temperature:.* {ReadingsVal($name,"temperature",0)},mystate:state:.* {ReadingsVal($name,"state",0)}
Warum kann man eigentlich state nicht loggen, es wird normal als Reading angezeigt? systemMode natürlich nicht mehr, ist ja umgebogen.

Titel: Antw:WTherostat Beca MQTT
Beitrag von: mirror am 11 Januar 2023, 18:24:31
Ich glaube die Lösung gefunden zu haben.
Ich habe 2 verschiedene Thermostate. Der erste ist ein Avatto ME81AH und mit folgendem Attr-template versehen:
# Thermostat Avatto ME81AH Wifi
name:WThermostatME81AH
filter:TYPE=MQTT2_DEVICE
desc: First version for <a href="https://github.com/AlbertWeterings/WThermostatBeca">WThermostat ME81AH</a>. <br>Not yet tested... <br> see <a href="https://forum.fhem.de/index.php/topic,123212.0.html">Forum Thread</a>. Might also be ok for original firmware from https://github.com/klausahrenberg/WThermostatBeca
order:E_05c
par:ICON;ICON as set, defaults to hm-tc-it-wm-w-eu;{ AttrVal("DEVICE","icon","hm-tc-it-wm-w-eu") }
par:WPNAME;weekprofile attr value, defaults to device name;{ AttrVal('DEVICE','weekprofile','DEVICE') }
{ Svn_GetFile("contrib/AttrTemplate/99_attrT_z2m_thermostat_Utils.pm", "FHEM/99_attrT_z2m_thermostat_Utils.pm", sub(){ CommandReload(undef, "99_attrT_z2m_thermostat_Utils.pm") }) }
attr DEVICE icon ICON
attr DEVICE userattr weekprofile
attr DEVICE weekprofile WPNAME
attr DEVICE devStateIcon <a href="http://ip" target="_blank">\
LWT\
</a>\
state
attr DEVICE setStateList on off weekprofile
attr DEVICE readingList DEVICE/thermostat/properties/deviceOn:.* LWT\
  devices/(clock|thermostat):.* {}\
  DEVICE/clock/properties:.* { json2nameValue($EVENT,'clock_',$JSONMAP) }\
  DEVICE/thermostat/properties:.* { $EVENT =~ s/true/"on"/g;; $EVENT =~ s/false/"off"/g;; json2nameValue($EVENT,'',$JSONMAP) }\
  DEVICE/thermostat/properties/systemMode:.* {{state => $EVENT eq 'heat' ? 'on' : 'off'}}\
  DEVICE/thermostat/properties/Temperature:.* temperature\
  DEVICE/thermostat/properties/TargetTemperature:.* desired-temp
attr DEVICE setList on:noArg DEVICE/thermostat/set/deviceOn true\
  off:noArg DEVICE/thermostat/set/deviceOn false\
  desired-temp:slider,5.0,1.0,35.0,1 DEVICE/thermostat/set/TargetTemperature $EVTPART1\
  schedulesMode:auto,off DEVICE/thermostat/set/schedulesMode $EVTPART1\
  systemMode:heat,cool,fan_only DEVICE/thermostat/set/systemMode $EVTPART1\
  sensorSelection:internal,floor,both DEVICE/thermostat/set/sensorSelection $EVTPART1
  weekprofile { FHEM::attrT_z2m_thermostat_Utils::z2t_send_Beca_weekprofile($NAME, $EVTPART1, $EVTPART2, 'DEVICE/thermostat/set/schedules') }\
attr DEVICE getList desired-temp:noArg desired-temp DEVICE/thermostat/properties/TargetTemperature
attr DEVICE jsonMap TargetTemperature:0 Temperature:0
attr DEVICE webCmd schedulesMode:desired-temp
attr DEVICE userReadings temp_mean:temperature:.* {ReadingsVal($name,"temperature",0)},state:systemMode:.* {ReadingsVal($name,"systemMode",0)}
attr DEVICE event-aggregator temp_mean:300:linear:mean
deletereading -q DEVICE (?!associatedWith|IODev).*
attr DEVICE model WThermostatME81AH
setreading DEVICE attrTemplateVersion 20221115


Der zweite Thermostat ist ein Moes BHT-002 GALW und fast identisch zu dem vom thread Eröffner und das template sehr ähnlich zum schon vorhandenen WThermostatBeca template:
# Thermostat Moes BHT-002 GALW Wifi
name:WThermostatBHT002
filter:TYPE=MQTT2_DEVICE
desc: First version for <a href="https://github.com/fashberg/WThermostatBeca">WThermostat BHT-002 GALW</a>. <br>Not yet tested... <br> see <a href="https://forum.fhem.de/index.php/topic,123212.0.html">Forum Thread</a>. Might also be ok for original firmware from https://github.com/klausahrenberg/WThermostatBeca
order:E_05b
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:ICON;ICON as set, defaults to hm-tc-it-wm-w-eu;{ AttrVal("DEVICE","icon","hm-tc-it-wm-w-eu") }
par:WPNAME;weekprofile attr value, defaults to device name;{ AttrVal('DEVICE','weekprofile','DEVICE') }
{ Svn_GetFile("contrib/AttrTemplate/99_attrT_z2m_thermostat_Utils.pm", "FHEM/99_attrT_z2m_thermostat_Utils.pm", sub(){ CommandReload(undef, "99_attrT_z2m_thermostat_Utils.pm") }) }
attr DEVICE icon ICON
attr DEVICE userattr weekprofile
attr DEVICE weekprofile WPNAME
attr DEVICE devStateIcon <a href="http://ip" target="_blank">\
LWT\
</a>\
state
attr DEVICE setStateList on off weekprofile
attr DEVICE readingList TELETOPIC/LWT:.* LWT\
  devices/(network|clock|thermostat|logging):.* {}\
  STATTOPIC/things/network/properties:.* { json2nameValue($EVENT,'net_',$JSONMAP) }\
  STATTOPIC/things/thermostat/properties:.* { $EVENT =~ s/true/"on"/g;; $EVENT =~ s/false/"off"/g;; json2nameValue($EVENT,'',$JSONMAP) }\
  STATTOPIC/things/logging/properties:.* { json2nameValue($EVENT,'log_',$JSONMAP) }\
  STATTOPIC/things/clock/properties:.* { json2nameValue($EVENT,'clock_',$JSONMAP) }\
  STATTOPIC/things/thermostat/targetTemperature:.* desired-temp\
  STATTOPIC/things/thermostat/properties/state:.* {{state => $EVENT eq 'heating' ? 'on' : 'off'}}
attr DEVICE setList on:noArg CMNDTOPIC/things/thermostat/properties/deviceOn true\
  off:noArg CMNDTOPIC/things/thermostat/properties/deviceOn false\
  desired-temp:slider,5.0,0.5,35.0,1 CMNDTOPIC/things/thermostat/properties/targetTemperature $EVTPART1\
  mode:heat,auto,off CMNDTOPIC/things/thermostat/properties/mode $EVTPART1\
  weekprofile { FHEM::attrT_z2m_thermostat_Utils::z2t_send_Beca_weekprofile($NAME, $EVTPART1, $EVTPART2, 'CMNDTOPIC/things/thermostat/schedules') }\
  x_send_mcucommand:textField { my $payload = $EVENT;$payload =~ s/$EVTPART0 //g; qq(CMNDTOPIC/things/thermostat/mcucommand $payload)}
attr DEVICE getList desired-temp:noArg desired-temp CMNDTOPIC/things/thermostat/properties/targetTemperature
attr DEVICE jsonMap targetTemperature:0
attr DEVICE webCmd mode:desired-temp
attr DEVICE userReadings temp_mean:temperature:.* {ReadingsVal($name,"temperature",0)}
attr DEVICE event-on-change-reading .*
attr DEVICE event-min-interval .*:300
deletereading -q DEVICE (?!associatedWith|IODev).*
attr DEVICE model WThermostatBHT002
setreading DEVICE attrTemplateVersion 20220108


Die Bedienung habe ich bei Beiden gerinfügig verändert, so daß man zwischen Manuell und Schedule Automatik umschalten kann. Das loggen wurde durch das userreading beschränkt, ist aber vielleicht noch verbesserungswürdig.
Das getList im WThermostatBeca hat nicht funktioniert, und musste so gemacht werden wie oben angezeigt.

Das Testen war sehr umständlich, weil das Ablegen der Einzelfiles im lib Verzeichnis nicht funktioniert, trotz Attr_Initialize() und anders mehr. Nur Einfügen in den große tempalte File hat funktioniert.
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 12 Januar 2023, 19:04:25
Zitat von: mirror am 12 Januar 2023, 18:51:07
Interesse das in Deiner template lib mit aufzunehmen?
"Meiner" ist gut, das ist eher "unsere" oder (von mir aus gesehen) "eure" ;) ...

Ja, schon. Allerdings wäre es klasse, wenn du kurz zusammenfassen könntest, wo eigentlich die Unterschiede zum Ausgangs-attrTemplate (und zueinander) liegen. Vielleicht wäre es sinnvoll, alle zu einem zusammenzufassen und per "RADIO"-Option zu fragen, welche Variante dass es eigentlich ist?

Und dann ist mir nicht klar, warum du per jsonMap die Readings erdest. Eines davon sollte eigentlich die Rückmeldung zu "desired-temp" sein, oder?

(Etwas MQTT-Verkehr würde die Sache vielleicht für mich erhellen, falls die obigen Fragen nicht halbwegs klar sind).
(Ich komme grade leider nicht dazu, mir das selbst zusammenzufrickeln).
Titel: Antw:WTherostat Beca MQTT
Beitrag von: mirror am 12 Januar 2023, 20:46:36
Ja, OK - ich mache mal eine Gegenüberstellung vom Ausgangstemplate zu meinem WThermostatBHT002 (dem Ersteren).

Zum Erden:
Bin ja noch Anfänger! Werde mal versuchen das Mapping von targetTemperature auf desired-temp schon im json read zu machen. Dann spare ich mir die Einstellung, daß die Thermostate die MQTT Werte noch mal zusätzlich schicken. Weniger traffic! Hoffentlich klappt es.
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 12 Januar 2023, 22:12:06
Zitat von: mirror am 12 Januar 2023, 20:46:36
Ja, OK - ich mache mal eine Gegenüberstellung vom Ausgangstemplate zu meinem WThermostatBHT002 (dem Ersteren).
Vielleicht solltest du weniger nach der Hardware differenzieren. Das eine scheint mit Tasmota geflasht zu sein, und das andere mit irgendwas anderem. Vermutlich "ticken" alle (fast) gleich, die jeweils diese firmwares verwenden...

Zitat
Zum Erden:
Bin ja noch Anfänger! Werde mal versuchen das Mapping von targetTemperature auf desired-temp schon im json read zu machen. Dann spare ich mir die Einstellung, daß die Thermostate die MQTT Werte noch mal zusätzlich schicken. Weniger traffic! Hoffentlich klappt es.
Möglich. Ob da überhaupt was kommt, kann ich von hier aus nicht sagen. Zum Testen kannst du auch einfach
jsonMap mit "TargetTemperature:desired-temp" setzen und den anderen Zweig "erden" (leere Perl-Anweisung, {}).
Titel: Antw:WTherostat Beca MQTT
Beitrag von: mirror am 12 Januar 2023, 23:15:07
Ja, hat geklappt, desired-temp wird schon im json auf targetTemperature gemapt. Die zusätzlichen Senden der properties in separaten MQTT messages ist im Gerät abgeschaltet:
# Thermostat Moes BHT-002 GALW Wifi
name:WThermostatBHT002
filter:TYPE=MQTT2_DEVICE
desc: First version for <a href="https://github.com/fashberg/WThermostatBeca">WThermostat BHT-002 GALW</a>. <br>Not yet tested... <br> see <a href="https://forum.fhem.de/index.php/topic,123212.0.html">Forum Thread</a>. Might also be ok for original firmware from https://github.com/klausahrenberg/WThermostatBeca
order:E_05b
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:ICON;ICON as set, defaults to hm-tc-it-wm-w-eu;{ AttrVal("DEVICE","icon","hm-tc-it-wm-w-eu") }
par:WPNAME;weekprofile attr value, defaults to device name;{ AttrVal('DEVICE','weekprofile','DEVICE') }
{ Svn_GetFile("contrib/AttrTemplate/99_attrT_z2m_thermostat_Utils.pm", "FHEM/99_attrT_z2m_thermostat_Utils.pm", sub(){ CommandReload(undef, "99_attrT_z2m_thermostat_Utils.pm") }) }
attr DEVICE icon ICON
attr DEVICE userattr weekprofile
attr DEVICE weekprofile WPNAME
attr DEVICE devStateIcon <a href="http://ip" target="_blank">\
LWT\
</a>\
state
attr DEVICE setStateList on off weekprofile
attr DEVICE readingList TELETOPIC/LWT:.* LWT\
  devices/(network|clock|thermostat|logging):.* {}\
  STATTOPIC/things/network/properties:.* { json2nameValue($EVENT,'net_',$JSONMAP) }\
  STATTOPIC/things/thermostat/properties:.* { $EVENT =~ s/true/"on"/g;; $EVENT =~ s/false/"off"/g;; $EVENT =~ s/heating/on/g;; $EVENT =~ s/cooling/off/g;; json2nameValue($EVENT,'',$JSONMAP) }\
  STATTOPIC/things/logging/properties:.* { json2nameValue($EVENT,'log_',$JSONMAP) }\
  STATTOPIC/things/clock/properties:.* { json2nameValue($EVENT,'clock_',$JSONMAP) }
attr DEVICE setList on:noArg CMNDTOPIC/things/thermostat/properties/deviceOn true\
  off:noArg CMNDTOPIC/things/thermostat/properties/deviceOn false\
  desired-temp:slider,5.0,0.5,35.0,1 CMNDTOPIC/things/thermostat/properties/targetTemperature $EVTPART1\
  mode:heat,auto,off CMNDTOPIC/things/thermostat/properties/mode $EVTPART1\
  weekprofile { FHEM::attrT_z2m_thermostat_Utils::z2t_send_Beca_weekprofile($NAME, $EVTPART1, $EVTPART2, 'CMNDTOPIC/things/thermostat/schedules') }\
  x_send_mcucommand:textField { my $payload = $EVENT;$payload =~ s/$EVTPART0 //g; qq(CMNDTOPIC/things/thermostat/mcucommand $payload)}
attr DEVICE getList desired-temp:noArg desired-temp CMNDTOPIC/things/thermostat/properties
attr DEVICE jsonMap targetTemperature:desired-temp
attr DEVICE webCmd mode:desired-temp
attr DEVICE userReadings temp_mean:temperature:.* {ReadingsVal($name,"temperature",0)}
attr DEVICE event-on-change-reading .*
attr DEVICE event-min-interval .*:300
deletereading -q DEVICE (?!associatedWith|IODev).*
attr DEVICE model WThermostatBHT002
setreading DEVICE attrTemplateVersion 20220108


Der Hauptunterschied zum Ursprungstemplate ist, daß ich statt den Thermostaten abschalten jetzt den Mode Manuell/Automatisch (d.h. schedule) umschalten kann. Sehe ich als sinnvoller an.
Titel: Antw:WTherostat Beca MQTT
Beitrag von: mirror am 13 Januar 2023, 17:03:22
Ich hätte noch einmal ein paar Fragen.
Du hattest es zwar schon mal vorn erklärt, aber ich verstehe dieses erden von
devices/(network|clock|thermostat|logging):.* {}\
in der readinglist nicht. Was verbirgt sich hinter devices? mqtt messages wie "devices/thermostat" tauchen bei mir nie auf. Oder ist das schon die Wirkung?

Stattdessen habe ich viele Readings mit vorn dem CID, z.B.:
wthermostat_3343395:Thermostat_JulZi/stat/things/thermostat/targetTemperature:.* targetTemperature
Die könnte man doch eigentlich skippen, da ich jetzt alle Informationen aus der json Struktur hole. Wie?

In Deinem Vorbild template Beca könnten die beiden readings
  STATTOPIC/things/thermostat/deviceOn:.* {{state => $EVENT eq 'false' ? 'off' : 'on'}}\
  STATTOPIC/things/thermostat/targetTemperature:.* desired-temp

doch auch über jsonMap aus der json Struktur kommen. Richtig? Die Konversion zu on/off wird da schon gemacht.

Warum hast Du das substitute mit Ausrufezeichen versehen? Z.B.: $EVENT =~ s/true/"on"/g;; Die kommen jetzt doppelt.

Die Situation bzgl. der Nutzung von eigenen Files im FHEM/lib/AttrTemplate Verzeichnis ist sehr hinderlich. Immer wieder den großen File updaten, hin her kopieren und Rechte anpassen macht keinen Spaß.

Danke nochmal für Deine Hilfe.
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 25 Januar 2023, 21:29:38
Zitat von: mirror am 13 Januar 2023, 17:03:22
Ich hätte noch einmal ein paar Fragen.
Du hattest es zwar schon mal vorn erklärt, aber ich verstehe dieses erden von
devices/(network|clock|thermostat|logging):.* {}\
in der readinglist nicht. Was verbirgt sich hinter devices? mqtt messages wie "devices/thermostat" tauchen bei mir nie auf. Oder ist das schon die Wirkung?
Sorry, mir fehlt im Moment etwas der Gesamtüberblick über das, was bei dir kommt. An sich sollten Messages deswegen nicht nicht kommen, sondern einfach nur keine Readings erzeugt werden, falls (!) Messages zu der betreffenden Topic-Regex passen.

Zitat
Stattdessen habe ich viele Readings mit vorn dem CID, z.B.:
wthermostat_3343395:Thermostat_JulZi/stat/things/thermostat/targetTemperature:.* targetTemperature
Die könnte man doch eigentlich skippen, da ich jetzt alle Informationen aus der json Struktur hole. Wie?
Skippen wäre:
Thermostat_JulZi/stat/things/thermostat/targetTemperature:.* {}
Aber: ich bin nicht sicher, ob das (nur) der Antwort-topic auf explizite Anfragen ist. Wenn ja, wäre es besser, die Rückmeldung (nochmal) in das richtige Reading zu schreiben:
Thermostat_JulZi/stat/things/thermostat/targetTemperature:.* desired-temp
Zitat
In Deinem Vorbild template Beca könnten die beiden readings
  STATTOPIC/things/thermostat/deviceOn:.* {{state => $EVENT eq 'false' ? 'off' : 'on'}}\
  STATTOPIC/things/thermostat/targetTemperature:.* desired-temp

doch auch über jsonMap aus der json Struktur kommen. Richtig? Die Konversion zu on/off wird da schon gemacht.
Das kann ich nicht mehr beantworten, ohne die alten Beiträge nochmal durchzulesen, vermutlich war es ein timing-Thema (welche Info kommt wann, aus welchem Anlass und wo), oder einfach ein Versehen/unbedacht...

Zitat
Warum hast Du das substitute mit Ausrufezeichen versehen? Z.B.: $EVENT =~ s/true/"on"/g;; Die kommen jetzt doppelt.
"sauberes" JSON packt bestimmte Infos nicht in Anführungszeichen. Wenn die Quelle unsauber ist, muss man an der Stelle besser nicht nacharbeiten...

ZitatDie Situation bzgl. der Nutzung von eigenen Files im FHEM/lib/AttrTemplate Verzeichnis ist sehr hinderlich. Immer wieder den großen File updaten, hin her kopieren und Rechte anpassen macht keinen Spaß.
Da bin ich weiter ziemlich sicher, dass das Problem an sich nicht die zusätzlichen files sind, sondern irgendwas anderes, eventuell die Codierung und/oder Zeilenenden, die nicht unix-kompatibel sind. files wie diese unter Windows zu bearbeiten ist in der Regel "tödlich", ich mache das z.B. in der Regel nur mit Linux-Tools auf dem Zielrechner (per mcedit aus dem Paket mc) oder unter Win dann mit einem Editor, der diese Art "Probleme" kennt (notepad++).

Zitat
Danke nochmal für Deine Hilfe.
Gerne, sorry, dass das jetzt etwas gedauert hat.
Titel: Antw:WTherostat Beca MQTT
Beitrag von: mirror am 25 Januar 2023, 22:19:41
Nur zum Ladeproblem:

Ich sehe im logfile daß 2 templates mehr erscheinen, also geladen werden. Ich sehe sie nur nicht in der Listenbox und auch die Anwendung in der commandline funktionert nicht. Neustart auch nicht.

Die Files haben unix Zeilenendung, also nur LF. Die Files habe gleiche owner/group/maske wie auch die anderen Files.

Kann es irgendwas mit dem Filter sein?

# Thermostat Avatto ME81AH Wifi
name:WThermostatME81AH
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*thermostat.*
desc: First version for <a href="https://github.com/AlbertWeterings/WThermostatBeca">WThermostat ME81AH</a>. <br>Not yet tested... <br> see <a href="https://forum.fhem.de/index.php/topic,123212.0.html">Forum Thread</a>. Might also be ok for original firmware from https://github.com/klausahrenberg/WThermostatBeca
order:E_05c


und der andere Thermostat:
# Thermostat Moes BHT-002 GALW Wifi
name:WThermostatBHT002
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*(tele|cmnd|stat).*
desc: First version for <a href="https://github.com/fashberg/WThermostatBeca">WThermostat BHT-002 GALW</a>. <br>Not yet tested... <br> see <a href="https://forum.fhem.de/index.php/topic,123212.0.html">Forum Thread</a>. Might also be ok for original firmware from https://github.com/klausahrenberg/WThermostatBeca
order:E_05b
Titel: Antw:WTherostat Beca MQTT
Beitrag von: Beta-User am 25 Januar 2023, 22:44:18
Also wenn 2 mehr geladen werden, wurde die file auch gelesen, von daher sollte es auch kein Codierungsthema (UTF-8) oä. sein.

filter: bewirkt "nur", dass man das attrTemplate nicht sieht, per FHEM-Kommandofeld geht es dann eigentlich trotzdem mit der Anwendung desselben.

Zum Testen würde ich das mit dem Filter trotzdem mal weitestgehend rausnehmen (filter:TYPE=MQTT2_DEVICE sollte ok sein), es reicht dann auch, den Befehl für das neu-Einlesen abzusetzen (AttrTemplate_Initialize()).

Sonst habe ich grade keine Idee, zumal ich in der Regel ja grade die Integration in die Haupt-file haben will/muss...
Titel: Aw: WThermostat Beca MQTT
Beitrag von: Turtle am 10 Juni 2023, 22:25:24
Für alle die das Template verwenden es funktioniert nur mit dieser Version !!! https://github.com/fashberg/WThermostatBeca/releases/tag/v1.19.beta1-fas
Titel: Aw: WThermostat Beca MQTT
Beitrag von: mirror am 18 Juni 2023, 11:10:25
Zitat von: Turtle am 10 Juni 2023, 22:25:24Für alle die das Template verwenden es funktioniert nur mit dieser Version !!! https://github.com/fashberg/WThermostatBeca/releases/tag/v1.19.beta1-fas

Also bei mir laufen 6 Thermostate mit der letzten Version Version 1.22 (https://github.com/fashberg/WThermostatBeca/releases/tag/v1.22-fas).

Was konkret hindert Dich an der Nutzung einer neueren Firmware Version?