NEWS
NPM-Modul dgram
-
Hallo zusammen,
ich habe eine Frage an die Experten hier:
Muß im JavaScript-Adapter zusätzlich das NPM-Modul dgram eingetragen werden oder wurde es bereits mit dem Adapter installiert?Hintergrund der Frage ist, daß bei einem Bastlerkollegen an einer "ioBroker Matrix Anzeige" (Laufschrift) keine Daten aus ioBroker ankommen und wir nach der Ursache forschen.
siehe : esp-matrix-anzeige-fully-iobroker-steuerbarMit einem Javascript sollen per UDP Daten an die Laufschrift gesendet werden.
Hier der Code-Schnipsel, der die Daten senden soll:// "update" an WEMOS senden (pushen), damit dort die Laufschrift sofort aktualisiert wird const dgram = require('dgram'); var udpPort = 6610 var udpMessage = "update" var client = dgram.createSocket('udp4'); client.send(udpMessage, 0, udpMessage.length, udpPort, udpIP, function(err, bytes) { if (err) throw err; client.close(); })
Bei meiner Laufschrift funktioniert es, bei seiner nicht.
Allerdings habe ich meine Laufschrift schon vor ca. 1 Jahr gebaut und bin mir nicht sicher, ob ich damals "dgram" unter den zusätzliche JS-Modulen eingetragen hatte.
Nach Upgrade von Raspi3 auf Raspi4 und JS-Controller 2.xx ist es bei mir unter den zusätzlichen JS-Modulen nicht mehr zu sehen. Wenn ich es jetzt dort manuell eintrage, startet nur die JS-Instanz neu und im Log ist diesbzgl. auch nichts zu sehen.Gruß und Danke
Jörg -
@joergeli sagte:
Muß im JavaScript-Adapter zusätzlich das NPM-Modul dgram eingetragen werden oder wurde es bereits mit dem Adapter installiert?
dgram wurde bereits mit dem JS-Adapter installiert.
-
@paul53
Danke, dann kann unser Problem nicht damit zusammenhängen.Gruß
Jörg -
@joergeli
Korrektur: Offenbar wird das Modul dgram doch nicht mit dem JS-Controller installiert, denn es fehlt im Verzeichnis /opt/iobroker/node_modules/iobroker.javascript/node_modules und ist in den "dependencies" nicht aufgeführt.
In der "main.js" des Adapters, Zeile 42 steht die Anweisungdgram: require('dgram'),
, was zu meiner Annahme führte, dass das Modul installiert sein müsste.
-
dgram
wird grundsätzlich mit npm/node installiert - ist ein Core Package - s. a. https://www.npmjs.com/package/dgramUnd wenn
require('dgram')
fehlschlagen sollte, müsste ja auch was im Log stehen. Gibt es denn eine Fehlermeldung im Log, die evtl. Aufschluss gibt warum dein Programm nicht läuft? -
@paul53
Mmmmh.., bei mir ist in obigem Verzeichnis der Ordner dgram vorhanden (wahrscheinlich weil ich es mal manuell unter den Zusatzmodulen des JS-Adapters eingetragen hatte).
Allerdings steht dort in der README.md:# Security holding package This package name is not currently in use, but was formerly occupied by another package. To avoid malicious use, npm is hanging on to the package name, but loosely, and we'll probably give it to you if you want it. You may adopt this package by contacting support@npmjs.com and requesting the name.
Anscheinend wird es nur noch aus "Sicherheitsgründen?" dort vorgehalten.
-
@foxriver76
Bei mir läuft es ja, ich versuche nur einem Bastlerkollegen (s. Link im ersten Post) zu helfen, bei dem Daten, die aus ioBroker via UDP verschickt werden sollen, nicht ankommen, bzw. empfangen werden.
Kann aber auch sein, daß das Problem beim Empfänger (WEMOS D1 mini) liegt.
Ich versuche, das Problem einzugrenzen und habe ihn jetzt gebeten, mir sein Script mal zum Testen zur Verfügung zu stellen.Danke
Jörg -
@joergeli @paul53 dgram ist (wie fs, path, etc...) ein Kernmodul von Node.js und daher immer vorhanden. https://nodejs.org/api/dgram.html
-
@AlCalzone
Danke. Es hätte mich auch gewundert, wenn der JS-Adapter ein nicht installiertes Modul anfordert.