Inhaltsverzeichnis:

ESPHOME SONOF S26 Zeitgesteuertes Licht - Gunook
ESPHOME SONOF S26 Zeitgesteuertes Licht - Gunook

Video: ESPHOME SONOF S26 Zeitgesteuertes Licht - Gunook

Video: ESPHOME SONOF S26 Zeitgesteuertes Licht - Gunook
Video: Sonoff S26 R2 - how to flash ESPHome or Tasmota 2024, November
Anonim
ESPHOME SONOF S26 Zeitgesteuertes Licht
ESPHOME SONOF S26 Zeitgesteuertes Licht

Guten Tag. Ich habe also eine Aquariumbeleuchtung, die ich zu einer bestimmten Tageszeit ein- und ausschalten möchte. Ich musste es mir nur kompliziert machen. Ich möchte die Ein- und Ausschaltzeit über mein Home Assistant-Dashboard ändern können. Vielleicht sogar noch mehr.

Mal sehen, wie viel mehr ich mich in ein Kaninchenbau bringen kann.

Schritt 1: Schritt 1: Ich brauche eine Möglichkeit, die Zeiten vom Home-Assistenten zu senden

Etwas googeln hilft. Einige Haare ausziehen hilft, wenn Sie tatsächlich ein:POÖffnen Sie mein Visual Studio Code Editor Add-on. Suchen Sie im Ordner Config die Datei configuration.yaml und kopieren und fügen Sie einige Dinge ein, die ich in einem Forum versteckt gefunden habe. Tut mir leid, wenn ich mich daran erinnern würde, würde ich es bestätigen. Code hinzugefügt und Heimassistent neu gestartet.

Schritt 2: Schritt 2: Folgender Code zu Configuration.yaml hinzugefügt

Schritt 2: Folgender Code zu Configuration.yaml hinzugefügt
Schritt 2: Folgender Code zu Configuration.yaml hinzugefügt

Eingabenummer:

ft_start_hr:

Name: FT Light Start Hours

Symbol: mdi:Uhr-Start

min: 0

max: 23

Schritt 1

# Initiale: 13

Die erste Zeile ist die Entitäts-ID der Eingabenummer.

Als nächstes brauchen wir ein paar Details für diesen kleinen Kerl:

Ein Name wird großartig sein: FT Light Start Hours für diesen P. S. FT steht für Fish Tank… Nicht das, was Sie dachten, oder?

Weiter ist ein optionales Symbol. Es gibt viel zur Auswahl, also verrückt werden … oder nicht.

Dann können wir einen Min-, Max- und Schrittwert eingeben. Da dies Stunden sind, habe ich 0 - 23 mit Einzelschritten gewählt.

Anfangs hatte ich einen Anfangswert und wenn der Heimassistent neu gestartet wurde, änderte er ihn auf diesen Anfangswert. Ich beschloss, es auszukommentieren, da ich wollte, dass Home Assistant versucht, sich an den letzten Wert zu erinnern, den ich dafür eingestellt hatte.

Sie können den Modus aktivieren, um eine Box auszuwählen. Aber standardmäßig wählt es einen schönen Schieberegler für Sie. Ich denke, ein Slider wird für jetzt tun.

Achten Sie auf die Einkerbungen, da sie sehr wichtig sind. Siehe das Bild

Diese geben Ihnen also Entitäten im Heimassistenten, die Sie anpassen können.

Hier ist ein Link zu weiteren Informationen über Eingabenummern:

www.home-assistant.io/integrations/input_n…

Schritt 3: Schritt 3: Jetzt müssen wir die Informationen an die ESPHOME-API abrufen

Schritt 3: Jetzt müssen wir die Informationen an die ESPHOME-API abrufen
Schritt 3: Jetzt müssen wir die Informationen an die ESPHOME-API abrufen

Sensor:

- Plattform: Vorlage

Sensoren:

ft_start_hr:

value_template: '{{ States.input_number.ft_start_hr.state | int }}'

n

Dadurch erhält die ESPHome-API die erforderliche Verbindung und ist jetzt eine Ganzzahl anstelle eines ausgefallenen Textschiebers:-P

Hier nimmt es den Eingangsnummernzustand und wandelt ihn in eine ganze Zahl um und speichert ihn in einem Sensor.

Hier noch einige Informationen zu den Vorlagen:

www.home-assistant.io/integrations/template…

Oh, ich habe die Dateierweiterung meiner Datei in Text geändert, damit ich sie hochladen kann … Instructables können mit einem Yaml zerstörbar sein …

Schritt 4: Schritt 4: Also die ESPHome-Konfiguration des Steckers jetzt

Schritt 4: Also die ESPHome-Konfiguration des Steckers jetzt
Schritt 4: Also die ESPHome-Konfiguration des Steckers jetzt

Ich habe mit einer Basiskonfiguration für den S-On-Off-Stecker angefangen und dann angefangen zu basteln.

Ich werde nicht näher darauf eingehen, wie man den S26-Stecker mit ESPHome flasht, da Google alle Antworten hat.

Meine vollständige Konfigurationsdatei steht am Ende zum Download bereit. Da Da Dah…

Beginnen wir also mit dem mit Home Assistant verknüpften Teil:

Wir müssen Sensoren erstellen, die mit den Sensoren im Home Assistant übereinstimmen, damit sie miteinander kommunizieren können.

Schritt 5: Schritt 5: die ESPHome Home Assistant-Verbindung… Beam Me Up Scotty

Schritt 5: Die ESPHome Home Assistant-Verbindung… Beam Me Up Scotty
Schritt 5: Die ESPHome Home Assistant-Verbindung… Beam Me Up Scotty

Sensor:

- Plattform: Haushaltshilfe

Entity_id: sensor.ft_start_hr

ID: id_ft_start_hr

Nun erstellen wir in ESPHome einen Sensor vom Typ homeassistant. Wer hätte es erraten?

Die Entitäts-ID muss mit der übereinstimmen, die Sie in Ihrer Datei configuration.yaml eingerichtet haben.

Ich habe eine ID eingerichtet, damit ESPHome diesen Sensor in seiner Fülle an Gedanken referenzieren kann.

Schritt 6: Schritt 6: Lassen Sie uns etwas Zeit hinzufügen

Schritt 6: Lassen Sie uns etwas Zeit hinzufügen
Schritt 6: Lassen Sie uns etwas Zeit hinzufügen

Da es sich also um einen zeitgesteuerten Plug handelt … Fügen wir tatsächlich etwas Zeit hinzu … Oder wird es subtrahiert? Es ist jetzt in der Vergangenheit?

Hier sind einige Grundlagen der Zeitkomponente. Wir können einige verschiedene auswählen, aber ich habe mich für eine Haushaltshilfe entschieden. Zu einfach?

esphome.io/components/time.html

Schritt 7: Schritt 7: Intervall

Schritt 7: Intervall
Schritt 7: Intervall

Nein, es ist keine Pause, oder?

Intervall:

- Intervall: 1 Sek.

dann:

- Lambda: |-

id(gl_ft_start_hr) = id(id_ft_start_hr).state;

Also habe ich ein Intervall von 1 Sekunde eingestellt, um den Sensorwert vom Heimassistenten in die globale Variable zu schreiben.

Ich möchte dies nur einmal pro Sekunde tun, während die Zeit tickt…tick tock

Schritt 8: Schritt 8: So haben wir Zeit und Geld… Wie geht es weiter?

Schritt 8: So haben wir Zeit und Geld… Wie geht es weiter?
Schritt 8: So haben wir Zeit und Geld… Wie geht es weiter?

Also entschied ich mich, eine binäre Sensorvorlage zu verwenden, um zu bestimmen, ob es Zeit ist, den Schalterschalter einzuschalten… Relais

Ich habe drei Schalter mit den IDs erstellt: start_time_valid, stop_time_valid und run_time_valid

start_time_valid ist wahr, wenn die eingestellte Zeit zum Einschalten des Relais jetzt überschritten ist.

Ich habe verschachtelte if-Anweisungen verwendet, um zu überprüfen, ob wir größer oder gleich den erforderlichen Sekunden, dann den Minuten und schließlich den Stunden waren.

stop_time_valid ist wahr, wenn es jetzt ist, bevor es Zeit ist, den Schalter auszuschalten. Dies wird umgekehrt, um zu überprüfen, ob die erforderliche Zeit zum Abschalten des Relais noch nicht abgelaufen ist

run_time_valid ist wahr, wenn sowohl start_time_valid als auch stop_time_valid wahr sind. Ich vermute, ich hätte einfach eine normale und Bedingung für dieses hier verwenden können. Ich bin gerade mit Lambdas in Schwung gekommen.

- Plattform: Vorlage

Name: "Startzeit gültig"

ID: start_time_valid

Lambda: |-

if (id(homeassistant_time).now().hour > id(gl_ft_start_hr)) {

true zurückgeben;

}

else if (id(homeassistant_time).now().hour == id(gl_ft_start_hr) &&

id(homeassistant_time).now().minute > id(gl_ft_start_mn)) {

true zurückgeben;

}

else if (id(homeassistant_time).now().hour == id(gl_ft_start_hr) &&

id(homeassistant_time).now().minute == id(gl_ft_start_mn) &&

id(homeassistant_time).now().second >= id(gl_ft_start_ss)){

true zurückgeben;

}

anders {

falsch zurückgeben;

}

Schritt 9: Schritt 9: Nun zu einigen Skripten: 'Sein oder Nichtsein: Das ist die Frage'

Schritt 9: Nun zu einigen Skripten: "Sein oder Nichtsein: Das ist die Frage"
Schritt 9: Nun zu einigen Skripten: "Sein oder Nichtsein: Das ist die Frage"

Hmm falsches Drehbuch, Alter!

Wenn ich also den Schalter eingesteckt habe … oder der Hausstrom gerade wieder ankam, wollte ich, dass der Schalter weiß, ob er ein- oder ausgeschaltet sein soll, und entsprechend handeln. (ja, wir gehen alle zum Schauspielunterricht)

Die erste Skript-ID: checkstatuson prüft, ob wir eingeschaltet sein sollen und handeln entsprechend. Ich habe auch ein globales Flag mit der ID: trackingon eingefügt, um sicherzustellen, dass dieses Skript nur einmal ausgeführt wird und meine anderen Skripte nicht daran gehindert werden, ihre Rolle im Spiel zu übernehmen.

Dies hat 3 Bedingungen: Das Relais ist ausgeschaltet, es soll eingeschaltet sein und ich habe meinen Teil noch nicht getan. Dies schaltet dann alle anderen laufenden Skripte aus, schaltet das Relais ein und setzt die Tracking-Flags.

Die zweite Skript-ID: checkstatusoff ist genau das Gegenteil der ersten. Wir prüfen nur, ob wir jetzt die Vorhänge schließen müssen. Das Tracking-Flag für dieses ist trackingoff

Ich führe diese beiden Skripte im 1-Sekunden-Intervall aus, um jede Sekunde zu überprüfen.

Schritt 10: Schritt 10: Einige Bonusskripte

Schritt 10: Einige Bonusskripte
Schritt 10: Einige Bonusskripte

Zwei weitere Funktionen, die ich hinzufügen wollte, waren, wenn ich das Licht am Tank ausschaltete, dass es nach 5 Sekunden wieder einschaltet, wenn das Licht zu diesem Zeitpunkt an sein soll. Auch wenn das Licht aus war und ich es einschalten wollte, um meine Fische zu sehen, und es außerhalb seiner geplanten Zeit war, würde es für 5 Minuten angehen. Ja, 5 Minuten sind lang genug… Machen Sie sich wieder an die Arbeit.

Die erste Skript-ID: Relayisoff schaltet das Licht für 5 Minuten ein, wenn es nicht pünktlich ist, und schaltet es dann aus.

Die zweite Skript-ID: Relayison ist praktisch umgekehrt als die erste und schaltet das Licht 5 Sekunden später wieder ein, wenn es an sein soll. Wer hat gesagt, dass Sie mein Licht Mister ausschalten können!

Hier sind einige weitere Informationen zu Skripten:

esphome.io/guides/automations.html

Einige Bonusinformationen zu Skripten sind, dass sie nicht blockieren. Es sei denn, Sie setzen eine Verzögerung in ein Lambda. Äh Nein Nein Nein

Schritt 11: Schritt 11: Einige abschließende Gedanken

Schritt 11: Einige abschließende Gedanken
Schritt 11: Einige abschließende Gedanken
Schritt 11: Einige abschließende Gedanken
Schritt 11: Einige abschließende Gedanken

Vom Home-Assistenten wollte ich, dass sich der Schalter genauso verhält wie der Knopf.

Ich habe keinen Namen für den lokalen Schalter des binären Sensors eingegeben, da ich nicht sehen musste, wie er in den Heimassistenten gedrückt wird.

Ich habe keinen Namen für den Relaisschalter angegeben, da ich die Skripte für das Umschalten vom Heimassistenten verwenden wollte.

Ich habe einen Vorlagenschalter mit einem Namen erstellt, damit ich damit vom Home-Assistenten wechseln kann. Es wird meine Skripte genauso ausführen wie der lokale Switch am Stecker.

Ich habe nicht getestet, ob das Ausschalten meines Heimassistenten, wenn der Stecker noch richtig funktioniert, funktioniert. Ich hoffe es. Ich habe einige Beiträge zu einigen Problemen beim Verlust der Verbindung zur Home Assistant-API gesehen.

Ich hoffe wirklich, dass dieses kleine Tutorial Ihnen helfen wird und zögern Sie nicht, mir zu helfen, es besser zu machen. Ich bin kein Experte und lerne sehr langsam. Ich dachte nur, einige Dinge, die ich gelernt habe, könnten jemandem da draußen helfen, der Schwierigkeiten hat, es herauszufinden.

Jetzt können Sie die Zeiten im Home Assistant basierend auf Sonnenauf- und -untergang ändern…+ - ein paar

Empfohlen: