Lueftersteuerung ohne Python

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Servus,

    dann will ich das Thema mal wieder zum Leben erwecken ;)


    Ich habe das nun alles so gemacht wie es in dem Tutorial steht, aber irgendwie läuft es nicht. Hardwaretechnisch ist es richtig verkabelt, der Lüfter läuft beim kompletten Neustart kurz an, bleibt stehen, läuft einige Sekunden später wieder kurz an und bleibt stehen und das wars.

    Die CPU/GPU Temperatur liegt definitiv höher, habe es im Blick und lasse zum Austesten nen HD Film laufen, aber der Lüfter schaltet einfach nicht ein =(

    Ich habe auch keinerlei Fehlermeldungen oder ähnliches bekommen, den Inhalt der Dateien nochmal verglichen, alles passt.

    Wie kann ich denn prüfen ob die Datei überhaupt ausgeführt wird, bzw kann ich diese manuell starten (beispielsweise wenn er 60° hat) und dann eben testen ob der Lüfter an und wieder ausgeht?

    LG

    /Edit

    Also, um euch mit ein paar mehr Infos zu füttern:

    Manuell ein und ausschalten (wenn ich direkt in /sys/class/gpio/gpio17/value schreibe) funktioniert einwandfrei, das Skript ist nach Hinweis einiger Member komplett auf GPIO17 umgeschrieben worden.

    Auch das Auslesen von /usr/local/bin/luefterscript gibt den richtigen Wert aus, also ab 50° kommt eine 1 raus...

    Das Problem scheint also beim Schreiben zu liegen, dass besagte luefterscript datei eben nicht den Wert in der GPIO17 ändert...

    Einmal editiert, zuletzt von santa (18. Oktober 2013 um 14:18)

  • Ist das Script ausführbar?

    Was passiert wenn du folgendes eingibst:

    Code
    /usr/local/bin/luefterscript.sh


    (ohne irgendwas davor zu schreiben!)

    Hast du es in die Crontab des Root Benutzers eingetragen? Wenn ja dann poste mal bitte den Eintrag
    (der Benutzer "pi" hat auf die /sys/gpio Dateien normalerweise nicht die nötigen Rechte)

  • Servus,

    also mit

    Code
    /usr/local/bin/luefterskript.sh

    bekomme ich keinerlei Ausgabe, eine neue Eingabezeile öffnet sich und das wars...


    Ich habe nun 2 crontabs angelegt, einmal mit crontab -e und einmal mit "sudo" davor. Inhaltlich bis auf die Kommis identisch:

    Code
    #Crontab -e MIT sudo!
    */1 * * * *  bash /usr/local/bin/luefterskript.sh


    Code
    #Crontab -e ohne Sudo!
    */1 * * * *  bash /usr/local/bin/luefterskript.sh

    Die ganzen Kommis die Standardmäßig drinstehen lasse ich der Übersicht halber mal weg.


    BTW: Die Datei heißt luefterskript.sh, also mit K geschrieben. Ich habe aber alle angelegten Dateien überprüft, es wird überall von mir mit K geschrieben... Habe mich da an den Post von meigrafd in diesem Thread gehalten, vielleicht hilft das noch weiter. Daher auch der "umstieg" auf GPIO17 statt 14.


    /edit

    Das Kuriosum, welches mir gerade auffiel: Der Lüfter ist an, war aber eben definitiv noch aus. Alleridngs ergibt eine Ausgabe von

    Code
    cat /sys/class/gpio/gpio17/value

    das Ergebnis 0, wieso also ist er überhaupt an?`Kann es sein dass in dem moment, wo die 50° überschritten werden nur "kurz" eine 1 den Lüfter einschaltet, dann aber die 0 in der Datei bleibt und eben erst das nächste mal wenn eingelesen wir und die Temperatur unter 35° wieder ausgeschaltet wird?

    Einmal editiert, zuletzt von santa (19. Oktober 2013 um 00:16)

  • Generell hat eigentlich nur root die nötigen Rechte auf /sys/gpio/* zuzugreifen, es sei denn man ändert bei jedem Systemstart die Rechte..

    Wenn man sudo crontab -e ausführt, öffnet man die crontab des root-Benutzers - die sollte also eigentlich reichen

    Um zu prüfen ob crontab den jeweiligen Eintrag ausführt kann man die Logdatei /var/log/syslog zum jeweiligen Zeitraum prüfen - da stehen dann ggf auch Hinweise wenn es Fehler gab (wenn ein Script also jede Minute ausgeführt wird müsste da auch jede Minute das Script gelistet sein)

    Wenn man wissen möchte was ein bash oder sh Script macht kann man es mit Debug-Ausgabe manuell ausführen, entweder indem man das Script mit Angabe des Interpreters und dem Parameter "-x" ausführt oder in dem man an die Stelle des Scripts nach dem die Debugausgabe kommen soll ein "set -x" einfügt. Also zum Beispiel:

    Code
    bash -x /usr/local/bin/luefterskript.sh

    Um sicher zu gehen dass das Script definitiv ausführbar ist sollte man es zumindest ein mal manuell aber ohne Angabe des Interpreters ausführen um sicherzustellen das der Shebang (die erste Zeile in so einem File wie zB " #!/bin/bash ") angesprochen werden würde. Also:

    Code
    /usr/local/bin/luefterskript.sh

    (ohne bash oder sh davor!)


    Wenn das Script wie beschrieben eingerichtet wurde, der Lüfter aber bei einer Value von 0 an ist, dann stimmt entweder etwas mit der Verdrahtung nicht , oder es wurde nicht ein NPN sondern ein PNP Transistor verbaut

  • Hey,

    also eine falsche Verdrahtung kann ich ausschließen, und auch dass es der falsche Transistor ist (Ich habe entsprechende Therads dazu gelesen).

    Es funktioniert ja manuell, also wenn ich

    Code
    sudo nano /sys/class/gpio/gpio17/value

    eingebe steht dort eine 0 und nichts läuft. Diese änder ich auf 1, speicher und siehe da: der Lüfter läuft.

    Das Kuriose dabei ist, das wenn ich nun

    Code
    cat /sys/class/gpio/gpio17/value


    eingebe, dort eine 0 zu finden ist, der Lüfter aber definitiv an ist. auch wenn ich die Datei erneut aufrufe steht wieder eine 0 drin und der Lüfter läuft. Lösche ich nun die 0 raus und schreibe manuell wieder eine 0 rein und speicher dann wieder, ist der Lüfter wieder aus..

    Ich muss zugeben, ich bin sehr verwirrt ^^

    Um auf den log zurück zu kommen den du gepostet hattest:

    Code
    ++ cat /sys/class/thermal/thermal_zone0/temp
    + '[' 58914 -ge 50000 ']'
    + echo 1
    ++ cat /sys/class/thermal/thermal_zone0/temp
    + '[' 59451 -le 35000 ']'

    ist die entsprechende Ausgabe wenn ich

    Code
    bash -x /usr/local/bin/luefterskript.sh


    eingebe. Vielleicht sagt dir das ja mehr als mir?

  • Hallo erst mal, ich bin neu hier und frisch gebackener Besitzer eines Raspberry Pi B. Mein erster Versuch damit ist eine Mediastation mit XBIAN.

    Das zu mir jetzt zu deinem TUT, danke noch mal an euch beide, hat gut funktioniert.:bravo2:
    Bis auf das Skript. Ich weiß nicht was ihr als Betriebssystem verwendet, auf jeden Fall geht das nicht so wie ihr das macht bei XBIAN.

    Code
    if [ `cat /sys/class/thermal/thermal_zone0/temp` -ge 50000 ]

    Die IF Schleife läuft bei XBIAN ins leere. Das File gibt es da nämlich nicht.
    für XBian muss das Skrip so aussehen.


    Ich hoffe ich bin hier richtig dafür. Wenn nicht bitte bescheid sagen.

    Und jetzt am ende noch eine Frage ans Forum, die Task jede Minute geht bei Xbian auch nicht, bin ich da im Falschen File? :huh:

    Code
    sudo crontab –e


    oder nur zu blöd?:wallbash:

  • Hi,

    ich finde dein Tutorial super, hat alles wunderbar geklappt unter Raspbian.

    Jetzt meine Frage gibt es auch eine möglich die Lüftersteuerung unter Openelec zu verwirklichen?
    Leider kenn ich mich mit Linux nicht besonders aus und bräuchte für openelec auch so ein super Tutorial.

    Auf eine Antwort freue ich mich

    Lg

    Lif3e


  • Unten jedem OS vielleicht unter OE nicht. :lol:. Kein gcc, make, git (weitere nützliche Befehle bedenkenlos fortführen ;) )

    man kann nur zum Programmieren vom DS locker das OS wechseln, die Programmierung im Sensor/Thermostat bleibt erhalten

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Hallo,

    bin leider noch relativ unerfahren im Programmieren.
    Ist es möglich die Temperatur eines an die GPIO Pins angeschlossenen Sensor ( DS18B20 ) als Messstelle für die Temperatur herzunehmen ? Also nicht auf die Temperatur des SoC bezogen ? Möchte die Lüftersteuerung für meinen raspberry Server hernehmen.


  • Ist es möglich die Temperatur eines an die GPIO Pins angeschlossenen Sensor ( DS18B20 ) als Messstelle für die Temperatur herzunehmen ?

    wenn das OS das erlaubt ja, siehe vorige Beiträge


    bin leider noch relativ unerfahren im Programmieren.

    wie willst du das dann machen ?


    Ist es möglich die Temperatur eines an die GPIO Pins angeschlossenen Sensor ( DS18B20 ) als Messstelle für die Temperatur herzunehmen ?

    und wäre es nicht einfacher den PI mal dafür nicht zu belästigen ?

    bitte sehr ohne Pyton in jedem OS einsetzbar
    Lüftersteuerung mit DS1621
    DS1621 handling einfach gemacht

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (23. Juni 2014 um 18:51)

  • Hallo !

    Bin auch gerade dabei ein Lüfter ans Laufen zu bekommen.
    Angeschlossen habe ich es über USB mit Strom und vom Gpio14 zum Widerstand 4,7k zum Trans usw ...
    Manuell Ein und Ausschalten läuft auf jeden Fall.

    Nur das es über die Temperratur gesteuert wird funktioniert nicht. Ich habe alles eingerichtet wie hier beschrieben , nur tut sich nix.

    bei /usr/local/bin/luefterskript.sh

    bekomme ich als Antwort
    /usr/local/bin/luefterskript.sh: line 5: syntax error near unexpected token `newline'
    /usr/local/bin/luefterskript.sh: line 5: `-ge 50000 ]; then echo "1" > '


    Da ich Newbie bin kann ich damit nicht viel Anfangen , evt seht ihr hier den Fehler drin ?

    MfG

    Einmal editiert, zuletzt von defjam2oo1 (22. August 2014 um 14:51)

  • /usr/local/bin/luefterskript.sh: line 5: syntax error near unexpected token `newline'
    /usr/local/bin/luefterskript.sh: line 5: `-ge 50000 ]; then echo "1" > '


    Die if 's gehören in eine Zeile:

    Code
    # Temperatur 35000 = 35° 
    # Einschaltschwelle
    if [ `cat /sys/class/thermal/thermal_zone0/temp` -ge 50000 ]; then 
      echo "1" > /sys/class/gpio/gpio14/value
    fi
    # Ausschaltschwelle
    if [ `cat /sys/class/thermal/thermal_zone0/temp` -le 35000 ]; then 
      echo "0" > /sys/class/gpio/gpio14/value
    fi
  • Nö eigentlich nicht :D

    Es geht - wie immer - auch komplexer zum Beispiel so:

    Spoiler anzeigen

    :lol:

  • Hallo zusammen,

    ich würde mir auch gerne so eine Lüftersteuerung bauen, bin allerdings nicht vom Fach. Bereits das Aussuchen der Komponenten finde ich nicht so einfach. Was brauche ich eigentlich alles?

    1x Steckbrett [Anzeige]

    1x Transistor (BC547) [Anzeige]

    1x Widerstnad 4,7k Ohm [Anzeige]

    Ist die Auswahl soweit in Ordnung? Nimmt man bei den Widerständen welche mit einer Metall oder Koleschicht? Und was für Kabel benötige ich um das alles zu verbinden?

  • Als Steckbrett (breadboard) würde auch schon ein kleines mit 270 Kontakten (gibts auch günstiger, aber dann auch längere Lieferzeit) reichen - aber ja das von dir gewählte ist i.O.

    Beim Transistor gibts 2 verschiedene Arten: NPN und PNP. Der von dir gewählte ist i.O. (die von dir gewählten hab ich auch am 12. Juli 2014 bestellt, dauerte aber recht lange bis die hier waren: 22. Juli 2014)

    Ob Kohleschicht oder Metallschicht ist relativ egal. Metallschicht haben eine niedrigere Toleranz, sind höher belastbar und geringeres rauschen aber mittlerweile nur minimal teurer als Kohleschicht..

Jetzt mitmachen!

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