Alexa Fhem Temperaturabfrage

Begonnen von mrbreil, 02 September 2017, 13:11:11

Vorheriges Thema - Nächstes Thema

mrbreil

Ich möchte mir per Alexa Custom Skill die Zimmertemperatur ausgeben lassen. Aber nur für den Raum in dem der Echo steht. Das Alexaroom Attribut ist für jeden Echo gesetzt.

sub
alexa_temperatur(){

$text = ReadingsVal("Alexa","echoRoom","");
fhem("set teleBot message $text");

if ($text eq "wohnzimmer"){
$text = "Die Temperatur im Wohnzimmer beträgt ".round(ReadingsVal("MAX_136deb","temperature","99"),0). " Grad Celsius.";

}
if ($text eq "schlafzimmer"){
$text = "Die Temperatur im Schlafzimmer beträgt ".round(ReadingsVal("MAX_136586","temperature","99"),0). " Grad Celsius.";

}
if ($text eq "unknown"){
$text = "Die Außentemperatur beträgt ".round(ReadingsVal("Wetter","temperature","99"),0). " Grad Celsius.";

}

return $text


}


Leider wird mir immer die Außentemperatur ausgegeben. Ich verstehe nur leider nicht warum. Kann mal bitte jemand drüber schauen und mir das Brett vorm Kopf entfernen.

Esjay

Zitat von: mrbreil am 02 September 2017, 13:11:11
Ich möchte mir per Alexa Custom Skill die Zimmertemperatur ausgeben lassen. Aber nur für den Raum in dem der Echo steht. Das Alexaroom Attribut ist für jeden Echo gesetzt.

sub
alexa_temperatur(){

$text = ReadingsVal("Alexa","echoRoom","");
fhem("set teleBot message $text");

if ($text eq "wohnzimmer"){
$text = "Die Temperatur im Wohnzimmer beträgt ".round(ReadingsVal("MAX_136deb","temperature","99"),0). " Grad Celsius.";

}
if ($text eq "schlafzimmer"){
$text = "Die Temperatur im Schlafzimmer beträgt ".round(ReadingsVal("MAX_136586","temperature","99"),0). " Grad Celsius.";

}
if ($text eq "unknown"){
$text = "Die Außentemperatur beträgt ".round(ReadingsVal("Wetter","temperature","99"),0). " Grad Celsius.";

}

return $text


}


Leider wird mir immer die Außentemperatur ausgegeben. Ich verstehe nur leider nicht warum. Kann mal bitte jemand drüber schauen und mir das Brett vorm Kopf entfernen.

Du kanmst dir mit der Version 0.3.5 die Temperaturen auch per Smarthome Skill ansagen lassen. genericDeviceType auf thermometer und alexaName vergeben.
Grüße

mrbreil

Vielen Dank, werde es ausprobieren. Aber selbst wenn es klappt, ich möchte gerne noch andere Abfragen für jeden Raum unterschiedlich gestalten. Ich verstehe nur nicht warum die Bedingung nicht korrekt funktioniert.

cs-online

hmmm...

ZitatDas Alexaroom Attribut ist für jeden Echo gesetzt.


aber: es wird in der Funktion das Attribut "echoRoom" abgefragt, nicht der Alexaroom....
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

mrbreil

Sorry, du hast recht! Ich meine das Attribut "echoRoom" ist gesetzt.
Also leider noch keine Lösung, aber du bist ein aufmerksamer Leser  :).

cs-online

bei mir ist das auch immer auf "unknown", schau mal, ob im Alexa-Device während des Ausführens der Funktion der EchoRoom wechselt. An der Funktion liegts nämlich nicht, wenn das konstant auf "unknown" bleibt. Einen Reload und ggf. stop und start des Alexa-Dienstes seit der Erstellung der Funktion hast Du durchgeführt ?
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

mrbreil

Danke für deine Mühe.

Das Reading "echoRoom" wechselt und steht nie auf "unknown". Es wurde ja alle "echoId" vergeben, diente nur zur sicherheit.

cs-online

dachte, weil Du schreibst, es wird immer die Aussentemperatur ausgegeben, und das wäre dann ja dieser Part:

if ($text eq "unknown"){
$text = "Die Außentemperatur beträgt ".round(ReadingsVal("Wetter","temperature","99"),0). " Grad Celsius.";


und da läuft der ja nur rein, wenn $text auch wirklich "unknown" drin hat.

Ist der Telebot ein Dummy, wo man sehen kann, was in $text wirklich rein kommt ? Falls ja, was steht denn da dann jeweils drin ? Falls nein, würde ich ein Dummy anlegen und dann da $text reinschreiben lassen.

Ich würde auch mal probieren bei der Variablenanmeldung ein "my" vor das "$text = ReadingsVal("Alexa","echoRoom","");" zu schreiben.
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

MadMax-FHEM

Zitat von: mrbreil am 14 September 2017, 19:25:10
Danke für deine Mühe.

Das Reading "echoRoom" wechselt und steht nie auf "unknown". Es wurde ja alle "echoId" vergeben, diente nur zur sicherheit.

Hi,

ich hatte jetzt auch mal wieder Zeit ein wenig mit Alexa rumzuspielen...

Ich habe Version 0.3.4 laufen.
Den Smart Home Skill aktiviert (nutze ich zu 80%)
Und 2 Custom Skills (da spiele ich grad noch rum)...

Wo hast du die deviceID her?

Es gibt zwar das Reading echoID aber die verändert sich nicht wenn ich den Echo/Dot wechsle es wechselt, wenn ich zwischen meinen 2 Custom Skills wechsle.
Nehme daher an, dass es anzeigt welcher Custom Skill verwendet/angesprochen wurde...

Vielen Dank, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

mrbreil

Auf die Idee das die ID bei den beiden Skills unterschiedlich sind bin ich gar nicht gekommen, warum auch. Man denk ja die id ist fest. Kann das leider im Moment nicht testen da ich 500 km von meinen echos entfernt bin, so gut sind die mikros Dan auch nicht [emoji23]. Werde es nächste Woche ausprobieren.


Gesendet von iPad mit Tapatalk

Hero_Otto

Zitat von: Esjay am 02 September 2017, 13:14:42
Du kanmst dir mit der Version 0.3.5 die Temperaturen auch per Smarthome Skill ansagen lassen. genericDeviceType auf thermometer und alexaName vergeben.
Grüße
Hallo Esjay, ich versuche dies gerade ohne Custom Skill unter alexa-fhem 0.3.4.

Dennoch erhalte ich die folgende Fehlermeldung:
**** Received Directive: {"header":{"namespace":"Alexa.ConnectedHome.Query","name":"GetTemperatureReadingRequest","payloadVersion":"2","messageId":"ffba5a49-e394-4446-af8b-1f78ca5e1cf6"},"payload":{"accessToken":"Atza|IwEBIKSo-tKjNDUHb-tLSXFyXV5H2NFvOjPj11zJIXX9N8SKB52g-7ycY7-UnIJNDRa1HzBdVrYdRWhHpnM8RyqZLc1YAzZ-SMkRH57JNGGKVZq4AiLEA5sTczxAfBs9YyZZ9zvN0HMZ15scSW9e42LYULVwzgg4uqJWV7OO804RcGxPkl-nftNs3uhga-Ev3pgWr_qyRP1B5jApwqISUfuJk288ceChySJTAqrYpFie9ADMou2zH_7vTU7mTo7yNkSsl-K7Zv_pgBY-bwFUC8XhUfZ7cXrbwzP2Qp-FguxOgUhLZIx1NzqjCqDVxBiX_JeqhFUM_wTlfDYNUsZcrdtjcZjV6Gx5POz4cLvL9SpJN_yKT1GwPdTy5ZEAmXkcdWnTPtEqAp86TO74cZhRtH3lcHUKs0XgMUS6pDCSX49Thhr9G_0cNaritTr8jUjLkS-rYNtU_i1d376v_3WAZcK7_Vn4m1NoTR5PpxNFbATBO2os6lenvH9RZD6-hNJwpGFNNUA","appliance":{"applianceId":"HM_Temperatursensor_Schlafzimmer","additionalApplianceDetails":{"device":"HM_Temperatursensor_Schlafzimmer"}}}}
**** Error: "Unsupported operationGetTemperatureReadingRequest"

Mein Device:
    "Readings": {
      "1.HUMIDITY": { "Value":"69", "Time":"2017-11-05 17:41:55" },
      "1.TEMPERATURE": { "Value":"15.800000", "Time":"2017-11-05 17:41:55" },
      "hmstate": { "Value":"Initialized", "Time":"2017-11-05 17:41:55" },
      "state": { "Value":"Initialized", "Time":"2017-11-05 10:29:18" }
    },
    "Attributes": {
      "IODev": "d_ccu",
      "alexaName": "Schlafzimmer",
      "alexaRoom": "Schlafzimmer",
      "genericDeviceType": "thermometer",
      "homebridgeMapping": "CurrentTemperature=1.TEMPERATURE",
      "room": "60_Schlafzimmer,93_Alexa,94_Homematic",
      "stateFormat": "Temperatur: 1.TEMPERATURE°C Luftfeuchte: 1.HUMIDITY%"
    }

Esjay

Bitte nutz Code Tags..Das # Symbol über der Texteingabemaske. Du brauchst ein reading temperature..Nicht TEMPERATURE!!!

Gruß

Hero_Otto

Hallo Esjay.

Das verstehe ich leider nicht. Mein Device hat folgende Readings:
"Readings": {
      "0.AES_KEY": { "Value":"2", "Time":"2017-11-05 20:21:45" },
      "0.CONFIG_PENDING": { "Value":"false", "Time":"2017-11-05 20:21:45" },
      "0.LOWBAT": { "Value":"false", "Time":"2017-11-05 20:21:45" },
      "0.RSSI_DEVICE": { "Value":"1", "Time":"2017-11-05 20:21:45" },
      "0.RSSI_PEER": { "Value":"201", "Time":"2017-11-05 20:21:45" },
      "0.STICKY_UNREACH": { "Value":"false", "Time":"2017-11-05 20:21:45" },
      "0.UNREACH": { "Value":"false", "Time":"2017-11-05 20:21:45" },
      "1.HUMIDITY": { "Value":"60", "Time":"2017-11-07 14:38:10" },
      "1.TEMPERATURE": { "Value":"17.200000", "Time":"2017-11-07 14:38:10" },
      "hmstate": { "Value":"Initialized", "Time":"2017-11-07 14:38:10" },
      "state": { "Value":"Initialized", "Time":"2017-11-05 20:21:18" }
    },


Wie kann ich da einen anderen verwenden?

Ich habe natürlich folgendes probiert:
"homebridgeMapping": "CurrentTemperature=temperature"
Doch der Fehler bleibt der gleiche.

Gruß
Otto


TomLee

#13
Möglicherweise hilft ein:

CurrentTemperature=1.TEMPERATURE

Stelle selbst gerade fest, das Alexa die Temperaturabfrage, mit dem 'Smart Home Skill' (0.3.5) nun endlich bei mir korrekt ansagt. Nicht als Datum.

Hero_Otto

Hi TomLee.

Genau das war meine vorherige Einstellung (siehe weiter oben) mit der es ebenfalls nicht funktioniert hat.

Das merkwürdige ist, dass Alexa die Temperatur kennt, denn ich sehe im LOG:
2017-11-07 20:25:45 caching: HM_Temperatursensor_Schlafzimmer-1.TEMPERATURE: 16.300000
Aber sie sagt "Schlafzimmer reagiert gerade nicht" und erzeugt diese Fehlermeldung:
**** Error: "Unsupported operationGetTemperatureReadingRequest"

Gruß
Otto