Skip to content

Node-Red

Hilfe für Skripterstellung mit Node-RED

953 Themen 13.1k Beiträge

NEWS

  • [Lösung] Adapter HeatingControl - NodeRed Dashboard

    5
    1
    1 Stimmen
    5 Beiträge
    681 Aufrufe
    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 Stimmen
    3 Beiträge
    333 Aufrufe
    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 Stimmen
    16 Beiträge
    1k Aufrufe
    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 Stimmen
    22 Beiträge
    1k Aufrufe
    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 Stimmen
    2 Beiträge
    214 Aufrufe
    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 Stimmen
    9 Beiträge
    722 Aufrufe
    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 Stimmen
    3 Beiträge
    373 Aufrufe
    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 Stimmen
    11 Beiträge
    3k Aufrufe
    Ralf LangeR
    @mickym Okay, ich bin offiziell ein Idiot...
  • variabler Variablenzugriff For-Schleife

    15
    0 Stimmen
    15 Beiträge
    1k Aufrufe
    _
    @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 Stimmen
    5 Beiträge
    543 Aufrufe
    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 Stimmen
    5 Beiträge
    347 Aufrufe
    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 Stimmen
    8 Beiträge
    669 Aufrufe
    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 Stimmen
    22 Beiträge
    2k Aufrufe
    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 Stimmen
    3 Beiträge
    851 Aufrufe
    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 Stimmen
    5 Beiträge
    451 Aufrufe
    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 Stimmen
    8 Beiträge
    994 Aufrufe
    mickymM
    @matthesjimte wie gesagt probiere es nochmal mit topics unter command
  • Node-Red Skript an iobroker anpassen

    12
    0 Stimmen
    12 Beiträge
    806 Aufrufe
    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 Stimmen
    1 Beiträge
    209 Aufrufe
    Niemand hat geantwortet
  • node-red-contrib-virtual-smart-home -> device Limit reached

    30
    1
    0 Stimmen
    30 Beiträge
    6k Aufrufe
    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 Stimmen
    7 Beiträge
    746 Aufrufe
    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.

306

Online

32.6k

Benutzer

82.1k

Themen

1.3m

Beiträge