Alexa Telegram statt Port 3000

Begonnen von lukasbastelpeter, 11 Mai 2017, 11:45:43

Vorheriges Thema - Nächstes Thema

lukasbastelpeter

Hallo,

ein blauäugiger Gedanke, aber könnte man nicht "einfach" Lambda sagen:
"Unterhalte dich via Telegram mit FHEM."

Beim groben überfliegen sollte das doch machbar sein...

Würde mir leidige 2-3 Stunden Arbeit ersparen und ein flaues Gefühl mit offener Fritzbox beruhigen :)

EDIT: grundsätzlich Telegram mit Lambda verheiraten funktioniert ja-> https://blog.superfeedr.com/rss-bot-telegram-lambda/
# Raspberry Pi
# Homematic, Z-Wave
# HUE, Tradfri
# Harmony
# ESP8266  Basteleien per MQTT

amenomade

#1
Klingt gut.

Via Tapatalk
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Allerdings bin ich mir nicht sicher, dass man eine vernünftige Antwortskette aufbauen könnte.

Was passiert z.B. wenn das zu steuernde Gerät in fhem nicht gefunden wird?

Das Bot antwortet "please define <Gerät> first.
Und dann wie die Rüchmeldung an Alexa TTS ?

Via Tapatalk

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

justme1968

die komplette logik liegt in deiner lokalen alexa-fhem installation. nicht im aws lambda code.

außerdem ist eine bidirektionale verbindung nötig.

selbst wenn das mit telegramm und ein paar klimmzügen möglich wäre ist es vermutlich zu langsam.

mir sind deine sichetheitsbedenken auch nicht ganz verständlich. du öffnest nicht fhem nach außen sondern nur alexa-fhem. alexa-fhem akzeptiert events nur von deinen skills und und nur mit aktuell gültigen token. es werden auch keine kommandos von außen geschickt sondern nur events. deine lokale installation macht erst kommandos draus.

das ganze ist nicht weniger sicher als die telegramm integration in fhem. vermutlich eher sicherer.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

lukasbastelpeter

Ok, das mit der Sicherheit war falsch formuliert...
Ich erhoffe mir einfach eine "einfachere" Konfiguration.
Das "Tunneln" der Daten übernimmt einfach Telegram für mich... Gerade mit meinem DS-Lite habe ich da einfach "keine Lust" den Aufwand zu betreiben...
Und der Umweg über Telegram gefällt mir eigentlich ganz gut. Mein kleines Interface via Telegram läuft nahezu ohne Latenz, es sei denn die Antwort wird aufwendig von FHEM via String-Klimzügen zusammen gebastelt...
Aber ein:
Set irgendwas inkl. Bestätigung ist maximal 0.2s unterwegs.. (gefühlt)...

Also, falls das möglich wäre, dann wäre ich nicht nur der Beta-Tester. Ich habe im Moment allerdings nicht die Zeit das selber soweit neu aufzuziehen und bräuchte da die Unterstützung von den alexa-fhem-devs.... @justme ;)

# Raspberry Pi
# Homematic, Z-Wave
# HUE, Tradfri
# Harmony
# ESP8266  Basteleien per MQTT

lukasbastelpeter

Zitat von: amenomade am 11 Mai 2017, 14:50:30
Allerdings bin ich mir nicht sicher, dass man eine vernünftige Antwortskette aufbauen könnte.

Was passiert z.B. wenn das zu steuernde Gerät in fhem nicht gefunden wird?

Das Bot antwortet "please define <Gerät> first.
Und dann wie die Rüchmeldung an Alexa TTS ?

Via Tapatalk


So wie ich das bis jetzt sehe, schickt Alexa "einfach" nur den verstandenen Satz, bzw, die vordefinierten Events...
# Raspberry Pi
# Homematic, Z-Wave
# HUE, Tradfri
# Harmony
# ESP8266  Basteleien per MQTT

yrwyddfa

Ist es denn möglich, das von alexa verstandene als reading zu übernehmen? Dann sollte die Kommunikation via TelegramBot (und für eigene definierte Antworten TALKTOME) recht einfach zu realisieren sein. Bei mir läuft das via Telegram schon super, nur die Spracheinbindung suche ich hier noch.
If every day has its number, Monday would be a zero division.

amenomade

#7
Das ist bestimmt möglich. Dafür ist es wahrscheinlich einfacher, direkt die AVS API zu nutzen https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/speechrecognizer als den Kode von justme umzubasteln.

Aber ein Schritt zurück: wenn ich Alexa sage "Alexa? Stelle das Licht im Wohnzimmer an", schaltet sie das Licht an, und bestätigt mit "OK". Wenn sie "Wohnzimmer" nicht ganz verstanden hat, sagt Sie "sorry, ich kann kein Gerät mit dem Name Wohnzimmer in amenomade's Konto finden". Wenn mehrere Lichter im Wohnzimmer : "Es sind mehrere Geräte im Wohnzimmer, welches meintest Du?" und da kann ich ergänzen.

Jetzt mit Telegrambot:
- ich sage "Alexa? Stelle das Licht im Wohnzimmer an".
- Alexa schickt in Telegrammbot "/dofhem set wz_Licht an"
- Telegrammbot bestätigt "Befehl: set wz_Licht an: Ergebnis: OK" => Das muss Alexa "einlesen" (wie?), und dann mit OK bestätigen => Alles in dem gleichem ProgrammThread der AWS Funktion, weil es heute nicht möglich ist, die AWS Funktion ohne Alexa / Echo anzustossen: hast Du einmal den Faden verloren, ist die Unterhaltung zu Ende und Alexa raus.

=> Das war der simpel Fall. Jetzt versteht Alexa den Namen falsch.
- schikt an Telegrammbot "/dofhem set Dali im Zimmer an" oder "/dofhem keinen Raum gefunden"
- und nu?

Viel Spass, um das bedirektionale Gespräch einzurichten, und die gesamte Logik in AWS und auch lokal in Fhem zu implementieren!

Es sei denn, du verzichtest auf Rückmeldung, und schickst einfach "blind" die Kommandos an Telegramm, in der Hoffnung, es passiert was. Dann wird oft passieren, was in meiner Signatur beschrieben ist...  ;) nur ohne Antwort von Alexa.

Gruß
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

justme1968

ZitatDas ist bestimmt möglich. Dafür ist es wahrscheinlich einfacher, direkt die AVS API zu nutzen https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/speechrecognizer
nein. es gibt (zur zeit) kein api über das man direkt den gesprochenen text bekommen kann.

der link von dir beschriebt auch nur wie die audio daten vom aufnahme gerät zur erkennung kommen.

der rückweg geht immer über das skills api und dort gibt es nur events mit den erkannten intent daten.

es gibt zwar theoretisch einen workaround in dem man alexa alles erkennen lässt, damit verliert alexa aber alle kontext information die das erwartete beschreibt und die erkennunsrate wird sehr viel schlechter.


Zitat- Alexa schickt in Telegrammbot "/dofhem set wz_Licht an"
nein. alexa schickt keine fhem kommandos. auch der was lambda code tut das nicht. weder alexa noch aws lambda kennen deine geräte, räume, fhem konfiguration, ...

die komplette 'intelligenz' sitz im alexa-fhem code der lokal bei dir läuft. hier wird aus dem event das fhem kommando gemacht. mit dem 'verständnis' für geräte, räume und geräte typen. hier wird auch die rückfrage ausgelöst.


der 'umweg' über telegramm ist wirklich nur mehr aufwand und komplett der falsche weg.

die eigentliche komplexität liegt doch auch garnicht im port forwarding. das ist mit ein oder zwei klicks eingerichtet und auch deutlich sicherer als die komplette fhem konfiguration in der cloud zu haben.

das punkt über den viele stolpern ist die konfiguration von aws lambda und skill und das zusammenspiel von beidem. diese komplette konfiguration würde man auch im telegramm fall brauchen.


eine echte erleichterung gibt es erst wenn der fhem skill offiziell wird und nur mit einem klick installiert ist. ohne developer accounts. um das zu erreichen sind ganz andere dinge zu tun als telegramm als interface zu vergewaltigen. das ist angedacht, dauert aber noch.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

amenomade

Die API kenne ich nicht, dann danke für die Korrektur. OK... nicht möglich.

Zitatweder alexa noch aws lambda kennen deine geräte, räume, fhem konfiguration, ...
Bei dem SmartHome Skill doch, oder? Da ich es am meisten nutze, vergesse ich immer das Custom Skill ;) In der Alexa App sind doch die Geräte importiert, und Gruppen definiert, usw.

Ja, ok, dann liegt mit dem Custom Skill die Logik lokal bei mir. (AWS kennt aber trotzdem die Custom Slots, und die Utterances).

Zitat- Alexa schickt in Telegrammbot "/dofhem set wz_Licht an"
Damit meinte ich, wir hätten einen Alexa - Telegrambot Skill. In dem Fall würde Alexa direkt mit dem Bot "reden". Vielleicht verstehe ich falsch, was lukasbastelpeter geschrieben hat, aber für mich war der Gedanke:Alexa => Skill => Telegrambot => Fhem damit Telegramm und nicht Alexa Fhem steuert, da viele schon ein TelegramBot in Fhem am Laufen haben. Dann müsste man theoretisch die gesammte Logik seitens Fhem-Telegrambot (und/oder seitens Telegrambot selbst, ich weiss nicht, was möglich ist), um die erkannte Intents in Kommandos umzuwandeln...

Lange Rede kurzer Sinn: ich halte das für noch schwieriger, als sich ein bisschen Zeit mit alexa-fhem zu nehmen. Und, wie du es schon beschrieben hast, nicht unbedingt sicherer.

Und Alexa => Skill => alexa-Fhem => Telegram => Fhem hätte m.A. überhaupt kein Sinn.

Gruß

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

justme1968

ZitatBei dem SmartHome Skill doch, oder?
ja. hier kennt alexa die geräte. aber keine räume und sonstiges. auch hier werden nicht direkt fhem kommandos erzeugt sondern alexa-fhem macht diese erst aus dem jeweiligen event. d.h. man kann auch hier kein beliebiges und nicht konfiguriertes fhem kommando unterschieben.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

lukasbastelpeter

Also nochmal zur Verdeutlichung, ich wollte mit dem Gedanken "lediglich" den Rückweg zur lokalen Logik vereinfachen. Denn leider kann man halt nicht der AWS-Lambda-Logik sagen:
Hey ich habe XY verstanden, sende dem auslösenden Gerät mal den Befehl "mache ein HTTP GET mit url: 192..../fhem/cmd="set XY"...
Das finde ich eine sehr unschöne Lösung seitens Amazon. Das würde nämlich einiges deutlich einfacher machen... Denn die Verbindung Alexa->AWS existiert ja schon in der einen Richtung...
# Raspberry Pi
# Homematic, Z-Wave
# HUE, Tradfri
# Harmony
# ESP8266  Basteleien per MQTT

justme1968

ja aber was um alles in der welt wird einfacher wenn du ein zusätzliches protokoll, einen zusätzlichen cloud dienst, einen umweg über noch einen server einbaust und noch dazu von connection orientiert auf connection less umstellst.

im übrigen finde ich es durchaus sinnvoll das amazon (oder irgend ein anderer) nicht jedes beliebige kommando von aussen an meine fehl instanz senden kann sondern die zuordnung zwischen gesprochenem kommando und auszuführendem befehl komplett lokal bei mir passiert.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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