Beschreibung

Da es immer wieder Problem mit dem NPM Login Verfahren gibt, habe ich jetzt hier alle relevanten Informationen zusammengetragen. Diese Informationen sind erst ab der Version 0.0.55 gültig.

Definition in FHEM

Wenn Ihr den Einsatz vom neuen NPM Login Verfahren plant, könnt Ihr das Account Device wie folgt anlegen.

define <Name> echodevice xxx@xxx.xx xxx

Die Angabe von den Amazon Anmeldeinformationen wie Benutzername und das dazugehörige Kennwort ist nicht nötig. Die Angabe "xxx@xxx.xx xxx" ist nur nötig damit das FHEM Device angelegt werden kann.

 

ACHTUNG: Das @ Zeichen MUSS im ersten Bereich vorkommen, sonst wird das angelegte FHEM Device nicht als Account Device erkannt!

 

Wenn Ihr Euer FHEM Device schon mit den Amazon Anmeldeinformationen angelegt wurde, könnt Ihr diese auch wieder löschen. Hierzu müsst Ihr nur die Definition abändern.

 

Über den Link "DEF" könnt Ihr nachträglich die Anmeldeinformationen des FHEM Devices löschen.

 

In dem weißen Fensterbereich könnt Ihr nun die Fakedaten "xxx@xxx.xx xxx" eintragen.

 

Das Ganze müsst Ihr dann mit dem Button "modify ...." speichern.

NPM Systemvoraussetzungen

Das NPM Login Verfahren basiert auf NodeJS. Aus diesem Grund muss das Linux Paket NPM vorhanden sein. Je nach eingesetzter Debian Version unterscheidet sich die Installation. Bitte beachtet, dass sich die Installation von Eurer etwas unterscheiden kann. Diese Anleitungen müssen nicht immer zu 100% passen.

 

Debian Stretch (Version 9.x)

Das offiziellen Debian Stretch Repository enthält leider kein NPM Package. Zusätzlich ist die benötigte NodeJS Komponente im offiziellen Debian Stretch Repository zu alt. Daher müsst Ihr die benötigten Pakete über CURL installieren. Über folgende Befehle könnt Ihr das aktuelle CURL installieren:

sudo apt-get update
sudo apt-get install curl

 

Das Ergebnis sollte dann ungefähr so aussehen.

Jetzt könnt Ihr über folgenden Befehl das NodeJS 8.x Repository installieren:

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

 

Das Ergebnis sollte dann ungefähr so aussehen.

Wenn alles funktioniert hat, könnt Ihr über folgenden Befehl das NodeJS und NPM installieren:

sudo apt-get install build-essential nodejs

 

Das Ergebnis sollte dann ungefähr so aussehen.

Über folgende Befehle könnt Ihr die installierte Version prüfen:


node --version npm --version

Wenn alles erfolgreich installiert wurde, könnt Ihr entweder mit der manuellen oder mit der automatischen Installation fortfahren.

NPM Installation FHEM

Für die eigentliche FHEM Installation gibt es zwei Arten. 

  1. Manuell (per SSH)
  2. Automatisch (per FHEM Oberfläche)

Automatische (per FHEM Oberfläche)

Damit die automatische Installation funktioniert muss der FHEM Benutzer berechtigt sein "sudo" auszuführen. Um dies zu erreichen müsst Ihr in  die Datei "/etc/sudoers" folgendes eintragen.

fhem ALL=(ALL) NOPASSWD: ALL

Wenn der FHEM Benutzer diese Berechtigung nicht hat, wird im LOG folgendes erscheinen:

Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die
Regeln erklärt hat.  Normalerweise läuft es auf drei Regeln hinaus:

    #1) Respektieren Sie die Privatsphäre anderer.
    #2) Denken Sie nach, bevor Sie tippen.
    #3) Mit großer Macht kommt große Verantwortung.

[sudo] Passwort für fhem:

 

In der FHEM Weboberfläche wird die Fehlermeldung erscheinen.

Wenn alle Berechtigungen gesetzt wurden kann in FHEM die NPM Installation über ein "set NPM_install" angestartet werden.

 

Eine erfolgreiche Installation sieht dann ungefähr so aus.

Dieser Schritt kann mehrmals ausgeführt werden. Dies ist z.B. nötig wenn sich die "alexa-cookie" Version aktualisiert.

 

ACHTUNG: Wenn die Installation erfolgreich durchgeführt wurde, kann der Eintrag in der Datei "/etc/sudoers" wieder entfernt werden!

 

Manuell (per SSH)

Wer keine automatische Installation durchführen möchte, kann diese auch manuell machen. Hierfür sind einige Schritte notwendig.

  1. Herunterladen der NPM Pakete
  2. Berechtigungen setzen

Über folgenden Befehl werden die benötigten Pakete heruntergeladen:

sudo npm install --prefix /opt/fhem/cache/alexa-cookie alexa-cookie2

 

Das Ergebnis sollte dann ungefähr so aussehen. Die Warnungen können in der Regel ignoriert werden.

Nach erfolgreicher Installation, müsst Ihr über folgenden Befehl noch die Berechtigungen anpassen:

sudo chown -R fhem:  /opt/fhem/cache/alexa-cookie

Wenn Eure FHEM Installation nicht in dem Verzeichnis "/opt/fhem" liegt, müsst Ihr die Befehle dementsprechend anpassen.

NPM Login Standard FHEM

Um den eigentlichen Login Prozess zu starten müsst Ihr ein "set NPM_login new" ausführen.

In eine Standard FHEM Umgebung, sollte direkt nach dem Drücken der Schaltfläche "set" folgendes erscheinen:

Nach dem Drücken des Links, sollte eine weitere Webseite mit einer Amazon Anmeldung aufgehen.

 

Hier, müsst Ihr jetzt Eure Amazon Anmeldedaten eintragen. 

 

Hier, ist auch eine 2 Faktor Anmeldung möglich.

Wenn alles funktioniert hat, sollte direkt danach diese Meldung im Browser erscheinen.

NPM Login Erweitert

Auf einem Standard FHEM System versucht das Modul selbständig folgende Dinge zu finden:

  • FHEM IP-Adresse
  • FHEM Port-Nummer
  • NPM Bin-Datei
  • NodeJS BIN Datei

Da dies nicht immer zu 100% funktioniert, können diese Parameter über FHEM Attribute angepasst werden. Folgende Attribute gibt es hierfür:

Name Mögliche Werte Kurzbeschreibung
npm_bin [STRING]  Hier kann der Pfad zur Bindatei "npm" angepasst werden.

(Standard Wert = /usr/bin/npm)

npm_bin_node [STRING]

Hier kann der Pfad zur Bindatei "node" angepasst werden.

(Standard Wert = /usr/bin/node)

npm_proxy_ip [STRING]

Hier kann eine Proxy IP-Adresse angepasst werden, falls der automatische IP Ermittlung nicht funktioniert.

npm_proxy_listen_ip [STRING]

Diese Attribut wird nur in einer Docker Umgebung benötigt. Hier muss die FHEM Container IP-Adresse eingetragen werden.

npm_proxy_port [NUMERIC]

Hier kann der Proxy Port angepasst werden, falls der Standardport "3002" schon verwendet wird.

(Standard Wert = 3002)

npm_refresh_intervall [NUMERIC]

Hier kann der Intervall der Cookie Aktualisierung angepasst werden. Der Wert wird in Sekunden angegeben.

(Standard Wert = 6000)

Beschreibung Attribut "npm_bin" und "npm_bin_node"

In der Regel muss hier nichts angepasst werden. Sollte das Modul eines oder beide Bin-Dateien nicht automatisch finden, müsst Ihr das jeweilige Attribut dazu anpassen. Bitte beachtet, dass der komplette Pfad inkl. der Bin-Datei hier eingetragen werden muss. Über folgende Linux Befehle, in einer SSH Sitzung, könnt Ihr die Bin-Dateien suchen:

which npm
which node

Das Ergebnis sollte dann ungefähr so aussehen.

Beschreibung Attribut "npm_proxy_port"

Der Proxy-Standardport ist der "3002". Falls dieser belegt sein sollte kann der entsprechende Port angepasst werden.

ACHTUNG: Wenn dieser Fehler nach einem mehrmaligen Versuch von "set NPM_login new" auftauchen, dann läuft im Hintergrund noch ein NPM Login Versuch!

 

Um diesen Fehler zu beseitigen solltet Ihr Euer FHEM System einmal neu Rebooten, ein FHEM "shutdown restart" ist hier nicht ausreichend! 

Beschreibung Attribut "npm_proxy_ip"

Hier kann eine Proxy IP-Adresse angepasst werden, falls der automatische IP Ermittlung nicht funktioniert. Die Proxy IP-Adresse wird auch im "Login Ergebnis" angezeigt. In der Regel sollte das dieselbe IP-Adresse wie der FHEM Webseite sein.

 

Beschreibung Attribut "npm_proxy_listen_ip"

Diese Attribut wird nur in einer Docker Umgebung benötigt. Hier muss die FHEM Container IP-Adresse eingetragen werden.

 

Beschreibung Attribut "npm_refresh_intervall"

Das Amazon Cookie wird alle "6000" Sekunden aktualisiert. Rein theoretisch würde das Cookie bis zu 14 Tage überleben. Daher kann dieser Wert bis "1209600" Sekunden angepasst werden. Empfehlen würde ich diesen hohen Wert allerdings nicht. Wem die "6000" Sekunden zu wenig sind, kann diesen Wert auch auf einen Tag anpassen. Hierfür müsstet Ihr den Wert auf "86400" anpassen.

 

NPM Login Docker FHEM

Wer seinen FHEM Server in einer Docker Umgebung betreibt muss folgendes beachten!

  • Anpassung der Attribute "npm_proxy_ip" und "npm_proxy_listen_ip"
  • Durchreichen des Ports "3002" bzw. die Portnummer des Attributes "npm_proxy_port"

Ansonsten unterscheidet sich die Konfiguration zu einer Standard FHEM Installation nicht.

Kommentare: 0