• Hallo liebe Kenner,
    vielen Dank zunächst für das tolle Projekt und die sehr verständliche Beschreibung. Ich habe es einmal genau so nachgebaut, wie beschrieben. Dabei habe ich einen Wemos D1 mini wie diesen verwendet: https://www.ebay.de/itm/263842409413?chn=ps&norover=1&mkevt=1&mkrid=707-134425-41852-0&mkcid=2&itemid=263842409413&targetid=1270189284895&device=c&mktype=pla&googleloc=9043906&poi=&campaignid=10215345553&mkgroupid=121910809866&rlsatarget=pla-1270189284895&abcId=1139676&merchantid=138392580&gclid=EAIaIQobChMI0eOA3Y-h8QIVVvhRCh3FbQB3EAQYBiABEgLohPD_BwE. Die Stromversorgung läuft über ein USB-Netzteil, das ich an den USP-Port angeschlossen habe. An sich funktioniert es auch ganz gut - nur leider nicht stabil. Ohne erkennbaren Grund und ohne vorherige Nutzung schaltet sich der ESP immer mal wider aus oder hängt sich auf und ist dann in Hoimekit nicht mehr ereichbar. Das Problem ist vor allem, dass er sich irgendwann wieder "zurückmeldet"und gleich auch das Relais eingeschaltet wird.
    Wie kann man das verhindern? Die Verdrahtung am Relais von NC auf NO zu ändern, wird wohl nicht so gut sein, weil dann der Schalt-Status (Ein oder Aus) in Homekit vertauscht wird, oder?
    Für Hilfe wäre ich sehr dankbar.
    VG

  • ESP8266

    Ich hab zwar keine Ahnung um welches Projekt es geht, aber wenn es sich um die #Homekit-ESP8266 Library handelt, dann ist die einzig Mögliche Lösung die mir einfällt ist, den D1 Mini zu übertakten.

    Steht aber auch im Tutorial, hast du das gemacht?

    Bevor ihr den Sketch auf den ESP8266 D1 Mini hochladet, solltet ihr die Taktrate der CPU des D1 Minis anpassen. Für die Library sind 160 MHz von Vorteil, da sie dann stabiler läuft.

    Arduino IDE
    └─── Werkzeuge
        └─── CPU Frequency: 160 MHz
    

  • Es geht um das Projekt “ESP8266 D1 Mini Relais als HomeKit Schalter ohne Bridge - Tutorial”. Ich bin in diesen Dingen allerdings leider auch absoluter Anfänger und kenne mich überhaupt nicht aus. Mir ist nicht klar, wie die Übertaktung da helfen könnte. Bevor der ESP sich aufgehängt hat o.ä., hat er ja kein Programm abgearbeitet, Die Störung kommt aus dem Nichts - und immer dann, wenn ich nicht zuhause bin oder in der Nacht …


  • @ron0815 er arbeitet permanent ein Programm ab wenn es aufgespielt ist.
    Das Problem ist, dass die Library die Leistung des ESPs durch Verschlüsselung und Co…teilweise überschreitet.

    Ich selbst kann auch berichten dass die standard Taktrate von 80MHz den ESP überfordert und somit das Programm immer wieder neustartet.

    Also ich verstehe nicht genau was du meinst mit

    Mir ist nicht klar, wie die Übertaktung da helfen könnte. Bevor der ESP sich aufgehängt hat o.ä., hat er ja kein Programm abgearbeitet, Die Störung kommt aus dem Nichts - und immer dann, wenn ich nicht zuhause bin oder in der Nacht …

    Fakto arbeitet der ESP auch, ohne dass man den Aktor schaltet.

    Ich würde es mal probieren.

    https://github.com/Mixiaoxiao/Arduino-HomeKit-ESP8266

    Zitat Library:

    CPU Frequency: 160MHz (must)

    Hat halt mit wolf SSL etc zu tun 👍

    Hast du die Zeile auskommentiert? Das verhindert die erneute Verbindung des ESPs lot homekit und erfordert immer wieder ein neues Pairing.

    homekit_storage_reset();

    Falls das auch ein Problem sein sollte.

    Theoretisch sollt er sich, auch wenn er abstützt einfach wieder neu verbinden…
    Also teste am besten erstmal die Übertaktung.


  • Okay, es war mir nicht bewusst, dass der ESP auch dann das Programm ständig abarbeitet, wenn man ihn nicht schaltet. Also werde ich das mit der Taktrate einmal versuchen, danke für diesen Tipp. Bin gespannt, wie er sich danach verhält. Und ja, die besagte Zeile habe ich gelöscht. Ursprünglich hatte ich sie noch belassen und es ergab sich das zusätzliche Problem, dass der ESP nach dem Reboot nicht mehr erkannt wurde und neu eingebunden werden musste.
    Viele Grüße und ein schönes WE.


  • Puh, könnt Ihr mir bitte noch einmal helfen? Ich habe gerade noch einmal den Sketch für den Homekit-Schalter geladen und finde nirgends in Arduino IDE den Punkt, unter dem ich die Taktrate ändern kann. Wie geht das?
    VG


  • Sorry, hab‘s gefunden … Menü -> Werkzeuge -> CPU-Frequenz. Ich hatte eine Textzeile wie die im Screenshot von Cooper erwartet, die ich aber nicht gefunden habe …


  • Die Taktrate habe ich nun geändert. Mal sehen, ob es jetzt stabiler läuft.
    Was allerdings bleibt, ist das Problem, dass der ESP nach einem Stromausfall und anschließendem Reboot immer auf Einschalten geht. Wenn ich also mal länger nicht zuhause bin und in dieser Zeit ein Stromausfall passiert, brennt das Licht für längere Zeit, weil ich das nicht mitbekomme. Kann ich irgendetwas im Sketch ändern, damit der ESP nach dem Reboot im Aus-Zustand verbleibt?


  • @ron0815 sagte in Projekt ESP8266 D1 Mini Relais als HomeKit Schalter ohne Bridge - Schaltung ist instabil:

    Kann ich irgendetwas im Sketch ändern, damit der ESP nach dem Reboot im Aus-Zustand verbleibt?

    Beim setup() einmal den Output low schalten.

    Und dann theoretisch diese Zeile hier ändern in der my_accessory.c Datei

    // format: bool; HAP section 9.70; write the .setter function to get the switch-event sent from iOS Home APP.
    homekit_characteristic_t cha_switch_on = HOMEKIT_CHARACTERISTIC_(ON, true);
    

    zu

    // format: bool; HAP section 9.70; write the .setter function to get the switch-event sent from iOS Home APP.
    homekit_characteristic_t cha_switch_on = HOMEKIT_CHARACTERISTIC_(ON, false);
    

    dann müsste der Homekit Schalter immer off sein beim boot. Aber wirklich gesagt zusätzlich den Output beim Start direkt noch low schalten, dann ist auch des relais aus und nicht nur der Schalter.


  • Klasse, vielen Dank für Deine Unterstützung. Das werde ich gleich morgen früh einmal ausprobieren. Kannst Du mir aber eventuell noch sagen, wie ich den Output beim Start low schalte?


  • Meinst Du diese Passage (weiter unten hinter der von Dir zitierten) in “mein_schalter” und soll ich hier das HIGH in LOW ändern?

    void my_homekit_setup() {

    pinMode(PIN_SWITCH, OUTPUT);
    digitalWrite(PIN_SWITCH, HIGH);
    cha_switch_on.setter = cha_switch_on_setter;
    arduino_homekit_setup(&config);


  • Ich hab’s einfach mal so gemacht und es funktioniert. Vielen Dank für Eure kompetente Hilfe!!! Ohne Euch hätte ich das nicht hinbekommen. Schönes Wochenende!

Ähnliche Themen