fhem.js - websocket connection to fhem via node.js proxy

Begonnen von Werner Schäffer, 13 Februar 2015, 21:53:55

Vorheriges Thema - Nächstes Thema

marcg

steht eigentlich alles oben in der Log-Ausgabe drin, aber dann eben nochmal nicht so ausführlich  ::) ::)

Zitatroot@mailserver-neu:/opt# node -v
v11.13.0
Zitatroot@mailserver-neu:/opt# npm -v
6.7.0
Zitatroot@mailserver-neu:/opt# npm -g install --unsafe-perm fhem.js
/usr/bin/fhem.js -> /usr/lib/node_modules/fhem.js/bin/fhem.js
/usr/bin/forever -> /usr/lib/node_modules/fhem.js/node_modules/forever/bin/forever

> fhem.js@3.2.1 postinstall /usr/lib/node_modules/fhem.js
> ./bin/postinstall.sh

sh: 1: ./bin/postinstall.sh: Permission denied
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.7 (node_modules/fhem.js/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.7: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"arm64"})

npm ERR! code ELIFECYCLE
npm ERR! errno 126
npm ERR! fhem.js@3.2.1 postinstall: `./bin/postinstall.sh`
npm ERR! Exit status 126
npm ERR!
npm ERR! Failed at the fhem.js@3.2.1 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2019-04-09T06_16_03_401Z-debug.log
root@mailserver-neu:/opt#

im Anhang noch das aufgeführte Log...

Marc


Werner Schäffer

Gibt es dass Verzeichnis /usr/lib/node_modules/fhem.js?

Wenn ja, dann versuch  mal manuell als root das Script

/usr/lib/node_modules/fhem.js/bin/postinstall.sh

auszuführen.

Wenn nein, dann ist irgendetwas grundsättzlich schief gelaufen, da im Log eigentlich steht dass fhem.js installiert wurde, bis auf den postinstall Prozess.

marcg

ZitatGibt es dass Verzeichnis /usr/lib/node_modules/fhem.js?

Nöö, da ist nix. In node_modules gibts nur einen npm Unterordner.

Ich finde in /usr/bin/ auch nur einen kaputten Symlink von fhem.js nach /usr/lib/node_modules/fhem.js/bin/fhem.js.
"forever" scheint auch kaputt zu sein, da gibts auch einen defekten Symlink in /usr/bin/ der nach /usr/lib/node_modules/fhem.js/node_modules/forever/bin/forever (ja echt genau so) hinzeigt.

naja... ich hab mal das ganze fhem.js von github runtergeladen und versuche es nun von Hand zu installieren, in der Hoffnung das der vorherige npm Installationsversuch vorher alle benötigten Libs schon runtergeladen hat...

Marc

PS: in meinem fhem Ordner in /opt/fhem befindet sich eine fhem.js (genauer /opt/fhem/www/codemirror/fhem.js). Das gehört nicht zu Deinem fhem.js oder ??

Werner Schäffer

In dem Log scheint es ja nur Problem mit dem postinstall.sh zu geben. Versuch doch mal

npm -g install --unsafe-perm --ignore-scripts fhem.js

Dadurch wird die Ausführung des postinstall-Scripts unterbunden. Schau dann mal ob unter /usr/lib/node_modules nun ein fhem.js liegt. Wenn ja, dann must nur noch in diesem Verzeichnis das Script ./bin/postinstall.sh ausführen.


marcg

Fehler gefunden ( Deiner  ;) )

Zitatnpm -g install --unsafe-perm --ignore-scripts fhem.js

das hat funktioniert, nun existiert ein /usr/lib/node_modules/fhem.js Ordner, aber das ausführen von postinstall.sh geht trotzdem nicht... weil....

es per default nicht ausführbar ist !!!! ein chmod behebt das Problem. Warum aber das ganze Paket im Fehlerfalle gelöscht wird weiß ich auch nicht

Zitatroot@mailserver-neu:/usr/lib/node_modules/fhem.js# ls -al bin/
total 20
drwxr-xr-x 2 root root 4096 Apr 12 10:12 .
drwxr-xr-x 6 root root 4096 Apr 12 10:12 ..
-rwxr-xr-x 1 root root  654 Jan 18  2017 fhem.js
-rw-r--r-- 1 root root 3242 Jan 14 18:20 postinstall.sh
-rw-r--r-- 1 root root  383 Feb  4  2016 preuninstall.sh
root@mailserver-neu:/usr/lib/node_modules/fhem.js# chmod 755 bin/postinstall.sh
root@mailserver-neu:/usr/lib/node_modules/fhem.js# chmod 755 bin/preuninstall.sh
root@mailserver-neu:/usr/lib/node_modules/fhem.js# bin/postinstall.sh

User for running fhem.js (fhem)?

ok, user is valid

root@mailserver-neu:/usr/lib/node_modules/fhem.js#

Dann will ich mal weiter testen. Danke für die Hilfe soweit..

Grüße
Marc


Werner Schäffer

Es gibt ein neues Release 3.2.2 von fhem.js in dem die execution permission für postinstall.sh gesetzt ist.

m-d-ley

Hallo, irgendwie stehe ich ein bisschen auf dem Schlauch bei der Inbetriebnahme von fhem.js und fhemswitch.

Erstmal kurz zu meinem System, ich habe ein Ubuntu 18.04 mit FHEM laufen. Soweit auch die Ports weitergeleitet und verschlüsselt. Die beschreibst in diesem Thread (https://forum.fhem.de/index.php/topic,62716.msg541475.html) alles wunderbar, nur sind die angehängten scripte und Dateien für nginx. Ich habe aber Apache und darauf einiges mehr laufen und wollte eher ungern beide parallel laufen lassen oder mich von Apache verabschieden.

Wäre es möglich dies auch nochmal für Apache zu beschreiben? Auf jeden Fall die Websockets. Verbindung zu FHEM habe ich ja im lokalen Netz offen und im www verschlüsselt.

Vielen Dank schonmal.

Werner Schäffer

Leider kann ich für Apache kein Beispiel liefern, da ich mit nginx arbeite. Ich denke aber dass es Andere gibt, die die Anbindung mit Apache realisiert haben. Es wäre schön wenn das jemand beschereiben könnte.

m-d-ley

Ohne diese Apache bzw. Nginx Anbindung läuft die App garnicht, nichtmal im lokalen Netz oder?

Werner Schäffer

Zitat von: m-d-ley am 09 Mai 2019, 20:00:08
Ohne diese Apache bzw. Nginx Anbindung läuft die App garnicht, nichtmal im lokalen Netz oder?

Versuch mal mit local-ip-addr:8086

falls du in der params.js
exports.nodePort = 8086;
hast

joachimm

Das ist ja eine prima Sache. Ist es dann möglich Johnny-Five mit fhem sprechen zu lassen? Das eröffnet ja neue Möglichkeiten..

Danke
Joachim
fhem,
RS485, Homematic, Synology, 1-wire

Werner Schäffer

Zitat von: joachimm am 23 Mai 2019, 07:32:42
Das ist ja eine prima Sache. Ist es dann möglich Johnny-Five mit fhem sprechen zu lassen? Das eröffnet ja neue Möglichkeiten..

Danke
Joachim

ich musste erst googeln um herauszufinden was Johnny-Five ist. Da Johnny-Five ein node.js Framework ist, sehe ich da keine Probleme für eine Kommunikation mit fhem.js und damit auch mit fhem.

joachimm

Hallo Werner,

wäre es möglich wenn Du mal ein Beispiel machen könntest? Led.blink würde schon reichen... das schöne an johnny-five sind die Vielzahl von Sensoren die schon standardmäßig in der Bibliothek sind. Schau mal nach Johnny-five examples. Ich bin in da noch nicht so weit....

würde ich mich freuen....

danke
Joachim
fhem,
RS485, Homematic, Synology, 1-wire

Werner Schäffer

Wie gesagt habe ich Johnny-Five gegoogelt und daraus folgt, dass ich damit bisher nichts am Hut hatte und ich deshalb auch keine Beispiele liefern kann.

Die allgemeine Dokumentation und Beispiele für fhem.js gibt es auf https://github.com/winne27/fhem.js.

Außerdem ist zu bemerken, dass fhem.js eine Schnittstelle ist um mit websocket connections in Javascript Anwendungen auf FHEM zuzugreifen.
Was aber damit nicht geht,  ist irgendwelche Sensoren in FHEM einzubinden und z.B. deren Status zu lesen. Das ist eine ganz andere Baustelle.

Tueftler1983

#254
Hallo,
Wie sagte ein weiser man? Never touch a running System.
Ich habe es doch getan und nun habe ich den Salat.
habe node.js und fhem.js geupdatet und seiddem ist fhem.js nicht mehr erreichbar.

laut system läuft der service aber der port ist nicht aktiv

root@FhemServer:~# service fhem.js status
● fhem.js.service - LSB: fhem.js init.d example
   Loaded: loaded (/etc/init.d/fhem.js; generated; vendor preset: enabled)
   Active: active (exited) since Tue 2021-06-29 10:46:17 CEST; 20s ago
     Docs: man:systemd-sysv-generator(8)

Jun 29 10:46:17 FhemServer systemd[1]: Starting LSB: fhem.js init.d example...
Jun 29 10:46:17 FhemServer fhem.js[7002]: Starting fhem.js node instance:
Jun 29 10:46:17 FhemServer sudo[7003]:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/fhem.js -n fhem.js -l /var/log/fhem.js.log -e /var/log/fhem.js.error -p /var/run/root/fhem.js.p
Jun 29 10:46:17 FhemServer sudo[7003]: pam_unix(sudo:session): session opened for user root by (uid=0)
Jun 29 10:46:17 FhemServer sudo[7003]: pam_unix(sudo:session): session closed for user root
Jun 29 10:46:17 FhemServer systemd[1]: Started LSB: fhem.js init.d example.

root@FhemServer:~# lsof -i :8086
root@FhemServer:~# ps -elf | grep fhem.js
0 R root      7159  1593  0  80   0 -  1092 -      10:47 pts/0    00:00:00 grep fhem.js


Kann mir jemand helfen ich verzweifele hier langsam habe node.js und fhem.js bestimmt schon 5 mal neu installiert und es sieht auf den ersen blick immer gut aus aber der port ist einfach nicht erreichbar