Klimaanlage mit Alexa via IR Bridge und MQTT

Begonnen von tube, 20 Juli 2020, 15:42:09

Vorheriges Thema - Nächstes Thema

tube

Hallo,

ich bitte um Nachsicht, falls das alles 08/15 ist, aber ich bin erst kurze Zeit dabei  :)

Folgende Situation:
Klimaanlage kann nur mit Infrarot gesteuert werden. Also habe ich ein Tasmota_IR Gerät besorgt und mit MQTT verbunden (MQTT2_Device). Das klappt eigentlich ganz gut. Allerdings bekomme ich nur ein "AN"/"AUS" hin. Ich möchte aber gern die Temperatur via Alexa einstellen können.
Setlist vom MQTT2_Tasmota sieht so aus:
IRhvac:textField cmnd/tasmota/IRHVAC {"Vendor":"PANASONIC_AC","Power":$EVTPART1,"Mode":"$EVTPART2","FanSpeed":"$EVTPART3","Temp":"$EVTPART4"}
on cmnd/tasmota/IRHVAC {"Vendor":"PANASONIC_AC","Power":ON,"Mode":"COOL","FanSpeed":"AUTO","Temp":"25"}
off cmnd/tasmota/IRHVAC {"Vendor":"PANASONIC_AC","Power":OFF,"Mode":"COOL","FanSpeed":"3","Temp":"25"}

Ich kann also per
IRhvac On Cool 3 22
die Klimaanlage einschalten. Und on/off funktioniert per Alexa auch schon.
Der genericDeviceType steht noch auf "switch". Denke mal der muss auf "thermostat", oder? Was trage ich bei setlist ein, damit ich die Temperatur per Alexa übermitteln kann, wenn der Typ auf Thermostat steht? Ich möchte ja quasi mit einem IR Befehl gleichzeitig "ON" und die entsprechende Temperatur senden.
Oder geht das ganz anders?

Beta-User

 :) Alles, was mit solchen speziellen Sachen wie IR zu tun hat, ist eigentlich selten 08/15, keine Sorge, und auch Klimageräte über MQTT2-Device sind jetzt noch nicht so häufig hier anzutreffen...

Ein komplettes (RAW-)list wäre trotzdem nicht verkehrt gewesen.

Habe zwar keine Erfahrung mit diesem konkreten Gerät, würde aber empfehlen, tatsächlich mal mit "thermostat" als genericDeviceType ins Rennen zu gehen, und den setter "desired-temp" zu nennen (Details dazu hatte ich mal versucht, beim ems-esp-attrTemplate zu erläutern). Dann käme in etwa folgendes raus (zur Eingabe in das Attributfeld):
IRhvac:textField cmnd/tasmota/IRHVAC {"Vendor":"PANASONIC_AC","Power":$EVTPART1,"Mode":"$EVTPART2","FanSpeed":"$EVTPART3","Temp":"$EVTPART4"}
on:noArg cmnd/tasmota/IRHVAC {"Vendor":"PANASONIC_AC","Power":ON,"Mode":"COOL","FanSpeed":"AUTO","Temp":"25"}
off:noArg cmnd/tasmota/IRHVAC {"Vendor":"PANASONIC_AC","Power":OFF,"Mode":"COOL","FanSpeed":"3","Temp":"25"}
desired-temp:slider,15.0,0.5,30.0,1  cmnd/tasmota/IRHVAC {"Vendor":"PANASONIC_AC","Power":ON,"Mode":"COOL","FanSpeed":"AUTO","Temp":"$EVTPART1"}

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

tube

#2
Intuitiv hätte ich das genau so probiert - geht aber leider nicht.

Hier mal ein List:
Internals:
   CID        Tasmota
   DEF        Tasmota
   DEVICETOPIC MQTT2_Tasmota
   FUUID      5f156962-f33f-5d36-c53d-deeb57bfedb52d88
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_MSGCNT 86
   MQTT2_FHEM_Server_TIME 2020-07-20 16:42:58
   MSGCNT     86
   NAME       MQTT2_Tasmota
   NR         200
   STATE      on
<br>
<a href="http://192.168.1.89" target="_blank">192.168.1.89</a>
   TYPE       MQTT2_DEVICE
   READINGS:
     2020-07-20 16:34:37   Command         Error
     2020-07-20 11:52:34   FallbackTopic   cmnd/Tasmota_fb/
     2020-07-20 11:52:34   GroupTopic      cmnd/tasmotas/
     2020-07-20 16:42:58   Heap            24
     2020-07-20 11:52:34   Hostname        Tasmota
     2020-07-20 11:52:34   IPAddress       192.168.1.89
     2020-07-20 15:26:46   IRHVAC_Beep     Off
     2020-07-20 15:26:46   IRHVAC_Celsius  On
     2020-07-20 15:26:46   IRHVAC_Clean    Off
     2020-07-20 15:26:46   IRHVAC_Econo    Off
     2020-07-20 15:26:46   IRHVAC_FanSpeed Auto
     2020-07-20 15:26:46   IRHVAC_Filter   Off
     2020-07-20 15:26:46   IRHVAC_Light    Off
     2020-07-20 15:26:46   IRHVAC_Mode     Cool
     2020-07-20 15:26:46   IRHVAC_Model    1
     2020-07-20 15:26:46   IRHVAC_Power    On
     2020-07-20 15:26:46   IRHVAC_Quiet    Off
     2020-07-20 15:26:46   IRHVAC_Sleep    -1
     2020-07-20 15:26:46   IRHVAC_SwingH   Off
     2020-07-20 15:26:46   IRHVAC_SwingV   Off
     2020-07-20 15:26:46   IRHVAC_Temp     25
     2020-07-20 15:26:46   IRHVAC_Turbo    Off
     2020-07-20 15:26:46   IRHVAC_Vendor   PANASONIC_AC
     2020-07-20 12:06:21   IRSend          Invalid JSON
     2020-07-20 16:32:52   IrReceived_Bits 17
     2020-07-20 16:19:45   IrReceived_Data 0x0x0220E004000000060220E00400393080A100000EE0000089000007
     2020-07-20 11:54:39   IrReceived_DataLSB 0x06208
     2020-07-20 16:32:52   IrReceived_Hash 0x0ADD307D
     2020-07-20 16:19:45   IrReceived_IRHVAC_Beep Off
     2020-07-20 16:19:45   IrReceived_IRHVAC_Celsius On
     2020-07-20 16:19:45   IrReceived_IRHVAC_Clean Off
     2020-07-20 16:19:45   IrReceived_IRHVAC_Econo Off
     2020-07-20 16:19:45   IrReceived_IRHVAC_FanSpeed Auto
     2020-07-20 16:19:45   IrReceived_IRHVAC_Filter Off
     2020-07-20 16:19:45   IrReceived_IRHVAC_Light Off
     2020-07-20 16:19:45   IrReceived_IRHVAC_Mode Cool
     2020-07-20 16:19:45   IrReceived_IRHVAC_Model 6
     2020-07-20 16:19:45   IrReceived_IRHVAC_Power On
     2020-07-20 16:19:45   IrReceived_IRHVAC_Quiet Off
     2020-07-20 16:19:45   IrReceived_IRHVAC_Sleep -1
     2020-07-20 16:19:45   IrReceived_IRHVAC_SwingH Auto
     2020-07-20 16:19:45   IrReceived_IRHVAC_SwingV Highest
     2020-07-20 16:19:45   IrReceived_IRHVAC_Temp 24
     2020-07-20 16:19:45   IrReceived_IRHVAC_Turbo Off
     2020-07-20 16:19:45   IrReceived_IRHVAC_Vendor PANASONIC_AC
     2020-07-20 16:32:52   IrReceived_Protocol UNKNOWN
     2020-07-20 16:32:52   IrReceived_Repeat 0
     2020-07-20 13:55:12   LOGGING         12:55:11 HTP: Configure Logging
     2020-07-20 15:10:53   LWT             Online
     2020-07-20 16:42:58   LoadAvg         19
     2020-07-20 11:52:34   Module          A1 IR Bridge
     2020-07-20 16:42:58   MqttCount       3
     2020-07-20 15:10:53   POWER           
     2020-07-20 16:32:51   RC6_1           0x00000000
     2020-07-20 16:32:53   RC6_12          0x046
     2020-07-20 16:32:53   RC6_20          0x14611
     2020-07-20 16:19:54   RC6_26          0x32014A4
     2020-07-20 16:19:55   RC6_36          0xC8052105A
     2020-07-20 16:19:58   RC6_6           0x32
     2020-07-20 16:32:51   RC6_8           0x14
     2020-07-20 11:52:34   RestartReason   Software/System restart
     2020-07-20 16:33:59   SaveData        on
     2020-07-20 16:33:59   SetOption26     on
     2020-07-20 16:42:58   Sleep           50
     2020-07-20 16:42:58   SleepMode       Dynamic
     2020-07-20 16:33:58   StateText1      off
     2020-07-20 16:33:58   StateText2      on
     2020-07-20 16:33:58   StateText3      toggle
     2020-07-20 16:33:58   StateText4      hold
     2020-07-20 16:42:58   Time            2020-07-20T15:42:58
     2020-07-20 16:42:58   Uptime          0T04:50:29
     2020-07-20 16:42:58   UptimeSec       17429
     2020-07-20 11:52:34   Version         8.3.1(ir)
     2020-07-20 11:52:34   WebServerMode   Admin
     2020-07-20 16:42:58   Wifi_AP         1
     2020-07-20 16:42:58   Wifi_BSSId      34:31:C4:35:BA:80
     2020-07-20 16:42:58   Wifi_Channel    6
     2020-07-20 16:42:58   Wifi_Downtime   0T00:00:04
     2020-07-20 16:42:58   Wifi_LinkCount  2
     2020-07-20 16:42:58   Wifi_RSSI       58
     2020-07-20 16:42:58   Wifi_SSId       Garage
     2020-07-20 16:42:58   Wifi_Signal     -71
     2020-07-20 12:05:12   attrTemplateVersion 20200522 or prior
     2020-07-20 15:26:45   state           on
     2020-07-20 16:26:42   subscriptions   cmnd/Tasmota_fb/# cmnd/tasmota/# cmnd/tasmotas/#
Attributes:
   IODev      MQTT2_FHEM_Server
   alexaName  Klima
   alias      Klima
   event-on-change-reading .*
   genericDeviceType thermostat
   icon       IR
   model      tasmota_ir
   readingList tele/tasmota/INFO.:.* { json2nameValue($EVENT) }
  tele/tasmota/RESULT:.* { $EVENT =~ m,..IrReceived....Protocol...([A-Za-z0-9]+)...Bits..([\d]+)..Data...([A-Za-z0-9]+)..., ? {"$1_$2"=>$3} : json2nameValue($EVENT) }
Tasmota:stat/tasmota/RESULT:.* { json2nameValue($EVENT) }
Tasmota:tele/tasmota/STATE:.* { json2nameValue($EVENT) }
Tasmota:stat/tasmota/LOGGING:.* LOGGING
Tasmota:tele/tasmota/LWT:.* LWT
Tasmota:cmnd/tasmota/POWER:.* POWER
   room       2.3_Wohnzimmer,MQTT2_DEVICE
   setList    IRhvac:textField cmnd/tasmota/IRHVAC {"Vendor":"PANASONIC_AC","Power":$EVTPART1,"Mode":"$EVTPART2","FanSpeed":"$EVTPART3","Temp":"$EVTPART4"}
on cmnd/tasmota/IRHVAC {"Vendor":"PANASONIC_AC","Power":ON,"Mode":"COOL","FanSpeed":"AUTO","Temp":"25"}
off cmnd/tasmota/IRHVAC {"Vendor":"PANASONIC_AC","Power":OFF,"Mode":"COOL","FanSpeed":"3","Temp":"25"}
desired-temp:slider,15.0,0.5,30.0,1  cmnd/tasmota/IRHVAC {"Vendor":"PANASONIC_AC","Power":ON,"Mode":"COOL","FanSpeed":"AUTO","Temp":"$EVTPART1"}
   stateFormat state
<br>
<a href="http://IPAddress" target="_blank">IPAddress</a>


In der Alexa App wird es als Thermostat erkannt - aber es kommt "Ein Problem ist aufgetreten". Im Alexa Log sehe ich nur, dass das Device erkannt wurde. Die Temperaturauswahl in der Alexa App ist ausgegraut. Braucht Alexa wohl auch die aktuelle Temperatur, damit man diese in der App ändern kann? Die kann mir die Klimaanlage ja nicht liefern. Wenn ja, würde ich da immer fest 23° hinterlegen. Geht das irgendwie?

PS: über den Slider kann ich die Ziel-Temp schon steuern. Das geht wie erwartet. Scheint also "nur noch" ein pures Alexa Problem zu sein...

Beta-User

Vorab: über das "tasmota" als Kenner/Gerätebezeichnung solltest du nochmal nachdenken, und zu altexa kann ich eigentlich nicht viel sagen, ich nutze das nicht (ggf. (selbst) verschieben?)...

Kann schon sein, dass alexa auch den aktuellen Wert braucht - warum auch immer, oder dass sie mit desired-temp nichts anfangen kann (glaube ich nicht, wäre aber eher im entsprechenden Forumbereich in Erfahrung zu bringen).

Um den "aktuellen" Wert zu bekommen, würde ich jetzt mal ein jsonMap anlegen, dann sollte da auch was "standardkonformes" stehen (ob sinnig, ist eine andere Frage):
attr MQTT2_Tasmota jsonMap IrReceived_IRHVAC_Temp:measured-temp


Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

tube

Auch mit jsonMap ist das Verhalten immernoch dasselbe: Die Alexa App, versucht offensichtlich kurz die Temperatur zu lesen und springt dann auf Fehler, weil sie es anscheinend nicht kann.

Beta-User

Vielleicht mit setreading oder dem Schieberegler vorab mal einen Initial-Wert setzen?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

tube

#6
Das bringt nix. Ich denke mal ich müsste so ein homebridgeMapping anlegen. Aber ich verstehe anhand der Doku nicht, was ich da in meinem Fall setzen müsste, um z.B. CurrentTemperature ststisch auf "24" oder IrReceived_IRHVAC_Temp zu setzen.

Setze ich das Mapping auf
CurrentTemperature=IrReceived_IRHVAC_Temp
verhält sich die App anders: Sie sagt "Warten auf FHEMMQQT2_DEVICE...".

PS: HA! Mit
CurrentTemperature=IrReceived_IRHVAC_Temp
TargetTemperature=IrReceived_IRHVAC_Temp

geht es bedingt: ich bekomme immer 16°C gesendet - egal was ich auswähle.
Und jetzt habe ich noch das nächste Problem: Ich kann die Anlage jetzt nicht mehr ausschalten, weil ein Thermostat offensichtlich nur die Temperatur einstellen kann und "An/Aus" gar nicht kennt. Hat jemand eine Idee? Muss ich da irgendwie ein zweites Gerät anlegen?

justme1968

werte für readings vorgeben die es nicht gibt geht mit ...,default=<wert> im mapping.

aber du kannst du auch einfach ein mal mit setreading ein reading mit passendem wert anlegen und dann im mapping verwenden.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968