Enocean Simulation und Einbindung von Eltako Tipp Geräten

So jetzt hab ich es geschafft, wie bekomme ich jetzt das json Format an den Output damit ich ein EEP Gerät anlernen bzw. steuern kann?

Nimm das Inject Node und sende es als json an den output.
VG

Okay, sorry das ich so viel nachfragen muss, aber ich bin leider kein Node Red experte, ich habe jetzt versucht das json als string in den msg.payload per funtion Node zu schreiben und dann an den output zu übergeben, aber irgendwie klappt es nicht, denn wenn ich im Homee auf einlernen neues enocean Gerät gehe und innerhalb der 60 Sekunden dann den Inject betätige passiert nichts. Ich habe das Beispiel von hier ganz oben (Wetterstation einlernen) verwendet.

Danke für Eure Hilfe (hilft bestimmt anderen auch, hoffe ich)
Grüße Steffen

Korrektur, es funktioniert, ich konnte die Wetterstation anlernen, ich habe den msg.payload in ein json Node geschickt und diesen dann an den Output und siehe da es klappt, Ihr seid ganz große Klasse.

Juhu

Ich habe jetzt versucht von dieser Webseite (https://enocean-js.github.io/enocean-js/?eep=a5-11-05) die entsprechenden EEP’s anzulernen, bin aber bisher mit jedem den ich getestet habe gescheitert.

Habt ihr schon einen einfachen single input contact anlernen können?
Ich bräuchte diese Funktionalität für meine Xiaomi Fenstersensoren (einfach on bzw. off Status).

Oder habt Ihr schon eine Liste welche Geräte eingelernt werden können und welche nicht?

Grüße Steffen

Servus…

hier mal ein Flow zum Tür-/Fenstersensor:

Nachtrag (kleine Ergänzung auch für die Statussetzung:

[{"id":"9d70c0f2.24a57","type":"inject","z":"b622f0ef.efc6e8","name":"Türsensor CH4 ( CO)","topic":"","payload":"{\"meta\":{\"eep\":\"d5-00-01\",\"channel\":4,\"type\":\"teach-in\"},\"teach-in\":{\"type\":\"VLD\"},\"data\":{\"LRN\":0}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":290,"y":1500,"wires":[["f7414cd5.c5e62"]]},{"id":"f7414cd5.c5e62","type":"enocean-out","z":"b622f0ef.efc6e8","serialport":"36056171.b343b6","name":"","logOutput":true,"x":490,"y":1500,"wires":[["be8c75f9.772fe8"]]},{"id":"be8c75f9.772fe8","type":"debug","z":"b622f0ef.efc6e8","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":650,"y":1500,"wires":[]},{"id":"36056171.b343b6","type":"enocean-config-node","z":"","serialport":"/dev/ttyUSB0"}]

Durch Anpassen der Funktion kannst du z.B. Werte aus MQTT übernehmen und dann den offen/geschlossen Zustand an den simulierten Kontaktsensor übertragen.

1 „Gefällt mir“

@Micha hat sich die Mühe gemacht und die Flows (Anlernen/ Werte setzen) für ein paar Sensoren zusammengetragen:

Temperatursensor
Türsensor
Präsenzmelder
Bewegungsmelder
Wetterstation

[{"id":"766cb2d.18ea34c","type":"enocean-out","z":"b622f0ef.efc6e8","serialport":"36056171.b343b6","name":"","logOutput":true,"x":1010,"y":1220,"wires":[["efa1a786.531cf"]]},{"id":"86ad3a7c.cc1da","type":"inject","z":"b622f0ef.efc6e8","name":"Bewegungsmelder CH1","topic":"","payload":"{\"meta\":{\"eep\":\"a5-07-03\",\"channel\":1,\"type\":\"teach-in\"},\"teach-in\":{\"type\":\"4BS\"},\"data\":{\"LRN\":0}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":200,"y":1120,"wires":[["766cb2d.18ea34c"]]},{"id":"e5e541cd.b80608","type":"inject","z":"b622f0ef.efc6e8","name":"Bewegung setzen","topic":"","payload":"{\"meta\":{\"eep\":\"a5-07-03\",\"channel\":1,\"type\":\"data\"},\"data\":{\"PIRS\":1,\"ILL\":\"46.6\"}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":195.44440841674805,"y":1206.8888816833496,"wires":[["766cb2d.18ea34c"]]},{"id":"67146d07.b11284","type":"comment","z":"b622f0ef.efc6e8","name":"Wert setzen","info":"","x":177.44440841674805,"y":1166.4444370269775,"wires":[]},{"id":"693d776e.81f0b","type":"inject","z":"b622f0ef.efc6e8","name":"Bewegung zurücksetzen","topic":"","payload":"{\"meta\":{\"eep\":\"a5-07-03\",\"channel\":1,\"type\":\"data\"},\"data\":{\"PIRS\":0,\"ILL\":450}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":213.05552291870117,"y":1248.3333225250244,"wires":[["766cb2d.18ea34c"]]},{"id":"7d9896d5.4e9168","type":"inject","z":"b622f0ef.efc6e8","name":"Wetterstation CH2","topic":"","payload":"{\"meta\":{\"eep\":\"a5-13-01\",\"channel\":2,\"type\":\"teach-in\"},\"teach-in\":{\"type\":\"4BS\"},\"data\":{\"LRN\":0}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":190,"y":1080,"wires":[["766cb2d.18ea34c"]]},{"id":"8cbf3211.391d48","type":"inject","z":"b622f0ef.efc6e8","name":"Türsensor CH4 ( CO)","topic":"","payload":"{\"meta\":{\"eep\":\"d5-00-01\",\"channel\":4,\"type\":\"teach-in\"},\"teach-in\":{\"type\":\"VLD\"},\"data\":{\"LRN\":0}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":190,"y":1040,"wires":[["766cb2d.18ea34c"]]},{"id":"55165110.c6a0b8","type":"inject","z":"b622f0ef.efc6e8","name":"Temperatursensor CH5 funktioniert mit homee","topic":"","payload":"{\"meta\":{\"eep\":\"a5-04-03\",\"channel\":5,\"type\":\"teach-in\"},\"teach-in\":{\"type\":\"4BS\"},\"data\":{\"LRN\":1}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":270,"y":1000,"wires":[["766cb2d.18ea34c"]]},{"id":"a1f8d280.af247","type":"function","z":"b622f0ef.efc6e8","name":"Türsensor ","func":"var test = msg.payload;\nreturn {payload:{\n    \"meta\": {\n        \"eep\": \"d5-00-01\",\n        \"channel\": 4,\n        \"type\": \"data\"\n    },\n    \"data\": {\n   \"CO\":0\n    }\n}}\n","outputs":1,"noerr":0,"x":340,"y":1340,"wires":[["766cb2d.18ea34c"]]},{"id":"d496c4d7.7ccfc","type":"inject","z":"b622f0ef.efc6e8","name":"Werte senden","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":170,"y":1340,"wires":[["a1f8d280.af247"]]},{"id":"716cd4cf.b6b9fc","type":"inject","z":"b622f0ef.efc6e8","name":"Wetterstation werte setzen","topic":"","payload":"{\"meta\":{\"eep\":\"a5-13-01\",\"channel\":2,\"type\":\"data\",\"status\":1},\"data\":{\"DWS\":5,\"ID\":1,\"TMP\":5,\"WND\":10,\"RAN\":1}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":210,"y":1300,"wires":[["766cb2d.18ea34c"]]},{"id":"f0166cf8.455ac","type":"comment","z":"b622f0ef.efc6e8","name":"Anlernen der Sensoren","info":"","x":215.44440841674805,"y":962.7777671813965,"wires":[]},{"id":"ce4994f6.7953b","type":"inject","z":"b622f0ef.efc6e8","name":"Präsenzmelder CH6","topic":"","payload":"{\"meta\":{\"eep\":\"a5-07-01\",\"channel\":6,\"type\":\"teach-in\"},\"teach-in\":{\"type\":\"4BS\"},\"data\":{\"LRN\":1}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":710,"y":980,"wires":[["766cb2d.18ea34c"]]},{"id":"8d97c9e.fc7fc38","type":"inject","z":"b622f0ef.efc6e8","name":"Anwesend","topic":"","payload":"{\"meta\":{\"eep\":\"a5-07-01\",\"channel\":6,\"type\":\"data\"},\"data\":{\"PIRS\":250}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":980,"y":1020,"wires":[["766cb2d.18ea34c"]]},{"id":"efa1a786.531cf","type":"debug","z":"b622f0ef.efc6e8","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1150,"y":1220,"wires":[]},{"id":"b5708020.9bfd8","type":"inject","z":"b622f0ef.efc6e8","name":"Abwesend","topic":"","payload":"{\"meta\":{\"eep\":\"a5-07-01\",\"channel\":6,\"type\":\"data\"},\"data\":{\"PIRS\":0}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":980,"y":980,"wires":[["766cb2d.18ea34c"]]},{"id":"27702428.a10c2c","type":"inject","z":"b622f0ef.efc6e8","name":"Präsenzmelder CH7","topic":"","payload":"{\"meta\":{\"eep\":\"a5-07-01\",\"channel\":7,\"type\":\"teach-in\"},\"teach-in\":{\"type\":\"4BS\"},\"data\":{\"LRN\":1}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":710,"y":1040,"wires":[["766cb2d.18ea34c"]]},{"id":"36056171.b343b6","type":"enocean-config-node","z":"","serialport":"/dev/ttyUSB0"}]
1 „Gefällt mir“

hier noch ein Flow zum importieren mit Sensoren und Aktoren .
Achtung das ist keine PDF Datei sondern eine umbenannte json Datei.
diese kann direkt in Node Red importiert werden
Beispiele2.pdf (8,6 KB)

Sag mal wird dafür der Repeat NodeRED Node gebraucht? Weil bei mir der msg resend block undefined ist.

Das Node musst du noch installieren
msg-resend

:grinning::+1:

So Liebe Gemeinde,
am Wochenende war ich wieder fleißig und
habe für den Rollershutter einen Flow mit Statusanzeige und Rückgabe an homee zusammengebaut.

Die Flowdaten dazu stelle ich nachher rein.

Das erlaubt es jetzt einen Rollershutter zu simulieren und diesen in homee einzubinden.
Wenn dieser sich nun in HomeKit befindet kann man dort eine Automation erstellen und die VELUX Rollos ansteuern.
Also in homee das Rollo hochfahren und schon geht auch der VELUX Rollladen hoch.
Auch die Statusmeldungen wenn es aus HomeKit geöffnet wird das Rollo stimmt dann.
Ein Schöne Sache ohne viel basteln an irgendwelchen Fernbedienungen oder Relais.
Bedingung hierfür ist das Velux Active Paket.
VG Micha

15 „Gefällt mir“

Hallo,
danke erst mal für die von euch erarbeitete Lösung! So wie das aktuell für mich aussieht, ist das die Lösung meines Problems, der fehlenden virtuellen Geräte!
Der Stick ist heute bei mir angekommen und ich hab auch gleich einen Sensor eingelernt bekommen. Leider krieg ich es nicht so recht hin, dass die Temperaturwerte von meinen Homematic IP Sensoren an den Homee geschickt werden. Bzw. fehlt mir so komplett die Idee!
Kann mir da bitte kurz jemand unter die Arme greifen?
So sieht es aktuell aus:

Danke schon mal

Der Fehler deutet auf eine Doppel Belegung des Ports hin. Kontrolliere mal in der Konfiguration den Port.
VG Micha

Das ist gar nicht mein Hauptproblem! Bei der Auswahl des Ports wird mir der gleiche Port vier Mal angezeigt. Funzt aber trotzdem, wenn ich die Werte von Hand mit einem Inject setzte.

Mein Problem ist, dass ich blutiger Anfänger in Node Red bin und keinen blassen Schimmer habe, wie ich die Temperatur und Luftfeuchtigkeit so aufbereitete, dass ich sie an den Homee schicken kann.

Was brauch ich, damit sich bei jeder Temperatur- oder Luftfeuchtigkeitsänderung auch der Wert im Homee ändert?

Edit: Falls es einfacher ist, würde es mir auch reichen, wenn sich die Werte einmal pro Minute aktualisieren. Aber wie schicke ich ein JSON mit dem entsprechenden Inhalt überhaupt an den Enocean Output?

Hier ein Function-Node der so bei mir läuft.

[{"id":"780e512.7dfb4b","type":"function","z":"465fa3e6.cece8c","name":"Sonnenstrahlung","func":"var ill = msg.payload;\nvar message = {\"meta\":{\"eep\":\"a5-06-03\",\"channel\":7,\"type\":\"data\"},\"data\":{\"ILL\":ill}};\nmsg.payload = message;\nreturn msg;","outputs":1,"noerr":0,"x":950,"y":80,"wires":[["860e0555.a3a508"]]}]

Der Wert kommt über den Eingang und wird als Variable in die Message übernommen. Du musst für deinen Node die eep, den channel und data anpassen. Der Ausgang geht dann direkt an den Enocean-Output.

1 „Gefällt mir“

wenn du dich ein bisschen an Node red gewohnt hast, kannst du überlegen, ob du den letzten Wert sofort an den simulierten Sensor schickst oder einfach den Wert in einer globalen Variablen speicherst und dort den aktuellen Wert alle x Minuten „abholst“.

Ich hab zB meine Fenstergriffe dort abgelegt.
Wenn ich das Haus verlasse, startet ein homeegram einen node red prüfauftrag, der bei geöffneten Fenstern/Türen eine telegram Nachricht in meinen Chat schreibt.

Die homee Push Nachrichten gehören mE verboten. Schön is anders. :slight_smile:

Meine im Internet ausgelesenen wetterdaten Pumpe ich auch in globale Variablen. Kann ich überall benutzen.

1 „Gefällt mir“

Danke für eure Hilfe! Es funktioniert!

6 „Gefällt mir“

Immer gerne!

Hallo @xzerogx,
könntest du kurz erklären, wie du das gemacht hast ? Also die Werte in globale Variablen anlegen und von dort abholen.

Würde sowas auch gegenüber einem Push vorziehen, um den Traffic zu reduzieren. Überlege gerade, eine Wetterstation (Rainyman) zu simulieren.

@langepil
Welche Sensoren benutzt du?

Moin,

du kannst wahrscheinlich alles toll mit constructor und prototypes basteln. ich habe aber folgende bauern-lösung (da ich von dem ganzen mist keine ahnung habe) gewählt:

Beispielhaft einen leeren Raum erzeugt:

var neuerRaum = {
                soll: 0,
                temperatur: 0,
                feuchte: 0,
                anwesenheit: undefined
 }

mit global.get / set kannst Du Werte holen oder setzen. Nachfolgend “hole” ich die globale variable “wohnung” und wenn es die nicht gibt (-> || ) erzeuge ich eine Wohnung mit Räumen (die noch keine Werte enthalten).

var wohnung = global.get('wohnung') || {

                kueche: neuerRaum,
                wohnzimmer: neuerRaum,
                bad: neuerRaum,
                abstellraum: neuerRaum,
                schlafzimmer: neuerRaum,
                balkon: neuerRaum
}

Werte setzen kannst Du dann z.B. so:

wohnung['wohnzimmer'].soll =  "Wert aus welcher quelle auch immer"
wohnung['wohnzimmer'].temperatur = "Wert aus welcher quelle auch immer"

Um die dann wieder zu übergeben musst du sagen welche globale variable du setzen willst und womit du sie belegen möchtest:

global.set('wohnung', wohnung)

was zum nachlesen:
http://www.steves-internet-guide.com/node-red-variables/

1 „Gefällt mir“