Tag 17: Wake Up Light
Das Projekt des heutigen Tages orientiert sich an einer bekannten Lampe von Phillips, dem Wake Up Light. Es handelt sich dabei um einen sanften Wecker, denn anstelle laut zu tönen wird langsam die Helligkeit erhöht. So entsteht eine Art Sonnenaufgang und der Körper wird auf natürliche Weise wach.
Hinter dem heutigen Türchen befindet sich ein weites Poti, welches für den morgigen Versuch wichtig ist. Heute wird folgender Aufbau benötigt:
Nach dem Aufbau können Sie das Programm herunterladen und auf das Board uploaden. Nach dem Aufspielen öffnen Sie den Browser und geben die IP des Boards ein. Auf der nun erscheinenden Seite können Sie einen Zeitpunkt auswählen, zu dem der Wake-Up-Vorgang starten soll. Außerdem können Sie die Dauer angeben. In der Standardeinstellung sind es 30 Minuten. Wenn der Zeitpunkt erreicht wird, beginnt die LED zunächst rot und dunkel zu leuchten. Langsam wird sie immer heller und schließlich mischt sich auch die grüne LED dazu, was einen gelben Ton ergibt. Zuletzt erhellt sich auch die blaue LED, was in einem helles Weiß resultiert mit dem das ganze Schlafzimmer erhellt wird.
Hallo,
ich kann den Code nicht mehr ansehen.
Es steht immer dort „This sketch is no longer here“.
Hat den noch jemand?
LG
Auch nach mehreren Anläufen und Rumprobieren mit den Tipps aus dem Kommentaren leuchtet das Lämpchen immer noch nicht. Die Hardware habe ich mit dem Programm vom Tag 10 schon getestet, damit sollte also alles in Ordnung sein.
Das ist der Text aus dem seriellen Monitor. M.E. fehlt die Info, wann die Lampe angehen soll, oder? Hat jemand eine Idee?
Raspberry Pi Nutzer
„rien ne va plus“
Lieber Fabian Kainka,
bitte machen Sie die Community darauf aufmerksam, das mit der aktuellen Arduino-IDE z.B. auch Tag 17 wegen diverser Compiler-Fehlermeldungen nicht machbar ist…
Die Arduino-IDE ist einfach veraltet….
Kennt jemand eine Möglichkeit die anderen 3 LEDS (2 blaue, 1 rote) auf dem NanoESP auszuschalten? Nachts sind sie mir zu hell.
ich hab ein ganz anderes Problem
Beim Hochladen kommt folgende Fehlermeldung:
exit status 1
’setSyncProvider‘ was not declared in this scope
hat jemand eine Idee wie ich damit umgehen soll?
Wird TimeLib.h am Anfang der Datei korrekt eingebunden? Das sollte die Funktion beim Compiler bekannt machen.
Gruß,
Marco
Hallo Marco,
besten Dank! Funktioniert!
Gruß Gerd
Also ich habe W-Lan. Ich habe TCP aktiv. Und es hat bei mir bis jetzt kein einziges Mal hingehauen. Mal brennt die RGB-LED ganz oder sie gar nicht. Aber niemals zum korrekten Zeitpunkt.
Wenn ich in den seriellen Monitor reinschaue wird mir immer wieder angezeigt no time received. Die Verbindung zum Zeitserver besteht aber, denn beim Verbinden wird mir das richtige Datum und die korrekte Uhrzeit angezeigt.
Aus mir nicht erklärlichen Gründen verbindet sich mein NanoESP bei diesem Projekt nicht mit dem WLAN, ich bekomme immer ein „ERROR WLAN Connect“ ausgeworfen, SSID und Passwort habe ich von den anderen Projekten kopiert… Bis jetzt hat es jeden Tag geklappt :/ Hat jemand eine Idee?
Ist bei mir genau so…
Error WLAN Connect
TCP Server Error
no connection ntp server
No time request send
Date: 1.1.1970
Time: 00:01:27
Date: 1.1.1970
Time: 00:02:0
Die behandlung der Variablen „interval“ und „iDuration“ stimmt nicht: „interval“ wird nur einmal am Anfang gesetzt und dann bei jedem „Senden“ auf der Webseite durch
interval *= iDuration;
faktisch nur noch erhöht.
Stimmt.
Habe das bei mir wie folgt gelöst:
Eine Konstante mit der Basiszahl definiert:
#define INTERVAL_BASE 78
unsigned long interval = 78; //
in
unsigned long interval = INTERVAL_BASE; //vermutlich unnötig aber schadet nicht
und
interval *= iDuration;
in
interval = iDuration * INTERVAL_BASE;
geändert.
Man kann die Zeile durch:
interval = (int) iDuration*60000./256./3.;
ersetzen.
60000 Millisekunden in einer Minute
256 Schritte in denen das Licht heller gemacht wird
3 mal (rot -> grün -> blau)
entspricht auch den 78 ms in fkainka’s Code.
Zusätzlich sollten die ganzen globalen Variablen nach jedem neuen „Daten absenden“ gesetzt werden.
Also in void loop()
bei
if (ressource == „/settimer“) {
if (parameter != „“) {
//timer=02%3A03&
cRed = 0;
cBlue = 0;
cGreen = 0;
previousMillis = 0;
// […] weiterer Code hier
}
nanoesp.closeConnection(id);
}
@bernd
In der IDE Bearbeiten -> Springe zu Zeile…
oder
Datei -> Voreinstellungen -> Zeilennummern anzeigen
zu spät
leuchtet schön nachdem man die Zeit richtig hinkriegt. Kann man im arduino monitor sehen ob Zeit gesendet (letzte Reihe) und timer zeit wie gewollt sind.)
Wenn man die duration time zu kurz setzt z.B. 2 min, bleibt die LED auf rot und geht nicht durch das ganze „programm“.
Oder man ändert die Zeile 40
unsigned long interval = 78; //
und gibt z.B. 25 vor, für 2 Minuten Dimmung
Danke,
wenn man das noch nie gemacht hat ist es ein wenig wie blind fliegen, denn man (ich) hat keine Ahnung was das programm eigentlich macht.(Ohne Einführung in die Syntax).Ich hab z.B. erwartet dass das program mit der gesetzten Dauer alles entsprechend ändert (s. Simons Kommentar). Bis jetzt hab ich mich noch nicht in die programmsprache / struktur gekniet und das ist wohl nötig um solche Änderungen durchzuführen.
naja
Ich sehe es zur Zeit als Demo der Möglichkeiten.
Du kannst in der Arduino-IDE unter Datei->Voreinstellungen ein Häkchen bei „Zeilennummern anzeigen“ setzen.
Danke,
jezt brauch ich nicht mehr zu zählen.
Für alle die kein Deutsches System haben: first menue column (file – preferences) Man kann auch im Arduino die Sprache von „system default“ auf „Deutsch“ setzen oder was man sonst gern hätte.
ich schätze, solange ich noch an meinem TCP Server Error hänge kann ich den Spaß vergessen :(
kann es sein, dass der ntpServerName falsch ist?
ich habe ihn auf 192.43.244.18 geändert und mein TCP Server ist aktiv
Hallo lieber Fabian Kainka,
kannst du uns noch Infos geben oder sagen wo man sich informieren kann, über die HTML Seiten Erstellung und Implementierung unserer Versuche.
Gruß Heiko
Wie man eine Webseite in HTML erstellt erfährst Du z.B. auf selfhtml.de oder w3schools.com
Wie das dann hier konkret umzusetzen ist, kannst Du auf den Seiten des letztjährigen Adventskalender ab Tag 13 (http://iot.fkainka.de/day-13) nachlesen (oder besser erforschen). Die Beschreibung ist es zwar nicht besonders gut, auch die Tools gibt es so nicht mehr aber mit Geduld und Spucke…
Im Unterschied zum letzten Jahr werden die Webseiten übrigens heuer in der „Websites.h“ gespeichert und nicht mehr in der A16_Tag…ino. Ansonsten ist das recht ähnlich.
Hallo,
das ist aber ein sehr sanftes Wecken und es dauert lange, bis das ganze Schlafzimmer in helles Licht getaucht wird….
Mit (noch) schläfrigen Grüßen, Michael
Hallo,
….hm… – meine RGB-Led schaltet nicht ein…
Mal sehen, was da los ist…
Grüße, Michael
….der Hardwareaufbau passt – er funktioniert mit dem Tag10-Programm. Die Webseite erscheint, ich kann Schaltzeitpunkt und Schaltdauer eingeben und der serielle Monitor quittiert die Eingabe. Aber die RGB-Led schaltet nicht ein…
Das muss also am Programm liegen – ich tauche mal ab…
…Tag17-Programm neu eingespielt und geht – RGB-LED schaltet.
Die aktuelle Zeit im Programm steht wohl noch auf Sommerzeit – eine Stunde später wird angezeigt! ;-)
Super das war der entscheidende Tipp – Danke jetzt funktioniert es auch
„Die aktuelle Zeit im Programm steht wohl noch auf Sommerzeit – eine Stunde später wird angezeigt!“
Die Zeitzone wird in Zeile 75 auf 2 gesetzt.
Wenn du den Wert auf 1 änderst, hast du die richtige Zeit
guter tip aber bis 75 zu zählen ist etwas mühsam, denn bei mir sind keine Reihennummern vorhanden (im Arduino Fenster) Sah zu spät dass im obigen Bild Reihennummern sind..
die Zeile nach der Änderung:
„return (time_t)getNTPpacket(4, ntpServerName, 1);“
die Zeit wurde dann richtig. (sieht man im arduino monitor)