vorige Seite
Inhaltsverzeichnis nächste Seite

ein Jahr Dauerbetrieb

Erstmal ein Screenshot vom Rollladen-Monitor:
Screenshot

Man beachte (und bewundere) die Jahreszahl bei "letzter Restart" und die bei "letzte Verbindung"!  :-)
Damit kann die Schaltung mit gutem Gewissen als stabil bezeichnet werden.

Die Zeiten-Tabelle sieht mittlerweile so aus:
// ----------------------------------------------------
// Immer dran denken: Alle Zeiten sind Normalzeit !!!
// Also zwischen dem
//    letzten Sonntag im März um 2:00 Uhr MEZ
// und dem
//    letzten Sonntag im Oktober um 3:00 Uhr MESZ
// ist von der Ortszeit eine Stunde abzuziehen.
// ----------------------------------------------------
// Die ersten zwei Zeiten gelten für den 01. bis zum
// 14. jeden Monats, die nächsten zwei Zeiten für den
// 15. bis zum 31. jeden Monats.
// ----------------------------------------------------
// Die erste Zeit muss zwischen 03:01 und 14:59 liegen.
// Die zweite Zeit zwischen 15:01 und 23:59.

08:00-17:00  08:00-17:30    // 01 - Januar
07:30-18:00  07:00-18:30    // 02 - Februar
06:30-19:00  06:00-19:15    // 03 - März
05:00-20:00  05:00-20:15    // 04 - April
05:00-20:45  05:00-21:00    // 05 - Mai
05:00-21:15  05:00-21:30    // 06 - Juni
05:00-21:30  05:00-21:30    // 07 - Juli
05:00-21:00  05:00-20:30    // 08 - August
05:00-20:00  05:30-19:30    // 09 - September
05:30-18:45  06:00-18:00    // 10 - Oktober
07:00-17:15  07:00-17:00    // 11 - November
07:30-16:45  08:00-16:30    // 12 - Dezember


Das Python-Script ist zwischenzeitlich auf eine eigene Debian-VM umgezogen.
Ansonsten läuft alles wie zuvor beschrieben.
Keine Ausfälle, keine Störungen und immer noch mit der Akku-Ladung aus Dezember 2015.

Einzig die gemessene und übermittelte Akku-Spannung gefällt mir nicht.
Seit einem Jahr konstant 5.00V kann eigentlich nicht sein.
Bei meinem aktuellen Projekt habe ich mal den analogRead() nach Tiefschlaf geprüft und dabei festgestellt, dass der dann Unfug liefert. Nach dem Aufwachen und vor dem analogRead() braucht es noch einen Aufruf der folgenden Funktion:
/* -------------------------------------------------------------------
 *  ADC wieder aktivieren.
 *  https://www.gammon.com.au/adc
 */
void restore_ADC(void) {
  ADCSRA=bit(ADEN);                         // turn ADC on
  ADCSRA|=bit(ADPS0)|bit(ADPS1)|bit(ADPS2); // Prescaler of 128
}

Das werde ich gleich mal einbauen.

Der Compiler ist pingeliger geworden.
Ich bekomme diverse Warnings wegen "deprecated conversion from string constant to 'char*'".
Aber wen stören schon Warnings... ;-)

Erste Erkenntnis - noch vor Aufschrauben des Gehäuses: die Akkus sind laut Multimeter auf 4.50V runter.
Was nach einem Jahr aber auch nicht anders zu erwarten war....

Vorsichtshalber werde ich die minimal geänderte Firmware auf einen neuen ATmega328 schreiben und den alten ATmega328 als Fallback-Option beiseite legen.

Der Power-On-Connect nach frischer Akku-Ladung (5.84V laut Multimeter) sah dann so aus:
2016.12.03 20:05:16 Verbindung hergestellt ESP8266-1 (192.168.42.101)
2016.12.03 20:05:17 Autorisierung abgeschlossen
2016.12.03 20:05:17 Abweichung [sek]: 0
2016.12.03 20:05:18 Datum/Zeit übermittelt
2016.12.03 20:05:18 ------------------------- Januar
2016.12.03 20:05:18 08:00-17:00   08:00-17:00   (ATmega)
2016.12.03 20:05:18 08:00-17:00   08:00-17:30   (Datei)
2016.12.03 20:05:18 ------------------------- Februar
2016.12.03 20:05:18 07:30-17:30   07:00-18:00   (ATmega)
2016.12.03 20:05:18 07:30-18:00   07:00-18:30   (Datei)
2016.12.03 20:05:18 ------------------------- März
2016.12.03 20:05:18 06:30-18:30   06:00-19:00   (ATmega)
2016.12.03 20:05:18 06:30-19:00   06:00-19:15   (Datei)
2016.12.03 20:05:18 ------------------------- April
2016.12.03 20:05:18 05:00-19:30   05:00-20:00   (ATmega)
2016.12.03 20:05:18 05:00-20:00   05:00-20:15   (Datei)
2016.12.03 20:05:18 ------------------------- Mai
2016.12.03 20:05:18 05:00-20:30   05:00-20:30   (ATmega)
2016.12.03 20:05:18 05:00-20:45   05:00-21:00   (Datei)
2016.12.03 20:05:18 ------------------------- Juni
2016.12.03 20:05:18 05:00-21:00   05:00-21:30   (ATmega)
2016.12.03 20:05:18 05:00-21:15   05:00-21:30   (Datei)
2016.12.03 20:05:18 ------------------------- Oktober
2016.12.03 20:05:18 06:00-19:00   06:00-18:00   (ATmega)
2016.12.03 20:05:18 05:30-18:45   06:00-18:00   (Datei)
2016.12.03 20:05:18 ------------------------- November
2016.12.03 20:05:18 06:30-17:30   07:00-17:00   (ATmega)
2016.12.03 20:05:18 07:00-17:15   07:00-17:00   (Datei)
2016.12.03 20:05:18 ------------------------- Dezember
2016.12.03 20:05:18 07:30-16:30   08:00-16:30   (ATmega)
2016.12.03 20:05:18 07:30-16:45   08:00-16:30   (Datei)
2016.12.03 20:05:18 geänderte Zeiten-Tabelle übermittelt
2016.12.03 20:05:19 Akku-Spannung: 5.49V
2016.12.03 20:05:19  Warnung  : Schaltung hat neu gestartet
2016.12.03 20:05:19  Warnung  : Falsche Prüfsumme in beiden EEPROM-Bereichen
2016.12.03 20:05:19 Firmware-Version: 1.6.6
2016.12.03 20:05:19 Info: sleep_PWR_DOWN_duration_g=8400
2016.12.03 20:05:19 Verbindung geschlossen ESP8266-1 (192.168.42.101)

Etwas länger als sonst. Aber logisch. Das EEPROM war wegen des neuen ATmega328 schließlich noch leer.
Obwohl...irgendwie auch nicht. Offenbar war da schon mal eine frühe Version der Firmware drauf. Und zwar eine ohne Prüfsummen für die EEPROM-Daten. Ebenfalls zu erkennen ist, dass die Zeiten zwischen Juli bis September nie geändert worden sind.

Die Schaltung blinkt brav im Acht-Sekunden-Takt und ich bin guter Hoffnung, dass die Rollläden morgen früh wieder um 07:30 Uhr hochfahren.
Der Rollladen-Monitor meldet:
Screenshot

Die Rollläden wurden brav um 07:30 Uhr hochgefahren (aber natürlich habe ich mal wieder vergessen, die Versionsnummer der Firmware hochzuzählen):
[...]
2016.12.03 21:29:04  Warnung  : Schaltung hat neu gestartet
[...]
2016.12.04 03:00:08 Akku-Spannung: 5.49V
2016.12.04 03:00:08 Firmware-Version: 1.6.6
2016.12.04 03:00:08 Info: sleep_PWR_DOWN_duration_g=8220
2016.12.04 03:00:08 Info: sunw_g[0]=12656
2016.12.04 03:00:08 Info: sunw_g[1]=282
2016.12.04 03:00:08 Info: sunw_g[2]=11
2016.12.04 03:00:09 Info: sunw_g[3]=3
2016.12.04 03:00:09 Info: sunw_g[4]=9
[...]
2016.12.04 07:30:06 Verbindung hergestellt ESP8266-1 (192.168.42.101)
2016.12.04 07:30:06 Info: open shutters
2016.12.04 07:30:06 Verbindung geschlossen ESP8266-1 (192.168.42.101)

Spannend ist noch die um 01:00 Uhr gemessene Tiefschlaf-Dauer.
Zwar war der Ofen gestern Abend mal wieder an, aber so kurz war die das ganze Jahr über trotzdem noch nie.
Vielleicht liegts am ausgetauschten ATmega328, wahrscheinlich aber eher an der deutlich höheren Akku-Spannung.

Den letzten Restart habe ich gestern um 21:29:04 Uhr ausgelöst.
Bis 01:00:00 Uhr sind das 56+30*60+3*60*60 = 12656 Sekunden.
Statt um 01:00:00 ist er dann aber 282 Sekunden zu früh aufgewacht. Noch etwas Tiefschlaf und auch den wieder 11 Sekunden zu früh verlassen. Dann noch einen Tiefschlaf von acht Sekunden, um schließlich drei Sekunden vorher ins 01:00:00-Uhr-Ereignis einzutreten. Dabei wurde dann die neue Tiefschlaf-Dauer von 8220 Millisekunden ermittelt.
Mit dieser Dauer wurde das 03:00:00-Uhr-Ereignis neun Sekunden zu früh erreicht. Neun Sekunden ist genau die Grenze, ab der nicht nochmal ein Tiefschlaf eingelegt wird.
Alles gut und erklärbar also.

Die Änderung bzgl. des analogRead() hatte offenbar einen Effekt. Das Log meldet:
2016.12.04 03:00:08 Akku-Spannung: 5.49V
[...]
2016.12.04 15:00:05 Akku-Spannung: 5.47V
[...]
2016.12.05 03:00:06 Akku-Spannung: 5.44V
[...]
2016.12.05 15:00:06 Akku-Spannung: 5.41V
[...]
2016.12.06 03:00:06 Akku-Spannung: 5.40V
[...]
2016.12.06 15:00:06 Akku-Spannung: 5.39V
Ich will mal hoffen, dass die Geschwindigkeit bei der Spannungsabnahme noch deutlich sinkt, sobald sie sich 5V annähert...


Damit sollte dieses Projekt nun final abgeschlossen sein.....auch wenn eigentlich noch eine winzige Design-Schwäche im Programm schlummert: zwischen dem Tag der Umstellung auf Sommer-/Winter-Zeit und dem folgenden Monats-Ende liegen meist ein paar Tage. Meine Zeiten-Tabelle gilt immer bis zum Monatsende, auch wenn die Uhr zwischenzeitlich um eine Stunde umgestellt wurde. Dementsprechend gibt es, auf die Ortszeit bezogen, Sprünge bei den Öffnungs-Zeiten.
Für 2016 sah es beispielsweise so aus:
Datum
Zeit Richtung
Normalzeit
Ortszeit
26.03.2016
MEZ
öffnen
06:00
06:00
27.03.2016
MESZ
öffnen 06:00 07:00
[...]
MESZ öffnen 06:00 07:00
31.03.2016 MESZ
öffnen 06:00 07:00
01.04.2016 MESZ
öffnen 05:00 06:00





29.10.2016
MESZ
öffnen
06:00
07:00
30.10.2016
MEZ
öffnen 06:00 06:00
31.10.2016 MEZ
öffnen 06:00 06:00
01.11.2016 MEZ
öffnen 07:00
07:00





26.03.2016
MEZ
schließen
19:15
19:15
27.03.2016 MESZ
schließen 19:15 20:15
[...]
MESZ schließen 19:15 20:15
31.03.2016 MESZ schließen 19:15 20:15
01.04.2016 MESZ schließen 20:00
21:00





29.10.2016 MESZ schließen 18:00
19:00
30.10.2016 MEZ schließen 18:00 18:00
31.10.2016 MEZ schließen 18:00 18:00
01.11.2016 MEZ schließen 17:15 17:15

Beim Schließen der Rollläden merkt man es quasi nicht. Beim Öffnen stört es ein klein wenig. Am ehesten noch Ende März. Das Radio weckt uns um 06:10 Uhr, die Kinder verlassen um 07:00 Uhr das Haus. Ab 07:00 Uhr sind die Rollläden hoch und vorher hält sich eh niemand im Wohnzimmer auf. Daher bleibt das jetzt so.

vorige Seite
nächste Seite