Ankündigung
Einklappen
Keine Ankündigung bisher.
ESP8266 KNX mit ETS
Einklappen
X
-
Inzwischen habe ich mal Api-Dokumentation erzeugen lassen:
https://knx.readthedocs.io/en/latest/
Es fehlt noch Beschreibungstext, aber hilft denke ich schon.
Kommentar
-
Auch von mir Danke.
Ich werde erstmal testen, ob ich das einfach Demo-Projekt so weit hin bekomme, dass ich einerseits die Parameter überlagere und andererseits die Temperatur (parametrisierbar) über verschiedene DPT's verschicken kann (aber gleiches KO). Wenn das klappt, hätte ich alle Voraussetzungen, um weiter zu machen...
Werde weiter über den Fortschritt berichten.
Gruß, Waldemar
Kommentar
-
Hi Thomas,
ich musste für ein erfolgreiches compilieren auf dem RasPi in AddressTableObject.h folgendes hinzufügen:
Code:void [URL="https://knx.readthedocs.io/en/latest/class_address_table_object.html#ab5c9b4470e8e17ee17a7da617706df10"]readProperty[/URL]([URL="https://knx.readthedocs.io/en/latest/property__types_8h.html#a4d213d3f61040d0dc0ba90578e1cbe92"]PropertyID[/URL] id, uint32_t start, uint32_t[COLOR=#00FF00]&[/COLOR] count, uint8_t *data);
Gruß, Waldemar
Kommentar
-
Mag Gyver Danke. Hab ich gemergt.
henfri Kommen bei dir schon nach dem flashen die Daten vom BME? Die sollten doch eigentlich erst nach der Konfiguration durch ETS kommen. Kannst du mal "Erase Flash" "All Flash Contents" einstellen? Dann sollte der ESP wieder sauber sein. Ich verstehe auch nicht, warum die Zeilenumbrüche im Debug output kaputt sind.
Ich muss das nochmal auf realer Hardware nachtesten.
Kommentar
-
Hallo,
ja, das ist/war komisch.
Tatsächlich war Wifi auch konfiguriert, ohne dass ich den WiFi Manager auführen musste. Erase-Flash hat jetzt dazu geführt, dass ich den Wifi Manager zu Gesicht bekam. Jetzt sehe ich:
Code:*WM: *WM: AutoConnect *WM: Connecting as wifi client... *WM: Already connected. Bailing out. *WM: IP Address: *WM: 192.168.177.21 setup multicast addr: 224.0.23.12 port: 3671 ip: 192.168.177.21 result 1 Timestamp [ms], raw temperature [°C], pressure [hPa], raw relative humidity [%], gas [Ohm], IAQ, IAQ accuracy, temperature [°C], relative humidity [%], CO2 *WM: freeing allocated params!
Code:knx.ledPin(LED_PROG); knx.buttonPin(BUTTONPIN);
Tatsächlich leuchtet die LED am GPIO16
NodeMCU-ESP8266-LEDs.jpg
Wenn ich den Flash-Taster kurz betätige.
Nur am seriellen Monitor tut sich nix...
Die ETS schafft es auch nicht, die PA zu setzen ("Programmierknopf drücken"). Hast du eine Idee?
Gruß,
Hendrik
- Likes 1
Kommentar
-
Wenn die Led auf den Button reagiert brauchst du die Pins nicht zu setzen. Wenn ETS den Esp nicht findet verschluckt irgendwas die Multicast-Pakete. Hast du Routing als Interface in ETS gewählt? Sind der Rechner mit ETS und der ESP im gleichen Netz? (Manche Switche leiten Multicast nicht standartmäßig weiter.) Hast du nach der Konfiguration vom WLAN des ESP den mal neu gestartet? (Das muss man nach dem Flashen ja eh machen, damit er später nicht hängt)
Kommentar
-
Nein das ist mit dem ganzen WPS-Kram rausgeflogen. Bei Bedarf kannst du hier: https://github.com/thelsing/knx/blob...facade.cpp#L47 eine Meldung hinzufügen.
Kommentar
-
Sorry, ich fühle mich doof, das zu fragen, aber ich bei Python wüsste ich mir zu helfen...
Das Schreiben auf die serielle Konsole ist scheinbar an der Stelle nicht vorgesehen.
Ich versuche:
Code:void KnxFacade::progMode(bool value) { _bau.deviceObject().progMode(value); if (value) { println("ProgMode On") } else { println("ProgMode Off") } }
error: 'println' was not declared in this scope
In python würde ich ein import serial und dann ein serial.println benötigen...
Was muss ich hier machen? Ich darf ja keinen neuen seriellen Port öffnen.
Gruß,
Hendrik
Kommentar
-
Hallo Hendrik,
habe dazu einen Pull Request auf GitHub erzeugt. Das Kannst du dir ja mal anschauen. Daran habe ich auch die Abfrage für das Byte vorgesehen.
Sobald Thomas das verifiziert und in seinen Code übernimmt. Du musst natürlich die Ausgabe am ESP den Debug port auf Serial stellen.
Gruß
René
Kommentar
-
Danke!
Es fehlte also nur das serial.
Aber warum funktioniert in
Code:void printHex(const char* suffix, const uint8_t *data, size_t length) { print(suffix); for (int i = 0; i < length; i++) { if (data[i] < 0x10) { print("0"); } print(data[i], HEX); print(" "); } println(); }
Gruß,
Hendrik
Kommentar
Kommentar