Community

Node Red - Hilfe-/Frage-/Ideen-/Austausch - Thread


#181

Wo kommen deine Werte her ?
Sind das Zahlen oder strings ?

Du kannst grundsätzlich deine Werte in einer globalen Variable speichern und mit dieser kannst du dann rechnen.

Gib mal bitte mehr Input.

VG Micha

Edit : die Werte scheinen vom homee Node zu kommen… Dann kannst du auch die Werte direkt aus dem Speicher holen und rechnen.
@stfnhmplr hat sein Node so aufgebaut, das alle Werte global zur Verfügung stehen.

VG Micha


#182

Guten Morgen

Die werte kommen aus der function:

var attribute = msg.payload.attribute;
if(!attribute){ return }
else if ( attribute.id === 973){
return {payload: attribute.current_value}}

Dann sind das doch Zahlen? Aus diesen baue ich dann Diagramme und Gauges.
Wie im Bild vom Dashboard gezeigt.

Doch wie rechne ich mit den Zahlen? Ich versteh nicht wie ich die Zahlen eindeutig benenne. Die beiden Werte heißen beide gleich wenn ich sie extrahiert habe…oder?

Wenn ich natürlich in der Rechnung die id irgendwie verwenden könnte und er mir gleich aus einer function den berechneten Wert ausspuckt wäre natürlich klasse…

@stfnhmplr hat sein Node so aufgebaut, das alle Werte global zur Verfügung stehen.
Hab ich mir angeschaut…

Mein Hauptprobelm ist, glaub, das ich noch nicht wirklich diese Variablengeschichten verstanden habe und wie ich damit arbeiten kann…gibt es da vielleicht ein Tip wie und wo ich das leicht verständlich lernen kann? Wenigstens so rudimentär…youtube , website,?
Ich hab natürlich schon Onkel google bemüht und einiges gefunden und angesehen, aber vielleicht gibt es noch mehr?

Danke schon mal…


#183

Die aktuellen Werte sind im globalen Kontext verfügbar. Siehe dazu hier: https://nodered.org/docs/writing-functions#storing-data
Die Werte sind unter der Variable homee verfügbar. Z.b. homee.nodes

Eine gute Quelle für den allgemeinen Einstieg in JS ist https://developer.mozilla.org/de/docs/Web/JavaScript/Guide/Einführung


#184

Hallo in die Runde,

wie kann ich denn z.B. ein “Get:Nodes” o.ä. über homee abfragen? Mir fehlt da gerade ein kleines Stückchen das Verständnis…

Danke.
:coffee:


#185

Hallo
ich brauch da nochmal Hilfe bitte.
Input: object

topic: “vorlauf”

payload: 29.059

Und das gleiche nochmal vom Rücklauf…topic “ruecklauf”

Function: topic.data = topic.data || {};
var vorlauf = { payload :msg.topic[vorlauf] };
var rueck = { payload :msg.topic[rueck] };
var spreizung = {payload: vorlauf.payload - rueck.payload};
return [spreizung];

Ergebnis: NaN :slight_smile:
Irgendwas ist falsch, können die Profis mir bitte mal helfen?
Vielen Dank


#186

Irgendwie komme ich nicht ganz mit.
Kannst du deinen Funktion als Screenshot senden?

Kommen deine Werte denn gleichzeitig mit dem Topic oder nacheinander ?

VG Micha


#187

Hier für die Bastler unter uns.
Wer das Icon der Geräte ändern möchte kann das machen.
Habe die Icon nicht für jedes Gerät getestet. Also einfach probieren und schauen ob es klappt.

Gebt folgendes in den Inject Node ein ( als String)

PUT:/nodes/123/?image=nodeicon_xxxxx

Die 123 muss durch die Node ID ausgetauscht werden.
Hier die Entsprechenden Icon (für die xxxx).

homeegram
bulb
camera
doorsensor
doublebulb
doubleplug
garagedoor
motiondetector
plug
shutter
speaker
temperature
tv
windowhandle
brightnesssensor
co2
doorbell
flooddetector
gesturecontrol
netatmorainmodule
netatmowindmodule
onebuttonremote
presence
radiator
remote
siren
smokedetector
twobuttonremote
armchair
bed
bolt
house
lock
pot
shield
star
suitcase
sun
teddy
turtle
turtle2
xmastree

Viel Spaß dabei.
VG Micha


#188

Hier mal der Flow…


Der wo die set msg topic function drin ist. Diese bewirkt nur dass der lange topic aus dem iobroker lesbar wird bzw. Vorlauf oder rueck.


#189

Hallo @Hamudulu,

deine Funktion kann so nicht funktionieren.
Dadurch das deine Werte für Vorlauf und Rücklauf nicht in einem Payload stecken,
sondern in getrennten , kann die Funktion nicht richtig rechnen.
Deshalb bekommst du auch als Ergebnis NaN.

Es gibt mehrere Möglichkeiten das zu lösen.
Du kannst mit dem iobroker GET Node arbeiten und den jeweils anderen Wert abrufen oder du legst deine Werte in einer Globalen Variablen ab.

Wenn du Fragen hast zu den Globalen Variablen dann nur zu.
VG Micha


#190

Wie funktioniert das mit der Get Node? Kannst du mir aufmalen wieder flow ausehen muss?
Das mit dem Global hab ich schon mal gehört und auch schon viel gesehen und gelesen, aber irgendwie macht es nicht klick. Wo stell ich das ein?

edit: https://www.youtube.com/watch?v=1MeR8sopLNA das hier war hilfreich, so versuch ich das mal…


#191

Du kannst auch in den Node Red slack kommen ( weiter oben ), dort kann man Dir das schneller erklären. Da kannst du auch deinen flow einstellen ( exportieren).

VG Micha


#192

Hier sind die neuen Icon , falls die jemand händisch ändern muss.

repeater

washingmachine

dryer

entrancedoor

ventilationsystem

patiodoubledoor

bathtub

staircase

storageroom

toilet

VG Micha


#193

Hi,

benutzt jemand einen Harmony Hub Node… wenn ja welchen?

Würde gerne mit einem Wemo kombinieren… inkl. Rückmeldung in homee.


#194

Ich nutze den harmony Websocket Node in node-red mit der harmony Firmware 4.15.206. Habe dies in Verbindung mit einem Wemo inkl. Rückmeldung schon lange laufen.


#195

@madmax
Hmmm… habe auch den Websocket Node…

Hast du vielleicht einen Flow für mich, wie du es gemacht hast. An/aus bekomme ich hin… Rückmeldung aber nicht


#196

Hi @medicus07. Hier mein node-red Flow.
Du muusst noch zwei HG erstellen für Ein uns Aus mit den Entsprechenden WH (Wenn WH (als Auslöser) und dann Harmony Ein, und das selbe zum Ausschalten.
Dann noch den Wemo in homee und und die WH Url in node-red eintragen und dann fertig… Geht bestimmt noch schöner aber bei mir läuft es…

[
{
“id”: “32f6eb33.d24ab4”,
“type”: “tab”,
“label”: “WH Harmony TV”,
“disabled”: false,
“info”: “”
},
{
“id”: “dc199efa.1e581”,
“type”: “http request”,
“z”: “32f6eb33.d24ab4”,
“name”: “Harmony TV”,
“method”: “GET”,
“ret”: “txt”,
“url”: “Webhook URL”,
“tls”: “”,
“x”: 870,
“y”: 60,
“wires”: [
[]
]
},
{
“id”: “b1c2ff61.6a6a1”,
“type”: “http request”,
“z”: “32f6eb33.d24ab4”,
“name”: “Harmony Off”,
“method”: “GET”,
“ret”: “txt”,
“url”: “Webhook URL”,
“tls”: “”,
“x”: 870,
“y”: 140,
“wires”: [
[]
]
},
{
“id”: “4b7e2310.06689c”,
“type”: “switch”,
“z”: “32f6eb33.d24ab4”,
“name”: “”,
“property”: “payload”,
“propertyType”: “msg”,
“rules”: [
{
“t”: “eq”,
“v”: “true”,
“vt”: “str”
},
{
“t”: “eq”,
“v”: “false”,
“vt”: “str”
}
],
“checkall”: “true”,
“repair”: false,
“outputs”: 2,
“x”: 670,
“y”: 100,
“wires”: [
[
“dc199efa.1e581”
],
[
“b1c2ff61.6a6a1”
]
]
},
{
“id”: “57073968.f418b8”,
“type”: “function”,
“z”: “32f6eb33.d24ab4”,
“name”: “Harmony TV (function) NEU”,
“func”: “var tv_ein = {payload: true };\nvar tv_aus = {payload: false};\n\n// TV\nif (msg.payload.activity == “25374855”&&\n msg.payload.status == “1”)\n{return [tv_ein,null]}\nif(\n msg.payload.activity == “25374855”&&\n msg.payload.status == “3”)\n{return [null,tv_aus]}\n”,
“outputs”: 1,
“noerr”: 0,
“x”: 440,
“y”: 100,
“wires”: [
[
“4b7e2310.06689c”
]
]
},
{
“id”: “42b9411b.18731”,
“type”: “HWS observe”,
“z”: “32f6eb33.d24ab4”,
“name”: “Harmony Hub”,
“server”: “7c331846.d45b48”,
“x”: 120,
“y”: 100,
“wires”: [
[
“57073968.f418b8”
]
]
},
{
“id”: “e8a52ad7.f26d58”,
“type”: “wemo-emulator”,
“z”: “32f6eb33.d24ab4”,
“name”: “Harmony TV”,
“friendlyName”: “Harmony TV”,
“serial”: “10”,
“port”: “10010”,
“onTopic”: “”,
“onPayload”: “on”,
“offTopic”: “”,
“offPayload”: “off”,
“x”: 110,
“y”: 180,
“wires”: [
[
“57073968.f418b8”
]
]
},
{
“id”: “7c331846.d45b48”,
“type”: “harmonyws-server”,
“z”: “”,
“name”: “Harmony Hub”,
“ip”: “192.168.178.666”
}
]


#197

ok, danke dir… funktioniert!


#198

Alles klar. Sehr gerne


#199

Hallo,

ich habe mir eine kleine Funktion gebastelt um meinen Durchschnittsverbrauch zu ermitteln. Das funktioniert gut so lange ich in regelmäßigen Zeitabständen Werte übermittelt bekomme. Kommen nun unregelmässig Werte weil niemand zu Hause ist oder Nachts, dann wird das Ergebnis verfälscht :frowning:

Aktuell lasse ich jede Wertänderung addieren und dann durch die Anzahl der Einträge speichern. Hat jemand eine Idee wie ich das programmiertechnisch genauer berechnen kann? Am besten ohne belastende Loops…

Viele Grüße
JayJay


#200

Aber das ist doch eigentlich die richtige Vorgehensweise. Hierbei spielt auch das Zeitintervall zwischen den Werten keine Rollo.
Oder was gefällt dir daran noch nicht?