WS2812 LEDs in HomeKit einbinden?



  • Klappt es dann mit dem Schalter? 🤔
    Bleibt er an?

    Wäre natürlich geil weil dann… 😈 Homekit Lampe incoming 🤤



  • @cooper
    Prinzipiell klappt es dann, aber wackelig ist es immer noch. Ab und zu startet das Board neu und dann muss ich den Schalter wieder neu in HK einbinden. Auch wenn er mal stromlos war, wird er nicht wieder gefunden. Wenn er aber drin ist, kann auch ein Relais an D0 geschaltet werden.



  • @HaSch sagte in WS2812 LEDs in HomeKit einbinden?:

    @cooper
    Prinzipiell klappt es dann, aber wackelig ist es immer noch. Ab und zu startet das Board neu und dann muss ich den Schalter wieder neu in HK einbinden. Auch wenn er mal stromlos war, wird er nicht wieder gefunden. Wenn er aber drin ist, kann auch ein Relais an D0 geschaltet werden.

    Das ist aber kein Problem, das wegen der LED-Geschichte auftaucht, das hat ein Board nur mit Relais (an D8) auch.



  • homekit_storage_reset();
    

    Kommentier die Zeile mal aus. Aus deinem setup() dann musst du nicht dauern neu pairen.



  • @cooper sagte in WS2812 LEDs in HomeKit einbinden?:

    homekit_storage_reset();

    Geht trotzdem nicht. Ich kann einige Male schalten, dann wird das Board in HK wieder nicht gefunden.

    Ab und zu startet das Board ohne erkennbaren Grund auch neu. Den Grund habe ich noch nicht gefunden, Brownout?



  • Hm. Vielleicht braucht beides zusammen zu viel Ressourcen. Ich kann dir da leider nicht mehr weiterhelfen, hatte ja das selbe Problem - bin mit meinem Latein am Ende. 🙉

    Aber ich denke demnächst werde ich mich nochmal damit beschäftigen. Vielleicht nicht FastLED, aber irgendwas eigenes, das dann hoffentlich auch mit Homekit läuft.

    Würde mich trotzdem freuen, wenn du hier weiterhin dein Werdegang teilst, ich verfolge das mit großem Interesse. 🤩



  • @cooper
    Ich habe mir gerade mal den Output vom Exception Decoder des “unmotivierten” Neustarts angesehen aber der sagt mir nicht viel. Vielleicht kannst du ja etwas damit anfangen:

    Decoding stack results
    0x401004a8: _write_r(_reent*, int, char*, int) at /Users/hasch/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.3/cores/esp8266/libc_replacements.cpp line 90
    0x4023ac6d: __sfputs_r at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf.c line 433
    0x40236508: __swrite at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/stdio.c line 105
    0x40235ab1: _printf_i at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf_i.c line 194
    0x4023bb45: __sflush_r at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/fflush.c line 226
    0x4023bbd5: _fflush_r at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/fflush.c line 282
    0x4023b7ff: __swbuf_r at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/wbuf.c line 82
    0x4023ac07: __sfputc_r at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf.c line 404
    0x4023ac6d: __sfputs_r at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf.c line 433
    0x4021d1b9: ClientContext::_write_from_source(DataSource*) at /Users/hasch/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.3/libraries/ESP8266WiFi/src/include/ClientContext.h line 472
    0x4023adf4: _vfprintf_r at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf.c line 531
    0x40100b27: free(void*) at /Users/hasch/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.3/cores/esp8266/umm_malloc/umm_malloc.cpp line 398
    0x4021f886: send_tlv_response(_client_context_t*, tlv_values_t*) at /Users/hasch/Documents/Arduino/libraries/HomeKit-ESP8266/src/arduino_homekit_server.cpp line 793
    0x4023b692: vprintf at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/vprintf.c line 40
    0x4010089f: umm_free_core(void*) at /Users/hasch/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.3/cores/esp8266/umm_malloc/umm_malloc.cpp line 351
    0x40237984: printf_P at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/sys/xtensa/stdio_pgmspace.c line 15
    0x4022021f: homekit_server_on_pair_verify(_client_context_t*, unsigned char const*, unsigned int) at /Users/hasch/Documents/Arduino/libraries/HomeKit-ESP8266/src/arduino_homekit_server.cpp line 1779
    0x40220229: homekit_server_on_pair_verify(_client_context_t*, unsigned char const*, unsigned int) at /Users/hasch/Documents/Arduino/libraries/HomeKit-ESP8266/src/arduino_homekit_server.cpp line 1784
    0x40100b5c: malloc(size_t) at /Users/hasch/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.3/cores/esp8266/umm_malloc/umm_malloc.cpp line 552
    0x40100ba5: realloc(void*, size_t) at /Users/hasch/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.3/cores/esp8266/umm_malloc/umm_malloc.cpp line 586
    0x40222170: homekit_server_on_message_complete(http_parser*) at /Users/hasch/Documents/Arduino/libraries/HomeKit-ESP8266/src/arduino_homekit_server.cpp line 2796
    0x40204df8: http_parser_execute at /Users/hasch/Documents/Arduino/libraries/HomeKit-ESP8266/src/http_parser.c line 1928
    0x4022104c: homekit_server_accept_client(homekit_server_t*) at /Users/hasch/Documents/Arduino/libraries/HomeKit-ESP8266/src/arduino_homekit_server.cpp line 3016
    0x40220f21: homekit_client_process(_client_context_t*) at /Users/hasch/Documents/Arduino/libraries/HomeKit-ESP8266/src/arduino_homekit_server.cpp line 2938
    0x402211b2: homekit_server_process(homekit_server_t*) at /Users/hasch/Documents/Arduino/libraries/HomeKit-ESP8266/src/arduino_homekit_server.cpp line 3120
    0x402224e1: arduino_homekit_loop() at /Users/hasch/Documents/Arduino/libraries/HomeKit-ESP8266/src/arduino_homekit_server.cpp line 3596
    0x40217102: my_homekit_loop() at /Users/hasch/Documents/Arduino/New_IKEAHack_20200824_HK/New_IKEAHack_20200824_HK.ino line 89
    0x4021b871: loop() at /Users/hasch/Documents/Arduino/New_IKEAHack_20200824_HK/New_IKEAHack_20200824_HK.ino line 1470
    0x40224834: loop_wrapper() at /Users/hasch/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.3/cores/esp8266/core_esp8266_main.cpp line 197
    


  • Leider sagt mir das nichts. Aber ich vermute dass die beiden loops() dafür verantwortlich sein können. Evtl. ist auch die Leistung vom ESP8266 für beides parallel nicht ausreichend.

    Vielleicht kannst du deinen aktuellen Code mal hier veröffentlichen, dann kann @Fl0ri4n das ganze mal auf einem ESP32 testen. Vielleicht kommen wir der Lösung dadurch näher. 🙈

    Grüße



  • @cooper
    Ich habe mittlerweile herausgefunden, dass der Watchdog Timer (WDT) dafür verantwortlich ist. In der Dokumentation zur Homekit Library befindet sich ein Hinweis darauf. Während der Preinit-Phase und der Pairing-Phase werden in der Library (in arduino_homekit_server.cpp) der Hardware- und Software-WDT abgeschaltet, danach wieder eingeschaltet. Als ich das Einschalten temporär wieder unterbunden habe, lief der Homekit-Schalter auf einem Wemos D1 Mini Pro wie von dir veröffentlicht ohne Neustart durch (allerdings kann er immer noch nach einiger Zeit durch HK nicht mehr gefunden werden). Bezüglich der ws2812-Geschichte brachte die Änderung der Library allerdings keinen Fortschritt.

    Der aktuelle Code:
    New_IKEAHack_20200824_HK.zip



  • @HaSch ich habe gerade über einen anderen Thread entdeckt, dass es scheinbar jetzt auch eine WS2812 Einbindung für HomeKit gibt, mit der selben Libary.

    https://github.com/Mixiaoxiao/Arduino-HomeKit-ESP8266/tree/master/examples

    Da gibt es neuerdings dieses Example:

    Example05_WS2812_Neopixel