• Hallo versuche seit Tagen den bekannte HomeKit Sketch von Cooper d1 mini Sketch auf Schalter umzuschreiben . bin wie die meisten Anfänger könnte einer einmal bitte sagen was ich damit mache.
    Wenn ich das unten geschriebene Einbau finde ich den Schalter nicht mehr via HomeKit . Der Standard Sketch läuft.

    // Das hier kann verwendet werden, um den Status an HomeKit zurückzusenden,
    // falls ein zusätzlicher pysischer Button o.ä verwendet wird.

    // bool switch_is_on = true/false;
    // cha_switch_on.value.bool_value = switch_is_on;
    // homekit_characteristic_notify(&cha_switch_on, cha_switch_on.value);

    danke im Vorraus


  • Du willst nen Physischen Taster / Schalter haben, mit dem du den Schalter in HomeKit schalten kannst?
    Dann probier erstmal ohne das HomeKit-Programm deinen Schalter bzw. Taster zum laufen zu bekommen.

    Wenn er sich dann so verhält wie gewünscht, kannst du dir die erwähnten Zeilen hinzuziehen.

    Dein Schalter sollte eine bool Variable sein. Also true oder false.

    // Diese Variable enthält deinen Physischen Schalter-Zustand
    bool deinPysischerSchalter = true;
    
    // Diese Variable wird dann für das Update verwendet
    
    // Des Schalter intern "umschalten"
    cha_switch_on.value.bool_value = deinPysischerSchalter;
    
    // Den Zustand des Schalters an HomeKit benachrichtigen
    homekit_characteristic_notify(&cha_switch_on, cha_switch_on.value);
    

    Und das muss natürlich immer dann passieren, wenn sich der Schalter ändert. Keinesfalls bei jedem Durchgang! Das spammt das Netzwerk unnötig voll.

    Realisieren könntest du das mit einer weiteren Abfrage.

    bool deinPysischerSchalter = true;
    
    if(lastState != currentState){
       // nur wenn sich der Zustand ändert, an HomeKit übertragen
    }
    
    

    Vielleicht hilft dir dabei auch mein Toggle-Taster Snippet:
    https://my.makesmart.net/topic/233/arduino-ide-einfacher-taster-als-toggle-schaltung-oder-selbsthaltung


  • Das mit dem Schalter per Arduino bekomm ich hin. Trotzdem Danke für dein Snippet.

    Ich weiß nur nicht wo ich das oben beschriebene einfügen soll im Setup oder im loop .

    Hatte es wild verteilt die Variable über dem Setup und den Rest im Homekitloop das ist anscheinend nicht der richtige weg.

    Danke schon mal


  • @cooper Vielleicht könntest du den Sketch von deinem Buzzer short Video veröffentlichen, würde mir die Zusammenhänge dann wahrscheinlich selber erschließen können.


  • @butzero Hab den Code leider nicht mehr und das war auch nicht nativ eingebunden sondern über eine Bridge.

    Theoretisch genau so wie du sagst.

    Die Variable kann global sein und natürlich muss dann im Loop immer der Zustand gecheckt und für den Fall der Fälle gesendet werden.

    Kannst ja mal deinen Code teilen dann kann ich mal schauen wos hakt. 👍🏻


  • hallo vielen dank für die Antwort wie ein anderer Kollege versuche ich einen HomeKit Bewegungsmelder zu bauen das Problem ist das der D1 mini nicht mehr als HomeKit Relais erkannt wird sobald ich was im Sketch ändere .```

    #include <Arduino.h>
    #include <arduino_homekit_server.h>
    #include "wifi_info.h"
    
    
    
    #define LOG_D(fmt, ...)   printf_P(PSTR(fmt "\n") , ##__VA_ARGS__);
    
    bool switch_is_on = true/false;
    
    const int BWM = 13; //D7
    const int  LIGHT = 15;  // D8
    
    
    
    void setup() {
       //pinMode(BWM,INPUT);
       Serial.begin(115200);
       wifi_connect();
             // homekit_storage_reset();
       my_homekit_setup();
     
    }
    
    void loop() {
       
       my_homekit_loop();
      delay(10);
     }
    
    //==============================
    // HomeKit setup and loop
    //==============================
    
    // Zugriff auf die Definitionen des Accessories in my_accessory.c
    extern "C" homekit_server_config_t config;
    extern "C" homekit_characteristic_t cha_switch_on;
    
    static uint32_t next_heap_millis = 0;
    
    
    // Diese Funktion wird aufgerufen, wenn der Schalter in HomeKit betätigt wird
    void cha_switch_on_setter(const homekit_value_t value) {
      bool on = value.bool_value;
      cha_switch_on.value.bool_value = on;
      LOG_D("Switch: %s", on ? "ON" : "OFF");
      digitalWrite(LIGHT, on ? HIGH : LOW);
    }
    
    void my_homekit_setup() {
    
      
      pinMode(LIGHT, OUTPUT);
      digitalWrite(LIGHT, HIGH);
      cha_switch_on.setter = cha_switch_on_setter;
      arduino_homekit_setup(&config);
    
    
    
      // Das hier kann verwendet werden, um den Status an HomeKit zurückzusenden,
      // falls ein zusätzlicher pysischer Button o.ä verwendet wird.
      
      // bool switch_is_on = true/false;
      // cha_switch_on.value.bool_value = switch_is_on;
      // homekit_characteristic_notify(&cha_switch_on, cha_switch_on.value);
    }
    
    
    
    void my_homekit_loop() {
         arduino_homekit_loop();
    
    {
      if (digitalRead(BWM) == HIGH );
           digitalWrite (LIGHT, HIGH);
            delay (500) ;
      }
    {
      if (digitalRead(BWM) == LOW);
           digitalWrite(LIGHT, LOW);
             delay (500) ;
      }
    
      if(digitalRead(LIGHT) == 1) {
        
        if(switch_is_on == false) {
          LOG_D("Switch on!");
           switch_is_on ==true;
            cha_switch_on.value.bool_value = switch_is_on;
             homekit_characteristic_notify(&cha_switch_on, cha_switch_on.value);
        }
    
        }else{
          if(switch_is_on ==true){
            LOG_D("SWITCH off!");
          
    
           
        }
      }
      {
    
     delay (500);
    
      }
    
      
     
      const uint32_t t = millis();
      if (t > next_heap_millis) {
        // heap-Info alle 30 Sekunden im seriellen Monitor ausgeben
        next_heap_millis = t + 30 * 1000;
        LOG_D("Free heap: %d, HomeKit clients: %d",
            ESP.getFreeHeap(), arduino_homekit_connected_clients_count());
    
      }
    
    
      
      
    
    }
    


  • danke da steht ja auch das pairing vorher später einfach updaten hat das ein Grunde ?
    Kann vielleicht der ganze Sketch des Türöffners veröffentlicht werden, ich bräuchte nur einmal ein funktionierenden, um mir selber alle Zusammenhänge zu erklären. Danach würde ich den Passend umschreiben

Ähnliche Themen

  • 9
  • 36
  • 3
  • 9
  • 4