Zeitschaltuhr jeden Tag andere Zeiten

  • Hallo,

    ich habe folgendes Problem.

    Ich würde gerne mit dem RPi eine Zeitschaltuhr bauen. Dazu hab ich ein Relais an die GPIO Pins angeschlossen. Manuelles Schalten funktioniert soweit auch schon.

    Habe dann mit Phyton zwei kleine Programme geschrieben, mit denen ich beim ausführen die entsprechenden Pins schalten kann.

    Bsp.

    sudo python gpio17ein.py "schaltet den GPIO Pin 17 ein"
    sudo python gpio17aus.py "schaltet den GPIO Pin 17 aus"

    Ich suche jetzt nach einer Möglichkeit, dass ich die Programme in ein weiteres einbinden kann um diese dann auszuführen.
    Der RPi wird später dann immer mit dem Internet verbunden sein, sodass mir stets die aktuelle korrekte Zeit zur Verfügung steht.
    Außerdem sollen sich die Schaltzeiten täglich verändern. Also am 28.06 Pin 17 um 8:00 Uhr an und um 20 Uhr aus. Am 29.06 Pin 17 um 8.01 an und um 19.59 aus. Am 12.12 dann um 8.30 an und um 18.00 Uhr aus.

    Ich hoffe es ist verständlich was ich meine.

    Gruß Flo

    • Offizieller Beitrag

    Irgendwie schon und dann doch wieder nicht. Du willst einstellbare Uhrzeiten? Wie lange im Vorraus willst du diese denn definieren?
    Bis jetzt würde ich es über eine kleine Datenbank oder über das python dictionary object machen.

  • Ich brauche für jeden Tag im Jahr eine andere Zeit aber jedes Jahr gleich.
    Ich brächte sowas wie ne Abfrage:

    "welches Datum ist heute"
    "heute ist der 28.06"

    In der Datenbank sollte dann hinterlegt sein
    28.06 Schalte GPIO17 um 08:00 Uhr ein
    28.06 Schalte GPIO17 um 20:00 Uhr aus

    Und das ganze dann eben für jeden Tag im Jahr unterschiedlich, ich hoffe jetzt ist das verständlicher.

    • Offizieller Beitrag

    ja, deutlich besser ;). Nimm ne mysql (oder sqlite) datenbank. erstell ne tabelle mit den spalten ID, Tag as var, ontime as time, offtime as time und trag ein paar datensätze ein.

    Da du ja nur 28.06. speichern willst macht in diesem fall var mehr sinn als date.
    Wenn du hilfe brauchst beim einrichten brauchst, sag bescheid.

  • Hallo,

    ich brächte nochmal Hilfe beim Anlegen der mysql Datenbank. Bin wie folgt vorgegangen:

    mysql starten

    mysql -u root -p
    CREATE DATABASE schaltzeiten;
    SHOW DATABASES;

    schaltzeiten wird dort in der Auflistung angezeigt

    mysql> USE schaltzeiten
    Database changed
    mysql> create TABLE schaltzeiten-lsr
    -> (
    -> ID INT NOT NULL AUTO_INCREMENT,
    -> Tag VARCHAR(25),
    -> Einschaltzeit TIME,
    -> Ausschaltzeit TIME,
    -> );
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-lsr
    (
    ID INT NOT NULL AUTO_INCREMENT,
    Tag VARCHAR(25),
    Einschaltzeit TIME,
    Auss' at line 1
    mysql> create TABLE schaltzeitenlsr ( ID INT NOT NULL AUTO_INCREMENT, Tag VARCHAR(25), Einschaltzeit TIME, Ausschaltzeit TIME, );
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

    Ich sitz jetzt schon länger dran und finde den Fehler nicht kann jemand helfen?

    Gruß Flo

  • Hi Flo,


    Zitat


    mysql> create TABLE schaltzeiten-lsr
    -> (
    ...

    Zunächst scheint mysql ja den Bindestrich nicht zu mögen.



    Zitat


    mysql> create TABLE schaltzeitenlsr ( ID INT NOT NULL AUTO_INCREMENT, Tag VARCHAR(25), Einschaltzeit TIME, Ausschaltzeit TIME, );
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

    Und dann muss auch das Komma hinter TIME (Ausschaltzeit) weg.

    cu,
    -ds-

  • mysql> USE schaltzeiten
    Database changed
    mysql> CREATE TABLE schaltzeitenlsr
    -> (
    -> ID INT NOT NULL AUTO_INCREMENT,
    -> Tag VARCHAR(25)
    -> Einschaltzeit TIME,
    -> Ausschaltzeit TIME
    -> );
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Einschaltzeit TIME,
    Ausschaltzeit TIME
    )' at line 5

    Neuer Versuch neuer Fehler :)

  • mysql> USE schaltzeiten
    Database changed
    mysql> CREATE TABLE SchaltzeitenLSR
    -> ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Tag VARCHAR(6),
    -> Einschaltzeit TIME,
    -> Ausschaltzeit TIME
    -> );
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Tag VARCHAR(6),
    Einschaltzeit TIME,
    ' at line 2

    ...
    Bin ich echt sooo doof?

  • Also ich habe Die Tabelle mal bei mir angelegt um es zu verifizieren:


    Es ist richtig.


    Versuchs mal mit ner Klammer hinter SchaltzeitenLSR ...


    Oha....

    Flodermeister: Um solche Tipfehler zu vermeiden kann man den mysql Input auch in eine Datei schreiben und dann mit

    Code
    source mySqlStatements.sql


    einlesen :)


  • und genau deswegen wurde phpmyadmin erfunden ;). In der console mysql zu schreiben, wenns geht noch mit x joins, ist doch eine art der selbstkasteiung :).

    Stimmt. Aber dazu brauchst Du dann noch zusaezlich einen apache und ich könnte mir vorstellen der TE ist momentan froh dass sein mysql soweit läuft :) Ausserdem muss jeder mal mysql auf der Konsole kennengelernt haben.

  • Danke Jungs, jetzt hat´s Funktioniert!!! Schön, dass ihr euch am späten Abend noch die mühe gemacht habt!
    Das ganze ist mein erstes Projekt und ich betrete mit den ganzen Anwendung php, mysql, Python, Linux Neuland. Wird also nicht die letze Frage gewesen sein :) Ich Versuche schon das größtenteils mithilfe von Google zu lösen, aber alles findet man da ja auch nicht.
    Gruß Flo

    Werden Zeiten nicht im Format HH:MM:SS eingegeben? Ich bekomme folgende Fehlermeldung:

    mysql> INSERT INTO SchaltzeitenLSR(
    -> "01.01"
    -> "08:25:00"
    -> "19:31:00"
    -> );
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"01.01"
    "08:25:00"
    "19:31:00"
    )' at line 2

    Einmal editiert, zuletzt von Flodermeister (30. Juni 2013 um 20:10)

Jetzt mitmachen!

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