alexa-fhem: amazon alexa smart home skill für fhem

Begonnen von justme1968, 05 November 2016, 23:21:32

Vorheriges Thema - Nächstes Thema

cyvr1

Hallo,

ich möchte meine Frage von einigen Seiten vorher noch mal hoch holen.

Ich kann mit den Abfragen "status rolläden/rollos" oder "status heizkörper" bei mir im Custon Skill die Zustände oder Einstellungen aller Rolläden und Heizungen ausgeben lassen. Frage ich jedoch nach "status fenster" bekomme ich nur die Mitteilung "Ich habe keine Geräte vom Typ fenster gefunden."

Ich habe bei den entsprechenden Kontakten als genericDeviceType mit "contact" und "window" experimentiert, jedoch ohne Ergebnis. Beim alexa-Device habe ich bei den alexaTypes als Alias entsprechend "window=fenster" bzw. "contact=fenster" eingetragen.

Ich habe auch in FHEM eine Gruppe mit allen Fenstern angelegt und diese "Fenster" genannt, ohne Erfolg.

Hat jemand einen Tipp, was ich noch anpassen muss, damit ich mir den Status aller Fenster ansagen lassen kann?

----------
Stephan Krätzschmar

justme1968

@cyvr1: der service name für kontakt sensoren (und damit für fenster und türen) ist ContactSensor. zu sehen an der konsolenausgabe <name> is ...

ein ContactSensor=fenster in alexaTypes sollte also funktionieren.

window ist für motor betriebene fenster und etwas komplett anderes.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

tobias.gj

Cubietruck mit cubien, HUE, HMLAN, Onkyo, Sonos
EMGZ,EMWZ,HM-CC-RT-DN,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-LC-Sw1PBU-FM,HM-RC-KEY3-B,HM-SEC- KEY,HM-SEC-RHS,HM-SEC-WDS, KS300,S300TH, fs20piri,fs20st, hms10

cyvr1

@justme1968

Super, das wars. Herzlichen Dank.
Funktioniert jetzt prima und ich weiß, woch ich für die anderen DeviceTypes nachsehen kann, wenn ich sie brauche.

----------
Stephan Krätzschmar

rizo

Jetzt muss ich auch noch was fragen:

wie kann ich meine VU über Alexa steuern?
wie kann ich meinen Onkyo über Alexa steuern?

VU ist per Enigma in Fhem eingebunden.
Onkyo ist per Onkyo_avr eingebunden.

Esjay

Zitat von: rizo am 11 Februar 2017, 19:56:54
Jetzt muss ich auch noch was fragen:

wie kann ich meine VU über Alexa steuern?
wie kann ich meinen Onkyo über Alexa steuern?

VU ist per Enigma in Fhem eingebunden.
Onkyo ist per Onkyo_avr eingebunden.
Fragen sind ok, aber du musst uns schon mitteilen, was du machen willst. Willst du umschalten, lauter ,leiser, oder oder oder

rizo

ups stimmt da waren die Finger schneller beim abschicken als das Gehirn gedacht hat.

Also VU möchte ich gerne umschalten
und Onkyo soll lauter leiser und lautlos können

Esjay

#1957
Zitat von: rizo am 11 Februar 2017, 20:03:30
ups stimmt da waren die Finger schneller beim abschicken als das Gehirn gedacht hat.

Also VU möchte ich gerne umschalten
und Onkyo soll lauter leiser und lautlos können

Das wirst du alles nur mit dem Custom Skill umsetzen können. Schau mal in Antwort #1306. Da wäre ein erster einfacher Ansatz. Etwas komplexer Antwort #1126

Volume sollte durch vergabe eines alexaName für den Vu / Onkyo automatisch in Smarthome Skill erkannt werden.

rizo

Ok Custom Skill ist schon eingerichtet. Danke Dir ich schau mir das mal in Ruhe an und versuche es umzusetzen.

Nebenbei noch ne Frage zu dem Custom Skill.

Z.B.

Alexaname=Heizung
Alexaroom=Wohnzimmer

Alexa sage Haus stelle die Heizung im Wohnzimmer auf 21 Grad.

das klappt nicht.

Schreibe ich

Alexaname=Heizung Wohnzimmer 
Alexaroom=Wohnzimmer

Alexa sag Haus stelle die Heizung im Wohnzimmer auf 21 Grad.

Dann klappt das und Alexa sagt Heizung Wohnzimmer auf 21 ...


Ich dachte ich könnte jeden Heizungsthermostaten den Alexanamen Heizung geben und verschiedene Alexarooms zuordnen um die dann Darüber zu schalten.

Ist das ein Denkfehler oder wie bringe ich Alexa dazu Geräte nach Räumen geschaltet werden und nicht nur nach Namen?

Esjay

Zitat von: rizo am 11 Februar 2017, 20:18:07
Ok Custom Skill ist schon eingerichtet. Danke Dir ich schau mir das mal in Ruhe an und versuche es umzusetzen.

Nebenbei noch ne Frage zu dem Custom Skill.

Z.B.

Alexaname=Heizung
Alexaroom=Wohnzimmer

Alexa sage Haus stelle die Heizung im Wohnzimmer auf 21 Grad.

das klappt nicht.

Schreibe ich

Alexaname=Heizung Wohnzimmer 
Alexaroom=Wohnzimmer

Alexa sag Haus stelle die Heizung im Wohnzimmer auf 21 Grad.

Dann klappt das und Alexa sagt Heizung Wohnzimmer auf 21 ...


Ich dachte ich könnte jeden Heizungsthermostaten den Alexanamen Heizung geben und verschiedene Alexarooms zuordnen um die dann Darüber zu schalten.

Ist das ein Denkfehler oder wie bringe ich Alexa dazu Geräte nach Räumen geschaltet werden und nicht nur nach Namen?

Ich nutze den Custom Skill nur für Intents, daher kann ich dazu nichts sagen.. Schau mal hier Antwort #1518. Das funktioniert bei mir soweit ganz gut

sbiermann

Das Docker Image ist auch jetzt mit der Version 0.2.0 auf Docker Hub verfügbar. Das Update ist hier https://forum.fhem.de/index.php/topic,60452.msg582749.html#msg582749 beschrieben.

rizo

Zitat von: Esjay am 27 Dezember 2016, 19:44:34
Hey Andre..
Riesen großes Dankeschön.Solltest du mal auf die Idee kommen, wie einige andere Entwickler eine PayPal Adresse für kleine Spenden einzurichten, werde ich mich erkenntlich Zeigen.

Ich werde hier gleich mal meinen Weg aufschreiben, damit auch andere verstehen, was genau hier gemacht werden muss.

So für alle.

Ihr legt den dummy an, wie Andre es beschrieben hat


define VolumeUpDown dummy
attr VolumeUpDown alexaName  Receiver
attr VolumeUpDown alexaRoom  Spielzimmer
attr VolumeUpDown genericDeviceType Speaker
attr VolumeUpDown homebridgeMapping LauterLeiser=harmony_39933799:state,cmd=command


dann ändert ihr harmony_39933799 in euer/euren Device/Avr um.

ACHTUNG, dieser Dummy erscheint nicht in der Alexa App, da er lediglich dazu dient, durch den Custom Skill geschaltet zu werden.

dann geht ihr in Fhem auf euer alexa Device, welches ihr mit define <Euer gewählter Name> alexa angelegt habt.

nun gebt ihr oben in der Kommandozeile folgendes ein:
folgendes ein:
attr <Euer gewählter Name> alexaMapping LauterLeiser=state,verb=mach,articles=den,values=lauter:VolumeUp;leiser:VolumeDown
Falls euer Receiver nicht auf VolumeUp oder VolumeDown hört,müsst ihr dies ebenfalls anpassen.

anschließend macht ihr ein

set <Euer gewählter Name> reload

nun ein
get <Euer gewählter Name> customSlotTypes

und tragt die Ergebnisse ( In dem Fall die Erweiterung des Device Receiver) unter Interaction Model in eurem Custom Skill unter Custom Slot Types nach dem im Wiki beschriebenen Schema ein.

dann führt ihr ein

get <Euer gewählter Name> interactionModel
aus, und erweitert in der Reihenfolge -->Custom Slot Types -->Sample Utterances--> Intent Schema den Custom Skill.

Anschließend könnt ihr sagen : Alexa sage <euer gewähltes Startwort für den Custom Skill> mach den Receiver lauter/leiser.
oder über Alexa starte  <euer gewähltes Startwort für den Custom Skill> --> und anschließend mach den Receiver lauter/leiser

So ich hoffe ich habe nichts vergessen!!

Grüße


Hab das so gemacht und wenn ich sage Alexa sage Haus mach Receiver lauter, dann sagt Alexa:

ich kann Receiver nicht auf lauter schalten lauter gemacht.

aber logisch Receiver ist nicht lauter geworden.

beim Onkyo Receiver habe ich zwar unter set volumeUp und Down, aber darauf reagiert er nicht. Kann Volume nur per set avr volume und dem Schieberegler verändern.

was trägt man in so einem Fall hier ein:

values=lauter:VolumeUp;leiser:VolumeDown

a4f

Hallo zusammen,

habe die aktuelle Version 0.2.0 und versuche die Heizung (Homematic-Thermostat) auszuschalten ("schalte die Heizung im Arbeitszimmer aus")
Habe folgendes konfiguriert

attr  AZ_Heizung_Clima alexaName Heizung
attr  AZ_Heizung_Clima alexaRoom Arbeitszimmer
attr  AZ_Heizung_Clima genericDeviceType thermostat
attr  AZ_Heizung_Clima homebridgeMapping On=desired-temp,cmdOn=desired-temp+on,cmdOff=desired-temp+off,valueOff=off

der richtige FHEM Befehl für das Ausschalten ist SET  AZ_Heizung_Clima desired-temp off

Alexa sagt "Ich kann das Gerät mit Namen heizung nicht schalten"

(stelle auf XX grad funktioniert)

Wenn alexa-fhem startet sehe ich im Log für das Gerät

[2/11/2017, 11:24:42 PM] [FHEM] homebridgeMapping: On=desired-temp,cmdOn=desired-temp+on,cmdOff=desired-temp+off,valueOff=off
[2/11/2017, 11:24:42 PM] [FHEM] AZ_Heizung_Clima is thermostat
[2/11/2017, 11:24:42 PM] [FHEM] AZ_Heizung_Clima has
[2/11/2017, 11:24:42 PM] [FHEM]   TargetTemperature [desired-temp]
[2/11/2017, 11:24:42 PM] [FHEM]   Custom Actuation [ValvePosition]
[2/11/2017, 11:24:42 PM] [FHEM]   CurrentTemperature [measured-temp]
[2/11/2017, 11:24:42 PM] [FHEM]   CurrentHeatingCoolingState [undefined]
  2017-02-11 23:24:42 caching: AZ_Heizung_Clima-desired-temp: off
  2017-02-11 23:24:42 caching: AZ_Heizung_Clima-ValvePosition: 0
[2/11/2017, 11:24:42 PM] [FHEM]     caching: Custom Actuation: 0 (as number; from '0')
  2017-02-11 23:24:42 caching: AZ_Heizung_Clima-measured-temp: 19.3

Also steht unter "AZ_Heizung_Clima has" keine Characteristic On
deshalb sagt mir Alexa "kann nicht schalten"

Ich habe im Thread gesehen dass eine ähnliche Frage gestellt wurde, konnte die Lösung leider nicht finden.
Bin für einen Hinweis dankbar, wie füge ich "On" richtig hinzu.


vbs

Ich krieg es irgendwie nicht, Abkürzungen wie "TV" oder "PC" zu benutzen.

Ich hab das hier in alexaMapping:
AvrInput=verb=stelle,property=eingang,valuePrefix=auf,values=PC:av1;TV:hdmi1;HTPC:hdmi2;konsole:hdmi3

Das Problem scheint zu sein, dass der Request wenn ich es ausspreche nicht als "TV" sondern als "t. v." ankommt.

Das hier ist der Log des eingehenden Requests in alexa-fhem:
"AvrInput_Value":{"name":"AvrInput_Value","value":"t. v."}

Komischerweise verstehe ich die Dokumentation (https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/alexa-skills-kit-interaction-model-reference#custom-slot-type-values) so, dass "t. v." zwar die "Spoken Form" ist, aber der Slot Value Output trotzdem hätte "TV" sein sollen?!

Kann da jemand etwas zu sagen?

Ma_Bo

In Bezug auf das hier:

Zitatedit 2017-02-10:
- fhem intents der art
  {meineSub()}=guten morgen und set|get|attr <device> xyz=gute nacht
  sind jetzt möglich. die rückgabe des jeweiligen kommandos wird als antwort für alexa verwendet
  d.h man kann damit beliebige texte aus fhem an alexa zurück geben.

habe ich es so gelöst (gibt bestimmt elegantere Wege, aber dieser funktioniert):

Im Alexa device steht unter fhemIntents
{alexa_guten_morgen()}=guten morgen

Dann natürlich ein
get Alexa intercationModel
und die Ergebnisse in Intent Schema und Sample Utterances im Custom Skill eintragen.

Nun habe ich mir eine eigene 99_Alexa_Sprache_Utils.pm angelegt, einfach auf EDIT FILES dann auf die myUtilsTemplate.pm klicken und folgenden Text einfügen:

Zitatpackage main;
use strict;
use warnings;
use POSIX;
sub
Alexa_Sprache_Utils_Initialize($$)
{
   my ($hash) = @_;
}
##### Start
sub alexa_guten_morgen()
{
fhem "set Alexa_Guten_Morgen_dummy on";
return "Guten Morgen, was kann ich für dich tun";
}
#####Ende
1;

Ich habe vor dem "return ....." noch einen Dummy von mir geschaltet, das kann man anpassen oder die ganze Zeile einfach löschen, dann kommt nur ein Sprachrückmeldung.

Jetzt neben SAVE AS den Namen 99_Alexa_Sprache_Utils.pm eingeben (Achtung, wollt ihr einen anderen Namen verwenden, muss dieser auch angepasst werden (siehe roter Text)) und auf SAVE AS klicken.

Die Alexa Bridge einmal neustarten und dann sollte mit

"Alexa sage FHEM guten morgen" eine Antwort mit "Guten Morgen, was kann ich für dich tun" folgen und der Dummy eingeschaltet werden.

Grüße Marcel
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.