Posts by noisefloor

    Hallo,


    bei den Modulen würde ich eher auf die Standardbibliothek fokusieren. Weil eine der stärken von Python ist ja das "Batterie included" Prinzip, d.h. das die Standardinstallation schon sehr viele brauchbare Module für ein breites Feld von Einsatzzwecken an Bord hat.


    Ein gutes Beispiel ist IMHO z.B. wie man mit eine paar Zeilen Code einen Webserver implementiert.


    Externe Module kann man IMHO erwähnen, aber das war's dann auch. Das man eine Programmiersprache durch externe Module / Bibliotheken / libs / ... erweitern kann ist ja Standard, dass haben X dutzend andere Programmiersprachen auch.


    Gruß, noisefloor

    Hallo,



    Bei Cronjobs kannst du aber nicht unterschiedliche Startzeiten definieren pro Tag. Dafür sind at jobs gedacht


    ??? - du kannst doch für jeden Tag quasi beliebig viel cron-Jobs für verschiedene Zeiten anlegen...
    Und [font="Courier"]at[/font] benutzt man doch nur, wenn der Job genau 1x laufen soll.


    dave1204: Doku zu cron-Jabs bei Raspbien -> http://www.raspberrypi.org/documentation/linux/usage/cron.md


    cron-Jobs werden vom System ausgeführt - du brauchst dann dein Zeitschaltuhr-Skripte eben _nicht_ mehr.


    Gruß, noisefloor

    Hallo,


    -> das Script soll sich ja nicht beenden, sonst fünktionieren ja die restlichen Tage nicht mehr. Oder verstehe ich da gerade was falsch?


    Ja, tust du ;-) Du kannst das Skript doch beliebig oft neu starten.


    Das ist ja auch genau der Sinn von cron-Jobs. Die rufst ein Programm / Skript auf, dass etwas macht und dann zu Ende ist. Und das machst du dann periodisch, jedesmal wenn's nötig ist.


    Eine Endlosschleife für das Futterskript brauchst du wirklich nicht.


    Gruß, noisefloor

    Hallo,


    starte doch das Step-Motor Skript über cron-Jobs. Die sind genau für wiederkehrende, zeitabhängige Aufgaben gemacht. Dann kannst du dir das ganze Zeitschaltuhr-Skript sparen.


    Und noch eine Anmerkgung zum Schrittmotor-Skript: Die Zeile


    Code
    Seq = range(0, StepCount)


    ist überflüssig. Die musst keine Liste mit Zahlen füllen, die du danach direkt überschreibst. Ein


    Code
    Seq = []

    reicht.


    Und die Varibale [font="Courier"]StepCount[/font] kannst du eigentlich auch weglessen. In der [font="Courier"]for[/font]-Schleife

    Code
    for j in range(StepCount)


    kannst du das durch

    Code
    for j in range(len(Seq))


    ersetzen :-)


    Gruß, noisefloor

    Hallo,


    das (ungetestet)


    Code
    lcd.lcd_display_string("--------------------", 1)
    lcd.lcd_display_string("{}".format(temperature), 2)
    lcd.lcd_display_string("{}".format(humidity), 3)
    lcd.lcd_display_string("--------------------", 4)


    sollte eigentlich funktionieren...


    Gruß, noisefloor
    [hr]
    Hallo,


    Nachtrag zu anderer Stelle:


    Code
    if humidity is not None and temperature is not None:
            print 'Temp={0:0.1f}*C  Feuchtigkeit={1:0.1f}%'.format(temperature, humidity)
        else:
            print 'Failed to get reading. Try again!'


    Kannst du vereinfachen zu:

    Code
    if humidity and temperaure:
        print 'Temp={0:0.1f}*C  Feuchtigkeit={1:0.1f}%'.format(temperature, humidity)
    else:
        print 'Failed to get reading. Try again!'


    Dadurch fällt die doppelt Verneinung in der if-Zeile weg ;-)


    Gruß, noisefloor

    Hallo,


    FAT32 kennt keine Inodes, daran kann es nicht liegen. Die Linux ext-Dateisysteme haben Inodes.


    Wie viele Dateien liegen denn auf der Partition? FAT32 kann "nur" 2^28 Dateien - was in der Regel ausreicht ;-)


    Und geh' doch mal in den Terminal und tippe dort den Befehl [font="Courier"]df[/font] ein und poste die Ausgabe hier (df gibt die Festplattenbelegung aus).


    Gruß, noisefloor

    Hallo,


    ja, da fehlt dann wohl das Python-Modul.


    Es gibt eins Namens [font="Courier"]sispmctl[/font], da kannst du via pip installieren. Eine Doku zum Modul gibt's wohl nicht, also musst du wohl den (kurzen) Quelltext lesen, um die Klassen und Methoden kennen zu lernen ;-)
    Ob das das Modul ist, was du suchst / brauchst kann ich auch nicht beurteilen...[/font]


    Übrigens: [font="Courier"]sudo apt-get install[/font] installiert nichts... da fehlt der Paketname.


    Gruß, noisefloor

    Hallo,


    das ist in der Tat was anderes ;-)


    Wenn das hier das Modul ist, was du installiert ist, dann müsstest du [font="Courier"]import sispmctl[/font] schreiben. _Wie_ hast du denn das Python-Modul installiert, also mit welchem Befehl?


    Gruß, noisefloor

    Hallo,


    das Modul heißt [font="Courier"]SisPM[/font] (also großes P und großes M), nicht [font="Courier"]Sispm[/font].


    Sprich, mit

    Code
    dev=sispm.SisPM()


    sollte das laufen.


    Gruß, noisefloor

    Hallo,


    Nachtrag: was ich im 1. Post geschrieben habe ist nicht ganz korrekt. Python beschwert sich, dass das _Objekt_ "nextset" nicht existiert. Was da versucht wird, ist ja, vom Objekt "nextset" die Methode "strftime()" aufrufen. Geht natürlich nicht, wenn "nextset" nicht existiert.


    Ansonsten kannst du Methoden von Objekten jederzeit aufrufen und bei Bedarf das Ergebnis immer einer Variablen zuweisen.


    Einfaches Beispiel in Python Shell (Python 3.4):

    Code
    >>> import time
    >>> def get_time():
    ...     return time.asctime()
    >>> while True:
    ...     aktuelle_zeit = get_time()
    ...     print(aktuelle_zeit)
    ...     time.sleep(10)
    ...


    Hier wird zuerst das time-Modul importiert und dann die Funktion [font="Courier"]get_time[/font] definiert, welche einfach nur die aktuelle Zeit zurück liefert.


    In der [font="Courier"]while[/font]-Schleife wird die Funktion aufgerufen, das Ergebnis (=der Rückgabewert) der Variablen [font="Courier"]aktuelle_zeit[/font] zugewiesen, und das Ergebnis ausgegeben. Und nach 10s Wartzeit läuft das ganze nochmal. Beim 2., 3., ... Durchlauf der [font="Courier"]while[/font]-Schleife wird der Variablen [font="Courier"]aktuelle_zeit[/font] jedes Mal ein neuer Wert zugeordnet.


    Gruß, noisefloor

    Hallo,


    sapnho: zwei durchweg empfehlenswerte Tutorials zum lernen sind:
    * das offizielle Python Tutorial: https://docs.python.org/3.4/tutorial/ für Python 3.4 (oder für 2.7: https://docs.python.org/2.7/tutorial/)
    * Lern Python the hard way: http://learnpythonthehardway.org/book/


    Bei letzterem nicht vom Namen abschrecken lassen, es ist nicht "hard" ;-)


    Beide Tutorials sind auf English, was hoffentlich kein Problem ist. Aber ohne English kommst du bei Python - wie den meisten anderen Programmiersprachen auch - irgendwann nicht mehr weiter.


    Gruß, noisefloor

    Hallo,


    das gute bei (manchen) Python-Fehlermeldung ist ja: es steht sehr explizit drin, was falsch ist :-)


    In deinem Fall beschwert sich Python darüber, dass die die Variable "nextset" aufrufst, diese aber nicht definiert ist, und das ganze in Zeile 11 im genannten Skript. Da musst du mal schauen.


    Abgesehen davon sehe ich die reklamierte Zeile " print "next sunset ", nextset.strftime(fmt)" in dem von dir geposteten Quelltext nicht... Da gibt's wohl eine Differenz zwischen dem, was du hier gepostest hast und was du auf dem Raspi ausführst... :-)


    Gruß, noisefloor

    Hallo,


    die "magischen Bytes" sind die ersten paar Bytes einer Datei, anhand deren Linux (bzw. der Befehl "file") Dateitypen erkennt bzw. zu erkennen versucht.


    Die Fehlermeldung besagt nur, dass das System die heruntergeladene Datei nicht als ELF-Datei erkennt. Das heißt nicht unbedingt, dass die Datei defekt ist. Das kannst du besser anhand der Prüfsumme der Datei beurteilen.


    Läuft die Installation denn durch oder bricht sie ab? Bekommst du am Ende eine Meldung, dass _nicht_ alle Pakete installiert worden sind?


    Gruß, noisefloor

    Hallo,


    gängig ist z.B. diese 2x16 Zeichen LCD-Display: HD44780 16 x 2 LCD Modul. Beispiele zum Anschließen findest du im Netz reichlich.


    Und eine Anzeige auf's Display zu "zaubern" ist auch einfach, z.B. mit dem Python-Modul RPLCD.


    Willst du den Raspi als Webradio headless betreiben? Dann müsstest du dir noch Gedanken machen, wie du überhaupt einen Sender auswählen willst.


    Gruß, noisefloor

    Hallo,


    der Code wird be Python - wie bei allen Programmiersprachen - sequentiell abgearbeitet, d.h. die 2. Befehl wird erst ausgeführt, wenn der 1. abgearbeitet ist. Und wenn das 5 Minuten dauert, dann wird der 2. Befehl halt erst nach 5 min ausgeführt.


    Parallelität bekommst du bei Python mit dem erwähnten threading-Modul (oder alternativ das multiprocessing-Modul, was aber eher für Multikern Rechner sinnvoll ist). Wenn du Asynchronität brauchst, dann brauchst du ein entsprechendes Module, wie z.B. Celery.


    Gruß, noisefloor