Wecker, Wetter und noch mehr

  • Hallo zusammen, ich mag euch mal vorstellen was ich bisher zusammel gekramt habe...
    ( JA, ich stell das Netz auf den Kopf und schau ob mir irgendwelche Codeschnipsel weiterhelfen könnten...)
    Grundlage für mein Projekt war der Python Quellcode von Adafruit,
    =>R-PI + TFT - Webradio


    Also:
    Bisher hab ich es geschaft meinem PI zu erklären er soll über das WLAN online zu gehen.
    auf Tastendruck (bzw touchscreen) die folgenden Funktionen anzusteuern:
    ( prev / stop / play / next / Vol- / Vol+ )
    Er gibt mir auch Rückmeldung : Online/Ofline , Play/stop , Sendername & Titel.....


    Und auch die Uhrzeit mittig im Display in XXL
    - aber da kommt schon das erste Problem:
    er aktualisiert das Display immer nur dann wenn er ein "event" registriert also einen druck auf dem touchscreen...


    Mein Ziel ist es mein alten Radiowecker in Rente zu schicken ( + ein Paar extras)


    Soweit hab ich es schon mal geschafft:
    [Blocked Image: http://abload.de/thumb/50jn3.jpg]


    Derzeit stockt es an der aktualisierung des Displays
    => "ne aktuelle Uhrzeit gibt´s nur, wenn du mich drückst :D "


    Ich hab halt keinen plan wo ich im programm hinterlegen muss
    "aktualisiere die zeit alle Sekunde"
    Alle Minute könnte ich auch mit leben, dann schmeiss ich die Sekunden halt aus der Anzeige raus.



    Am Ende möchte ich die Weckzeit definieren können:
    [Blocked Image: http://abload.de/img/weckersollhruch.jpg]


    und das non-plus-ultra wäre das das Hintergrundbild
    je nach Wettervorhersage aufgerufen wird:
    => Wettervorhersage gut => Sonne im Hintergrund
    => Wettervorhersage schlecht => Wolke im Hintergrund


    Die Tage bin ich über den Blog gestolpert :
    http://blog.jacobean.net/?p=1016
    Er hat mehrere Wettervorhersage quellen zur auswahl, wertet die Daten aus und bereitet sie für das Display aus.
    ich brauch aus dem ganzen projekt ja nur :
    => Temperatur (entweder die aktuelle oder halt 3: Morgens/ Mittags/ Abends)
    =>und die Tendenz (wird schön / bleibt wolkig / schüttet aus Kübeln...)




    Zum Stand der Dinge:



    Frage: wo hab ich den Knoten im Kopf, wo muss ich ihm sagen "aktualisier mal" ?


    Vielleicht hat ja wer bock mit an der Aufgabe zu kniffeln..
    ( unten der Code und die Bilder)
    Thx REMY
    P.S. in der Dropbox hab ich auch noch mal den Code und die Bilder für die Buttons hinterlegt.
    REMY´S-Dropbox

  • Ohne Ahnung von Python zu haben, aber du führst ja refresh_menu_screen() nur dann aus wenn du ein Button gedrückt hast und nur darin ist doch der Time update drin. Ich würde sagen work as designed.
    Anders aus gedrückt muss der Update der Zeit innerhalb der While-Schleife erfolgen unabhängig von den Buttons. Wie gsagt ohne Ahnung von Python zu haben, entweder Zeit funktion extra und dann immer wieder den Teil neu schreiben oder aber immer wieder den refresh_menu_screen() aufrufen und schauen ob ein button derweil gedrückt wurde..


    Kann auch sein das ich Blödsinn rede... ;)

    --
    man ist das System-Anzeigeprogramm für die Handbuchseiten von Linux.

  • Also, ich bin einen schritt weiter ...
    ich hab die "refresh & aktualisier mal" ecke falsch angesetzt..
    nu geht es :

    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.


    ich habe den Block :

    ### ### add TIME
    time = subprocess.check_output("date +%T ", shell=True ) # Check system time
    time_font=pygame.font.Font(None,120)
    time_tag=time_font.render(time, 1, (white))
    screen.blit(time_tag,(2,70)) # Position TIME
    ### ### TIME finish


    1. umbenannt aus time wurde in dem Fall zeit,
    da weiter unten im code ja auch die Anweisung kommt
    time.sleep(0.5) damit wollte ich nicht in Konflikt kommen....
    und
    2. dorthin versetzt :
    ==>


    ###### normal bis zur Zeile:

    def main():
    while 1: # Da spring ich ihm ins "main()" rein
    zeit = subprocess.check_output("date +%T ", shell=True )
    zeit_font=pygame.font.Font(None,120)
    zeit_tag=zeit_font.render(time, 1, (white))
    screen.blit(zeit_tag,(2,70))
    pygame.display.flip()
    refresh_menu_screen()
    pygame.display.update()


    for event in pygame.event.get(): # da geht s wieder mit dem "main ()" weiter

    ###### normal weiter unter der Zeile


    also was ich als Python newbie lernen musste:
    ohne das
    pygame.display.flip()
    schmeisst der mir dia ausgabe nicht wirklich auf den screen


    und ohne das "refresh" und "update" in dem neuen codeblock
    überschreibt der das einfach und da kommt am Ende ein weisses Feld bei raus auf dem nix mehr zu lesen ist.


    das einzig lästige ist: wie in dem Video zu sehen ist: die zeit wird aktualisiert mit "blink Effekt , was recht unruhig ist für einen Radiowecker auf dem Nachttisch....


    ----
    wenn ich weiter so gut voran komme kann ich mich demnächst ja um die Weckzeit kümmern :)
    ( und neeee, eigentlich wollte ich das nicht über cronjob machen das schaut so n bissl aus wie Bauernlösung :P
    => " Watt? Kartoffeln sind alle ? Dann nehmen ma´ halt Erdäppel ! "


    so far , der Remy.
    [hr]
    nachher mal ausprobieren ob ich ihm eine alternative playliste vorsetzen kann :
    innerhalb der Online/offline Abfrage:


    if IP =="192":
    network_status = "online |"
    status_font = gray
    mpc "playlist01"


    else:
    network_status = "offline |"
    status_font = red
    mpc "playlist02" # mpc next ( oder play 6 ?) ## muss ich noch eroieren ..


    ###
    playlist01
    url01 # Radiosender
    url02 # Radiosender
    url03 # Radiosender


    playlist02
    song01.mp3
    song02.mp3
    song03.mp3


    #### bzw wenn offline soll er in der Playliste einen Sprung um +5 machen ...


    => playliste
    1 url01 # Radiosender
    2 url02 # Radiosender
    3 url03 # Radiosender
    4 url04 # Radiosender
    5 url05 # Radiosender
    6 lied01.mp3
    7 lied02.mp3

    Edited once, last by Remy ().