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

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

Vorheriges Thema - Nächstes Thema

octek0815

Zitat von: wuast94 am 23 Januar 2017, 10:43:17
Lief alles top bis auf heute morgen auf einmal nichts mehr ging. alexa wollte nichts mehr steuern.

daraufhin habe ich alle devices gelöscht und neu suchen lassen, ergebnis: er findet keine geräte mehr.

Lambda ip adresse stimmt noch bzw meine hat sich nicht geändert. port und ip vom pi auch gleich. alexa-fhem startet auch ohne probleme udn erkennt alle geräte. also muss es ja etwas zwischen dem alexa-skill und alexa-fhem sein oder ? vlt jemand ne ahnung was über nacht passiert ist ?

Habe das selbe Problem, letzte Woche lief alles noch. Jetzt werden keine Geräte gefunden.

baerbel

Moin - ein bisschen mehr Input wäre hilfreich ;-) - mit geht nichts mehr wird es schwierig - logfiles vom Alexa-FHEM wären ein guter Anfang

-Bernd


Gesendet von iPhone mit Tapatalk

bjoernbo

1.) läuft der ALEXA Prozeß noch?
2.) Was sagt das LogFile
3.) Habt ihr neue Geräte hinzugefügt? Wenn ja, entfernt diese einmal aus dem Raum "alexa" und prüft erneut.
Raspberry Pi 3 - FB6490C - Synology NAS DS916+ - NETATMO - HUE - SIEMENS G-Tag'S - FTUI - EchoDOT -

Benny81

#1488
Erstmal vielen Dank an die ganze Community.  :D
Ich habe erst seit ein paar Tagen Fhem auf einem Raspberry Pi3 laufen und bin total begeistert. So genug offtopic.

Seit gestern verwende ich auch Alexa um fhem zu steuern. Leider kann sie meine Somfy Io Rollos nicht steuern. Darum habe ich den Code in der fhem.js erweitert.
Die Somfy Tahoma Rollos kenne kein pct und verwenden stattdessen dim. Wäre super wenn meine Änderung mit in das Alexa Projekt aufgenommen werden könnte. Dann brauche ich das beim Update nicht mergen.  ;)

} else if( genericType == 'blind'
             || s.Attributes.subType == 'blindActuator' ) {
    if( !this.service_name ) this.service_name = 'blind';
    delete this.mappings.Brightness;
    if( s.PossibleSets.match(/(^| )position\b/) ) {
      this.mappings.CurrentPosition = { reading: 'position' };
      this.mappings.TargetPosition = { reading: 'position', cmd: 'position', delay: true };
      if( s.Internals.TYPE == 'DUOFERN' ) {
        this.mappings.CurrentPosition.invert = true;
        this.mappings.TargetPosition.invert = true;

        //the following could be used instead of invert
        //var reading2homekit = function(mapping, orig) { return 100 - parseInt( orig ) };
        //var homekit2reading = function(mapping, orig) { return 100 - orig };
        //this.mappings.CurrentPosition.reading2homekit = reading2homekit.bind(null, this.mappings.CurrentPosition);
        //this.mappings.TargetPosition.reading2homekit = reading2homekit.bind(null, this.mappings.TargetPosition);
        //this.mappings.TargetPosition.homekit2reading = homekit2reading.bind(null, this.mappings.TargetPosition);
      } else if( s.Internals.TYPE == 'SOMFY' ) {
        this.mappings.CurrentPosition.invert = true;
        this.mappings.TargetPosition.invert = true;
        this.mappings.TargetPosition.cmd = 'pos';
      }
//Benny81 -->
} else if( s.PossibleSets.match(/(^| )dim\b/) ) {
      this.mappings.CurrentPosition = { reading: 'dim' };
      this.mappings.TargetPosition = { reading: 'dim', cmd: 'dim', delay: true };  
      if( s.Attributes.param && s.Attributes.param.match(/levelInverse/i) ) {
        this.mappings.CurrentPosition.invert = true;
        this.mappings.TargetPosition.invert = true;
      }
//Benny81 <--
    } else {
      this.mappings.CurrentPosition = { reading: 'pct' };
      this.mappings.TargetPosition = { reading: 'pct', cmd: 'pct', delay: true };
      if( s.Attributes.param && s.Attributes.param.match(/levelInverse/i) ) {
        this.mappings.CurrentPosition.invert = true;
        this.mappings.TargetPosition.invert = true;
      }
    }

newan

Zitat von: justme1968 am 18 Januar 2017, 10:52:51
@rudolfkoenig: das liegt hauptsächlich daran das 80% code identisch mit homebridge-fhem ist und ich alexa-fhem und homebridge-fhem auch wieder zusammen mergen will. homebridge selber ist eben ein node projekt. zufällig waren die ersten alexa beispiele die ich gesehen hatte auch in node und ich wusste anfangs nicht wie viel code tatsächlich bei amazon laufen muss.

der grund beides zusammen zu halten liegt daran das auf homekit seite (und damit auch homebridge) viele sinnvolle konzepte zu device typen und andere abstraktionsebenen vorhanden sind die es einfach machen unterschiedliche geräte gleich anzusprechen.

es hat also eher zufällige historische gründe. inzwischen finde ich node aber auch sehr angenehm was das programmiermodell und die calbacks angeht. da ich der meinung bin das man threads normalerweise nicht braucht und node normalerweise nicht multithreaded ist passt das sehr gut :)

der anwendugnsfall eines netzwerk/web dienstes der über standart schnittstellen anderen (web) dienste einbindet ist glaube ich ein sehr typischer für node. und auch das paket konzept funktioniert gut.

könnte man alexa-fhem auch komplett in perl machen? ja. hätte es vorteile? nein. hätte es nachteile? jein. man könnte keinen homebridge code wiederverwenden.

Hab da auch eine Nachfrage zu, ist auch keine Kritik sondern interesse halber, mein echo ist noch nicht da!!

Wieso kann das echo nicht direkt den befehl im Netzwerk senden und muss einen Port extern haben? Muss ich für HUE integration z.b auch einen Port öffnen?

nesges

Zitat von: newan am 23 Januar 2017, 15:38:18
Wieso kann das echo nicht direkt den befehl im Netzwerk senden und muss einen Port extern haben? Muss ich für HUE integration z.b auch einen Port öffnen?

Kurz: Weil Echo keine Spracherkennung kann
Lang: https://developer.amazon.com/alexa-voice-service/what-is-avs

swhome

Zitat von: octek0815 am 23 Januar 2017, 10:54:50
Habe das selbe Problem, letzte Woche lief alles noch. Jetzt werden keine Geräte gefunden.

Hatte auch viele erfolglose Kommandos am Wochenende. Mir scheint dass die Alexa noch ein paar Kinderkrankheiten hat. Die jeweiligen Befehle wurden laut Alexa-Log korrekt verstanden, aber es kamen einfach keine Requests in der Lambda-Funktion an.

Im Einsatz: FHEM auf Raspberry Pi mit 350 devices, hauptsächlich Homematic Wired und HM-Heizungsregler, dazu diverse Eigenbauten für Fussbodenheizung und LED Beleuchtung. Und jetzt mit Alexa!

Breaked

Hi justme1968,

danke für diese tolle Programmierleistung und die Implementierung von Alexa in FHEM.

Allerdings viel mir gerade auf, dass NICHT die aktuellste Version in deinem ersten Beitrag vorhanden ist. Hatte gerade durch Zufall das "Update" gefunden...
Bereit für dein eigenes Smart Home?
http://ownsmarthome.de

prodigy7

Zitat von: Breaked am 23 Januar 2017, 16:54:44Allerdings viel mir gerade auf, dass NICHT die aktuellste Version in deinem ersten Beitrag vorhanden ist. Hatte gerade durch Zufall das "Update" gefunden...
Fände es glaube ich auch der Übersicht wegen besser, wenn die Versionen im ersten Beitrag verlinkt würden.


DasB

Zitat von: newan am 23 Januar 2017, 18:41:11
Seh ich ja ein aber scheinbar gibt es auch noch andere Wege:

https://github.com/armzilla/amazon-echo-ha-bridge

Oooooo, hat das schon jemand getestet? Erfahrungen?

Werde ich mir später mal anschauen, ist einen Versuch wert....

newan

Zitat von: DasB am 23 Januar 2017, 18:57:11
Oooooo, hat das schon jemand getestet? Erfahrungen?

Werde ich mir später mal anschauen, ist einen Versuch wert....

Wie gesagt warte noch auf mein "Gerät"

Breaked

Noch eine kurze Frage:

Bei mir läuft alles, sofern ich es über die Konsole starte - allerdings nicht, wenn ich dies über FHEM tun möchte.
Habe on/off dummy usw. in FHEM bereits angelegt. Allerdings denke ich, dass es am Start-Skript hängt. Unter /home/pi/alexa-fhem befindet sich mein Hauptverzeichnis.

Bin nach dieser Anleitung vorgegangen.

Und habe mich in diesem Beitrag ebenfalls kundig gemacht.
Bereit für dein eigenes Smart Home?
http://ownsmarthome.de

Esjay

Zitat von: Breaked am 23 Januar 2017, 19:05:57
Noch eine kurze Frage:

Bei mir läuft alles, sofern ich es über die Konsole starte - allerdings nicht, wenn ich dies über FHEM tun möchte.
Habe on/off dummy usw. in FHEM bereits angelegt. Allerdings denke ich, dass es am Start-Skript hängt. Unter /home/pi/alexa-fhem befindet sich mein Hauptverzeichnis.

Bin nach dieser Anleitung vorgegangen.

Und habe mich in diesem Beitrag ebenfalls kundig gemacht.
Hier geht es nur um den Home Skill und den Custom Skill..Schau mal in dem Theard : https://forum.fhem.de/index.php/topic,60452.msg567846.html#new
Zitat von: DasB am 23 Januar 2017, 18:57:11
Oooooo, hat das schon jemand getestet? Erfahrungen?

Werde ich mir später mal anschauen, ist einen Versuch wert....

Einrichtung und Handhabung einfacher,Flexibilität nicht so ausgeprägt..Aber auch darum soll es hier nicht gehen..Gegebenfalls für die Ha Bridge einen eigenen Theard aufmachen..
Gruß

sbiermann

Zitat von: newan am 23 Januar 2017, 18:41:11
Seh ich ja ein aber scheinbar gibt es auch noch andere Wege:

https://github.com/armzilla/amazon-echo-ha-bridge

Was ist denn daran anders als beim alexa-fhem? Bei beidem macht nicht der Echo die Spracherkennung sondern die "Cloud". Beides braucht einen offenen Port von dem aus die "Cloud" die Daten senden kann. Der Vorteil bei dem genannten amazon-echo-ha-bridge ist das man keine Skills selber anlegen muss bzw. die gesamte Amazon Konfigurationsgeschichte mit den Triggern, Lambdas und so weiter ist bereits vorhanden und kann durch den HUE Skill der released ist bei Amazon ganz einfach eingerichtet werden. 
Wenn es einen solchen Skill für FHEM auch geben würde, also so wie der HUE oder die anderen freigegebenen Skills, dann wäre die Installation und Nutzung ein Kinderspiel. Vielleicht kann ja der Verein als Herausgeber hinter dem Skill stehen wenn sich keine andere Person findet. Aber es wäre vermutlich sinnvoll wenn man den Skill soweit weiter entwickelt das er freigegeben werden kann. Dann ist das alles genau so leicht wie beim amazon-echo-ha-bridge.