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

Joni13

Zitat von: Werner Schäffer am 06 März 2018, 20:39:18
@joni13:

läuft fhem.js nachdem du es gestartet hast:

ps -elf | grep fhem.js

hast du schon in den Logfile von fhem.js geschaut ob es Problem gibt:

Verzeichnis: /var/log/fhem.js

Prüf mal  ob der Port aktiv ist:

lsof -i :8088

Und nächstes Mal stell bitte nicht so viele Fragen auf einmal und versuche deine Probleme besser zu formulieren.


Vielen Dank, Bruder!  :)

Endlich, endlich nach 2 erfolglosen Monaten mit fhem.js hat es heute geklappt! Ich habe meine Himbeer-SD-Karte vollständig formatiert und alles von Grund auf neu installiert! Ich konnte Ihren Beispielcode in meinem Browser ausführen! Ja, ich gebe meine IP-Adresse sowohl in die HTML- als auch in die JS-Datei ein! Ansonsten zeigte es nur eine Webseite ohne Ergebnisse!

Ich habe diesen Befehl jedoch nicht verstanden - ps -elf | grep fhem.js
Du hast diesen Befehl erstellt? Ich konnte im Internet keinen ähnlichen Befehl finden. Und auch jedes Mal, wenn ich diesen Befehl nicht ausgeführt habe ....  :-[   :'(    jetzt ist es klar.

Danke!

raumhafen

Hallo Werner,

seit einigen Tagen beschäftige ich mich seit langer Zeit wieder mit FHEM.
Vor Jahren hatte ich bereits FHEM in unserer Mietwohnung genutzt, damals nur mit FS20-Geräten von ELV.
Jetzt haben wir neu gebaut und im ganzen Haus ist ein EnOcean System verbaut, das ich gerne mit FHEM steuern möchte.
Unsere Hausfirma hatte uns auch ein Steuerungssystem angeboten (nennt sich myhomecontrol von einer Schweizer Firma).
Das fanden wir allerdings sehr sehr teuer und außerdem macht es doch mehr Spaß selbst zu basteln, so bin ich wieder zu FHEM gekommen.
Da mir keines der mir bekannten Frontends zugesagt hat, habe ich mir selbst etwas aufgebaut auf JavaScript und PHP Basis.
Die Kommunikation mit FHEM läuft aktuell über CURL.
Da ich aber gerne Status- bzw. Zustandsänderungen in meinem Frontend auch sofort mitbekommen möchte (ohne die Seite neu laden zu müssen) bin ich jetzt beim WebSocket Protokoll gelandet und somit bei Deinem fhem.js bzw. server.js Script.

Ich scheitere allerdings bereits daran server.js auf dem Raspberry zum Laufen zu bekommen. Beim Start erhalten ich folgende Meldungen
30.04.2018 09:47:11 listen for http requests disabled
30.04.2018 09:47:11 aktValues:
30.04.2018 09:47:11 {}
30.04.2018 09:47:11 initFinished
30.04.2018 09:47:11 process error: SyntaxError: Unexpected end of JSON input - retry in 10 secs

Kannst Du mir einen Tipp geben, was hier falsch laufen könnte?

Vielen Dank
Michael

P.S.: Ich habe übrigens mit einem Schmunzeln festgestellt, dass wir eine gemeinsame Mainframe-Vergangenheit haben :-)
Auch ich habe schon für das System MBS gearbeitet (1997 war das), es wurde allerdings inzwischen abgelöst. Dafür bin ich immer noch
für das "Schwester"-System tätig, das die Leasingverträge der Firma verwaltet. Das sollte schon 3 mal abgelöst werden seit ich dabei bin,
aber der Mainframe ist nicht tot zu bekommen ... gibt aber auch wenn wir ehrlich sind keine Alternativen :-)

RPI3, EnOcean, FGW14-USB, HM-IP, Synology Diskstation, PIKO Kostal, Proxon FWT 3 2.0

raumhafen

Hallo Werner,

meine Frage oben hat sich erledigt, es lag an der Telnet-Verbindung.
Hier hatte ich doch aus einem älteren Test in FHEM noch tatsächlich ein Passwort hinterlegt gehabt.

Grüße
Michael
RPI3, EnOcean, FGW14-USB, HM-IP, Synology Diskstation, PIKO Kostal, Proxon FWT 3 2.0

Syrex-o

Hallo Werner,

Vielleicht stelle ich mich auch nur an. Aber wie kann ich denn in JS einzelne Readings von einem Device anfordern?
Oder mir alle Readings von einem Device listen lassen?

Finde das Projekt sehr cool und ich würde mich freuen, wenn das möglich ist.

Grüße
Albert

mani

#184
Hi, danke für das Modul  :D ,

jedoch hänge ich bei diesem Problem:
/usr/lib/node_modules/fhem.js/test/nodetest.js:2
var socket = io.connect('ws://xx.x.x.xx:8086', {
             ^

ReferenceError: io is not defined
    at Object.<anonymous> (/usr/lib/node_modules/fhem.js/test/nodetest.js:2:14)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.runMain (module.js:605:10)
    at run (bootstrap_node.js:427:7)
    at startup (bootstrap_node.js:151:9)
    at bootstrap_node.js:542:3


woran liegt das?

Muss ich noch was einrichten? Das Nodemodul ist vorhanden..

Möchte die Daten mit einem am gleichen Server liegenden NodeScript abgleichen!

Danke Mfg Mani
RasPi B+,Onkyo_AVR,Luxtronik2,Logo7,Mpd,Arduino Uno mit Ethernet,KNX,Jablotron

Syrex-o

@mani

Bei dir scheint Socket io zu fehlen.
ZitatReferenceError: io is not defined

Guck Mal ob du Socket io richtig integriert hast.

Grüße

mani

Hi danke,
in den test Script habe die IP angepasst oder muss ich das noch wo machen?

Mfg
RasPi B+,Onkyo_AVR,Luxtronik2,Logo7,Mpd,Arduino Uno mit Ethernet,KNX,Jablotron

Syrex-o

Du musst das Socket io Script in dein Projekt integrierten.
In der test.html sollte zu finden sein, wie das aussieht.
Lad die Datei einfach runter und Verweis darauf.

Grüße

mani

Hi

kurze Erklärung zu meinem Wunsch :)

Ich möchte fhem.js nutzen um die Daten nicht in einer html sondern als Variablen in einem anderen Script bereitzustellen und auch Befehle an FHEM zu senden.

Daher habe ich alles bis zum nodetest.js Script angepasst und Ausgefürt um mal die daten in die console schreiben zu lassen.....das sollte doch gehen oder? 

mfg Mani
RasPi B+,Onkyo_AVR,Luxtronik2,Logo7,Mpd,Arduino Uno mit Ethernet,KNX,Jablotron

Syrex-o

@mani

Gegenseitige Hilfe: Ich muss alle Daten eines Devices auslesen können, was ich im Moment nicht hin bekomme.
Alternativ müsste ich auch auf ein einzelnes reading hören können. Bekomme das leider auch nicht hin.
Hast du vielleicht eine Idee?

Deiner Logik folgend müsste es eigentlich gehen.
Scheinbar scheint aber Socket IO aber nicht richtig auf deine neue Konfiguration zu reagieren.
Du hast natürlich trotz deiner Änderungen immer noch eine Client und Serverseite, obwohl sich beide auf dem selben gerät befinden.
Darauf solltest du achten.

Grüße

Tueftler1983

Hallo seid dem Neustart meines Raspberrys bekomme ich FHEM.JS nicht mehr gestartet.

Beim Starten mit service fhem.js start
Bekomme ich das:
root@raspberrypi:~# service fhem.js start
Job for fhem.js.service failed. See 'systemctl status fhem.js.service' and 'journalctl -xn' for details.


Folgendes bekomme ich als info:
root@raspberrypi:~# systemctl status fhem.js.service
● fhem.js.service - LSB: fhem.js init.d example
   Loaded: loaded (/etc/init.d/fhem.js)
   Active: failed (Result: exit-code) since Do 2018-06-28 23:04:32 CEST; 2min 2s ago
  Process: 1300 ExecStart=/etc/init.d/fhem.js start (code=exited, status=6)

Jun 28 23:04:32 raspberrypi fhem.js[1300]: throw err;
Jun 28 23:04:32 raspberrypi fhem.js[1300]: ^
Jun 28 23:04:32 raspberrypi fhem.js[1300]: Error [ERR_UNKNOWN_BUILTIN_MODULE]: No such built-in module: events
Jun 28 23:04:32 raspberrypi fhem.js[1300]: at Function.NativeModule.require (bootstrap_node.js:530:19)
Jun 28 23:04:32 raspberrypi fhem.js[1300]: at startup (bootstrap_node.js:13:39)
Jun 28 23:04:32 raspberrypi fhem.js[1300]: at bootstrap_node.js:608:3
Jun 28 23:04:32 raspberrypi sudo[1301]: pam_unix(sudo:session): session closed for user fhem
Jun 28 23:04:32 raspberrypi systemd[1]: fhem.js.service: control process exited, code=exited status=6
Jun 28 23:04:32 raspberrypi systemd[1]: Failed to start LSB: fhem.js init.d example.
Jun 28 23:04:32 raspberrypi systemd[1]: Unit fhem.js.service entered failed state.
root@raspberrypi:~#


Kann mir jemand helfen?

Tueftler1983

Weitere infos:

root@raspberrypi:~# fhem.js
bootstrap_node.js:533
      throw err;
      ^

Error [ERR_UNKNOWN_BUILTIN_MODULE]: No such built-in module: events
    at Function.NativeModule.require (bootstrap_node.js:530:19)
    at startup (bootstrap_node.js:13:39)
    at bootstrap_node.js:608:3
root@raspberrypi:~#


Vielleicht hilft es ja

Tueftler1983

Nachtrag:
Nach einem update und upgrade vom PI läuft es wieder.

Nur update von node wird mir in Fhemswitch immer noch angezeigt

Tueftler1983

Hallo, ich mal wieder.
Nach einem Neustart von meinem pi mag mein FHEM.JS nicht mehr starten.

Habe noch diese infos
root@raspberrypi:~# systemctl -l status fhem.js.service
● fhem.js.service - LSB: fhem.js init.d example
   Loaded: loaded (/etc/init.d/fhem.js)
   Active: failed (Result: exit-code) since Mo 2018-08-27 22:35:23 CEST; 2min 7s ago
  Process: 7965 ExecStart=/etc/init.d/fhem.js start (code=exited, status=1/FAILURE)

Aug 27 22:35:23 raspberrypi fhem.js[7965]: at Function.Module._resolveFilename (module.js:545:25)
Aug 27 22:35:23 raspberrypi fhem.js[7965]: at Function.Module._load (module.js:474:25)
Aug 27 22:35:23 raspberrypi fhem.js[7965]: at Module.require (module.js:596:17)
Aug 27 22:35:23 raspberrypi fhem.js[7965]: at require (internal/module.js:11:18)
Aug 27 22:35:23 raspberrypi fhem.js[7965]: at Object.<anonymous> (/usr/lib/node_modules/fhem.js/node_modules/fill-range/index.js:12:17)
Aug 27 22:35:23 raspberrypi fhem.js[7965]: at Module._compile (module.js:652:30)
Aug 27 22:35:23 raspberrypi sudo[7966]: pam_unix(sudo:session): session closed for user fhem
Aug 27 22:35:23 raspberrypi systemd[1]: fhem.js.service: control process exited, code=exited status=1
Aug 27 22:35:23 raspberrypi systemd[1]: Failed to start LSB: fhem.js init.d example.
Aug 27 22:35:23 raspberrypi systemd[1]: Unit fhem.js.service entered failed state.
root@raspberrypi:~#

Syrex-o

@Tueftler1983
Hatte gerade heute das gleiche Problem.

Habe es mit Hilfe von dem Post von quibit behoben.

Einfach in /usr/lib/tmpfiles.d folgende Konfiguration einsetzen:

d /var/run/fhem 0755 fhem root -
Habe es jetzt in systemd.conf

Ein reboot und fhem.js starten und es rennt wieder.

Grüße