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

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

Vorheriges Thema - Nächstes Thema

MadMax-FHEM

Zitat von: justme1968 am 27 Februar 2017, 08:30:14
einfach zwei connection blöcke eintragen. an der skill konfiguration musst du nichts ändern.

Ah, super! :)

Könnte man einen entsprechenden Eintrag im Wiki machen!?

Etwa wie den hier:

Zitat
Mehrere Custom Skills lassen sich mit der folgenden Syntax eintragen

        "applicationId": [ "amzn1.ask.skill.1" , "amzn1.ask.skill.2" ],
        "oauthClientID": [ "amzn1.application-oa2-client.1" , "amzn1.application-oa2-client.1" ]

Müsste es da nicht statt 2x amzn1.application-oa2-client.1 so heißen: "amzn1.application-oa1-client.1","amzn1.application-oa2-client.1"

Ja, ich weiß man kann Schreibrechte beim Wiki beantragen etc. aber ich glaube wenn zu viele rumfuhrwerken...
...viele Köche... ;)

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)

Dave90

Hey, habe die suche schon benutzt aber leider nix brauchbares gefunden.

Habe ein Problem mit dem schalten mehrere Geräte im gleichen Raum. Folgendes Szenario:

  • Ein Dummy, der Musik im Wohnzimmer einschalten soll: alexaName: musik wohnzimmer
  • Eine Lampe im Wohnzimmer: alexaName: licht wohnzimmer

Habe testweise alle anderen Geräte gelöscht in der Alexa App. Trotzdem erhalte ich bei "Schalte die musik im wohnzimmer ein" immer ein "Ich habe mehrere Geräte mit diesem Namen gefunden, welches möchtest du?" zurück. Wenn ich darauf dann noch einmal mit "musik im wohnzimmer ein" antworte dann macht sie es auch.

Habe schon einige Kombinationen ausprobiert für den alexaname doch irgendwie will es nicht hinhauen.
Hardware:  FHEM-& LMS-Server + NAS: Banana Pi; Hyperion Ambilight Server + anderer Kleinkram: RPI Model B; Lampen: Philips Hue + Milight; Homematic Heizungssteuerung; Entertainment: Harmony Hub
sonstiges: Funksteckdosen

MadMax-FHEM

Zitat von: Dave90 am 27 Februar 2017, 10:21:07
Hey, habe die suche schon benutzt aber leider nix brauchbares gefunden.

Habe ein Problem mit dem schalten mehrere Geräte im gleichen Raum. Folgendes Szenario:

  • Ein Dummy, der Musik im Wohnzimmer einschalten soll: alexaName: musik wohnzimmer
  • Eine Lampe im Wohnzimmer: alexaName: licht wohnzimmer

Habe testweise alle anderen Geräte gelöscht in der Alexa App. Trotzdem erhalte ich bei "Schalte die musik im wohnzimmer ein" immer ein "Ich habe mehrere Geräte mit diesem Namen gefunden, welches möchtest du?" zurück. Wenn ich darauf dann noch einmal mit "musik im wohnzimmer ein" antworte dann macht sie es auch.

Habe schon einige Kombinationen ausprobiert für den alexaname doch irgendwie will es nicht hinhauen.

Ich nehme mal an, dass es um den Smart Home Skill geht.

Habe das auch schon so beobachtet, als ich in den Namen auch den Raum hineingepackt hatte.

Besser ist wohl nur den tatsächlichen Namen zu nehmen und dann in der Alexa-App die Räume über Gruppen zu definieren.
Habe ich so aber nicht getestet, da ich eh auf den Custom Skill gehen will/werde und dort gibt es ja dann alexaRoom (geht NICHT bei Smart Home Skill).

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)

slawekking

#2283
Ich bin schon seit einigen Tagen am machen und bekomme es einfach nicht hin, deswegen frage ich hier nach. Folgende Situation:  Alexa und Fhem laufen super. Reverse Proxy auf Fhem ->localhost:8083/fhem auch.

Das was ich leider nicht hin bekomme ist der Zugriff über den Proxy auf den Port:443 und dann die Weiterleitung auf Port:3000. Ich möchte einfach den offenen Port:300ß absichern.
Meine erweiterung unter der Fhem location ist:


<Location /fhem>
        ProxyPass http://localhost:8083/fhem
        ProxyPassReverse http://localhost:8083/fhem
    </Location>

<Location /alexa>
        ProxyPass http://localhost:3000/
        ProxyPassReverse http://localhost:3000/
        AuthUserFile /etc/fhemapi-htpasswd
    </Location>


Unter AWS lambda änder ich folgende Bereiche natürlich mit meinen Daten an:


const PORT=443;
const HOST='myhome.is-my-castle.com';
const PATH='/alexa';
const AUTH='user:passwort';
// entry
exports.handler = function(event, context, callback) {
console.log(`EVENT: ${event}`);
console.log(`CONTEXT: ${context}`);   
var post_data = JSON.stringify(event);
var options = {
   hostname: HOST,
   port: PORT,
   //family: 6,
   path: PATH,
   method: 'POST',
   auth: AUTH,
   rejectUnauthorized: false, // accept self-signed


Ich bekomme es einfach nicht zum laufen. Bekomme folgende Fehlermeldung wenn ich https://meine _Domain/alexa eingebe:
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

Ich bekomme es einfach nicht hin. HAst du vieleicht eine Idee woran es liegen kann?

Danke im Voraus.

Gruß

Christoph

cyvr1

Hallo Christoph,

worunter läuft der Reverse-Proxy denn? Apache2? Dann schau doch mal auf der Alexa-Fhem Seite im Fhem Wiki. Dort gibt es einen Abschnitt "Absichern des Zugriffs", wo die Einrichtung eines Reverse-Proxy über Port 443 beschrieben wird.

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

Thyraz

Kann man TargetPositionState eigentlich beibringen auch auf "Schließe den Küchenrollladen" bzw. "Schließe die Rolläden" zu hören?
Irgendwie rutscht mir das natürlicher raus als "Mach die Rolläden runter".

Schließe/Öffne sind hier halt leider gleichzeitig Verb und Value...
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Prof. Dr. Peter Henning


slawekking

#2287
Zitat von: cyvr1 am 27 Februar 2017, 16:57:21
Hallo Christoph,

worunter läuft der Reverse-Proxy denn? Apache2? Dann schau doch mal auf der Alexa-Fhem Seite im Fhem Wiki. Dort gibt es einen Abschnitt "Absichern des Zugriffs", wo die Einrichtung eines Reverse-Proxy über Port 443 beschrieben wird.

Hi Stephan, danke für die Info.

ich nutze letsencrypt und den Apache2. Die Konfig funtioniert mit fhem und den Port 8083 super.

./letsencrypt-auto certonly --rsa-key-size 4096 -d <domain>

Habe die Konfig um die location alexa erweitert.

IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName <domain>
    SSLEngine on
    SSLProxyEngine on
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/<domain>.error.log
    CustomLog ${APACHE_LOG_DIR}/<domain>.access.log combined

    SSLCertificateFile /etc/letsencrypt/live/<domain>/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/<domain>/privkey.pem

    Include /etc/letsencrypt/options-ssl-apache.conf

    <Location /fhem>
        ProxyPass http://localhost:8083/fhem
        ProxyPassReverse http://localhost:8083/fhem
    </Location>
   
        <Location /alexa>
        ProxyPass https://localhost:3000/
        ProxyPassReverse https://localhost:3000/
   AuthUserFile /etc/fhemapi-htpasswd
    </Location>


    <Proxy *>
        AuthType Basic
        AuthName "Password for FHEM Required"
        AuthUserFile /etc/fhem-htpasswd
        Require valid-user
        Order deny,allow
        Allow from all
    </Proxy>
</VirtualHost>
</IfModule>


Die Wiki habe ich gelese und daher die Konfig für lambda AWS.

Bekomme jetzt folgende Fehlermeldung:

Error durringssl handshake with remote server

Gruß

Christoph

Radikant

Nur mal eine kleine Frage:

Muss der CustomSkill immer gerätegebunden sein, oder gehen auch Sachen wie:

Alexa sage FHEM Ich muss jetzt arbeiten
Alexa sage FHEM Meine Uhr ist kaputt
(Irgendwie sowas  ;D)

Und das dann das Gesagte irgendwo in einem Reading steht ?

LG
Rudolf :D
Aller Anfang ist schwer...

Esjay

Zitat von: Radikant am 28 Februar 2017, 09:51:32
Nur mal eine kleine Frage:

Muss der CustomSkill immer gerätegebunden sein, oder gehen auch Sachen wie:

Alexa sage FHEM Ich muss jetzt arbeiten
Alexa sage FHEM Meine Uhr ist kaputt
(Irgendwie sowas  ;D)

Und das dann das Gesagte irgendwo in einem Reading steht ?



LG
Rudolf :D

fhemIntents unter dem Alexa Device. Anschließend kannst du mit nem notify drauf reagieren.

MadMax-FHEM

Zitat von: Radikant am 28 Februar 2017, 09:51:32
Muss der CustomSkill immer gerätegebunden sein, oder gehen auch Sachen wie:

Alexa sage FHEM Ich muss jetzt arbeiten
Alexa sage FHEM Meine Uhr ist kaputt
(Irgendwie sowas  ;D)

Ja: Fhemintent

Entweder mit direktem Aufruf einer Sub (inkl. als Return die Antwort) oder per notify auf den Fhemintent und dann sub.

und neuerdings (bzw. "prototypisch") auch mit Übergabe von "Parametern"...

https://forum.fhem.de/index.php/topic,67490.msg593408.html



Zitat von: Radikant am 28 Februar 2017, 09:51:32
Und das dann das Gesagte irgendwo in einem Reading steht ?

Wohl eher (immer noch) nicht...

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)

Radikant

Das werde ich mich dann mal gaaaaaanz langsam rantasten ;D .

Aber schön zu hören, dass es irgendwie geht .  :)

Aller Anfang ist schwer...

Ma_Bo

Hallo,
ich habe eine Frage, wie kann ich eine zufällige Ausgabe in meiner sub hinbekommen:

Meine Sub ist z.B. so:

sub alexa_guten_morgen()
{
my $Skillname = Alexa_Skillname();
        {return "Guten Morgen";}
}


Jetzt möchte ich aber, sagen wir mal 5 zufällige Ausgaben haben, wie kann ich es jetzt einbauen, dass er einfach zufällig eine Ausgabe macht?

Beispiel wie ich es mir vorstelle, von den 5 aufgelisteten, soll einfach eine zufällig ausgewählt werden und ausgegeben werden:

sub alexa_guten_morgen()
{
my $Skillname = Alexa_Skillname();
        {return "Guten Morgen";}
        {return "Hallo und einen guten Morgen wünsche ich dir";}
        {return "Guten Morgen. Ich hoffe du hast gut geschlafen";}
        {return "Gut geschlafen";}
        {return "Hey ich wünsche dir einen guten Morgen";}
}


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.

Benni

Über Zufallszahlen

so irgendwie:


my $zz=int(rand(1)*5)+1;

return "blah" if($zz==1);
return "blubb" if($zz==2);

...

return "default";


cyvr1

Hallo Christoph,

Zitat von: slawekking am 27 Februar 2017, 19:49:26
Bekomme jetzt folgende Fehlermeldung:

Error durringssl handshake with remote server

Gruß

Christoph

kommt die Fehlermeldung nach Eingabe der Anmeldedaten, wenn du die URL <dein-host>/alexa in den Browser eingibst? Dann hatte ich den auch. Der Grund ist wohl, dass der Apache2 manchmal Probleme mit selbst-signierten SSL Zertifikaten hat.

Ich habe bei mir in der Konfiguration des apache Servers unter "SSLEngine on" und "SSLProxyEngine on" noch folgendes angegeben:


SSLProxyVerify off
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off


Damit läuft es dann bei mir.

Seltsam ist, dass ich diese zusätzlichen Zeilen auf meinem Raspi 2 mit Wheezy nicht benötigt habe, da lief es ohne sie direkt.
Mit dem Raspi 3 mit Jessy dagegen brauch ich sie.

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