Brauche Hilfe beim Abfragen einer Website im Script

  • Hallo zusammen


    Ich habe vor Kurzem angefangen, ein wenig mit dem Raspberry Pi 4 herumzubasteln. Mein jetziges Projekt ist, dass ich ein Sonoff-Tasmota WLAN-Relais durch Knopfdruck schalten möchte. Im Terminal kann ich mit: (wget 'http://192.168.1.175/?m=1&o=1') das Relais umschalten. Meine Frage ist jetzt: Wie kann ich das in einem Python Script machen, welches ausgeführt wird, sobald ein Taster betätigt wurde?

    Ich kenne mich mit Programmieren noch nicht so gut aus. Wahrscheinlich ist es sehr einfach zu lösen, allerdings habe ich nirgends eine funktionierende Lösung gefunden.


    Danke im Voraus für die Hilfe.

  • Inklusive warten auf Taster und Fehlerbehandlung wenn das `get()` zwar eine Antwort erhält, die aber einen Fehlercode enthält:

    Die Pin-Nummer 42 muss natürlich durch die tatsächliche Pin-Nummer ersetzt werden.

    “Mut ist oft Mangel an Einsicht, während Feigheit nicht selten auf guten Informationen beruht.” — Sir Peter Ustinov

  • Danke für die Antworten. Ich werde es morgen ausprobieren. Selber hätte ich wahrscheinlich Tage verbracht, ein funktionierendes Script zu schreiben.

    :danke_ATDE:

  • hyle Ist das ungebremst? Ich weiss gerade nicht ob `wait_for_press()` nur auf die Flanke wartet oder tatsächlich nicht blockiert wenn der Knopf schon gedrückt ist. Bin auch gerade zu faul in der Dokumentation nachzuschauen. 😎

    “Mut ist oft Mangel an Einsicht, während Feigheit nicht selten auf guten Informationen beruht.” — Sir Peter Ustinov

  • Sorry, das mit der Schleife war Blödsinn! :blush:


    Trotzdem würde ich keine im Skript verwenden, bzw. empfehlen, weil das nicht gerade OOP ist und das Skript damit schlecht erweiterbar wird. Meiner Meinung nach ist hier button.when_pressed besser geeignet.


    In etwa so:

    (Ungetestet!)

  • hyle OOP ist das jetzt auch nicht, das braucht man ja erst wenn man sich über die Rückrufe hinweg Zustand merken muss.


    IMHO ist das nicht so schön wenn der Haupt-Thread einfach nichts macht als auf ein Signal zu warten und die eigentliche Arbeit in einen extra Thread zu verschieben der nur existiert weil der Haupt-Thread nur Däumchen dreht/schläft.


    Naja, ist Geschmackssache. Jetzt kennt der OP beide Wege. 🙂

    “Mut ist oft Mangel an Einsicht, während Feigheit nicht selten auf guten Informationen beruht.” — Sir Peter Ustinov

  • Vielen Dank für die Hilfe.


    Ich habe das Skript von __blackjack__ und von hyle getestet. Das von hyle habe ich noch nicht zum Laufen gebracht, das von __blackjack__ funktionert. Jetzt ist es aber so, dass bei diesen Skript das Relais immer ein und ausschaltet, wenn der Taster nicht nur ganz kurz betätigt ist... Kann man dort noch eine Pause einfügen, damit man den Taster etwa eine Sekunde gedrückt halten kann? Und wo müsste ich diese Pause reinprogrammieren?

  • Hier mal der Code meiner Türklingel. Wenn man kurz drückt (kürzer gedrückt hält als 1,5 Sekunden), klingeln alle Telefone an der Fritzbox nur kurz und wenn man länger gedrückt hält, klingeln sie länger. Zum Glück weiß (noch) niemand von dieser Funktion ;)


    Kelvin

  • Das von hyle habe ich noch nicht zum Laufen gebracht

    So sollte es jetzt funktionieren (Zeile 9 angepasst).


    dass bei diesen Skript das Relais immer ein und ausschaltet, wenn der Taster nicht nur ganz kurz betätigt ist...

    Was Du suchst ist, soweit ich das verstehe bounce_time= im Link von Dennis89

  • Hurra! Es funktionert!!!


    Vielen Dank an alle die mir geholfen haben, ohne euch hätte ich das niemals geschafft!


    :danke_ATDE:


    Freundliche Grüsse


    ICENICE