2 x GPIO Input Taster loops 50% Auslastung

  • Hallo zusammen


    Hab auf meinem PI zwei einfache loops für die Überwachung von zwei inputs laufen und das Gerät ist mit 50% ausgelastet und wird schon ganz schön warm. Ist das normal und bin ich so auf max 4 solche loops beschränkt ?


    Raspberry PI B 3+


    LG Tristan

  • Hier das ganze script

    • os.system ist veraltet und nicht mehr zu verwenden. Du willst das subprocess-Modul, steht auch in der jeweiligen offiziellen Doku!
    • Du musst das time.sleep(0.2) wennschon außerhalb der if-Abfrage haben, sonst wird der Prozessorkern, auf dem das Programm läuft die ganze Zeit wenn dein GPIO auf LOW ist zu 100% ausgelastet!
    • Polling mit einem Sleep dahinter ist sowieso 'ne blöde Idee, wie wäre es mit einem Interrupt?
    • Schau dir das modernere gpiozero an, RPi.GPIO wird nicht mehr weiterentwickelt!
  • Hi Linus


    Vielen Dank für die Tipps. Ich bringe mir das ganze erst seit kurzem selbst bei, bin also noch in der Lernphase :S Der input soll permanent überwacht werden, sobald der Input kommt soll auf dem remote PI ein Relay ziehen, somit dass sleep nach dem if nicht vorteilhaft wenn der Input genau dann kommt. Sleep im if hab ich nur gemacht das der Befahl nicht zu oft gesendet wird wenn der tester zulange gedrückt wird.


    Hast du das Gefühl wenn ich alles um schreibe anhand von deinen Tips das die Leistung runter geht ? Ziel währe es so viele solche loops wie möglich laufen zu so das ich mit einem PI möglichst viele Inputs bedienen kann.


    Wenn ich mit meinen Annahmen irgend wo falsch liege bin ich für jeden Tipp sehr Dankbar :D

  • Mir ist gerade noch eine Idee gekommen, löst das Auslastungsproblem generiert aber das Problem das es nur für einen Tester funktionier wenn beide gleichzeitig oder minimal versetzt gedrückt werden.

  • hey perfekt,


    mit dem loop keinerlei Auslastung auf dem PI nur beim drücken 2% und viel einfacher auch noch. TOP

    Vielen vielen Dank

  • Hallo TristanKayser,


    was ist denn das für ein Unsinn? :lol:


    Sieh Dir bitte die gpiozero-Doku, speziell die Button-API nochmals genauer an! Dieses kleine Beispiel daraus macht doch die Verwendung klar:



    Da ist keine Schleife und somit auch kein sleep nötig das regelt gpiozero quasi intern. Und Du solltest Dir auch den Hinweis von Linus bezüglich subprocess zu Herzen nehmen! :shy:

    "Alles, was wir sind, ist Sand im Wind, Hoschi."

  • Integration von subprocess:

    Da mit du auch noch was zu tun hast, versuche diesen Code mit hyle s Code zu kombinieren ;)

  • Hey Jungs


    Ihr seit genial danke für die grossartige Unterstützung. Script sieht jetzt wie folgt aus:

  • Auf die schnelle. import time noch raus und


    Zitat

    o = 'sshpass -p *** ssh pi@*** "python3 /projects/test/onoff.p$

    absicht oder Fipptehler? ;)


    //Nachtrag: Wozu überhaupt sshpass? Willst Du Dich auf einem anderen System anmelden oder ist das nur ein Würgaround?

    "Alles, was wir sind, ist Sand im Wind, Hoschi."

  • Ops noch nicht ganz aufgeräumt....


    Das ist nur vom kopieren Fenster war zu klein dann wird's so abgeschnitten.

    Zitat

    //Nachtrag: Wozu überhaupt sshpass? Willst Du Dich auf einem anderen System anmelden oder ist das nur ein Würgaround?

    Ich plane meine Hausautomation so selbst zu gestallten. Ich will PI's für den Input von Schaltern, Bewegungsmeldern usw. und dann welche für das schalten der Outputs Relay(230V), LED strips.

    Über die Verzeichnisse und die Berechtigungen der Scripts habe ich mir noch nicht wirklich Gedanken gemacht. Darum mal vorerst sshpass und das ganze einfach für jedem im Netz frei zugänglich zumachen finde ich auch nicht toll bin ich noch dran.


    Nochmals Danke :thumbup: