Modul zur Nutzung der Raspberry Pi GPIO

Hallo Tom,

selbstverständlich gibt es Funktionen die Du nutzen kannst. Wenn Du mit rechts auf die Instanz (hier IPS2GPIO_Output) klickst, dann gibt es dort im Kontextmenü „Befehle testen“, dort siehst Du nicht nur die möglichen Funktionen, Du kannst sie dort auch direkt ausprobieren. In dieser speziellen Instanz steht Dir „set_status“, „toggle_status“ und „get_status“ zur Verfügung…

Zum anderen: Du solltest das nicht so machen wie Du es beschrieben hast. Wenn Du eine Python-Skript oder etwas anderes auf den Pin einwirken lassen möchtest, dann solltest Du das über IPS machen, indem Du eben per Funktionen eine Änderung anstösst. Das geht auch aus Python-Skripten! Wenn etwas ohne Wissen des Moduls daruf einwirkt, dann gibt es selbstveständlich keine Rückmeldung da das Modul von einem exklusiven zugriff ausgeht. Der Zustand des Output müsste sonst regelmäßig gepollt werden. Es gleichzeitig als Output und Input zu konfigurieren - wenn es mich schon überrascht dass das überhaupt funktioniert - könnte auch nach hinten losgehen…

Ich habe das Output-Modul im Kern sehr stark überarbeitet, auch die Möglichkeit einer invertierten Anzeige eingebaut. Meine Tests zwischen Einkauf, Grill und Kindern waren in der Kürze zwar erfolgreich, probiere es bitte aber selbst noch mal aus und melde Dich bitte wenn etwas nicht so laufen sollte wie erwartet.

Joachim

Ah, das Kontextmenü kannte ich nicht - super ! Ich teste das gerne mal durch, sieht gut aus. Danke auch für das Invertieren !

Hab jetzt meine Python Script rausgeschmissen und alles auf IPS umgestellt - aber das Problem bleibt:

Ich habe auf Host1 nun IPS und pigpiod (CS auf 127.0.0.1), auf Host2 nur IPS (CS auf Host1) und auf beiden Systemen IPS2PIGPIO_Output. Kein _Input mehr.

Schalte ich auf Host1, so wird dort auch Status umgeschaltet - aber auf Host2 ändert sich der Status nicht und zeigt den falschen Zustand an.

…das ist auch nicht so vorgesehen… (Erläuterung siehe oben).
Warum machst Du das so??

Joachim

Um nochmal auf den Pir an meinen Raspberry zurück zukommen.

Ich haben den nach dieser Anleitung angeschlossen und er funktioniert tadellos

Leider bekomme ich es in Symcon leider nicht hin das er richtig angezeigt wird.
Staus bleibt dauerhaft an.
Toggle wechselt zwischen an und aus alle 30 sec.
Trigger bleibt aus.

Was mache ich falsch?
Danke für eure Hilfe.

mfg: Ace

Hallo Joachim,

ich hatte es so verstanden, dass das Setzen der Pins nur über IPS/pipiod erfolgen sollte und nicht mit python am pigpiod vorbei ?

Ich wollte lokal am RasPI ein Skript schreiben, dass die Relais überwacht und nach einer gewissen Einschaltzeit wieder ausschaltet. Es hängen Magnetventile dran, wenn da dauerhaft Wasser läuft ist das kritisch.

Naja, dann muss ich wohl auf jedem Raspi einen IPS Server aufsetzen - das wollte ich aber auch vermeiden, da die Raspis teilweise nur kleine Zeros sind.

Wenn ich über den Socket schalte, befürchte ich, dass die Ausschaltbefehle mal verloren gehen, wenn die Verbindung zum Raspi gestört ist (WLAN)

Hallo Tom,

schau Dir mal die Datenkommunikation zwischen verschiedenen IPS an. Dann mache es zumindest so, dass wenn Dein abgesetztes IPS schaltet, dieser die „get_status“-Funktion im „Haupt-IPS“ aufruft.
Du könntest auch regelmäßig die Verbindung prüfen, ich weiß schon warum ich eher so ein „kabelgebundener Typ“ bin.:wink:
Du kannst auch bei Pyhton bleiben, nur sollte diese - wenn Du darüber eine Änderung durchführst das „Haupt-IPS“ davon unterrichten.
Alternativ bleibt aber noch eine Möglichkeit im „Haupt-IPS“ denn Status durch regelmäßigen Aufruf der „get_status“-Funktion zu überprüfen - finde ich aber nicht so schön…
Jedes Schiff hat nur ein Kapitän…:wink:

Joachim

Hallo Ace,

Deine Informationen sind sehr dürftig…

  • Ist GPIO23 als Input deklariert?
  • Ist der PIR High- oder Low-aktiv?
  • Ist der „Aktions-Wert“ im Konfigurationsformular des Input entsprechend eingestellt?

Wenn der Toggle regelmäßig den Status ändert, sieht es zumindest so aus, als ob er regelmäßig ein Signal bekommt. Der Trigger wird i.d.R. so kurz sein, dass es zu keiner sichtbaren Veränderung in der Konsole kommt, gleichwohl reicht es aus um die Veränderung dieser Variablen als Trigger für Dein eigenes Skript zu verwenden…

Joachim

Hast Recht, vielleicht ist meine Idee auch nicht so gut, alles auf dem RasPi zu packen. Da werde ich wohl die Relaissteuerung auf meinem ATMEGA lassen - der schaltet die Relais garantiert wieder aus.

Aber das Experimentieren macht ja auch Spaß. So rückblickend muss ich sagen: Tolle und einfache Sache - mir gefällt nur nicht, dass die Status-Var nicht auch garantiert den echten Zustand des Relais anzeigt. Mit _input und _output auf einem Pin geht das, aber das ist wohl nicht vorgesehen. Wäre es nicht sinnvoll, die input-Funktionalität im output Modul zu integrieren ?

Bei mir „klemmte“ der pigpiod auch manchmal, aber sehr selten. Dann waren Zustand und state ebenfalls aus dem Tritt und der nächste Toggle-Befehl lief logischerweise ins Leere.

Hallo Tom,

ich „wehre“ mich dagegen, etwas zu unterstützen was nicht so vorgesehen ist. Gleichwohl habe ich Dir die Funktion „get_Status“ erstellt, so dass Du regelmäßig selbst den aktuellen Status ermitteln lassen kannst. Für alle die sich „regelgerecht“ Verhalten würde ansonsten sehr viel unnötig der Traffic entstehen, weil ein Ausgang von einem User auch als Eingang benutzt wird. Pollen ist insofern ja immer etwas ineffizient, weil bei tausenden von Zyklen eben nichts passiert.
Ich habe versucht Dir Wege der „regelkonformen“ Umsetzung aufgezeigt, wenn Du die Kontrolle über Dein Gesamtsystem behalten willst, solltest Du danach vorgehen…:wink:

Joachim

Aah, stimmt, get_Status - das hatte ich ganz übersehen ! Das ist dann ja völlig okay so !

Hallo Ace,

Deine Informationen sind sehr dürftig…

  • Ist GPIO23 als Input deklariert?
  • Ist der PIR High- oder Low-aktiv?
  • Ist der „Aktions-Wert“ im Konfigurationsformular des Input entsprechend eingestellt?

Wenn der Toggle regelmäßig den Status ändert, sieht es zumindest so aus, als ob er regelmäßig ein Signal bekommt. Der Trigger wird i.d.R. so kurz sein, dass es zu keiner sichtbaren Veränderung in der Konsole kommt, gleichwohl reicht es aus um die Veränderung dieser Variablen als Trigger für Dein eigenes Skript zu verwenden…

Joachim

  • Also PIR liegt auf GPIO4
  • also bei GPIO.RISING löst er aus, also gehe ich von High aus
  • Actions wert prüfe ich nachher wenn ich zuhause bin.

Acer

…habe mir so ein Ding mal bestellt, sollte morgen eintreffen. Auf GPIO 4 liegt auch der 1-Wire-Server, der sollte dann in der der raspi-config deaktiviert sein!

Joachim

Ich steck den heute Abend mal auf einen anderen Port und schau dann mal ob er geht.

So hab es soweit probiert, leider geht es nicht, Ich überprüfe morgen Abend nochmal die Kabel das schaffe ich heute leider nicht mehr.

Hier noch ein Bild meiner Einstellungen.

Hallo Acer90,

Du hattest in einem vorherigen Posting beschrieben, dass der Status dauerhaft auf True ist (also der Ausgang des PIR High), daher gehe ich davon aus, dass der PIR bei Aktivierung kurz auf Low geht. Wenn das so ist müsste der Input also auf False reagieren und nicht wie von Dir aktiviert auf True.
Ich hoffe das das Ding heute in der Post ist und werde es mal ausprobieren…

Joachim

Nachtrag: Nach der Beschreibung hier, wird der Ausgang kurz auf True gesetzt, von daher wäre Deine Einstellung korrekt, möglicherweise ist jedoch bei Dir die Einstellung am PIR zur Impulsdauer und zur Empfindlichkeit nicht „passend“?

Hatte geschrieben das er auf Rising(steigend) reagiert, deshalb vermutet ich das ich High einstellen muss.
Habe es gestern nochmal mit Python getestet, und jetzt geht er nicht mehr, deshalb will ich heute nochmal die Kabel checken.

Hallo Acer90,

habe heute die Gelegenheit gehabt es auszuprobieren. 5V, GND und GPIO 7 (Pin26) gewählt und funktioniert…
Aktionswert aktiviert, Glitchfilter auf 50ms.

Joachim

Ok das mit den Glitchfilter muss ich auch mal testen.

Werde ich nachher mal ausprobieren. Danke für die Info.

Hallo

Als erstes möchte ich ein großes Lob für diese Modul aussprechen, hatte es zuvor über ein Phyten Script gelöst welches meine IPS Var versorgte, lief aber zu meinem Bedauern nicht sehr stabil.

Eine Sache hätte ich noch zum Optimieren, nach einem Neustart sind alle GPIO die als Out deklariert sind auf Low, d.h. im meinem Fall Relais zieht an. Ich habe gesehen das es die Einstellung gibt invertiere Anzeige.
Kann man das nach einem Neustart berücksichtigen ob der Ausgang auf Low oder High geschalten wird.