HAA Raven System Firmware für ESP Geräte

  • loonypac Deine Signatur als „Index“ für diesen Sammelthread für alles Raven, finde ich eine ausgezeichnete Idee. Daher - und in der Kombination, dass sich jemand nun den Thread auch ausblenden kann, wenn er stört - könnt ihr euch hier drin zu Raven austauschen. Das ist für mich der gute Konsens.

  • Hm, eigentlich hatte ich dir Mighty61 eine Antwort gegeben, wie du deine Sensoren mit RavenSystem in HomeKit einbindest. Die Antwort wurde offensichtlich (warum auch immer) gelöscht :/


    Also nochmal: du musst deinen ESP umflashen und dann das Beispielscript mit dem von dir benutzten GPIO umändern. Fertig!


    Alles Grundsätzliche kannst du hier in diesem Beitrag nachlesen. Ich habe mir die Mühe gemacht, vieles zum Thema möglichst ausführlich zu dokumentieren (siehe auch meine Signatur)

    Vielen Dank für Deine Info.

    Ich werde Berichten.

    HomeKit Geräte / Homebridge Geräte:

    Raspberry 4 4GB mit raspberrymatic HMIP Komponenten / Homebrifge läuft auf Synology DS220+

  • Mighty61 Gern geschehen :)


    Mach dich in diesem Beitrag bemerkbar, wenn noch Fragen sind. Wir haben ja jetzt offiziell freie Bahn für einen regen konstruktiven Austausch.


    PS: Thema „stören“. Mir war nicht bewusst, dass sich in einem HomeKit Technikforum jemand dadurch gestört fühlen könnte, dass man ausführliche technische Workarounds zum Thema HomeKit vorstellt und diskutiert :/

    All diejenigen, die sich durch diesen Beitrag (warum auch immer) gestört fühlen/fühlten, bitte ich hiermit um Entschuldigung :saint: und wünsche denselben weiterhin viel Erfolg mit ihren eigenen HomeKit Lieblingsprojekten.:thumbup:

  • Thema „stören“: Ich habe diesen Thread nicht geblockt. Stört mich auch nicht. Lese den aber kopfschüttelnd, weil ich das meiste nicht verstehe. Mein größtes Problem dabei ist, dass es sich hier um eine Lösung zu handeln scheint, zu der mir das passende Problem nicht einfallen mag. Ich bin ja für jegliche Spielerei offen, aber was kann ich hiermit erreichen, was HomeKit, Homebridge und vor allem Alexa nicht mit wenigen Klicks auch jetzt schon können? Gibt’s da ein Beispiel aus dem realen Leben? Ernst gemeinte Frage…

  • Hardware. Mit Raven bekommst du hardware in homekit hinein die sonst nicht geht. Alles was auf einem esp8266er Chip läuft. Z.B. sonoff Geräte.


    Diesen Faden hab ich angefangen mit einem D1mini Bausatz weil der, im Prinzip, aus einem reinen esp8266 er Chip besteht und du damit Geräte basteln kannst die es sonst nicht gibt.


    Für mich gehört der Faden unter die Rubrik Geräte.


    Walta

  • Thema „stören“: Ich habe diesen Thread nicht geblockt. Stört mich auch nicht.

    Das freut mich zu lesen :)


    Lese den aber kopfschüttelnd, weil ich das meiste nicht verstehe.

    … was jetzt weniger ein Problem des Beitrags, geschweige denn ein Problem des RavenSystem ist. Da gilt wie so oft: Bei Interesse schlau machen und verstehen lernen, bei grundsätzlichem Desinteresse einfach ignorieren und vergessen.


    was HomeKit, Homebridge und vor allem Alexa nicht mit wenigen Klicks auch jetzt schon können?

    Solch ein verallgemeinerndes Statement ist extrem subjektiv und hilft wenig weiter:

    Ein Home Assistantler würde dir/uns bspw. entgegnen, dass er sich hier im Forum (zu recht) kopfschüttelnd die Frage stellt: was eiern die da mit HomeKit, Kurzbefehlen und Homebridge (und RavenSystem) rum, während ich das effizienter und zuverlässiger mit wenigen Klicks in Home Assistant kann.


    Zudem ist "vor allem Alexa" in diesem Sinne und in diesem Zusammenhang schonmal doppelt raus. Erstens ist es nicht HomeKit, was nach meinem Verständnis allein aufgrund der obersten Forumsdirektive hier gar nicht rein darf und zweitens ist Alexa alles andere als der heilige Gral unter den zahllosen Smarthome Mitbewerbern (s.o. Stichwort Home Assistant, aber auch Homey, FHEM, Open Hab KNX etc.pp.).


    Eine Grundsatzdiskussion darüber, was das Beste, Einfachste und Sinnreichste ist, endet regelmäßig in fruchtlosen persönlichen Überzeugungen und Meinungen mit individuellen Schwerpunkten ähnlich der ewigen Frage, ob Apple oder Windows die bessere Computerwelt eröffnet. :sleeping:


    Ich bin ja für jegliche Spielerei offen, aber was kann ich hiermit erreichen

    Um walta s Antwort noch zu ergänzen: Es lassen sich mit besagten ESPs (nicht nur durch RavenSystem) eigene HomeKit-Devices konzipieren und produzieren, sondern (und das ist für meine Anforderungen der springende Punkt) dieselben ESPs sind gleichzeitig auch in der Lage, vielfältigste interne Automationen im Vorfeld zu berechnen, um dadurch einerseits das vergleichsweise ewig träge und launenhafte HomeKit zu entlasten. Um dadurch aber auch komplexe Schaltvorgänge in HomeKit zu integrieren, die dort eben nicht durch ein paar Klicks machbar sind. Ich lass mich gern vom Gegenteil überzeugen.


    In den konkreten Anwendungs-Beispielen sowohl von Edward J. Nately III s "Motorenschaltung" als auch Mighty61 "Doppel-Thermostat" lassen sich sowohl weitere Sensoren und physische Schalter integrieren, aber auch Automationen innerhalb der ESPs ausführen. Das Motorenschaltungs-Script etwa könnte durch einen Lichtsensor erweitert werden, der die Relais/Motoren in Abhängigkeit von Luxmessungen selbsttätig steuert. Der Doppelthermostat kann innerhalb des ESP einen Abgleich zwischen den beiden gemessenen Werten machen, um dann daraus Schaltungen in HomeKit auszulösen.


    In Homebridge benötigst du für jedes einzelne Device schonmal ein geeignetes PlugIn und musst dann noch eine Möglichkeit finden, die PlugIns miteinander interagieren zum lassen, um sowas vergleichweise zu automatisieren. Und selbst wenn sowas möglich sein sollte, mit wenigen Klicks wird das sicherlich nicht gehen.


    Ich selbst habe z.B. mittlerweile sämtliche Zeitautomationen/Zeitdauern aus HomeKit verbannt und lasse diese extrem zuverlässig durch die autarken ESPs ausführen. Solange die Dinger mit Strom versorgt werden, laufen die 24/7 wie ein Uhrwerk – kein Absturz keine Inkompatibiltäten und Reibereien mit Betriebssystem-Problemen, keine Terminal-Rumdoktorei. Alles läuft seit Monaten sehr geschmeidig. Wenn etwas nicht funktioniert, scheitert es an HomeKit, was schonmal enorm bei der Fehleranalyse hilft.


    Verstehe das RavenSystem vereinfacht gesagt wie einen gigantischen HomeKit-Baukasten, durch den du selbst zum Entwickler eigener Geräte wirst, ohne erst eine Programmiersprache erlernen und dich mit Betriebssystemen und -konfigurationen auseinandersetzen zu müssen.

  • Lese den aber kopfschüttelnd, weil ich das meiste nicht verstehe.


    Ich verstehe keine Zwölftonmusik und drehe am Radio einfach einen Sender weiter, wenn Schönberg ertönt. Man muß ja nicht alles akzeptieren, kann doch aber respektieren und gleichzeitig ignorieren. Leben und leben lassen.


    aber was kann ich hiermit erreichen


    Mir hilft das System (wie auch Walta schon schrieb) Hardware einzubinden, die es für Homekit so nicht zu kaufen gibt. Als nächstes steht ein kombinierter Sensor aus Temperatur, Luftfeuchte, Licht und Anwesenheit (Radarwellensensor) auf dem Programm. Ist doch super, wenn man sich eierlegende Wollmilchsäue mit geringstem Futtermitteleinsatz selbst züchten kann.


    In den konkreten Anwendungs-Beispielen sowohl von Edward J. Nately III s "Motorenschaltung"


    Die funktioniert inzwischen, muß nur noch sauberer verdrahtet und ins Gehäuse gepflanzt werden. Wozu ich das brauche? Um ehrlich zu sein: Kein Mensch braucht einen per Siri verstellbaren Lattenrost - aber es ist toll einen zu haben! :D


    Das Projekt eines Luxusbetts war eigentlich schon abgeschlossen. Im Motorblock, der Kopf- und Fußteil verstellt, befand sich ein Funkempfänger weit jenseits von 433 MHz, so daß ich einen Umsetzter an die Fernbedinung prömpeln mußte, der dann erst über Broadlink und Homebridge-Plugin angesteuert werden konnte. So umständlich - so unzuverlässig. Ich wollte die Motoren gern direkt und nativ ansteuern. Und am liebsten mit nem Schieberegler in der Home-App, um die Höhen zu verstellen. Da Homekit leider keine Betten kennt, melden sich Kopfkissen und Fussablage hier jetzt mit je einem Rollo-Symbol für "hoch" und "runter". Shellys gingen nicht (da 24V-Zuführung über die Deckenaufhängung) und außerdem hätte ich zwei Stück gebraucht - der ESP triggert gleich 4 Relais für zwei Motoren.


    Vollkommen übergeschnappt? Ja ok, dekadente Bastelei. Zugegeben. Wir hatten aber auch schon mehrfach automatisierte Hühnerklappen im Forum. Hat mir auch gut gefallen, hab nur leider kein Federvieh. Für mich war der Umbau ein erster Test, was so geht mit Raven. Bin sehr angetan und jetzt sozusagen Raver auf dem zweiten Bildungsweg. 8)

  • Was hackt ihr denn jetzt so auf mir rum? Evtl. hätte ich meinen Post mit mehr Puderzucker versehen sollen. ;)


    Mir ging es tatsächlich nur darum zu verstehen, wohin bei diesem Thread die Reise geht und ob es sich für mich lohnt, die folgenden Beiträge zu lesen. Dank eurer Aufklärung weiß ich nun, dass ich das Kopfschütteln einstellen kann und dass tatsächlich ein für *mich* nicht bestehendes Problem gelöst wird. Und das scheinbar sehr mächtig und beeindruckend, aber für *mich* eben nicht relevant. Ich wollte euch weder in eurem Schreibfluss bremsen, noch wollte ich eine Diskussion über das beste Smarthome System anzetteln. *Ich* nutze nun mal HomeKit, Homebridge und Alexa Routinen (sic!).


    In diesem Sinne "leben und leben lassen" und euch noch einen produktiven Austausch in diesem Thread (der mich nach wie vor nicht *stört*)

  • Als nächstes steht ein kombinierter Sensor aus Temperatur, Luftfeuchte, Licht und Anwesenheit (Radarwellensensor) auf dem Programm. Ist doch super, wenn man sich eierlegende Wollmilchsäue mit geringstem Futtermitteleinsatz selbst züchten kann.

    Genau sowas sind u.a. auch meine Anwendungsziele. Mehrere hochwertige Sensoren in einer ESP-Schalte kombinieren und dann eigene neue Ufer betreten, ohne immer warten zu müssen, bis ein Anbieter was rausbringt.:thumbup:

    Traumhaft sind in dem Zusammenhang auch die Preise für die einzelnen Komponenten. Ein D1 Mini für schlanke 4,30 €, Doppelradarsensor Mikrowelle 5,45 €, Lichtsensor 4,85 €, 5x Temperaturfühler 6,35 €… :S


    Evtl. hätte ich meinen Post mit mehr Puderzucker versehen sollen. ;)

    Bitte mit Sahne oben drauf. Wir sind alle kleine Sensibelchen :saint:

  • Hier ist ein sehr informativer Vergleich verschiedener Radar-Sensoren.


    Solch ein Sensor allein wird wahrscheinlich nur begrenzt zielgerichtet funktionieren, da er bspw. auch durch Fensterscheiben detektiert. Die kluge Kombination mit Geräusch- und IR-sensor könnte das gewünschte Schaltergebnis verbessern.


    Prinzipiell würde ich auch gerne einen Time of Flight Sensor VL53L1X verwenden nach diesem Prinzip.


    Der Sensor liegt hier schon rum, wird leider von Raven nicht direkt unterstützt. Man könnte aber die Steuerung über einen separaten ESP regulär über Arduino IDE vorbereiten, um dann nur noch Zählimpulse für das rauf- und runterzählen auf einen Raven-ESP per GPIOs weiterzuleiten. Ich hab das vor Jahren erfolgreich mit dem Vorgänger-Sensor VL53L0X hingekriegt, den ich in doppelter Anordnung auslesen ließ. Leider ballerten die beiden Sensoren zeitweise zuviel Output auf den ESP, was zu Fehlergebnissen führte. Der VL53L1X kann als einzelner Sensor 2 Messzonen im Sensor auswerten, was den ESP entlasten und die Programmierung enorm vereinfachen sollte.

  • Ich tauche hier mal kurz mit ein und habe folgendes Anliegen: Habe mal spaßeshalber einen D1 Mini über die Arduino IDE programmiert, damit er einen Servo steuert. Jetzt wollte ich das ganze in Homekit bekommen, geht scheinbar über die "HomeSpan" Libary. Würde das ganze alternativ auch mit dem RavenSystem funtkionieren?


    Und, lässt sich ein ESP so programmieren, dass er bei Erstinbetriebnahme relativ bequem in das heimische WLAN aufgenommen werden kann, ohne dass ich creditials über die Arduino IDE oder ähnliche Oberfläche eingeben muss? Ziel ist, dass ich den ESP jemanden geben kann, der ihn nur einstöpseln und mit seinem WLAN und Homekit verbinden muss.


    Gebt Bescheid falls ich hier gerade auf der falschen Baustelle bin :D

    Einmal editiert, zuletzt von Patrick_ ()

  • Hey cool, man lernt doch immer wieder dazu. HomeSpan war mir noch gar kein Begriff. Da muss ich auch mal reinschnüffeln, insbesondere für den eben beschriebenen VL53L1X würde sich das womöglich anbieten :)


    RavenSystem läuft derzeit nur mit ESP8266. Die sind nicht so leistungsfähig wie die ESP32, für die HomeSpan ausgelegt ist, weswegen ich mich grad frage, wie du das dann mit einem D1 Mini hinbekommen hast :/


    In RavenSystem gibt es nur vorgefertigte Services, die du dann für deinen Servo "umdenken" müssest. Z.B. könnte Type 40 "Garage Door" oder Type 45 "Window Covering" dich für dein Vorhaben weiterbringen?! Bei Letzterem kann dir sicherlich Edward J. Nately III helfen, der das jüngst erfolgreich für sein Motorsteuerung-Projekt umgesetzt hat.


    Was das Weitergeben betrifft, geht das insoweit, als du das Projekt über dein Netzwerk vollenden kannst und dem (vertrauensvollen) Menschen, der das übernehmen soll, mitteilst, dass er im Setup-Mode das "Remote WiFi Settings" Feld aktiviert und sich unter "Search WiFi" sein eigenes Netzwerk einrichtet. Vertrauensvoll deshalb, weil bei der Weitergabe erstmal dein WLAN-Zugang im ESP gespeichert ist.


    Edit: Der vorherige Absatz war natürlich kompletter Unsinn, deswegen nachfolgend die Korrektur.


    Das Weitergeben eines selbst erstellten Raven ESP an beliebige Dritte kann man sehr gut dadurch einrichten, indem man nach Fertigstellen des Scripts in der eigenen Netzwerk-/HomeKit-Umgebung im Setup-Mode das Feld "Remote WiFi Settings" aktiviert und mit "Save" bestätigt.


    Dadurch wird der eigene Netzwerkzugang im ESP gelöscht und derselbe auf seine Default IP-Adresse 192.168.4.1:4567 zurückgesetzt. Der neue Nutzer kann sich auf diesem Accesspoint dann anmelden, um seinen eigenen Netzwerkzugang einzugeben und mit "Save" abzuspeichern.


    Es kann zusätzlich zum Auswählen von "Remove WiFi Settings" sicherlich nicht schaden, ebenfalls das "Reset HomeKit ID" zu aktivieren, bevor man einen ESP weitergibt.

  • HomeSpan war mir noch gar kein Begriff.


    Wurde hier schon erwähnt. Ist komplizierter als Raven, dafür nochmal flexibler. Ich habe es (trotz Unterstützung) noch nicht ans Laufen bekommen. Der Upload funktioniert bei mir nicht. Außerdem kann ich kein C programmieren und wäre wie ein Scriptkiddie auf copy & paste angewiesen.


    Bei Letzterem kann dir sicherlich Edward J. Nately III helfen, der das jüngst erfolgreich für sein Motorsteuerung-Projekt umgesetzt hat.


    Meine Steuerung ist für Gleichspannungsmotore (Polwendeschaltung mit je zwei Relais). Servos brauchen eine andere Ansteuerung. Analoge Servos per Impuls (PWM), digitale Servos per Datenwort. Ich vermute, das wird von Raven nicht unterstützt. Hab dort zumindest noch nix für den Zweck gefunden.


    Vertrauensvoll deshalb, weil bei der Weitergabe erstmal dein WLAN-Zugang im ESP gespeichert ist.


    Auch wenn Du im Setup-Mode zuvor ein Remove WiFi Settings angewählt hast? Ich hatte vermutet, dann könne man das Ding mit jungfräulicher WLAN-Einstellung einfach weitergeben?

  • Wurde hier schon erwähnt. Ist komplizierter als Raven, dafür nochmal flexibler…

    Ja, damit kann man dann tatsächlich ALLES nativ HomeKit machen. Das hatte/hab ich wie gesagt mit den VL53L1X vor.

    Zusätzlicher Vorteil ist die Unterstützung der ESP32 Mikrokontroller. Die sind leistungsfähiger und bieten Zusatzoptionen gegenüber ihren Vorgängern, den ESP8266.


    Weiterer Vorteil: Sollte man es irgendwann schaffen, die eigene Komfortzone zu verlassen, um auf sowas freundlich winkendes wie z.B. Home Assistant umzuschwenken, kann man den Großteil der ESP-Programmierung übernehmen, um "nur" den HomeKit-Anteil durch ein anderes Kommunikationsprotokoll zu ersetzen.


    Ich werde bei Gelegenheit eine Übersicht vorbereiten, in der alle ESP-HomeKit-Projekte zentral aufgeführt sind. Schließlich gibt es neben HomeSpan auch noch das von mir bereits erwähnte ESP-HomeKit-ADK, das ebenfalls ESP32 unterstützt. Daneben auch noch weitere, die mehr oder weniger aufwändige native HomeKit-Programmierungen zulassen. Die können wir dann ja mal sammeln und auswerten.


    Außerdem kann ich kein C programmieren und wäre wie ein Scriptkiddie auf copy & paste angewiesen.

    Die Programmierung in C ist halb so schlimm (und macht viel mehr Spaß als Terminalbefehle :S ). Für die überwiegende Zahl an Gerätschaften gibt es sehr hilfreiche Beispiel-Bibliotheken, die man dann für die eigenen Anforderungen ändert/erweitert.


    In der Ardurnio-Referenz findet man außerdem alles, was man für diese Anforderungen so braucht. Immerhin reden wir hier nur von einfachen SmartHome-Schaltungen und nicht von KI-Robotern oder Mars-Sonden.


    Auch wenn Du im Setup-Mode zuvor ein Remove WiFi Settings angewählt hast? Ich hatte vermutet, dann könne man das Ding mit jungfräulicher WLAN-Einstellung einfach weitergeben?

    Du hast vollkommen recht: Das war natürlich völliger Unsinn meinerseits (Halbwissen rules). Hab’s inzwischen korrigiert. Dadurch werden in der Tat die Zugangsdaten gelöscht und die Default-ID-Adresse 192.168.4.1:4567 wiederhergestellt. :rolleyes:

  • Hm, eigentlich hatte ich dir Mighty61 eine Antwort gegeben, wie du deine Sensoren mit RavenSystem in HomeKit einbindest. Die Antwort wurde offensichtlich (warum auch immer) gelöscht :/


    Also nochmal: du musst deinen ESP umflashen und dann das Beispielscript mit dem von dir benutzten GPIO umändern. Fertig!


    Alles Grundsätzliche kannst du hier in diesem Beitrag nachlesen. Ich habe mir die Mühe gemacht, vieles zum Thema möglichst ausführlich zu dokumentieren (siehe auch meine Signatur)

    Hi, ich habe es nun endlich geschafft die richtig zu flashen.

    Allerdings weis ich jetzt nicht was ich für ein Code nehmen muss.

    Die 2 Temperatur Sensoren DS18B20 sind an 5 und 6 dran.

    Wen ich das richtig verstehe müsste ich den Code ja direkt ins ESP8266 jetzt nach dem falshen:

    MEPLHAA script reinschreiben oder?

    Welchen script schreibe ich da rein damit der direkt an Apple HK die Daten sendet?

    HomeKit Geräte / Homebridge Geräte:

    Raspberry 4 4GB mit raspberrymatic HMIP Komponenten / Homebrifge läuft auf Synology DS220+

  • Wenn du mit 5 und 6 die GPIOs meinst (D1 Mini hat übrigens keinen GPIO 6), probiere:

    Code
    {"a":[{"t":22,"g":5,"n":3},{"t":22,"g":6,"n":3}]}

    Wenn du die D1 Mini Beschriftung D5 und D6 meinst, dann:

    Code
    {"a":[{"t":22,"g":14,"n":3},{"t":22,"g":12,"n":3}]}

    Wenn du beide Sensoren an einen GPIO anschließen willst (bspw. GPIO 14), dann

    Code
    {"a":[{"t":22,"g":14,"n": 3},{"t":22,"g":14,"n":3,"u":2}]}
  • Und wenn man noch ein „j“:5 an den jeweiligen Sensor dazugibt dann wird der Wert alle 5 Sekunden abgerufen.


    Das direkt an Homekit senden macht das Raven System ohnedies. Dafür ist es da. Du musst dem D1mini nur mitteilen, was du alles angeschlossen hast.


    Walta

    Ps: die Anführungszeichen hat das ipad selber umgebastelt. Bitte die richtigen verwenden.

  • HomeKit lernt abzubiegen – Der flexible HomeKit Blinkgenerator

    (Alle Schaltungen werden komplett innerhalb eines ESP ausgeführt. Keine HomeKit-Automationen oder Kurzbefehle!)


    *** Wer nicht lange lesen möchte und vorab einfach mal einen ESP mit dem Blink-Generator testen möchte, kann zum Ende dieses Beitrags eine fertige bin-Datei laden und auf seinen ESP flashen. ***


    Das klassische Blinken "ab Werk" kann HomeKit bekanntlich bis heute nicht, ohne dass man dazu mehr oder minder große Umwege beschreiten muss. Dabei kann es immer mal wieder durchaus hilfreich sein, um per beliebiger blinkender Lampenauswahl – schließlich hängen in allen Räumen irgendwelche smarten Lampen – auf irgendetwas aufmerksam zu machen, wie z.B. das offene Fenster, sobald man die Haustür öffnet.


    Ich selbst habe vor Jahren eine Blinkmöglichkeit vorgestellt, die vollständig innerhalb von HomeKit ausgeführt wird. Die funktioniert zwar mehr oder weniger gut, beansprucht jedoch HomeKit ziemlich, da jeweils 2 Automationen jede Sekunde über einen unbekannten Zeitraum ausgewertet und Schaltungen ausgeführt werden werden müssen.


    RavenSystem kann HomeKit spürbar entlasten und die Auswertung der Automationen übernehmen, während HomeKit dann nur noch schalten muss. Baut man sich per RavenSystem gar eine eigene Lampe, kann man sogar das Schalten des Lichts aus HomeKit outsourcen und bekommt ein waschechtes integriertes Blinklicht.


    Solch ein HomeKit-Blinkkgenerator in 2-Kanalausführung soll in diesem Beitrag grundlegend Step by Step erklärt werden. Er funktioniert sowohl Standalone, um in HomeKit Lampen und/oder Szenen im Sekundentakt ein- und auszuschalten bzw. irgendetwas hin- und herzuschalten. Das Skript selbst kann allerdings als Codeschnispsel auch in ein Lampenskript integriert werden, um dann die Lampe direkt per ESP blinken zu lassen. Übrigens sollten sich auf diesem Wege auch Lampenschaltende Raven-Shellys um eine Blinkfunktion erweitern lassen.


    Die folgende Schaltidee ist identisch mit meiner damaligen HomeKit-Lösung, die ich mithilfe der Geschwister Flip und Flop umgesetzt hatte und deren Namen ich in gebührender ehrfürchtiger Verneigung aus der klassischen Flipflop-Schaltung entliehen habe. Dort ist treffenderweise die Rede von "bistabilen Kippgliedern" (welch großartige Begrifflichkeit!), die wir in RavenSystem perfekt und einfach durch 2 sich gegenseitig schaltende Schalter, genauer gesagt zwei sich gegenseitig schaltende Timerschalter umsetzen können.


    Ich beginne also mit einem Ausgangsskript, das 2 inzwischen altbekannte Timer in HomeKit erzeugt, die sich jeweils nach einer Sekunde, nachdem sie eingeschaltet wurden, selbständig wieder ausschalten:

    Code
    {"a":[{"t":1,"i":1},{"t":1,"i":1}]}

    Die Gebrüder Flip und Flop haben soeben das Licht der virtuellen HomeKit-Welt erblickt, allerdings leben sie im derzeitigen Stadium regelrecht aneinander vorbei. Das wollen wir ganz schnell ändern durch die ebenfalls bereits vorgestellten "Service Notifications", die beiden Geschwisterchen eine einfache Kommunikation ermöglichen nach folgendem Drehbuch:


    Flip (sich einschaltend) Hallo liebe HomeKit-Welt, ich bin Flip und ich schalte mich grad ein, damit ihr irgendwas automatisieren könnt.
    Aber seid gewarnt, ich schalte mich grundsätzlich in 1 Sekunde wieder aus!
    Flip (sich ausschaltend) Hallo liebe HomeKit-Welt, ich schalte mich grad aus, damit ihr irgendwas automatisieren könnt.
    Flop, mein Lieber, übernimm du bitte!
    Flop (sich einschaltend) Hey Flip, mein Lieber, das mache ich doch gern!
    Hallo liebe HomeKit-Welt, ich bin Flop und ich schalte mich grad ein, damit ihr irgendwas automatisieren könnt.
    Aber seid gewarnt, ich schalte mich grundsätzlich in 1 Sekunde wieder aus!
    Flop (sich ausschaltend) Hallo liebe HomeKit-Welt, ich schalte mich grad aus, damit ihr irgendwas automatisieren könnt.
    Flip, mein Lieber, übernimm du bitte!
    (Endlose Dialog-Fortsetzung, bis irgendjemand Einhalt gebietet)


    Dramaturgisch gibt die Unterhaltung zwischen Flip und Flop wenig her und taugt bestenfalls für experimentelles Theater. Das muss uns aber nicht stören, da wir den extrem eintönigen Dialog nicht ertragen müssen, sondern ihn gewinnbringend für unser Schaltvorhaben einsetzen werden. Dazu müssen wir nur Flip, wenn er sich ausschaltet, einen Fingerzeig an Flop senden lassen, damit sich dieser einschaltet. Umgekehrt gilt das gleiche für Flop, der Flip zum Einschalten anstößt, sobald er selbst sich ausschaltet. Wir erinnern uns: Flip und Flop müssen dazu jeweils wissen, an welcher Stelle sie im Skript stehen und sie sollen nur beim Ausschalten dem jeweiligen Gegenüber einen verständlichen Einschaltbefehl mitteilen.


    Flip ist die Nummer 1, Flop die Nummer 2. Die Anweisung respektive "Service Notification", die beide vom Range eines Schalters verstehen, sind (u.a.) "0" und "1".


    Im Skript ergibt das folgenden Dialog-Codeschnipsel für "Hey mein Lieber, schalte dich ein!"

    Code
    {"m":{[2,1]}} // sagt Flip zum Zweiten
    {"m":{[1,1]}} // sagt Flop zum Ersten


    Gleich ein Hinweis für den wahrscheinlichen Fall, dass wir entweder mehrere Geschwisterpärchen haben, weil wir mehrere unabhängige Blinkgeneratoren in einem ESP unterbringen wollen, oder weil die Geschwister nicht unbedingt immer an erster Stelle stehen, da wir noch eine Vielzahl von anderen Service-Types vorgelagert haben:

    Die Positionsangaben oder "Target Service Number" für die Service-Notifications kann, wie eben beschrieben, absolut, aber auch relativ erfolgen. Letzteres macht Sinn, wenn wir nicht immer abzählen wollen, an welcher Stelle das jeweilige Device steht, das wir instruieren wollen. Flip und Flop werden sinnigerweise immer nebeneinandergestellt, sodass Flop für Flip der Nächste ist, umgekehrt Flip für Flop der Vorherige. Dadurch wird es auch egal, wo wir das Pärchen hinverfrachten, beim relativen Nummerieren bleiben die Zuordnungen immer erhalten. Genau das kennen wir bereits aus dem Einleitungbeispiel und ersetzen in diesem Sinne den vorherigen Code durch die relative Entsprechung (ohne weitere Erklärung):

    Code
    {"m":{[7001,1]}} // sagt Flip zum Nächsten
    {"m":{[-1,1]}} // sagt Flop zum Vorherigen

    … und ergänzen damit das Ausgangsskript mit den noch fehlenden Keys für die ausschließliche Mitteilung im Falle des jeweiligen Ausschaltens, also für Action "0":

    Code
    {"a":[{"t":1,"0":{"m":[[7001,1]]},"i":1},{"t":1,"0":{"m":[[-1,1]]},"i":1}]}


    Fertig ist der Homekit-Blinkgenerator!


    Allerdings hat diese verfrühte Version noch einen entscheidenden Nachteil: Einmal angeworfen hört der nie mehr auf, zumindest nicht solange der ESP mit Energie versorgt wird. Das ist natürlich suboptimal, aber kein Beinbruch, denn RavenSystem erlaubt es, jedes beliebige Device über eine weitere Service Notification per "Target Service Value" durch den Wert "-10000" zu deaktivieren.


    Da wir weder Flip noch Flop veranlassen können, ihrem Gegenüber und sich selbst gleichzeitig sowohl das Ausschalten als auch das Einschlafen mitzuteilen, brauchen wir eine weitere Protagonistin in unserem Bühnenstück, die ich Mama Blink nenne. Die freundliche Dame ist in unserem Beispiel ebenfalls vom Stande Schalter "t":1 und damit die Dritte im Bunde. Sie wird dem Erstgeborenen Flip bei ihrem Einschalten mitteilen, dass sich dieser ebenfalls einschalten soll. Das kennen wir bereits:

    Code
    {"m":{[-2,1]}} // sagt Mama Blink als Dritte in der Reihe zu Flip beim Einschalten


    Neu ist die Mitteilung, die Mama Blink beim Ausschalten an ihre beiden Kinder sendet, damit diese sofort einschlafen. Vorher jedoch schaltet Mama Blink beide Schalter ordentlich aus, damit nicht versehentlich einer der Bengels womöglich angeschaltet einschläft.

    Code
    {"m":[[-2,0],[-2,-10000],[-1,0],[-1,-10000]]}
    // sagt Mama Blink zu Flip und Flop beim Ausschalten


    Sobald also Mama Blink ausgeschaltet wird, schlafen beide Geschwisterchen Flip und Flop direkt nach dem Licht löschen bzw. Ausschalten ohne Verzögerung ein und veranlassen sich ab sofort nicht mehr gegenseitig, sich beim Ausschalten jeweils wieder einzuschalten. Es kehrt also planmäßige Ruhe ein. :sleeping:


    Allerdings ist im Moment der Schlaf derart endgültig tief, dass Mama Blink beide Geschwister beim erneuten Einschalten nicht wieder wach bekommt. Sie muss die beiden erst wieder wecken, indem sie sie durch den Wert "-10001 reaktiviert. Erst dann kann sie Flip ausrichten, sich wieder einzuschalten. Insgesamt sieht Mama Blink dann wie folgend aus:

    Code
    {"t":1,"0":{"m":[[-2,0],[-2,-10000],[-1,0],[-1,-10000]]},"1":{"m":[[-2,-10001],[-2,1],[-1,-10001]]} // Mama Blink Soloansicht


    Wichtig ist die Reihenfolge der Anweisungen für Flip: also erst ausschalten und dann einschläfern bzw. erst aufwecken und dann einschalten. Der ESP erledigt diese beiden direkt aufeinanderfolgenden Anweisungen in Millisekunden, und damit gefühlt zeitgleich. Der Blinkgenerator nimmt somit seine voll funktionstüchtige Form wie folgt an und sieht dann so aus wie die Animation zu Anfang des Beitrags:

    Code
    {
    "a":[
    {"t":1,"0":{"m":[[7001,1]]},"i":1},    // Flip
    {"t":1,"0":{"m":[[-1,1]]},"i":1},    // Flop
    {"t":1,"0":{"m":[[-2,0],[-2,-10000],[-1,0],[-1,-10000]]},"1":{"m":[[-2,-10001],[-2,1],[-1,-10001]]}    // Mama Blink
    }]
    }


    Nichts ist so gut, dass es nicht noch besser gemacht werden könnte. Wir erinnern uns an die im D1 Mini integrierte LED, die zukünftig die dröge aber rege Unterhaltung zwischen Flip und Flop, sprich das Blinken anzeigen soll. Dafür reicht es, wenn wir z.B. nur Flip mit der LED "verdrahten" und Flop unberücksichtigt lassen. Besagte LED ist über GPIO 2 schaltbar und leuchtet auf, wenn dieser den Status "low" erfüllt. Das hatten wir bereits bei der selbstgebauten HomeKit-LED ausführlicher erklärt, soll also hier nicht weiter vertieft werden. Wir müssen somit Flip neben der bereits vorhandenen Service Notification an Flop die zusätzlichen nötigen Schaltbefehle für die interne LED in folgender Form überreichen:

    Code
    {"t":1,"0":{"r":[{"g":2,"v":1}],"m":[[7001,1]]},"1":{"r":[{"g":2}]} // Flip

    Was zur folgenden Skript-Version führt:

    Code
    {"a":[{"t":1,"0":{"r":[{"g":2,"v":1}],"m":[[7001,1]]},"1":{"r":[{"g":2}]},"i":1},{"t":1,"0":{"m":[[-1,1]]},"i":1},{"t":1,"0":{"m":[[-2,0],[-2,-10000],[-1,0],[-1,-10000]]},"1":{"m":[[-2,-10001],[-2,1],[-1,-10001]]}}]}


    Noch ein letztes Problem werden wir mit dem inzwischen voll funktionstüchtigen HomeKit-Blinkgenerator samt mitblinkender LED haben. RavenSystem sieht standardmäßig vor, dass 8-maliges Toggeln eines Schalters den Setup Mode des ESP aktiviert und diesen damit in HomeKit unerreichbar werden lässt. Der Blinkgenerator wird diese 8-maligen Schaltvorgänge schnell ausgeführt haben. Er wird sich dadurch ungewollt regelmäßig in HomeKit temporär abmelden, was ja nicht unbedingt in unserem Sinne ist.


    Natürlich sieht RavenSystem mehrfache Möglichkeiten vor, diesen Standard zu modifizieren – dies u.a. in der bisher noch nicht erwähnten "Accessory Configuration", die an dieser Stelle noch nicht weitergehend erklärt werden soll. Im Beispielskript ergänze ich für diesen Zweck eine weitere Steckdose, die direkt nach Betätigung den Setup Mode auslöst, während ich vorher noch den Standard des 8-maligen Toggles komplett deaktiviere. Das erreiche ich durch den "Setup Mode Toggle Count" Key "z":0 im besagten Konfigurationsteil des Skripts, der dem Accessory-Teil mit dem Key "a" über den Configuration Key "c": vorangestellt ist, was dann den folgenden Zusatz im Skript bringt:

    Code
    "c":{"z":0}


    Da wir durch diese Deaktivierung allerdings den Setup Mode des ESP nicht mehr (ohne Weiteres) aktivieren können, erklärt sich die Steckdose, die natürlich auch ein Schalter sein könnte, sich als Steckdose rein visuell aber besser von dem Blinkschalter-Trio absetzt, und über die wir den Setup Mode für unser Beispiel alternativ wieder hinkriegen. Wohlgemerkt, das ist eine von mehreren Möglichkeiten, die nicht genannt sind, um den Beitrag nicht noch mehr ausufern zu lassen.


    Die besagte Steckdose tut also nichts anderes als per "System Action" mit dem Key "s" den Setup Mode über Key "a":1 zu aktivieren. Diese Steckdose ist somit mit Vorsicht zu genießen, da sich der ESP beim Einschalten derselben sofort aus HomeKit abmeldet:

    Code
    {"t":1,"1":{"s":[{"a":1}]}} // Schalter "An" löst Setup Mode des ESP aus


    Das nun finale, voll funktionstüchtige und problemfreie Skript sieht so aus:

    Code
    {"c":{"z":0},"a":[{"t":1,"0":{"r":[{"g":2,"v":1}],"m":[[7001,1]]},"1":{"r":[{"g":2}]},"i":1},{"t":1,"0":{"m":[[-1,1]]},"i":1},{"t":1,"0":{"m":[[-2,0],[-2,-10000],[-1,0],[-1,-10000]]},"1":{"m":[[-2,-10001],[-2,1],[-1,-10001]]}},{"t":2,"1":{"s":[{"a":1}]}}]}

    (In der Home App wurde die Steckdose als Lampe umdefiniert und setzt sich dadurch vom Blinkschalter-Trio noch deutlicher ab.
    Den Blinkgenerator in Aktion sieht man in der Animation zu Beginn des Beitrags)


    Verlassen wir die alleinerziehende Mama samt ihrer beiden Söhne und sehen uns die neue Basis-Schaltgruppe für HomeKit bestehend aus 3 Schaltern (+ Setup Mode Steckdose) für den praktischen Einsatz an. In HomeKit integriert können ab sofort beliebige Automationen das Blinken über Mama Blink sowohl einleiten als auch beenden. Flip und Flop ihrerseits bieten im Sinne einer 2-kanaligen Blinkschaltung diverse Möglichkeiten, das gewünschte Blinken zu "gestalten". Vom einfachen Ein und Aus einzelner Lampen über das 2-kanalige Hin und Her neben-/übereinander positionierter Lampen bishin zum oszillierenden Umschalten von Szenen ist nun alles möglich, um auf diverse Dinge im trauten HomeKit-Heim visuell aufmerksam zu machen – das Ganze, ohne zu Löten, ohne zu Schrauben, ohne zu Verkabeln, ausschließlich mit dem ESP.


    Sehr leicht lassen sich nach Bedarf weitere Schalter in das Skript ergänzen, die etwa die identische Funktion von Mama Blink haben mit dem Unterschied, dass diese per einfachem zusätzlichen "i" Key ihrerseits zu Timern umfunktioniert werden. Dadurch lässt sich in HomeKit direkt auswählen, wie oft die Blinkfunktion wiederholt werden soll. Mit "i":6 als Zusatz würde Flip exakt 3x einschalten, um dann von selbst in den Schlaf zu verfallen.


    Ein Hinweis zum Blinkzeit-Intervall von 1 Sekunde im Beispielskript: Der ESP kann deutlich höhere Schalt-Frequenzen sauber verarbeiten, jedoch ist dann HomeKit u.U. schnell durch die wachsende Schaltbefehl-Bombardierung überfordert und kommt nicht mehr hinterher. Jeder kann bei Interesse gern mal die "i" Key Werte von Flip und Flop verkleinern (bspw. "i":0.5 für 1/2 Sekunde), um zu testen, wann HomeKit aufgibt.