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

Tueftler1983

bei der Installation von fhem.js bekomme ich diese meldungen:

ok, user is valid

npm WARN notsup Unsupported engine for socket.io@4.1.2: wanted: {"node":">=10.0.                                         0"} (current: {"node":"8.17.0","npm":"6.13.4"})
npm WARN notsup Not compatible with your version of node/npm: socket.io@4.1.2
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules/fh                                         em.js/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@                                         1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"arm"                                         })
npm WARN notsup Unsupported engine for socket.io-parser@4.0.4: wanted: {"node":"                                         >=10.0.0"} (current: {"node":"8.17.0","npm":"6.13.4"})
npm WARN notsup Not compatible with your version of node/npm: socket.io-parser@4                                         .0.4
npm WARN notsup Unsupported engine for engine.io@5.1.1: wanted: {"node":">=10.0.                                         0"} (current: {"node":"8.17.0","npm":"6.13.4"})
npm WARN notsup Not compatible with your version of node/npm: engine.io@5.1.1

+ fhem.js@3.2.2
updated 1 package in 44.262s

Werner Schäffer

node ist in der Version 8.17 installiert, erforderlich ist aber mindestens 10.0

Also erst mal node aktualisieren. Wenn man node über den Linux Paketmanager (apt-get) installiert, bekommt man oft eine ziemlich veraltete Version von node, die Suchmascxhine deiner Wahl hilft da weiter.

Werner Schäffer

Zitat von: Tueftler1983 am 29 Juni 2021, 10:55:47
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

Hast du schin mal in /var/log/fhem.js.log geschaut?

Tueftler1983

#258
hallo, nachdem ich jetzt die node version nochmal geupdatet root@FhemServer:~# node -v
v16.4.0
habe und fhem.js neu installiert habe kommt wenigstens schonmal das bei lsof -i :8086

root@FhemServer:~# lsof -i :8083
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
perl       521 fhem    6u  IPv4  13653      0t0  TCP *:8083 (LISTEN)
perl       521 fhem   58u  IPv4  17357      0t0  TCP localhost:8083->localhost:42816 (ESTABLISHED)
node\x20/ 1312 fhem   11u  IPv4  18225      0t0  TCP localhost:42816->localhost:8083 (ESTABLISHED)
root@FhemServer:~# lsof -i :8086
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
node    21596 fhem   18u  IPv6 144691      0t0  TCP *:8086 (LISTEN)
node    21596 fhem   19u  IPv6 163871      0t0  TCP FhemServerLan.fritz.box:8086->b2b-109-90-174-8.unitymedia.biz:35784 (ESTABLISHED)
node    21596 fhem   21u  IPv6 163873      0t0  TCP FhemServerLan.fritz.box:8086->b2b-109-90-174-8.unitymedia.biz:35782 (ESTABLISHED)
root@FhemServer:~#


im Log steht das:
(node:21583) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
29.06.2021 12:28:28 listen for http requests disabled
29.06.2021 12:28:29 listen for websocket requests on port 8086 without SSL
29.06.2021 12:28:29 start connection to fhem server
29.06.2021 12:28:29 connected to fhem server for listen on changed values
29.06.2021 12:29:33 Installed version 3.2.2 is latest available version
29.06.2021 12:33:04 illegal request for /
(node:793) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
node:internal/fs/utils:343
    throw err;
    ^

Error: ENOENT: no such file or directory, open '/var/run/fhem/fhem.js.pid'
    at Object.openSync (node:fs:582:3)
    at Object.writeFileSync (node:fs:2143:35)
    at writePid (/usr/local/lib/node_modules/fhem.js/node_modules/forever/bin/monitor:13:6)
    at exports.Monitor.<anonymous> (/usr/local/lib/node_modules/fhem.js/node_modules/forever/bin/monitor:46:5)
    at exports.Monitor.EventEmitter.emit (/usr/local/lib/node_modules/fhem.js/node_modules/eventemitter2/lib/eventemitter2.js:1040:22)
    at /usr/local/lib/node_modules/fhem.js/node_modules/forever-monitor/lib/forever-monitor/monitor.js:182:10
    at processTicksAndRejections (node:internal/process/task_queues:78:11) {
  errno: -2,
  syscall: 'open',
  code: 'ENOENT',
  path: '/var/run/fhem/fhem.js.pid'
}

Werner Schäffer

Versuch mal
mkdir /var/run/fhem
chown fhem:fhem /var/run/fhem

Tueftler1983

Habe ich gemacht, jetzt gibt es in dem Ordner diese Datei: fhem.js.pid mit diesem Inhalt
1420
und im Log steht das

(node:21583) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
29.06.2021 12:28:28 listen for http requests disabled
29.06.2021 12:28:29 listen for websocket requests on port 8086 without SSL
29.06.2021 12:28:29 start connection to fhem server
29.06.2021 12:28:29 connected to fhem server for listen on changed values
29.06.2021 12:29:33 Installed version 3.2.2 is latest available version
29.06.2021 12:33:04 illegal request for /
(node:793) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
node:internal/fs/utils:343
    throw err;
    ^

Error: ENOENT: no such file or directory, open '/var/run/fhem/fhem.js.pid'
    at Object.openSync (node:fs:582:3)
    at Object.writeFileSync (node:fs:2143:35)
    at writePid (/usr/local/lib/node_modules/fhem.js/node_modules/forever/bin/monitor:13:6)
    at exports.Monitor.<anonymous> (/usr/local/lib/node_modules/fhem.js/node_modules/forever/bin/monitor:46:5)
    at exports.Monitor.EventEmitter.emit (/usr/local/lib/node_modules/fhem.js/node_modules/eventemitter2/lib/eventemitter2.js:1040:22)
    at /usr/local/lib/node_modules/fhem.js/node_modules/forever-monitor/lib/forever-monitor/monitor.js:182:10
    at processTicksAndRejections (node:internal/process/task_queues:78:11) {
  errno: -2,
  syscall: 'open',
  code: 'ENOENT',
  path: '/var/run/fhem/fhem.js.pid'
}
(node:1382) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
29.06.2021 16:17:28 listen for http requests disabled
29.06.2021 16:17:29 aktValues:
29.06.2021 16:17:29 {"global":"no definition","MQTT2_FHEM_Server":"Initialized","MQTT2_FHEM_Server_192.168.2.50_23858":"Connected","MQTT2_FHEM_Server_192.168.2.60_14830":"Connected","MQTT2_FHEM_Server_192.168.2.61_30027":"Connected","MQTT2_FHEM_Server_192.168.2.62_25081":"Connected","MQTT2_FHEM_Server_192.168.2.64_19701":"Connected","AlexaWeb":"Initialized","WEB":"Initialized","WEB_127.0.0.1_49812":"Connected","WEB_127.0.0.1_49866":"Connected","WEB_127.0.0.1_49868":"Connected","WEB_127.0.0.1_49876":"Connected","WEBdisplay":"Initialized","WEBdisplay_192.168.2.172_42458":"Connected","WEBdisplay_192.168.2.172_42480":"Connected","WEBdisplay_192.168.2.172_42506":"Connected","WEBdisplay_192.168.2.172_42508":"Connected","WEBdisplay_192.168.2.172_42526":"Connected","WEBdisplay_192.168.2.172_42528":"Connected"........./code]

Tueftler1983

Das liefert ein Service fhem Status jetzt
fhem.js.service - LSB: fhem.js init.d example
   Loaded: loaded (/etc/init.d/fhem.js; generated; vendor preset: enabled)
   Active: active (running) since Tue 2021-06-29 16:17:21 CEST; 2h 4min ago                                                               Docs: man:systemd-sysv-generator(8)
  Process: 369 ExecStart=/etc/init.d/fhem.js start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/fhem.js.service                                                                                                        ├─1382 /usr/local/bin/node /usr/local/lib/node_modules/fhem.js/node_modules/forever/bin/monitor /usr/local/lib/node_module           └─1420 /usr/local/bin/node /usr/local/lib/node_modules/fhem.js/server.js
Jun 29 16:15:43 FhemServer sudo[374]:     root : TTY=unknown ; PWD=/ ; USER=fhem ; COMMAND=/usr/local/bin/fhem.js -n fhem.js -l /var/Jun 29 16:15:43 FhemServer sudo[374]: pam_unix(sudo:session): session opened for user fhem by (uid=0)                                Jun 29 16:17:21 FhemServer fhem.js[369]: warn:    --minUptime not set. Defaulting to: 1000ms
Jun 29 16:17:21 FhemServer fhem.js[369]: warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least Jun 29 16:17:21 FhemServer fhem.js[369]: info:    Forever processing file: /usr/local/lib/node_modules/fhem.js/server.js
Jun 29 16:17:21 FhemServer fhem.js[369]: (node:429) Warning: Accessing non-existent property 'padLevels' of module exports inside cirJun 29 16:17:21 FhemServer fhem.js[369]: (Use `node --trace-warnings ...` to show where the warning was created)
Jun 29 16:17:21 FhemServer fhem.js[369]: (node:429) Warning: Accessing non-existent property 'padLevels' of module exports inside cirJun 29 16:17:21 FhemServer sudo[374]: pam_unix(sudo:session): session closed for user fhem
Jun 29 16:17:21 FhemServer systemd[1]: Started LSB: fhem.js init.d example.

Tueftler1983

#262
Moin:

mir ist da grade noch was aufgefallen, welches modul findet der denn nicht?
Erst das logfile danach der entsprechende aufruf mit node --trance_warning

.(node:26572) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
30.06.2021 08:39:20 listen for http requests disabled
30.06.2021 08:39:20 initFinished
30.06.2021 08:39:21 initFinished
30.06.2021 08:39:22 listen for websocket requests on port 8086 without SSL
30.06.2021 08:39:22 start connection to fhem server
30.06.2021 08:39:22 versionCheck after 43200000
30.06.2021 08:39:22 connected to fhem server for listen on changed values
30.06.2021 08:40:22 checkVersion started
30.06.2021 08:40:27 Installed version 3.2.2 is latest available version


root@FhemServer:~# node --trace-warnings ...
node:internal/modules/cjs/loader:930
  throw err;
  ^

Error: Cannot find module '/root/...'
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:927:15)
    at Function.Module._load (node:internal/modules/cjs/loader:772:27)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12)
    at node:internal/main/run_main_module:17:47 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []


der port 8086 ist jetzt da und er lauscht angeblich drauf, steht jetzt auch ipv4 dran nachdem ich ipV6 komplett am Raspberry disabled habe:
root@FhemServer:~# lsof -i :8086
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
node    26586 fhem   18u  IPv4 511624      0t0  TCP *:8086 (LISTEN)


aber fhemschwitch sagt immernoch Server nicht erreichbar

Tueftler1983


Tueftler1983

Noch ne Info, ich habe die komplette Installation als User Root gemacht, kann es daran liegen?

Werner Schäffer

immer schauen was in /var/log/fhem.js.log steht

vorher in /etc/fhemjs/params.js den Parameter debug auf 2 setzen

Viel mehr kann ich nicht tun, da ich selbst weder fhem noch fhem.js selbst noch nutze. Bin schon vor Langem auf Homematic CCU3 und iobroker umgestiegen.

Tueftler1983

#266
Danke dir trotzdem für die Hilfe ich dreh mich hier im Kreis

(node:32590) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
03.07.2021 20:08:28 listen for http requests disabled
03.07.2021 20:08:29 aktValues:
03.07.2021 20:08:29 {"global":"no definition","MQTT2_FHEM_Server":"Initialized","MQTT2_FHEM_Server_192.168.2.50_21675":"Connected","MQTT2_FHEM_Server_192.168.2.60_4717":"Connected","MQTT2_FHEM_Server_192.168.2.61_20997":"Connected","MQTT2_FHEM_Server_192.168.2.62_30568":"Connected","MQTT2_FHEM_Server_192.168.2.64_14367":"Connected","AlexaWeb":"Initialized","WEB":"Initialized","WEB_127.0.0.1_55582":"Connected","WEBdisplay":"Initialized","WEBdisplay_192.168.2.172_34574":"Connected","WEBgast":"Initialized","WEBphone":"Initialized","WEBphone_127.0.0.1_60276":"Connected","WEBtablet":"Initialized","TABLETUI":"TABLETUI","TABLETUI2


Das kommt bei node --trance....

root@FhemServer:~# node --trace-warnings ..
node:internal/modules/cjs/loader:930
  throw err;
  ^

Error: Cannot find module '/'
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:927:15)
    at Function.Module._load (node:internal/modules/cjs/loader:772:27)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12)
    at node:internal/main/run_main_module:17:47 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}
root@FhemServer:~#


Bin echt am überlegen alles von fhem.js zu löschen was ich finde und es neu zu installieren

Werner Schäffer

Ignoriere einfach mal die npm-Meldungen. Du kannst ja fhem.js starten und der Port 8086 ist auch aktiv.

Schau in /var/log/fhem.js.log was passiert wenn du fhem.js startest und was dort steht wenn du aus Android darauf zugreifst.

Tueftler1983

Da steht garnix außer die Daten aus fhem aber es ist nichts zu erkennen daß ich mich verbinden will. Habe es extra  von 2 Geräten getestet.

Werner Schäffer