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

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

Vorheriges Thema - Nächstes Thema

kawa0815

Zitat von: MEitelwein am 02 Februar 2017, 14:42:06


Gibt es einen Artikel, der die Struktur informId beschreibt?


Ich habe das so:


             if( device.mappings.CurrentDoorState ) {
             if( state ) { state.replace( ' und ', ', ' ); state += ' und ' };
             state += 'der Zustand ist '+ (device.fhem.cached(device.mappings.CurrentDoorState.informId)?'geschlossen':'offen');
          }


gelöst.

Prof. Dr. Peter Henning

Hurra, mein Echo Dot ist da.

Tut aber noch nicht, was er soll. Der gesamte Support ist jetzt über 115 Seiten und das Wiki verteilt - und der Wiki-Artikel ist, ahem,  etwas lückenhaft. Ich versuche also gerade, während ich mich da hineinwühle, den Wiki-Artikel etwas zu verbessern.

Derzeit läuft es noch nicht - offenbar bekomme ich keinen Alexa-Fhem auf dem Port 3000 (auch ohne Port forwarding nicht...), die Lambda-Funktion bricht mit Fehlermeldung ab. Hat irgendjemand eine sinnvolle Testroutine für Node+Alexa-Fhem ?

LG

pah

prodigy7

#1712
Danke für deine Mühe, beim Durchwälzen das Wiki zu ergänzen. Speziell wenn du was zum Thema Custom Skills finden solltest, bin ich hier ein dankbarer Abnehmer: https://forum.fhem.de/index.php/topic,65890.0.html

Rince

Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Roman

Hallo pah,

prüfe mal folgende Punkte.

* hat alexa-fhem den Port geöffnet ' netstat -na | grep 3000' , sollte ungefähr so aussehen
tcp6       0      0 :::3000                 :::*                    LISTEN
* ist der Port erreichbar und antwortet er (erst mal intern, dann über die externe IP)
#> telnet 192.168.156.2 3000
Trying 192.168.156.2...
Connected to 192.168.156.2.
Escape character is '^]'.
quit
^CConnection closed by foreign host.

Wenn das auch auf der externen Adresse klappt sollte sich die Lambda Funktion auch verbinden können

Danach muss man mal entweder auf die Ausgaben von Alexa-fhem schauen (im besten n der Console starten).

Gruß
Roman

Prof. Dr. Peter Henning

#1715
Danke, aber ich bin schon weiter - bekomme auch von außen den Alexa-Service quer durch meine Firewall. Die Lambda-Funktion bricht aber mit einer Fehlermeldung ab:

Syntax error in module 'index': SyntaxError
at require (internal/module.js:12:17)


Mal sehen: Ich benutze Node.js in der Version 4.7.3 und alexa-fhem 0.1.9.

Edit: Problem gelöst. Liegt daran, dass (sehr zum Ärger vieler Entwickler...) der AWS keine genauen Fehlermeldungen ausspuckt. Es hatte einfach beim Copy und Paste des JavaScript-Code für die Lambda-Funktion eine Klammer gefehlt.

LG

pah

P.S.: Hat jemand das schon durch einen Apache-Proxy geleitet ?

Roman

Hi pah,

bei mir läuft das mit node.js 4.2.6 (auf ubuntu 16.04 LTS) und alexa-fhem 0.1.9

Gruß
Roman

rolf

Hallo,

bin gerade am Einrichten des custom skills und verzweifle jetzt langsam.
Sobald ich die Informationen aus dem Alexa-Modul im Interaction Model in Intent Schema, Custom Slot Types und Sample Utterances eintrage und save druecke, zeigt
der developer-Dialog nur noch -Please wait while this Alexa skill is updated- und wird nie fertig. Hat mir jemand einen Tip ?
Hab es schon mit verschiedenen Browsern probiert - leider immer der gleiche Effekt.
System 1: Intel NUC (ubuntu 18.04.1 lts) mit diversen Homematic-Komponenten + CUNO mit Uniroll/Hoermann + RFXTRX mit TFA + EnOcean mit Eltako + Alexa + Harmony + per HMCCU gekoppelter PI3-Raspberrymatic mit HM-IP-Komponenten
System 2: PI2-Raspberry (Jessie) + Signalduino mit Somfy/RTS

nesges

Zitat von: Prof. Dr. Peter Henning am 02 Februar 2017, 22:16:36
P.S.: Hat jemand das schon durch einen Apache-Proxy geleitet ?

Ja, ich leite localhost/fhem per Proxy auf :8084. In der config.json ist kein Pfad vorgesehen, von daher müsste man da etwas biegen:

    "connections": [
        {
            "name": "WOPR",
            "server": "192.168.178.64",
            "port": "80/fhem",
            "filter": "room=Alexa"
        }
    ]


Funktioniert soweit ich in einem kurzen Test sehe problemlos. Da mein Fhem intern aber auch direkte Verbindungen zulässt, habe ich das so nicht im Einsatz.

TomLee

#1719
@rolf
schau dir das Video an
https://haus-automatisierung.com/hardware/fhem/2017/01/21/fhem-tutorial-reihe-part-24-amazon-echo-alexa-fhem-custom-skill.html
Deine Problem liegt an der Reihenfolge in der du die slot Types und sample Utterances einträgst.


rolf

@TomLee

Genialer Hinweis - so hat es funktioniert - vielen Dank !!
System 1: Intel NUC (ubuntu 18.04.1 lts) mit diversen Homematic-Komponenten + CUNO mit Uniroll/Hoermann + RFXTRX mit TFA + EnOcean mit Eltako + Alexa + Harmony + per HMCCU gekoppelter PI3-Raspberrymatic mit HM-IP-Komponenten
System 2: PI2-Raspberry (Jessie) + Signalduino mit Somfy/RTS

killah78

Hi,
hat bisher noch niemand einen Dimmer eingebunden, der über "set device dim 10" zu dimmen ist?
Ich kriegs einfach nicht hin. Im alexa-fhem kommt prozentIntent oder auch BrightnessIntent an. Aber als Umsetzung versucht er dann immer:
[FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=set%20Ausgang11%20undefined%2010&XHR=1

Und dieses "undefined" bekomme ich einfach nicht weg.
Wie muss ich in diesem Fall denn das homebridgeMapping schreiben?
Aktuell mit "On=dim, Brightness=dim, Cmd=dim" klappts nicht.

Danke und Gruss
killah78

dl6kbg

Zitat von: MEitelwein am 02 Februar 2017, 12:27:54
Habe in server.js (Version 0.1.9) mal eine Statusausgabe für CurrentDoorState und CurrentRelativeHumidity hinzugefügt:

...
CurrentDoorState wird derzeit noch auf Englisch ausgegeben - wie kann ich  device.fhem.cached(device.mappings.CurrentDoorState.informId) gegen OPEN abfragen und entsprechende deutsche Texte ausgeben?

Sorry, Du hattest recht. Ich habe bei mir herausgefunden, dass mein Türkontakt ein CurrenSensorState auf der alexa-console gemeldet hatte:
Bei der Luftfeuchte habe ich den Punkt durch ein Komma ersetzen lassen, wie bei der Temperatur.

So funktioniert es nun perfekt:


            if( device.mappings.CurrentRelativeHumidity ) {
            if( state ) { state.replace( ' und ', ', ' ); state += ' und ' };
            state += 'misst '+ device.fhem.cached(device.mappings.CurrentRelativeHumidity.informId).replace('.',',') +' Prozent Luftfeuchte';
             }
             if( device.mappings.CurrentSensorState ) {
             if( state ) { state.replace( ' und ', ', ' ); state += ' und ' };
             state += 'die Tür ist '+ (device.fhem.cached(device.mappings.CurrentSensorState.informId)?'geschlossen':'offen');


Die Ausgabe ist nun:


"sensor  misst 7,7 Grad und misst 84,8 Prozent Luftfeuchte, türkontakt die Tür ist geschlossen"


das zweite "misst" kann auch noch weg.

Ich glaube ich hab' es jetzt. Fehlt nur noch Windmesser und Luftdruck.

Grüße

nesges

Zitat von: killah78 am 03 Februar 2017, 13:49:21
hat bisher noch niemand einen Dimmer eingebunden, der über "set device dim 10" zu dimmen ist?
[...]
Aktuell mit "On=dim, Brightness=dim, Cmd=dim" klappts nicht.

sorgfältiger lesen: "Cmd" != "cmd" und Leerzeichen trennen homebridgeMappings. Hier ein ähnliches Beispiel das funktioniert:

Alexa.alexaMapping:"Brightness=verb=stelle,property=helligkeit,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=prozent"
MILIGHT_Zone1.alexaName: "lampe mitte"
MILIGHT_Zone1.homebridgeMapping: "Brightness=brightness,cmd=dim"

"Alexa, stelle lampe mitte auf dreiundvierzig prozent"

alexa.log:
[2017-02-03 14:04:15] [WOPR] MILIGHT_Zone1: executing set cmd for Brightness with value 43
[2017-02-03 14:04:15] [WOPR]   executing: http://192.168.178.64:80/fhem/fhem?cmd=set%20MILIGHT_Zone1%20dim%2043&XHR=1

killah78

Habs begriffen. Danke nesges. Funktioniert.
Aber man muss wirklich in die HomeKitTypes.js gucken bezüglich der Namen.
Werd mal weiter probieren.
Danke