Moinsen Freunde,
ich versuche gerade meine Klimaanlage, welche über MQTT eingebunden ist mit Alexa zu steuern.
Ich habe schon div. Dinge hier gelesen, komme aber nicht 100% an mein Ziel.
Meine Klimaanalge ist als genericDeviceType=thermostat eingebunden mit einem homebridgeMapping.
Laut AlexaSeite gibt es folgende Einstellungen (https://developer.amazon.com/en-US/docs/alexa/device-apis/alexa-property-schemas.html#thermostat-mode).
Das ist mein Device:
Internals:
CID klimaanlage_dc4f222c8068
DEF klimaanlage_dc4f222c8068
FUUID 6824d5e0-f33f-0804-e91e-f95511439fc1fe47
IODev MyBroker
LASTInputDev MyBroker
MSGCNT 1548
MyBroker_CONN MyBroker_192.168.178.33_60168
MyBroker_MSGCNT 1548
MyBroker_TIME 2025-07-29 13:48:06
NAME Klimaanlage
NR 715
STATE online
<br>
auto
TYPE MQTT2_DEVICE
eventCount 632
READINGS:
2025-07-29 12:43:18 IODev MyBroker
2025-05-21 11:48:49 act_t klimaanlage/climate/mitsubishi_klimaanlage/action/state
2025-07-29 13:32:35 auto_sub_mode AUTO_LEADER
2025-07-29 13:32:35 avty_t klimaanlage/status
2025-07-29 13:32:34 board d1_mini
2025-07-29 13:32:35 bssid 3C:A6:2F:5C:16:45
2025-07-29 13:32:35 cmd_t klimaanlage/button/restart_mitsubishi_klimaanlage/command
2025-05-21 11:48:49 curr_temp_t klimaanlage/climate/mitsubishi_klimaanlage/current_temperature/state
2025-07-29 13:48:00 current_temperature 21.5
2025-05-19 08:31:24 debug ␛[0;32m[I][CN105:010]: setupUART() with baudrate 2400 ␛[0m
2025-07-29 13:32:35 dev_cla restart
2025-07-29 13:32:35 dev_cns_1_1 mac
2025-07-29 13:32:35 dev_cns_1_2 dc4f222c8068
2025-07-29 13:32:35 dev_ids dc4f222c8068
2025-07-29 13:32:35 dev_mdl d1_mini
2025-07-29 13:32:35 dev_mf Espressif
2025-07-29 13:32:35 dev_name Mitsubishi_Klimaanlage
2025-07-29 13:32:35 dev_sw 2025.4.2 (May 21 2025, 15:01:46)
2025-07-29 13:32:35 ent_cat config
2025-07-29 13:32:35 esphome_version 2025.4.2 May 21 2025, 15:01:46
2025-07-29 13:48:00 fan_mode low
2025-05-21 11:48:49 fan_mode_cmd_t klimaanlage/climate/mitsubishi_klimaanlage/fan_mode/command
2025-05-21 11:48:49 fan_mode_stat_t klimaanlage/climate/mitsubishi_klimaanlage/fan_mode/state
2025-05-21 11:48:49 fan_modes_1 auto
2025-05-21 11:48:49 fan_modes_2 low
2025-05-21 11:48:49 fan_modes_3 medium
2025-05-21 11:48:49 fan_modes_4 high
2025-05-21 11:48:49 fan_modes_5 middle
2025-05-21 11:48:49 fan_modes_6 quiet
2025-07-29 13:32:34 friendly_name Mitsubishi_Klimaanlage
2025-07-29 13:32:35 ic mdi:restart
2025-07-29 13:32:35 ip 192.168.178.33
2025-07-29 13:32:34 mac dc4f222c8068
2025-05-21 11:48:49 max_hum 99
2025-05-21 11:48:49 max_temp 31
2025-05-21 11:48:49 min_hum 30
2025-05-21 11:48:49 min_temp 15
2025-07-29 13:48:00 mode auto
2025-05-21 11:48:49 mode_cmd_t klimaanlage/climate/mitsubishi_klimaanlage/mode/command
2025-05-21 11:48:49 mode_stat_t klimaanlage/climate/mitsubishi_klimaanlage/mode/state
2025-05-21 11:48:49 modes_1 auto
2025-05-21 11:48:49 modes_2 off
2025-05-21 11:48:49 modes_3 cool
2025-05-21 11:48:49 modes_4 heat
2025-05-21 11:48:49 modes_5 fan_only
2025-05-21 11:48:49 modes_6 dry
2025-07-29 13:32:35 name Restart Mitsubishi_Klimaanlage
2025-07-29 13:32:34 network wifi
2025-05-21 11:48:48 ops_1 AUTO
2025-05-21 11:48:48 ops_2 ↑↑
2025-05-21 11:48:48 ops_3 ↑
2025-05-21 11:48:48 ops_4 —
2025-05-21 11:48:48 ops_5 ↓
2025-05-21 11:48:48 ops_6 ↓↓
2025-05-21 11:48:48 ops_7 SWING
2025-07-29 13:48:00 outside_temperature 20.0
2025-07-29 13:32:34 platform ESP8266
2025-07-29 13:32:34 port 6053
2025-05-21 11:48:49 precision 0.5
2025-07-29 13:32:35 ssid WLAN24
2025-07-29 13:32:35 stage GENTLE
2025-05-21 11:48:48 stat_cla measurement
2025-05-21 11:48:49 stat_t klimaanlage/sensor/auto_sub_mode/state
2025-07-29 13:48:00 state 118.9
2025-07-29 13:32:35 status online
2025-07-29 13:32:35 sub_mode NORMAL
2025-07-29 13:48:00 swing_mode vertical
2025-05-21 11:48:49 swing_mode_cmd_t klimaanlage/climate/mitsubishi_klimaanlage/swing_mode/command
2025-05-21 11:48:49 swing_mode_stat_t klimaanlage/climate/mitsubishi_klimaanlage/swing_mode/state
2025-05-21 11:48:49 swing_modes_1 off
2025-05-21 11:48:49 swing_modes_2 both
2025-05-21 11:48:49 swing_modes_3 vertical
2025-05-21 11:48:49 swing_modes_4 horizontal
2025-07-29 13:48:00 target_temperature 20
2025-05-21 11:48:49 temp_cmd_t klimaanlage/climate/mitsubishi_klimaanlage/target_temperature/command
2025-05-21 11:48:49 temp_stat_t klimaanlage/climate/mitsubishi_klimaanlage/target_temperature/state
2025-05-21 11:48:49 temp_step 1
2025-05-21 11:48:49 temp_unit C
2025-07-29 13:32:35 uniq_id ESPbuttonrestart_mitsubishi_klimaanlage
2025-05-21 11:48:48 unit_of_meas °C
2025-07-29 13:47:22 uptime 46820
2025-07-29 13:32:34 version 2025.4.2
2025-07-29 13:48:06 wifi_signal -47
Attributes:
alexaName Klimaanlage
autocreate 0
devStateIcon online:FS20.on offline:FS20.off heat:FS20.off@red cool:FS20.off@blue fan_only:Ventilator_wind
event-on-change-reading .*
genericDeviceType thermostat
homebridgeMapping CurrentTemperature=current_temperature
TargetTemperature=Temperatur::Temperatur,minValue=19,maxValue=30,minStep=1
CurrentHeatingCoolingState=mode,values=off:OFF;;heat:HEAT;;cool:COOL;;auto:AUTO
TargetHeatingCoolingState=Betrieb_Modus,values=off:OFF;;HEAT:heat;;COOL:cool;;auto:AUTO,cmds=OFF:Betrieb_Modus+off;;HEAT:Heizen;;COOL:Kühlen;;AUTO:Betrieb_Modus+auto
icon sani_heating_heatpump
readingList klimaanlage_dc4f222c8068:klimaanlage/status:.* status
klimaanlage_dc4f222c8068:esphome/discover/klimaanlage:.* { json2nameValue($EVENT) }
klimaanlage_dc4f222c8068:klimaanlage/climate/mitsubishi_klimaanlage/mode/state:.* mode
klimaanlage_dc4f222c8068:klimaanlage/climate/mitsubishi_klimaanlage/target_temperature/state:.* target_temperature
klimaanlage_dc4f222c8068:klimaanlage/climate/mitsubishi_klimaanlage/action/state:.* state
klimaanlage_dc4f222c8068:klimaanlage/climate/mitsubishi_klimaanlage/fan_mode/state:.* fan_mode
klimaanlage_dc4f222c8068:klimaanlage/climate/mitsubishi_klimaanlage/swing_mode/state:.* swing_mode
klimaanlage_dc4f222c8068:klimaanlage/climate/mitsubishi_klimaanlage/current_temperature/state:.* current_temperature
klimaanlage_dc4f222c8068:klimaanlage/sensor/bssid/state:.* bssid
klimaanlage_dc4f222c8068:klimaanlage/sensor/ssid/state:.* ssid
klimaanlage_dc4f222c8068:klimaanlage/sensor/ip/state:.* ip
klimaanlage_dc4f222c8068:klimaanlage/sensor/wifi_signal/state:.* wifi_signal
klimaanlage_dc4f222c8068:klimaanlage/sensor/input_power/state:.* state
klimaanlage_dc4f222c8068:klimaanlage/sensor/energy_usage/state:.* state
klimaanlage_dc4f222c8068:klimaanlage/sensor/outside_air_temp/state:.* outside_temperature
klimaanlage_dc4f222c8068:klimaanlage/sensor/stage/state:.* stage
klimaanlage_dc4f222c8068:klimaanlage/sensor/sub_mode/state:.* sub_mode
klimaanlage_dc4f222c8068:klimaanlage/sensor/auto_sub_mode/state:.* auto_sub_mode
klimaanlage_dc4f222c8068:klimaanlage/sensor/uptime/state:.* uptime
klimaanlage_dc4f222c8068:klimaanlage/sensor/esphome_version/state:.* esphome_version
##klimaanlage_dc4f222c8068:klimaanlage/select/vertical_vane/state:.* state
##klimaanlage_dc4f222c8068:klimaanlage/debug:.* debug
klimaanlage_dc4f222c8068:homeassistant/button/klimaanlage/restart_mitsubishi_klimaanlage/config:.* { json2nameValue($EVENT) }
room FLUR
setList Aus:noArg klimaanlage/climate/mitsubishi_klimaanlage/mode/command off
Heizen:noArg klimaanlage/climate/mitsubishi_klimaanlage/mode/command heat
Ventilator:noArg klimaanlage/climate/mitsubishi_klimaanlage/mode/command fan_only
Trocknen:noArg klimaanlage/climate/mitsubishi_klimaanlage/mode/command dry
Kühlen:noArg klimaanlage/climate/mitsubishi_klimaanlage/mode/command cool
Betrieb_Modus:off,heat,fan_only,dry,cool,auto klimaanlage/climate/mitsubishi_klimaanlage/mode/command $EVTPART1
Temperatur:slider,19.00,1.00,30.00 klimaanlage/climate/mitsubishi_klimaanlage/target_temperature/command $EVTPART1
Ventilator_Modus:auto,quiet,low,medium,high klimaanlage/climate/mitsubishi_klimaanlage/fan_mode/command $EVTPART1
Swing_Modus:AUTO,↑↑,↑,—,↓,↓↓,SWING klimaanlage/select/vertical_vane/command $EVTPART1
stateFormat status
<br>
mode
verbose 0
Mir macht der TargetHeatingCoolingState Probleme. Das Auslesen der aktuellen Temperatur, das setzen einer Zieltemperatur und der aktuelle Status geht.
Am Anfang hatte ich keinen "Betrieb_Modus" und konnte daher bei TargetHeatingCoolingState auch kein Readings als Mapping eintragen und weiß auch nicht, ob das leer bleiben kann!?
Ich wollte die verschiedenen Modi direkt schalten, also set Klimanalage Heizen/Kühlen/Aus .
Das hat aber irgendwie nicht geklappt, daher habe ich dann noch "Betrieb_Modus" als set eingebaut, sodass ich das Mapping komplett anlegen konnte:
TargetHeatingCoolingState=Betrieb_Modus,values=off:OFF;;HEAT:heat;;COOL:cool;;auto:AUTO,cmds=OFF:Betrieb_Modus+off;;HEAT:Heizen;;COOL:Kühlen;;AUTO:Betrieb_Modus+auto
Wenn ich Alexa sage geh auf Heizen/Kühlen, dann wird der Modus geschaltet.
Wenn ich Aus sage, sagt Alexa, dass das Gerät das nicht unterstützt (in der Alexa APP ist das Device als Typ Klimaanlage eingerichtet)
Wenn ich auf Auto gehe, wird auto gesetzt, aber sofort wieder in Kühlen geschaltet?!
1. Größtes Problem ist also Aus! Warum geht das nicht?!
2. Wozu sind die values, wenn die cmds ausgeführt werden, egal was da steht?!
3. Kann man auch 2 Befehle bei den cmds angeben?! Also zB bei Heat:Heizen;Temperatur+25 ? Also stelle auf Heizen und die Temperatur auf 25 Grad?!
VG+Danke
René
Das ist jetzt vielleicht keine super vollständige Antwort (habe selbst leider kein Klimagerät eingebunden dessen HomebridgeMapping ich teilen kann), aber vielleicht bringt dich das etwas näher ans Ziel:
Zuerst mal brauchst du da schon ein Reading, das existiert. Einfach das nicht existierende Betrieb_Modus nehmen funktioniert nicht. Vermutlich passt es, wenn du auch da einfach mode nimmst.
Den Link zur Amazon-Developer-Seite für die Values, die es gibt, hattest du ja schon gefunden. Ich habe die vorsichtige Vermutung, dass das aber auch ohne values=-Teil funktioniert, weil das ja nur Groß-/Kleinschreibung betrifft und ich meine, dass alexa-fhem schlau genug ist, das direkt richtig zu parsen. Das müsstest du dann aber im Log nachlesen, ob das richtig geparst wird (siehe dazu unten).
Für die cmd=-Syntax bitte hier lesen: https://github.com/justme-1968/homebridge-fhem?tab=readme-ov-file#homekit---fhem-parameters
(es geht ja darum, dass alexa etwas zu FHEM übergibt, deshalb ist der Teil "Homekit -> FHEM" relevant)
Zwei Kommandos gleichzeitig geht glaube ich nicht. Das dann vielleicht über die setList lösen und dort ein extra-Kommando für alexa erstellen, in dem zwei MQTT-Befehle abgesendet werden (ich glaube, das geht; aber nicht sicher bzw. weiß aus dem Kopf jetzt nicht wie – im Zweifel richtet es ein notify/DOIF, das bei Statusänderung off -> heat direkt die richtige Temperatur einstellt).
Generell eignet sich zum debuggen aber das alexa-fhem Log. Wenn du einen reload oder restart von alexa-fhem ausführst wird dir nämlich genau angezeigt, welche Characteristics wie geparst werden und was welche Werte bedeuten (das ist die Richtung FHEM -> Alexa bzw. im GitHub-README "FHEM -> Homekit"). Erstmal, wie oben beschrieben, values= weglassen und schauen was passiert. Falls es nicht passt, values= so lange anpassen, bis da was sinnvolles rauskommt.
Zum debuggen der Gegenrichtung (Alexa -> FHEM bzw. im GitHub-README "Homekit -> FHEM") kannst du dann einfach den jeweiligen Befehl aus Alexa absenden und siehst dann an der URL im alexa-fhem-Log welcher set-Befehl an FHEM übermittelt wird. Dann cmds= so lange anpassen, bis es passt.
Hi,
vielen Dank für deine Rückmeldung... Was soll ich sagen... ich glaube an den Punkte war ich überall schon...
Ich habe nochmal den "Betriebs_Modus" gegen mode getauscht. Ich hatte das eh nur eingeführt, weil ich gelesen hatte, dass TargetHeatingCoolingState einen Bezug braucht, so wie bei "TargetTemperature [Temperatur]" und daher dann mit div. Kombinationen rumgespielt.
Egal was ich aktuell mache... Aus geht nicht.
Im Alexa Log steht:
[14.8.2025, 14:27:35] [FHEM] Klimaanlage is thermostat
[14.8.2025, 14:27:35] [FHEM] Klimaanlage has
[14.8.2025, 14:27:35] [FHEM] CurrentHeatingCoolingState [mode]
[14.8.2025, 14:27:35] [FHEM] CurrentTemperature [current_temperature]
[14.8.2025, 14:27:35] [FHEM] TargetTemperature [Temperatur]
[14.8.2025, 14:27:35] [FHEM] TargetHeatingCoolingState [mode]
[14.8.2025, 14:27:35] [FHEM] Klimaanlage will not send proactive events
[14.8.2025, 14:27:35] [FHEM] Klimaanlage uses ID: 6824d5e0-f33f-
2025-08-14 14:27:35 caching: Klimaanlage-mode: cool
2025-08-14 14:27:35 caching: Klimaanlage-current_temperature: 22.0
Wenn ich sage Heizen, Kühlen, Auto oder eine Temperaturangabe mache, dann kommen die Logs und das entsprechende Mapping:
[14.8.2025, 14:28:37] [FHEM] Klimaanlage: executing set cmd for TargetHeatingCoolingState with value HEAT
[14.8.2025, 14:28:37] [FHEM] executing: http://127.0.0.1:8083/fhem?cmd=set%20Klimaanlage%20HEAT&fwcsrf=csrf_558054201106990&XHR=1
[14.8.2025, 14:29:04] [FHEM] Klimaanlage: executing set cmd for TargetHeatingCoolingState with value AUTO
[14.8.2025, 14:29:04] [FHEM] executing: http://127.0.0.1:8083/fhem?cmd=set%20Klimaanlage%20AUTO&fwcsrf=csrf_558054201106990&XHR=1
[14.8.2025, 14:29:16] [FHEM] Klimaanlage: executing set cmd for TargetHeatingCoolingState with value COOL
[14.8.2025, 14:29:16] [FHEM] executing: http://127.0.0.1:8083/fhem?cmd=set%20Klimaanlage%20COOL&fwcsrf=csrf_558054201106990&XHR=1
[14.8.2025, 14:29:43] [FHEM] Klimaanlage: executing set cmd for TargetTemperature with value 23
[14.8.2025, 14:29:43] [FHEM] executing: http://127.0.0.1:8083/fhem?cmd=set%20Klimaanlage%20Temperatur%2023&fwcsrf=csrf_558054201106990&XHR=1
[14.8.2025, 14:30:31] [FHEM] Klimaanlage: executing set cmd for TargetTemperature with value 19
[14.8.2025, 14:30:31] [FHEM] executing: http://127.0.0.1:8083/fhem?cmd=set%20Klimaanlage%20Temperatur%2019&fwcsrf=csrf_558054201106990&XHR=1
Aber wenn ich sage "Alexa, schalte Klimaanlage aus" dann kommt nur Thermostat/Klimaanlage unterstützt das nicht...
Es gibt ja ein set Klimaanalage Aus, ich habe auch unter den Values ein Mapping OFF:Aus
Aber NOTHING... wenn wenigstens sowas kommen würde:
[14.8.2025, 14:29:16] [FHEM] Klimaanlage: executing set cmd for TargetHeatingCoolingState with value AUS/OFF/WHATEVER
dann könnte man ja reagieren, aber Alexa selber sendet ihr erst gar nichts.
Ich bin da irgendwie noch auf dem Holzweg... ich glaube ich habe irgendwas in der Konfig drin oder nicht drin, dass beim Anlegen in der Alexa nicht mitgibt, dass es OFF gibt.
Auch div. valueOFF /cmdOFF haben bisher nicht funktioniert.
VG
René
Bitte änder mal dein HomebridgeMapping wie folgt (an der setList musst du nichts verändern):
clear
On=mode,valueOn=/heat|cool|auto/,valueOff=off,cmdOn=Betrieb_Modus+auto,cmdOff=Betrieb_Modus+off
CurrentTemperature=current_temperature
TargetTemperature=target_temperature,minValue=19,maxValue=30,minStep=1,cmd=Temperatur
CurrentHeatingCoolingState=mode,values=off:OFF;heat:HEAT;cool:COOL;auto:AUTO
TargetHeatingCoolingState=mode,values=off:OFF;heat:HEAT;cool:COOL;auto:AUTO,cmds=OFF:Betrieb_Modus+off;HEAT:Betrieb_Modus+heat;COOL:Betrieb_Modus+cool;AUTO:Betrieb_Modus+auto
Dann einen reload und dann sollte es funktionieren. Wenn das der Fall ist, schreib gerne auch noch ein Update in den anderen Thread, vielleicht gibt es ja noch mehr Leute, die das gleiche Problem haben.
Der Befehl, der bei "Alexa, schalte Klimaanlage ein" gesendet wird, ist dabei frei konfigurierbar. Habe es aktuell auf auto gestellt, du könntest da aber in der setList auch eine andere beliebige Logik umsetzen, z.B., dass abhängig von Unterschied zwischen target_temperature und current_temperature (negativ oder nicht) oder gar abhängig von der Jahreszeit o.ä. in heat oder cool geschaltet wird.
Mein Lösungsprozess sah so aus:
Zitat von: fireball am 14 August 2025, 15:04:58[14.8.2025, 14:28:37] [FHEM] Klimaanlage: executing set cmd for TargetHeatingCoolingState with value HEAT
[14.8.2025, 14:28:37] [FHEM] executing: http://127.0.0.1:8083/fhem?cmd=set%20Klimaanlage%20HEAT&fwcsrf=csrf_558054201106990&XHR=1
Das hier passt aber nicht, oder? Also die ganzen Befehle senden ja
set Klimaanlage HEAT bzw.
set Klimaanlage <MODUS>, das ist in deiner setList nicht abgebildet, außer ich übersehe etwas? Wenn du in der FHEM-Befehlszeile
set Klimaanlage HEAT eingibst, dürfte eigentlich nichts passieren. Richtig müsste sein
set Klimaanlage Betrieb_Modus heat.
Der Einfachheit halber würde ich vorschlagen deine setList zu ändern, dass nur lowercase gesendet wird:
Betrieb_Modus:off,heat,fan_only,dry,cool,auto { my $mode = lc($EVTPART1); return qq {klimaanlage/climate/mitsubishi_klimaanlage/mode/command $mode};}
Dann spart man sich nämlich den
cmds=-Teil des Mappings und kann einfach mit
cmd= arbeiten:
TargetHeatingCoolingState=Betrieb_Modus,values=off:OFF;heat:HEAT;cool:COOL;auto:AUTO,cmd=Betrieb_Modus
Ok, ich habe es gerade mal mit einem "dummy"-Gerät getestet:
defmod klima_test MQTT2_DEVICE klima_test
attr klima_test alexaName Klimaanlage
attr klima_test devicetopic test/klimaanlage
attr klima_test genericDeviceType thermostat
attr klima_test homebridgeMapping clear\
CurrentTemperature=current_temperature\
TargetTemperature=target_temperature,minValue=19,maxValue=30,minStep=1,cmd=Temperatur\
CurrentHeatingCoolingState=mode,values=off:OFF;;heat:HEAT;;cool:COOL;;auto:AUTO\
TargetHeatingCoolingState=mode,values=off:OFF;;heat:HEAT;;cool:COOL;;auto:AUTO,cmd=Betrieb_Modus
attr klima_test readingList $DEVICETOPIC/mode/state:.* mode\
$DEVICETOPIC/target_temperature/state:.* target_temperature\
$DEVICETOPIC/current_temperature/state:.* current_temperature
attr klima_test setList Temperatur:slider,19.00,1.00,30.00 $DEVICETOPIC/target_temperature/command $EVTPART1\
Betrieb_Modus:off,heat,fan_only,dry,cool,auto { my $mode = lc($EVTPART1);; return qq {$DEVICETOPIC/mode/command $mode};;}
In der Tat funktioniert das nur mit Kühlen und Heizen, aber bei "Alexa, schalte Klimaanlage aus" kommt bei mir nun auch "Klimaanlage unterstützt das nicht".
Stutzig geworden bin ich, als ich gesehen habe, dass man auch in der App nur hinsichtlich der Temperatur eine Auswahlmöglichkeit hat. Der Status Off/Auto/Heat/Cool wird zwar richtig angezeigt und auch aktualisiert, wenn man das Reading aktualisiert, aber es ist quasi "ausgegraut".
In der Dokumentation (siehe auch hier (https://developer.amazon.com/en-US/docs/alexa/device-apis/alexa-thermostatcontroller.html#configuration-object)) bin ich dann fündig geworden: https://developer.amazon.com/en-US/docs/alexa/device-apis/alexa-thermostatcontroller.html#properties
ZitatThe Alexa.ThermostatController interface defines the following reportable properties. You identify the properties that you support in your discovery response.
Und in der discovery response, die alexa-fhem sendet steht nur:
{"type":"AlexaInterface","interface":"Alexa.ThermostatController","version":"3","properties":{"supported":[{"name":"targetSetpoint"}],"configuration":{"supportsScheduling":false},"proactivelyReported":false,"retrievable":true}}
Eigentlich müsste das supported-Objekt heißen:
[{"name":"targetSetpoint"}, {"name":"thermostatMode"}]
Der für das setzen der properties verantwortliche Code findet sich in lib/server.js ab Zeile 3569 (https://github.com/justme-1968/alexa-fhem/blob/master/lib/server.js#L3569). Dort wird standardmäßig bei jedem Device das
TargetTemperature kann die
targetSetpoint property gesetzt, aber dass die thermostatMode-Property gesetzt wird, ist abhängig von der Bedingung (Zeile 3588)
mappings.TargetHeatingCoolingState && mappings.TargetHeatingCoolingState.cmds
Das heißt, es muss das Mapping
TargetHeatingCoolingState geben und das muss auch das Objekt
cmds haben. Meine "verschlankte" Definition von oben funktioniert also nicht.
Darüberhinaus gibt es in Zeile 3590 noch eine Regex, die die cmds nur übernimmt, wenn sie auch zu
^(AUTO|COOL|ECO|HEAT|OFF|CUSTOM):.* passen.
Insofern habe ich meine Minimaldefinition angepasst:
TargetHeatingCoolingState=mode,values=off:OFF;heat:HEAT;cool:COOL;auto:AUTO,cmds=OFF:Betrieb_Modus+off;HEAT:Betrieb_Modus+heat;COOL:Betrieb_Modus+cool;AUTO:Betrieb_Modus+auto
Und siehe da, die properties werden richtig reported, auch mit den richtigen supportedModes:
"properties":{"supported":[{"name":"targetSetpoint"},{"name":"thermostatMode"}],"configuration":{"supportsScheduling":false,"supportedModes":["OFF","HEAT","COOL","AUTO"]},
Interessanterweise geht das Schalten aber immer noch nicht, weder über die App (nach wie vor ausgegraut), noch über einen Sprachbefehl (nach wie vor "Klimaanlage unterstützt das leider nicht"). Der Fehler muss also anderswo liegen, außerdem hattest du ja auch in deinem ursprünglichen HomebridgeMapping
cmds= gesetzt.
Liest man noch ein bisschen weiter in der Dokumentation, kommt man dann zu diesem Abschnitt (https://developer.amazon.com/en-US/docs/alexa/device-apis/alexa-thermostatcontroller.html#discover-response-example-for-an-air-conditioner):
ZitatTypically air conditioners support a single setpoint, and only have a cooling mode. Unlike thermostats, which are usually on all the time, users turn air conditioners on and off. For an air conditioner, Amazon recommends that you also implement the Alexa.PowerController interface, and keep the PowerController synchronized with the ThermostatController as shown in the following list:
- When the thermostat controller mode is set to COOL, the power controller power state is set to ON.
- When the thermostat controller mode is set to OFF, the power controller power state is set to OFF.
Die Lösung ist es also, einen PowerController einzufügen. Das geht über die Characteristic
On=, sodass man insgesamt nun folgendes HomebridgeMapping hat:
clear
On=mode,valueOn=/heat|cool|auto/,valueOff=off,cmdOn=Betrieb_Modus+auto,cmdOff=Betrieb_Modus+off
CurrentTemperature=current_temperature
TargetTemperature=target_temperature,minValue=19,maxValue=30,minStep=1,cmd=Temperatur
CurrentHeatingCoolingState=mode,values=off:OFF;heat:HEAT;cool:COOL;auto:AUTO
TargetHeatingCoolingState=mode,values=off:OFF;heat:HEAT;cool:COOL;auto:AUTO,cmds=OFF:Betrieb_Modus+off;HEAT:Betrieb_Modus+heat;COOL:Betrieb_Modus+cool;AUTO:Betrieb_Modus+auto
Damit funktioniert dann auch endlich "Alexa schalte Klimaanlage aus". In der Alexa-App wird dann in der Übersicht auch ein Blauer "On/Off"-Button angezeigt, der Modus lässt sich aber immer noch nicht über die App (und damit auch nicht über Routinen) schalten. Wieso das so ist und ob man das beheben kann ist aber etwas für ein andermal ...
Lies mal diesen Thread (komplett) , da haben wir uns schonmal damit beschäftigt
https://forum.fhem.de/index.php?topic=135513.msg1291674#msg1291674 (https://forum.fhem.de/index.php?topic=135513.msg1291674#msg1291674)
Es funktioniert nur dann, wenn das Gerät Heizung heisst, ..... warum auch immer.
Hat damals aber nicht wirklich jemanden interessiert.
Gruss Tom
Hi passibe/Tom,
gleich vorweg!!! ES GEHT... ON/OFF... ein ganzes Wochenende einen schwarzen Bildschirm und jetzt gehts (https://www.youtube.com/watch?v=ie5-UQ3HAms).
Also ich habe ja echt viel umgespielt und auch TOMs alten Lösungsansatz gesehen und probiert, aber bei mir ging nix...
Das du dich noch tiefer in die Alexa-Seiten reingelesen hast, DANKE! Ich war bei der Tabelle weiter oben mit den STATS einfach stehen geblieben.
Das ist doch mal ne Lösung!
Also nochmal kurz zurück...
1. Das mit dem Log oben und das du meintest, dass mit HEAT/COOL/AUTO kann gar nicht gehen, richtig, das war weil ich die setList gar nicht mehr hatte, nachdem Versuch, wo du meinstest, lösche mal alle values raus...
Aber das ging davor ja.
2. Warum setzt du eigentlich die values genau anders rum!?
Ich hatte: values=OFF:Aus;;HEAT:heat;;COOL:cool;;AUTO:auto und das ging auch...
Bei dir: values=off:OFF;heat:HEAT;cool:COOL;auto:AUTO
Spielt die Reihenfolge des Mappings keine Rolle?!
Jetzt nochmal zur Lösung: Diese Variante funktioniert mit Thermostat und ON/OFF. In der Alexa-APP wird der Modus angezeigt, aber lässt sich nur per Sprache ändern, nicht per Klick
clear
On=mode,valueOn=/heat|cool|auto/,valueOff=off,cmdOn=Betrieb_Modus+auto,cmdOff=Betrieb_Modus+off
CurrentTemperature=current_temperature
TargetTemperature=target_temperature,minValue=19,maxValue=30,minStep=1,cmd=Temperatur
CurrentHeatingCoolingState=mode,values=off:OFF;heat:HEAT;cool:COOL;auto:AUTO
TargetHeatingCoolingState=mode,values=off:OFF;heat:HEAT;cool:COOL;auto:AUTO,cmds=OFF:Betrieb_Modus+off;HEAT:Betrieb_Modus+heat;COOL:Betrieb_Modus+cool;AUTO:Betrieb_Modus+auto
Alexa Debug Log startet:
[15.8.2025, 12:27:10] [FHEM] Klimaanlage is thermostat
[15.8.2025, 12:27:10] [FHEM] Klimaanlage has
[15.8.2025, 12:27:10] [FHEM] On [mode;Betrieb_Modus auto,Betrieb_Modus off]
[15.8.2025, 12:27:10] [FHEM] CurrentTemperature [current_temperature]
[15.8.2025, 12:27:10] [FHEM] TargetTemperature [target_temperature]
[15.8.2025, 12:27:10] [FHEM] CurrentHeatingCoolingState [mode]
[15.8.2025, 12:27:10] [FHEM] TargetHeatingCoolingState [mode]
[15.8.2025, 12:27:10] [FHEM] Klimaanlage will not send proactive events
[15.8.2025, 12:27:10] [FHEM] Klimaanlage uses ID: 6824d5e0-f33f-0804-e91e-f95511439fc1fe47
2025-08-15 12:27:10 caching: Klimaanlage-mode: cool
2025-08-15 12:27:10 caching: Klimaanlage-current_temperature: 22.5
2025-08-15 12:27:10 caching: Klimaanlage-target_temperature: 20
Alexa kann also bei ON und OFF am mode erkennen, wenn auto/heat/cool ist, ist die Klima an, wenn off ist aus.
Beim Einschalten kommt auto und beim Ausschalten off. => PERFEKT.
ON/OFF sieht so aus:
2025-08-15 12:31:26 caching: Klimaanlage-current_temperature: 22.0
[15.8.2025, 12:31:26] [FHEM] caching: CurrentTemperature: 22.0 (as string; from '22.0')
2025-08-15 12:31:44 caching: Klimaanlage-current_temperature: 22.5
[15.8.2025, 12:31:44] [FHEM] caching: CurrentTemperature: 22.5 (as string; from '22.5')
[15.8.2025, 12:31:48] >>>> [ssh] {"directive":{"header":{"messageId":"f5b08d69-a96d-41fd-9250-e9a052e1e6fc","namespace":"Alexa.PowerController","name":"TurnOff","payloadVersion":"3","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"93450804-8CEBDA47494588A0"},"endpointId":"6824d5e0-f33f-0804-e91e-f95511439fc1fe47","cookie":{"device":"Klimaanlage","fuuid":"6824d5e0-f33f-0804-e91e-f95511439fc1fe47"}},"payload":{}}}
[15.8.2025, 12:31:48] [FHEM] Klimaanlage: executing set cmd for On with value 0
[15.8.2025, 12:31:48] [FHEM] executing: http://127.0.0.1:8083/fhem?cmd=set%20Klimaanlage%20Betrieb_Modus%20off&fwcsrf=csrf_517824394479954&XHR=1
[15.8.2025, 12:31:48] <<<< [ssh] {"context":{"properties":[{"namespace":"Alexa.PowerController","name":"powerState","value":"OFF","timeOfSample":"2025-08-15T10:31:48.996Z","uncertaintyInMilliseconds":500}]},"event":{"header":{"namespace":"Alexa","name":"Response","payloadVersion":"3","messageId":"4ce1cf1c-36b1-4d4d-96d0-b4474faa1346","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"93450804-8CEBDA47494588A0"},"endpointId":"6824d5e0-f33f-0804-e91e-f95511439fc1fe47"},"payload":{}}}
2025-08-15 12:31:49 caching: Klimaanlage-mode: off
[15.8.2025, 12:31:49] [FHEM] caching: On: 0 (as number; from 'off')
[15.8.2025, 12:31:49] [FHEM] caching: CurrentHeatingCoolingState: OFF (as string; from 'off')
[15.8.2025, 12:31:49] [FHEM] caching: TargetHeatingCoolingState: OFF (as string; from 'off')
[15.8.2025, 12:33:17] >>>> [ssh] {"directive":{"header":{"messageId":"38cf6208-fceb-4795-83a1-87b7ebaff7cd","namespace":"Alexa.PowerController","name":"TurnOn","payloadVersion":"3","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"93450804-8CEBDA47494588A0"},"endpointId":"6824d5e0-f33f-0804-e91e-f95511439fc1fe47","cookie":{"device":"Klimaanlage","fuuid":"6824d5e0-f33f-0804-e91e-f95511439fc1fe47"}},"payload":{}}}
[15.8.2025, 12:33:17] [FHEM] Klimaanlage: executing set cmd for On with value 1
[15.8.2025, 12:33:17] [FHEM] executing: http://127.0.0.1:8083/fhem?cmd=set%20Klimaanlage%20Betrieb_Modus%20auto&fwcsrf=csrf_517824394479954&XHR=1
[15.8.2025, 12:33:17] <<<< [ssh] {"context":{"properties":[{"namespace":"Alexa.PowerController","name":"powerState","value":"ON","timeOfSample":"2025-08-15T10:33:17.788Z","uncertaintyInMilliseconds":500}]},"event":{"header":{"namespace":"Alexa","name":"Response","payloadVersion":"3","messageId":"5eaf247e-922c-4f89-abfd-9653788d581b","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"93450804-8CEBDA47494588A0"},"endpointId":"6824d5e0-f33f-0804-e91e-f95511439fc1fe47"},"payload":{}}}
2025-08-15 12:33:17 caching: Klimaanlage-mode: auto
[15.8.2025, 12:33:17] [FHEM] caching: On: 1 (as number; from 'auto')
[15.8.2025, 12:33:17] [FHEM] caching: CurrentHeatingCoolingState: AUTO (as string; from 'auto')
[15.8.2025, 12:33:17] [FHEM] caching: TargetHeatingCoolingState: AUTO (as string; from 'auto')
Vielen Dank nochmal für die Unterstützung, ich denke ich habe beim Thema Alexa auch wieder etwas mehr dazu gelernt.
Viell. kann ich jetzt auch den Betrieb_Modus wieder rauswerfen, mal schauen, den brauch ich ja eigentlich gar nicht, weil die setList schon alle Befehle enthält.
VG René
Zitat von: fireball am 15 August 2025, 13:02:32ein ganzes Wochenende einen schwarzen Bildschirm und jetzt gehts (https://www.youtube.com/watch?v=ie5-UQ3HAms).
;D
Zitat von: fireball am 15 August 2025, 13:02:322. Warum setzt du eigentlich die values genau anders rum!?
Im entsprechenden README steht (https://github.com/justme-1968/homebridge-fhem?tab=readme-ov-file#fhem---homekit-parameters):
Zitatmapping of reading values to homekit values [...] a : separated pair of from and to values
Wir mappen hier ja "from" FHEM "to" Alexa, d.h. es muss
$FHEMReading:$AlexaReading sein.
Wieso das trotzdem funktioniert, ich vermute, weil hier nur die Groß-/Kleinschreibung anders ist und alexa-fhem schlau genug ist, das auch so zu erkennen bzw. hier automatisch die Großschreibung vornimmt, wenn der kleingeschriebene Wert zum bekannten/"erlaubten" großgeschriebenen passt. Hier also eher Glück, weil das nichts obskures ist, ich weiß nicht, ob das für alle Geräte funktioniert hätte.
Zitat von: fireball am 15 August 2025, 13:02:32Vielen Dank nochmal für die Unterstützung
Gerne!
Zitat von: fireball am 15 August 2025, 13:02:32Viell. kann ich jetzt auch den Betrieb_Modus wieder rauswerfen, mal schauen, den brauch ich ja eigentlich gar nicht, weil die setList schon alle Befehle enthält.
Ja, wobei "richtig" im Sinne von MQTT2_DEVICE wäre es, wenn setList und readingList Hand in Hand gehen, d.h. der Befehl, mit dem sich das Reading
mode ändert, auch
mode heißt und dann mit
attr setStateList mode auch eine Zustandsrückmeldung geliefert wird.
- Ausführen von set Klimaanlage mode auto setzt das Reading mode auf set_auto
- Eingehende MQTT-Nachricht von der Klimaanlage überschreibt set_auto dann mit auto
- -> Zustandsänderung wurde bestätigt
Aber ehrlicherweise ist das auch nur kosmetisch, solange alles funktioniert, ist das egal.