[alexa-fhem] Mapping und Alexa-APP

Begonnen von mr_petz, 23 April 2020, 19:42:25

Vorheriges Thema - Nächstes Thema

mr_petz

Hi,
Wieso wird in der server.js hinter value das "HEAT" beim thermostat immer mitgegeben und nicht current?

  if( mapping = device.mappings.TargetHeatingCoolingState ) {
    var current = device.fhem.reading2homekit(mapping, device.fhem.cached(mapping.informId));
    if (current !== undefined)
      properties.push({
        "namespace": NAMESPACE_ThermostatController,
        "name": "thermostatMode",
        "value": "HEAT",
        "timeOfSample": new Date(Date.now()).toISOString(),
        "uncertaintyInMilliseconds": 500
      });
  }


Bei mr wird in der AlexaApp immer nur Wärme angezeigt.
Wenn ich aber auf current umschreibe, dann bekomme ich alle Modi´s bei Statuswechsel in der App angezeigt..
mfg

mr_petz

Hi,
da keiner geantwortet hat, schließe ich daraus dass es keinen besonderen Grund gibt.
Also könntet ihr es in der server.js ändern. Da brauche ich es nicht nach einem Update machen. Also

"value": "HEAT",
mit
"value": "current",

ersetzen. Danke.

mr_petz

#2
@ justme1968

Also wie gesagt, bei mir wird es nur mit "current" richtig übergeben. kannst du das ändern oder doch nicht???
Geht es bei allen anderen die die AlexaApp nutzen?
im Git ist alles beim alten.

edit:
https://github.com/justme-1968/alexa-fhem/blob/master/lib/server.js#L2796
https://github.com/justme-1968/alexa-fhem/blob/master/lib/server.js#L2801

mfg

mr_petz

Kein interesse? Keine Aussage? Niemand?

mr_petz


justme1968

an dieser stelle geht um den mode. nicht die aktuelle temperatur.

laut api (https://developer.amazon.com/en-US/docs/alexa/device-apis/alexa-property-schemas.html#thermostat-mode) ist hier nur AUTO, COOL, HEAT, ECO und OFF erlaubt.

weder current als zahl noch current als string. letzteres wäre auch noch völlig sinnlos und ich kann mir nicht vorstellen das damit irgendetwas besser geht.

von diesen erlaubten werten ist in deutschland normalerweise eigentlich nur HEAT und OFF sinnvoll.


ein paar zeilen weiter unten wird die aktuelle temperatur d.h. current als zahl gesetzt und ein paar zeilen weiter oben die gewünschte temperatur ebenfalls als zahl.


der von dir eingebauter fehler hat nur zufällig als nebeneffekt das wie von dir gewünscht der mode zu setzen ist.

ums das auf dem richtigen und vorgesehen weg zu tun muss man bei der discovery supportedModes korrekt zurück liefern. das geht in dem du im homebridgeMapping für die TargetHeatingCoolingState characteristic das cmds attribut richtig setzt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

mr_petz

#6
Ok, danke füt die Auskunft justme1968.

Kannst du mit bitte sagen was hier nicht stimmen könnte?:

attr MQTT2_ebusd homebridgeMapping CurrentTemperature=Status16_temp_value,nocache=1 \
TargetHeatingCoolingState=heatingState,values=HEAT:HEAT;;AUTO:AUTO;;OFF:OFF;;COOL:OFF;;ECO:ECO,cmds=OFF:Heizmodus+off;;HEAT:Heizmodus+on;;ECO:Heizmodus+eco;;AUTO:Heizmodus+auto;;COOL:Heizmodus+off,valid=OFF;;HEAT;;ECO;;AUTO;;COOL\
CurrentHeatingCoolingState=heatingState,values=HEAT:HEAT;;ECO:ECO;;AUTO:AUTO;;OFF:OFF;;COOL:OFF\
TargetTemperature=Status_2_value,minValue=0,maxValue=28,minStep=0.5,nocache=1


Wenn ich noch mehr zeigen soll, sag es bitte.
Danke.

mfg mr_petz

ps.: So kann ich es auch mit meinen Sonos steuern. Die Temperatur ist meine Aussentemperatur. Ich habe praktisch meine Heizung als Thermostat konfiguriert.

Zitat von: justme1968
an dieser stelle geht um den mode. nicht die aktuelle temperatur.

thermostat-mode ist hier nur AUTO, COOL, HEAT, ECO und OFF erlaubt.

von diesen erlaubten werten ist in deutschland normalerweise eigentlich nur HEAT und OFF sinnvoll.
Da brauche ich leider alles....

mr_petz

#7
Hi justme1968.
Sorry ich glaube hier ist was falsch verstanden oder erläutert worden.
Zitat von: justme1968 am 25 August 2020, 19:25:21
an dieser stelle geht um den mode. nicht die aktuelle temperatur.

....

weder current als zahl noch current als string. letzteres wäre auch noch völlig sinnlos und ich kann mir nicht vorstellen das damit irgendetwas besser geht.

Darum geht es mir doch und current als string geht.

Hier mal mein Auszug aus dem Alexa-Log.
Ich schalte per Sonos-Alexa die Heizung von Auto auf aus (aus geht aber nur über den Umweg Cool, da Alexa Aus nicht kennt).

[30/08/2020, 09:17:48] [FHEM]     caching: TargetTemperature: 27.56 (as string; from '27.56')
[30/08/2020, 09:17:48] [FHEM]     caching: TargetHeatingCoolingState: AUTO (as string; from 'AUTO')
[30/08/2020, 09:17:48] [FHEM]     caching: CurrentTemperature: 14.38 (as string; from '14.38')
[30/08/2020, 09:17:48] <<<< [ssh] {"context":{"properties":[{"namespace":"Alexa.ThermostatController","name":"targetSetpoint","value":{"value":27.56,"scale":"CELSIUS"},"timeOfSample":"2020-08-30T07:17:48.155Z","uncertaintyInMilliseconds":500},{"namespace":"Alexa.ThermostatController","name":"thermostatMode","value":"AUTO","timeOfSample":"2020-08-30T07:17:48.159Z","uncertaintyInMilliseconds":500},{"namespace":"Alexa.TemperatureSensor","name":"temperature","value":{"value":14.38,"scale":"CELSIUS"},"timeOfSample":"2020-08-30T07:17:48.163Z","uncertaintyInMilliseconds":500}]},"event":{"header":{"namespace":"Alexa","name":"StateReport","payloadVersion":"3","messageId":"d39ae3fe-1c7f-4f6c-ab68-0da555c8b103","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"xxx"},"endpointId":"xxx"},"payload":{}}}
  2020-08-30 09:17:49 caching: MQTT2_ebusd-heatingState: OFF
[30/08/2020, 09:17:49] [FHEM]     caching: CurrentHeatingCoolingState: OFF (as string; from 'OFF')
[30/08/2020, 09:17:49] [FHEM]     caching: TargetHeatingCoolingState: OFF (as string; from 'OFF')
  2020-08-30 09:17:49 caching: MQTT2_ebusd-Status_2_value: 27.69


TargetTemperature ist meine VorlaufTemp.
CurrentTemperature ist meine Außentemp.

Also nochmal. Mir geht es ja um Auto, HEAT, Eco, Aus, Cool!
Ich wollte dir nur sagen, das bei mir nur mit dem Eintrag current alles Angezeigt wird in der Alexa-App.
Hoffentlich ist es jetzt klarer was ich sagen wollte.
Ich will ja nur helfen.

mfg mr_petz

Beta-User

Hi justme1968,

wenn ich nochmal auf das hier zurückkommen darf:
Zitat von: justme1968 am 25 August 2020, 19:25:21
laut api (https://developer.amazon.com/en-US/docs/alexa/device-apis/alexa-property-schemas.html#thermostat-mode) ist hier nur AUTO, COOL, HEAT, ECO und OFF erlaubt.

[...]

ums das auf dem richtigen und vorgesehen weg zu tun muss man bei der discovery supportedModes korrekt zurück liefern. das geht in dem du im homebridgeMapping für die TargetHeatingCoolingState characteristic das cmds attribut richtig setzt.
Da gerade etwas Bewegung in dem ebus-attrTemplate-Thema drin ist, würde ich das gerne in V2 "richtig" aufgleisen und dann auch die Reading-Benennung usw. passend gestalten. Wäre nett, wenn du kurz hier reinschauen würdest und dann (gerne hier) kurz Rückeldung geben könntest, ob meine Schlussfolgerung soweit paßt, dass man den "allgemeinen Betriebsmodus" bei einem zentralen Heizungsgerät wohl sinnvollerweise "thermostatMode" nennen sollte...?

(Dasselbe Problem stellt sich bei ems-esp und vermutlich auch bei Mitsubishi-Klimaanlagen: https://forum.fhem.de/index.php/topic,114282.msg1099967.html#msg1099967 )
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

justme1968

die characteristic muss TargetHeatingCoolingState lauten, als reading wird mode automatisch erkannt.

die werte können im cmds element hinterlegt werden. also etwa so:
TargetHeatingCoolingState=<reading>,cmds=CUSTOM:<cmd1>+<value1>;HEAT:<cmd2>+<value2>;...

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Beta-User

Danke für die schnelle Rückmeldung, "mode" sollte als Readingname ja ohne weiteres möglich sein, dann machen wir das so...

Kurze Fragen noch:
- wenn das Reading "mode" heißt (und die Werte in beide Richtungen zu der Liste  AUTO, COOL, HEAT, ECO und OFF passen), benötigt man dann überhaupt noch ein mapping oder geht das - wie bei desired-temp - in dem Fall wieder automatisch?
- ist die API generell so zu lesen, dass da immer die "Geräteklasse"+"Reading mit großem Anfangsbuchstaben" steht (also thermostat für die property (?) + Mode für "mode"?!? (Dann kann ich mich da ggf. künftig ohne solche doofen Rückfragen versuchen zu orientieren, an willigen Testern fehlt es ja in der Regel nicht).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

mr_petz

Ahhhh.
"value": "HEAT",
ist jetzt
"value": current,
Du hast es abgeändert. Dankeschön.   :)
https://github.com/justme-1968/alexa-fhem/commit/12671b21650b549cfc797b9faf4c4361a206dd33#diff-1b48bb429de959672dadab9c87c215e19177dd70e3bd932d131ce74294c44cd5R2833
Habe es aber jetzt erst mitbekommen. Muss ich erst updaten und noch berichten...
Darf ich fragen warum?

LG mr_petz