GPIO wird immer hoch detektiert mit blynk

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
mr.robot.py
User
Beiträge: 11
Registriert: Samstag 19. Dezember 2020, 15:43

Hallo, ich habe ein Problem mit der App "Blynk" und meinen Raspberry Pi 4 .

Ich habe ein kleines Python Skript geschrieben das prüft ob ein GPIO Pin Hoch oder Niedrig ist (Ein Button in meiner Blynk App schaltet in ein und aus).
Der Pin ist immer hoch wenn die App das erste mal Konnektet ist,
aber wenn Ich ein Update durch einen Button mache (also also wenn den Button in der App drücke)
wird der GPIO Status angepasst sprich: Der Status des GPIO Pins passt mit der App überein.
Das passiert nur bei Python den ein Led, dass ich zum Testen angeschlossen habe passt gleich von Anfang an mit der App überein.

PS:
Bin mit Blynk ein noch ein richtiger Noob und damit auch mit der Kommunikation
mit Python und dem Raspberry.

Gruß
mr.robot.py
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

Hi mr.robot.py,

hast du mal geschaut wie die GPIOs beim Start der App initialisiert sind? Die können ja als Input oder Output, mit Pullup oder Pulldown Widerstand geschaltet sein. Ich denke das wird einen Einfluss haben.
Ich würde beim Start des Python Programms einmal alles in die gewünschte Grundeinstellung setzen, damit man einen definierten Ausgangspunkt hat.
mr.robot.py
User
Beiträge: 11
Registriert: Samstag 19. Dezember 2020, 15:43

Hallo rogerb,
danke habe ich schon einmal probiert mit dem Programm das du vorgeschlagen hast.

das mit dem initialisieren der Pins werde ich mir mal anschauen

Gruß

mr.robot.py
mr.robot.py
User
Beiträge: 11
Registriert: Samstag 19. Dezember 2020, 15:43

Hallo nochmals,

Also ich hab mir das mit dem initialisieren angekuckt und es leider nicht funktioniert.

Gruß

mr.robot.py
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

Also, wenn ich dich richtig verstehe, möchtest du dass der GPIO Pin den Status beim Programmstart einnimmt wie er in der App gesetzt ist. Damit das geschehen kann muss ja zunächst irgendeine Kommunikation stattfinden, damit der Raspberry Pi weiß wie der Status in der App gesetzt ist.

Falls das nicht automatisch beim Verbinden passiert, musst du das irgendwie in deinem Programm oder in der App realisieren.

Ich habe zum Beispiel mal in das Github Repository hier geschaut:
https://github.com/blynkkk/lib-python/b ... connect.py
https://github.com/blynkkk/lib-python

Demnach kann man in Python eine Subscription auf Connect/Disconnect events machen.
Wenn sich die App jetzt verbindet könnte man beim Connect die Initialisierung der Pins durchführen.

Ich habe mit Blynk selber aber noch nichts gemacht und ich weiß ja auch nicht was du in deinem Projekt genau verwendest und wie dein Programm aussieht.
Vielleicht kannst du mal eine Dokumentation oder Tutorial verlinken, mit dem du arbeitest.
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

Hier ist noch mehr Information:

https://github.com/blynkkk/lib-python/b ... ual_pin.py
This started program will restore on connect write_virtual_pin states and colors.
Buttons states and colors can be modified during script run.
If script was interrupted (KeyboardInterrupt) buttons colors will be changed to red.
During next connect event ( script re-run) previous buttons states and colors will be restored.
Ich denke der letzte Satz sollte interessant für dich sein.

Aber! Wie gesagt, ich kann nur raten ob die diese Repository verwendest oder nicht.
mr.robot.py
User
Beiträge: 11
Registriert: Samstag 19. Dezember 2020, 15:43

Hi,
danke rogerb für die links.
Ich werde sie gleich anschauen.
mr.robot.py
User
Beiträge: 11
Registriert: Samstag 19. Dezember 2020, 15:43

Hi,
das Problem hat sich von selbst gelöst
Hab einfach den GPIO Pin statt als Input
als Output Pin definieren.

PS: Danke noch vielmals führ die vielen links, die waren wirklich hilfreich für andere Probleme.
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

Freut mich, dass du es gelöst hast.
Hab einfach den GPIO Pin statt als Input
als Output Pin definieren.
Ja, denn Output heißt ja, dass das was du in der App über die Buttons einstellst an den GPIOs elektrisch gesehen "raus geht".
Input bedeutet, dass du den PIN als Eingang (also elektrisch gesehen) verwendest, der Zustand müsste dann an die App gesendet werden.
mr.robot.py
User
Beiträge: 11
Registriert: Samstag 19. Dezember 2020, 15:43

Hi Wieder,
Danke fürs helfen bei meinen Blynk Problemen.
Antworten