[37_echodevice] Amazon Echo Modul (nicht Alexa)

Begonnen von michael.winkler, 12 Januar 2018, 18:20:12

Vorheriges Thema - Nächstes Thema

WumpE

Zitat von: netsrac4th am 15 Januar 2019, 20:33:29
Das kannste doch sicher vom Host mit einer iptables rule auf den Container lösen, oder?

Das macht docker auf der syno allein ..... ich gebe nur an , Mappe 3002 vom Host auf die 3002 vom Container .... somit ist der Container über die hostip:3002 erreichbar .

Genauso läufts auch mit den webports von fhem .... 8083 vom Host auf die 8083 vom Container gemappt und schon erreichst du per hostip:8083 das fhem webinterface .

Nur Micha seine Lösung jetzt sagt mir es wäre nicht erreichbar ..... wobei der Fehler vom net.js also nodejs kommt.
Über Mich: Stefan, Informatiker, Systementwicklung Prozessleittechnik
Server: NUC7i5 - Debian Docker
Container: FHEM,DEBMATIC,EMQX,NODERED,SONOS2MQTT,TRAEFIK,HOMEBRIDGE,DECONZ
Aktoren/Sensoren: HM-RF, HM-IP, EnergyCam, Shelly, MiLight, Hue, SONOS, OEG KMS-D+, Echo's, Worx
Frontends: Smartvisu 2.9

michael.winkler

Zitat von: WumpE am 15 Januar 2019, 21:01:07
Das macht docker auf der syno allein ..... ich gebe nur an , Mappe 3002 vom Host auf die 3002 vom Container .... somit ist der Container über die hostip:3002 erreichbar .

Genauso läufts auch mit den webports von fhem .... 8083 vom Host auf die 8083 vom Container gemappt und schon erreichst du per hostip:8083 das fhem webinterface .

Nur Micha seine Lösung jetzt sagt mir es wäre nicht erreichbar ..... wobei der Fehler vom net.js also nodejs kommt.
Du muss schon die IP-Adresse von deinem Container verwenden. Der Link über die FHEM Webseite ist dann halt falsch. Hier muss du die IP Adresse in der Adressleiste dementsprechend ersetzen.

WumpE

Zitat von: michael.winkler am 15 Januar 2019, 21:03:20
Du muss schon die IP-Adresse von deinem Container verwenden. Der Link über die FHEM Webseite ist dann halt falsch. Hier muss du die IP Adresse in der Adressleiste dementsprechend ersetzen.

Das geht nicht , der überschreibt immer mit der Container internen ip und öffnet keine Seite

Über Mich: Stefan, Informatiker, Systementwicklung Prozessleittechnik
Server: NUC7i5 - Debian Docker
Container: FHEM,DEBMATIC,EMQX,NODERED,SONOS2MQTT,TRAEFIK,HOMEBRIDGE,DECONZ
Aktoren/Sensoren: HM-RF, HM-IP, EnergyCam, Shelly, MiLight, Hue, SONOS, OEG KMS-D+, Echo's, Worx
Frontends: Smartvisu 2.9

till24

Zitat von: michael.winkler am 15 Januar 2019, 16:50:50
Kannst du mir den Inhalt der Datei mal per PN zuschicken?


Gesendet von iPhone mit Tapatalk

Ich habe nun das gleiche Problem wie sig10680. Was war denn hier die Lösung?

popy

#1939
Zitat von: michael.winkler am 15 Januar 2019, 20:41:12
Für Alle die noch Probleme haben. Für die NPM Version wird mindestens Node v8.12 benötigt.

Auf Seite 1 gibt es eine aktuelle Version die die Version vorher prüft.

habs jetzt manuell npm_install gemacht lt. Dokumentatio.
Wenn ich jetzt npm_login new mache -> connection refused und fhem startet neu.

Geht auch eine v11 von node? Oder muss es die 8.12 sein?
Habe derzeit 8.11.

Danke

Edit - Es läuft:

Es war die alte node version auf meinem RPI3, die war 8.11, Durch denn Tipp habe ich wie folgt upgedated auf 8.15:


pi@rfhem-pi:~ $ node -v
v8.11.1
pi@rfhem-pi:~ $ sudo su -
pi@rfhem-pi:~ $ apt-get remove nodered -y
pi@rfhem-pi:~ $ apt-get remove nodejs nodejs-legacy -y
pi@rfhem-pi:~ $ apt-get remove npm  -y
pi@rfhem-pi:~ $ curl -sL https://deb.nodesource.com/setup_8.x | bash -
pi@rfhem-pi:~ $ apt-get install -y nodejs
pi@rfhem-pi:~ $ node -v
v8.15.0


Dann einmal "npm_login new", kam dann der Amazon Login und der Cookie wurde gespeichert.
Danach konnte sich das Module wieder einloggen.

Danke
pOpY

sig10680

Zitat von: till24 am 15 Januar 2019, 22:26:02
Ich habe nun das gleiche Problem wie sig10680. Was war denn hier die Lösung?

So nach langen hin und her konnte mir Michael helfen,
bei mir war eine alte Node Version auf meinem System Schuld.

Die Lösung für alle die ebenfalls dieses Problem haben...

sudo apt-get install curl
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get update
sudo apt-get install nodejs


Jetzt mit der Version v8.15. läuft alles wie geschmiert!

Danke Nochmals an den Modulentwickler für seine tolle Arbeit und Hilfe

MFG Sig10680

WumpE

#1941
So Micha, work arround gefunden, bitte für die Dockeruser mit reinbasteln .

Beim Docker unterscheidet man die ProxyIP und den die ProxyListenerIP. an meinem Beispiel Container hat die 172.18.0.2 und DockerHost hat die 10.10.10.7. Ich habe in deiner echodevice.pm einfach mal den ProxyListenerIP hard auf 172.18.0.2 gesetzt und die ProxyIP auf 10.10.10.7, damit klappt es. Du setzt das Attribut NPM_Proxy_IP sowohl beim Listener als auch beim Proxy.

Man könnte auch nochmal testen den Listener hard auf 127.0.0.1 (localhost) zu setzen , das könnte auch klappen. Werde ich gleich mal versuchen.
**** UPDATE *****
localhost als listener geht nicht
aber du kannst beim listener die ermittelte inet-addresse eintragen und als Attrbut würde ich nicht den namen NPM_Proxy_IP nutzen , sondern NPM_Public_IP und diese ist dann in deinem Code die ProxyIP
Zitatelse {
      Log3 $name, 3, "[$name] [echodevice_NPMLoginNew] Proxy Port $ProxyPort is free";
   }

   Log3 $name, 3, "[$name] [echodevice_NPMLoginNew] Proxy IP $ProxyIP";

   $ProxyIP = '10.10.10.7';         # Name Ändern auf PublicIP
   $ProxyPort = '3002';            # Keine ahnung wie man hiermit umgeht, wenn man zb Public Port 33002 auf ContainerPort 3002 mappt (ich hatte jetzt 3002 auf 3002)
   my $ProxyListenIP = '172.18.0.2';    # OwnIP aus Zeile 4262 -> Ein Attr ist nur für den Fehlerfall hilfreich fest zu setzen.
   
   my $SkriptContent  = "alexaCookie = require('alexa-cookie2');" . "\n";
   $SkriptContent    .= "fs = require('fs');" . "\n";
   $SkriptContent    .= "" . "\n";
   $SkriptContent    .= "const config = {" . "\n";
   $SkriptContent    .= "    logger: console.log," . "\n";
   $SkriptContent    .= "    setupProxy: true," . "\n";
   $SkriptContent    .= "    proxyOwnIp: '$ProxyIP'," . "\n";
   $SkriptContent    .= "    proxyPort: $ProxyPort," . "\n";
   $SkriptContent    .= "    proxyListenBind: '$ProxyListenIP'," . "\n";
   $SkriptContent    .= "    proxyLogLevel: 'info'" . "\n";
   $SkriptContent    .= "};" . "\n";
   $SkriptContent    .= "" . "\n";
   $SkriptContent    .= "alexaCookie.generateAlexaCookie('LoginFHEM', 'xxxx', config, (err, result) => {" . "\n";
   $SkriptContent    .= "    console.log('RESULT: ' + err + ' / ' + JSON.stringify(result));" . "\n";
   $SkriptContent    .= "    fs.writeFileSync('./cache/alexa-cookie/" . $number . "result.json', JSON.stringify(result) , 'utf-8'); " . "\n";
   $SkriptContent    .= "    if (result && result.csrf) {" . "\n";
   $SkriptContent    .= "        alexaCookie.stopProxyServer();" . "\n";
   $SkriptContent    .= "    }" . "\n";
   $SkriptContent    .= "});" . "\n";
   $SkriptContent    .= "" . "\n";

   my $filename  = "cache/alexa-cookie/" . $number . "create-cookie.js";


Grüße und Danke für deine Mühe
Über Mich: Stefan, Informatiker, Systementwicklung Prozessleittechnik
Server: NUC7i5 - Debian Docker
Container: FHEM,DEBMATIC,EMQX,NODERED,SONOS2MQTT,TRAEFIK,HOMEBRIDGE,DECONZ
Aktoren/Sensoren: HM-RF, HM-IP, EnergyCam, Shelly, MiLight, Hue, SONOS, OEG KMS-D+, Echo's, Worx
Frontends: Smartvisu 2.9

michael.winkler

Zitat von: WumpE am 16 Januar 2019, 11:04:38
So Micha, work arround gefunden, bitte für die Dockeruser mit reinbasteln .

Beim Docker unterscheidet man die ProxyIP und den die ProxyListenerIP. an meinem Beispiel Container hat die 172.18.0.2 und DockerHost hat die 10.10.10.7. Ich habe in deiner echodevice.pm einfach mal den ProxyListenerIP hard auf 172.18.0.2 gesetzt und die ProxyIP auf 10.10.10.7, damit klappt es. Du setzt das Attribut NPM_Proxy_IP sowohl beim Listener als auch beim Proxy.

Man könnte auch nochmal testen den Listener hard auf 127.0.0.1 (localhost) zu setzen , das könnte auch klappen. Werde ich gleich mal versuchen.
**** UPDATE *****
localhost als listener geht nicht
aber du kannst beim listener die ermittelte inet-addresse eintragen und als Attrbut würde ich nicht den namen NPM_Proxy_IP nutzen , sondern NPM_Public_IP und diese ist dann in deinem Code die ProxyIP

Grüße und Danke für deine Mühe
Danke für diese Info. Ja das baue ich noch mit ein.

WumpE

Micha noch eine Frage, muss das Attr browser_save_data 1 bleiben, oder kann dies nach der ersten erfolgreichen erzeugung abgeschalten werden?
Über Mich: Stefan, Informatiker, Systementwicklung Prozessleittechnik
Server: NUC7i5 - Debian Docker
Container: FHEM,DEBMATIC,EMQX,NODERED,SONOS2MQTT,TRAEFIK,HOMEBRIDGE,DECONZ
Aktoren/Sensoren: HM-RF, HM-IP, EnergyCam, Shelly, MiLight, Hue, SONOS, OEG KMS-D+, Echo's, Worx
Frontends: Smartvisu 2.9

michael.winkler

Zitat von: WumpE am 16 Januar 2019, 13:16:37
Micha noch eine Frage, muss das Attr browser_save_data 1 bleiben, oder kann dies nach der ersten erfolgreichen erzeugung abgeschalten werden?
Das wird eigentlich nur im Fehlerfall benötigt

Christian72D

Zitat von: sig10680 am 16 Januar 2019, 07:21:33

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -


Was mache ich, wenn bei mir bei obigem Befehl folgende Meldung kommt:

E: Der Treiber für Methode /usr/lib/apt/methods/HTTPS konnte nicht gefunden werden.
N: Ist das Paket apt-transport-HTTPS installiert?
E: Fehlschlag beim Holen von HTTPS://ppa.launchpad.net/webupd8team/java/ubuntu/dists/trusty/InRelease
E: Einige Indexdateien konnten nicht heruntergeladen werden. Sie wurden ignoriert oder alte an ihrer Stelle benutzt.
Error executing command, exiting

balli1187

N: Ist das Paket apt-transport-HTTPS installiert?
Ist das Paket installiert?


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

Christian72D

Zitat von: balli1187 am 16 Januar 2019, 17:00:08
N: Ist das Paket apt-transport-HTTPS installiert?
Ist das Paket installiert?


Gesendet von iPhone mit Tapatalk
christian@fhem:~$ sudo apt-get install apt-transport-HTTPS
E: Paket apt-transport-HTTPS kann nicht gefunden werden.

Toto1973

Bei mir funktioniert die neue Version mit npm_login.
Nach der Installation von npm (apt-get install nodejs npm) und ausführen von set NPM_install und anschließendem set NPM_login new, funktioniert nun das Modul wieder.
Ich bin wieder connected!

Danke für die Arbeit!
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000

balli1187

Zitat von: Christian72D am 16 Januar 2019, 17:10:09
christian@fhem:~$ sudo apt-get install apt-transport-HTTPS
E: Paket apt-transport-HTTPS kann nicht gefunden werden.

Wenn er das Paket nicht kennt wird wahrscheinlich auch das zugehörige repository nicht hinterlegt sein und es ist wahrscheinlich nicht installiert. Also mal googeln wie du dieses Paket auf deine maschine bekommst ;-)


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero