Ich bekomme alexa-fhem unter Ubuntu 16.04 nicht zum Laufen ...
Die Probleme fingen schon im ersten Schritt an:
sudo apt-get install nodejs npm
liefert folgenden Fehler:
Die folgenden Pakete haben unerfüllte Abhängigkeiten:
nodejs : Kollidiert mit: npm
Also habe ich nodejs und npm vollständig entfernt
sudo apt-get remove nodejs
sudo apt-get remove npm
nodesource.lst in /etc/apt/sources.list.d gelöscht
und - wie im Wiki angegeben - neu installiert
sudo apt-get install nodejs npm
node --version zeigt als Version v14.15.4
Als nächstes habe ich alexa-fhem installiert
sudo npm install -g alexa-fhem
mit folgendem Ergebnis:
▀ ╢░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
WARN engine alexa-fhem@0.5.57: wanted: {"node":">=8.0.0"} (current: {"node":"4.2.6","npm":"3.5.2"})
WARN engine alexa-fhem@0.5.57: wanted: {"node":">=8.0.0"} (current: {"node":"4.2loadDep:ws → get ▐ ╢██████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
WARN engine postman-request@2.88.1-postman.28: wanted: {"node":">= 6"} (current:loadDep:uuid → headers ▀ ╢██████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
WARN engine har-validator@5.1.5: wanted: {"node":">=6"} (current: {"node":"4.2.6loadDep:uuid → mapToRegis ▄ ╢██████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
WARN engine @postman/form-data@3.1.1: wanted: {"node":">= 6"} (current: {"node":npm WARN deprecated har-validator@5.1.5: this library is no longer supported
loadDep:punycode → 304 ▀ ╢██████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
WARN engine punycode@2.1.1: wanted: {"node":">=6"} (current: {"node":"4.2.6","np/usr/local/bin/alexa-fhem -> /usr/local/lib/node_modules/alexa-fhem/bin/alexa
/usr/local/lib
└── alexa-fhem@0.5.57
Anscheinend ist die Node Version in Ubuntu 16.04 zu alt, also hab' ich sie (gemäß mwinklers Beschreibung zum echodevice) aktualisiert und alexa-fhem erneut installiert
sudo curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install build-essential nodejs
sudo npm install -g alexa-fhem
Bis auf die Warnung scheint alles ok
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
/usr/local/bin/alexa-fhem -> /usr/local/lib/node_modules/alexa-fhem/bin/alexa
+ alexa-fhem@0.5.57
updated 1 package in 3.517s
Ein "define alexa alexa" sollte in FHEM jetzt funktioneren bzw. wenigstens zu einem "alexaFHEM stopped; failed to connect to fhem: 401: Authorization Required" führen, da das FHEM Web Passwort fehlt.
Aber egal was und wie oft ich es versuche - auch nach Angabe des Passworts mit attr alexa alexaFHEM-auth Benutzer:Passwort - kommt nur der Status "stopped", weder start, reload oder restart funktionieren ...
Hier noch ein Auszug aus der Logdatei
2021.01.20 14:31:37 2: Alexa: starting alexa-fhem: /usr/local/bin/alexa-fhem -c ./alexa-fhem.cfg
2021.01.20 14:31:37 3: Alexa: starting
2021.01.20 14:31:37 3: Alexa: using logfile: ./log/alexa-2021-01-20.log
2021.01.20 14:31:37 3: Alexa: read: end of file reached while sysread
2021.01.20 14:31:37 3: Alexa: stopped
Das File ./log/alexa-2021-01-20.log ist leer
Ich habe es mal mit einer älteren NodeJS Version probiert und bekomme jetzt folgende Ausgabe im Logfile
[20.1.2021, 14:52:24] using config from ./alexa-fhem.cfg
*** CONFIG: parsed completely
[20.1.2021, 14:52:24] os.homedir()=/opt/fhem
[20.1.2021, 14:52:24] this is alexa-fhem 0.5.57
[20.1.2021, 14:52:24] connecting to FHEM ...
[20.1.2021, 14:52:24] [FHEM] defaults to: will not send proactive events
[20.1.2021, 14:52:24] [FHEM] trying longpoll to listen for fhem events
[20.1.2021, 14:52:24] [FHEM] starting longpoll: http://127.0.0.1:8084/fhem?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON×tamp=1611150744706
[20.1.2021, 14:52:24] [FHEM] longpoll error: Error: socket hang up, retry in: 5000msec
*** FHEM: connection failed: Error: socket hang up
[20.1.2021, 14:52:24] Got SIGTERM, shutting down alexa-fhem...
[20.1.2021, 14:52:24] Reading alexaFHEM.ProxyConnection set to stopping;; alexa-fhem terminating
läuft immer noch nicht :-[
Beide Version von nodejs sollten gehen. Du bist mit dem 2. Anlauf weiter gekommen - da startet alexa-fhem immerhin überhaupt :-)
M.E. gibt es nun Schwierigkeiten von alexa-fhem, auf FHEM zuzugreifen. Du kannst ja mal den Aufruf per curl probieren:
curl -iv http://127.0.0.1:8084/fhem?XHR=1
Der Aufruf liefert folgendes Ergebnis:
root@NUC6CAYH:~# curl -iv http://127.0.0.1:8084/fhem?XHR=1
* Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 8084 (#0)
> GET /fhem?XHR=1 HTTP/1.1
> Host: 127.0.0.1:8084
> User-Agent: curl/7.47.0
> Accept: */*
>
* Recv failure: Die Verbindung wurde vom Kommunikationspartner zurückgesetzt
* Closing connection 0
curl: (56) Recv failure: Die Verbindung wurde vom Kommunikationspartner zurückgesetzt
Tja, dann läuft vielleicht bei Dir auf Port 8084 HTTPS und nicht HTTP?
8084 ist nicht in der Default-Installation da, von Haus aus läuft FHEM auf 8083.
Vermutlich hast Du da ein weiteres FHEMWEB-Gerät oder einen Socket definiert.
Ja, ich habe 2 FHEMWEB devices:
8084 aus dem lokalen Netz
8085 NGINX Reverse Proxy
hier noch der define von Port 8084
define LAN FHEMWEB 8084 global
setuuid LAN xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx
attr LAN alias Webserver lokal
attr LAN allowfrom 192.168.220.*
attr LAN csrfToken none
attr LAN editConfig 1
attr LAN group FHEM
attr LAN icon system_fhem
attr LAN longpoll 1
attr LAN room System
attr LAN stylesheetPrefix ios6touchpad
... und von
attr LAN allowfrom 192.168.220.*
ist der Zugriff von 127.0.0.1 nicht abgedeckt.
Ich habe 127.0.0.1 zu den erlaubten Adressen hinzugefügt und jetzt ist der status "running /usr/local/bin/alexa-fhem" :)
Jetzt kann ich mit der Einrichtung fortfahren - danke :)
Darüber würde ich noch mal nachdenken:
Zitat
attr LAN csrfToken none
Und jetzt bitte nicht: aber ist doch nur lokales Netz...
...und auch das allowFrom schränkt nur ein woher ein möglicher "Angriff" kommt. Aber wenn er genau von dort kommt!?
Weil dann: nicht verstanden was csrf ist und wozu/wogegen das Token hilft/helfen soll...
Aber wie immer: dein System...
Gruß, Joachim
Zitat von: MadMax-FHEM am 21 Januar 2021, 11:15:56
Darüber würde ich noch mal nachdenken:
attr LAN csrfToken none
Das ist wohl noch ein Überbleibsel ... hab' ich nie entfernt.