Skip to content

Node-Red

Hilfe für Skripterstellung mit Node-RED

953 Themen 13.1k Beiträge

NEWS

  • Flot-Diagramme im NodeRed Dashboard

    node-red
    28
    2
    1 Stimmen
    28 Beiträge
    5k Aufrufe
    W
    @mickym Hi, wäre dir sehr dankbar, wenn du mir den Flow für deine Stromaufzeichnung zukommen lassen würdest :-) Würde gerne meinen Stromverbrauch loggn (Weidmann Elektronik IR-Sensor der mir den Watt verbrauch sekündlich ausspuckt) und hätte hierfür genau deine Ansicht verwendet. Leider bin ich mit Node-Red nicht fit genug, um mir sowas selbst zu basteln. LG Wurmi @mickym said in Flot-Diagramme im NodeRed Dashboard: So nachdem ich nun ca. 2 Wochen an meinem Projekt gearbeitet habe, wollte ich Euch mal das Ergebnis präsentieren, etwas zur Motivation erzählen und dann sieht man ja, ob es nützlich für Euch ist oder nicht. Ich werde wohl das alles auf mehrere Posts ausweiten und versuche mit Screenshots das Ganze zu dokumentieren. Auch werde ich mal wieder meine Einschätzung zu verschiedenen Themen und Tools rund um den iobroker zum Besten geben. Es haben mich wieder mal verschiedene Dinge am iobroker begeistert, weil es einfach wirklich ein sehr offenes und flexibles System ist und man eben auch andere Tools wunderbar einbinden kann und nicht so starr auf die Fähigkeiten eines Systems alleine angewiesen ist. Thema ist wie gesagt, wie binde ich Flot Diagramme in das NodeRed Dashboard ein, warum mache ich das - warum arbeite ich überhaupt mit Node Red oder nutze andere Tools zur Darstellung. Nochmal zur grundsätzlichen Einschätzung, eine der großen Stärken des iobrokers ist die Objektdatenbank und wie man mit Datenbanksystemen die States bzw. die Historie durch Speicherung der Werte von Datenpunkten problemlos und kinderleicht realisieren kann. Zusammen mit Node-Red als Logikmaschine ist das in meinen Augen die bester Kombi, die es auf dem Markt der frei verfügbaren Software für die Hausautomation gibt. Das liegt natürlich auch an der fantastischen Community. Im Rahmen des Projektes musste ich mich notgedrungener Weise auch bisschen mit HTML beschäftigen. Javascript ist sowieso die Basis für alles. Die eigentliche Logik bilde ich im Node Red ab, aber manchmal ist es einfach einfacher auch mal ein paar Function Nodes in Javascript zu schreiben. Insofern bin ich auch grundsätzlich bei allen die in Javascript entwicklen und werde auch immer besser, nur Blockly kann ich leider nichts abgewinnen, das ist für mich einfach nicht intuitiv und bei weitem nicht so übersichtlich und da werde ich mich auch nicht mehr mit anfreunden, weil es keinen Mehrwert für mich bietet. Aber - und das ist wichtig - iobroker ist so flexibel, dass Node Red genauso als Logikmaschine zusammen mit iobroker funktioniert, sodass man Blockly und reine Javascripts nicht benötigt. Das wird leider von vielen nicht so gesehen - aber egal . Nun zur Historienverwaltung - in meinen Augen auch eine Riesenstärke des iobrokers. Mit ein paar Mausklicks ist eine relationale Datenbank angebunden, um Daten aufzeichnen zu können. Die meisten scheinen sich wohl gerade Grafana und InfluxDB zu nutzen. Ich habe mich bewußt gegen diesen Trend entschieden, auch wenn Grafana vielleicht mehr Features zur Diagramm Darstellung bietet keine Ahnung was weitere Vorteile sind, ... desweiteren baue ich weiter auf MySQL als Datenbanksystem, anstelle von influxDB. Vielleicht ist influxDB schneller oder schlanker oder man bekommt Performanceprobleme - keine Ahnung - aber MySQL läßt sich mit dem SQL Adapter super einbinden, gibt grafische Tools unter Windows (wie HeidiSQL um Daten direkt zu manipulieren) ohne SQL Profi zu sein. gibt AddIns für Excel um Daten ohne Dateiexport direkt zu importieren kann auch von NodeRed direkt genutzt werden, um Daten zu speichern und abzulegen. So nun komme ich zu den FLOT-Diagrammen und warum ich die so fantastisch finde. Im Gegensatz zu Grafana wird nicht ein eigenes Dashboard benötigt, sondern die Diagramme werden "On-The-Fly" generiert und gerendert. Es wird im Prinzip ABSOLUT nichts zu einem Diagramm gespeichert oder anders ausgedrückt, alle Erscheinungsparameter dieser Diagramme sind in der URL enthalten. Das eröffnet erstaunliche Möglichkeiten. ;) Bislang hatte ich ja im Dashboard nur die enthaltenen Charts verwendet. Die sind zwar ganz schön, aber da gibts natürlich einen gravierenden Nachteil: Wenn man keine Balkendiagramme zur Visualisierung von Momentanzuständen verwendet, dann ist ohne Datenbank wieder alles weg. Heute mal wieder alles auf Anfang, weil ich zwischenzeitlich im NodeRed das Projekt gewechselt habe: [image: 1616436323402-a386750b-4d72-4f17-96d6-f39e545d1cec-image.png] CPU Last ist nur deshalb so hoch, weil der Timeshift gerade läuft - der fliegt auch wieder runter. Selbst wenn man dann die Daten in einer DB hat, ist es glaub ziemlich mühselig, dass alles wieder einzulesen. Hier gibts entsprechende Doku. Etwas besser verhält es sich wenn man Zustände selbst in Datenpunkten festhält, dann kann man diese natürlich auch mit den NodeRed hauseigenen Mitteln mit Balkendiagrammen schön darstellen. [image: 1616436684776-f7faf325-f7dc-4e4e-9d1f-bec509114fa7-image.png]
  • Wetter API's mit NodeRed abrufen

    node-red template
    29
    5
    2 Stimmen
    29 Beiträge
    9k Aufrufe
    mickymM
    @garf So hab mal angefangen - hier ist der neue Thread, bin aber mit der Beschreibung meiner bisherigen Erkenntnisse noch nicht fertig. ;)
  • String aufteilen

    141
    0 Stimmen
    141 Beiträge
    13k Aufrufe
    H
    @mickym Den Papierkorb habe ich schon gefunden, aber das mit dem löschen ist um einiges einfacher als erwartet. Das ist perfekt für mich, ich lasse nun einfach jede Nacht die Variable löschen. Spätestens nach einer halben Stunde sollten sich dann alle Sensoren wieder aktualisiert haben. Nochmals vielen Dank für deine schnelle und gute Hilfe.
  • Homematic Steuerung mittels Alexa, Node Red in ioBroker

    6
    5
    0 Stimmen
    6 Beiträge
    690 Aufrufe
    mickymM
    @candyman986 Nun ich benutze die Homematic Node nicht, aber ich kann mir vorstellen, dass man die nicht von 2 Seiten ansprechen kann. Also die Node-Red Homematic Nodes gehen nur, wenn Du nicht die Adapter im iobroker hast. Aber Du brauchst die in meinen Augen auch nicht, weil Du ja in Node Red auf alle iobroker Datenpunkte zugreifen kannst - sprich auch auf die Homematic Datenpunkte im iobroker. Deswegen installierst Du doch den Node Red Adapter. Also einfach die Homematic Geräte aus Node Red direkt über die iobroker Nodes ansprechen!
  • HP Tintenfüllstände mit NodeRed und SNMP

    node-red template
    26
    6
    1 Stimmen
    26 Beiträge
    3k Aufrufe
    mickymM
    @jb_sullivan Wie gesagt, wenn Du Dich nicht näher mit NodeRed beschäftigen möchtest, dann schreibst Du einfach das Array oder das Objekt, dass Du von den snmp Nodes erhälst in eine Datenbaum unter userdata_0.0 - dafür habe ich eine eigene Node mit Subflow gebastelt. Dann kannst Du mit diesen Datenpunkten ja wieder mit Blockly oder was Du bevorzugst weiterarbeiten.
  • NFC Tag in node red mit Http request?

    4
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    mickymM
    @albandy Schau mal hier die letzten beiden Einträge: https://forum.iobroker.net/topic/44639/iobroker-über-nfc-tags-und-android-steuern?_=1620944096514 Im Prinzip brauchst Du auch nicht die NFC Tags beschreiben. Die haben mE eine ID und sind damit eindeutig identifiziert. Somit kannst Du jedem NFC Tag eine URL zuordnen.
  • Daten an wunderground senden

    15
    0 Stimmen
    15 Beiträge
    1k Aufrufe
    mickymM
    @hafo Hast Recht - ich hab das natürlich nicht zum Hochladen. Du kannst ja einfach wieder N gegen S und W gegen O bzw. E gegen W tauschen. Dir auch ein schönes WE.
  • (solved) Fritzbox HTTP Get NetMoni

    Verschoben node-red
    5
    0 Stimmen
    5 Beiträge
    375 Aufrufe
    M
    @iobroker_rainer Stellst du bitte Dein Blockly zur Verfügung, für andere, die es auch machen wollen. Danke.
  • Alias Liste nicht gezeigt

    5
    1
    0 Stimmen
    5 Beiträge
    201 Aufrufe
    Fred FreundF
    @mickym so habe ich das Problem umgangen bis zu deiner Loesung :-) OFF Topic: ...der Fibaro Motion Sensor wird als Objekt definiert das bei Erkennung Motion ein Value auf 8 gesetzt wird .. [image: 1620027162543-745e43e1-3d17-4eaa-a8ff-77279d53eb0a-image.png] jetzt habe ich ein Alias erstellt und dort ist er auf einmal ein Boolean mit True, False. [image: 1620027215548-196f15c2-59f9-49e5-ba51-f192adff28ba-image.png] Finde ich besser aber trotzdem musst ich mein Skript aendern.
  • Anfängerfrage: Wert "bestätigen"

    5
    1
    0 Stimmen
    5 Beiträge
    864 Aufrufe
    mickymM
    @jörg-benthien Das hat mit MQTT gar nichts zu tun. Alle Datenpunkte im ioBroker, die als Datenpunkte von Adaptern geliefert werden, werden in einem ioBroker eigenen Format und in eine eigene Datenbank geschrieben. mqtt ist erst mal ein Kommunikationsprotokoll um Werte auszutauschen, dafür braucht es einen Broker/Server und einen Client. Aus NodeRed kannst Du zwar auch direkt auf einen mqtt Broker zugreifen, dafür nimmst Du aber die mqtt Nodes und die kennen keine bestätigten und unbestätigten Werte (wenn man mal vom QoS 1 oder 2 des mqtt Protokolls absieht). Die iobroker Nodes in NodeRed benutzen ein iobroker internes Protokoll und diese Nodes gibt es auch nur hier, wenn NodeRed als Adapter im iobroker läuft - auch wenn andere gerne auch von NodeRed Standalone Installationen auf den iobroker zugreifen würden.
  • Hilfe beim Zusammenfügen von Variablen

    2
    0 Stimmen
    2 Beiträge
    123 Aufrufe
    mickymM
    @rene3128 Nimm einfach eine Template Node und kombiniere das alles. Schau Dir einfach diesen Flow an bzw. importiere ihn - da wurde alles exakt so gemacht. Hier auch - um Alexa Temperaturen ansagen zu lassen. Hättest Du nur mal die Tage in die Suche investiert. ;) Und hier wird erklärt was es für Möglichkeiten gibt und warum die Nachrichten nicht auf Dich warten um sich zusammenzufügen.
  • Rolladen

    5
    3
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    Axel KoenekeA
    @hc-yami Mit Blockly, hier mal ein Ausschnitt für ein Raum: <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="cBG[Sc-Lr=+/wMji6Q+5">Sollw_Tag</variable> <variable id="oa|?U=#-qgiEcU{9xWG^">Sollw_Nacht</variable> <variable id="hUs+O!WDNQE~G?/317@D">Sonne_Hoehe</variable> <variable id="e4$wYs!}sZ(97Ntc{#8[">Sonnenschutz</variable> <variable id="n$-UbsRiqkE_y]xvHZa7">Sollwert_Ausen</variable> <variable id="f6Zuw+zPCzy,GDPCh3Yt">Sollwert_Tages_Mx</variable> <variable id="RnzP{zXGcb2F8VZazfB#">IstTemp</variable> <variable id="Fvyy`YCxGa^`2tOI^`+3">SollTemp</variable> <variable id="Bn=(j{^r[1yvx307Wk4]">DeltaT</variable> <variable id="=J#Ezzw?S{,z@b`ctPjt">Sonne_Winkel</variable> <variable id="gXlM;%VT:g}pAlCIm6zY">Azi_Start_ZU</variable> <variable id="3FcdUi?FNb%:q2am/5J7">Azi_Stop_ZU</variable> <variable id=":8PN6@6:Zzw%^7s]2V`~">Azi_AUF</variable> <variable id="NdUt`Y+d/SRVGO+laY?P">Sollwert_Rollo_Schatten</variable> <variable id=":5n2TwXqaa~*Nj/IGLZP">Sollwert_Rollo_Licht</variable> </variables> <block type="schedule" id="gx_`eq=GsDUDRvW,:.uo" x="213" y="113"> <field name="SCHEDULE">* * * * *</field> <statement name="STATEMENT"> <block type="procedures_callnoreturn" id="u#1eW+OnLYN{L^=7(RJP"> <mutation name="Tag-Nacht-Sonnenschutz"> <arg name="Sollw_Tag"></arg> <arg name="Sollw_Nacht"></arg> <arg name="Sonne_Hoehe"></arg> <arg name="Sonnenschutz"></arg> <arg name="Sollwert_Ausen"></arg> <arg name="Sollwert_Tages_Mx"></arg> </mutation> <value name="ARG0"> <block type="get_value" id=")=Xr@Zn}4Te{=%|rP.O^"> <field name="ATTR">val</field> <field name="OID">s7.0.DBs.DB23.Sonne_Sollwert_Tag</field> </block> </value> <value name="ARG1"> <block type="get_value" id="*^JeMt7ZYoMB/s-0(mf_"> <field name="ATTR">val</field> <field name="OID">s7.0.DBs.DB23.Sonne_Sollwert_Nacht</field> </block> </value> <value name="ARG2"> <block type="get_value" id="kr{%V))}+k=r7S5Q9-Be"> <field name="ATTR">val</field> <field name="OID">javascript.0.Sonnenstand.Sonne_Elevation</field> </block> </value> <value name="ARG3"> <block type="get_value" id="#]M5g3u}x%Bp|Gv*o8a/"> <field name="ATTR">val</field> <field name="OID">javascript.0.ak.Rollo.Sonnenschutz</field> </block> </value> <value name="ARG4"> <block type="math_number" id="RRzz@.LfxxM#_]#BJhTc"> <field name="NUM">20</field> </block> </value> <value name="ARG5"> <block type="math_number" id="r$Sj0MJZNb9@.N17}Tg]"> <field name="NUM">25</field> </block> </value> <next> <block type="comment" id="/:B$TdX?{h*c?4;h%V~$"> <field name="COMMENT">Rollos</field> <next> <block type="controls_if" id="CVDv=oGotFn44!XYvCZp"> <value name="IF0"> <block type="logic_compare" id="RadjFOx/deUU68$t+P$]"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="3q@l3yQ?9~rq7`kfly4."> <field name="ATTR">val</field> <field name="OID">javascript.0.ak.Rollo.Sonnenschutz</field> </block> </value> <value name="B"> <block type="logic_boolean" id="2JZ|mYV@ghRcDKG)[!.d"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="g.--|ZwObI3v+O/z5V6s"> <field name="COMMENT">EG_Wohnen</field> <next> <block type="procedures_callnoreturn" id="B?Y7_F-0lkv?=5zPoYkw"> <mutation name="EG-Wohnen"> <arg name="IstTemp"></arg> <arg name="SollTemp"></arg> <arg name="DeltaT"></arg> <arg name="Sonne_Winkel"></arg> <arg name="Azi_Start_ZU"></arg> <arg name="Azi_Stop_ZU"></arg> <arg name="Azi_AUF"></arg> <arg name="Sollwert_Rollo_Schatten"></arg> <arg name="Sollwert_Rollo_Licht"></arg> </mutation> <value name="ARG0"> <block type="get_value" id="p%[gJMz4#/BMK:H8)OwW"> <field name="ATTR">val</field> <field name="OID">hm-rpc.2.000E9A498E83AB.1.ACTUAL_TEMPERATURE</field> </block> </value> <value name="ARG1"> <block type="get_value" id="KjSVU89`i%uri*5IP[+_"> <field name="ATTR">val</field> <field name="OID">hm-rpc.2.000E9A498E83AB.1.SET_POINT_TEMPERATURE</field> </block> </value> <value name="ARG2"> <block type="math_number" id="0:W$AFb+5pV/-3;I650t"> <field name="NUM">2</field> </block> </value> <value name="ARG3"> <block type="get_value" id="4tt-:SZDEG6d.t+q%r%8"> <field name="ATTR">val</field> <field name="OID">javascript.0.Sonnenstand.Sonne_Azimut</field> </block> </value> <value name="ARG4"> <block type="math_number" id="vG2LLM2aM*6,D9?K@VOc"> <field name="NUM">90</field> </block> </value> <value name="ARG5"> <block type="math_number" id="0SE7pBh?H)_rm*#L~!NH"> <field name="NUM">170</field> </block> </value> <value name="ARG6"> <block type="math_number" id="w2imA4kpHYcjE!y9w64T"> <field name="NUM">240</field> </block> </value> <value name="ARG7"> <block type="math_number" id="EpAi#[?ekzS]VOXS.##^"> <field name="NUM">5</field> </block> </value> <value name="ARG8"> <block type="math_number" id="-@(kZ40?xCi5b4gwS+qV"> <field name="NUM">100</field> </block> </value> <next> <block type="comment" id="WGB5zU4aGjuWf^S85T,M"> <field name="COMMENT">EG_Terrasse</field> <next> <block type="comment" id="c@H_SK2h#Tq#s2h+(6DT"> <field name="COMMENT">EG_Erker</field> <next> <block type="comment" id="T|gVCxzby==b3-.~a:;*"> <field name="COMMENT">EG_Küche</field> <next> <block type="comment" id="}`WF_1}~~e$yhzAgd0Pi"> <field name="COMMENT">EG_WC</field> <next> <block type="comment" id="y}6:b/(/@ME1tM^(9Dr2"> <field name="COMMENT">OG_Schlafen_1</field> <next> <block type="comment" id="8wt0=v3tFn~F~W#gJhvI"> <field name="COMMENT">OG_Schlafen_2</field> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> <block type="procedures_defnoreturn" id="8_%eW?$IJ8rmY8y.zZ$K" collapsed="true" x="1213" y="87"> <mutation> <arg name="Sollw_Tag" varid="cBG[Sc-Lr=+/wMji6Q+5"></arg> <arg name="Sollw_Nacht" varid="oa|?U=#-qgiEcU{9xWG^"></arg> <arg name="Sonne_Hoehe" varid="hUs+O!WDNQE~G?/317@D"></arg> <arg name="Sonnenschutz" varid="e4$wYs!}sZ(97Ntc{#8["></arg> <arg name="Sollwert_Ausen" varid="n$-UbsRiqkE_y]xvHZa7"></arg> <arg name="Sollwert_Tages_Mx" varid="f6Zuw+zPCzy,GDPCh3Yt"></arg> </mutation> <field name="NAME">Tag-Nacht-Sonnenschutz</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="controls_if" id="=7F0hr3]Eu-ECFY)nLu4"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="#^VCIFx2n.k|KoXUG02v"> <field name="OP">GTE</field> <value name="A"> <block type="variables_get" id="H*(wExJ5btJcuXt3M+3L"> <field name="VAR" id="hUs+O!WDNQE~G?/317@D">Sonne_Hoehe</field> </block> </value> <value name="B"> <block type="variables_get" id="+FGQ*;-WN8[Na9~[-,-s"> <field name="VAR" id="cBG[Sc-Lr=+/wMji6Q+5">Sollw_Tag</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="(!_%|.tV=0q%L:=Vz3Y8"> <field name="COMMENT">Sonne ist höher als Sollwert - Tag</field> <next> <block type="control" id="[|fKU[z7^ElhXDv7t#D#"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">s7.0.DBs.DB23.Es_ist_Tag</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">3</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="FeW()a@dNR~qwm/(^ajW"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="8gMi:qNpt|2CH*z%a|yN"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">s7.0.DBs.DB23.Es_ist_Nacht</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="$yg)(?@L.oP76!HWokF+"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="!pMt_eUsjDDp[sq|@(n3"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="Tl,Prag061YS8-LXjmsp"> <field name="VAR" id="hUs+O!WDNQE~G?/317@D">Sonne_Hoehe</field> </block> </value> <value name="B"> <block type="variables_get" id=")H-4V22sbq4tG`cjV%,;"> <field name="VAR" id="oa|?U=#-qgiEcU{9xWG^">Sollw_Nacht</field> </block> </value> </block> </value> <statement name="DO1"> <block type="comment" id="vZ*2S+!HZ{uV|of[`~Nh"> <field name="COMMENT">Sonne ist tiefer als Sollwert - Nacht</field> <next> <block type="control" id="VhHN??lt.MqHg^c5QM9Q"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">s7.0.DBs.DB23.Es_ist_Nacht</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">3</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="dJ3W?A1aIV%G?K*n;xQ!"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="AdZV]l)GU8JM2w-Scfi`"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">s7.0.DBs.DB23.Es_ist_Tag</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id=".-QG{s2BA*^Z[|gA6I0n"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </next> </block> </statement> <next> <block type="comment" id="|HoN3_m#uK?m/u.JW?ca"> <field name="COMMENT">Sonnenschutz</field> <next> <block type="controls_if" id="0^rvh=%G!MvH7R,~,yF."> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="YMJZ|V6=K3$BpKa!DMqc" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_operation" id=")ivpZ1AO-fJ^8~M!F8BW" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="FWgE3RC+LzEK=)mE=bps"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="z~I~r3.#C:2~r)?E7s|d"> <field name="ATTR">val</field> <field name="OID">s7.0.DBs.DB23.Es_ist_Tag</field> </block> </value> <value name="B"> <block type="logic_boolean" id="Ry)N1EV`4zD^3l0/@xB1"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="Go)He~}U8^t)1+n[Z6yD"> <field name="OP">GTE</field> <value name="A"> <block type="get_value" id="V|9klo7u[n0:|bNv0t%)"> <field name="ATTR">val</field> <field name="OID">s7.0.DBs.DB23.Temp_HT_IST</field> </block> </value> <value name="B"> <block type="variables_get" id="]tCCQQ06jBW-?kO`T?-4"> <field name="VAR" id="n$-UbsRiqkE_y]xvHZa7">Sollwert_Ausen</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="{$IPD(D-IO;E-)XSto|}"> <field name="OP">GTE</field> <value name="A"> <block type="get_value" id="K)9JvhS|(Vbudwsg{p4Y"> <field name="ATTR">val</field> <field name="OID">daswetter.0.NextHours.Location_1.Day_1.tempmax_value</field> </block> </value> <value name="B"> <block type="variables_get" id="]Bf!Bm`)}$pQakDYQ.d8"> <field name="VAR" id="f6Zuw+zPCzy,GDPCh3Yt">Sollwert_Tages_Mx</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="*pyN/-(lq+Y1jsNq|AbD"> <field name="COMMENT">Aktiviert</field> <next> <block type="variables_set" id="SS9dJ{5c!;Mali#`q)8e"> <field name="VAR" id="e4$wYs!}sZ(97Ntc{#8[">Sonnenschutz</field> <value name="VALUE"> <block type="logic_boolean" id="Bmvj^J=#ZNarl`pM,25F"> <field name="BOOL">TRUE</field> </block> </value> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_operation" id="1Dw3d3_x$l^uUzyfaMyI" inline="false"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="]H)W*V?4%0C$z`~sTyNT"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="o5Ej4m[@f]K=X0Nn$9`A"> <field name="ATTR">val</field> <field name="OID">s7.0.DBs.DB23.Es_ist_Tag</field> </block> </value> <value name="B"> <block type="logic_boolean" id="HK|FqW^g3pqe(UAX}1E;"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="@3fG-CHR:cS9f:{qcC#j"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="3;!S6XIt|Pvk^Pcq+haA"> <field name="ATTR">val</field> <field name="OID">s7.0.DBs.DB23.Temp_HT_IST</field> </block> </value> <value name="B"> <block type="variables_get" id="Kyl{6=ln8rKaad.AOR-J"> <field name="VAR" id="n$-UbsRiqkE_y]xvHZa7">Sollwert_Ausen</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="comment" id="wwQ8)~m7=wg09q/Z7JjX"> <field name="COMMENT">Deaktiviert</field> <next> <block type="variables_set" id="RD?9Cc!~,]3cJ9-fbBgZ"> <field name="VAR" id="e4$wYs!}sZ(97Ntc{#8[">Sonnenschutz</field> <value name="VALUE"> <block type="logic_boolean" id="5IAnp~-)+U5$|4LV#X;p"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> <block type="procedures_defnoreturn" id="e0J|im/}U@kiQNFN[qDx" collapsed="true" x="1213" y="162"> <mutation> <arg name="IstTemp" varid="RnzP{zXGcb2F8VZazfB#"></arg> <arg name="SollTemp" varid="Fvyy`YCxGa^`2tOI^`+3"></arg> <arg name="DeltaT" varid="Bn=(j{^r[1yvx307Wk4]"></arg> <arg name="Sonne_Winkel" varid="=J#Ezzw?S{,z@b`ctPjt"></arg> <arg name="Azi_Start_ZU" varid="gXlM;%VT:g}pAlCIm6zY"></arg> <arg name="Azi_Stop_ZU" varid="3FcdUi?FNb%:q2am/5J7"></arg> <arg name="Azi_AUF" varid=":8PN6@6:Zzw%^7s]2V`~"></arg> <arg name="Sollwert_Rollo_Schatten" varid="NdUt`Y+d/SRVGO+laY?P"></arg> <arg name="Sollwert_Rollo_Licht" varid=":5n2TwXqaa~*Nj/IGLZP"></arg> </mutation> <field name="NAME">EG-Wohnen</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="controls_if" id="/e]cA_xI8,3YO#?(@NtI"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="s9:Bq58Y=#`v?x8#@rt}" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_operation" id="[Lq%bkACC3*4R6d+1m;W" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="lM1@7kS4iwz9P)cn9{1X"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="sN6[CzjV^_OqmsGZn5E6"> <field name="VAR" id="=J#Ezzw?S{,z@b`ctPjt">Sonne_Winkel</field> </block> </value> <value name="B"> <block type="variables_get" id="C-y/,yU5fS+U3zKZO4g*"> <field name="VAR" id="gXlM;%VT:g}pAlCIm6zY">Azi_Start_ZU</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id=":apCN^;}b7fsYo9n(LHr"> <field name="OP">LT</field> <value name="A"> <block type="variables_get" id="Cs@flhIOv(PZY4iy!Sb-"> <field name="VAR" id="=J#Ezzw?S{,z@b`ctPjt">Sonne_Winkel</field> </block> </value> <value name="B"> <block type="variables_get" id="hv(E=RG4qXa%@+]cyObt"> <field name="VAR" id="3FcdUi?FNb%:q2am/5J7">Azi_Stop_ZU</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="y+^k`JBK[FwIu-oP}:zB"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id=";4j]ysvHyI}k@ju|S5L."> <field name="VAR" id="RnzP{zXGcb2F8VZazfB#">IstTemp</field> </block> </value> <value name="B"> <block type="math_arithmetic" id="2}j`]OOw+q5Lq=.A}95S"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="tq]A8-DmFR1M$EWJ~ZOb"> <field name="VAR" id="Fvyy`YCxGa^`2tOI^`+3">SollTemp</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">4</field> </shadow> <block type="variables_get" id="sv(=^5gvfm+ig4lc8Vao"> <field name="VAR" id="Bn=(j{^r[1yvx307Wk4]">DeltaT</field> </block> </value> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="%S;Ro`X)X%|Y$U_~8!Nr"> <field name="COMMENT">Zu</field> <next> <block type="control" id="qkC#]cR4Muv%E#1${uT]"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">s7.0.DBs.DB23.R_Erker_Rollo_Sollwert</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="?o?V^AOI%,+]bexzGNHR"> <field name="VAR" id="NdUt`Y+d/SRVGO+laY?P">Sollwert_Rollo_Schatten</field> </block> </value> <next> <block type="control" id="ZT6%BE$|~G)x|:-Ei`7F"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Sonnenstand.Ost</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="j.G}g0/_X+lC|;6]`8Bq"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="debug" id="bPH[v9_ij=]v,~tYn47{"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="MpIe5P0-[@fr$ewz,O.;"> <field name="TEXT">Rollo SZ_Zu</field> </shadow> </value> </block> </next> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_operation" id="i,oq`Fit;nI`f_C[ok(4" inline="false"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="}}:c_aGu9v}m3Mp`Y$Kg"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="BEN*Hm|jV/t8{J6U6VtZ"> <field name="VAR" id="=J#Ezzw?S{,z@b`ctPjt">Sonne_Winkel</field> </block> </value> <value name="B"> <block type="variables_get" id="9k6U6//xy2xVj+sIY@N4"> <field name="VAR" id=":8PN6@6:Zzw%^7s]2V`~">Azi_AUF</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="E;WGXn1s#?[zFiBFBF?J"> <field name="OP">LT</field> <value name="A"> <block type="variables_get" id="@9c3KaXE$pp#ytr@Y`qo"> <field name="VAR" id="RnzP{zXGcb2F8VZazfB#">IstTemp</field> </block> </value> <value name="B"> <block type="variables_get" id="ie^a2l$,17)sTPn,iDrL"> <field name="VAR" id="Fvyy`YCxGa^`2tOI^`+3">SollTemp</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="comment" id="}.Nj-IW)l!lc@6mlV/^J"> <field name="COMMENT">Auf</field> <next> <block type="control" id="g+iq@]ab-XD%-l]7$`=H"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">s7.0.DBs.DB23.R_Erker_Rollo_Sollwert</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="~Nh+^a;~kX-mG)e~m}hX"> <field name="VAR" id=":5n2TwXqaa~*Nj/IGLZP">Sollwert_Rollo_Licht</field> </block> </value> <next> <block type="control" id="zYoU|80[Xzf%O)87:zDj"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Sonnenstand.Ost</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="@vw=O22=0f({Ioq/VI@S"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="debug" id="O$xTDF9L$[^LQbL9L1PN"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="g6V)2@r8AED$${EP#f)Y"> <field name="TEXT">Rollo SZ_Auf</field> </shadow> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </xml>
  • Lichtschalterlogik mit NodeRed Flows

    8
    0 Stimmen
    8 Beiträge
    2k Aufrufe
    T
    @mickym Moinsen, habe beim debuggen herausgefunden, dass die Tag/Nacht sekündlich neu getriggert wurde, da ich in einem ganz anderen Node durch den Input/Output Passtrough einen Loop gebaut habe :-) Habe diesen entfernt und das Problem scheint gelöst. Da das Licht nach dem Ausschalten die letzte Bedingung erfüllt hat und der Tag/Nacht ständig neu getriggert hat, hat es für mich so ausgesehen, als ob es ständig nach dem ausschalten passiert. Also wieder was gelernt und das Problem beisitigt :-) Danke für den Tipp mit der NOde. Sieht gut aus und ich finde definitiv auch verwendung dafür. Da die Homematic in diesem Fall das führende System ist, macht die Tag/Nacht Variable für mich hier am meisten Sinn. Liebe Grüße und schönen Rest-Feiertag
  • Anfängerfrage: DHT11 Sensor über MQTT in Node Red auslesen

    18
    0 Stimmen
    18 Beiträge
    1k Aufrufe
    mickymM
    @bastel2021 So hier habe ich mal alle Zusammenhänge erläutert: https://forum.iobroker.net/topic/40242/msg-payload-werte-auslesen/23?_=1619369346132 und in dem Beitrag habe ich den Flow mit den Debug Output dargestellt - war auch eine Tempartur: [image: 1619369612338-e107c774-663c-4c94-97a8-ead80cd353d3-image.png] Im letzten Posting siehst auch wie Du bei sehr komplexen Objekten über Pfad kopieren den richtigen Wert extrahierst. Da sind auch paar Flows zum Üben drin. ;)
  • MSG Payload werte auslesen

    24
    1
    0 Stimmen
    24 Beiträge
    22k Aufrufe
    mickymM
    @bf532 müsste sein: msg.payload.devices[0].modules[2].dashboard_data.Temperature also change Node mit setze msg.payload auf msg.payload.devices[0].modules[2].dashboard_data.Temperature musst Dich halt ggf. mit debug Nodes durchhangeln. also erst debug Node auf msg.payload.devices[0] usw. Es gibt ausserdem einen ganz einfachen Trick: geh neben dem Wert der Dich interessiert und dann taucht rechts ein Icon auf: Pfad kopieren - dann hast Du den Pfad in der Zwischenablage Hier noch zur Illustration - auch wenn ich mich oben vertan haben sollte. Also einfach neben dem Wert der von Interesse ist, dann den Pfad kopieren: [image: 1619189445636-screen.png] siehe rechts neben dem Screenshot. Dann in eine Change Node den Pfad setzen: [image: 1619189541280-3e544e74-4afb-44a0-a2f6-2e03ba42554c-image.png] und schon hast Du den Wert extrahiert.
  • [erledigt]MQTT Status aktualisieren nach Deploy?

    5
    0 Stimmen
    5 Beiträge
    408 Aufrufe
    V
    @mickym Danke für Deine Ausführungen. Das (mein) Problem bestand im Deployen. Ganzer Flow deployen und es läuft. Danke! Pat
  • node-red-contrib-amazon-echo

    10
    1
    0 Stimmen
    10 Beiträge
    3k Aufrufe
    J
    @kla960 da legst ein extra User an und der darf nicht mal viele Rechte haben, somit ist das erstens nur minimal was an Rechten benötigt wird und im Log taucht es auch auf. Da gibts wirklich problematischere Dinge ;)
  • Anfängerfrage http request

    5
    0 Stimmen
    5 Beiträge
    410 Aufrufe
    R
    Vielen Dank für die Hilfe. Mein Problem ist soweit gelöst. Ich habe aber gesehen, dass ich mich noch viel mehr einlesen muss.
  • Einzelnen Wert auslesen

    node-red
    2
    1
    0 Stimmen
    2 Beiträge
    111 Aufrufe
    mickymM
    @stieger Du musst das nur aufklappen. Wenn das ein Objekt der payload ist, dann prüfst Du einfach auf payload.tvActivated. Im Prinzip nimmst Du eine Change Node und setzt msg.payload auf msg.payload.tvActivated. [image: 1618831900376-b16f2590-da0d-42e7-859c-d7d700daee93-image.png] Ansonsten bitte alles aufklappen in der Nachricht und auch vollständig posten mit topic und msg.id.
  • Energieverbrauch in Node Red mit Shelly Plug S erfassen

    7
    2
    0 Stimmen
    7 Beiträge
    5k Aufrufe
    R
    Auch an der Stelle nochmal vielen Dank für die Hilfe :) Dein Code hat mich um einiges weitergebracht. :+1: [image: 1618752264220-energiemessung.jpg]

307

Online

32.6k

Benutzer

82.1k

Themen

1.3m

Beiträge