Skip to content

Node-Red

Hilfe für Skripterstellung mit Node-RED

953 Topics 13.1k Posts

NEWS

  • [Lösung] Adapter HeatingControl - NodeRed Dashboard

    5
    1
    1 Votes
    5 Posts
    682 Views
    mickymM
    So weiter im Kontext - wie man sieht werden die Wochenprofile durch FHEM gesteuert und via mqtt in den iobroker übertragen. [image: 1699572022212-15131057-d725-4d6e-93e1-c228319e5ed5-image-resized.png] Diese Daten werden im NodeRed Flow eingelesen - damit man den Flow nachvollziehen kann - habe ich diese Datenpunkte in eine Injekt-Node verfrachtet. Und alle Nodes deaktiviert, die nicht funktionieren - weil die Datenpunkte nicht vorhanden sind. Die Demo Node wird automatisch ausgeführt. [image: 1699573986774-021680d5-a1e9-4319-9f6e-fe7926bd1bdc-image-resized.png] im Demo-Mode ist die erste Gruppe nicht mit allen Elementen zu sehen. So sieht es vollständig aus: [image: 1699574146764-4d8d836a-f8af-4b4d-a9c8-ddbfb9efe792-image-resized.png] Von links nach rechts. [image: 1699575905920-f1242a45-effb-442c-b443-127cd3813250-image.png] Im 1. Gruppe wählt man ggf. ein Datei zum Upload aus. (Neben der Inject- Node als Test). Hier habe ich mal 3 Dateien als Beispiel hier - das ist wie gesagt FHEM Syntax für den MAX Cube. MAX_Wohnzimmer_weekProfile.txt MAX_Buero_weekProfile.txt MAX_Bad_weekProfile.txt Sind keine Daten für den entsprechenden Wochentag vorhanden, dann werden die anderen Gruppen ausgeblendet. In der 2. Gruppe kann das selektierte Tagesprofil editiert werden. [image: 1699575944325-58c2f17d-d85b-45a4-a893-054954f78144-image.png] Es sind soweit mir möglich war alle Möglichkeiten durchgetest. In der Regel sind die Perioden automatisch nach der Tageszeit sortiert. Eine Periode ist zwingend bei 0:00 Uhr erforderlich. Wenn sich eine Periode mit gleicher Temperatur anschließt wird diese gelöscht bzw. die Eingabe wird nicht akzeptiert. Unten kann man dann Perioden löschen oder neue hinzufügen. Sobald ein Tagesplan zufriedenstellend editiert wurde kann man den in der 3. Gruppe für verschiedene Tage erstellen lassen. [image: 1699576209969-8656ff30-1961-4758-b08d-90b3a1c9b050-image.png] Das ganze muss man sich halt im Debug Fenster ausgeben lassen. Der Download/Export geht nur, wenn man ggf. den Ort wohin der Export geschrieben wird - also relativ zum http-Static Pfad. Hier das Ganze zum Testen, wer Lust hat. Demo Automatik Heizpläne.json
  • Dashboard - Momentane Position von Element

    3
    0 Votes
    3 Posts
    333 Views
    T
    @mickym OK, schade. Eben da es responsiv ist (was ich ja haben möchte), dacht ich, dass es eine Mögloichkeit gibt, das Popup an der Stelle des Buttons oder der Maus anzuzeigen anstatt an einer fixen Position (Button ist responsiv, Popup aber immer an einer bestimmten X/Y Position (und damit vielleicht sogar außerhalb des Bildschirms). Vielleicht gibt es einen Knoten, der mir die Möglichkeit gibt (habe zumindest so etwas mit Klick auf Vektor Grafiken bereits gesehen).
  • [gelöst] Lampe nur einschalten wenn...

    16
    0 Votes
    16 Posts
    1k Views
    mickymM
    @matt77che Na ich hoffe Du bist positiv überzeugt. ;) - Ich verstehe ja auch nicht, warum gerade Anfänger immer alle zum Puzzeln überredet werden.
  • Node Advanced Ping

    22
    0 Votes
    22 Posts
    1k Views
    hotspot_2H
    @thomas-braun Ok. Passt für mich. Vielen Dank für die Hilfe!
  • (gelöst) node red mysql werte addieren

    2
    1
    0 Votes
    2 Posts
    215 Views
    druckstick.atD
    mir wurde wo anders die Lösung gezeigt... hier die nodes: [ { "id": "e6a27dd296678be6", "type": "tab", "label": "Flow 1", "disabled": false, "info": "", "env": [] }, { "id": "d6c1203fb44c3759", "type": "inject", "z": "e6a27dd296678be6", "name": "Abfrage Spalte User", "props": [ { "p": "payload.user", "v": "user1", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "x": 130, "y": 40, "wires": [ [ "81a8cf372d40c91e" ] ] }, { "id": "81a8cf372d40c91e", "type": "function", "z": "e6a27dd296678be6", "name": "abfragen bestimter User", "func": "msg.topic = \"SELECT * FROM Testtabelle WHERE Spalte1 = '\" + msg.payload.user + \"'; \"\nreturn msg;\n\n", "outputs": 1, "timeout": 0, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 370, "y": 40, "wires": [ [ "a04426f825a7bb9a" ] ] }, { "id": "84d8dc35e5843902", "type": "split", "z": "e6a27dd296678be6", "name": "Array in einzelne Nachrichten", "splt": ",", "spltType": "str", "arraySplt": 1, "arraySpltType": "len", "stream": false, "addname": "", "x": 880, "y": 40, "wires": [ [ "21f5008ae1bd8072" ] ] }, { "id": "21f5008ae1bd8072", "type": "change", "z": "e6a27dd296678be6", "name": "Daten auf payload", "rules": [ { "t": "move", "p": "payload.Spalte2", "pt": "msg", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 150, "y": 140, "wires": [ [ "3f428eaec9a2c230" ] ] }, { "id": "3f428eaec9a2c230", "type": "join", "z": "e6a27dd296678be6", "name": "Daten zurück in Array", "mode": "custom", "build": "array", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": ",", "joinerType": "str", "accumulate": false, "timeout": "2", "count": "", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 420, "y": 140, "wires": [ [ "b2fb82ad2edb5201" ] ] }, { "id": "a04426f825a7bb9a", "type": "mysql", "z": "e6a27dd296678be6", "mydb": "410735f8711c0cb6", "name": "Datenbanknerküpfung", "x": 620, "y": 40, "wires": [ [ "84d8dc35e5843902" ] ] }, { "id": "b2fb82ad2edb5201", "type": "calculator", "z": "e6a27dd296678be6", "name": "Summe berechnen", "inputMsgField": "payload", "outputMsgField": "payload", "operation": "sum", "constant": "", "round": false, "truncate": false, "decimals": 0, "decimals2": 0, "x": 630, "y": 140, "wires": [ [ "fe5ea3b2656a760a" ] ] }, { "id": "fe5ea3b2656a760a", "type": "debug", "z": "e6a27dd296678be6", "name": "debug", "active": true, "tosidebar": true, "console": false, "tostatus": true, "complete": "true", "targetType": "full", "statusVal": "payload", "statusType": "auto", "x": 790, "y": 140, "wires": [] }, { "id": "4108711c0cb6", "type": "MySQLdatabase", "name": "", "host": "xxxxxx", "port": "3306", "db": "xxxxx", "tz": "", "charset": "UTF8" } ]
  • tcp-request-node für UPnP-Client-Implementierung?

    9
    0 Votes
    9 Posts
    722 Views
    mickymM
    @goesebrecht sagte in tcp-request-node für UPnP-Client-Implementierung?: @mickym Danke, das funktioniert. Trotzdem schade, dass es nicht über die tcp-nodes funktioniert. ... Du bist doch der Anti-function-nodes-Verfechter ... ;-) Das bin ich auch - und ich kenn mich zuwenig in diesen Netzwerkdingen aus, aber um externe Module nutzen zu können oder auch asynchrone Verarbeitung oder wenn es keine passenden Nodes gibt, dann sind doch function Nodes gut. Ich finde function nodes nur überflüssig, wenn man payloads verändern will etc. - Auch haben function Nodes den Vorteil von eigenem Kontext. Also ich bin nicht grundsätzlich dagegen - aber function nodes sind trotzdem ein mächtiges Mittel, wenn man mit den verfügbaren Nodes nicht auskommt. Wahrscheinlich müsste man sich nur mal den Quellcode der Bibliothek anschauen, um zu sehen, wie der Handshake aussehen muss.
  • [gelöst] msg.payload die ersten zwei Zeichen löschen

    3
    0 Votes
    3 Posts
    373 Views
    druckstick.atD
    @mickym Danke! ich hatte die verd.... Klammer vergessen :confounded: Die ersten zwei Varianten kannte ich noch nicht, warum einfach wenn es umständlich geht :grinning:
  • Min / Max Wert der letzten 24h

    blockly monitoring
    11
    0 Votes
    11 Posts
    3k Views
    Ralf LangeR
    @mickym Okay, ich bin offiziell ein Idiot...
  • variabler Variablenzugriff For-Schleife

    15
    0 Votes
    15 Posts
    1k Views
    _
    @oliverio Japp, soweit habe ich es verstanden. Auch dir vielen lieben Dank für die ausführliche Erklärung :)
  • Werte aus einem Schedule ausgeben

    5
    0 Votes
    5 Posts
    546 Views
    mickymM
    Ändere die Abfrage wie folgt: payload.schedule[time ~> $contains(($moment().add(1, 'd').format("YYYY-MM-DD")))][value] Dann kommen zu dem Tag alle Objekte deren Wert true ist.
  • Dashboard add some UI Nodes

    5
    0 Votes
    5 Posts
    349 Views
    mickymM
    @bf0911 na ein Indiz war die fehlenden Statusmeldungen unter Deinen Nodes und natürlich das sich sonst nichts tut. Dashboard etc. wie gesagt auch in den Adaptereinstellungen muss der Sicherheitsmodus deaktiviert / abgehakt sein.
  • Ausgabe Node-Red an Datenpunkt

    8
    1
    0 Votes
    8 Posts
    672 Views
    mickymM
    @homoran :rolling_on_the_floor_laughing: :rolling_on_the_floor_laughing: :rolling_on_the_floor_laughing:
  • Schrittwerk mit einer Bedingung begrenzen

    22
    1
    0 Votes
    22 Posts
    2k Views
    H
    @mickym sagte in Schrittwerk mit einer Bedingung begrenzen: Na ich glaube Du behälst Deinen ursprünglichen Flow. gar nicht so einfach .. ;-) ich finde deinen ansatz mit der vereinfachten Form gut, evtl bau ich mir da was draus. aber heut nicht mehr -> morgen wieder .. ich danke dir vielmals für die Unterstützung !!!
  • (Gelöst) Dashboard - "Can't GET /ui"

    3
    0 Votes
    3 Posts
    856 Views
    A
    @glasfaser said in Dashboard - "Can't GET /ui": https://forum.iobroker.net/post/533169 Dann sollte ich es vllt. konkretisieren: Dieses Topic hatte ich gefunden, jedoch sind darin einen Haufen Probleme beschrieben, die ich alle samt nicht habe und dementsprechend auch die Lösungswege mir nichts nutzen. Ich habe tatsächlich nur isoliert das Problem, dass sich die UI nicht aufrufen lässt. Ich habe auch keine Fehlermeldungen in den Protokollen. EDIT 09.10.2023: Da ich einfach keine andere Möglichkeit sah, bzw. nicht wusste, wo ich ansetzen soll, habe ich sämtliche Flows zunächst aus dem IoBroker Ordner gesichert. Anschließend habe ich den Adapter innerhalb des IoBrokers komplett gelöscht und neu installiert. Siehe da: Die UI geht wieder. Überraschend: Die Flows wurden auch erhalten bzw. wieder direkt übernommen.
  • Wie funktioniert der Input Kanal zu Alexa

    5
    0 Votes
    5 Posts
    451 Views
    mickymM
    @reini_t Nun dann hättest Du ja auch trotz Umstellung Deiner Logikmaschine auf NodeRed Deinen Adapter weiter behalten können. Falls man wirklich die node.id der Amazon Node benötigt - dann erstellst einfach das Objekt- du kannst aber auch mal weglassen. Wenn Du als ein aus true/false hast - kannst Du das direkt über eine Change Node machen, in dem Du das Objekt einfach so einstellst wie Du es brauchst. Merke: NodeRed hat gerade seine Vorteile, in dem man keinen Javascript Code schreibt - das ist wirklich nur in einigen Ausnahmefällen (z. Bsp bei externen Bibliotheken oder wenn man eine Node braucht um was zu speichern und man das nicht im flow-Kontext machen will). Du schreibst einfach in Deine Change Node - das Objekt was Du haben willst, in ein JSONATA Feld und gut ist. { "nodeid": "6df04e96.e4c63", "on": payload } [image: 1696246750225-7ef4088f-44b9-4b68-aadc-1828c9e7b240-image-resized.png] [image: 1696246969420-10643578-839b-495e-a43a-e61f9957ae95-image.png] Diese ganze Codiererei ist einfach unnötig. Falls Du als Input nicht true oder false, sonder ON/OFF oder 0/1 hast, dann kannst Du das in der Change node mit 2 zusätzlichen Regeln ändern oder einfach im JSONATA Objekt. Hier mit zusätzlichen Regeln in der Change Node: [image: 1696247518428-1eda77f1-71ac-4348-8bb8-c8fbd7665835-image-resized.png] oder nur im Objekt: [image: 1696247600555-19dfe883-7b1c-435d-9418-ea6fc651eaec-image-resized.png] Spoiler [ { "id": "e4ae86b05c50d9cd", "type": "inject", "z": "7e6af0015415146d", "name": "", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "true", "payloadType": "bool", "x": 370, "y": 3520, "wires": [ [ "2dc8e8ac670c9a16" ] ] }, { "id": "26b9506fb10256b1", "type": "inject", "z": "7e6af0015415146d", "name": "", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "false", "payloadType": "bool", "x": 370, "y": 3560, "wires": [ [ "2dc8e8ac670c9a16" ] ] }, { "id": "2dc8e8ac670c9a16", "type": "change", "z": "7e6af0015415146d", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "{\t \"nodeid\": \"6df04e96.e4c63\",\t \"on\": payload\t }\t", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 550, "y": 3540, "wires": [ [ "9c31686c26785195" ] ] }, { "id": "9c31686c26785195", "type": "debug", "z": "7e6af0015415146d", "name": "Zur Alexa Node", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 760, "y": 3540, "wires": [] } ] @Reini_T Deinen Flow kann man nicht interpretieren, wenn Du den nicht in CodeTag setzt, da sonst der Browser hier Formatsteuerzeichen interpretiert. Also jeden Export bin in CodeTags (so wie im Blockly Export auch). [image: 1696247818866-code-tags.gif] Du kannst ja mal versuchen Deinen Flow so wie er ist zu reimportieren - Du wirst scheitern. [image: 1696248046400-8e33c27b-1e0c-40e0-8a2e-f1c365edba41-image.png] Also nur in CodeTags - sonst macht das keinen Sinn. Wenn da übrigens solche Objekte rauskommen .... { "nodeid": "6df04e96.e4c63", "on": true } (Ich habe die Node selbst nicht, da keine Alexa). [image: 1696248915623-87d94d42-79c4-4f19-aa48-ba0b4321bc69-image.png] ... dann kannst Du das ganze vereinfachen - indem Du nur den Wert selektierst über den Pfad: [image: 1696249034073-copy-path.gif] [image: 1696249231594-bf63257a-d0c1-4014-88f5-8da36dd5d16c-image-resized.png] Das heißt Du kannst alles mit EINER Node umwandeln, um ein Attribut eines Objektes in einen Datenpunkt im iobroker zu schreiben. Spoiler [ { "id": "a4aef8eaa9a93ac0", "type": "inject", "z": "7e6af0015415146d", "name": "Alexa Ausgabe", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "{\"nodeid\":\"6df04e96.e4c63\",\"on\":true}", "payloadType": "json", "x": 280, "y": 3940, "wires": [ [ "208e759b77bf0348", "56cfb667ef472d47" ] ] }, { "id": "56cfb667ef472d47", "type": "debug", "z": "7e6af0015415146d", "name": "Alexa Ausgabe", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 480, "y": 3900, "wires": [] }, { "id": "31e9b2dec2c5a305", "type": "debug", "z": "7e6af0015415146d", "name": "on Status selektiert", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 730, "y": 3900, "wires": [] }, { "id": "208e759b77bf0348", "type": "change", "z": "7e6af0015415146d", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "payload.on", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 490, "y": 3940, "wires": [ [ "31e9b2dec2c5a305" ] ] } ]
  • Shelly TRV mit JSON Temperatur ändern

    8
    0 Votes
    8 Posts
    996 Views
    mickymM
    @matthesjimte wie gesagt probiere es nochmal mit topics unter command
  • Node-Red Skript an iobroker anpassen

    12
    0 Votes
    12 Posts
    809 Views
    mickymM
    @bf0911 Generell bekommst Du von dem Broker nicht viel mit und der verteilt nur die Nachrichten Geben die Geräte z. B. die Topics vor oder kann ich die vorgeben? Derjenige der Informationen published, gibt die Topics vor bzw. darauf wird gehört. In der Regel geben die Geräte vor, was sie publishen und worauf sie hören. Für eigene Zwecke ohne Geräte kannst Du aber veröffentlichen was Du willst. Die offizielle Doku ist hier: https://mosquitto.org/documentation/ Hier eine kleine Installationsanleitung, die mosquitto-clients brauchst Du nicht. https://www.elektronik-kompendium.de/sites/raspberry-pi/2709041.htm [image: 1695733515869-14a903d4-ed56-45f3-b7a5-71fc621a21b9-image.png] Testen kannst Du ja mit NodeRed
  • ProxyScript für NodeRed und JS-Selektor

    1
    6
    0 Votes
    1 Posts
    209 Views
    No one has replied
  • node-red-contrib-virtual-smart-home -> device Limit reached

    30
    1
    0 Votes
    30 Posts
    6k Views
    AtifanA
    So, genau 1 Jahr ist vergangen und mein Abo für virtual-smart-home ist abgelaufen. Ich würde jetzt gerne auf eine kostenlose Alternative umstellen. Hat da jemand einen Tipp? Also ich brauche eine neue Palette für Nodered über die ich eine Verbindung zu Alexa herstellen kann, damit ich Geräte im Heimnetz über die Alexa Sprachsteuerung ansprechen kann.
  • Node Red mit KNX Ultimate, Gruppe auslesen

    7
    1
    0 Votes
    7 Posts
    746 Views
    S
    @lessthanmore so das mit der Sprache ist halt so, ok. vor dem update konnte ich keinen "output type" mit "Read" auswählen, den gab es nicht, egal was ich bei input wählte. Ist ja nun auch egal, ist ja geupdated, damit erledigt.

349

Online

32.6k

Users

82.2k

Topics

1.3m

Posts