[alexa-fhem | Generell] Alles zu Installation und damit verbundenen Problemen

Begonnen von prodigy7, 09 November 2016, 19:42:01

Vorheriges Thema - Nächstes Thema

baerbel

Hi,

sieh dir mal das Skript an /etc.init.d/alexa - sofern du dort logging in opt/fhem/ ... usw drin hast benötigt diese Verzeichnis die passende Rechte (vermutlich muss dann user pi dort reinschreiben dürfen. Zu ersten Analyse mal das Logschreiben aus dem Skript rausnehmen.

Grüße -Bernd

baerbel

@Morrino:

zwei Dinge:

wenn du auf deine äussere IP (am besten via LTE/3G) einen Connect auf Port 3000 machst, sollte sowas kommen: (https://<deine_ip oder DNS_Name>:3000

{"header":{"name":"UnsupportedOperationError","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Control","messageId":"9c72a78f-6faf-4e13-a18e-00bdfb534fdf"},"payload":{}}

Kannst du mal deine config.json posten? Hast du Authentication an?

Grüße - Bernd


Breaked

Zitat von: baerbel am 23 Januar 2017, 20:23:39
Hi,

sieh dir mal das Skript an /etc.init.d/alexa - sofern du dort logging in opt/fhem/ ... usw drin hast benötigt diese Verzeichnis die passende Rechte (vermutlich muss dann user pi dort reinschreiben dürfen. Zu ersten Analyse mal das Logschreiben aus dem Skript rausnehmen.

Grüße -Bernd

Habe ich auskommentiert, aber bringt auch keine Verbesserung. Anzeige bei FHEM.Alexa.Status zeigt auch keinerlei Änderung.

Skript sieht wie folgt aus:
#!/bin/sh
### BEGIN INIT INFO
# Provides: alexa
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time for alexa
# Description: Enable service provided by daemon.
### END INIT INFO
export PATH=$PATH:/usr/local/bin
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules
PID=`pidof alexa`
export ALEXAPATH="/opt/fhem/alexa-fhem"
#export LOGPATH="/opt/fhem/log"
case "$1" in
start)
if ps -p $PID > /dev/null 2>&1; then
        echo "Alexa is already running"
        perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Alexa.Status info Alexa is already running"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa.Status on"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa off"
else
        su - "pi" -c "cd $ALEXAPATH;./bin/alexa > $LOGPATH/alexa-`date +%Y-%m`.log 2>&1 &"
        echo "Alexa starting"
        sleep 2
$0 status
fi
;;
stop)
if ! ps -p $PID > /dev/null 2>&1; then
        echo "Alexa is not running"
        perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Alexa.Status info Alexa is not running"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa.Status off"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa off"
else
        kill $PID
        echo "Alexa closed"
        perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Alexa.Status info Alexa closed"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa.Status off"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa off"
fi
;;
restart)
if ! ps -p $PID > /dev/null 2>&1; then
        $0 start
else
        $0 stop
        $0 start
fi
;;
status)
if ps -p $PID > /dev/null 2>&1; then
        echo "Alexa is running PID $PID"
        perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Alexa.Status info Alexa running as PID $PID"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa.Status on"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa off"
else
        echo "Alexa is not running"
        perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Alexa.Status info Alexa is not running"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa.Status off"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa off"
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
echo "script done"
exit 0

Bereit für dein eigenes Smart Home?
http://ownsmarthome.de

MadMax-FHEM

#783
Zitat von: Breaked am 23 Januar 2017, 21:23:59
Habe ich auskommentiert, aber bringt auch keine Verbesserung. Anzeige bei FHEM.Alexa.Status zeigt auch keinerlei Änderung.

Skript sieht wie folgt aus:
#!/bin/sh
### BEGIN INIT INFO
# Provides: alexa
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time for alexa
# Description: Enable service provided by daemon.
### END INIT INFO
export PATH=$PATH:/usr/local/bin
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules
PID=`pidof alexa`
export ALEXAPATH="/opt/fhem/alexa-fhem"
#export LOGPATH="/opt/fhem/log"
case "$1" in
start)
if ps -p $PID > /dev/null 2>&1; then
        echo "Alexa is already running"
        perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Alexa.Status info Alexa is already running"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa.Status on"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa off"
else
        su - "pi" -c "cd $ALEXAPATH;./bin/alexa > $LOGPATH/alexa-`date +%Y-%m`.log 2>&1 &"
        echo "Alexa starting"
        sleep 2
$0 status
fi
;;
stop)
if ! ps -p $PID > /dev/null 2>&1; then
        echo "Alexa is not running"
        perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Alexa.Status info Alexa is not running"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa.Status off"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa off"
else
        kill $PID
        echo "Alexa closed"
        perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Alexa.Status info Alexa closed"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa.Status off"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa off"
fi
;;
restart)
if ! ps -p $PID > /dev/null 2>&1; then
        $0 start
else
        $0 stop
        $0 start
fi
;;
status)
if ps -p $PID > /dev/null 2>&1; then
        echo "Alexa is running PID $PID"
        perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Alexa.Status info Alexa running as PID $PID"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa.Status on"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa off"
else
        echo "Alexa is not running"
        perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Alexa.Status info Alexa is not running"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa.Status off"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa off"
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
echo "script done"
exit 0



Nicht den Pfad auskommentieren sondern den Aufruf...

ABER: du hast (wie ich glaube gelesen zu haben) nach /home/pi/alexa-fhem installiert.
Dann musst du ALEXAPATH und LOGPATH anpassen...

EDIT: wenn das dann auch nicht geht mal "sudo /etc/init.d/alexa start" als User pi auf der Console eingeben... Und posten was dann kommt...

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)

Breaked

Nicht den Pfad, sondern den Aufruf.... kannst du das etwas genauer erläutern?

Das mit dem Pfad dachte ich auch und hatte es mal auf /home/pi/alexa-fhem geändert, aber dies scheint eigentlich egal zu sein.
Denn auch wenn ich per ftp ins Verzeichnis /opt/fhem/ rein schaue, existiert dort ebenfalls das Verzeichnis und dessen Inhalt.

Ich bin mir derzeit auch nicht im klaren darüber, wie ich eine weitere Fehleranalyse machen soll.

pi@raspberrypi:~ $ sudo /etc/init.d/alexa start
-su: /alexa-2017-01.log: Permission denied
Alexa starting
Alexa is not running
script done
script done
pi@raspberrypi:~ $


MfG
Bereit für dein eigenes Smart Home?
http://ownsmarthome.de

baerbel

.. aus

su - "pi" -c "cd $ALEXAPATH;./bin/alexa > $LOGPATH/alexa-`date +%Y-%m`.log  2>&1 &"

sollte

su - "pi" -c "cd $ALEXAPATH;./bin/alexa > 2>&1 &"

werden -

den alexapath auf das Verzeichnis anpassen, von welchem du es händisch starten kannst - vermutlich hattest du mal im Homeverzeichnis angefangen und dann an einem anderen Ort installiert -

Grüße - Bernd

Breaked

Nein, hatte das Start-Script genau so installiert, wie in dem verlinkten Beitrag beschrieben.
Aber danke für deinen Tipp, morgen wird es direkt ausprobiert :)
Bereit für dein eigenes Smart Home?
http://ownsmarthome.de

Schnatternde

Weis da niemand eine Lösung?


Zitat von: Schnatterente am 23 Januar 2017, 19:09:23
Hey Leute,

ich scheitere schon am ersten Schritt:

sudo apt-get install nodejs-legacy

ergibt bei mir:
Die folgenden Pakete haben unerfüllte Abhängigkeiten:
nodejs-legacy : Hängt ab von: nodejs (>= 0.6.19~dfsg1-3~) soll aber nicht installiert werden
E: Probleme können nicht korrigiert werden, Sie haben zurückgehaltene defekte Pakete.


Habe ich da was mit den Versionen von nodejs übersehen?
Ich habe:
pi@raspberrypi:~ $ node -v
v4.7.2
pi@raspberrypi:~ $ nodejs -v
v4.7.2


Esjay


Schnatternde


Morrino

Zitat von: baerbel am 23 Januar 2017, 20:36:07
@Morrino:

zwei Dinge:

wenn du auf deine äussere IP (am besten via LTE/3G) einen Connect auf Port 3000 machst, sollte sowas kommen: (https://<deine_ip oder DNS_Name>:3000

{"header":{"name":"UnsupportedOperationError","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Control","messageId":"9c72a78f-6faf-4e13-a18e-00bdfb534fdf"},"payload":{}}

Kannst du mal deine config.json posten? Hast du Authentication an?

Grüße - Bernd

Hi Bernd,

meine config.json sieht folgendermaßen aus:
{
    "alexa": {
        "name": "Alexa FHEM",
        "keyFile": "./key.pem",
        "certFile": "./cert.pem",
        "nat-pmp": "",
        "nat-upnp": false,
        "applicationId": "ask.skill.b678XXXXXXXXXXXXXXXXXXXX",
        "oauthClientID": "amzn1.application-oa2-client.XXXXXXXXXXXXXXXXXX"
    },
   
    "connections": [
        {
            "name": "FHEM",
            "server": "127.0.0.1",
            "port": "8083",
            "filter": "room=alexa"
        }
    ]
}


Wenn ich meine fritz Adresse von außen ausrufe (mit Port 3000) kommt wie gesagt keinerlei Anzeige, außer eine Fehlermeldung das die Webseite nicht erreichbar ist bzw. die Verbindung abgelehnt worden ist.

Ich habe irgenwann aber mal eine Authentication eingerichtet wenn ich mich richtig entsinne... ::) (peinlich das ich das nicht mehr weiß)

Bin momentan auf Dienstreise und kann leider nicht genau nachsehen.

Was müsste ich denn dann ändern?

Gruß.

heuckmann

#791
Hallo,

erst einmal vielen Dank für die vielen Hilfestellungen Tipps und Tricks.

Ich konnte damit die meisten Probleme selbst beheben.

Nun habe ich aber eine Meldung wo ich hier und auch im Internet nicht weiter kommen.

Ich bekomme beim Test in AWS Lambda folgende Fehlermeldung:

{
  "errorMessage": "RequestId: 700f12af-e1a8-11e6-a236-dbb5e786ad04 Process exited before completing request"

}

Cloudwatch loggt folgendes:


20:13:43
START RequestId: 700f12af-e1a8-11e6-a236-dbb5e786ad04 Version: $LATEST

20:13:43
2017-01-23T20:13:43.345Z   700f12af-e1a8-11e6-a236-dbb5e786ad04   *************** Input *************

20:13:43
2017-01-23T20:13:43.362Z   700f12af-e1a8-11e6-a236-dbb5e786ad04   { session: { new: false, sessionId: 'amzn1.echo-api.session.[unique-value-here]', attributes: { correctAnswerText: 'Donner', speechOutput: 'Question 1. What was Rudolph\'s father\'s name? 1. Blixen. 2. Comet. 3. Donner. 4. Dasher. ', repromptText: 'Question 1. What was Rudolph\'s father\'s name? 1. B

20:13:43
2017-01-23T20:13:43.445Z   700f12af-e1a8-11e6-a236-dbb5e786ad04   *************** Input End*************




Ich denke mal der Übeltäter steckt hier in der nächsten Zeile?
=========================
20:13:43
2017-01-23T20:13:43.447Z   700f12af-e1a8-11e6-a236-dbb5e786ad04   TypeError: Cannot read property 'namespace' of undefined at exports.handler (/var/task/index.js:18:25)

Das wäre dann hier :
=============

switch (event.header.namespace) {
       
        /**
         * The namespace of "Discovery" indicates a request is being made to the lambda for
         * discovering all appliances associated with the customer's appliance cloud account.
         * can use the accessToken that is made available as part of the payload to determine
         * the customer.
         */
        case 'Discovery':
            handleDiscovery(event, context);
            break;

            /**
             * The namespace of "Control" indicates a request is being made to us to turn a
             * given device on, off or brighten. This message comes with the "appliance"
             * parameter which indicates the appliance that needs to be acted on.
             */
        case 'Control':
            handleControl(event, context);
            break;

            /**
             * We received an unexpected message
             */
        default:
            log('Err', 'No supported namespace: ' + event.header.namespace);
            context.fail('Something went wrong');
            break;
    }




20:13:43
END RequestId: 700f12af-e1a8-11e6-a236-dbb5e786ad04

20:13:43
REPORT RequestId: 700f12af-e1a8-11e6-a236-dbb5e786ad04   Duration: 229.15 ms   Billed Duration: 300 ms Memory Size: 512 MB   Max Memory Used: 8 MB

20:13:43
RequestId: 700f12af-e1a8-11e6-a236-dbb5e786ad04 Process exited before completing request
No newer events found at the moment. Retry.
Feedback
English
Terms of UsePrivacy Policy© 2008 - 2017, Amazon Web Services, Inc. or



So richtig schlau werde ich da genau nicht raus. Ich habe keine rotes X vor den Zeilen - habe auch mehrfach die Funktion gelöscht und neu generiert.

Hat jemand einen Lösungsansatz für mich?

Vielen Dank

baerbel

Hi,

da du den "Standartport" für FHEMWEB verwendest gehe ich stark davon aus, dass du beim Anmelden Benutzername und Passwort eingibst. Sollte ich da richtig liegen, dann deine config.json wie unterstehenden anpassen:

{
    "alexa": {
        "name": "Alexa TEST",
        "keyFile": "./key.pem",
        "certFile": "./cert.pem",
        "applicationId": "amzn1.ask.skill.xxxxxxxxxxxxxxxxxxxxxxxxx",
        "oauthClientID": "amzn1.application-oa2-client.xxxxxxxxxxxxxxxxxxxxxx"
    },

    "connections": [
        {
            "name": "FHEM",
            "server": "127.0.0.1",
            "auth": {
            "user": "<fhem_user_id",
            "pass": "<fhem_passwort>"
             },
            "ssl":true,
            "port": "8083",
            "filter": "room=<dein Alexa Raum>"
        }
    ]
}


Da ich bei mir FHEMWEB auf SSL am laufen habe findet sich bei mir auch noch der Eintrag

"ssl":true,

in der config.json.

ich hoffe, dass dir das weiterhilft -

Was dein Portweiterleitungsthema angeht: komisch, komisch .... evtl. mal intern auf dein fhem auf Port 3000 gehen, um zu prüfen ob da alles passt:

https://<interne_ip_fherm>:3000

auch dann solltest du folgendes sehen:

{"header":{"name":"UnsupportedOperationError","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Control","messageId":"a9fee4eb-7316-4752-a5cd-5b705f58f239"},"payload":{}}

Sollte das passen, dann deine Portweiterleitung nochmal ansehen - definitiv auch der korrekte Zielhost in der Weiterleitung eingetragen?

Grüße - Bernd

baerbel

Moin Heumann,

bin da nicht so der Profi - was testest du denn genau? Wie sieht denn dein Testevent aus?

Viel wichtiger: Hast du ein "Thema" mit deiner Installation, wenn ja, was tut denn nicht bei dir?

Grüße - Bernd

heuckmann

#794
Hallo Bernd,

auch auf die Gefahr hin dich nicht richtig verstanden zu haben.

Ich habe ja alles versucht nach Beschreibung einzurichten.

Dazu gehört ja der Part LAMBDA. Wenn ich hier dann "speichern+testen" bzw "testen" wähle taucht die Meldung auf.

Möglicherweise ist das auch der Übeltäter, warum Alexa-Fhem zwar Geräte sieht - aber in Alexa App unter Geräte suchen nichts findet?

Danke und Grüße

Martin