vielen Dank, dass ich mit im Forum sein darf. Ich nutze aktuell RaspberryMatic als CCU und hab schon einige Geräte im Einsatz.
Nun habe ich mir vor Kurzem ein paar schöne Garten-Lichterketten besorgt, welche mit Solar auf 3,3V Basis funktionieren. Gern würde ich die via Homekit steuern. Mein erster Ansatz über einen ESP8266 haben theoretisch funktioniert aber der Batteriverbrauch war zu hoch.
Daher habe ich mich auf AskSin++ zurückbesonnen. Mein erster Versuch mit dem Batteri-Aktor von Papa ( https://github.com/pa-pa/AskSinPP/blob/ ... BA-PCB.ino ) war auch gut, jedoch habe ich folgendes "Problem" und würde mich über eure Hilfe sehr freuen:
Die Lichterkette hat nur einen Schalter, welcher quasi Programme "durchschaltet" -> also 1x Drücken An, noch mal Drücken langsam blinken, noch mal schnell blinken usw. bis "Aus".
Gern möchte ich das natürlich abbilden und mit verarbeiten, aber da scheitert es leider. Im ESP hatte ich im loop() quasi eine "Zählfunktion" und habe im Interval den A0 gemessen, ob Spannung anliegt. Wenn über 20 Durchläufe alle 1 sec 20 Werte "high" waren, wusste ich, die Lampe ist an. Wenn 20 Werte "low" waren war sie aus, wenn weniger als 20 aber mehr als 0 waren war die Lampe grad irgendwie am Blinken und ich konnte über den Schalter quasi digital so lange drücken, bis sie wieder an oder aus war. Somit ist quasi die "Blinken" Funktion nicht mehr da, würde mir aber auch reichen.
Quasi so…
Code: Alles auswählen
unsigned long currentMillis = millis();
if ((unsigned long)(currentMillis - previousLampStateChange) >= timeIntervalLampStateChange)
{
previousLampStateChange = currentMillis;
getLampStatus();
}
…
void getLampStatus() {
int inputState = digitalRead(statusInput);
statusCounter = statusCounter + inputState;
counter++;
if (counter == 20 && statusCounter == 0) {
Serial.println("Lamp On");
counter = 0;
statusCounter = 0;
globalLampStatus = lampOn;
sendMQTTdata("currentStatus", "lampOn");
}
if (counter == 20 && statusCounter == 20) {
Serial.println("Lamp Off");
counter = 0;
statusCounter = 0;
globalLampStatus = lampOff;
sendMQTTdata("currentStatus", "lampOff");
}
if (counter == 20 && statusCounter < 20 && statusCounter > 0) {
Serial.println("Lamp blinking");
counter = 0;
statusCounter = 0;
globalLampStatus = lampBlinking;
sendMQTTdata("currentStatus", "lampBlinking");
}
if (counter > 20) {
counter = 0;
statusCounter = 0;
}
}
Meine Frage wäre jetzt - wie kann ich diese Funktion quasi oben in den AskSin++ Sketch einbauen, sodass ich die Lampe entsprechend steuern kann. Grob gesagt: wenn jemand den Knopf am Gehäuse drückt, soll sie halt auch angehen. Und ich will dann am HomeKit Gerät sehen, dass die Lampe an ist. Und wenn jemand noch mal drückt oder ich sie halt via HomeKit ausschalte, muss der Sketch quasi "durchschalten", bis sie aus ist.
Sollte es wieder meinen Erwartungen möglich sein, eine "blinkende" Lampe in HomeKit mit einzubauen, wäre das toll. Aber ich hab bisher nur farbige Lampen gesehen…
Ich hoffe, ich hab niemanden verwirrt und ihr könnt mir helfen
Vielen Dank im Voraus und einen schönen Abend.