ioBroker / ioBroker.node-red

Instantiate the server with node-red
Apache License 2.0
52 stars 27 forks source link

Hinzufügen eines neuen Node zum Adapter #442

Open jegow opened 4 months ago

jegow commented 4 months ago

Ich würde gern in meiner eigenen Installation testweise einen neuen Node zum Adapter hinzufügen (Mix von ioBroker in und ioBroker get). Dazu habe ich ein Packet angelegt und in Node-Red hinzugefügt. Der neue Node wird auch angezeigt, aber bei der Verwendung erscheinen Fehler. Mir fehlt allerdings komplett der Einsteig beim Thema debuggen bzw. Integration. Deswegen erst einmal die grundsätzliche Frage: Ist es an sich möglich, in einem zusätzlichen Packet einen weiteren Node anzufügen, der die vorhande Infrastruktur nutzt? Ich habe den vorhanden allgemeinen Source-Code von iobroker.js übernommen

...
module.exports = function (RED) {
    'use strict';
    // patch event emitter
    require('events').EventEmitter.prototype._maxListeners = 10000;

    const utils        = require('/opt/iobroker/node_modules/@iobroker/adapter-core');
    const settings     = require(process.env.NODE_RED_HOME + '/lib/red').settings;
    ...

und auf das vorhandene Adapter-Modul adaptor core verwiesen und nur meine Anpassungen gemacht.

Apollon77 commented 4 months ago

Ob es generell geht ... keine Ahnung weil hat noch keiner versucht :-) Also welche Fehler bekommst du denn?

jegow commented 4 months ago

Das kann ich noch gar nicht sagen. Ich habe den Versuch, das ganze im Life-System zu testen, abgebrochen, weil die vorhandene Steuerung seltsame effekte zeigte und ich nicht sicher sein konnte, dass ich mir nichts zerschieße. Eigentlich wollte ich das ganze in einer zweiten Node-Instanz ausprobieren. Aber nach dem anlegen der Instanz hat der Aufruf nicht funktioniert. Stattdessen hat der Link aus dem IO-Broker heraus mich wieder auf die Instanz 1 geleitet. Das war mir alles zu heikel. Es könnte ja sein, es werden temporäre Dateien von der Instanz geschrieben, die dann zweimal da wären, wenn ich das ganze nochmal starte.

Ich werde es noch mal in einer Docker-Umgebung ausprobieren, wo ich mir nichts zerschießen kann.

Ich möchte eine neuen Node erzeugen, der wie der in sich für Änderung anmeldet, aber wie der get von außen beschaltet werden kann, damit er weiß, was er holen soll. Ohne diesen Node lassen sich nicht sinnvoll komplexe Subflows erzeugen.

klein0r commented 4 months ago

@jegow Also wenn Du planst Node-RED Nodes selbst zu entwickeln, dann würde ich das nicht mit dem ioBroker-Adapter machen, sondern eine separate Node-RED-Installation auf einem anderen System installieren. Ohne ioBroker. Siehe

https://nodered.org/docs/creating-nodes/first-node