Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. Neuer Node-Red Adapter 3.x in Latest - Repository

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Neuer Node-Red Adapter 3.x in Latest - Repository

Geplant Angeheftet Gesperrt Verschoben Node-Red
node-red
96 Beiträge 14 Kommentatoren 15.6k Aufrufe 12 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • mickymM Online
    mickymM Online
    mickym
    Most Active
    schrieb am zuletzt editiert von mickym
    #1

    Nachdem ich im Node-RED Bereich des ioBroker-Forums relativ aktiv bin und auch bei den Tests zu dem neuen Major-Release des Node-Red Adapters in der Version 3.0.0 mithelfen durfte, habe ich mich in Abstimmung mit @apollon77 dazu bereit erklärt ein paar Highlights und Fehlerbehebungen des neuen Major-Releases hier vorzustellen bzw. zu dokumentieren. Teilweise werde ich hier auch ein paar persönliche Schwerpunkte setzen - es aber auch nicht schaffen, alles in einem Posting festzuhalten.

    Ich möchte mich persönlich auf diesem Weg nochmals bei allen Entwicklern (@apollon77, @Bluefox und @jwiesel), die an der Entwicklung und bei der Bereitstellung dieses Node-Red Adapters beteiligt waren, persönlich bedanken!
    Es ist nicht nur ein Meilenstein, weil nun offiziell Node-Red in der Version 2.2.2 enthalten ist und diese ebenfalls ein paar wirkliche Neuerungen und Erleichterungen mit sich bringen, sondern weil in meinen Augen auch die meisten Fehlerbehebungen und Verbesserungen des Node-Red Adapters im Zusammenspiel mit dem iobroker enthalten.

    Da die Sprünge bei den Node-Red Versionen nun doch erheblich waren, hier ein paar Quellen und ein paar Highlights, die inzwischen implementiert wurden.

    Neues Major Release Node-Red Version 2

    In der Version 2.0 sind erst mal die wirklich weit reichensten Änderungen erhalten, die einem das Leben wesentlich erleichtern.

    Einen Überblick vom Node-Red Guru mit einem Video auf Englisch gibt es hier: https://nodered.org/blog/2021/07/20/version-2-0-released

    Ein paar Einstellungen muss man immer noch die settings.js anpassen. Grundsätzlich ist diese Datei vollkommen neu strukturiert und nun wesentlich übersichtlicher aufgebaut.
    Für bestimmte Einstellungen muss man diese immer noch an den bekannten Stellen editieren.

    Wenn man also den "neuen" Monaco Editor im Programmierfenster der function Nodes nutzen möchte, um kontextbezogene Hilfe bzw. Vorschläge zu bekommen, dann muss man das manuell weiterhin in der settings.js machen. Der bisheriger Editor ist "ace", der neue "monaco". Ich bevorzuge eigentlich weiter den bisherigen Editor - aber ist Gewöhnungssache.

    1c1099bd-ca4c-466e-9099-a10aa1f9ea04-image.png

    Eines der gewaltigsten Vorteile der NR Version 2 ist die Installation und das Nutzen externer NodeJS Module in Function Nodes ohne diese installieren zu müssen!!!
    Die Module müssen also nicht in der settings.js bekannt gemacht werden und werden automatisch im
    /opt/iobroker/iobroker-data/node-red/node_modules Verzeichnis installiert. Es ist KEINE Installation über Adaptereinstellungen oder über die Kommandozeile erforderlich.
    Die Module können einfach in den function Nodes über den Setup-Tab bekannt gemacht werden:

    16316e33-96d0-4109-b071-bac6108e053c-image.png

    Beispiele für die Verwendung von NodeJS Bibliotheken in function Nodes gibts in diesem Thread.

    Ansonsten heißen die ehemaligen RBE Nodes nun Filter Nodes:

    f1725060-85cf-4507-9b99-62f8a2425010-image.png

    Wenn es Probleme mit dieser Node gibt - müsst ihr ggf. die rbe Nodes manuell deinstallieren. Im Palettenmanager tauchen die rbe/filter Nodes unter den Core Nodes auf und dürfen nicht mehr als eigenständige Nodes zu sehen sein.

    Die tail Node ist im Gegenzug nicht mehr Bestandteil der Core-Nodes. Wer diese also braucht oder im Einsatz hat muss diese neu installieren: https://flows.nodered.org/node/node-red-node-tail

    Ab der Version 2.1.
    gibt es als Highlight erst mal eine Guided Tour, die alle Neuerungen vorstellt. Allerdings kann man nicht die Vorgängerversionen anschauen - da die aktuelle Version bereits 2.2.2 ist - findet man nun die Guided Tour nur für diese Version, aber eben keine anderen.

    Die aktuelle Guided Tour findet man unter dem Change Log - das sich öffnet sobald man im Hauptmenü auf die aktuelle Versionsnummer klickt. Dort findet man dann ganz oben die Guided Tour.

    9a3e3557-dc9d-4bd9-8ffd-7653d22cb9af-image.png 3e1a5225-4350-4925-9bdb-8fa8a183dd66-image.png

    Die Details vom NR-Guru in Englisch findet man hier - zusammen mit einem Video: https://nodered.org/blog/2021/10/21/version-2-1-released

    Dieses Release vor allem verbessert die Übersichtlichkeit und das Anordnen der Nodes. Man markiert die gewünschten Nodes und kann diese dann über das Menü anordnen:

    fd523360-9619-42ba-8ac8-760cb77d5757-image.png

    Wer schon mal mit Visio oder ähnlichen Tools gearbeitet hat oder Visual Basic um eine GUI zu entwerfen, dem wird das sicher bekannt vorkommen. ;)

    Das wichtigste Menü - um die bessere Übersichtlichkeit zu nutzen - ist im Flows Menü:

    67634f91-3efe-44df-9d9f-bd82158cb2bf-image.png

    Damit kann mal alle Flows, die man gerade nicht braucht verstecken und über den Dialog wieder sichtbar machen oder man klickt in der Flow übersicht auf den Flow und toggelt zwischen versteckt (durchgestrichenes Auge) und sichtbar:

    d9c71a89-66b7-4417-9ad7-13a44890f331-image.png

    Ein weitere Möglichkeit einen Flow zu verstecken ist einfach in dem Tab auf das Auge zu klicken:
    18984b4c-2546-437c-8c94-bdb7b66406d8-image.png

    Eine weitere meines Erachtens sehr erwähnenswerte Neuerung ist, dass man nicht nur für Subflows, sondern auch für Flows Umgebungsvariablen nutzen zu können, um ggf. die Flows zu initialisieren. Dazu braucht man also nicht mehr unbedingt einen Datenpunkt im iobroker zu definieren.

    Bei Subflows sind diese Umgebungsvariablen schon eine gute Erfindung, da man so jede Instanz der Node bzw. des Subflows unterschiedlich initialisieren kann.

    Hier mal ein Beispiel für die Initialisierung eines Flows.
    In den Eigenschaften eines Flows gibt es rechts einen neuen Button, in dem man Umgebungsvariablen definieren kann.

    62165503-91fd-48fb-90b8-2e242c21c8b1-image.png

    In dem Flow kann man dann auf diese Umgebungsvariable zugreifen.

    f32e9b5e-369c-4577-80d2-b369903b8f02-image.png

    Ein weiteres Highlight dieser Version ist für mqtt-Benutzer.
    Man kann die MQTT Nodes nun dynamisch konfigurieren. In der Beschreibung zum mqtt-Broker kann man nun das automatische Verbinden unterbinden - das sehe ich aber nicht als den Hauptvorteil.

    Der Vorteil dieser MQTT Nodes dynamisch zu konfigurieren ist, dass man so ein topic getriggert auslesen kann, was man im iobroker Umfeld mit einer iobroker-get Node macht.
    Allerdings ist das nicht gut dokumentiert in der Hilfe:

    Wenn man die mqtt-In Node dynamisch konfiguriert - bekommt diese einen Eingang und kann dann über msg.topic getriggert das topic auslesen:

    6cab157b-d79b-47ea-9ca4-d78172a94ba2-image.png

    Damit das Ganze aber funktioniert muss man eine action subscribe mitgeben - und wie gesagt das ist alles nicht dokumentiert:

    79c934ee-4437-411d-9e42-15304638897f-image.png

    Ein paar Beispiele für valide actions - gerade auch zum manuelle Aufbau zu einem mqtt Broker gibts hier in dem folgenden Flow:

    [
       {
           "id": "52942541834747c1",
           "type": "mqtt out",
           "z": "54b226bc.0793e8",
           "name": "",
           "topic": "",
           "qos": "",
           "retain": "",
           "respTopic": "",
           "contentType": "",
           "userProps": "",
           "correl": "",
           "expiry": "",
           "broker": "8a6b74c0.3c461",
           "x": 390,
           "y": 3200,
           "wires": []
       },
       {
           "id": "e2f0aae314b88447",
           "type": "inject",
           "z": "54b226bc.0793e8",
           "name": "connect port 1883",
           "props": [
               {
                   "p": "action",
                   "v": "connect",
                   "vt": "str"
               },
               {
                   "p": "broker",
                   "v": "{\"broker\":\"192.168.1.51\",\"port\":1883}",
                   "vt": "json"
               }
           ],
           "repeat": "",
           "crontab": "",
           "once": false,
           "onceDelay": 0.1,
           "topic": "",
           "x": 190,
           "y": 3200,
           "wires": [
               [
                   "52942541834747c1",
                   "c1cfb193f31c86a7"
               ]
           ]
       },
       {
           "id": "f5ed93bae65b0374",
           "type": "inject",
           "z": "54b226bc.0793e8",
           "name": "connect 1884",
           "props": [
               {
                   "p": "action",
                   "v": "connect",
                   "vt": "str"
               },
               {
                   "p": "broker",
                   "v": "{\"broker\":\"192.168.1.51\",\"port\":1884}",
                   "vt": "json"
               }
           ],
           "repeat": "",
           "crontab": "",
           "once": false,
           "onceDelay": 0.1,
           "topic": "",
           "payloadType": "str",
           "x": 170,
           "y": 3280,
           "wires": [
               [
                   "52942541834747c1"
               ]
           ]
       },
       {
           "id": "c1cfb193f31c86a7",
           "type": "debug",
           "z": "54b226bc.0793e8",
           "name": "",
           "active": true,
           "tosidebar": true,
           "console": false,
           "tostatus": false,
           "complete": "true",
           "targetType": "full",
           "statusVal": "",
           "statusType": "auto",
           "x": 440,
           "y": 3120,
           "wires": []
       },
       {
           "id": "1342c8cb6c7d1396",
           "type": "inject",
           "z": "54b226bc.0793e8",
           "name": "disconnect",
           "props": [
               {
                   "p": "action",
                   "v": "disconnect",
                   "vt": "str"
               }
           ],
           "repeat": "",
           "crontab": "",
           "once": false,
           "onceDelay": 0.1,
           "topic": "",
           "x": 180,
           "y": 3420,
           "wires": [
               [
                   "52942541834747c1"
               ]
           ]
       },
       {
           "id": "a945fa7b989d68d6",
           "type": "mqtt in",
           "z": "54b226bc.0793e8",
           "name": "",
           "topic": "",
           "qos": "2",
           "datatype": "auto",
           "broker": "8a6b74c0.3c461",
           "nl": false,
           "rap": true,
           "rh": 0,
           "inputs": 1,
           "x": 390,
           "y": 3540,
           "wires": [
               []
           ]
       },
       {
           "id": "a853a0255681f2c0",
           "type": "inject",
           "z": "54b226bc.0793e8",
           "name": "connect",
           "props": [
               {
                   "p": "action",
                   "v": "connect",
                   "vt": "str"
               },
               {
                   "p": "topic",
                   "vt": "str"
               }
           ],
           "repeat": "",
           "crontab": "",
           "once": false,
           "onceDelay": 0.1,
           "topic": "",
           "x": 200,
           "y": 3120,
           "wires": [
               [
                   "52942541834747c1"
               ]
           ]
       },
       {
           "id": "388b902f250d4ab1",
           "type": "inject",
           "z": "54b226bc.0793e8",
           "name": "force  connect 1884",
           "props": [
               {
                   "p": "action",
                   "v": "connect",
                   "vt": "str"
               },
               {
                   "p": "broker",
                   "v": "{\"broker\":\"192.168.1.51\",\"port\":1884,\"force\":true}",
                   "vt": "json"
               }
           ],
           "repeat": "",
           "crontab": "",
           "once": false,
           "onceDelay": 0.1,
           "topic": "",
           "x": 190,
           "y": 3340,
           "wires": [
               [
                   "52942541834747c1"
               ]
           ]
       },
       {
           "id": "6128f1909cbf8ea4",
           "type": "inject",
           "z": "54b226bc.0793e8",
           "name": "subscribe topic test",
           "props": [
               {
                   "p": "action",
                   "v": "subscribe",
                   "vt": "str"
               },
               {
                   "p": "topic",
                   "vt": "str"
               }
           ],
           "repeat": "",
           "crontab": "",
           "once": false,
           "onceDelay": 0.1,
           "topic": "test",
           "x": 180,
           "y": 3540,
           "wires": [
               [
                   "a945fa7b989d68d6"
               ]
           ]
       },
       {
           "id": "4c7b8677c28b28d6",
           "type": "inject",
           "z": "54b226bc.0793e8",
           "name": "Unsubscribe topic test",
           "props": [
               {
                   "p": "action",
                   "v": "unsubscribe",
                   "vt": "str"
               },
               {
                   "p": "topic",
                   "vt": "str"
               }
           ],
           "repeat": "",
           "crontab": "",
           "once": false,
           "onceDelay": 0.1,
           "topic": "test",
           "x": 209,
           "y": 3606,
           "wires": [
               [
                   "a945fa7b989d68d6"
               ]
           ]
       },
       {
           "id": "8a6b74c0.3c461",
           "type": "mqtt-broker",
           "name": "localhost:1883",
           "broker": "192.168.1.51",
           "port": "1883",
           "clientid": "",
           "autoConnect": false,
           "usetls": false,
           "protocolVersion": "5",
           "keepalive": "60",
           "cleansession": true,
           "birthTopic": "",
           "birthQos": "0",
           "birthRetain": "false",
           "birthPayload": "",
           "birthMsg": {},
           "closeTopic": "",
           "closePayload": "",
           "closeMsg": {},
           "willTopic": "",
           "willQos": "0",
           "willRetain": "false",
           "willPayload": "",
           "willMsg": {},
           "sessionExpiry": ""
       }
    ]
    

    Ansonsten kann man im Debug Fenster nun auch die Debug Nodes filtern, die man sehen will, ohne diese im Flow deaktivieren bzw. aktivieren zu müssen. Hab ich aber auch noch nicht benutzt.

    Auf die Highlights der Version 2.2 gehe ich hier erst mal nicht ein - hier verweise ich auf die aktuelle Guided Tour.

    ==============================================================================

    Ich halte mich mal an die Liste - und werde diese ggf. mit eine paar Beispielen aufzeigen:

    3.0.0 (2022-03-11)

    IMPORTANT: Node-RED is now v2. Please check your nodes for compatibility! See also https://nodered.org/blog/2021/07/20/version-2-0-released and https://nodered.org/blog/2021/10/21/version-2-1-released

    • (jwiesel) Node-RED updated to 2.2.2

    Nun erst nochmals vielen Dank! - Wie gesagt an dem vorangegangen Post sieht man, dass doch erhebliche Erweiterungen und Verbesserungen mit den neuen Verbesserungen einhergegangen sind.

    • (jwiesel) "Tail" node has been removed from the default palette in Node-RED 2.0. You can reinstall it from node-red-node-tail.

    wurde bereits erwähnt

    • (Apollon77) Automatically create missing folders when node-red creates objects in javascript., node-red. and 0_userdata.0.*

    Hier steckte ein größerer Aufwand dahinter ist nun aber wieder kompatibel mit dem neuen Admin 5 und erstellt nun automatisch Folder Objekte für alle Hierarchieebenen. Ich persönlich habe mich ja sehr darüber mokiert, dass das nun so unflexibel war und bin hier sehr dankbar, dass dieses Problem gelöst ist und man unter 0_userdata.0.* wieder volle Flexibilität hat. Auch Folder Objekte in der Hierarchie können im Nachhinein wieder zu States umgewandelt werden. Als Beispiel werde ich mal meinen Subflow verwenden, um zu demonstrieren, dass die Objekte nun automatisch von der iobroker-out Node angelegt werden.

    Ich hab einfach mal aus den JSONATA Beispielen mal einen JSON String als Beispiel genommen und in eine INJECT-Node gepackt:

    a1267a73-3522-4646-b11e-f42593e2d219-image.png
    Über eine Subflow Variable legt man fest unter welchem Datenpunkt die Struktur angelegt werden soll.

    Das Ergebnis kann sich nun sehen lassen:

    712528bf-8408-43ed-9a19-d3a16136ca7f-image.png

    Man sieht der ganze JSON String wird als Datenstruktur mit den erforderlichen Folder-Objekten von der iobroker-out Node angelegt. Herzlichen Dank nochmals an @apollon77

    • (jwiesel) Added NodeRed parameter httpStatic to instance settings

    Auch das habe ich angeregt, da ich bei jedem Update die settings.js immer anpassen musste und das in meinen Augen ein wichtiger Parameter ist, den man nun in der Adapterkonfiguration festlegen kann.

    76c54ba5-ea69-4dfd-bac8-1af434031a5a-image.png

    Dieses Verzeichnis ist das Basisverzeichnis, um im Dashboard auf eigene Resourcen zugreifen zu können. Das können JS-Programme sein (s. Steelseries Thread) oder bei mir liegen Bilder und Wettericons in diesem Pfad.

    Im Flow ist das dann das Root Verzeichnis:

    Hier zeige ich zum Beispiel ein bestimmtes Icon für das Wetter an:

    619c1387-4ddf-4a0e-a949-c52e6876381a-image.png
    Basis ist also : /images/WetterIcons/ zusammen mit dem http-Static Path - liegt das Verzeichnis auf der Maschine also im Verzeichnis:
    /data/node-red/images/WetterIcons/

    40fe5ce5-5d44-4979-981c-82b74ead5c5b-image.png

    • (bluefox) Added the reading of objects from admin for SelectID dialog

    Das ist meines Erachtens noch offen und funktioniert immer noch nicht.
    Also den Pfad weiterhin manuell rauskopieren oder den Adapter neu starten.

    • (bluefox) Added debug output: Cannot set state of non-existing object

    Das ist meines Erachtens auch eine riesige Verbesserung. Hier gab es in der Vorgängerversion folgenden Eintrag im Log:

    Automatic objects creation is not enabled. You can enable it in the node configuration
    

    Da kommt man auch nicht gleich drauf, dass diese Meldung erzeugt wird, weil eine iobroker-IN oder iobroker-GET Node einen Datenpunkt im iobroker lesen möchte, den es gar nicht gibt.

    Hier mal eine ioBroker IN Node, die auf einen Datenpunkt verweist - der nicht existiert.

    Nun war man in der Vergangenheit mit obiger Meldung aufgeschmissen, weil man

    1. nicht wusste welcher Datenpunkt nicht existiert
      und
    2. man nicht wusste welche Node auf diesen Datenpunkt verweist.

    ac7a449e-5760-4e00-9860-79083761ee34-image.png

    Nun löst der neue Log-Eintrag beide Probleme:

    5727f4605ec73bac: "ioBroker in" Cannot set state of non-existing object "0_userdata.0.testType5".
    

    zum einen weiß man nun welcher Datenpunkt nicht existiert und bekommt auch noch gleich die Node-ID mitgeliefert mit der man die Node in seinen Flows identifizieren kann. Also die ID aus dem LOG kopieren und dann in das Suchfenster der Flows eingeben.
    Mit der Suche wird einem nicht nur die Node angezeigt:

    3e6d891e-c8e6-4bab-99fd-096287a71c7b-image.png

    Durch einen Doppelklick auf die Lupe wird sowohl auf den Flow mit der betroffenen Node gewechselt, diese markiert (oranger Rahmen) und die Definition aufgemacht.
    527d91ef-a74a-4beb-80e5-2eac84c40722-image.png

    Also in meinen Augen ein toller Komfortgewinn.

    • (bluefox) Allow setting of regular expression in the list node in message

    Hier hat nach meinen Tests, sowohl der reguläre Ausdruck nicht richtig funktioniert und zukünftig ist dieser reguläre Ausdruck auch noch dynamisch konfigurierbar.

    Hier wieder ein Anwendungsbeispiel:

    Die folgende iobroker-List Node - kann alle Objekte eines bestimmten Typs mit einem bestimmten Pfad selektieren.
    Hier mal meine Struktur unter 0_userdata.0

    d3884432-46f6-463a-861f-4a7f3486ac2a-image.png

    Über einen regulären Ausdruck möchte ich nun nur die Datenpunkte

    0_userdata.0.testType2
    0_userdata.0.testType3
    0_userdata.0.testType4
    

    herausfiltern.

    Die Definition der List Node sieht also wie folgt aus:

    e05708f5-1c02-4221-8eb7-c58cbc268647-image.png

    Das Topic selektiert alle Objekte unter 0_userdata.0.* (grün markiert) und filtert dann mit dem regulären Ausdruck (gelb markiert) die 3 gewünschten Objekte heraus .

    Die Anforderung war nun auch den Filter dynamisch konfigurieren zu können.

    Nun kann sowohl das Topic (grün), als auch der reguläre Ausdruck (gelb) über msg.regex dynamisch konfiguriert werden!

    90deb17a-a679-4cfa-b69c-ca12b4729537-image.png

    • (bluefox) Allow the filtering of ack=false messages for IN node

    Auch dies macht nun den NR-Fans das Leben viel leichter - hier hatten die Blockly Fans immer einen Vorteil. Wir konnten nie auf ACK=false überprüfen, sondern nur auf true oder egal. Gut es ging umständlich, indem wir das gesamte Objekt auslasen und dann über eine Switch Node filterten.

    Nun kann man auch ACK= false filtern und quasi wie ein HW Adapter agieren:

    2e7b43e8-fa70-40e5-840f-dc013b18da0a-image.png

    Beispiel in Zusammenspiel mit dem YAHKA Adapter, um Endlosschleifen zu vermeiden.
    Man erstellt zum Beispiel einen eigenen Datenpunkt unter 0_userdata.0. Wenn man dann in der HomeApp das Gerät schaltet, wird dieser Datenpunkt mit ACK=false gesetzt. Der Flow filtert dann über ACK=false und der iobroker-In Node den Trigger heraus und schaltet die eigentliche Hardware. Als Rückmeldung setzt der Flow den Datenpunkt mit ACK=true und verhindert so, dass die HW erneut geschaltet wird.

    • (Apollon77) Enhance GetNode rbe/deadband functions to optionally ignore initial value (wurde in Version 3.1.x geändert - und am Ende ergänzt)

    • (Apollon77) Return undefined for GetNode if the state currently has no value set (e.g. because expired or never set)

    Das bisherige Verhalten - hatte einen nicht vorhandenen State einfach ignoriert. Damit konnte man im Flow nicht auf diesen Fall reagieren und ggf. einen State erstellen. Nun hat man folgende Möglichkeiten:

    768b1683-168e-4790-bc2e-8a2f974daf05-image.png

    1. Return nothing
      Das entspricht dem bisherigen Verhalten und nicht vorhandene States werden ignoriert. Eine info wird im iobroker Log geloggt.

    2. Return state value as undefined
      Es wird ein undefined zurückgegeben, egal ob ein Wert nicht existiert oder nicht initialisiert ist. Man muss also in der Folge selbst entscheiden, ob man auf beide Situationen unterschiedlich reagieren will.

    3. Return error
      Ein uninitialisierter Wert wird weiterhin undefined weitergeben, bei einem nicht vorhandenen Wert wird ein Fehler erzeugt. Wird dieser nicht behandelt gibt es nur eine Fehlereintrag im LOG mit dem entsprechenden Datenpunkt, der nicht vorhanden ist.
      In Kombination mit einer Catch-Node kann man diesen Fehler abfangen und den Datenpunkt/State über eine iobroker-out Nodes anlegen.

    • (Apollon77) Allow for GetNode to return an error if a state-id is used for which no object exists, else also return undefined

    Wurde wie vorher besprochen.

    • (Apollon77) Also allow to access system.* states directly

    Das war leider seit der Version 2.x des iobroker NodeRed-Adapters nicht mehr möglich. In der Version 1 ging das. Somit musste man einen Alias bemühen, um den Zustand von beispielsweise Adapter zu überprüfen.

    Nun kann man die Objekte unter system wieder abfragen:

    4de0c45b-f846-447a-94c5-8e453c59e117-image.png

    Damit ist es ohne Umwege wieder möglich - den Zustand von Adapter zu analysieren und ggf. eigene Maßnahmen einzuleiten.

    Vielen Dank auch hierfür.

    • (Apollon77) When RBE function is used on InNode and not value is sent on start still initialize current value internally

    wurde bereits besprochen

    • (Apollon77) Add node-ID in front of all log lines logged by node logic

    Der Komfortgewinn wurde in Zusammenhang bei der Suche von iobroker-IN Nodes, die auf nicht vorhandene Datenpunkte verweisen erläutert.

    • (jwiesel) Changed default setting to "convert data from ioBroker nodes into Strings" to false. Setting will not be changed automatically in instances already existing

    Dies ist wohl eine der wichtigsten Verbesserungen für Anfänger. Wie oft muss man fragen, ob hier der Haken rausgenommen wurde. Nun ist der Standardwert, dass aus dem iobroker gelesene Werte ihren Typ behalten und nicht in Strings umgewandelt werden!

    ==============================================================================

    Also nochmals vielen Dank - an alle die an den Verbesserungen mitgewirkt haben und falls es noch Fragen zu meinen Erläuterungen gibt, nutzt den Thread und ich denke neben mir werden auch alle anderen versuchen, hier zu helfen!!!

    Ach ja - noch was Wichtiges: Dieser Node-Red Adapter ist nun mit dem JS 4.0.x Adapter kompatibel!!! - Somit können auch NR-Fans nun wieder das System auf den akuellen Stand bringen!

    ==============================================================================
    Änderungen in Version 3.2.0

    • ListenpunktEnhance GetNode rbe/deadband functions to optionally ignore initial value

    Das ignorieren des Initialwertes entspricht nun dem Verhalten der Filter Node und bedeutet, dass dieser Initialwert nicht gesendet wird, sondern nur zum Initialisieren der Node genutzt wird, um Änderungen zu erkennen.

    Die Beschreibung wurde von Ignore auf Initialize geändert:

    3cab447c-e3a7-467c-b7a1-f461ba4e03a1-image.png

    Will man also den Anfangswert nach Adapterstart oder Neustart der Flows unterdrücken will, nutzt man die Initialisierungsoption - anderenfalls wird dieser Wert - falls Nachrichten bei Start auslesen gewählt ist - gesendet.

    Hier das Bild direkt nach Adapterstart - wenn send msg at start definiert wurde:

    f75c3999-d239-436a-bfcb-84c339ee73f4-image.png

    Falls no msg at start ausgewählt wurde findet die Initialisierung nach dem ersten Update statt.

    Ansonsten stehen wie beim Filter diese Optionen zur Verfügung:

    1. Wert hat sich geändert.
    2. Wert hat sich um einen definierten Wert geändert (also um eine Zahl)
    3. Wert hat sich um einen Prozentsatz geändert.

    In den Fällen 2 und 3 wird größer gleich als Vergleich angewandt.

    Das ganze funktioniert nicht über Wildcards.

    Für alle komplexeren Fälle empfieht es sich die Filter-Node in Kombination zu nutzen.
    In diesem Fall sollte man die iobroker-In Node, wie folgt konfigurieren:

    1. send msg at start
    2. send all events

    Die Filterung konfiguriert man dann über die Filter Node. Da stehen weitere Optionen zur Verfügung. Nutzt man Wildcards in der iobroker-IN Node, und konfiguriert, dass der Filter auf topic Basis arbeitet:

    ddcf1313-5065-47b1-994b-1685794a6585-image.png

    • (Bannsaenger) Added option for in Node to choose topic format (MQTT with / or ioBroker with .). Default: MQTT

    Nach dem Bilder in meinen Augen mehr als 1000 Worte sagen. Das bisherige Verhalten die Hierarchien der Topics mit / zu trennen, wie es unter MQTT üblich ist (grün), kann man sich das topic auch als iobroker Pfade mit einem Punkt zur Trennung der Hierarchieebenen ausgeben lassen (gelb).

    941e64f1-944b-47d0-88be-1f0f0137cfde-image.png

    Zu den letzten beiden Punkten kann ich nicht viel sagen, da ich weder Authentisierung, noch das Ändern der Pfade für den Webzugang genutzt habe.

    • Added new parameter "httpNodeRoot" as httpRoot has been replaced by httpAdminRoot in version 3.0.0.

    • Added extended authentication to instance settings and config
      Hier hat man in der NodeRed Adapter Konfiguration einen eigenen Tab, mit folgenden Optionen:

    1. Keine Authentifizierung
    2. Einfache Authentifizierung - mit Benutzer und Passwort (wobei ich nicht weiß, ob das wirklich noch funktioniert)
    3. Erweiterte Authentifizierung - hier kann man dann verschiedene Benutzer mit einer differenzierten Rechtevergabe definieren.

    5a60bb09-ded0-415a-aa24-dcaa2fa9c8fe-image.png

    Aber wie gesagt - hier muss man selbst Nachlesen welche Rechte es gibt.

    26ce2512-2b1b-4d23-b0d2-5ec9a11cb104-image.png

    Viel habe ich zu Benutzerberechtigungen nicht gefunden: Entweder "read" oder "*" für Vollzugriff. Welche Objekte es gibt, muss man eher ausprobieren. HIer mal die Seite zu BEnutzerberechtigungen: https://nodered.org/docs/user-guide/runtime/securing-node-red#user-permissions

    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

    apollon77A F 2 Antworten Letzte Antwort
    7
    • mickymM Online
      mickymM Online
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #2

      gelöscht - und in das 1. Posting kopiert - damit das nicht so auseinander gerissen ist. ;)

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      1 Antwort Letzte Antwort
      2
      • D Online
        D Online
        darkiop
        Most Active
        schrieb am zuletzt editiert von
        #3

        Wow .. changelog Extended, das sollte im eigentlichen Changelog verlinkt werden ;)

        Für mich, als nicht node-red Nutzer, vielleicht der Punkt an dem ich entscheide doch mal etwas Zeit in node-red zu investieren - mal schauen wie steil die Lernkurve ist ;)

        Proxmox-ioBroker-Redis-HA Doku: https://forum.iobroker.net/topic/47478/dokumentation-einer-proxmox-iobroker-redis-ha-umgebung

        1 Antwort Letzte Antwort
        1
        • J Offline
          J Offline
          Jan1
          schrieb am zuletzt editiert von
          #4

          Was möchte mir diese Warnung mitteilen?

          2022-03-12 07:27:31.096 - warn: node-red.0 (1156817) Cannot enable the dynamic object read as admin has authentication
          
          mickymM apollon77A 2 Antworten Letzte Antwort
          0
          • J Jan1

            Was möchte mir diese Warnung mitteilen?

            2022-03-12 07:27:31.096 - warn: node-red.0 (1156817) Cannot enable the dynamic object read as admin has authentication
            
            mickymM Online
            mickymM Online
            mickym
            Most Active
            schrieb am zuletzt editiert von mickym
            #5

            @jan1 sagte in Neuer Node-Red Adapter 3.0.0 in Latest - Repository:

            Was möchte mir diese Warnung mitteilen?

            2022-03-12 07:27:31.096 - warn: node-red.0 (1156817) Cannot enable the dynamic object read as admin has authentication
            

            Ich bin da leider überfragt - aber liegt wohl daran, dass Du mit einer Authentifizierung arbeitest. Das muss wohl einer der Adapterentwickler beantworten. Vielleicht mal rausnehmen, ansonsten halt Issue eröffnen. Ist ja noch im Beta Status. ;) - zumindest was den Adapter betrifft, wobei es bei mir nun auch nach ein paar Fehlermeldungen inzwischen erstaunlich ruhig ist. ;)

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            J 1 Antwort Letzte Antwort
            0
            • mickymM mickym

              @jan1 sagte in Neuer Node-Red Adapter 3.0.0 in Latest - Repository:

              Was möchte mir diese Warnung mitteilen?

              2022-03-12 07:27:31.096 - warn: node-red.0 (1156817) Cannot enable the dynamic object read as admin has authentication
              

              Ich bin da leider überfragt - aber liegt wohl daran, dass Du mit einer Authentifizierung arbeitest. Das muss wohl einer der Adapterentwickler beantworten. Vielleicht mal rausnehmen, ansonsten halt Issue eröffnen. Ist ja noch im Beta Status. ;) - zumindest was den Adapter betrifft, wobei es bei mir nun auch nach ein paar Fehlermeldungen inzwischen erstaunlich ruhig ist. ;)

              J Offline
              J Offline
              Jan1
              schrieb am zuletzt editiert von
              #6

              @mickym
              Ja habe ich an und diese Meldung nicht im 2.X Adapter. Läuft alles soweit ich sehen kann, bis auf die neue Warnung.
              Dachte ich mir, dass es mit dem Adapter Login zu hat, wobei ich bei solchen Dingen, die bei mir die Bude kontrollieren eben immer lieber auf Nummer sicher gehe.

              mickymM 1 Antwort Letzte Antwort
              0
              • J Jan1

                @mickym
                Ja habe ich an und diese Meldung nicht im 2.X Adapter. Läuft alles soweit ich sehen kann, bis auf die neue Warnung.
                Dachte ich mir, dass es mit dem Adapter Login zu hat, wobei ich bei solchen Dingen, die bei mir die Bude kontrollieren eben immer lieber auf Nummer sicher gehe.

                mickymM Online
                mickymM Online
                mickym
                Most Active
                schrieb am zuletzt editiert von mickym
                #7

                @jan1 Eventuell hast Du ja irgendwelche Credentials in Deiner settings.js gehabt und musst die vielleicht wieder eintragen. Der Aufbau dieser Konfigurationsdatei ist ja wieder neu oder war es in der Adapterkonfiguration? Vielleicht dort ggf. nochmal neu eintragen - aber ich weiß das ehrlich gesagt nicht. Vielleicht besser wenn sich ein Entwickler dazu äußert. Ich bin hier ja nur Anwender.

                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                1 Antwort Letzte Antwort
                1
                • mickymM mickym

                  Nachdem ich im Node-RED Bereich des ioBroker-Forums relativ aktiv bin und auch bei den Tests zu dem neuen Major-Release des Node-Red Adapters in der Version 3.0.0 mithelfen durfte, habe ich mich in Abstimmung mit @apollon77 dazu bereit erklärt ein paar Highlights und Fehlerbehebungen des neuen Major-Releases hier vorzustellen bzw. zu dokumentieren. Teilweise werde ich hier auch ein paar persönliche Schwerpunkte setzen - es aber auch nicht schaffen, alles in einem Posting festzuhalten.

                  Ich möchte mich persönlich auf diesem Weg nochmals bei allen Entwicklern (@apollon77, @Bluefox und @jwiesel), die an der Entwicklung und bei der Bereitstellung dieses Node-Red Adapters beteiligt waren, persönlich bedanken!
                  Es ist nicht nur ein Meilenstein, weil nun offiziell Node-Red in der Version 2.2.2 enthalten ist und diese ebenfalls ein paar wirkliche Neuerungen und Erleichterungen mit sich bringen, sondern weil in meinen Augen auch die meisten Fehlerbehebungen und Verbesserungen des Node-Red Adapters im Zusammenspiel mit dem iobroker enthalten.

                  Da die Sprünge bei den Node-Red Versionen nun doch erheblich waren, hier ein paar Quellen und ein paar Highlights, die inzwischen implementiert wurden.

                  Neues Major Release Node-Red Version 2

                  In der Version 2.0 sind erst mal die wirklich weit reichensten Änderungen erhalten, die einem das Leben wesentlich erleichtern.

                  Einen Überblick vom Node-Red Guru mit einem Video auf Englisch gibt es hier: https://nodered.org/blog/2021/07/20/version-2-0-released

                  Ein paar Einstellungen muss man immer noch die settings.js anpassen. Grundsätzlich ist diese Datei vollkommen neu strukturiert und nun wesentlich übersichtlicher aufgebaut.
                  Für bestimmte Einstellungen muss man diese immer noch an den bekannten Stellen editieren.

                  Wenn man also den "neuen" Monaco Editor im Programmierfenster der function Nodes nutzen möchte, um kontextbezogene Hilfe bzw. Vorschläge zu bekommen, dann muss man das manuell weiterhin in der settings.js machen. Der bisheriger Editor ist "ace", der neue "monaco". Ich bevorzuge eigentlich weiter den bisherigen Editor - aber ist Gewöhnungssache.

                  1c1099bd-ca4c-466e-9099-a10aa1f9ea04-image.png

                  Eines der gewaltigsten Vorteile der NR Version 2 ist die Installation und das Nutzen externer NodeJS Module in Function Nodes ohne diese installieren zu müssen!!!
                  Die Module müssen also nicht in der settings.js bekannt gemacht werden und werden automatisch im
                  /opt/iobroker/iobroker-data/node-red/node_modules Verzeichnis installiert. Es ist KEINE Installation über Adaptereinstellungen oder über die Kommandozeile erforderlich.
                  Die Module können einfach in den function Nodes über den Setup-Tab bekannt gemacht werden:

                  16316e33-96d0-4109-b071-bac6108e053c-image.png

                  Beispiele für die Verwendung von NodeJS Bibliotheken in function Nodes gibts in diesem Thread.

                  Ansonsten heißen die ehemaligen RBE Nodes nun Filter Nodes:

                  f1725060-85cf-4507-9b99-62f8a2425010-image.png

                  Wenn es Probleme mit dieser Node gibt - müsst ihr ggf. die rbe Nodes manuell deinstallieren. Im Palettenmanager tauchen die rbe/filter Nodes unter den Core Nodes auf und dürfen nicht mehr als eigenständige Nodes zu sehen sein.

                  Die tail Node ist im Gegenzug nicht mehr Bestandteil der Core-Nodes. Wer diese also braucht oder im Einsatz hat muss diese neu installieren: https://flows.nodered.org/node/node-red-node-tail

                  Ab der Version 2.1.
                  gibt es als Highlight erst mal eine Guided Tour, die alle Neuerungen vorstellt. Allerdings kann man nicht die Vorgängerversionen anschauen - da die aktuelle Version bereits 2.2.2 ist - findet man nun die Guided Tour nur für diese Version, aber eben keine anderen.

                  Die aktuelle Guided Tour findet man unter dem Change Log - das sich öffnet sobald man im Hauptmenü auf die aktuelle Versionsnummer klickt. Dort findet man dann ganz oben die Guided Tour.

                  9a3e3557-dc9d-4bd9-8ffd-7653d22cb9af-image.png 3e1a5225-4350-4925-9bdb-8fa8a183dd66-image.png

                  Die Details vom NR-Guru in Englisch findet man hier - zusammen mit einem Video: https://nodered.org/blog/2021/10/21/version-2-1-released

                  Dieses Release vor allem verbessert die Übersichtlichkeit und das Anordnen der Nodes. Man markiert die gewünschten Nodes und kann diese dann über das Menü anordnen:

                  fd523360-9619-42ba-8ac8-760cb77d5757-image.png

                  Wer schon mal mit Visio oder ähnlichen Tools gearbeitet hat oder Visual Basic um eine GUI zu entwerfen, dem wird das sicher bekannt vorkommen. ;)

                  Das wichtigste Menü - um die bessere Übersichtlichkeit zu nutzen - ist im Flows Menü:

                  67634f91-3efe-44df-9d9f-bd82158cb2bf-image.png

                  Damit kann mal alle Flows, die man gerade nicht braucht verstecken und über den Dialog wieder sichtbar machen oder man klickt in der Flow übersicht auf den Flow und toggelt zwischen versteckt (durchgestrichenes Auge) und sichtbar:

                  d9c71a89-66b7-4417-9ad7-13a44890f331-image.png

                  Ein weitere Möglichkeit einen Flow zu verstecken ist einfach in dem Tab auf das Auge zu klicken:
                  18984b4c-2546-437c-8c94-bdb7b66406d8-image.png

                  Eine weitere meines Erachtens sehr erwähnenswerte Neuerung ist, dass man nicht nur für Subflows, sondern auch für Flows Umgebungsvariablen nutzen zu können, um ggf. die Flows zu initialisieren. Dazu braucht man also nicht mehr unbedingt einen Datenpunkt im iobroker zu definieren.

                  Bei Subflows sind diese Umgebungsvariablen schon eine gute Erfindung, da man so jede Instanz der Node bzw. des Subflows unterschiedlich initialisieren kann.

                  Hier mal ein Beispiel für die Initialisierung eines Flows.
                  In den Eigenschaften eines Flows gibt es rechts einen neuen Button, in dem man Umgebungsvariablen definieren kann.

                  62165503-91fd-48fb-90b8-2e242c21c8b1-image.png

                  In dem Flow kann man dann auf diese Umgebungsvariable zugreifen.

                  f32e9b5e-369c-4577-80d2-b369903b8f02-image.png

                  Ein weiteres Highlight dieser Version ist für mqtt-Benutzer.
                  Man kann die MQTT Nodes nun dynamisch konfigurieren. In der Beschreibung zum mqtt-Broker kann man nun das automatische Verbinden unterbinden - das sehe ich aber nicht als den Hauptvorteil.

                  Der Vorteil dieser MQTT Nodes dynamisch zu konfigurieren ist, dass man so ein topic getriggert auslesen kann, was man im iobroker Umfeld mit einer iobroker-get Node macht.
                  Allerdings ist das nicht gut dokumentiert in der Hilfe:

                  Wenn man die mqtt-In Node dynamisch konfiguriert - bekommt diese einen Eingang und kann dann über msg.topic getriggert das topic auslesen:

                  6cab157b-d79b-47ea-9ca4-d78172a94ba2-image.png

                  Damit das Ganze aber funktioniert muss man eine action subscribe mitgeben - und wie gesagt das ist alles nicht dokumentiert:

                  79c934ee-4437-411d-9e42-15304638897f-image.png

                  Ein paar Beispiele für valide actions - gerade auch zum manuelle Aufbau zu einem mqtt Broker gibts hier in dem folgenden Flow:

                  [
                     {
                         "id": "52942541834747c1",
                         "type": "mqtt out",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "topic": "",
                         "qos": "",
                         "retain": "",
                         "respTopic": "",
                         "contentType": "",
                         "userProps": "",
                         "correl": "",
                         "expiry": "",
                         "broker": "8a6b74c0.3c461",
                         "x": 390,
                         "y": 3200,
                         "wires": []
                     },
                     {
                         "id": "e2f0aae314b88447",
                         "type": "inject",
                         "z": "54b226bc.0793e8",
                         "name": "connect port 1883",
                         "props": [
                             {
                                 "p": "action",
                                 "v": "connect",
                                 "vt": "str"
                             },
                             {
                                 "p": "broker",
                                 "v": "{\"broker\":\"192.168.1.51\",\"port\":1883}",
                                 "vt": "json"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "x": 190,
                         "y": 3200,
                         "wires": [
                             [
                                 "52942541834747c1",
                                 "c1cfb193f31c86a7"
                             ]
                         ]
                     },
                     {
                         "id": "f5ed93bae65b0374",
                         "type": "inject",
                         "z": "54b226bc.0793e8",
                         "name": "connect 1884",
                         "props": [
                             {
                                 "p": "action",
                                 "v": "connect",
                                 "vt": "str"
                             },
                             {
                                 "p": "broker",
                                 "v": "{\"broker\":\"192.168.1.51\",\"port\":1884}",
                                 "vt": "json"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "payloadType": "str",
                         "x": 170,
                         "y": 3280,
                         "wires": [
                             [
                                 "52942541834747c1"
                             ]
                         ]
                     },
                     {
                         "id": "c1cfb193f31c86a7",
                         "type": "debug",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "true",
                         "targetType": "full",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 440,
                         "y": 3120,
                         "wires": []
                     },
                     {
                         "id": "1342c8cb6c7d1396",
                         "type": "inject",
                         "z": "54b226bc.0793e8",
                         "name": "disconnect",
                         "props": [
                             {
                                 "p": "action",
                                 "v": "disconnect",
                                 "vt": "str"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "x": 180,
                         "y": 3420,
                         "wires": [
                             [
                                 "52942541834747c1"
                             ]
                         ]
                     },
                     {
                         "id": "a945fa7b989d68d6",
                         "type": "mqtt in",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "topic": "",
                         "qos": "2",
                         "datatype": "auto",
                         "broker": "8a6b74c0.3c461",
                         "nl": false,
                         "rap": true,
                         "rh": 0,
                         "inputs": 1,
                         "x": 390,
                         "y": 3540,
                         "wires": [
                             []
                         ]
                     },
                     {
                         "id": "a853a0255681f2c0",
                         "type": "inject",
                         "z": "54b226bc.0793e8",
                         "name": "connect",
                         "props": [
                             {
                                 "p": "action",
                                 "v": "connect",
                                 "vt": "str"
                             },
                             {
                                 "p": "topic",
                                 "vt": "str"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "x": 200,
                         "y": 3120,
                         "wires": [
                             [
                                 "52942541834747c1"
                             ]
                         ]
                     },
                     {
                         "id": "388b902f250d4ab1",
                         "type": "inject",
                         "z": "54b226bc.0793e8",
                         "name": "force  connect 1884",
                         "props": [
                             {
                                 "p": "action",
                                 "v": "connect",
                                 "vt": "str"
                             },
                             {
                                 "p": "broker",
                                 "v": "{\"broker\":\"192.168.1.51\",\"port\":1884,\"force\":true}",
                                 "vt": "json"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "x": 190,
                         "y": 3340,
                         "wires": [
                             [
                                 "52942541834747c1"
                             ]
                         ]
                     },
                     {
                         "id": "6128f1909cbf8ea4",
                         "type": "inject",
                         "z": "54b226bc.0793e8",
                         "name": "subscribe topic test",
                         "props": [
                             {
                                 "p": "action",
                                 "v": "subscribe",
                                 "vt": "str"
                             },
                             {
                                 "p": "topic",
                                 "vt": "str"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "test",
                         "x": 180,
                         "y": 3540,
                         "wires": [
                             [
                                 "a945fa7b989d68d6"
                             ]
                         ]
                     },
                     {
                         "id": "4c7b8677c28b28d6",
                         "type": "inject",
                         "z": "54b226bc.0793e8",
                         "name": "Unsubscribe topic test",
                         "props": [
                             {
                                 "p": "action",
                                 "v": "unsubscribe",
                                 "vt": "str"
                             },
                             {
                                 "p": "topic",
                                 "vt": "str"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "test",
                         "x": 209,
                         "y": 3606,
                         "wires": [
                             [
                                 "a945fa7b989d68d6"
                             ]
                         ]
                     },
                     {
                         "id": "8a6b74c0.3c461",
                         "type": "mqtt-broker",
                         "name": "localhost:1883",
                         "broker": "192.168.1.51",
                         "port": "1883",
                         "clientid": "",
                         "autoConnect": false,
                         "usetls": false,
                         "protocolVersion": "5",
                         "keepalive": "60",
                         "cleansession": true,
                         "birthTopic": "",
                         "birthQos": "0",
                         "birthRetain": "false",
                         "birthPayload": "",
                         "birthMsg": {},
                         "closeTopic": "",
                         "closePayload": "",
                         "closeMsg": {},
                         "willTopic": "",
                         "willQos": "0",
                         "willRetain": "false",
                         "willPayload": "",
                         "willMsg": {},
                         "sessionExpiry": ""
                     }
                  ]
                  

                  Ansonsten kann man im Debug Fenster nun auch die Debug Nodes filtern, die man sehen will, ohne diese im Flow deaktivieren bzw. aktivieren zu müssen. Hab ich aber auch noch nicht benutzt.

                  Auf die Highlights der Version 2.2 gehe ich hier erst mal nicht ein - hier verweise ich auf die aktuelle Guided Tour.

                  ==============================================================================

                  Ich halte mich mal an die Liste - und werde diese ggf. mit eine paar Beispielen aufzeigen:

                  3.0.0 (2022-03-11)

                  IMPORTANT: Node-RED is now v2. Please check your nodes for compatibility! See also https://nodered.org/blog/2021/07/20/version-2-0-released and https://nodered.org/blog/2021/10/21/version-2-1-released

                  • (jwiesel) Node-RED updated to 2.2.2

                  Nun erst nochmals vielen Dank! - Wie gesagt an dem vorangegangen Post sieht man, dass doch erhebliche Erweiterungen und Verbesserungen mit den neuen Verbesserungen einhergegangen sind.

                  • (jwiesel) "Tail" node has been removed from the default palette in Node-RED 2.0. You can reinstall it from node-red-node-tail.

                  wurde bereits erwähnt

                  • (Apollon77) Automatically create missing folders when node-red creates objects in javascript., node-red. and 0_userdata.0.*

                  Hier steckte ein größerer Aufwand dahinter ist nun aber wieder kompatibel mit dem neuen Admin 5 und erstellt nun automatisch Folder Objekte für alle Hierarchieebenen. Ich persönlich habe mich ja sehr darüber mokiert, dass das nun so unflexibel war und bin hier sehr dankbar, dass dieses Problem gelöst ist und man unter 0_userdata.0.* wieder volle Flexibilität hat. Auch Folder Objekte in der Hierarchie können im Nachhinein wieder zu States umgewandelt werden. Als Beispiel werde ich mal meinen Subflow verwenden, um zu demonstrieren, dass die Objekte nun automatisch von der iobroker-out Node angelegt werden.

                  Ich hab einfach mal aus den JSONATA Beispielen mal einen JSON String als Beispiel genommen und in eine INJECT-Node gepackt:

                  a1267a73-3522-4646-b11e-f42593e2d219-image.png
                  Über eine Subflow Variable legt man fest unter welchem Datenpunkt die Struktur angelegt werden soll.

                  Das Ergebnis kann sich nun sehen lassen:

                  712528bf-8408-43ed-9a19-d3a16136ca7f-image.png

                  Man sieht der ganze JSON String wird als Datenstruktur mit den erforderlichen Folder-Objekten von der iobroker-out Node angelegt. Herzlichen Dank nochmals an @apollon77

                  • (jwiesel) Added NodeRed parameter httpStatic to instance settings

                  Auch das habe ich angeregt, da ich bei jedem Update die settings.js immer anpassen musste und das in meinen Augen ein wichtiger Parameter ist, den man nun in der Adapterkonfiguration festlegen kann.

                  76c54ba5-ea69-4dfd-bac8-1af434031a5a-image.png

                  Dieses Verzeichnis ist das Basisverzeichnis, um im Dashboard auf eigene Resourcen zugreifen zu können. Das können JS-Programme sein (s. Steelseries Thread) oder bei mir liegen Bilder und Wettericons in diesem Pfad.

                  Im Flow ist das dann das Root Verzeichnis:

                  Hier zeige ich zum Beispiel ein bestimmtes Icon für das Wetter an:

                  619c1387-4ddf-4a0e-a949-c52e6876381a-image.png
                  Basis ist also : /images/WetterIcons/ zusammen mit dem http-Static Path - liegt das Verzeichnis auf der Maschine also im Verzeichnis:
                  /data/node-red/images/WetterIcons/

                  40fe5ce5-5d44-4979-981c-82b74ead5c5b-image.png

                  • (bluefox) Added the reading of objects from admin for SelectID dialog

                  Das ist meines Erachtens noch offen und funktioniert immer noch nicht.
                  Also den Pfad weiterhin manuell rauskopieren oder den Adapter neu starten.

                  • (bluefox) Added debug output: Cannot set state of non-existing object

                  Das ist meines Erachtens auch eine riesige Verbesserung. Hier gab es in der Vorgängerversion folgenden Eintrag im Log:

                  Automatic objects creation is not enabled. You can enable it in the node configuration
                  

                  Da kommt man auch nicht gleich drauf, dass diese Meldung erzeugt wird, weil eine iobroker-IN oder iobroker-GET Node einen Datenpunkt im iobroker lesen möchte, den es gar nicht gibt.

                  Hier mal eine ioBroker IN Node, die auf einen Datenpunkt verweist - der nicht existiert.

                  Nun war man in der Vergangenheit mit obiger Meldung aufgeschmissen, weil man

                  1. nicht wusste welcher Datenpunkt nicht existiert
                    und
                  2. man nicht wusste welche Node auf diesen Datenpunkt verweist.

                  ac7a449e-5760-4e00-9860-79083761ee34-image.png

                  Nun löst der neue Log-Eintrag beide Probleme:

                  5727f4605ec73bac: "ioBroker in" Cannot set state of non-existing object "0_userdata.0.testType5".
                  

                  zum einen weiß man nun welcher Datenpunkt nicht existiert und bekommt auch noch gleich die Node-ID mitgeliefert mit der man die Node in seinen Flows identifizieren kann. Also die ID aus dem LOG kopieren und dann in das Suchfenster der Flows eingeben.
                  Mit der Suche wird einem nicht nur die Node angezeigt:

                  3e6d891e-c8e6-4bab-99fd-096287a71c7b-image.png

                  Durch einen Doppelklick auf die Lupe wird sowohl auf den Flow mit der betroffenen Node gewechselt, diese markiert (oranger Rahmen) und die Definition aufgemacht.
                  527d91ef-a74a-4beb-80e5-2eac84c40722-image.png

                  Also in meinen Augen ein toller Komfortgewinn.

                  • (bluefox) Allow setting of regular expression in the list node in message

                  Hier hat nach meinen Tests, sowohl der reguläre Ausdruck nicht richtig funktioniert und zukünftig ist dieser reguläre Ausdruck auch noch dynamisch konfigurierbar.

                  Hier wieder ein Anwendungsbeispiel:

                  Die folgende iobroker-List Node - kann alle Objekte eines bestimmten Typs mit einem bestimmten Pfad selektieren.
                  Hier mal meine Struktur unter 0_userdata.0

                  d3884432-46f6-463a-861f-4a7f3486ac2a-image.png

                  Über einen regulären Ausdruck möchte ich nun nur die Datenpunkte

                  0_userdata.0.testType2
                  0_userdata.0.testType3
                  0_userdata.0.testType4
                  

                  herausfiltern.

                  Die Definition der List Node sieht also wie folgt aus:

                  e05708f5-1c02-4221-8eb7-c58cbc268647-image.png

                  Das Topic selektiert alle Objekte unter 0_userdata.0.* (grün markiert) und filtert dann mit dem regulären Ausdruck (gelb markiert) die 3 gewünschten Objekte heraus .

                  Die Anforderung war nun auch den Filter dynamisch konfigurieren zu können.

                  Nun kann sowohl das Topic (grün), als auch der reguläre Ausdruck (gelb) über msg.regex dynamisch konfiguriert werden!

                  90deb17a-a679-4cfa-b69c-ca12b4729537-image.png

                  • (bluefox) Allow the filtering of ack=false messages for IN node

                  Auch dies macht nun den NR-Fans das Leben viel leichter - hier hatten die Blockly Fans immer einen Vorteil. Wir konnten nie auf ACK=false überprüfen, sondern nur auf true oder egal. Gut es ging umständlich, indem wir das gesamte Objekt auslasen und dann über eine Switch Node filterten.

                  Nun kann man auch ACK= false filtern und quasi wie ein HW Adapter agieren:

                  2e7b43e8-fa70-40e5-840f-dc013b18da0a-image.png

                  Beispiel in Zusammenspiel mit dem YAHKA Adapter, um Endlosschleifen zu vermeiden.
                  Man erstellt zum Beispiel einen eigenen Datenpunkt unter 0_userdata.0. Wenn man dann in der HomeApp das Gerät schaltet, wird dieser Datenpunkt mit ACK=false gesetzt. Der Flow filtert dann über ACK=false und der iobroker-In Node den Trigger heraus und schaltet die eigentliche Hardware. Als Rückmeldung setzt der Flow den Datenpunkt mit ACK=true und verhindert so, dass die HW erneut geschaltet wird.

                  • (Apollon77) Enhance GetNode rbe/deadband functions to optionally ignore initial value (wurde in Version 3.1.x geändert - und am Ende ergänzt)

                  • (Apollon77) Return undefined for GetNode if the state currently has no value set (e.g. because expired or never set)

                  Das bisherige Verhalten - hatte einen nicht vorhandenen State einfach ignoriert. Damit konnte man im Flow nicht auf diesen Fall reagieren und ggf. einen State erstellen. Nun hat man folgende Möglichkeiten:

                  768b1683-168e-4790-bc2e-8a2f974daf05-image.png

                  1. Return nothing
                    Das entspricht dem bisherigen Verhalten und nicht vorhandene States werden ignoriert. Eine info wird im iobroker Log geloggt.

                  2. Return state value as undefined
                    Es wird ein undefined zurückgegeben, egal ob ein Wert nicht existiert oder nicht initialisiert ist. Man muss also in der Folge selbst entscheiden, ob man auf beide Situationen unterschiedlich reagieren will.

                  3. Return error
                    Ein uninitialisierter Wert wird weiterhin undefined weitergeben, bei einem nicht vorhandenen Wert wird ein Fehler erzeugt. Wird dieser nicht behandelt gibt es nur eine Fehlereintrag im LOG mit dem entsprechenden Datenpunkt, der nicht vorhanden ist.
                    In Kombination mit einer Catch-Node kann man diesen Fehler abfangen und den Datenpunkt/State über eine iobroker-out Nodes anlegen.

                  • (Apollon77) Allow for GetNode to return an error if a state-id is used for which no object exists, else also return undefined

                  Wurde wie vorher besprochen.

                  • (Apollon77) Also allow to access system.* states directly

                  Das war leider seit der Version 2.x des iobroker NodeRed-Adapters nicht mehr möglich. In der Version 1 ging das. Somit musste man einen Alias bemühen, um den Zustand von beispielsweise Adapter zu überprüfen.

                  Nun kann man die Objekte unter system wieder abfragen:

                  4de0c45b-f846-447a-94c5-8e453c59e117-image.png

                  Damit ist es ohne Umwege wieder möglich - den Zustand von Adapter zu analysieren und ggf. eigene Maßnahmen einzuleiten.

                  Vielen Dank auch hierfür.

                  • (Apollon77) When RBE function is used on InNode and not value is sent on start still initialize current value internally

                  wurde bereits besprochen

                  • (Apollon77) Add node-ID in front of all log lines logged by node logic

                  Der Komfortgewinn wurde in Zusammenhang bei der Suche von iobroker-IN Nodes, die auf nicht vorhandene Datenpunkte verweisen erläutert.

                  • (jwiesel) Changed default setting to "convert data from ioBroker nodes into Strings" to false. Setting will not be changed automatically in instances already existing

                  Dies ist wohl eine der wichtigsten Verbesserungen für Anfänger. Wie oft muss man fragen, ob hier der Haken rausgenommen wurde. Nun ist der Standardwert, dass aus dem iobroker gelesene Werte ihren Typ behalten und nicht in Strings umgewandelt werden!

                  ==============================================================================

                  Also nochmals vielen Dank - an alle die an den Verbesserungen mitgewirkt haben und falls es noch Fragen zu meinen Erläuterungen gibt, nutzt den Thread und ich denke neben mir werden auch alle anderen versuchen, hier zu helfen!!!

                  Ach ja - noch was Wichtiges: Dieser Node-Red Adapter ist nun mit dem JS 4.0.x Adapter kompatibel!!! - Somit können auch NR-Fans nun wieder das System auf den akuellen Stand bringen!

                  ==============================================================================
                  Änderungen in Version 3.2.0

                  • ListenpunktEnhance GetNode rbe/deadband functions to optionally ignore initial value

                  Das ignorieren des Initialwertes entspricht nun dem Verhalten der Filter Node und bedeutet, dass dieser Initialwert nicht gesendet wird, sondern nur zum Initialisieren der Node genutzt wird, um Änderungen zu erkennen.

                  Die Beschreibung wurde von Ignore auf Initialize geändert:

                  3cab447c-e3a7-467c-b7a1-f461ba4e03a1-image.png

                  Will man also den Anfangswert nach Adapterstart oder Neustart der Flows unterdrücken will, nutzt man die Initialisierungsoption - anderenfalls wird dieser Wert - falls Nachrichten bei Start auslesen gewählt ist - gesendet.

                  Hier das Bild direkt nach Adapterstart - wenn send msg at start definiert wurde:

                  f75c3999-d239-436a-bfcb-84c339ee73f4-image.png

                  Falls no msg at start ausgewählt wurde findet die Initialisierung nach dem ersten Update statt.

                  Ansonsten stehen wie beim Filter diese Optionen zur Verfügung:

                  1. Wert hat sich geändert.
                  2. Wert hat sich um einen definierten Wert geändert (also um eine Zahl)
                  3. Wert hat sich um einen Prozentsatz geändert.

                  In den Fällen 2 und 3 wird größer gleich als Vergleich angewandt.

                  Das ganze funktioniert nicht über Wildcards.

                  Für alle komplexeren Fälle empfieht es sich die Filter-Node in Kombination zu nutzen.
                  In diesem Fall sollte man die iobroker-In Node, wie folgt konfigurieren:

                  1. send msg at start
                  2. send all events

                  Die Filterung konfiguriert man dann über die Filter Node. Da stehen weitere Optionen zur Verfügung. Nutzt man Wildcards in der iobroker-IN Node, und konfiguriert, dass der Filter auf topic Basis arbeitet:

                  ddcf1313-5065-47b1-994b-1685794a6585-image.png

                  • (Bannsaenger) Added option for in Node to choose topic format (MQTT with / or ioBroker with .). Default: MQTT

                  Nach dem Bilder in meinen Augen mehr als 1000 Worte sagen. Das bisherige Verhalten die Hierarchien der Topics mit / zu trennen, wie es unter MQTT üblich ist (grün), kann man sich das topic auch als iobroker Pfade mit einem Punkt zur Trennung der Hierarchieebenen ausgeben lassen (gelb).

                  941e64f1-944b-47d0-88be-1f0f0137cfde-image.png

                  Zu den letzten beiden Punkten kann ich nicht viel sagen, da ich weder Authentisierung, noch das Ändern der Pfade für den Webzugang genutzt habe.

                  • Added new parameter "httpNodeRoot" as httpRoot has been replaced by httpAdminRoot in version 3.0.0.

                  • Added extended authentication to instance settings and config
                    Hier hat man in der NodeRed Adapter Konfiguration einen eigenen Tab, mit folgenden Optionen:

                  1. Keine Authentifizierung
                  2. Einfache Authentifizierung - mit Benutzer und Passwort (wobei ich nicht weiß, ob das wirklich noch funktioniert)
                  3. Erweiterte Authentifizierung - hier kann man dann verschiedene Benutzer mit einer differenzierten Rechtevergabe definieren.

                  5a60bb09-ded0-415a-aa24-dcaa2fa9c8fe-image.png

                  Aber wie gesagt - hier muss man selbst Nachlesen welche Rechte es gibt.

                  26ce2512-2b1b-4d23-b0d2-5ec9a11cb104-image.png

                  Viel habe ich zu Benutzerberechtigungen nicht gefunden: Entweder "read" oder "*" für Vollzugriff. Welche Objekte es gibt, muss man eher ausprobieren. HIer mal die Seite zu BEnutzerberechtigungen: https://nodered.org/docs/user-guide/runtime/securing-node-red#user-permissions

                  apollon77A Offline
                  apollon77A Offline
                  apollon77
                  schrieb am zuletzt editiert von
                  #8

                  @mickym Mega Dank an @mickym für diesen Mega ausführlichen Post!!

                  Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                  • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                  • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                  1 Antwort Letzte Antwort
                  0
                  • J Jan1

                    Was möchte mir diese Warnung mitteilen?

                    2022-03-12 07:27:31.096 - warn: node-red.0 (1156817) Cannot enable the dynamic object read as admin has authentication
                    
                    apollon77A Offline
                    apollon77A Offline
                    apollon77
                    schrieb am zuletzt editiert von apollon77
                    #9

                    @jan1 sagte in Neuer Node-Red Adapter 3.0.0 in Latest - Repository:

                    2022-03-12 07:27:31.096 - warn: node-red.0 (1156817) Cannot enable the dynamic object read as admin has authentication

                    Der grund ist das deine Admin Instanz SSL aktiv hat du das aber nicht im node-red hast (oder anders rum) ... damit ist die Kommunikation zwischen node-red und admin bezogen auf den "Objekt-ID Selector Dialog" nicht möglich und die Meldung sagt das das aktuell nicht geht.

                    EDIT:
                    Btwww ... warte ... die Meldung sagt das Admin ein passwort gesetzt hat und damit nide-red nicht zugreifen kann ... SSL wäre ne leicht andere Meldung

                    @mickym Kann das vllt ein grund sein warum der Dialog nicht tut? ;-)

                    Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                    • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                    • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                    J 1 Antwort Letzte Antwort
                    0
                    • apollon77A apollon77

                      @jan1 sagte in Neuer Node-Red Adapter 3.0.0 in Latest - Repository:

                      2022-03-12 07:27:31.096 - warn: node-red.0 (1156817) Cannot enable the dynamic object read as admin has authentication

                      Der grund ist das deine Admin Instanz SSL aktiv hat du das aber nicht im node-red hast (oder anders rum) ... damit ist die Kommunikation zwischen node-red und admin bezogen auf den "Objekt-ID Selector Dialog" nicht möglich und die Meldung sagt das das aktuell nicht geht.

                      EDIT:
                      Btwww ... warte ... die Meldung sagt das Admin ein passwort gesetzt hat und damit nide-red nicht zugreifen kann ... SSL wäre ne leicht andere Meldung

                      @mickym Kann das vllt ein grund sein warum der Dialog nicht tut? ;-)

                      J Offline
                      J Offline
                      Jan1
                      schrieb am zuletzt editiert von
                      #10

                      @apollon77
                      Ich habe sowohl im Admin als auch im Node-Red ein User mit Login angelegt. Alles läuft auf HTTPS, sonst wären die Logins eh fün .... ;)
                      Auch der Web Adapter ist mit Authentifikation.

                      Klar, wenn ich alles ohne mache, kommt auch die Warnung nicht mehr.
                      Bist jetzt stört auch nur die Warnung, da augenscheinlich alles läuft.

                      Claus1985 0C 1 Antwort Letzte Antwort
                      1
                      • J Jan1

                        @apollon77
                        Ich habe sowohl im Admin als auch im Node-Red ein User mit Login angelegt. Alles läuft auf HTTPS, sonst wären die Logins eh fün .... ;)
                        Auch der Web Adapter ist mit Authentifikation.

                        Klar, wenn ich alles ohne mache, kommt auch die Warnung nicht mehr.
                        Bist jetzt stört auch nur die Warnung, da augenscheinlich alles läuft.

                        Claus1985 0C Offline
                        Claus1985 0C Offline
                        Claus1985 0
                        schrieb am zuletzt editiert von
                        #11

                        @jan1 Hab die gleiche Fehlermeldung. Kannst Du mir sagen welche Einstellungen Du dafür im Node Red verwendet hast? Wenn ich im Adapter einen User mit Kennwort angebe kann ich anschließend NodeRed nur noch separat mit https im Browser öffnen allerdings bekomme ich die Fehlermeldung immer noch im Log..

                        J apollon77A 2 Antworten Letzte Antwort
                        0
                        • Claus1985 0C Claus1985 0

                          @jan1 Hab die gleiche Fehlermeldung. Kannst Du mir sagen welche Einstellungen Du dafür im Node Red verwendet hast? Wenn ich im Adapter einen User mit Kennwort angebe kann ich anschließend NodeRed nur noch separat mit https im Browser öffnen allerdings bekomme ich die Fehlermeldung immer noch im Log..

                          J Offline
                          J Offline
                          Jan1
                          schrieb am zuletzt editiert von
                          #12

                          @claus1985-0
                          Hast den Web Adapter auch auf HTTPS? Wenn, dann musst alles umstellen.

                          1 Antwort Letzte Antwort
                          0
                          • mickymM mickym

                            Nachdem ich im Node-RED Bereich des ioBroker-Forums relativ aktiv bin und auch bei den Tests zu dem neuen Major-Release des Node-Red Adapters in der Version 3.0.0 mithelfen durfte, habe ich mich in Abstimmung mit @apollon77 dazu bereit erklärt ein paar Highlights und Fehlerbehebungen des neuen Major-Releases hier vorzustellen bzw. zu dokumentieren. Teilweise werde ich hier auch ein paar persönliche Schwerpunkte setzen - es aber auch nicht schaffen, alles in einem Posting festzuhalten.

                            Ich möchte mich persönlich auf diesem Weg nochmals bei allen Entwicklern (@apollon77, @Bluefox und @jwiesel), die an der Entwicklung und bei der Bereitstellung dieses Node-Red Adapters beteiligt waren, persönlich bedanken!
                            Es ist nicht nur ein Meilenstein, weil nun offiziell Node-Red in der Version 2.2.2 enthalten ist und diese ebenfalls ein paar wirkliche Neuerungen und Erleichterungen mit sich bringen, sondern weil in meinen Augen auch die meisten Fehlerbehebungen und Verbesserungen des Node-Red Adapters im Zusammenspiel mit dem iobroker enthalten.

                            Da die Sprünge bei den Node-Red Versionen nun doch erheblich waren, hier ein paar Quellen und ein paar Highlights, die inzwischen implementiert wurden.

                            Neues Major Release Node-Red Version 2

                            In der Version 2.0 sind erst mal die wirklich weit reichensten Änderungen erhalten, die einem das Leben wesentlich erleichtern.

                            Einen Überblick vom Node-Red Guru mit einem Video auf Englisch gibt es hier: https://nodered.org/blog/2021/07/20/version-2-0-released

                            Ein paar Einstellungen muss man immer noch die settings.js anpassen. Grundsätzlich ist diese Datei vollkommen neu strukturiert und nun wesentlich übersichtlicher aufgebaut.
                            Für bestimmte Einstellungen muss man diese immer noch an den bekannten Stellen editieren.

                            Wenn man also den "neuen" Monaco Editor im Programmierfenster der function Nodes nutzen möchte, um kontextbezogene Hilfe bzw. Vorschläge zu bekommen, dann muss man das manuell weiterhin in der settings.js machen. Der bisheriger Editor ist "ace", der neue "monaco". Ich bevorzuge eigentlich weiter den bisherigen Editor - aber ist Gewöhnungssache.

                            1c1099bd-ca4c-466e-9099-a10aa1f9ea04-image.png

                            Eines der gewaltigsten Vorteile der NR Version 2 ist die Installation und das Nutzen externer NodeJS Module in Function Nodes ohne diese installieren zu müssen!!!
                            Die Module müssen also nicht in der settings.js bekannt gemacht werden und werden automatisch im
                            /opt/iobroker/iobroker-data/node-red/node_modules Verzeichnis installiert. Es ist KEINE Installation über Adaptereinstellungen oder über die Kommandozeile erforderlich.
                            Die Module können einfach in den function Nodes über den Setup-Tab bekannt gemacht werden:

                            16316e33-96d0-4109-b071-bac6108e053c-image.png

                            Beispiele für die Verwendung von NodeJS Bibliotheken in function Nodes gibts in diesem Thread.

                            Ansonsten heißen die ehemaligen RBE Nodes nun Filter Nodes:

                            f1725060-85cf-4507-9b99-62f8a2425010-image.png

                            Wenn es Probleme mit dieser Node gibt - müsst ihr ggf. die rbe Nodes manuell deinstallieren. Im Palettenmanager tauchen die rbe/filter Nodes unter den Core Nodes auf und dürfen nicht mehr als eigenständige Nodes zu sehen sein.

                            Die tail Node ist im Gegenzug nicht mehr Bestandteil der Core-Nodes. Wer diese also braucht oder im Einsatz hat muss diese neu installieren: https://flows.nodered.org/node/node-red-node-tail

                            Ab der Version 2.1.
                            gibt es als Highlight erst mal eine Guided Tour, die alle Neuerungen vorstellt. Allerdings kann man nicht die Vorgängerversionen anschauen - da die aktuelle Version bereits 2.2.2 ist - findet man nun die Guided Tour nur für diese Version, aber eben keine anderen.

                            Die aktuelle Guided Tour findet man unter dem Change Log - das sich öffnet sobald man im Hauptmenü auf die aktuelle Versionsnummer klickt. Dort findet man dann ganz oben die Guided Tour.

                            9a3e3557-dc9d-4bd9-8ffd-7653d22cb9af-image.png 3e1a5225-4350-4925-9bdb-8fa8a183dd66-image.png

                            Die Details vom NR-Guru in Englisch findet man hier - zusammen mit einem Video: https://nodered.org/blog/2021/10/21/version-2-1-released

                            Dieses Release vor allem verbessert die Übersichtlichkeit und das Anordnen der Nodes. Man markiert die gewünschten Nodes und kann diese dann über das Menü anordnen:

                            fd523360-9619-42ba-8ac8-760cb77d5757-image.png

                            Wer schon mal mit Visio oder ähnlichen Tools gearbeitet hat oder Visual Basic um eine GUI zu entwerfen, dem wird das sicher bekannt vorkommen. ;)

                            Das wichtigste Menü - um die bessere Übersichtlichkeit zu nutzen - ist im Flows Menü:

                            67634f91-3efe-44df-9d9f-bd82158cb2bf-image.png

                            Damit kann mal alle Flows, die man gerade nicht braucht verstecken und über den Dialog wieder sichtbar machen oder man klickt in der Flow übersicht auf den Flow und toggelt zwischen versteckt (durchgestrichenes Auge) und sichtbar:

                            d9c71a89-66b7-4417-9ad7-13a44890f331-image.png

                            Ein weitere Möglichkeit einen Flow zu verstecken ist einfach in dem Tab auf das Auge zu klicken:
                            18984b4c-2546-437c-8c94-bdb7b66406d8-image.png

                            Eine weitere meines Erachtens sehr erwähnenswerte Neuerung ist, dass man nicht nur für Subflows, sondern auch für Flows Umgebungsvariablen nutzen zu können, um ggf. die Flows zu initialisieren. Dazu braucht man also nicht mehr unbedingt einen Datenpunkt im iobroker zu definieren.

                            Bei Subflows sind diese Umgebungsvariablen schon eine gute Erfindung, da man so jede Instanz der Node bzw. des Subflows unterschiedlich initialisieren kann.

                            Hier mal ein Beispiel für die Initialisierung eines Flows.
                            In den Eigenschaften eines Flows gibt es rechts einen neuen Button, in dem man Umgebungsvariablen definieren kann.

                            62165503-91fd-48fb-90b8-2e242c21c8b1-image.png

                            In dem Flow kann man dann auf diese Umgebungsvariable zugreifen.

                            f32e9b5e-369c-4577-80d2-b369903b8f02-image.png

                            Ein weiteres Highlight dieser Version ist für mqtt-Benutzer.
                            Man kann die MQTT Nodes nun dynamisch konfigurieren. In der Beschreibung zum mqtt-Broker kann man nun das automatische Verbinden unterbinden - das sehe ich aber nicht als den Hauptvorteil.

                            Der Vorteil dieser MQTT Nodes dynamisch zu konfigurieren ist, dass man so ein topic getriggert auslesen kann, was man im iobroker Umfeld mit einer iobroker-get Node macht.
                            Allerdings ist das nicht gut dokumentiert in der Hilfe:

                            Wenn man die mqtt-In Node dynamisch konfiguriert - bekommt diese einen Eingang und kann dann über msg.topic getriggert das topic auslesen:

                            6cab157b-d79b-47ea-9ca4-d78172a94ba2-image.png

                            Damit das Ganze aber funktioniert muss man eine action subscribe mitgeben - und wie gesagt das ist alles nicht dokumentiert:

                            79c934ee-4437-411d-9e42-15304638897f-image.png

                            Ein paar Beispiele für valide actions - gerade auch zum manuelle Aufbau zu einem mqtt Broker gibts hier in dem folgenden Flow:

                            [
                               {
                                   "id": "52942541834747c1",
                                   "type": "mqtt out",
                                   "z": "54b226bc.0793e8",
                                   "name": "",
                                   "topic": "",
                                   "qos": "",
                                   "retain": "",
                                   "respTopic": "",
                                   "contentType": "",
                                   "userProps": "",
                                   "correl": "",
                                   "expiry": "",
                                   "broker": "8a6b74c0.3c461",
                                   "x": 390,
                                   "y": 3200,
                                   "wires": []
                               },
                               {
                                   "id": "e2f0aae314b88447",
                                   "type": "inject",
                                   "z": "54b226bc.0793e8",
                                   "name": "connect port 1883",
                                   "props": [
                                       {
                                           "p": "action",
                                           "v": "connect",
                                           "vt": "str"
                                       },
                                       {
                                           "p": "broker",
                                           "v": "{\"broker\":\"192.168.1.51\",\"port\":1883}",
                                           "vt": "json"
                                       }
                                   ],
                                   "repeat": "",
                                   "crontab": "",
                                   "once": false,
                                   "onceDelay": 0.1,
                                   "topic": "",
                                   "x": 190,
                                   "y": 3200,
                                   "wires": [
                                       [
                                           "52942541834747c1",
                                           "c1cfb193f31c86a7"
                                       ]
                                   ]
                               },
                               {
                                   "id": "f5ed93bae65b0374",
                                   "type": "inject",
                                   "z": "54b226bc.0793e8",
                                   "name": "connect 1884",
                                   "props": [
                                       {
                                           "p": "action",
                                           "v": "connect",
                                           "vt": "str"
                                       },
                                       {
                                           "p": "broker",
                                           "v": "{\"broker\":\"192.168.1.51\",\"port\":1884}",
                                           "vt": "json"
                                       }
                                   ],
                                   "repeat": "",
                                   "crontab": "",
                                   "once": false,
                                   "onceDelay": 0.1,
                                   "topic": "",
                                   "payloadType": "str",
                                   "x": 170,
                                   "y": 3280,
                                   "wires": [
                                       [
                                           "52942541834747c1"
                                       ]
                                   ]
                               },
                               {
                                   "id": "c1cfb193f31c86a7",
                                   "type": "debug",
                                   "z": "54b226bc.0793e8",
                                   "name": "",
                                   "active": true,
                                   "tosidebar": true,
                                   "console": false,
                                   "tostatus": false,
                                   "complete": "true",
                                   "targetType": "full",
                                   "statusVal": "",
                                   "statusType": "auto",
                                   "x": 440,
                                   "y": 3120,
                                   "wires": []
                               },
                               {
                                   "id": "1342c8cb6c7d1396",
                                   "type": "inject",
                                   "z": "54b226bc.0793e8",
                                   "name": "disconnect",
                                   "props": [
                                       {
                                           "p": "action",
                                           "v": "disconnect",
                                           "vt": "str"
                                       }
                                   ],
                                   "repeat": "",
                                   "crontab": "",
                                   "once": false,
                                   "onceDelay": 0.1,
                                   "topic": "",
                                   "x": 180,
                                   "y": 3420,
                                   "wires": [
                                       [
                                           "52942541834747c1"
                                       ]
                                   ]
                               },
                               {
                                   "id": "a945fa7b989d68d6",
                                   "type": "mqtt in",
                                   "z": "54b226bc.0793e8",
                                   "name": "",
                                   "topic": "",
                                   "qos": "2",
                                   "datatype": "auto",
                                   "broker": "8a6b74c0.3c461",
                                   "nl": false,
                                   "rap": true,
                                   "rh": 0,
                                   "inputs": 1,
                                   "x": 390,
                                   "y": 3540,
                                   "wires": [
                                       []
                                   ]
                               },
                               {
                                   "id": "a853a0255681f2c0",
                                   "type": "inject",
                                   "z": "54b226bc.0793e8",
                                   "name": "connect",
                                   "props": [
                                       {
                                           "p": "action",
                                           "v": "connect",
                                           "vt": "str"
                                       },
                                       {
                                           "p": "topic",
                                           "vt": "str"
                                       }
                                   ],
                                   "repeat": "",
                                   "crontab": "",
                                   "once": false,
                                   "onceDelay": 0.1,
                                   "topic": "",
                                   "x": 200,
                                   "y": 3120,
                                   "wires": [
                                       [
                                           "52942541834747c1"
                                       ]
                                   ]
                               },
                               {
                                   "id": "388b902f250d4ab1",
                                   "type": "inject",
                                   "z": "54b226bc.0793e8",
                                   "name": "force  connect 1884",
                                   "props": [
                                       {
                                           "p": "action",
                                           "v": "connect",
                                           "vt": "str"
                                       },
                                       {
                                           "p": "broker",
                                           "v": "{\"broker\":\"192.168.1.51\",\"port\":1884,\"force\":true}",
                                           "vt": "json"
                                       }
                                   ],
                                   "repeat": "",
                                   "crontab": "",
                                   "once": false,
                                   "onceDelay": 0.1,
                                   "topic": "",
                                   "x": 190,
                                   "y": 3340,
                                   "wires": [
                                       [
                                           "52942541834747c1"
                                       ]
                                   ]
                               },
                               {
                                   "id": "6128f1909cbf8ea4",
                                   "type": "inject",
                                   "z": "54b226bc.0793e8",
                                   "name": "subscribe topic test",
                                   "props": [
                                       {
                                           "p": "action",
                                           "v": "subscribe",
                                           "vt": "str"
                                       },
                                       {
                                           "p": "topic",
                                           "vt": "str"
                                       }
                                   ],
                                   "repeat": "",
                                   "crontab": "",
                                   "once": false,
                                   "onceDelay": 0.1,
                                   "topic": "test",
                                   "x": 180,
                                   "y": 3540,
                                   "wires": [
                                       [
                                           "a945fa7b989d68d6"
                                       ]
                                   ]
                               },
                               {
                                   "id": "4c7b8677c28b28d6",
                                   "type": "inject",
                                   "z": "54b226bc.0793e8",
                                   "name": "Unsubscribe topic test",
                                   "props": [
                                       {
                                           "p": "action",
                                           "v": "unsubscribe",
                                           "vt": "str"
                                       },
                                       {
                                           "p": "topic",
                                           "vt": "str"
                                       }
                                   ],
                                   "repeat": "",
                                   "crontab": "",
                                   "once": false,
                                   "onceDelay": 0.1,
                                   "topic": "test",
                                   "x": 209,
                                   "y": 3606,
                                   "wires": [
                                       [
                                           "a945fa7b989d68d6"
                                       ]
                                   ]
                               },
                               {
                                   "id": "8a6b74c0.3c461",
                                   "type": "mqtt-broker",
                                   "name": "localhost:1883",
                                   "broker": "192.168.1.51",
                                   "port": "1883",
                                   "clientid": "",
                                   "autoConnect": false,
                                   "usetls": false,
                                   "protocolVersion": "5",
                                   "keepalive": "60",
                                   "cleansession": true,
                                   "birthTopic": "",
                                   "birthQos": "0",
                                   "birthRetain": "false",
                                   "birthPayload": "",
                                   "birthMsg": {},
                                   "closeTopic": "",
                                   "closePayload": "",
                                   "closeMsg": {},
                                   "willTopic": "",
                                   "willQos": "0",
                                   "willRetain": "false",
                                   "willPayload": "",
                                   "willMsg": {},
                                   "sessionExpiry": ""
                               }
                            ]
                            

                            Ansonsten kann man im Debug Fenster nun auch die Debug Nodes filtern, die man sehen will, ohne diese im Flow deaktivieren bzw. aktivieren zu müssen. Hab ich aber auch noch nicht benutzt.

                            Auf die Highlights der Version 2.2 gehe ich hier erst mal nicht ein - hier verweise ich auf die aktuelle Guided Tour.

                            ==============================================================================

                            Ich halte mich mal an die Liste - und werde diese ggf. mit eine paar Beispielen aufzeigen:

                            3.0.0 (2022-03-11)

                            IMPORTANT: Node-RED is now v2. Please check your nodes for compatibility! See also https://nodered.org/blog/2021/07/20/version-2-0-released and https://nodered.org/blog/2021/10/21/version-2-1-released

                            • (jwiesel) Node-RED updated to 2.2.2

                            Nun erst nochmals vielen Dank! - Wie gesagt an dem vorangegangen Post sieht man, dass doch erhebliche Erweiterungen und Verbesserungen mit den neuen Verbesserungen einhergegangen sind.

                            • (jwiesel) "Tail" node has been removed from the default palette in Node-RED 2.0. You can reinstall it from node-red-node-tail.

                            wurde bereits erwähnt

                            • (Apollon77) Automatically create missing folders when node-red creates objects in javascript., node-red. and 0_userdata.0.*

                            Hier steckte ein größerer Aufwand dahinter ist nun aber wieder kompatibel mit dem neuen Admin 5 und erstellt nun automatisch Folder Objekte für alle Hierarchieebenen. Ich persönlich habe mich ja sehr darüber mokiert, dass das nun so unflexibel war und bin hier sehr dankbar, dass dieses Problem gelöst ist und man unter 0_userdata.0.* wieder volle Flexibilität hat. Auch Folder Objekte in der Hierarchie können im Nachhinein wieder zu States umgewandelt werden. Als Beispiel werde ich mal meinen Subflow verwenden, um zu demonstrieren, dass die Objekte nun automatisch von der iobroker-out Node angelegt werden.

                            Ich hab einfach mal aus den JSONATA Beispielen mal einen JSON String als Beispiel genommen und in eine INJECT-Node gepackt:

                            a1267a73-3522-4646-b11e-f42593e2d219-image.png
                            Über eine Subflow Variable legt man fest unter welchem Datenpunkt die Struktur angelegt werden soll.

                            Das Ergebnis kann sich nun sehen lassen:

                            712528bf-8408-43ed-9a19-d3a16136ca7f-image.png

                            Man sieht der ganze JSON String wird als Datenstruktur mit den erforderlichen Folder-Objekten von der iobroker-out Node angelegt. Herzlichen Dank nochmals an @apollon77

                            • (jwiesel) Added NodeRed parameter httpStatic to instance settings

                            Auch das habe ich angeregt, da ich bei jedem Update die settings.js immer anpassen musste und das in meinen Augen ein wichtiger Parameter ist, den man nun in der Adapterkonfiguration festlegen kann.

                            76c54ba5-ea69-4dfd-bac8-1af434031a5a-image.png

                            Dieses Verzeichnis ist das Basisverzeichnis, um im Dashboard auf eigene Resourcen zugreifen zu können. Das können JS-Programme sein (s. Steelseries Thread) oder bei mir liegen Bilder und Wettericons in diesem Pfad.

                            Im Flow ist das dann das Root Verzeichnis:

                            Hier zeige ich zum Beispiel ein bestimmtes Icon für das Wetter an:

                            619c1387-4ddf-4a0e-a949-c52e6876381a-image.png
                            Basis ist also : /images/WetterIcons/ zusammen mit dem http-Static Path - liegt das Verzeichnis auf der Maschine also im Verzeichnis:
                            /data/node-red/images/WetterIcons/

                            40fe5ce5-5d44-4979-981c-82b74ead5c5b-image.png

                            • (bluefox) Added the reading of objects from admin for SelectID dialog

                            Das ist meines Erachtens noch offen und funktioniert immer noch nicht.
                            Also den Pfad weiterhin manuell rauskopieren oder den Adapter neu starten.

                            • (bluefox) Added debug output: Cannot set state of non-existing object

                            Das ist meines Erachtens auch eine riesige Verbesserung. Hier gab es in der Vorgängerversion folgenden Eintrag im Log:

                            Automatic objects creation is not enabled. You can enable it in the node configuration
                            

                            Da kommt man auch nicht gleich drauf, dass diese Meldung erzeugt wird, weil eine iobroker-IN oder iobroker-GET Node einen Datenpunkt im iobroker lesen möchte, den es gar nicht gibt.

                            Hier mal eine ioBroker IN Node, die auf einen Datenpunkt verweist - der nicht existiert.

                            Nun war man in der Vergangenheit mit obiger Meldung aufgeschmissen, weil man

                            1. nicht wusste welcher Datenpunkt nicht existiert
                              und
                            2. man nicht wusste welche Node auf diesen Datenpunkt verweist.

                            ac7a449e-5760-4e00-9860-79083761ee34-image.png

                            Nun löst der neue Log-Eintrag beide Probleme:

                            5727f4605ec73bac: "ioBroker in" Cannot set state of non-existing object "0_userdata.0.testType5".
                            

                            zum einen weiß man nun welcher Datenpunkt nicht existiert und bekommt auch noch gleich die Node-ID mitgeliefert mit der man die Node in seinen Flows identifizieren kann. Also die ID aus dem LOG kopieren und dann in das Suchfenster der Flows eingeben.
                            Mit der Suche wird einem nicht nur die Node angezeigt:

                            3e6d891e-c8e6-4bab-99fd-096287a71c7b-image.png

                            Durch einen Doppelklick auf die Lupe wird sowohl auf den Flow mit der betroffenen Node gewechselt, diese markiert (oranger Rahmen) und die Definition aufgemacht.
                            527d91ef-a74a-4beb-80e5-2eac84c40722-image.png

                            Also in meinen Augen ein toller Komfortgewinn.

                            • (bluefox) Allow setting of regular expression in the list node in message

                            Hier hat nach meinen Tests, sowohl der reguläre Ausdruck nicht richtig funktioniert und zukünftig ist dieser reguläre Ausdruck auch noch dynamisch konfigurierbar.

                            Hier wieder ein Anwendungsbeispiel:

                            Die folgende iobroker-List Node - kann alle Objekte eines bestimmten Typs mit einem bestimmten Pfad selektieren.
                            Hier mal meine Struktur unter 0_userdata.0

                            d3884432-46f6-463a-861f-4a7f3486ac2a-image.png

                            Über einen regulären Ausdruck möchte ich nun nur die Datenpunkte

                            0_userdata.0.testType2
                            0_userdata.0.testType3
                            0_userdata.0.testType4
                            

                            herausfiltern.

                            Die Definition der List Node sieht also wie folgt aus:

                            e05708f5-1c02-4221-8eb7-c58cbc268647-image.png

                            Das Topic selektiert alle Objekte unter 0_userdata.0.* (grün markiert) und filtert dann mit dem regulären Ausdruck (gelb markiert) die 3 gewünschten Objekte heraus .

                            Die Anforderung war nun auch den Filter dynamisch konfigurieren zu können.

                            Nun kann sowohl das Topic (grün), als auch der reguläre Ausdruck (gelb) über msg.regex dynamisch konfiguriert werden!

                            90deb17a-a679-4cfa-b69c-ca12b4729537-image.png

                            • (bluefox) Allow the filtering of ack=false messages for IN node

                            Auch dies macht nun den NR-Fans das Leben viel leichter - hier hatten die Blockly Fans immer einen Vorteil. Wir konnten nie auf ACK=false überprüfen, sondern nur auf true oder egal. Gut es ging umständlich, indem wir das gesamte Objekt auslasen und dann über eine Switch Node filterten.

                            Nun kann man auch ACK= false filtern und quasi wie ein HW Adapter agieren:

                            2e7b43e8-fa70-40e5-840f-dc013b18da0a-image.png

                            Beispiel in Zusammenspiel mit dem YAHKA Adapter, um Endlosschleifen zu vermeiden.
                            Man erstellt zum Beispiel einen eigenen Datenpunkt unter 0_userdata.0. Wenn man dann in der HomeApp das Gerät schaltet, wird dieser Datenpunkt mit ACK=false gesetzt. Der Flow filtert dann über ACK=false und der iobroker-In Node den Trigger heraus und schaltet die eigentliche Hardware. Als Rückmeldung setzt der Flow den Datenpunkt mit ACK=true und verhindert so, dass die HW erneut geschaltet wird.

                            • (Apollon77) Enhance GetNode rbe/deadband functions to optionally ignore initial value (wurde in Version 3.1.x geändert - und am Ende ergänzt)

                            • (Apollon77) Return undefined for GetNode if the state currently has no value set (e.g. because expired or never set)

                            Das bisherige Verhalten - hatte einen nicht vorhandenen State einfach ignoriert. Damit konnte man im Flow nicht auf diesen Fall reagieren und ggf. einen State erstellen. Nun hat man folgende Möglichkeiten:

                            768b1683-168e-4790-bc2e-8a2f974daf05-image.png

                            1. Return nothing
                              Das entspricht dem bisherigen Verhalten und nicht vorhandene States werden ignoriert. Eine info wird im iobroker Log geloggt.

                            2. Return state value as undefined
                              Es wird ein undefined zurückgegeben, egal ob ein Wert nicht existiert oder nicht initialisiert ist. Man muss also in der Folge selbst entscheiden, ob man auf beide Situationen unterschiedlich reagieren will.

                            3. Return error
                              Ein uninitialisierter Wert wird weiterhin undefined weitergeben, bei einem nicht vorhandenen Wert wird ein Fehler erzeugt. Wird dieser nicht behandelt gibt es nur eine Fehlereintrag im LOG mit dem entsprechenden Datenpunkt, der nicht vorhanden ist.
                              In Kombination mit einer Catch-Node kann man diesen Fehler abfangen und den Datenpunkt/State über eine iobroker-out Nodes anlegen.

                            • (Apollon77) Allow for GetNode to return an error if a state-id is used for which no object exists, else also return undefined

                            Wurde wie vorher besprochen.

                            • (Apollon77) Also allow to access system.* states directly

                            Das war leider seit der Version 2.x des iobroker NodeRed-Adapters nicht mehr möglich. In der Version 1 ging das. Somit musste man einen Alias bemühen, um den Zustand von beispielsweise Adapter zu überprüfen.

                            Nun kann man die Objekte unter system wieder abfragen:

                            4de0c45b-f846-447a-94c5-8e453c59e117-image.png

                            Damit ist es ohne Umwege wieder möglich - den Zustand von Adapter zu analysieren und ggf. eigene Maßnahmen einzuleiten.

                            Vielen Dank auch hierfür.

                            • (Apollon77) When RBE function is used on InNode and not value is sent on start still initialize current value internally

                            wurde bereits besprochen

                            • (Apollon77) Add node-ID in front of all log lines logged by node logic

                            Der Komfortgewinn wurde in Zusammenhang bei der Suche von iobroker-IN Nodes, die auf nicht vorhandene Datenpunkte verweisen erläutert.

                            • (jwiesel) Changed default setting to "convert data from ioBroker nodes into Strings" to false. Setting will not be changed automatically in instances already existing

                            Dies ist wohl eine der wichtigsten Verbesserungen für Anfänger. Wie oft muss man fragen, ob hier der Haken rausgenommen wurde. Nun ist der Standardwert, dass aus dem iobroker gelesene Werte ihren Typ behalten und nicht in Strings umgewandelt werden!

                            ==============================================================================

                            Also nochmals vielen Dank - an alle die an den Verbesserungen mitgewirkt haben und falls es noch Fragen zu meinen Erläuterungen gibt, nutzt den Thread und ich denke neben mir werden auch alle anderen versuchen, hier zu helfen!!!

                            Ach ja - noch was Wichtiges: Dieser Node-Red Adapter ist nun mit dem JS 4.0.x Adapter kompatibel!!! - Somit können auch NR-Fans nun wieder das System auf den akuellen Stand bringen!

                            ==============================================================================
                            Änderungen in Version 3.2.0

                            • ListenpunktEnhance GetNode rbe/deadband functions to optionally ignore initial value

                            Das ignorieren des Initialwertes entspricht nun dem Verhalten der Filter Node und bedeutet, dass dieser Initialwert nicht gesendet wird, sondern nur zum Initialisieren der Node genutzt wird, um Änderungen zu erkennen.

                            Die Beschreibung wurde von Ignore auf Initialize geändert:

                            3cab447c-e3a7-467c-b7a1-f461ba4e03a1-image.png

                            Will man also den Anfangswert nach Adapterstart oder Neustart der Flows unterdrücken will, nutzt man die Initialisierungsoption - anderenfalls wird dieser Wert - falls Nachrichten bei Start auslesen gewählt ist - gesendet.

                            Hier das Bild direkt nach Adapterstart - wenn send msg at start definiert wurde:

                            f75c3999-d239-436a-bfcb-84c339ee73f4-image.png

                            Falls no msg at start ausgewählt wurde findet die Initialisierung nach dem ersten Update statt.

                            Ansonsten stehen wie beim Filter diese Optionen zur Verfügung:

                            1. Wert hat sich geändert.
                            2. Wert hat sich um einen definierten Wert geändert (also um eine Zahl)
                            3. Wert hat sich um einen Prozentsatz geändert.

                            In den Fällen 2 und 3 wird größer gleich als Vergleich angewandt.

                            Das ganze funktioniert nicht über Wildcards.

                            Für alle komplexeren Fälle empfieht es sich die Filter-Node in Kombination zu nutzen.
                            In diesem Fall sollte man die iobroker-In Node, wie folgt konfigurieren:

                            1. send msg at start
                            2. send all events

                            Die Filterung konfiguriert man dann über die Filter Node. Da stehen weitere Optionen zur Verfügung. Nutzt man Wildcards in der iobroker-IN Node, und konfiguriert, dass der Filter auf topic Basis arbeitet:

                            ddcf1313-5065-47b1-994b-1685794a6585-image.png

                            • (Bannsaenger) Added option for in Node to choose topic format (MQTT with / or ioBroker with .). Default: MQTT

                            Nach dem Bilder in meinen Augen mehr als 1000 Worte sagen. Das bisherige Verhalten die Hierarchien der Topics mit / zu trennen, wie es unter MQTT üblich ist (grün), kann man sich das topic auch als iobroker Pfade mit einem Punkt zur Trennung der Hierarchieebenen ausgeben lassen (gelb).

                            941e64f1-944b-47d0-88be-1f0f0137cfde-image.png

                            Zu den letzten beiden Punkten kann ich nicht viel sagen, da ich weder Authentisierung, noch das Ändern der Pfade für den Webzugang genutzt habe.

                            • Added new parameter "httpNodeRoot" as httpRoot has been replaced by httpAdminRoot in version 3.0.0.

                            • Added extended authentication to instance settings and config
                              Hier hat man in der NodeRed Adapter Konfiguration einen eigenen Tab, mit folgenden Optionen:

                            1. Keine Authentifizierung
                            2. Einfache Authentifizierung - mit Benutzer und Passwort (wobei ich nicht weiß, ob das wirklich noch funktioniert)
                            3. Erweiterte Authentifizierung - hier kann man dann verschiedene Benutzer mit einer differenzierten Rechtevergabe definieren.

                            5a60bb09-ded0-415a-aa24-dcaa2fa9c8fe-image.png

                            Aber wie gesagt - hier muss man selbst Nachlesen welche Rechte es gibt.

                            26ce2512-2b1b-4d23-b0d2-5ec9a11cb104-image.png

                            Viel habe ich zu Benutzerberechtigungen nicht gefunden: Entweder "read" oder "*" für Vollzugriff. Welche Objekte es gibt, muss man eher ausprobieren. HIer mal die Seite zu BEnutzerberechtigungen: https://nodered.org/docs/user-guide/runtime/securing-node-red#user-permissions

                            F Offline
                            F Offline
                            frankyboy73
                            schrieb am zuletzt editiert von
                            #13

                            @mickym Toller Post. Danke für die ausführlichen Erläuterungen.:+1:

                            Und auch an die Entwickler einen schönen Dank für die vielen guten Neuerungen/Verbesserungen. @apollon77, @Bluefox und @jwiesel

                            Schöne Grüße Frank

                            1 Antwort Letzte Antwort
                            0
                            • Claus1985 0C Claus1985 0

                              @jan1 Hab die gleiche Fehlermeldung. Kannst Du mir sagen welche Einstellungen Du dafür im Node Red verwendet hast? Wenn ich im Adapter einen User mit Kennwort angebe kann ich anschließend NodeRed nur noch separat mit https im Browser öffnen allerdings bekomme ich die Fehlermeldung immer noch im Log..

                              apollon77A Offline
                              apollon77A Offline
                              apollon77
                              schrieb am zuletzt editiert von
                              #14

                              @claus1985-0 Langsam!! Wenn die Meldung die ist wie oben hat es NICHTS mit SSL zu tun (dann sieht die Meldung etwas anders aus). Wenn es die Meldung wie oben ist dann iegt es daran das dein Admin ne user/Passwort auth aktiviert hat ... damit kann der node.red prozess (der das passwort ja nicht kennt) nicht mit dem Admin reden

                              Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                              • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                              • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                              J Claus1985 0C 2 Antworten Letzte Antwort
                              0
                              • apollon77A apollon77

                                @claus1985-0 Langsam!! Wenn die Meldung die ist wie oben hat es NICHTS mit SSL zu tun (dann sieht die Meldung etwas anders aus). Wenn es die Meldung wie oben ist dann iegt es daran das dein Admin ne user/Passwort auth aktiviert hat ... damit kann der node.red prozess (der das passwort ja nicht kennt) nicht mit dem Admin reden

                                J Offline
                                J Offline
                                Jan1
                                schrieb am zuletzt editiert von
                                #15

                                @apollon77
                                Die Meldung hat mit dem "Problem" eigentlich nichts zu tun, sind zwei Baustellen. Wobei ich das zu Beginn der Umstellung auf HTTPS auch hatte, dass der Nod-Red nur noch in einem separaten Browser Fenster lief. Da half eben alles auf HTTPS umstellen und schon läuft er auch wieder im IOBroker Fenster.

                                Zurück zu der Meldung. Klingt plausibel, nur ist das nun ein Problem, oder kann man es schlicht ignorieren?

                                apollon77A 1 Antwort Letzte Antwort
                                0
                                • J Jan1

                                  @apollon77
                                  Die Meldung hat mit dem "Problem" eigentlich nichts zu tun, sind zwei Baustellen. Wobei ich das zu Beginn der Umstellung auf HTTPS auch hatte, dass der Nod-Red nur noch in einem separaten Browser Fenster lief. Da half eben alles auf HTTPS umstellen und schon läuft er auch wieder im IOBroker Fenster.

                                  Zurück zu der Meldung. Klingt plausibel, nur ist das nun ein Problem, oder kann man es schlicht ignorieren?

                                  apollon77A Offline
                                  apollon77A Offline
                                  apollon77
                                  schrieb am zuletzt editiert von
                                  #16

                                  @jan1 sagte in Neuer Node-Red Adapter 3.0.0 in Latest - Repository:

                                  Zurück zu der Meldung. Klingt plausibel, nur ist das nun ein Problem, oder kann man es schlicht ignorieren?

                                  Naja der "Object select dialog" tut nicht vollständig (heisst bekommt nicht die aktuellsten Daten und zeigt keine aktuellen Werte an)

                                  Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                  • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                  • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                  J 1 Antwort Letzte Antwort
                                  0
                                  • apollon77A apollon77

                                    @jan1 sagte in Neuer Node-Red Adapter 3.0.0 in Latest - Repository:

                                    Zurück zu der Meldung. Klingt plausibel, nur ist das nun ein Problem, oder kann man es schlicht ignorieren?

                                    Naja der "Object select dialog" tut nicht vollständig (heisst bekommt nicht die aktuellsten Daten und zeigt keine aktuellen Werte an)

                                    J Offline
                                    J Offline
                                    Jan1
                                    schrieb am zuletzt editiert von
                                    #17

                                    @apollon77
                                    Ok, in meinem Fall dann nicht tragisch, da ich mit Node-Red lediglich ein paar Geräte an Alex anbinde.

                                    1 Antwort Letzte Antwort
                                    0
                                    • M Online
                                      M Online
                                      mrjeschke
                                      schrieb am zuletzt editiert von
                                      #18

                                      Moin,

                                      Ich habe gerade Node-Red installiert, weil ich sehen wollte ob ich damit klar komme.
                                      Bei mir fehlt aber der Menü-Punkt Palette verwalten.
                                      Ist das ein Bug oder ein Feature.
                                      Der Eintrag die der config.js

                                       allowInstall: '%%palletmanagerEnabled%%' /** Enable the Palette Manager in the editor */
                                      

                                      sieht aber eher nach einem Bug aus.

                                      mickymM 1 Antwort Letzte Antwort
                                      0
                                      • M mrjeschke

                                        Moin,

                                        Ich habe gerade Node-Red installiert, weil ich sehen wollte ob ich damit klar komme.
                                        Bei mir fehlt aber der Menü-Punkt Palette verwalten.
                                        Ist das ein Bug oder ein Feature.
                                        Der Eintrag die der config.js

                                         allowInstall: '%%palletmanagerEnabled%%' /** Enable the Palette Manager in the editor */
                                        

                                        sieht aber eher nach einem Bug aus.

                                        mickymM Online
                                        mickymM Online
                                        mickym
                                        Most Active
                                        schrieb am zuletzt editiert von mickym
                                        #19

                                        @maik-0 in der Adapterkonfig: Palettenmanager nutzen anhaken.Keine Änderungen in Dateien machen.

                                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                        M 1 Antwort Letzte Antwort
                                        1
                                        • mickymM mickym

                                          @maik-0 in der Adapterkonfig: Palettenmanager nutzen anhaken.Keine Änderungen in Dateien machen.

                                          M Online
                                          M Online
                                          mrjeschke
                                          schrieb am zuletzt editiert von
                                          #20

                                          @mickym

                                          Sorry, brauch wohl doch ne neue Brille.

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          867

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe