Hallo allerseits,
ich habe ein weiteren KNX-Stack für ESP8266 und SAMD21 entwickelt. Im Unterschied zu anderen Lösungen lässt sich der ESP damit per ETS konfigurieren. Programmierknopf, Programmierled und WPS sind integriert.
Arduino-Lib:
https://github.com/thelsing/knx
Demo:
https://github.com/thelsing/knx/tree/master/examples/knx-demo
Die Demo kann normal über Beispiele->knx-esp in der Arduino-IDE ausgewählt werden.
Nach dem flashen muss der ESP manuell resettet werden da sonst der Neustart beim programmieren per ETS nicht funktioniert.
Ich nutze ein NodeMCU-Board, da es dort schon ein Led und einen Taster (Flash-Taster) gibt. Diese benutze ich als Programmiertaste und -Led. Man kann natürlich auch ein anderes ESP-Board nehmen. Im Beispiel ist die Led an GPIO16 und der Taster an GPIO0 gegen GND. Andere Pins lassen sich über knx.ledPin() bzw. knx.buttonPin() nutzen.
Das Programm hat mehrere Zustände die durch die Led signalisiert werde und durch einen Button geändert werden können:
Start -> noWifi
NoWifi:
- Led ist an
- automatischer übergang nach Running wenn Wifi schon konfiguriert ist
- durch Button wird zum Status WPS gewechselt
WPS:
- Led blinkt
- Wifi wird versucht über WPS zu konfigurieren
- bei Erfolg: Übergang zu Running
- bei Misserfolg: Übergang zu NoWifi
Running:
-Led aus
- kurzer Buttondruck -> Progammiermodus
- langer Buttondruck -> WPS
Programmiermodus:
- Led blinkt
- wie bei KNX-Geräten üblich
Die Parameter werden bei der Demo ignoriert, aber auf der Seriellen Konsole ausgegeben.
Die Demo erzeugt Zufallswerte und sendet sie an Objekt 1. Objekt 2 und 3 werden gesendet wenn der aktuelle Wert ein neues Minimum bzw. Maximum ist. Auf Objekt 4 kann man Minimum und Maximum reseten.
Kleines Programm um knxprods zu erstellen:
https://github.com/thelsing/CreateKnxProd
Screenshots im Anhang. Die Geräte befinden sich im Katalog unter KNX-Association
Hier kann man Parametertypen, Parameter und Kommunikationsobjekte anlegen. Die Parameter stehen in ETS aber einfach nur untereinander.
Gespeichert wird in einer XML-Datei. Zur Erstellung der knxprod-Datei sind DLLs von ETS4 nötig. Dazu muss der Pfad dahin in der CreateKnxProd.exe.config eingetragen werden. Das Manufacturer Tool bringt die nötigen Dateien auch mit (C:\Program Files (x86)\KNX Manufacturer Tool 5.6\Extensions\Application\Ets4)
Binary:
https://github.com/thelsing/CreateKn...leases/tag/1.0
xml-Datei für die Demo:
https://github.com/thelsing/knx/blob/master/examples/knx-demo/knx-demo-tp.xml
https://github.com/thelsing/knx/blob/master/examples/knx-demo/knx-demo-ip.xml
erstellte knxprod:
https://github.com/thelsing/knx/blob/master/examples/knx-demo/knx-demo-tp.knxprod
https://github.com/thelsing/knx/blob/master/examples/knx-demo/knx-demo-ip.knxprod
Das Ganze ist eher als Proof-of-Concept zu sehen und hat daher den "Works for me" Status.
Viel Spaß beim probieren.
Änderungen:
10.4.2018
- platformunabhängigen Code in https://github.com/thelsing/knx verschoben
- Behandlung der verschiedenen Zustände, WPS usw. von der Demo zur knx-esp verschoben
- demo zu knx-esp/examples verschoben
7.11.2018
- Versionen für SAMD21, ESP8266 und linux in ein repository zusammengefasst
ich habe ein weiteren KNX-Stack für ESP8266 und SAMD21 entwickelt. Im Unterschied zu anderen Lösungen lässt sich der ESP damit per ETS konfigurieren. Programmierknopf, Programmierled und WPS sind integriert.
Arduino-Lib:
https://github.com/thelsing/knx
Demo:
https://github.com/thelsing/knx/tree/master/examples/knx-demo
Die Demo kann normal über Beispiele->knx-esp in der Arduino-IDE ausgewählt werden.
Nach dem flashen muss der ESP manuell resettet werden da sonst der Neustart beim programmieren per ETS nicht funktioniert.
Ich nutze ein NodeMCU-Board, da es dort schon ein Led und einen Taster (Flash-Taster) gibt. Diese benutze ich als Programmiertaste und -Led. Man kann natürlich auch ein anderes ESP-Board nehmen. Im Beispiel ist die Led an GPIO16 und der Taster an GPIO0 gegen GND. Andere Pins lassen sich über knx.ledPin() bzw. knx.buttonPin() nutzen.
Das Programm hat mehrere Zustände die durch die Led signalisiert werde und durch einen Button geändert werden können:
Start -> noWifi
NoWifi:
- Led ist an
- automatischer übergang nach Running wenn Wifi schon konfiguriert ist
- durch Button wird zum Status WPS gewechselt
WPS:
- Led blinkt
- Wifi wird versucht über WPS zu konfigurieren
- bei Erfolg: Übergang zu Running
- bei Misserfolg: Übergang zu NoWifi
Running:
-Led aus
- kurzer Buttondruck -> Progammiermodus
- langer Buttondruck -> WPS
Programmiermodus:
- Led blinkt
- wie bei KNX-Geräten üblich
Die Parameter werden bei der Demo ignoriert, aber auf der Seriellen Konsole ausgegeben.
Die Demo erzeugt Zufallswerte und sendet sie an Objekt 1. Objekt 2 und 3 werden gesendet wenn der aktuelle Wert ein neues Minimum bzw. Maximum ist. Auf Objekt 4 kann man Minimum und Maximum reseten.
Kleines Programm um knxprods zu erstellen:
https://github.com/thelsing/CreateKnxProd
Screenshots im Anhang. Die Geräte befinden sich im Katalog unter KNX-Association
Hier kann man Parametertypen, Parameter und Kommunikationsobjekte anlegen. Die Parameter stehen in ETS aber einfach nur untereinander.
Gespeichert wird in einer XML-Datei. Zur Erstellung der knxprod-Datei sind DLLs von ETS4 nötig. Dazu muss der Pfad dahin in der CreateKnxProd.exe.config eingetragen werden. Das Manufacturer Tool bringt die nötigen Dateien auch mit (C:\Program Files (x86)\KNX Manufacturer Tool 5.6\Extensions\Application\Ets4)
Binary:
https://github.com/thelsing/CreateKn...leases/tag/1.0
xml-Datei für die Demo:
https://github.com/thelsing/knx/blob/master/examples/knx-demo/knx-demo-tp.xml
https://github.com/thelsing/knx/blob/master/examples/knx-demo/knx-demo-ip.xml
erstellte knxprod:
https://github.com/thelsing/knx/blob/master/examples/knx-demo/knx-demo-tp.knxprod
https://github.com/thelsing/knx/blob/master/examples/knx-demo/knx-demo-ip.knxprod
Das Ganze ist eher als Proof-of-Concept zu sehen und hat daher den "Works for me" Status.
Viel Spaß beim probieren.
Änderungen:
10.4.2018
- platformunabhängigen Code in https://github.com/thelsing/knx verschoben
- Behandlung der verschiedenen Zustände, WPS usw. von der Demo zur knx-esp verschoben
- demo zu knx-esp/examples verschoben
7.11.2018
- Versionen für SAMD21, ESP8266 und linux in ein repository zusammengefasst
Kommentar