Lueftersteuerung ohne Python

  • Lüftersteuerung per Temperatur


    Mittlerweile habe ich schon so viele Infos hier bekommen, dass ich mich mal dafür revanchieren wollte!
    Ich habe aufbauend auf das Tutorial von logan517 klick meine Lüftersteuerung ohne Python realisiert.
    Dies wollte ich hier kurz bechreiben....


    1. Montiert den Lüfter nach der Anleitung von logan517 in ein Gehäuse und verlötet den Transistor. Ich habe den Pin 14 gelassen. Es kann aber auch ein andere verwendet werden.


    2. Erstellt eine neue Datei für das Skript

    Code
    sudo nano /usr/local/bin/luefterskript.sh


    3.In Datei habe ich folgenden Code gesetzt


    der Lüfter wird momentan bei 50° gestartet und bei 35 wieder gestoppt.


    -> speichern mit strg+x


    3. Jetzt machen wir die Datei noch ausführbar

    Code
    sudo chmod +x /usr/local/bin/luefterskript.sh



    4. Bis jetzt sind aber die virtuellen Dateien der Gpio's im System noch nicht bekannt. Deshalb muss in die rc.local vor exit 0 für den Autostart folgendes

    Code
    sudo nano /etc/rc.local


    Code
    # GPIO Init
    echo "14" > /sys/class/gpio/export
    chmod 666 /sys/class/gpio/gpio14/value && sudo chmod 666 /sys/class/gpio/gpio14/direction
    echo "out" > /sys/class/gpio/gpio14/direction


    5. Jetzt legen wir noch einen Crontab(Zeitlicher aufruf des Skript) an

    Code
    sudo crontab -e


    Und fügen am Ende folgendes an

    Code
    */1 * * * * /usr/local/bin/luefterskript.sh


    Reboot

    Code
    sudo reboot


    Somit wird unser Skript jede Minute gestartet....
    Das wars auch schon. Nun sollte der Lüfter je nach Temperatur automatisch starten!:D
    Die Temperaturen können natürlich frei angepasst werden.
    Ebenfalls könnte man das Skript um einen kleinen Regler erweitern.
    Viel Spaß....


    Django!!!

    Edited once, last by django ().

  • In diesem Fall brauchen wir ein reboot!!


    Quote


    4. Bis jetzt sind aber die virtuellen Dateien der Gpio's im System noch nicht bekannt. Deshalb muss in die rc.local vor exit 0 für den Autostart folgendes
    Code: Alles markieren

    Code
    sudo nano /etc/rc.local


    Code: Alles markieren

    Code
    # GPIO Init
    
    
    sudo echo "14" > /sys/class/gpio/export
    
    
    sudo chmod 666 /sys/class/gpio/gpio14/value && sudo chmod 666 /sys/class/gpio/gpio14/direction
    
    
    sudo echo "out" > /sys/class/gpio/gpio14/direction


    Sonst werden die virtuellen Dateien nicht erstellt !!! =)


    Oder ???:P

    Edited once, last by django ().

  • Hmmm, weiß ich ja alles nicht. Deshalb bin ich über eine Erklärung dankbar.
    Mein Gedanke war, dass die rc.local nur bei einem Systemstart ausgeführt wird. Wenn also das System in der Zeit nicht neu gestartet wurde, sind auch die Befehle noch nicht ausgeführt worden?? Ich habe nur aufgeschrieben wie es bei mir funktioniert hat!!!


    Wollte dich da nicht verbessern oder so!! Und würde mir das auch nicht zutrauen mit meinem Kenntnisstand!!
    Aber mit dem Smiley kommt es falsch rüber, da hast du recht!!


    Edit:


    Quote


    Möchte man eigene Dienste, Skripte oder Programme, die keinen Eintrag in den Runleveln besitzen, beim Systemstart automatisch laden, so kann man diese in die Datei /etc/rc.local eintragen. Dabei entfällt die Verwendung von sudo – Einträge werden immer mit Root-Rechten ausgeführt.


    Hätte ich mal gegoogelt =)

    Edited once, last by django ().

  • Danke für das Tutorial. Hat gut funktioniert.
    Ein bisschen komisch war nur, dass ich den Lüfter mit


    Code
    echo "0" > /sys/class/gpio/gpio14/value


    einschalte, anstatt mit


    Code
    echo "1" > /sys/class/gpio/gpio14/value


    Also genau umgekehrt. :D Naja, mein Raspi bleibt bei dem Wetter jetzt
    immer schön kühl.


    Gruß

  • Mir ist jetzt doch noch etwas aufgefallen und ich bräuchte einen Tipp wie man das ändern könnte.


    Wenn der Lüfter gerade läuft und der Pi währenddessen heruntergefahren wird, läuft der Lüfter solange weiter, bis der Netzstecker gezogen wird.


    Kann man automatisch vor dem Herunterfahren ein Script ausführen was den Lüfter deaktiviert?
    Ich weiß halt nur nicht wie ich das Script beim Shutdown automatisch aufrufe.


    Gruß


    (Ich hoffe der Doppelpost ist nicht so tragisch)

  • Google mal nach dem Stichwort Runlevel...Das sollte dir bei deinem Problem helfen.

  • Habe ich gemacht und auch halbwegs verstanden.
    Sobald der Pi runterfährt wird der Lüfter deaktiviert.


    Wenn der Pi dann aber aus ist (nur noch die Powerled leuchtet),
    geht der Lüfter wieder an. Es scheint als liegt, sobald der Pi aus ist,
    dauerhaft Strom auf den GPIO Pins. Kann das sein?


    Gruß

    Edited once, last by 71m ().


  • Na sicher ist da Strom drauf ... oder warum, denkst Du, leuchtet die Power-LED ;) ...
    cu,
    -ds-

  • Aber ich habe gedacht die GPIO wird beim
    herunterfahren irgendwie deaktiviert. :D Naja.


    Also gibt es dann keine Möglichkeit (außer den Netzstecker zu ziehen),
    den Lüfter zu stoppen?


    Gruß


  • Moin Timmeyable ...


    wenn ich das hier richtig verfolgt habe, dann ist Dein Problem mit dem Lüfter eher, dass Du den genau entgegengesetzt wie einige hier ein- bzw. ausschaltest.
    Du schreibts doch eine 0 zum Einschalten in das GPIO-Register?
    Wenn der RPi runterfährt und die CPU abschaltet, ist LOW vermutlich der Pegel, auf den die GPIOs gehen, und damit läuft Dein Lüfter an.


    Dumm gelüftet ... äh gelaufen.
    Vielleicht kannst Du da was ändern ...


    cu,
    -ds-

  • Kannst du mal die genaue Bezeichnung von deinem Transistor nachschauen?
    Könnte auch ein anderer Typ sein??


    Ebenfalls schau mal in der rc.local nach ob du den Pin auch als Out gesetzt hast !!


    Grüße

    Edited once, last by django ().

  • Ich möchte euch auf keinen Fall in euren 'Programmierwahn' bremsen aber das geht auch einfacher und wesentlich entspannter wenn es um die Kühlung eures Pi geht. Alle meine 40er und 50er Lüfter, die ich hier rumliegen habe laufen auch mit 5V sicher an. Ob die 5V vom Raspinetzteil oder vom Hub kommen ist wurscht. Und er bekommt immer ausreichend Luft... .

    waren das Zeiten, als Ordner noch Verzeichnisse waren


  • Hallo Leute


    Gibt es vorteile das Script ohne python laufen zu lassen? Performance o.ä?


    Gruss


    [font="Verdana"]Ich vermute nicht, aber ich finde die Variante ohne Python übersichtlicher, da man nur ein einziges kleines Skript hat.[/font] Getestet habe ich die Python Variante nicht!


    Quote


    [font="Tahoma"]I.R.Gendwer[/font]


    [font="Verdana"]Zu dir du schlauer Fuchs kann ich nur sagen: Hut ab für diese Entdeckung! :bravo2:[/font]
    [font="Verdana"]Für mich ist an dem Raspberry Projekt der Weg das Ziel. Klar kann man einfach den Lüfter anstecken und fertig. Aber dann läuft er immer und du hast rein gar nix dabei gelernt!![/font]

  • Danke für die sarkastische Einlage;)
    Wenn es um das Lernen geht

    Quote


    [font="Verdana"]... Für mich ist an dem Raspberry Projekt der Weg das Ziel.[/font] ...


    unterschreibe ich das auf jeden Fall.

    waren das Zeiten, als Ordner noch Verzeichnisse waren

  • In diesem Fall brauchen wir ein reboot!!


    Nein - Man muss nicht für jeden Mist das System neu starten :(


    Die Datei ist ausführbar also brauch man in der Konsole einfach nur /etc/rc.local eingeben.. Oder die Befehle die in dem Script stehen einfach in der Konsole eingeben?!


    [hr]


    Aber was anderes: In dieser Anleitung wird nicht beschrieben was mit dem Lüfter passieren soll wenn das System herunter gefahren wird obwohl der Lüfter grad läuft.. ?


    Da der Lüfter vom RaspberryPI sein Strom bezieht, dieser aber kein PowerManagement hat, kann sich dieser auch nicht komplett Stromlos schalten, er geht also nicht wirklich komplett aus sondern wird nur angehalten - der Lüfter würde dann also immer weiter laufen ...


  • Da der Lüfter vom RaspberryPI sein Strom bezieht, dieser aber kein PowerManagement hat, kann sich dieser auch nicht komplett Stromlos schalten, er geht also nicht wirklich komplett aus sondern wird nur angehalten - der Lüfter würde dann also immer weiter laufen ...


    Moin zusammen...


    Theoretisch... sollten die GPIO's auf "0" gehen wenn der RasPi "angehalten" wird, da keine Prozessoraktionen mehr durchgeführt werden und die GPIO's auch 'nur' über Transistoren 'geschaltet' werden. (Mikrocontroller 1x1)
    Konnte ich aber leider noch nicht testen, da mein RasPi gerade noch unterwegs ist... =(


    Zu dem Problem von Timmeyable:


    Du musst bei dem Script auf jeden Fall darauf achten, dass du die GPIO's richtig konfigurierst und du einen NPN-Transistor verwendest.


    NPN = Spannung an die Basis = AN
    PNP = Spannung an die Basis = AUS
    Heißt beim NPN: GPIO auf "1" = Spannung an der Basis = AN


    Hat gedauert bis ich das begriffen habe.:lol:


    Und zum Schluss noch an django und logan517 :


    Super Sache das :thumbs1: ... Noch keinen RasPi hier und trotzdem habe ich das ganze schon umgesetzt :D


    MfG


    roman1528