HomematicIP Fensterkontakt über NodeRed

Hallo zusammen,

leider fangen meine alten Homematic Fensterkontakte langsam aber sicher an, sich zu verabschieden.

Ich habe jetzt erstmal testweise einen von den HomematicIP Fensterkontakten angebaut und versuche den über NodeRed anzubinden.

Das funktioniert grundsätzlich auch, aber ich bekomme es nur hin, den Fensterzustand (also auf oder zu) an homee zu übermitteln. Die alten Fensterkontakte haben auch noch z.B. den Batteriezustand mit übergeben.

Habt Ihr einen Tip für mich, welches Profil und welche Attribute ich am besten dafür benutze?
Mein Flow sieht so aus:

[{"id":"ea2693ac.d8bd","type":"homeeDevice","z":"87d8c743.9728f8","virtual-homee":"","name":"Fenster Schlafzimmer","nodeId":"400","showNodeId":true,"profile":"2000","icon":"nodeicon_heatingsystem","attributes":[{"type":14,"state":1,"instance":0,"minimum":0,"maximum":1,"current_value":0,"target_value":0,"last_value":0,"data":"","name":"","unit":"n%2Fa","step_value":1,"editable":0,"last_changed":1671193774,"changed_by":1,"changed_by_id":0,"based_on":1,"options":[],"id":"401","node_id":"400"}],"statusTemplate":"","x":840,"y":580,"wires":[[]]},{"id":"c0b199ca.8c1da","type":"ccu-value","z":"87d8c743.9728f8","name":"Fenster Schlafzimmer","iface":"HmIP-RF","channel":"0000DA49A1862C:1 Fenster Schlafzimmer","datapoint":"STATE","mode":"","start":true,"change":false,"cache":false,"queue":false,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":false,"ccuConfig":"38263145.35ea0e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":240,"y":580,"wires":[["b6caae86.822f08"]]},{"id":"b6caae86.822f08","type":"function","z":"87d8c743.9728f8","name":"","func":"const data = msg.payload;\n\nmsg.payload = {\n    attributes: [\n        { id: 401, value: data},\n    ]\n};\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":600,"y":580,"wires":[["ea2693ac.d8bd"]]},{"id":"38263145.35ea0e","type":"ccu-connection","name":"localhost","host":"localhost","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":false,"cuxdEnabled":false,"regaPoll":true,"regaInterval":"30","rpcPingTimeout":"60","rpcInitAddress":"127.0.0.1","rpcServerHost":"127.0.0.1","rpcBinPort":"2047","rpcXmlPort":"2048"}]

So sieht ein „alter“ Fensterkontakt aus:

image

Und so der per nodeRed eingebundene IP-Fensterkontakt:

image

Ist bestimmt ganz einfach, aber ich bin noch ziemlich neu in den NodeRed Sachen…

Was fehlt dir denn bei deinem Sensor jetzt ?
Brauchst du den Manipulationsalarm und die Batterie noch ?

ja genau.

Mir fehlt eine Idee, wie ich Manipulationsalarm und Batterie integrieren kann.

Und damit verbunden die Frage, wie die Function mit mehreren Eingängen (also Zustand, Alarm und Batterie) umgehen kann damit das dann an die Attribute im homee-Node gegeben werden kann

Lies doch mal das Device von homee aus.
Dazu an des api Node ein get:nodes/123senden. Die 123 ist deine node ID dir du in der Browserzeile findest.

Nun hast du alle Werte die du anlegen musst um das Device 1:1 zu kopieren.

Wie sieht denn die Nachricht von deinem Homematic aus ?
Sonst kann ich dir da mit dem Aufbau der Funktion nicht helfen.

Danke für den Tip. Ich habe das mal für einen „alten“ Fensterkontakt gemacht. Da kommt dann ein Array mit vier Objekten raus:

{
  "id": 9,
  "name": "Fenster%20Bad",
  "profile": 2000,
  "image": "default",
  "favorite": 0,
  "order": 6,
  "protocol": 13,
  "routing": 0,
  "state": 1,
  "state_changed": 1673983692,
  "added": 1669584482,
  "history": 1,
  "cube_type": 8,
  "note": "",
  "services": 5,
  "phonetic_name": "",
  "owner": 2,
  "security": 0,
  "attributes": [
    {
      "id": 52,
      "node_id": 9,
      "instance": 0,
      "minimum": 0,
      "maximum": 1,
      "current_value": 1,
      "target_value": 1,
      "last_value": 0,
      "unit": "",
      "step_value": 1,
      "editable": 1,
      "type": 385,
      "state": 1,
      "last_changed": 1669584482,
      "changed_by": 1,
      "changed_by_id": 0,
      "based_on": 1,
      "data": "",
      "name": ""
    },
    {
      "id": 53,
      "node_id": 9,
      "instance": 0,
      "minimum": 0,
      "maximum": 1,
      "current_value": 0,
      "target_value": 0,
      "last_value": 0,
      "unit": "",
      "step_value": 1,
      "editable": 0,
      "type": 30,
      "state": 1,
      "last_changed": 1673983652,
      "changed_by": 1,
      "changed_by_id": 0,
      "based_on": 1,
      "data": "",
      "name": "",
      "options": {
        "history": {
          "day": 182,
          "week": 26,
          "month": 6,
          "stepped": true
        }
      }
    },
    {
      "id": 54,
      "node_id": 9,
      "instance": 0,
      "minimum": 0,
      "maximum": 1,
      "current_value": 0,
      "target_value": 0,
      "last_value": 0,
      "unit": "",
      "step_value": 1,
      "editable": 0,
      "type": 69,
      "state": 1,
      "last_changed": 1674195758,
      "changed_by": 1,
      "changed_by_id": 0,
      "based_on": 1,
      "data": "",
      "name": "",
      "options": {
        "history": {
          "day": 182,
          "week": 26,
          "month": 6,
          "stepped": true
        }
      }
    },
    {
      "id": 55,
      "node_id": 9,
      "instance": 0,
      "minimum": 0,
      "maximum": 1,
      "current_value": 0,
      "target_value": 0,
      "last_value": 1,
      "unit": "",
      "step_value": 1,
      "editable": 0,
      "type": 14,
      "state": 1,
      "last_changed": 1674195758,
      "changed_by": 1,
      "changed_by_id": 0,
      "based_on": 1,
      "data": "",
      "name": "",
      "options": {
        "history": {
          "day": 35,
          "week": 5,
          "month": 1,
          "stepped": true
        }
      }

> Blockzitat

}
  ]
}

Wie bekomme ich denn jetzt raus, was davon der Batteriealarm und was der Manipulationsalarm ist?

Auf der Homematicseite sieht es folgender maßen aus (das sind dann jeweilige eigene nodes, da ich dort m.E. nicht gleichzeitig mehrere Kanäle auf einmal abfragen kann:

Message für Zustand:

localhost/HmIP-RF/0000DA49A1862C:1/STATE : msg.payload : number
1

Message für Batteriealarm:

localhost/HmIP-RF/0000DA49A1862C:0/LOW_BAT : msg.payload : boolean
false

Hier hast du dein Fenstersensor als vhih Device zum Import in NodeRed, ist eine 1:1 Kopie deines Gerätes.

[{"id":"dcec003f.b2ecd","type":"homeeDevice","z":"c91bfe79.d30c68","virtual-homee":"","name":"","nodeId":"","showNodeId":true,"profile":18,"icon":"default","attributes":[],"statusTemplate":"","x":450,"y":300,"wires":[[]]}]

Vielen Dank für Deine Unterstützung.

Etwas peinlich, aber was genau mache ich da jetzt damit?
Attribute hat dieses vhihv Device ja nicht, wie bekomme ich denn da jetzt meine HomeMatic nodes mit verbunden? Da benötige ich doch noch eine entsprechende Funktion, oder?

Du kopierst das ganze und importierst es in Node Red, dann wird dir das Device erstellt.

Klar musst du an deine HM nodes noch eine Funktion hängen so wie du sie oben schon eingestellt hast.

ich glaube ich bin zu doof zu… :wink:

Ich nehme jetzt den HomeMatic Node für Batteriealarm. In meiner Funktion muss ich ja die entsprechende ID des Attributs angeben - welches Attribut muss ich denn dafür nehmen?
Für jedes HomematicNode muss ich dann eine eigene Funktion (mit der entsprechenden Attribut-ID) nutzen, korrekt? In eine Funktion bekomme ich das nicht, oder?

Und: Worin unterscheidet sich denn Dein vhih-Device von dem, was ich angelegt habe?
Sorry für die blöden fragen, aber ich will das ganze ja verstehen :slight_smile:

Hallo zusammen,

erstmal @Micha: Vielen vielen Dank für die enorme Unterstützung!!!

Falls es nochmal jemanden Interessiert, hier der fertige Flow für die Einbindung von HomematicIP Fensterkontakten (der Channel muss natürlich nach den eigenen Geräten angepasst werden):

[{"id":"ac5b0bdc.259958","type":"ccu-value","z":"87d8c743.9728f8","name":"Fenster Schlafzimmer","iface":"HmIP-RF","channel":"0000DA49A1862C:1 Fenster Schlafzimmer","datapoint":"STATE","mode":"","start":true,"change":false,"cache":false,"queue":false,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":false,"ccuConfig":"38263145.35ea0e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":480,"y":400,"wires":[["f75e457d.803fc"]]},{"id":"949fb82.1333bc8","type":"ccu-value","z":"87d8c743.9728f8","name":"Fenster Schlafzimmer Batterie","iface":"HmIP-RF","channel":"0000DA49A1862C:0 Fenster Schlafzimmer:0","datapoint":"LOW_BAT","mode":"","start":true,"change":false,"cache":false,"queue":false,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":false,"ccuConfig":"38263145.35ea0e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":510,"y":460,"wires":[["f75e457d.803fc"]]},{"id":"240f633d.bd812c","type":"homeeDevice","z":"87d8c743.9728f8","virtual-homee":"","name":"Fenster Schlafzimmer","nodeId":"400","showNodeId":true,"profile":"2000","icon":"default","attributes":[{"instance":0,"minimum":0,"maximum":1,"current_value":0,"target_value":0,"last_value":1,"unit":"","step_value":1,"editable":0,"type":14,"state":1,"last_changed":1669584482,"changed_by":1,"changed_by_id":0,"based_on":1,"data":"","name":"","options":{"history":{"day":35,"week":5,"month":1,"stepped":true}},"id":"401","node_id":"400"},{"instance":0,"minimum":0,"maximum":1,"current_value":0,"target_value":0,"last_value":0,"unit":"","step_value":1,"editable":0,"type":69,"state":1,"last_changed":1669584482,"changed_by":1,"changed_by_id":0,"based_on":1,"data":"","name":"","options":{"history":{"day":182,"week":26,"month":6,"stepped":true}},"id":"402","node_id":"400"},{"instance":0,"minimum":0,"maximum":1,"current_value":0,"target_value":0,"last_value":0,"unit":"","step_value":1,"editable":0,"type":30,"state":1,"last_changed":1669584482,"changed_by":1,"changed_by_id":0,"based_on":1,"data":"","name":"","options":{"history":{"day":182,"week":26,"month":6,"stepped":true}},"id":"403","node_id":"400"}],"statusTemplate":"","x":1120,"y":460,"wires":[[]]},{"id":"310d2e35.f8ff62","type":"ccu-value","z":"87d8c743.9728f8","name":"Fenster Schlafzimmer Manipulationsalarm","iface":"HmIP-RF","channel":"0000DA49A1862C:0 Fenster Schlafzimmer:0","datapoint":"SABOTAGE","mode":"","start":true,"change":false,"cache":false,"queue":false,"on":0,"onType":"undefined","ramp":0,"rampType":"undefined","working":false,"ccuConfig":"38263145.35ea0e","topic":"${CCU}/${Interface}/${channel}/${datapoint}","x":550,"y":520,"wires":[["f75e457d.803fc"]]},{"id":"f75e457d.803fc","type":"function","z":"87d8c743.9728f8","name":"","func":"switch (msg.topic) {\n    case \"localhost/HmIP-RF/0000DA49A1862C:1/STATE\":\n\n        data = msg.payload;\n        msg.payload = {\n            attributes: [{\n                id: 401,\n                value: data\n            }, ]\n        };\n        break;\n\n    case \"localhost/HmIP-RF/0000DA49A1862C:0/LOW_BAT\":\n        if (msg.payload == true) {\n\n            data = 1;\n        } else {\n\n            data = 0;\n        }\n\n        msg.payload = {\n            attributes: [{\n                id: 402,\n                value: data\n            }, ]\n        };\n        break;\n\n    case \"localhost/HmIP-RF/0000DA49A1862C:0/SABOTAGE\":\n        if (msg.payload == true) {\n\n            data = 1;\n        } else {\n\n            data = 0;\n        }\n\n        msg.payload = {\n            attributes: [{\n                id: 403,\n                value: data\n            }, ]\n        };\n        break;\n\n\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":880,"y":400,"wires":[["240f633d.bd812c","5aed140b.ff2dd4"]]},{"id":"5aed140b.ff2dd4","type":"debug","z":"87d8c743.9728f8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1040,"y":560,"wires":[]},{"id":"38263145.35ea0e","type":"ccu-connection","name":"localhost","host":"localhost","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":false,"cuxdEnabled":false,"regaPoll":true,"regaInterval":"30","rpcPingTimeout":"60","rpcInitAddress":"127.0.0.1","rpcServerHost":"127.0.0.1","rpcBinPort":"2047","rpcXmlPort":"2048"}]