[alexa-fhem] Hilfe einbindung Thermostat ( Modus:OFF) ( Klimaanlage )

Begonnen von Der_Tom, 28 Oktober 2023, 11:15:21

Vorheriges Thema - Nächstes Thema

Der_Tom

Hi zusammen,

leider ist für mich die korrekte einbindung von Devices noch immer ein Buch mit 7 Siegeln ( ich bekomme es auch nicht in den Griff ) , somit bin ich hier mal wieder auf Hilfe angewiesen.
Ich habe eine Klimaanlage, die per MQTT2 mit Fhem kommuniziert. Soweit alles gut und ich kann diese über Fhem steuern.

Jetzt würde ich dieses MQTT2 Device gerne auch über alexe steuern ( Typ: Thermostat ).
Alexa findet dieses Device auch und ich kann zumindest die Temperatur steuern.
folgende Probleme habe ich jetzt :

in der Alexaapp wird ja ein Feld "Modus" angeboten , derzeit nicht klickbar und dort wird "Benutzerdefiniert" angezeigt .
Was muss ich im Device ändern, anlegen damit ich zumindest die Grundmodi hier angeboten bekomme und ändern kann ( HEAT,COOL,OFF )

weiterhin kann ich zwar in der App die Temperatur ändern , nach kurzer Zeit springt die Anzeige aber immer wieder auf den unteren einstellbaren Wert ( 18 Grad ) .
Was muss ich ändern, anlegen um hier immer den aktuell eingestellten Sollwert angezeigt zu bekommen?

Danke im Voraus
Gruss Thomas


Internals:
   CID        air_conditioner_5377d9_08f9e05377d9
   DEF        air_conditioner_5377d9_08f9e05377d9
   FUUID      65393da5-f33f-caec-ec37-c109df324a78c1fc
   IODev      myBroker
   LASTInputDev myBroker
   MSGCNT     112
   NAME       MQTT2_air_conditioner_5377d9_08f9e05377d9
   NR         512
   STATE      mode
   TYPE       MQTT2_DEVICE
   eventCount 118
   myBroker_CONN myBroker_192.168.10.221_56819
   myBroker_MSGCNT 112
   myBroker_TIME 2023-10-28 11:14:26
   READINGS:
     2023-10-28 11:10:26   Aussentemperature 12
     2023-10-28 11:14:26   CurrentHeatingCoolingState COOL
     2023-10-28 10:24:06   IODev           myBroker
     2023-10-28 11:14:26   TemperatureDisplayUnits 26
     2023-10-28 10:22:20   ThermostatMode  HEAT
     2023-10-28 11:14:26   current-temp    15.0
     2023-10-28 11:14:26   desired-temp    18.0
     2023-10-28 11:14:26   fanmode         low
     2023-10-28 10:24:13   humidity        0
     2023-10-28 11:14:26   mode            cool
     2023-10-28 11:14:26   preset          none
     2023-10-28 10:24:13   spower          0
     2023-10-28 10:52:22   state           mode
     2023-10-28 10:24:14   status          online
     2023-10-28 11:14:26   swingmode       off
     2023-10-28 11:14:26   temperature     15.0
     2023-10-28 10:24:14   thermostatMode  AUTO
   hmccu:
Attributes:
   alexaName  Klima Schlafen
   autocreate 0
   comment    air-conditioner/climate/midea_climate/fan_mode/command
air-conditioner/climate/midea_climate/mode/command   
air-conditioner/climate/midea_climate/preset/command
air-conditioner/climate/midea_climate/swing_mode/command
air-conditioner/climate/midea_climate/target_temperature/command
   genericDeviceType thermostat
   readingList air_conditioner_5377d9_08f9e05377d9:air-conditioner/climate/midea_climate/mode/state:.* mode
air_conditioner_5377d9_08f9e05377d9:air-conditioner/climate/midea_climate/current_temperature/state:.* current-temp
air_conditioner_5377d9_08f9e05377d9:air-conditioner/climate/midea_climate/target_temperature/state:.* desired-temp
air_conditioner_5377d9_08f9e05377d9:air-conditioner/climate/midea_climate/preset/state:.* preset
air_conditioner_5377d9_08f9e05377d9:air-conditioner/climate/midea_climate/fan_mode/state:.* fanmode
air_conditioner_5377d9_08f9e05377d9:air-conditioner/climate/midea_climate/swing_mode/state:.* swingmode
air_conditioner_5377d9_08f9e05377d9:air-conditioner/status:.* status
air_conditioner_5377d9_08f9e05377d9:air-conditioner/sensor/temp/state:.* Aussentemperature
air_conditioner_5377d9_08f9e05377d9:air-conditioner/sensor/power/state:.* spower
air_conditioner_5377d9_08f9e05377d9:air-conditioner/sensor/humidity/state:.* humidity
   room       MQTT2_DEVICE
   setList    Off:noArg air-conditioner/climate/midea_climate/mode/command OFF
mode:COOL,HEAT,DRY,FAN_ONLY,HEAT_COOL air-conditioner/climate/midea_climate/mode/command
desired-temp:selectnumbers,18,0.5,30,1,lin air-conditioner/climate/midea_climate/target_temperature/command

   userReadings temperature  { ReadingsVal("MQTT2_air_conditioner_5377d9_08f9e05377d9","current-temp",0) },
CurrentHeatingCoolingState { return "COOL";},
TemperatureDisplayUnits { return "26";}
   webCmd     mode:desired-temp:Off

TomLee

#1
Zitatweiterhin kann ich zwar in der App die Temperatur ändern ...

Weiß net was ich übersehe aber in dem setlist-Eintrag
desired-temp:selectnumbers,18,0.5,30,1,lin air-conditioner/climate/midea_climate/target_temperature/command übergibst doch gar keinen Wert aus dem Widget, wie kann es dann sein das du die Temperatur ändern kannst ? Da fehlt doch hinten ein $EVTPART1 ?


ZitatWas muss ich ändern, anlegen um hier immer den aktuell eingestellten Sollwert angezeigt zu bekommen?

Klappts wenn du statt selectnumbers, slider verwendest (alexa-fhem neu starten !)?

desired-temp:slider,18,0.5,30,1 air-conditioner/climate/midea_climate/target_temperature/command $EVTPART1
Wenn du das current-temp-Reading nicht brauchst, kannst das auch gleich umbennen mit jsonMap:

attr MQTT2_air_conditioner_5377d9_08f9e05377d9 current-temp:temperatureersetzt das userReadings:
userReadings temperature  { ReadingsVal("MQTT2_air_conditioner_5377d9_08f9e05377d9","current-temp",0) }

Der_Tom

danke @TomLee

ich habe DIESES problem jetzt soweit in den Griff bekommen und glaube auch nun einigermassen mit dem Mapping klar zu kommen.

Jetzt habe ich aber folgendes neues Problem :

es handelt sich un ein Device, welches als Thermostat in alexa eingebunden werden soll.
jetzt habe ich so lange rumprobiert , bis ich ein Device soweit hatte , das ich die Modi über alexa umschalten kann . Es gehen AUTO und OFF ( hatte es zum testen auf diese beiden modi beschränkt ).


Eigenartigerweise habe ich es nur bei EINEM device hinbekommen , das auch "OFF" funktioniert.

Bei allen weiteren versuchen bekomme ich auf die Anfrage "schalte DEVICE off" immer als antwort "Device unterstützt das nicht."

Selbst wenn ich das Device ( in welchem es geht ) per "copy device device1" kopiere , nur den Alexaname ändere geht es in der Kopie nicht mehr .

Die Devices sind identisch ( da es sich um MSwitch handelt kann ich hier die config nicht posten , sie entsprechen aber im Grunde in der Grundconfig einem Dummys)

Beide devices werden beim Start von alexa Fhem gleich behandelt:

[31/10/2023, 18:05:01] [FHEM] HeizungAlexaSpielzimmer is thermostat
[31/10/2023, 18:05:01] [FHEM] HeizungAlexaSpielzimmer has
[31/10/2023, 18:05:01] [FHEM]   TargetTemperature [desired-temp]
[31/10/2023, 18:05:01] [FHEM]   CurrentTemperature [temperature]
[31/10/2023, 18:05:01] [FHEM]   CurrentHeatingCoolingState [undefined]
[31/10/2023, 18:05:01] [FHEM]   TargetHeatingCoolingState [heatingState]
[31/10/2023, 18:05:01] [FHEM] HeizungAlexaSpielzimmer will not send proactive events
[31/10/2023, 18:05:01] [FHEM] HeizungAlexaSpielzimmer uses ID: 64f89d75-f33f-caec-d756-8537361c90491fff
2023-10-31 18:05:01 caching: HeizungAlexaSpielzimmer-desired-temp: 10
2023-10-31 18:05:01 caching: HeizungAlexaSpielzimmer-temperature: 19.09768
2023-10-31 18:05:01 caching: HeizungAlexaSpielzimmer-heatingState: OFF

[31/10/2023, 18:05:01] [FHEM] klima1 is thermostat
[31/10/2023, 18:05:01] [FHEM] klima1 has
[31/10/2023, 18:05:01] [FHEM]   TargetTemperature [desired-temp]
[31/10/2023, 18:05:01] [FHEM]   CurrentTemperature [temperature]
[31/10/2023, 18:05:01] [FHEM]   CurrentHeatingCoolingState [undefined]
[31/10/2023, 18:05:01] [FHEM]   TargetHeatingCoolingState [heatingState]
[31/10/2023, 18:05:01] [FHEM] klima1 will not send proactive events
[31/10/2023, 18:05:01] [FHEM] klima1 uses ID: 65413355-f33f-caec-a00e-af63c87e85ddce4d
2023-10-31 18:05:01 caching: klima1-desired-temp: 10
2023-10-31 18:05:01 caching: klima1-temperature: 19.09768
2023-10-31 18:05:01 caching: klima1-heatingState: OFF


Bei der Anfrage "schalte device aus" erhalte ich aber verschiedene Logeinträge:

[31/10/2023, 18:09:08] >>>> [ssh] {"directive":{"header":{"messageId":"2c6dd894-7ef9-4add-b8ef-969b32255c58","namespace":"Alexa.ThermostatController","name":"SetThermostatMode","payloadVersion":"3","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"9452B60F-6987694B7D265CCD"},"endpointId":"64f89d75-f33f-caec-d756-8537361c90491fff","cookie":{"device":"HeizungAlexaSpielzimmer","fuuid":"64f89d75-f33f-caec-d756-8537361c90491fff"}},"payload":{"thermostatMode":{"value":"OFF"}}}}
[31/10/2023, 18:09:08] [FHEM] HeizungAlexaSpielzimmer: executing set cmd for TargetHeatingCoolingState with value OFF
[31/10/2023, 18:09:08] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20HeizungAlexaSpielzimmer%20heatingState%20OFF&XHR=1
[31/10/2023, 18:09:08] <<<< [ssh] {"context":{"properties":[{"namespace":"Alexa.ThermostatController","name":"thermostatMode","value":{"value":"OFF"},"timeOfSample":"2023-10-31T17:09:08.487Z","uncertaintyInMilliseconds":500}]},"event":{"header":{"namespace":"Alexa","name":"Response","payloadVersion":"3","messageId":"57c4fff0-4193-46e5-a8be-dac59031e24a","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"9452B60F-6987694B7D265CCD"},"endpointId":"64f89d75-f33f-caec-d756-8537361c90491fff"},"payload":{}}}
 
[31/10/2023, 18:16:40] >>>> [ssh] {"directive":{"header":{"namespace":"Alexa","name":"ReportState","payloadVersion":"3","messageId":"84bff196-fbaf-4e76-a33d-d534048eeefb","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"9452B60F-6987694B7D265CCD"},"endpointId":"65413355-f33f-caec-a00e-af63c87e85ddce4d","cookie":{"fuuid":"65413355-f33f-caec-a00e-af63c87e85ddce4d","device":"klima1"}},"payload":{}}}

[31/10/2023, 18:16:40] [FHEM]     caching: TargetTemperature: 10 (as number; from '10')
[31/10/2023, 18:16:40] [FHEM]     caching: TargetHeatingCoolingState: AUTO (as string; from 'AUTO')
[31/10/2023, 18:16:40] [FHEM]     caching: CurrentTemperature: 19.09768 (as number; from '19.09768')
[31/10/2023, 18:16:40] <<<< [ssh] {"context":{"properties":[{"namespace":"Alexa.ThermostatController","name":"targetSetpoint","value":{"value":10,"scale":"CELSIUS"},"timeOfSample":"2023-10-31T17:16:40.470Z","uncertaintyInMilliseconds":500},{"namespace":"Alexa.ThermostatController","name":"thermostatMode","value":"AUTO","timeOfSample":"2023-10-31T17:16:40.470Z","uncertaintyInMilliseconds":500},{"namespace":"Alexa.TemperatureSensor","name":"temperature","value":{"value":19.09768,"scale":"CELSIUS"},"timeOfSample":"2023-10-31T17:16:40.470Z","uncertaintyInMilliseconds":500}]},"event":{"header":{"namespace":"Alexa","name":"StateReport","payloadVersion":"3","messageId":"bcf21473-1a61-459e-bfd2-43dc3e3fc688","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"9452B60F-6987694B7D265CCD"},"endpointId":"65413355-f33f-caec-a00e-af63c87e85ddce4d"},"payload":{}}}


wird daraus eventuell jemand schlau , der mir auf die Sprünge helfen kann , warum es in dem einen Device geht , in dem anderen nicht ? Wie gesagt sind die devices identisch ?!

setlist -> gleich
readinglist -> gleich
homebridgemapping -> gleich

TargetTemperature=desired-temp::desired-temp,minValue=1,maxValue=30,minStep=0.5
TargetHeatingCoolingState=heatingState,values=OFF:OFF;AUTO:AUTO,cmds=AUTO:heatingState+AUTO;OFF:heatingState+OFF


.... ich bin mit meinem Latein am Ende . Ich bringe auch kein Device mehr zu Stande ( auch keinen Dummy ), welches sich in den Modi per Alexa auf "off" stellen lässt .

gruss Thomas


TomLee

Ich bin auch etwas weitergekommen, obs hilft erstmal keine Ahnung, heute beschäftige ich mich nicht mehr damit.
Deinen letzten Beitrag hab ich nur kurz überflogen, mich würde noch interessieren wie die ersten Ausgaben zu HeizungAlexaSpielzimmer im alexa-Log aussehen wenn du eine Suche nach neuen Geräten ausführst.

Hilft es jetzt schon (oder macht das jetzt schon dein homebridgemapping ?) wenn du statt desired-temp das Reading und den setter desiredTemperature benennst?

TomLee

Zitatwird daraus eventuell jemand schlau , der mir auf die Sprünge helfen kann , warum es in dem einen Device geht , in dem anderen nicht ? Wie gesagt sind die devices identisch ?!
Bei dem einen device hattest du einen restart von alexa-fhem gemacht, beim anderen nicht ?

Der_Tom

Es sind beide Devices gleichzeitig vorhanden... einmal alexafhem restart.

Gruss Thomas

87insane

Ich hänge mich hier mal mit an...

Ich bekomme bei TargetHeatingCoolingState eine mittel schwere Kriese!
Aktuell steuere ich meine komplette Heizung über FHEM. Geht auch soweit alles super. ABER der Parameter OFF existiert bei mir nicht. Egal was ich einstelle. In den Beispielen im Wiki ist immer wieder z.B. sowas:
TargetHeatingCoolingState=...,cmds=OFF:desired-temp+off;HEAT:controlMode+day;COOL:controlMode+night;AUTO:controlMode+auto
Aber egal was ich einstelle.. Bei einem Thermostat wird mir immer geantwortet mit "Test Heizung unterstützt das nicht".

Alles andere funktioniert.. Würde hier auch gerne um Info bitten. Kann @justme1968 ggf. hier weiter helfen? Anbei ein Beispiel von meinem Mapping:
CurrentRelativeHumidity=t_humidity
CurrentTemperature=t_temperature
TargetTemperature=desired-temp::desired-temp,minValue=0,maxValue=25,minStep=0.5
CurrentHeatingCoolingState=heatingState,values=HEAT:HEAT;COOL:COOL;OFF:OFF;AUTO:AUTO
TargetHeatingCoolingState=heatingState,values=OFF:OFF;HEAT:HEAT;COOL:COOL;AUTO:AUTO,cmds=OFF:voiceCommand+off;HEAT:voiceCommand+heat;COOL:voiceCommand+cool;AUTO:voiceCommand+auto

Mir geht es hier ausschließlich um den OFF State von TargetHeatingCoolingState.
COOL, HEAT usw. funktionierten.

Gruß,
87Insane

TomLee

Evtl. ist off gar nicht vorgesehen ? Ich kenn mich damit nicht aus und brauch das nicht.

Bei einer neuen Geräte Suche steht bei mir zu TargetHeatingCoolingState:

ZitatTargetHeatingCoolingState: {
    reading: 'mode',
    values: [ '/^auto/:AUTO', '/^eco/:ECO', '/.*/:HEAT' ],
    cmds: [
      'CUSTOM:desiredTemperature boost',
      'HEAT:desiredTemperature comfort',
      'ECO:desiredTemperature eco',
      'AUTO:desiredTemperature auto'
    ],
    device: 'MQTT2_ebusd_Warmwasser',
    informId: 'MQTT2_ebusd_Warmwasser-mode',
    characteristic_type: 'TargetHeatingCoolingState',
    log: [Function: bound ] {
      debug: [Function (anonymous)],
      info: [Function (anonymous)],
      warn: [Function (anonymous)],
      error: [Function (anonymous)],
      log: [Function (anonymous)],
      prefix: 'FHEM'
    },
    value2homekit: {},
    value2homekit_re: [ [Object], [Object], [Object] ],
    homekit2cmd: {
      CUSTOM: 'desiredTemperature boost',
      HEAT: 'desiredTemperature comfort',      ECO: 'desiredTemperature eco',
      AUTO: 'desiredTemperature auto'
    }...

Ich verstehe es bisher so das nur boost,comfort,eco und auto möglich sind.
Eigentlich nur auto und eco, weil alles andere wird als HEAT erkannt.

Ich weiß es nicht, ich frage.

87insane

#8
Zusatz-Info:

Nehme ich das Gerät von @Der_Tom und füge es ohne Namensänderung in meinem FHEM ein, kann ich ausschalten.
Wenn ich alleine den AlexaNamen ändere, geht es wieder nicht.

Original Name: Heizung
Umbenannt: Test Heizung 2

Was bei mir geht ist: COOL, HEAT, AUTO
CUSTOM (Benutzerdefiniert) wird angezeigt, wenn Alexa den Wert, der im entsprechenden Reading steht, nicht kennt.
ECO habe ich nicht getestet

Laut Alexa Doku muss aber OFF auch möglich sein.

TomLee

Wenn du einmal ausschalten kannst, bei welchem Reading gab es das Event, ?
Wenn dieses Reading einmal einen anderen Wert hat, kannst du dann wieder ausschalten oder gehts dann immer noch nicht ?

Könnt Ihr nicht einfach mal ein List anhängen, ich mag mich nicht noch mit homebridgemapping beschäftigen, um nachzuvollziehen wie eure Definition+Readings genau ausschauen könnten.

87insane

#10
Die Frage verstehe ich nicht. Das Event geht dahin, womit man es auch in den Mappings lenkt. Wenn ich mein Mapping als Beispiel nehme ist es: heatingState (gleiches auch bei Der_Tom).

Man kann so oft ausschalten wie man will aber nur bei der Benamung "Heizung" und nicht bei irgendeiner anderen. Ein List würde hier nicht viel helfen, da wir nur über die Mappings reden. Dazu ist es im übrigen auch egal ob es ein Dummy oder sonst was ist.

Ach ja.. Ich glaub @TomLee: Du nutzt Homekit. Wir nutzen hier Amazon Alexa. Bei Google ist das ganze auch wieder leicht anders.

Der_Tom

fazit:

ganz offensichtlich hat das ATTR alexeName einen Einfluss auf die Funktion .

wenn dieses ATTR "heizung" heisst , dann kann ich das thermostat über alexa in den Modus "off/aus" setzen.

ist alexaname ein anderer funktioniert das nicht ( alles andere geht wie gehabt )

Das sollte meines erachtens nicht sein , das sich aus diesem Unterschied ein Funktionsunterschied ergiebt .

Gruss Thomas

TomLee

ZitatAch ja.. Ich glaub @TomLee: Du nutzt Homekit. Wir nutzen hier Amazon Alexa. Bei Google ist das ganze auch wieder leicht anders.

Nee, homebridge ist seit Jahren deinstalliert, hab ich aber vor mal wieder zu nutzen. Ich nutz auch Alexa, rein aus Interesse hab ich mich aber wieder mal mit beschäftigt, brauchen tu ich den Thermostat bis jetzt nicht, nur um endlich mal rauszufinden wie denn die setter und Readings genau aussehen müssten, ohne homebridgemapping zu verwenden (wenn das überhaupt möglich ist !), weil das hat ja wohl bisher niemand hinbekommen.

Der_Tom

#13
Zitat von: Der_Tom am 01 November 2023, 17:57:10fazit:

ganz offensichtlich hat das ATTR alexeName einen Einfluss auf die Funktion .

wenn dieses ATTR "heizung" heisst , dann kann ich das thermostat über alexa in den Modus "off/aus" setzen.

ist alexaname ein anderer funktioniert das nicht ( alles andere geht wie gehabt )

Das sollte meines erachtens nicht sein , das sich aus diesem Unterschied ein Funktionsunterschied ergiebt .

Gruss Thomas


.... das ist sehr seltsam , es reicht auch , wenn ich im "alias" Heizung angebe . Es scheint fast so , als wäre einfach nur die Ansprache ursächlich für die Funktionsänderung . Es geht immer dann , wenn ich das Gerät via alexa mit Heizung anspreche - sonst nicht ( Kein Zusatz wie z.B " Heizung 1" etc ).

Das hat letztendlich leider zur Folge, das ich in Fhem nur 1 Device anlegen kann, welches den vollen, benötigten Funktionsumfang in Alexa hat 

Gruss Thomas

87insane

#14
Anbei mal ein List eines Dummys bei dem es funktioniert mit OFF.

defmod du_heizung_test dummy
attr du_heizung_test alexaName Heizung
attr du_heizung_test genericDeviceType thermostat
attr du_heizung_test homebridgeMapping TargetTemperature=desired-temp::desired-temp,minValue=0,maxValue=25,minStep=0.5\
CurrentHeatingCoolingState=heatingState,values=off:OFF;;heat:HEAT;;cool:COOL;;auto:AUTO\
TargetHeatingCoolingState=heatingState,values=off:OFF;;heat:HEAT;;cool:COOL;;auto:AUTO,cmds=OFF:OFF;;HEAT:desired-temp+25.0;;COOL:desired-temp+15.0;;AUTO:voiceCommand+auto
attr du_heizung_test readingList desired-temp heatingState
attr du_heizung_test setList ON:noArg OFF:noArg desired-temp:off,14.0,15.0,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,22.0,23.0,24.0,25.0,28.0
attr du_heizung_test userReadings heatingState:.* {\
ReadingsVal("$name","desired-temp","-") eq "off" \
? "off"\
: ReadingsVal("$name","desired-temp","-") > "20"\
? "heat"\
: "cool"\
}

Eigentlich sind die HomebridgeMappings relativ einfach, wenn man es einmal verstanden hat. ABER Bei diesem Gerät brauche ich nur den Alexa Namen anpassen und es geht schon nicht mehr. Er muss Heizung sein, dann geht auch OFF.

Es muss hier wieder irgendeine FHEM Sonderbehandlung sein, denke ich... Wer kann hier helfen?

Ich weiß an der Stelle nicht wie ich weiter testen kann....
Es geht mir auch nur um OFF. Daher ist das Device nicht komplett vollständig. Wollte es nur irgendwie verdeutlichen....

EDIT: Es ist auch egal ob es nur ein Wort im Alexa Namen ist oder ob Heizung an erster, zweiter.... Stelle steht. Es geht NUR wenn der Name einfach "Heizung" ist.
Auch nicht wichtig ist, ob ON/OFF in der setList steht.