Zeitschaltuhr 2017

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Leute :)

    also erstmal vorweg: Ich bin ein blutiger Anfänger aber das RaspberryPi hat mich doch so sehr fasziniert dass meine Liste an Projekten immer länger wird ^^

    Aktuell möchte ich eine Zeitschaltuhr basteln die jeden Tag anders eingestellt ist. Sie soll zB von 20 bis 24 Uhr an sein und dann wieder morgens von 5 bis 8 Uhr. Alle 2 Wochen samstags dann komplett durchgängig usw.

    Natürlich hab ich mich auch schon in einiges eingelesen unter anderem auch in diesen Thread Zeitschaltuhr jeden Tag andere Zeiten jedoch wurde der Teil, der interessant wurde, wohl via PN gelöst ;)

    Desweiteren viel mir bei vielen Tutorials und Threads auf, dass diese nun doch ein paar Jährchen alt sind wo sich mir auch die Frage stellt, ob diese noch "aktuell" sind.

    Hier auch schon meine erste Frage. Ist es, für einen Anfänger, am einfachsten so ein Projekt via Python und einer MySQL-Datenbank zu lösen oder gibt es da (mittlerweile?) einfacherere Wege? Ansonsten wäre ich jetzt wohl bei dem Abschnitt "Datenbank mit Python auslesen und verarbeiten" :D

    Danke schon mal für die Hilfe ;)

    Gruß Mando

  • Herzlich Willkommen im Forum.

    Was soll die Zeitschaltuhr schalten?

    Wie sollen die Zeiten einstellbar sein? Wann sollen die Zeiten einstellbar sein (muss also immer im Hintergrund ein Skript laufen)

    Statt MySQL würd ich dir eher zu Sqlite3 oder toml raten - mit Python und Rapberry Pi machst du nichts falsch.

  • Herzlich Willkommen im Forum.

    Was soll die Zeitschaltuhr schalten?

    Wie sollen die Zeiten einstellbar sein? Wann sollen die Zeiten einstellbar sein (muss also immer im Hintergrund ein Skript laufen)

    Statt MySQL würd ich dir eher zu Sqlite3 oder toml raten - mit Python und Rapberry Pi machst du nichts falsch.

    Die schaltet ein Relais über den GPIO welches wiederrum ein Schütz schaltet. Die Zeiten wollte ich immer für jedes Jahr neu eingeben. Also Ende 2018 dann für das Jahr 2019. Da ich dort leider kein Internet hab müsste das Ganze komplett selbstständig laufen....also ja, via Skript.


    Im Prinzip brauchst du gar keine Datenbank.

    Lies dich mal durch folgendes Thema: https://www.python-forum.de/viewtopic.php?…lit=uhr#p301945

    Aber wenn dir die Sprache noch fern liegt, dann setzt dich erst mal mit den Grundlagen auseinander...

    Werd ich mir auf jeden Fall mal durchlesen. Bin ja doch lernbegierig ;)

  • Wenn er quasi jeden Tag eine andere Schaltzeit brauchst, wäre eine Datei, in der die Schaltzeiten stehen (oder auch 'nur' ein Array) recht umständlich und auch langsam.

    Neben der Unmöglichkeit, die Zeiten leicht zu ändern.

    Trägt man die Schaltzeiten im Programm in einem Array ein, musst man bei einer Änderung das Programm neu starten.

    Stehen die Zeiten in einer Textdatei, ist das Lesen und Parsen dieser Datei umständlich. Macht der Rechner aber nicht viel mehr, nicht das Problem.

    Bei einer Datenbank (ok, eine Textdatei ist eigentlich auch eine Datenbank) sind Änderungen dann einfacher, wenn man will auch über eine Webschnittstelle möglich.


    Aber zuerst sollte man sich überlegen, wann geschaltet wird. Also in einem wöchentlichen, monatlichen oder nur jährlichen Rhythmus, jeden Tag anders. Auch wie oft die Zeiten geändert werden sollen, und wann man sie eingeben will.

    Erst dann kann man sich auch überlegen, wo die Schaltzeiten stehen.

    Computer ..... grrrrrr

  • Also wenn ich dich richtig verstehe soll jeder Tag eine individuelle Schaltzeit haben können.

    Sprich, nicht alle Montage selbe Zeit, Dienstage etc....

    Wie willst du die Zeiten verändern? Mittels Tastatur und Bildschirm oder via Taster und Display?

  • Offenbar ist das Problem hier weniger das Schalten an sich, sondern die Verwaltung der Schaltzeiten.

    Da wäre eine hübsche Anwendung gefragt, in der man das übersichtlich grafisch verwalten kann, mit Copy/Paste und so.

    Oder gibt es vielleicht auch die Möglichkeit, das Ganze doch durch ein Programm zu steuern? Wovon hängen denn die Schaltzeiten ab? Wochentag? Sonnenauf- und -untergang?, Schulferien? Ausnahmen an Feiertagen? Wenn du am Jahresanfang voraussehen kannst, wann geschaltet werden muss, kannst du die Entscheidungskriterien dafür doch auch in einen Algorithmus packen, oder?

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Offenbar ist das Problem hier weniger das Schalten an sich, sondern die Verwaltung der Schaltzeiten.

    Da wäre eine hübsche Anwendung gefragt, in der man das übersichtlich grafisch verwalten kann, mit Copy/Paste und so.

    Oder gibt es vielleicht auch die Möglichkeit, das Ganze doch durch ein Programm zu steuern? Wovon hängen denn die Schaltzeiten ab? Wochentag? Sonnenauf- und -untergang?, Schulferien? Ausnahmen an Feiertagen? Wenn du am Jahresanfang voraussehen kannst, wann geschaltet werden muss, kannst du die Entscheidungskriterien dafür doch auch in einen Algorithmus packen, oder?

    Ja das Schalten an sich bekomm ich aktuell schon hin :D Problem ist wirklich das Verwalten der Zeiten bzw das Python auf "Quelle der Zeiten" zugreift.

    Kurz erklärt: Es handelt sich um eine Außenbeleuchtung die regulär von 0 bis 4 Uhr aus sein soll. An bestimmten Tagen, welche aber nicht regelmäßig sind, soll die Beleuchtung durchgängig, die ganze Nacht an sein. Da ich sowieso für jeden Tag die Zeit eintragen muss wollte ich die Ein- und Ausschaltzeit noch etwas dem Sonnenauf und -untergang anpassen. Ich könnte da natürlich die meteorologischen Daten von Wetterdiensten einbeziehen aber das würde es mMn unnötig kompliziert machen ;)

  • 365 Zeiten einzeln zu verwalten ist ja ziemlich aufwändig.

    Da würd ich die Schaltzeiten nach Sonnenstand irgendwie näherungsweise aus dem Datum berechnen. Wie wäre es mit

    01.01.: 16 Uhr bis 0 Uhr / 4 Uhr bis 9 Uhr

    30.06.: 23 Uhr bis 0 Uhr / 4 Uhr bis 4.30 Uhr

    alles dazwischen einfach linear berechnen (oder auch exponentiell, logarithmisch oder wie auch immer, wenns dadurch genauer wird).


    Und dann eine Tabelle, in der nur die Ausnahmen stehen, also die Tage, an denen das Ding die ganze Nacht an sein soll.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Das ist schon mal ein sehr guter Ansatz. Somit könnte ich die meisten Datensätze für jedes Jahr verwenden und nur die Ausnahmen bearbeiten.

  • Es gibt diverse Programme und auch Pythonbibliotheken, die Dir den Sonnenauf- und -untergang berechnen. Wenn Du das wirklich nur einmal im Jahr fürs nächste Jahr festsetzt, würde ich mit einer Textdatei arbeiten, in der nur die Ausnahmen stehen. Vermutlich würde ich das nach dem Schema "nur Datum in Zeile"->"Beleuchtung brennt durch", "Datum und Uhrzeiten in Zeile"->"schalte zu diesen Uhrzeiten" (falls Du letzteres überhaupt brauchst) machen.

  • Mando

    Falls für dich anstelle einer Eigenentwicklung auch eine fertige Softwarelösung in Frage kommt, dann schau dir mal mein Projekt einer Mehrkanal-Zeitschaltuhr auf Basis des Raspberry Pi an.

    Hier findest Du weitere Informationen zu den Möglichkeiten der PiPS-Soft- & Hardware.

    Über den integrierten Astro-Modus kann man automatische Schaltzeiten in Abhängigkeit zur Dämmerung (Sonnenaufgang-/untergang) festlegen. Auch ließe sich einfach deine Anforderung nach besonderen Schaltzeiten für einzelne Tage über eine entsprechende Optionsdatei implementieren:

    Code
    ;Kanal  einschalten         ausschalten
    0       23-Dec-2017/0:00    23-Dec-2017/23:59
    0       06-Jan-2018/0:00    06-Jan-2018/23:59

    VG

    TGD

  • OK, das Projekt interessiert mich doch sehr ;)

    Da ich völliger Neuling in der Materie bin, würde ich wohl etwas Hilfe gebrauchen. Kann ich da auf dich zurück kommen? :)

  • Das ist schon mal ein sehr guter Ansatz. Somit könnte ich die meisten Datensätze für jedes Jahr verwenden und nur die Ausnahmen bearbeiten.

    Mit Bezug auf #10:

    Das "Geschlinger" der Erde um die Sonne hat Zeitabweichungen von +/- 15 Minuten gegenüber einer theoretischen Funktion zur Folge (Wiki - Zeitfunktion). Aber kommts denn darauf wirklich an? Oft ist es doch egal, ob die Astronomen den Sonnenwinkel jetzt 10 Minuten früher oder später als "aufgehenswürdig" berechnen. Ich hab mal mit Daten aus dem Web für 2017-2021 rumprobiert - daraus ergibt sich folgendes:

    Der Sonnenaufgang schwankt in unseren Breiten (ich hab mal den 50. Breitengrad genommen) um ca. 4 Stunden und 10 Minuten (also +/- 125 Minuten). Im Mittel ist Sonnenaufgang um ca. 6:15, der Sonnenuntergang um ca. 18:32.

    Die Sonnenbewegungen und damit die Auf- und Untergangszeiten wären im Idealfall theoretisch (co)sinusförmig. Wenn man die Tage durchzählt (1-365), kann man die Abweichung als Cosinus abhängig vom Tag näherungsweise berechnen. Die Zeit wird in Minuten (ab Mitternacht) berechnet. Also 6:15 = 375 Minuten, 18:32 = 1112 Minuten.

    Die Formel für den Sonnenaufgang ist: 375 + cosinus((tag+11)/365*2Pi) * 125 = 375 + cosinus((tag+11)*0,0172) * 125

    tag+11, weil der späteste Sonnenaufgang ungefähr am 21 Dez. ist. Am 1. Januar (Tag 1) ist man also schon 11 Tage weiter, deshalb + 11.

    *125 weil der Cosinus zwischen +1 und -1 schwankt und wir so (auf die Zeit des mittleren Sonnenaufgangs) am kürzesten Tag 125 Minuten abziehen und am längsten 125 Minuten aufschlagen .

    Die Formel für den Sonnenuntergang ist dann entsprechend: 1112 - cosinus((tag+11)/365*2Pi) * 125 = 1112 - cosinus((tag+11)*0,0172) * 125

    Ich hab die Daten und die Werte aus der Formel verglichen und komme auf maximale Abweichungen von ca. 20 Minuten. Für viele Anwendungen dürfte das genügen.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!