[Projekt] Eigenbau-Wecker mit Anbindung an FHEM

Begonnen von roedert, 07 November 2017, 00:59:37

Vorheriges Thema - Nächstes Thema

roedert

Ich bin Fan eines klassischen Weckers und habe nur ungern ein Gerät mit kompletten OS (Android), hintergrundbeleuchtetem LCD und extra Wecker-App. Allerdings hat ein klassischer Wecker mit LCD-Anzeige keine Netzanbindung und ist somit nicht über FHEM steuerbar. Wichtig war mir vor allem das Ein- und Ausschalten des Weckers entsprechend dem FHEM-Feiertags- bzw- Urlaubskalenders.
Also gehts an den Eigenbau .... ESP8266, RTC DS3231, 4 MAX7219-Displaymodule (8x8 Pixel), paar Taster und ein Buzzer.
Sketch ist soweit rudimentär fertig, dass die Uhrzeit angezeigt wird, beim Einschalten und jede volle Stunde die Uhrzeit per ntp aktualisiert wird und Weckfunktion incl Snooze einstellbar und aktivierter/deaktivierbar ist.
Es läuft ein kleiner Webserver worüber man Wecker ein- und ausschalten und Weckzeit setzen kann. in FHEM habe ich dafür einen dummy mit notify eingerichtet, welches per curl die entsprechende URL aufruft. Ein extra FHEM-Modul wollte ich dafür nicht extra basteln.
Durch die ntp-Anbindung hätte man auch komplett auf die RTC verzichten können, ich wollte diese aber noch als "Gangreserve" im Hintergrund haben. Evtl. entfällt dies aber noch in Zukunft wenn ich einen extra Batterie/Akkupuffer als Gangreserve bei Stromausfall einbaue um nicht nur die Uhrzeit weiterlaufen zu lassen, sondern den kompletten ESP8266 und somit auch den Buzzer auslösen lassen kann.

ToDo's sind noch:
- Optimierung des Sketches, Einbindung einiger Taster und Funktionen fehlt noch
- Bug in der ntp-Abfrage (manchmal bekomme ich ein um eine Stunde falsches Ergebnis)
- "ausfallsicheres" Abspeichern der Weckzeit im EEPROM des 8266 oder im batteriegepufftem Speicher der RTC
- Gehäuse ... evtl. per 3D-Druck
- Batteriepuffer um auch ein Wecken bei Stromausfall sicherzustellen
- schickeres Display - am liebsten in weiss ... bisher habe ich aber nur rote 8x8-Module gefunden (mit imho gemeinsamer Anode)

Vielleicht dient es ja dem einem oder anderen auch als Anregung oder hat sogar Interesse an der Weiterentwicklung oder auch  nur weitere Ideen.

Aktuell sind das Teil zwar noch mehr wie ein selbstgebauter Zeitzünder aus ... aber das wird sich auch noch ändern  :) 

Gunther

Spannendes Projekt. Auch wenn ich außer Ideen nicht viel dazu beisteuern kann. Da fallen mir schöne Szenarien ein.
Ich lese mal mit.
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

Tueftler1983

Ich gucke auf jeden Fall mit zu, mir würde z.b. noch gefallen wenn ein dht22 noch seine Daten an fhem schickt. War es mit nem esp8266 Musik wieder zu geben zumindest Melodien?

MadMax-FHEM

Zitat von: Tueftler1983 am 07 November 2017, 23:42:01
Ich gucke auf jeden Fall mit zu, mir würde z.b. noch gefallen wenn ein dht22 noch seine Daten an fhem schickt. War es mit nem esp8266 Musik wieder zu geben zumindest Melodien?

Mit nem angeschlossenen mp3-Modul sollte das kein Problem sein ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Gunther

Ne LAN Version wird vermutlich schwierig oder?
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

mahowi

Läßt sich das Display dimmen? Ansonsten wäre mir das etwas zu hell im Schlafzimmer.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

Gunther

Wenn ich das richtig verstanden habe musst Du es einschalten.
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

dev0

Hast Du den Link zum Quellcode vergessen oder habe ich ihn übersehen?

roedert

#8
Update:
Den "Webserver" lasse ich vielleicht als optionales "Frontend", die Kommunikation mit FHEM erfolgt mittlerweile komplett über MQTT und läuft soweit auch prima.
FHEM kann den Wecker aktivieren / deaktivieren und die Weckzeit setzen.
Der Wecker liefert jede Statusänderung vom Wecker (on/off/Weckzeit/ausgelöst/Snooze) an FHEM.

Ne LAN Version wird vermutlich schwierig oder? ... nö, dann nimmst zB ein Arduino mit Ethenet-Shield - sind dann sicher noch ein paar Anpassungen nötig, aber denke ich machbar
Läßt sich das Display dimmen? Ansonsten wäre mir das etwas zu hell im Schlafzimmer. ... man kann dem Display per Software verschiedene Helligkeitswerte vorgeben, aber selbst der kleinste Wert ist noch ziemlich hell. Daran muss ich auch noch arbeiten - per Elektronik oder einfach nur ne getönte Scheibe vor - oder nen ganz anderes Display.
Hast Du den Link zum Quellcode vergessen oder habe ich ihn übersehen? ... soweit bin ich ja noch nicht wirklich dass man den schon "veröffentlichen" könnte ... kommt aber denke ich bald

Edit:
Hab mal den aktuellen Quellcode angehangen.
Ist noch vieles "quick and dirty", aktuell ist noch offen:
- NTP-Bug: manchmal wird eine um eine Stunde falsche Uhrzeit eingestellt
- Buzzer löst nach Ablauf des Snooze-Intervals noch nicht wieder aus
- Weckzeit und Status sollten im EEPROM gespeichert werden

Außerdem sind das nach langem wieder mal meine ersten Programmierungen, ausserdem bin ich neu in der Arduino-Welt. Also werden einige Teile im Quellcode unsauber oder auch "ungeschickt" sein - aber es funktioniert erstmal.
Thema MQTT war auch komplett neu für mich, hoffe ich habe es soweit verstanden und die Umsetzung ist auch korrekt - wie auch immer, sie funktioniert zumindest.

In FHEM sieht der Wecker dann so aus:
defmod FHEMclock MQTT_DEVICE
attr FHEMclock IODev MQTTbroker
attr FHEMclock publishSet FHEMclock/set/
attr FHEMclock stateFormat transmission-state
attr FHEMclock subscribeReading_alarm FHEMclock/alarm
attr FHEMclock subscribeReading_buzzer FHEMclock/buzzer
attr FHEMclock subscribeReading_almtime FHEMclock/almtime


Vom Wecker werden diese Reading gefüllt:
alarm ative|disabled
buzzer on|off
almtime hh:mm


Steuern kann man den Wecker von FHEM aus mit
set FHEMclock alarm=on
set FHEMclock alarm=off
set FHEMclock almtime=hhmm


Per

Was ähnliches habe ich auch vor, eine Uhr mit normaler und mit gespiegelter Anzeige nebeneinander, damit sie im Badspiegel genauso gelesen werden kann wie direkt. Aber ohne Wecker (wenn ich im Bad bin, bin ich ja schon "wach" ;)).

Zitat von: roedert am 11 November 2017, 04:55:29Edit:
Hab mal den aktuellen Quellcode angehangen.
Pack sowas besser in den ersten Post, sonst findet man das später schlecht wieder.

accessburn

Hallo roedert,
erst mal "danke" für die coole Idee. Ich bin drauf und dran es nach zu bauen da ich großes Interesse an einem smarten Wecker habe  :)
Das Gehäuse druck ich mir dann einfach selber  :)
Display würde ich ein OLED 0.96 nehmen, was in der Nacht zwar schwer zu sehen ist, den Raum aber nicht unnötig erhellt und auch nicht den halben Nachttisch in Beschlag nimmt. Zum Testaufbau nutze ich die MAX7219, wie du, jedoch musste ich nachbestellen und China dauert  ;)

Also, bleib bitte am Ball, ist nämlich ein tolles Projekt! 8)
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

roedert

Zitat von: accessburn am 15 November 2017, 14:39:48
Also, bleib bitte am Ball, ist nämlich ein tolles Projekt! 8)

Ja, bleib ich auf jeden Fall! Bin gerade noch im Urlaub ... der 3D-Drucker ist aber mittlerweile angekommen!
Softwareseitig bin ich gerade noch am Projekt "Wasserzählersensor" dran, da wird einiges des erlernten KnowHows bzgl. Weboberfläche, Konfigurationsseite etc. auch noch in den Wecker einfliessen.
Funktionell ist soweit eigentlich alles umgesetzt - jetzt geht es nur noch um "Feinarbeit" bei Software und eben vernünftiger Hardware.

roedert

OLED-Display klingt prinzipiell auch nicht schlecht. Allerdings müsste es immer an sein - erst nen Knopf drücken um die Uhrzeit zu erfahren scheidet bei mir aus. Ein OLED sollte ja auch mit entsprechend geringer Helligkeit einzustellen sein?
Allerdings habe ich kaum was in der Größe brauchbares gefunden - die Teile lagen meist bei 1" oder drunter.
Die Anzeige sollte schon 2 oder eher 3 cm hoch sein. Kennt da wer was passendes?
Und MP3-Weckton klingt auch nicht schlecht - allerdings dann wie vorgeschlagen über ein MP3-Modul was nur vom ESP aus getriggert wird.
Muss mal suchen ob es da was brauchbares gibt.

accessburn

Bei der Größe des OLEDs geb ich dir vollkommen recht. Zum Thema Dauerleuchten denke ich auch an die Lebensdauer des Displays, wie lange können die so im Durchschnitt leben? Für MP3s habe ich ein, noch hier rumliegenden "DFPlayer mini" vorgesehen.

Ich hänge mal mein halbfertiges Fritzing an.
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

roedert

Bei der weiteren Displaysuche bin ich jetzt auf RGB-8x8-LED-Matrixdisplays mit 60x60mm gestossen ... muss ich mich mal weiter einlesen, denen aber das könnte das richtige sein ... einfach mal bei aliexpress nach Colorduino suchen.

Nachdem ich jetzt soweit alle Grundlagen für den Wecker geklärt habe, würde ich die Displayfrage gerne erste klären bevor ich weitere Zeit und Arbeit in Soft- und Hardwareentwicklung stecke.