Apple HomeKit entdecken

Hallo,

sorry für ein neues Thema, die Suche lieferte nur geschlossene Themen.

Ich habe mir mit einem D1 mini und einem Relais einen Lichtschalter gebastelt, mit dem ich den Vorhandenen einfach überbrückt habe.
Das läuft an diesem Schalter auch richtig prima, aber in einem anderen Zimmer kann ich das so nicht machen.

Leider habe ich den Sketch nicht völlig verstanden und weiß nicht, wie ich die Anzeige für an/aus ändern kann. Auch den Teil mit dem zurückgeben des Status ist mir schleierhaft.
Hier der Sketch(quelle: makesmart: ESP8266 D1 Mini als HomeKit Relais ohne Bridge - Tutorial )

#include <Arduino.h>
#include <arduino_homekit_server.h>
#include "wifi_info.h"

#define LOG_D(fmt, ...)   printf_P(PSTR(fmt "\n") , ##__VA_ARGS__);

void setup() {
  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;

#define PIN_SWITCH 15

// 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(PIN_SWITCH, on ? HIGH : LOW);
}

void my_homekit_setup() {

  
  pinMode(PIN_SWITCH, OUTPUT);
  digitalWrite(PIN_SWITCH, 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();
  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());

  }
}

Hat jemand nen Tipp, an welcher Stelle ich da suchen muss?

Mich würden auch andere Projekte rund um HomeKit interessieren. Ich habe zwar einen Raspberry, würde auf den aber gern so weit wie möglich verzichten.

Schonmal vielen Dank

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Dann erklär doch erst mal, warum du das im anderen Zimmer so nicht machen kannst und wie du es jetzt machen willst.

Bild

So ist die aktuelle Schaltung. Beim hinzufügen des Schalters in HomeKit geht der Schalter automatisch auf on und wird in HomeKit als "ein" angezeigt (Pin 15 auf HIGH).
Das ist in dem Fall auch gut so, denn so kann ich das Licht weiterhin mit dem alten Schalter steuern, falls meine Konstruktion mal nicht will.

Im anderen Raum muss ich das Relais nach dem Schalter zwischen die Leitung klemmen.
Damit das weiterhin funktioniert, wenn Siri versagt, möchte ich die Leitung an NC anschließen. In HomeKit soll der Schalter also als "ein" angezeigt werden, wenn das Relais nicht geschalten ist.
Einfach ein Low-Level-Trigger Relais zu verwenden hat irgendwie nicht funktioniert. Und Änderungen im Code hat HomeKit wieder "korrigiert".

Mit dem D1 bin ich als Lösung auch nicht zu 100% glücklich, aber mit einem esp8266-01 Relais kam ich überhaupt nicht zurecht. Falls jemand dazu noch einen Tipp hat -> dankbarer Abnehmer :blush:

Verstehe ich nicht.
Zeige doch mal ein Schaltbild, wie es im zweiten Raum sein soll.

Evtl. ein zweites Relais verwenden, um die Funktion ohne Programmänderung zu erhalten.

Im ersten Fall funktioniert es, weil bei Ausfall meiner Schaltung, der Lichtschalter weiterhin funktioniert (Lichtschalter bei Beleuchtung im Normalfall aus und Relais an) Hier soll die Funktion der Lampe ebenfalls gewährleistet sein, wenn das Relais ausfällt (Lichtschalter bei Beleuchtung im Normalfall ein und Relais an).

Besser verständlich?

Daran hab ich auch schon gedacht. Aber eigentlich ist mir das ganze schon zu groß, wie es jetzt ist.
Das Ziel ist also eher, die Programmierung in den Griff zu kriegen, auch um kleinere Bauteile nutzen zu können.

So wie ich das verstehe, wird es nicht funktionieren.

Warum muss das Relais in Serie zum Schalter geschaltet werden ?

Weil am Lichtschalter a) kein Platz, b) keine Steckdose in der Nähe und c) die Leitung Aufputz liegt und eh schon Verbindungsstücke hat.

Dann ist der Lichtschalter immer an und das Relais trennt. Funktioniert Siri nicht, nehm ich sie vom Strom und schalte wieder mit dem Schalter aus.

Warum sollte das nicht funktionieren?

So wie schon @HotSystems das wird mit einem Relais, oder was auch immer, nicht funktionieren. Es wird nur Funktionieren wen dein Schalter zu Impulsgeber wird. Also die ganze Mimik wird niemals in eine normale Unterputzdose passen, als nicht Elektriker bedeutet Plan aufgeben :wink:

Kannst Du mir auch sagen, WARUM das nicht geht?
Der Strom, der durch das Relais läuft, hat doch keine Ahnung, ob davor ein Schalter ist, oder nicht?

Vielleicht war das nicht deutlich:
Bei der aktuellen Schaltung (die läuft), kann ich das Licht natürlich nicht mit dem Schalter ausschalten, wenn das Relais an ist (der ist ja überbrückt). Also ist der eigentlich immer aus und ich schalte mit dem Relais.

Bei der neuen Schaltung kann ich das Licht natürlich nicht am Relais anschalten, wenn der Lichtschalter aus ist. Drum soll der immer an sein und ich schalte wieder mit dem Relais.

Nur eben andersrum :upside_down_face:

Und gerne nochmal diese Frage.

Evtl. brauchst du eine Wechselschaltung. Allerdings solltest du das besser von einem Elektriker deines Vertrauens machen lassen. Der darf das auch.

Evtl. könnte es auch helfen, wenn das Relaissignal mittels Transistor investiert wird.
Dann muss am Programm evtl. nichts geändert werden.

Wie soll ich es denn sonst anschließen, wenn nicht in Reihe?
Natürlich wäre eine Wechselschaltung cooler, ist aber nicht möglich. Die alten Lichtschalter unterbrechen einen Draht oder schließen den Kontakt.

Ein Elektriker war schon öfter da und entsprechende HomeKit fähige Lichtschalter hatte ich ihm auch gezeigt.
Eine vernünftige Lösung ist hier ohnehin nicht möglich.
Die Leitungen sind uralt und total sinnlos abgesichert, die Wohnung muss also saniert werden.
Bis es soweit ist, nutze ich die Bude eben als Übungsplatz für meine Ideen...

Das man mit elektrischen Bauteilen und entsprechenden Schaltungen ne Menge machen kann, weiß ich. Aber von Elektrotechnik hab ich noch weniger Ahnung, als vom Programmieren :crazy_face:

Daher ist mein Ansatz auch eher, den Code zu verstehen.

Was noch auf mich zukommt, wenn die Geräte kleiner werden und nicht nur per USB mit Strom versorgt werden sollen, mag ich mir noch garnicht ausmalen... :grimacing:

Ich kenne mich mit dem HomeKit nicht aus und werde daher dafür keine Tipps geben. Zumal du schreibst:

Dann macht eine Änderung im Sketch keinen Sinn.

Daher ist eine Hardware-Anpassung def. Sinnvoll.

Dann ist es wohl eher der falsche Sketch :smile:

Muss mich wohl erstmal etwas mit dem HAP beschäftigen...

Wenn du das sagst. :wink:
Evtl. hat ja noch jemand eine andere Idee bzw. schon Erfahrungen mit dem HomeKit.

Zu a) und c) : wenn sowol Leitung als auch Schalter Aufputz sind, kannst du doch einfach ein Aufputz-Leergehäuse mit Blindabdeckung oberhalb oder unterhalb des Schalters montieren, oder für den Schalter ein Doppel-Aufputz Gehäuse, also eines das 2 Schalter oder einen Schalter und eine Steckdose aufnehmen kann, nehmen, dann hast Du Platz für die Elektronik.
Oder gibt es in Deinem Land keine Doppel-Aufputz Gehäuse? In der Schweiz bekomme ich sowas in fast jedem Baumarkt.

Du bist ein schlauer Fuchs.
Dies ist die Lösung, die ich gefunden habe: (um keine Verwirrung zu stiften: Die Lösung unten ist für den Schalter, der bereits läuft)


erstmal ein Relais mit NC und NO und vor allem: wahlweise LOW oder HIGH Träger (per jumper)


und statt dem alten Kippschalter gibt es nen Taster

geregelt wird alles von nem D1 mini

hab mir auch Gehäuse bestellt und wollte das Loch vom Schalter irgendwie abdecken.

Aber

hört sich ja noch besser an
Allerdings muss ich die Stromversorgung für die Schaltung von extern legen.
Wäre natürlich viel cooler, gleich den Strom zu nehmen, der eh schon da ist, aber davon hab ich zu wenig Ahnung und lass lieber die Finger weg

Bei dem Schalter, der neu kommen soll sieht die Situation so aus:


der ist neben der Tür und keine Steckdose in der Nähe


und da kommt das Kabel aus der Wand

Zum Thema entdecken.

Bei obigem Code hatte ich immer das Problem, dass ich das Gerät jedesmal aus der Home App entfernen und neu anlegen musste, wenn es vom Strom getrennt war

Läuft wie geschmiert, Nachteile hab ich noch nicht festgestellt
Hab aber auch nicht mit Absicht Fehler provoziert

Sind auf deinem "super Relaismodul" ausgefräste Aussparungen zw Spule und Ansteuerung , wen nein, sind die nicht geeignet für 230V, egal was auf dem Relais steht == gilt nur für Relais nicht für Modul