Oled 0,96"" Uhranzeige

  • Hallo.

    ich plage mich zur Zeit mit einem Oled 096 Display rum.

    ich habe den raspi B+ ein Programm lt. Hersteller installiert.

    das funktioniert auch, aber ich möchte dass das Display beim hochfahren automatisch startet.

    Hier mein Script:

    sudo apt-get install -y python-dev python3-dev python-imaging python-smbus i2ctools git python3-pip python-setuptools build-essential git-core libi2c-dev i2ctools lm-sensors python-pip

    i2cdetect -y 1

    das Display wird mit c3 erkannt.

    git clone git://github.com/rm-hull/ssd1306.git
    cd ssd1306
    sudo python setup.py install
    cd examples
    git clone https://github.com/rm-hull/luma.examples.git
    cd luma.examples/examples

    mit python clock.py --display ssd1306 startet die Uhr mit Datumsanzeige.

    Wenn ich jedoch Putty verlasse, bleibt die Uhr stehen.

    Wie starte ich das Programm beim Hochfahren des Displays ?

    Ich möchte auf meiner Modellbahn eine Bahnhofsuhr realisieren, kann mir jemand helfen?:?:

  • > mit python clock.py --display ssd1306 startet die Uhr mit Datumsanzeige.

    > Wenn ich jedoch Putty verlasse, bleibt die Uhr stehen.

    Und was passiert bei:

    Code
    python clock.py --display ssd1306 &


    > Wie starte ich das Programm beim Hochfahren des Displays ?

    Wie weiss man wann das Display hochgefahren ist?

  • ssd1306

    das ist das 0.96"-Display

    Wie weiss man wann das Display hochgefahren ist?

    vermutlich steckt das 0.96"-Display am I2C-Bus des Raspi (bei mir an Pin 1,3,5 und 6 des 40-Pin-GPIO).


    Weil der Raspi keine Real Time Clock hat, holt er sich die aktuelle Zeit aus dem Internet. Er braucht für die Bahnhofsuhr eine Internetverbindung.


    Was Du da als Skript aufgeführt hast, ist eine Installations-Anleitung.


    Quick & Dirty:

    Info: Datei rc.local wird beim Booten als root ausgeführt.


    Zum Starten der Bahnhofsuhr,fügst Du mit Kommando sudo nano /etc/rc.local

    vor exit 0 die folgende Zeile ein:

    su pi -c 'cd luma.examples/examples; python clock.py --display ssd1306 &'


    damit startest Du eine Shell als user pi mit 2 Kommandos

    • wechseln ins Verzeichnis /home/pi/luma.examples/examples
    • Python-Skript clock.pyim Hintergrund starten.

    2 Sachen solltest Du wissen

    • mit python rufst Du Python2-Skripte auf, Python2 wird bald nicht mehr unterstützt. Aktuell ist Python3.
    • Autostart mit rc.local ist veraltet, jetzt macht man das mit systemd-Services.

    Schönen Gruß, kle

  • Könnte klappen mit der aktuellen Zeit, aber das Netzwerk dürfte zu diesem Zeitpunkt noch nicht "oben" sein.

    ja dann kann man mit raspi-config einstellen, daß beim Booten auf das Netzwerk gewartet wird.


    Edit:

    sudo raspi-config

    Boot Options --> Wait for Network at Boot

    Edited 2 times, last by kle ().

    • Official Post

    Aus der Erfahrung heraus würde ich sagen, dass das wenig bringt. Keine Ahnung ab welchem Zeitpunkt die Einstellung in raspi-config greift. Ich würde hier zu einer systemd-unit tendieren (auch wenn ich nicht so der Lüfter(Fan) davon bin).


    Oh Gott... Gleich bekomme ich Ärger und Schande für die Aussage in Klammern. :shy:

  • Aus der Erfahrung heraus würde ich sagen, dass das wenig bringt.

    Wenn "Wait for Network at Boot" nichts nützt, dann kann man den Start mit sleep <seconds> verzögern.

    also (quick & dirty):

    su pi -c 'cd luma.examples/examples; sleep 20; python clock.py --display ssd1306 &'

    um das Python-Skript 20 Sekunden zu verzögert zu starten.


    aber hyle recht, zukunftssicherer ist eine systemd-unit.

    auch wenn ich nicht so der Lüfter(Fan) davon bin

    siehst Du die Fragezeichen in meinen Augen?

    Meinst Du mit einer systemd-unit zum Autostart, schießt man mit Kanonen auf Spatzen?

    • Official Post

    Meinst Du mit einer systemd-unit zum Autostart, schießt man mit Kanonen auf Spatzen?

    Das beantworte ich mal besser nicht. :lol:


    Btw. Wenn ich einen traditionellen Weg wählen würde, dann über die Crontab von pi, damit spart man sich den Userwechsel mit su. Auch würde ich die && Operatoren verwenden.


    Also als User pi:

    Code
    crontab -e

    (ggf. Editor wählen) und in die letzte Zeile:

    Code
    @reboot sleep 20 && cd luma.examples/examples && python clock.py --display ssd1306

    eintragen.


    //Edit: Vergessen... Absolute Pfade verwenden wäre besser!

  • Vielen Dank für den Tipp, wird ich bald ausprobieren.

    Grüße :bravo2:

  • Hallo , Betr. Bahnhofsuhr

    damit startest Du eine Shell als user pi mit 2 Kommandos

    Wie geht das ?

    Grüße

    /tmp/crontab.jOC5S9/crontab

    $ay ssd1306# Edit this file to introduce tasks to be run by cron.

    #

    # Each task to run has to be defined through a single line

    # indicating with different fields when the task will be run

    # and what command to run for the task

    #

    # To define the time you can provide concrete values for

    # minute (m), hour (h), day of month (dom), month (mon),

    # and day of week (dow) or use '*' in these fields (for 'any').

    #

    # Notice that tasks will be started based on the cron's system

    # daemon's notion of time and timezones.

    #

    # Output of the crontab jobs (including errors) is sent through



    • wechseln ins Verzeichnis /home/pi/luma.examples/examples
    • Python-Skript clock.pyim Hintergrund starten.