Spezielles Nachtverhalten

Hi Zusammen,
Ich habe eine neue und sehr spezifische Anforderung:
Wenn die Uhrzeit (über Server) Nacht definiert dann geht die Box beim Einschalten direkt in den Sleepmodus (z.B. 30 min) und die maximale Lautstärke ist begrenzt.
Ich würde das entweder einfach für mich einbauen, bei Interesse aber auch bisschen hübscher umsetzen und als PR vorbereiten.
Gibt es dazu Meinungen?

woher weißt du das Nacht ist?

wenn sollte das ohne externe Abhängigkeiten gehen…

(Ich weiß das man den aktuellen Sonnenstand berechnen kann, dazu muss man aber div Parameter in eine doch relativ aufwendige Funktion reinkippen)

Also meine Eltern haben ja immer gesagt, dass nacht geschlafen wird :rofl:

Vor einer Weile hatte ich ja mal das Feature vorgeschlagen, dass dann dimmt, wenn man Volume auf 0 dreht. Und man nimmt es wieder weg, wenn man erneut auf 0 dreht. Das ist ziemlich minimal-invasiv und hat keinerlei externen Abhängigkeiten.

Das von dir Vorgeschlagene würde bei uns z.B. im Urlaub nicht funktionieren, da die ESPuinos dann nicht im WLAN sind und dementsprechend die Uhrzeit nicht wissen.

In „schnieke“ kriegt man sowas im heimischen WLAN auch per MQTT und einem Smarthome-System wie Home Assistant, OpenHAB… gelöst per Rule.

Im ersten Schritt hätte ich mir die Zeit einfach über einen Zeitserver geholt. Aber eigentlich müsste der ESP auch ein RTC Modul oder was ähnliches haben, damit das auch offline klappt.
Nacht hätte ich über zwei Uhrzeiten definiert.
Mein Sohn hat die Box am Bett und nutz sie sehr effektiv zum Einschlafen. Aber er ist halt nicht alleine im Zimmer :grin:

Aber um die Sache abzuschließen:
Ich werde es für mich machen und dann hier reinstellen, falls doch noch jemand Bedarf/Interesse daran hat.

1 „Gefällt mir“

Hier ein Branch, auf dem es soweit so läuft wie ich mir das vorgestellt habe:

Beim Weg dahin sind zwei Dinge aufgefallen:

  1. Im Falle, dass kein WLAN aktiv ist wird auch die Zeitzone nicht korrekt gesetzt und somit ist die RTC-Zeit falsch. Durch das aufrufen der folgenden zwei Zeilen in der main.cpp habe ich das gefixed:
	setenv("TZ", timeZone, 1);
	tzset();
  1. Wenn die Zeitzone korrekt gesetzt wird, zeigt sich, dass die weiche Aufsynchronisierung auf den NTP-Server nicht funktioniert. Durch das Ändern des Sync-Modus in der Wlan.cpp klappt es wieder:
	sntp_set_sync_mode(SNTP_SYNC_MODE_IMMED);

Dies ist davor nicht aufgefallen, da durch das fehlende Setzten der Zeitzone automatisch der Offset immer so groß war, dass sofort synchronisiert wurde.

In summe sind es nach den beiden Fixes nur wenige Zeilen in der Settings.h und aktuell main.cpp.

Falls noch mehr interesse dran haben kann man das natürlich auch noch schöner machen, für mich passt es erstmal so :slight_smile:

2 „Gefällt mir“

Zur Vollständigkeit sei erwähnt, dass dieses Feature auch den Weg in den dev-Branch gefunden hat:

Edit: Bisher noch nicht das Ganze sondern nur der Zeitanteil. (eieiei, @biologist!)

Wurde Datum/Uhrzeit einmal über das Internet (NTP) gestellt, steht sie nun auch ohne WLAN direkt nach dem Aufwachen/Soft-Neustart zur Verfügung.
Im Deep-Sleep läuft die Uhr mit der internen RTC weiter. Ein Hard-Reset setzt Datum/Uhrzeit auf 0 zurück.

5 „Gefällt mir“

Habe den dev-branch reingemerged :+1:
Kleine Korrektur meinersets noch: Da die Initlautstärke größer als die Max-Lautstärke sein kann und dass zu einer fixen und unanpassbaren Lautstärke führt habe ich das noch durch das setzten der Lautstärke vermieden.