Node-Red für Anfänger

Guten Abend,

ich bin über den Forumeintrag von

auf die Anwesenheitserkennung gekommen dachte mir das möchte ich auch, also Raspberry angeschlossen alles installiert und hat sofort geklappt.
Ich natürlich mit meinem Basteltrieb bin ich über Node-Red gestolpert. Dort hat mir sofort das eigene Dashboard gefallen.
Nun möchte ich mir auch ein eigenes Dashboard erstellen. Es soll nicht viel können möchte ein paar Schalter die mir das Licht ein und ausschalten.

Bin jetzt

Nun meine Frage wie gehe ich hier am besten vor damit ich so einfach wie möglich mein Licht übers Dashboard an und ausschalten kann?

Bitte um Anstoß wie ich am besten anfange. Hab mir schon einige Node-Red Anleitungen durchgelesen nur ich kann die Anwendungen von denen nicht auf die Anwendung von Homee umwälzen.

Danke im Voraus

Schmidt

1 „Gefällt mir“

Bei mir sieht das mit dem Licht im Dashboard so aus.(auf dem iPhone)

Wenn du magst stelle ich Dir ein Beispiel ein.

VG Micha

4 „Gefällt mir“

Ich habe auch einen Node Red mit Homee verbunden und mache da inzwischen eine Auswertung der Wetterdaten meiner Wetterstation und Anwesenheitserkennung.
Gekoppelt habe ich den Node Red über das Homee-Plugin in Node Red. Kannst Du über Homeean.de oder direkt in Node Red über “Palette verwalten” und installieren holen. Jetzt kannst Du direkt Deine Geräte und Homeegramme lesen (GET) und steuern (PUT).
Über “https://himpler.com/blog/node-red-plugin-fuer-homee” findest Du schon mal die Basics. Die richtige ID für die Geräte und Homeegramme zu finden ist halt bisschen Fleißarbeit aber sonst easy.
Als nächstes habe ich vor mir die Enocean-Simulation zu integrieren. Da kann man dann nicht nur Zustände von Geräten auswerten, sondern auch Werte über die Simulation an Homee schicken, z.B. Wetterdaten.

Steffen

1 „Gefällt mir“

P.S.: Im Homee habe ich mir für die Kopplung mit Node Red einen eigenen Nutzer angelegt, der Ordnung halber. :upside_down_face:
Da kann ich im Tagebuch nach Nutzer gefiltert die Funktion besser checken.

1 „Gefällt mir“

Danke für die Antwort.

Wenn es für dich kein Problem wäre würde mir ein beispiel sicher helfen.

1 „Gefällt mir“

Hier ein Dashboard Flow für eine Hue mit dimmen und Color Picker.

[{"id":"a05549e8.73f168","type":"function","z":"61375733.8d2a08","name":"Einstellung","func":"var dim = msg.payload.bri;\nif (msg.payload.on === false){dim=0}\nnode.send ([null,{payload:dim}])\nif (msg.payload.on === true) {\n    var test = {\"text\":\"Erker rechts an\",\"background\":\"yellow\",\"icon\":\"yellow\",\"icon2\":\"fa fa-lightbulb-o  \",\"dim\" :dim};\n    return test;\n}\nif (msg.payload.on === false) {\n    return {\"text\": \"Erker rechts aus \",\"background\":\"wihte\",\"icon\":\"wihte\",\"icon2\":\"fa fa-lightbulb-o\"};\n}\n","outputs":2,"noerr":0,"x":270,"y":2440,"wires":[["1b71ec54.439804"],["6eb2a7ab.9c2ec8"]]},{"id":"b58280e9.6b775","type":"switch","z":"61375733.8d2a08","name":"","property":"hueerkerrechts","propertyType":"flow","rules":[{"t":"true"},{"t":"false"}],"checkall":"false","repair":false,"outputs":2,"x":630,"y":2440,"wires":[["d4cabd82.6631c"],["5578e669.0c5e38"]]},{"id":"d4cabd82.6631c","type":"change","z":"61375733.8d2a08","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"num","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":2440,"wires":[["92981732.af4638"]]},{"id":"5578e669.0c5e38","type":"change","z":"61375733.8d2a08","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"num","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":2480,"wires":[["92981732.af4638"]]},{"id":"5ec01bbf.854114","type":"node-hue-out","z":"61375733.8d2a08","server":"f7407062.f82fc","lightID":"light5","name":"","x":70,"y":2440,"wires":[["a05549e8.73f168","a04666d8.9bd248"]]},{"id":"92981732.af4638","type":"node-hue-in","z":"61375733.8d2a08","server":"f7407062.f82fc","lightID":"light5","name":"","x":990,"y":2460,"wires":[]},{"id":"a04666d8.9bd248","type":"change","z":"61375733.8d2a08","name":"Speicher Licht ","rules":[{"t":"set","p":"hueerkerrechts","pt":"flow","to":"payload.on","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":280,"y":2520,"wires":[[]]},{"id":"1b71ec54.439804","type":"ui_template","z":"61375733.8d2a08","group":"ef9ca666.a06b18","name":"Erker rechts hue","order":7,"width":"0","height":"0","format":"<md-button \nclass=\"md-raised\" \nstyle=\"background-color:black\"  \nng-click=\"send({topic: 'button', payload: 1})\"> \n<div\nstyle=\"display: flex;height: 100%;justify-content: center;align-items: center;\">\n<i \nclass=\"{{msg.icon2}}\" \nstyle=\"color:{{msg.icon}}\"> {{msg.dim}}%\n</i> \n</div>\n  <div md-colors=\"{background: black}\">\n  <div md-colors=\"{color: '{{msg.icon}}'}\">\n    <span>{{msg.text}}</span>\n    \n  </div>\n</div>\n<p align=\"left\">\n    </p> \n    </md-button>\n","storeOutMessages":false,"fwdInMessages":false,"templateScope":"local","x":460,"y":2440,"wires":[["b58280e9.6b775"]]},{"id":"6eb2a7ab.9c2ec8","type":"ui_numeric","z":"61375733.8d2a08","name":"","label":"","group":"ef9ca666.a06b18","order":8,"width":"5","height":"1","passthru":false,"topic":"bri","format":"{{value}}","min":0,"max":"100","step":"10","x":440,"y":2480,"wires":[["92981732.af4638"]]},{"id":"d07b3a7f.4d2538","type":"ui_colour_picker","z":"61375733.8d2a08","name":"","label":"","group":"ef9ca666.a06b18","format":"hex","outformat":"string","showSwatch":false,"showPicker":true,"showValue":false,"showHue":false,"showAlpha":false,"showLightness":false,"dynOutput":"true","order":9,"width":"5","height":"4","passthru":true,"topic":"","x":130,"y":2560,"wires":[["2b069b84.1224f4"]]},{"id":"2b069b84.1224f4","type":"function","z":"61375733.8d2a08","name":"switch","func":"var payload = {\n  \"hex\": msg.payload\n};\n\nmsg.payload = payload;\n\nreturn msg;","outputs":1,"noerr":0,"x":491.7741165161133,"y":2559.5806760787964,"wires":[["92981732.af4638","9ad95543.12eba8","66150b51.6074e4"]]},{"id":"f7407062.f82fc","type":"node-hue-bridge","z":"61375733.8d2a08","name":"Hue Bridge","address":"","key":"","interval":"10000"},{"id":"ef9ca666.a06b18","type":"ui_group","z":"","name":"Wohnen","tab":"aca7e2c3.dd76","order":1,"disp":true,"width":"6","collapse":true},{"id":"aca7e2c3.dd76","type":"ui_tab","z":"","name":"Beleuchtung","icon":"dashboard","order":2}]

Hier ein Flow für die Schaltung von Geräten in homee.

[{"id":"4688a11b.79564","type":"function","z":"4c493bb3.fded14","name":"Rückkanal vom homee","func":"var attribute = msg.payload.attribute;\nconst attributes = global.get('homee.attributes');\nvar test = attributes.filter(attribute => attribute.id === 1472).map(a => a.current_value).reduce((a,c) => a+c);\n\n\nif (attribute && attribute.id === 1472 && attribute.current_value ===1 && attribute.last_value === 0 && attribute.current_value === attribute.target_value) {\n    var msg = {\"text\":\"Küche Insel an\",\"background\":\"yellow\",\"icon\":\"yellow\",\"icon2\":\"fa fa-lightbulb-o  \"};\n    return msg;\n}\nif (attribute && attribute.id === 1472  && attribute.current_value === 0 && attribute.last_value === 1 && attribute.current_value === attribute.target_value) {\n    return {\"text\": \"Küche Insel aus\",\"background\":\"wihte\",\"icon\":\"wihte\",\"icon2\":\"fa fa-lightbulb-o\"};\n}\nif (attribute && attribute.id === 1472 && attribute.current_value === 0 && attribute.last_value === 1 && attribute.target_value === 1 ) {\n    return {\"text\": \"Küche Insel aus\",\"background\":\"red\",\"icon\":\"red\",\"icon2\":\"fa fa-cog fa-spin fa-1x fa-fw\"};\n}\nif (attribute && attribute.id === 1472 && attribute.current_value === 1 && attribute.last_value === 0 && attribute.target_value === 0 ) {\n    return {\"text\": \"Küche Insel aus\",\"background\":\"red\",\"icon\":\"red\",\"icon2\":\"fa fa-cog fa-spin fa-1x fa-fw\"};\n}\n//if (attribute && attribute.id === 1472 && attribute.current_value === 0 && attribute.last_value === 0 && attribute.target_value === 0 ) {\n//    return {\"text\": \"KücheInsel \",\"background\":\"blue\",\"icon\":\"blue\",\"icon2\":\"fa fa-exclamation-triangle blink\"};\n//}","outputs":1,"noerr":0,"x":280,"y":400,"wires":[["43a3c3db.c3590c"]]},{"id":"e8a84b84.25c268","type":"function","z":"4c493bb3.fded14","name":"Zustand an homee","func":"const attributes = global.get('homee.attributes');\nvar test = attributes.filter(attribute => attribute.id === 1472).map(a => a.current_value).reduce((a,c) => a+c);\nif (msg.payload === 1 && test === 1){\nreturn {payload: String `PUT:/nodes/375/attributes/1472?target_value=0`};}\nif (msg.payload === 1 && test === 0){\nreturn {payload: String `PUT:/nodes/375/attributes/1472?target_value=1`};}\n\n","outputs":1,"noerr":0,"x":690,"y":400,"wires":[["aa92dc03.8770b"]]},{"id":"43a3c3db.c3590c","type":"ui_template","z":"4c493bb3.fded14","group":"ce08c5c5.cada48","name":"Küchenlicht Insel","order":1,"width":"0","height":"0","format":"\n<md-button \nclass=\"md-raised\" \nstyle=\"background: none\"  \nng-click=\"send({topic: 'button', payload: 1})\"> \n<div\nstyle=\"display: flex;height: 100%;justify-content: center;align-items: center;\">\n<i \nclass=\"{{msg.icon2}}\" \nstyle=\"color:{{msg.icon}}\">\n</i> \n</div>\n  <div md-colors=\"{background: black}\">\n  <div md-colors=\"{color: '{{msg.icon}}'}\">\n    <span>{{msg.text}}</span>\n  </div>\n</div>\n<p align=\"left\">\n    </p> \n    </md-button>\n","storeOutMessages":true,"fwdInMessages":true,"templateScope":"local","x":490,"y":400,"wires":[["e8a84b84.25c268"]]},{"id":"aa92dc03.8770b","type":"homee","z":"4c493bb3.fded14","name":"","host":"","x":470,"y":320,"wires":[["4688a11b.79564"]]},{"id":"ce08c5c5.cada48","type":"ui_group","z":"","name":"Küche","tab":"aca7e2c3.dd76","order":2,"disp":true,"width":"6","collapse":true},{"id":"aca7e2c3.dd76","type":"ui_tab","z":"","name":"Beleuchtung","icon":"dashboard","order":2}]

Ich habe hier das Template Node benutzt da ich hier die Icon sowie Fraben selber auswählen kann.
In diesem Fall drückst du einfach die Lampe und schon gehts los.
Habe hier noch eine Rückmeldung von homee eingebaut, sollte nach dem schalten die Lampe nicht angehen dann gibt es eine Rote Meldung mit einem drehenden Icon.

Viel Spaß
Micha

Danke für die schnelle Antwort

eine blöde Frage hätte ich noch wie finde ich am besten meine Homee Geräte gibt es irgendwo eine Drop-Down Liste oder muss ich das irgendwie über die Debug-Nachricht nach drücken des Gerätes schauen. Meine soetwas wie beim ioBroker.

MFG Schmidt

Du kannst in deinen Kontextdaten von Node Red schauen.
Dort stehen alle Node und Attribute.

Alternativ kannst du selbige auch abrufen mit einen Inject und dem String
Get:nodes oder Get:attributes

VG Micha

1 „Gefällt mir“

Danke werde mich mal daran setzen und schauen ob ich da irgendwie etwas hinbringe.

MFG Schmidt

Wenn du noch Fragen hast dann nur zu.:+1::grinning:

Hab jetzt herausgefunden wie ich die Geräte abfragen kann nun stellt sich mir die Frage ich will nur mein Esszimmerlicht über das Dashboard ein und ausschalten die ausgabe von meinem Debug sieht wie folgt aus

wie gehe ich da nun weiter vor ich will nicht Dimmen will nur das Licht ein und aus schalten

Da gibt es noch ein weiteres Attribut das nicht für dimmen da ist sondern nur für an und aus.( Switch )

put:/nodes/44/attributes/279?target_value=0

put:/nodes/44/attributes/279?target_value=100

Das wäre jetzt der Inject als String für Dimmwert 0 oder 100

VG Micha

Hi,
ich bin irgendwie am verzweifeln. Ich versuche Zahlenwerte aus einem msg.payload heraus zu filtern. Alle Werte vor “metric” bekomme ich, alle dahinter nur die Meldung "undefined. Kann mir da wer helfen?

Hier der msg-payload:

array[1]
0: object
stationID: “…”
obsTimeUtc: “2019-07-13T12:55:40Z”
obsTimeLocal: “2019-07-13 14:55:40”
neighborhood: “…”
softwareType: “EasyWeatherV1.2.0”
country: “DE”
solarRadiation: 248.1
lon: …
realtimeFrequency: null
epoch: …
lat: …
uv: 2
winddir: 332
humidity: 83
qcStatus: 1
metric: object
temp: 17
heatIndex: 17
dewpt: 14
windChill: 17
windSpeed: 1
windGust: 2
pressure: 1011.18
precipRate: 0
precipTotal: 0.5
elev: …

Danke, Steffen

Wie filterst du die anderen ?
Metric ist ja ein Objekt also musst du es entsprechend behandeln

msg.payload.metric.temp

Kannst du dein Objekt mal als json hier reinstellen? Dann kann man das besser ausarbeiten.

Edit: kann sein das du erst den Array auflösen musst.

VG Micha

Hallo Micha,
hier mein Flow:

[{"id":"9b0e974d.519438","type":"tab","label":"Flow 2","disabled":false,"info":""},{"id":"a505f6d5.011068","type":"http request","z":"9b0e974d.519438","name":"Wunderground","method":"GET","ret":"txt","paytoqs":false,"url":"","tls":"","proxy":"","authType":"basic","x":360,"y":80,"wires":[["ac86cd0a.8cab9"]]},{"id":"b3acf71b.9b6658","type":"inject","z":"9b0e974d.519438","name":"Start Wetterdaten","topic":"","payload":"","payloadType":"date","repeat":"70","crontab":"","once":true,"onceDelay":"","x":150,"y":80,"wires":[["a505f6d5.011068"]]},{"id":"83697b2b.fd79b8","type":"json","z":"9b0e974d.519438","name":"Konvertieren zu Objekt","property":"payload","action":"","pretty":false,"x":160,"y":140,"wires":[["d084df56.1588f"]]},{"id":"f91e9f93.bcf92","type":"function","z":"9b0e974d.519438","name":"Sonnenstrahlung","func":"msg.payload=msg.payload[0].solarRadiation;\nglobal.set(\"solarRadiation\",msg.payload[0]);\nreturn msg;","outputs":1,"noerr":0,"x":550,"y":140,"wires":[["c5cff773.d5e608"]]},{"id":"d084df56.1588f","type":"split","z":"9b0e974d.519438","name":"Array aufteilen","splt":"[10]","spltType":"bin","arraySplt":1,"arraySpltType":"len","stream":true,"addname":"","x":360,"y":140,"wires":[["f91e9f93.bcf92"]]},{"id":"ac86cd0a.8cab9","type":"delay","z":"9b0e974d.519438","name":"","pauseType":"delay","timeout":"3","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":540,"y":80,"wires":[["83697b2b.fd79b8"]]},{"id":"c5cff773.d5e608","type":"ui_gauge","z":"9b0e974d.519438","name":"","group":"6b98891c.eecff8","order":0,"width":"6","height":"4","gtype":"gage","title":"Sonnenstrahlung","label":"W/m²","format":"{{value}}","min":0,"max":"1000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":790,"y":140,"wires":[]},{"id":"6b98891c.eecff8","type":"ui_group","z":"","name":"Homee","tab":"54f5295c.9ae8b8","disp":true,"width":"6","collapse":false},{"id":"54f5295c.9ae8b8","type":"ui_tab","z":"","name":"Wetterdaten","icon":"dashboard","order":2,"disabled":false,"hidden":false}]`Vorformatierter Text`

Ich bekomme die Daten als JSON von Wunderground. Ich wandle diese ja schon, geht bestimmt auch einfacher aber es funzt. :wink: Die Daten hinter “metric” sind noch einmal eingerückt, im msg.payload sind sie aber da.

So sehen die Rohdaten aus:
{“observations”:[{“stationID”:"…",“obsTimeUtc”:“2019-07-13T18:25:47Z”,“obsTimeLocal”:“2019-07-13 20:25:47”,“neighborhood”:"…",“softwareType”:“EasyWeatherV1.2.0”,“country”:“DE”,“solarRadiation”:31.2,“lon”:…,“realtimeFrequency”:null,“epoch”:1563042347,“lat”:…,“uv”:0.0,“winddir”:325,“humidity”:75,“qcStatus”:1,“metric”:{“temp”:18,“heatIndex”:18,“dewpt”:13,“windChill”:18,“windSpeed”:2,“windGust”:4,“pressure”:1010.84,“precipRate”:0.0,“precipTotal”:0.5,“elev”:…}}]}

Gruß, Steffen

[
{
    "id": "19976440.31aabc",
    "type": "function",
    "z": "2f617376.b608ac",
    "name": "Sonnenstrahlung",
    "func": "msg.payload=msg.payload.observations[0].metric.temp;\n\nreturn msg;",
    "outputs": 1,
    "noerr": 0,
    "x": 471.4285888671875,
    "y": 318.57143115997314,
    "wires": [
        [
            "2c4560e2.f3a37"
        ]
    ]
},
{
    "id": "dc77f22f.4435",
    "type": "inject",
    "z": "2f617376.b608ac",
    "name": "",
    "topic": "",
    "payload": "{\"observations\":[{\"stationID\":\"…\",\"obsTimeUtc\":\"2019-07-13T18:25:47Z\",\"obsTimeLocal\":\"2019-07-13 20:25:47\",\"neighborhood\":\"…\",\"softwareType\":\"EasyWeatherV1.2.0\",\"country\":\"DE\",\"solarRadiation\":31.2,\"lon\":\"…\",\"realtimeFrequency\":null,\"epoch\":1563042347,\"lat\":\"…\",\"uv\":0,\"winddir\":325,\"humidity\":75,\"qcStatus\":1,\"metric\":{\"temp\":18,\"heatIndex\":18,\"dewpt\":13,\"windChill\":18,\"windSpeed\":2,\"windGust\":4,\"pressure\":1010.84,\"precipRate\":0,\"precipTotal\":0.5,\"elev\":\"\"}}]}",
    "payloadType": "json",
    "repeat": "",
    "crontab": "",
    "once": false,
    "onceDelay": 0.1,
    "x": 178.80955287388392,
    "y": 315.71428571428567,
    "wires": [
        [
            "19976440.31aabc"
        ]
    ]
},
{
    "id": "2c4560e2.f3a37",
    "type": "debug",
    "z": "2f617376.b608ac",
    "name": "",
    "active": true,
    "tosidebar": true,
    "console": false,
    "tostatus": false,
    "complete": "false",
    "x": 813.0952911376953,
    "y": 311.4286012649536,
    "wires": []
}]

probiere das mal
VG Micha

Genial, das war’s. Zwischendrin war ich mal kurz ganz nah dran bei meinen Versuchen. Hatte nur einen Punkt zuviel, zwischen observations und [0].
Bei meinem eigenen Flow kann ich jetzt auch einen Node weg lassen.

Vielen Dank,
Steffen

1 „Gefällt mir“

Na das ist doch super , je einfacher um so übersichtlicher ist das ganze.

VG Micha

Auf jeden Fall, lerne halt noch. :smiley:
Bastel mir jetzt mein Dashboard zusammen, Kombi aus Homee und Wetterstation u.s.w.

2 „Gefällt mir“

Hallo Micha,
ich brauche mal wieder bisschen Support.

Ich habe mir deinen Flow zum Schalten von Geräten her genommen und für mich angepasst. Will einen Fibaro Single Switch schalten.

[{“id”:“8f8e9afc.d6b158”,“type”:“tab”,“label”:“Flow 1”,“disabled”:false,“info”:""},{“id”:“f95d51e9.83944”,“type”:“function”,“z”:“8f8e9afc.d6b158”,“name”:“Rückkanal vom homee”,“func”:“var attribute = msg.payload.attribute;\nconst attributes = global.get(‘homee.attributes’);\nvar test = attributes.filter(attribute => attribute.id === 147);\n\nif (attribute && attribute.id === 147 && attribute.current_value ===1 && attribute.last_value === 0 && attribute.current_value === attribute.target_value) {\n var msg = {“text”:“Umwälzpumpe ein”,“background”:“yellow”,“icon”:“yellow”,“icon2”:“fa fa-lightbulb-o”};\n return msg;\n}\nif (attribute && attribute.id === 147 && attribute.current_value === 0 && attribute.last_value === 1 && attribute.current_value === attribute.target_value) {\n return {“text”: “Umwälzpumpe aus”,“background”:“wihte”,“icon”:“wihte”,“icon2”:“fa fa-lightbulb-o”};\n}\nif (attribute && attribute.id === 147 && attribute.current_value === 0 && attribute.last_value === 1 && attribute.target_value === 1 ) {\n return {“text”: “Umwälzpumpe aus”,“background”:“red”,“icon”:“red”,“icon2”:“fa fa-cog fa-spin fa-1x fa-fw”};\n}\nif (attribute && attribute.id === 147 && attribute.current_value === 1 && attribute.last_value === 0 && attribute.target_value === 0 ) {\n return {“text”: “Umwälzpumpe aus”,“background”:“red”,“icon”:“red”,“icon2”:“fa fa-cog fa-spin fa-1x fa-fw”};\n}”,“outputs”:1,“noerr”:0,“x”:180,“y”:100,“wires”:[[“85e46de6.e956d”]]},{“id”:“85e46de6.e956d”,“type”:“ui_template”,“z”:“8f8e9afc.d6b158”,“group”:“d9cb1a7f.f71698”,“name”:“Umwälzpumpe”,“order”:1,“width”:“8”,“height”:“3”,“format”:"\n<md-button \nclass=“md-raised” \nstyle=“background: none” \nng-click=“send({topic: ‘button’, payload: ‘get:nodes/17/’})”> \n<div\nstyle=“display: flex;height: 100%;justify-content: center;align-items: center;”>\n<i \nclass="{{msg.icon2}}" \nstyle=“color:{{msg.icon}}”>\n \n\n <div md-colors="{background: black}">\n <div md-colors="{color: ‘{{msg.icon}}’}">\n {{msg.text}}\n \n\n<p align=“left”>\n

\n \n",“storeOutMessages”:true,“fwdInMessages”:true,“templateScope”:“local”,“x”:380,“y”:100,“wires”:[[“8e3070e9.33da9”]]},{“id”:“7348b620.702018”,“type”:“homee”,“z”:“8f8e9afc.d6b158”,“name”:“Umwälzpumpe”,“host”:“192.168.178.30”,“x”:380,“y”:40,“wires”:[[“f95d51e9.83944”]]},{“id”:“4bf8737b.5daf1c”,“type”:“debug”,“z”:“8f8e9afc.d6b158”,“name”:"",“active”:true,“tosidebar”:true,“console”:false,“tostatus”:false,“complete”:“false”,“x”:930,“y”:200,“wires”:[]},{“id”:“b1a97b12.819af8”,“type”:“function”,“z”:“8f8e9afc.d6b158”,“name”:“Zustand an homee”,“func”:“var attribute = msg.payload.attribute;\nconst attributes = global.get(‘homee.attributes’);\nvar test = attributes.filter(attribute => attribute.id === 147).map(a => a.current_value);\n\nif (msg.payload === 1 && test === 1){\n return {payload: String PUT:/nodes/17/attributes/147?target_value=0};\n}\nif (msg.payload === 1 && test === 0){\n return {payload: String PUT:/nodes/17/attributes/147?target_value=1};\n}\n”,“outputs”:1,“noerr”:0,“x”:750,“y”:100,“wires”:[[“7348b620.702018”,“4bf8737b.5daf1c”]]},{“id”:“8e3070e9.33da9”,“type”:“homee”,“z”:“8f8e9afc.d6b158”,“name”:“Umwälzpumpe”,“host”:“192.168.178.30”,“x”:560,“y”:100,“wires”:[[“b1a97b12.819af8”]]},{“id”:“d9cb1a7f.f71698”,“type”:“ui_group”,“z”:"",“name”:“Dashboard”,“tab”:“97c7f703.4c3598”,“disp”:true,“width”:“8”,“collapse”:false},{“id”:“97c7f703.4c3598”,“type”:“ui_tab”,“z”:"",“name”:“Homee”,“icon”:“dashboard”,“order”:1,“disabled”:false,“hidden”:false}]

Die Rückmeldung von Homee funktioniert super, Text und Icons wechseln wie gewünscht. Der Zustand an Homee macht leider nicht das was er soll. Im msg.payload steht nix drinnen, wenn ich den Schalter betätige. Der Template-Node sendet die “1” bei Tastendruck auf dem Dashboard.
Den Template habe ich erst einmal nur soweit angepasst, dass ich da was sehe. Wollte erst einmal schauen wie das alles läuft.

Gruß,
Steffen