Hallo Zusammen,
ich habe eine Wetterstation HMIP-SWO-PR. Nun möchte ich gerne 6 Werte der Lichtstärke sammeln und dann den Mittelwert bilden.
Es soll der älteste Wert immer herausfallen und der neueste immer hinzukommen. Somit sind es immer 6 Werte. Ich habe das Beispiel gefunden, aber dieses geht nur wenn das RPC Event verschieden Aktoren auf einmal einliest. Ich möchte dieses aber über die Zeit von nur einem Aktor sammeln.
Habt Ihr eine Idee?
Gruß Thomas
Gefundenes Beispiel aus Redmatic:
Mittelwertbildung aus nur einem Aktor
Moderator: Co-Administratoren
-
- Beiträge: 14
- Registriert: 11.04.2019, 11:27
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
Re: Mittelwertbildung aus nur einem Aktor
Eine Möglichkeit:
Code: Alles auswählen
[{"id":"995f13b4.a3ee58","type":"debug","z":"8d2b7475.b6aaf8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":630,"y":1060,"wires":[]},{"id":"9a4c0cf9.02b538","type":"function","z":"8d2b7475.b6aaf8","name":"","func":"// Topic der gewünschten Werte\nconst myTopic = 'test';\n\n// Vorhandene Werte aus einem Context Array holen\nconst myValues = context.get('myValues')|| [];\n\n// Mittelwertbildung über x Werte\nconst maxValues = 6;\n\n// Nur Werte mit dem entsprechenden Topic einsammeln\nif (msg.topic === myTopic) {\n myValues.push(parseFloat(msg.payload));\n}\n\n// Nur maximal \"maxValues\" vorhalten\n// Den Ältesten rauswerfen\nif (myValues.length > maxValues) {\n myValues.shift();\n}\n\n// Die neue Wertesammlung wieder in den Context schreiben\ncontext.set('myValues', myValues);\n\n// Mittelwert berechnen, aber erst wenn \"maxValues\"\n// vorhanden sind\nif (myValues.length === maxValues) {\n const arrAvg = myValues.reduce((a, b) => a + b, 0) / maxValues;\n // Mittelwert senden\n msg.payload = arrAvg;\n return msg;\n}\n","outputs":1,"noerr":0,"x":460,"y":1060,"wires":[["995f13b4.a3ee58"]]},{"id":"8036b30d.1ed3d","type":"inject","z":"8d2b7475.b6aaf8","name":"","topic":"test","payload":"1","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":980,"wires":[["9a4c0cf9.02b538"]]},{"id":"dab1850d.1f5de8","type":"inject","z":"8d2b7475.b6aaf8","name":"","topic":"test","payload":"2","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":1020,"wires":[["9a4c0cf9.02b538"]]},{"id":"50ae9f8c.fc8a18","type":"inject","z":"8d2b7475.b6aaf8","name":"","topic":"test","payload":"3","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":1060,"wires":[["9a4c0cf9.02b538"]]},{"id":"a3a961d7.d82718","type":"inject","z":"8d2b7475.b6aaf8","name":"","topic":"test","payload":"4","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":1100,"wires":[["9a4c0cf9.02b538"]]},{"id":"c1d5f111.6fb758","type":"inject","z":"8d2b7475.b6aaf8","name":"","topic":"test","payload":"5","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":1140,"wires":[["9a4c0cf9.02b538"]]},{"id":"ac06e0b9.1f0db8","type":"inject","z":"8d2b7475.b6aaf8","name":"","topic":"test","payload":"6","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":230,"y":1180,"wires":[["9a4c0cf9.02b538"]]}]
-
- Beiträge: 460
- Registriert: 06.01.2018, 12:48
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 57 Mal
- Danksagung erhalten: 39 Mal
Re: Mittelwertbildung aus nur einem Aktor
Hallo,
ich nutze genau für den Anwendungsfall den smooth node aus dem Paket node-red-node-smooth.
Gruß
ich nutze genau für den Anwendungsfall den smooth node aus dem Paket node-red-node-smooth.
Gruß
-
- Beiträge: 14
- Registriert: 11.04.2019, 11:27
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
Re: Mittelwertbildung aus nur einem Aktor
Nette Node. Mein Favorit ist eigentlich die aggregator node (https://www.npmjs.com/package/node-red- ... aggregator). Die ist allerdings zeitbasiert, während smooth auf die Anzahl der Werte geht. Auswahl ist immer gut.Hypnos hat geschrieben: ↑13.07.2019, 19:45ich nutze genau für den Anwendungsfall den smooth node aus dem Paket node-red-node-smooth.
Re: Mittelwertbildung aus nur einem Aktor
Echt cool eure Tipps. Danke dafür.
Den node smooth habe ich schon mal getestet. Allerdings die Begrenzung über die Anzahl konnte ich nicht so direkt erkennen.
Den node smooth habe ich schon mal getestet. Allerdings die Begrenzung über die Anzahl konnte ich nicht so direkt erkennen.
-
- Beiträge: 447
- Registriert: 13.09.2017, 05:11
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 12 Mal
Re: Mittelwertbildung aus nur einem Aktor
Hallo Zusammen,
danke für die Tipps .
Ich habe mich für den Vorschlag von hypnos entschieden. Klappt super in der Simulation.
Gruß Thomas
danke für die Tipps .
Ich habe mich für den Vorschlag von hypnos entschieden. Klappt super in der Simulation.
Gruß Thomas
972 Kanäle in 165 Geräten: Davon 16 HM, 145 HMIP, 2 Gruppen und 2 CUXD Geräte
Re: Mittelwertbildung aus nur einem Aktor
Jepp, hatte ich schon gesehen und auch eingestellt, aber wahrscheinlich ein anderes Ausgabeverhalten erwartet.
Da gilt es wohl noch ein wenig mit herumzuprobieren.