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

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

Vorheriges Thema - Nächstes Thema

Esjay

Zitat von: MadMax-FHEM am 05 Januar 2017, 19:22:15
Ist zwar denke ich hier etwas off-topic aber trotzdem (eine Möglichkeit):

notify auf den state und dann "setreading" auf einen/den Dummy.

define NotifyAnderesReading notify dmLeinwand:pct.* setreading dmLeinwand NewReading $EVTPART1


Bzw. mal die Frage: warum? Vielleicht brauchst du ja gar kein anderes Reading...

Gruß, Joachim

Ich habe einen Avr,der nicht an Fhem angebunden werden kann,welchen ich allerdings per Harmony Hub bedienen kann. Justme hat mir freundlicherweise schon gezeigt,wie ich ihn per Custom Skill mit den Worten lauter/ leiser um eine Stufe verstellen kann. Da Alexa im Smarthome Skill noch kein lauter/leiser für Devices kann,ist die Idee den Start dB wert des avr in einen dummy zu schreiben,und diesen dann in Abhängigkeit des von Alexa zurück gegebenen Prozent Wertes zu ändern.
Stell die Soundbar auf 10% ---> lautstärke um x db verringern
Stell die Soundbar auf 50% ---> lautstärke um x db erhöhen
Dafür muss ich mit >= und <= arbeiten,was mir mit dem bisherigen Wert (pct xx) noch nicht gelungen ist.

Grüße

MadMax-FHEM

Zitat von: Esjay am 05 Januar 2017, 20:38:14
Ich habe einen Avr,der nicht an Fhem angebunden werden kann,welchen ich allerdings per Harmony Hub bedienen kann. Justme hat mir freundlicherweise schon gezeigt,wie ich ihn per Custom Skill mit den Worten lauter/ leiser um eine Stufe verstellen kann. Da Alexa im Smarthome Skill noch kein lauter/leiser für Devices kann,ist die Idee den Start dB wert des avr in einen dummy zu schreiben,und diesen dann in Abhängigkeit des von Alexa zurück gegebenen Prozent Wertes zu ändern.
Stell die Soundbar auf 10% ---> lautstärke um x db verringern
Stell die Soundbar auf 50% ---> lautstärke um x db erhöhen
Dafür muss ich mit >= und <= arbeiten,was mir mit dem bisherigen Wert (pct xx) noch nicht gelungen ist.

Grüße

Du kannst auch statt dem setreading eine Sub in myUtils aufrufen und den Wert ($EVTPART1) übergeben und dort dann Vergleiche/Berechnungen direkt anstellen und auch gleich die Befehle an den HarmonyHub absetzen...

define NotifyAnderesReading notify dmLeinwand:pct.* {mySetzeLautstärke($EVTPART1)}

...und wenn notwendig (für Berechnungen etc.) den Startwert bzw. weitere berechnete Werte per setreading in den dummy schreiben...

Dann mal viel Erfolg, 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)

Esjay

Zitat von: MadMax-FHEM am 05 Januar 2017, 21:06:40
Du kannst auch statt dem setreading eine Sub in myUtils aufrufen und den Wert ($EVTPART1) übergeben und dort dann Vergleiche/Berechnungen direkt anstellen und auch gleich die Befehle an den HarmonyHub absetzen...

define NotifyAnderesReading notify dmLeinwand:pct.* {mySetzeLautstärke($EVTPART1)}

...und wenn notwendig (für Berechnungen etc.) den Startwert bzw. weitere berechnete Werte per setreading in den dummy schreiben...

Dann mal viel Erfolg, Joachim

Vielen Dank für deine Hilfe.Sobald ich zum Testen komme,gebe ich eine Rückmeldung!!

Grüße

Erby

#1248
Hallo zusammen,

vorab möchte ich sagen, dass ich 1 Woche benötigt habe um alles was in der Alexa-Fhem Wiki steht umzusetzen. Soviel zu meinen Kenntnissen.

Um jetzt ein kleines Erfolgserlebnis zu haben .... was muss ich in Fhem schreiben, damit ich mit Alexa erstmal nur einen Steckdosenschalter nahmens Plug1 (TP-Link HS110) ein und auszuschalten? Mit dieser Steckdose wird mein Fernseher ein und aus geschaltet. Also möchte ich im Prinzip sagen "Alexa, schalte den Fernseher ein oder aus" und Plug1 soll geschaltet werden.

Den Skill habe ich auf der Amazon Developer-Seite so wie in der Wiki beschrieben angelegt. Aber bestimmt nicht vollständig richtig.
Meine fhem.cfg wurde auch mit allem aus dem Wiki gefüllt. Nur passt das "Mapping" wahrscheinlich nicht (auch aus dem Wiki kopiert). Was immer auch "Mapping" in diesem Zusammenhang bedeuten mag.

Vielen Dank für eure Antworten.

Esjay

#1249
Zitat von: Erby am 05 Januar 2017, 23:25:52
Hallo zusammen,

vorab möchte ich sagen, dass ich 1 Woche benötigt habe um alles was in der Alexa-Fhem Wiki steht umzusetzen. Soviel zu meinen Kenntnissen.

Um jetzt ein kleines Erfolgserlebnis zu haben .... was muss ich in Fhem schreiben, damit ich mit Alexa erstmal nur einen Steckdosenschalter nahmens Plug1 (TP-Link HS110) ein und auszuschalten? Mit dieser Steckdose wird mein Fernseher ein und aus geschaltet. Also möchte ich im Prinzip sagen "Alexa, schalte den Fernseher ein oder aus" und Plug1 soll geschaltet werden.

Den Skill habe ich auf der Amazon Developer-Seite so wie in der Wiki beschrieben angelegt. Aber bestimmt nicht vollständig richtig.
Meine fhem.cfg wurde auch mit allem aus dem Wiki gefüllt. Nur passt das "Mapping" wahrscheinlich nicht (auch aus dem Wiki kopiert). Was immer auch "Mapping" in diesem Zusammenhang bedeuten mag.

Vielen Dank für eure Antworten.

Guten Morgen.
Wenn du dir nicht mal sicher bist, ob dein Skill richtig funktioniert,geschweige denn richtig angelegt ist, geht es wohl eher hier weiter für dich --> https://forum.fhem.de/index.php/topic,60452.0.html
Bisher hat es noch jeder hinbekommen.Vermute ich zumindest.

Sollte wieder erwarten doch alles passen, benötigt dein Device ein:
attr <Name für Plug1> setList on off

und

attr <Name für Plug1> alexaName Fernseher

um in der Alexa App als Fernseher erkannt zu werden.

Und dein Filter in der json.config Datei muss selbstverständlich passen


Grüße
---------------------------------------------------------------------------------------------------------------------------------------

@MadMax-FHEM

Die Funktion mit

define NotifyAnderesReading notify dmLeinwand:pct.* setreading dmLeinwand NewReading $EVTPART1


ist grundsätzlich gegeben, allerdings treten im Log Pearl Warnungen aller

PERL WARNING : Argument pct 20 isn`t numeric in numeric le (<=) at (eval470722) line 1

auf.
Hat wohl mit der Übergabe von pct zu tun.Werde mich damit nochmal beschäftigen müssen.

Ok,ich habe mal geschaut, und es gibt eine Lösung, welche keine Pearl Warnungen ausgibt, und ohne Notify auskommt.

Und zwar direkt mit einem Doif. Beispiel

([Test:state:d] <= "20") (set Irgendetwas on) DOELSE (set irgendetwas off)

d schaut dabei nur auf die Zahl im Reading.

-------------------------------------------------------------------------------------------------------------------------------------------

Oder per readingsProxy

define Wert readingsProxy Test:state
attr test valueFn {ReadingsNum("Test","state","0")}


Ok, heute auf jedenfall ne Menge gelernt.

Gruß Stephan

Erby

Hallo Stephan,

vielen Dank für deine Antwort und deine Tipps, welche ich bereits umgesetzt hatte.

Was mir fehlt ist das Mapping unter "attr MyAlexa alexaMapping ......".

Laut Anleitung benötige ich das um mit den Befehl "get <alexa> interactionModel"  und "get <alexa> customSlotTypes". Intent Schema und Sample Utterances auf der Amazon-Developer Seite bei der Skill-Erstellung mit dem Ergebniss füllen.

Oder habe ich das falsch verstanden?

Danke

Esjay

Zitat von: Erby am 06 Januar 2017, 12:15:31
Hallo Stephan,

vielen Dank für deine Antwort und deine Tipps, welche ich bereits umgesetzt hatte.

Was mir fehlt ist das Mapping unter "attr MyAlexa alexaMapping ......".

Laut Anleitung benötige ich das um mit den Befehl "get <alexa> interactionModel"  und "get <alexa> customSlotTypes". Intent Schema und Sample Utterances auf der Amazon-Developer Seite bei der Skill-Erstellung mit dem Ergebniss füllen.

Oder habe ich das falsch verstanden?

Danke

Du musst generell zwischen Custom Und Smarthome Skill unterscheiden. Wenn du nur deine Steckdose schalten möchtest, reicht der Smarthome Skill, und du musst dich mit Sachen wie alexaMapping interactionModel und customSlotTypes vorerst nicht beschäftigen. Dafür reichen die von mir angesprochenen Attribute. Solltest du die Steckdose jetzt nicht in deiner Alexa-App sehen, poste mal hier -->  https://forum.fhem.de/index.php/topic,60452.0.html die Konsolenausgabe,wenn du Alexa startest, deine json.config, und ein List deiner Steckdose.

Gruß Stephan

MadMax-FHEM

#1252
Zitat von: Esjay am 06 Januar 2017, 08:37:40
@MadMax-FHEM

Die Funktion mit

define NotifyAnderesReading notify dmLeinwand:pct.* setreading dmLeinwand NewReading $EVTPART1


ist grundsätzlich gegeben, allerdings treten im Log Pearl Warnungen aller

PERL WARNING : Argument pct 20 isn`t numeric in numeric le (<=) at (eval470722) line 1

auf.
Hat wohl mit der Übergabe von pct zu tun.Werde mich damit nochmal beschäftigen müssen.

Ok,ich habe mal geschaut, und es gibt eine Lösung, welche keine Pearl Warnungen ausgibt, und ohne Notify auskommt.

Und zwar direkt mit einem Doif. Beispiel

([Test:state:d] <= "20") (set Irgendetwas on) DOELSE (set irgendetwas off)

d schaut dabei nur auf die Zahl im Reading.

-------------------------------------------------------------------------------------------------------------------------------------------

Oder per readingsProxy

define Wert readingsProxy Test:state
attr test valueFn {ReadingsNum("Test","state","0")}


Ok, heute auf jedenfall ne Menge gelernt.

Gruß Stephan

Hi Stephan,

ja ReadingsProxy bzw. DOIF wären meine weiteren Kandidaten gewesen ;)

Allerdings mache ich (noch) wenig damit, daher wollte ich nichts nennen was ich (noch) nicht kenne... ;)

Allerdings habe ich geschaut und ich bekomme keine PerlWarnings.
Liegt wohl/vielleicht eher dran was du in der SUB tust?? (eher als Hinweis/Anmerkung für die Zukunft / aktuell hast du ja mind. eine Lösung)

EDIT: oder es wird bei $EVTPART1 bei dir mehr/was anderes übergeben als bei mir? Bei mir kommt (soweit ich das testen konnte) nur der Zahlenwert als Parameter in die SUB...

Viel Erfolg weiterhin!

Ende "off-topic"... ;)

Gruß, 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)

tobse30

#1253
Hallo zusammen,

ich habe seit ein paar Tagen den großen Echo und seinen kleinen Bruder Dot über Alexa-Fhem eingebunden.
Meine Hausautomation besteht aus FS20 und Homematic Komponenten. Das Schalten und Dimmen(FS20) bzw. ein und ausschalten der Gartenlichter oder Thermostate (Homematic) funktioniert sehr gut auch ohne Custom Skill.

Um alles zu verstehen musste ich mehrmals diesen Beitrag "amazon smart home skill für fhem" bzw. das "Alexa-Fhem Wiki" durchlesen.

Wir sind ja nicht alle Profis wie viele hier im Forum und kommen oftmals nicht mit was hier in kurzen Beispielen erklärt wird.

Deshalb wäre es eine tolle Sache für Leute wie mich, ein paar Beispiele zu bekommen wie das Ganze konfiguriert wird
z.B. unter einem neuen Beitrag mit Beispielkonfigs von Schalter, Steckdosen, Dimmer, Thermostat, Rollos, Dummys usw. wie sie richtig eingebunden werden müssen um von Alexa erkannt zu werden.

Was ich immer noch nicht verstanden habe ist das homebridgemapping unter dem Smart Home Skill.

@Erby
Du musst unter Fhem für dein Device (Steckdose) das Attribute genericDeviceType": "switch" setzen und das Device muss im Room für Alexa sein das du in der ~/.alexa/config.json definiert hast.
Danach den Alexa-Service über das Script neustarten und anschließend über das Amazon Alexa-App die Geräte neu suchen lassen.


Vielen Dank noch an alle Leute die so etwas geniales möglich machen!


roadghost

Hallo Leute,

ich habe heute meinen Amazon Echo und einen Dot über meine Einladung bei amazon bestellt. Ich denke am Montag kommen die Geräte an.

Ich habe mir den developer-account und den aws-account angelegt, das security-profil ist angelegt, ich habe die ganzen ID´s vorliegen.

Der alexa-skill und lambda sind eingerichtet.

Die definition von alexa in fhem und das startup-script sind auch abgehakt.

Leider sieht es so aus als hätte ich bei der einrichtung von AWS lambda ein problem:

Anders als in der WIKI beschrieben sehe ich bei der config function nicht so viel code wie hier:

https://wiki.fhem.de/wiki/Datei:Aws.amazon.com-07-configure_function.png

Bei mir sind nur 4 Zeilen zu sehen. Ich suche jetzt schon 2 Stunden, aber ich finde den Fehler nicht. Kann es sein dass ich erst ein Echo angemeldet haben muss damit das funktioniert oder muss ich, wenn die Oberfläche meines FHEM nur mittels PW&User zu erreichen ist, diese in der config.json eintragen ??

Gruß
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

tobse30

#1255
Ich vermute dir fehlt dieser Eintrag in der ~/.alexa/config.json falls es gleich ist wie unter Homebridge. Getestet habe ich es nicht.

"auth": {"user": "FhemUser", "pass": "XXX"},

Joker

Zitat von: roadghost am 06 Januar 2017, 16:46:20

Anders als in der WIKI beschrieben sehe ich bei der config function nicht so viel code wie hier:

https://wiki.fhem.de/wiki/Datei:Aws.amazon.com-07-configure_function.png

Bei mir sind nur 4 Zeilen zu sehen. Ich suche jetzt schon 2 Stunden, aber ich finde den Fehler nicht.
Den Code musst du selbst dort eintragen!
Siehe Wiki:
ZitatAuf der Konfigurationsseite bei Name den Wert FHEM eingeben, bei Runtime Node.js 4.3. Bei Role den Wert Choose an existing role wählen (wenn es noch keine existing role gibt: zuerst Create a custom role -> in dem Popup dann lambda_basic_execution und auf Allow) und bei Existing role dann x wählen. Der Quellcode der Datei lambda.js aus dem Quellpaket wird dann an die Stelle des großen Textfeldes vollständig eingefügt. Dann noch den Hostname im Quellcode an den eigenen anpassen. Anschließend alles mit Next bestätigen.

roadghost

Ahh,

ich habe den Text so verstanden als würde der skill und aws bzw. lambda sich unterhalten und der code würde dorthin autom. übertragen werden.

Dann werde ich das jetzt mal korrieigeren und testen.

Frage noch: in der config.json, wird dort die lokale IP des Router oder die öffentliche eingetragen ??

Gruß
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

tobse30

"nat-pmp": "IP vom Router",
        "nat-upnp": true,


upnp muss aber in deinem Router aktiv sein.

roadghost

UpnP nutze ich nicht, da könnten ja alle Geräte Ports öffnen wie se Lustig sind.

Ich nutze feste IP´s mit Portforwarding.
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC