GPIO-Ports (Input)

Begonnen von fladdy, 29 Dezember 2012, 12:04:52

Vorheriges Thema - Nächstes Thema

fladdy

Hallo Zusammen,

Im FHEM-Wiki gibt es ja schon eine Anleitung zum Schalten von GPIO Ports (http://www.fhemwiki.de/wiki/Raspberry_Pi:_GPIOs_schalten).

In Ausgabe 7 des MagPi (http://issuu.com/themagpi/docs/the_magpi_issue_7?mode=window) gibt es einen Artikel zur Nutzung der Raspberry GPIO-Ports in umgekehrter Richtung; das Besondere ist hier die Verwendung von Interrupts.

Ich habe das Ganze mal für Perl/FHEM ausprobiert - im Ergebnis kann ich jetzt Lampen mit einem kleinen Taster auf meinem Breadboard schalten. Funktioniert ganz gut und benötigt als Hintergrundprozess kaum Prozessorleistung.

Vielleicht hat ja jemand Verwendung dafür. Der Code ist selbsterklärend ;-)

Grüße
Fladdy

Eichhörnchen

Hallo Ihr,

bin noch neu hier und hoffe, das richtige Thema zu treffen:

Ich habe einige Probleme damit, den GPIO meines Raspberry Pi (ich versuche es mit GPIO17) aus FHEM heraus zu steuern:

Das bash script und die Einträge in der fhem.cfg entsprechend dem Beitrag hier:
http://www.fhemwiki.de/wiki/Raspberry_Pi:_GPIOs_schalten  habe ich vorgenommen.
--> Leider funktioniert das bei mir nicht so einfach, wie dort beschrieben.
Ich verwende die FHEM Version 5.3 unter Debian; ein jungfräuliches System.

Beim Ausführen des "sudo fhem-gpio.sh 17 x" in der Kommandozeile lässt sich der gpio dann ein (x=1) und aus (x=0) schalten.

Die Rechte der Files in /sys/class/gpio/gpio17 muß ich aber nun auf 777 setzen.
Und im FHEM muß ich das "sudo" vor dem fhem-gpio.sh weglassen.
Folgenden -vom Beitrag im Link abweichenden code- verwende ich in der fhem.cfg :

define GPIO17 dummy
attr GPIO17 setList on off

define on_GPIO17 notify GPIO17:on {\
system("fhem-gpio.sh 17 1 &")}

define off_GPIO17 notify GPIO17:off {\
system("fhem-gpio.sh 17 0 &")}

Mein Problem ist, daß nach einem Stromausfall die GPIO-Definitionen wieder verschwunden sind und FHEM nicht in der Lage ist, ohne das shellskript einmal ausgeführt zu haben, den gpio17 zu steuern.

Ich habe zwei Fragen:
1) Welche Voraussetzung sind zusätzlich notwendig, damit bei mir das im Link beschriebene Schalten des GPIO im RasPi funktioniert?
2) Weiß hier im Forum jemand eine praktikable Modifikation, wie mein FHEM nach einem Stromausfall automatisch die GPIOs steuern kann, ohne die Ausführung des Kommandozeilenskriptes?

Zu guter Letzt wünsche ich Euch allen noch einen GUTEN RUTSCH !!!


TomNo

Hallo,
Bzgl. der Berechtigungsproblematik kannst Du so vorgehen, dass Du den user FHEM in die Sudo-Liste aufnimmst (als root mit dem Kommando visudo aufrufen und die Berechtigungszeile von pi (letzte Zeile) kopieren und dann pi durch fhem ersetzen).

Ansonsten habe ich aktuell die gleichen Probleme wie Du. Bist Du inzwischen weitergekommen, um die GPIO-Dateien auch nach einem Neustart zu behalten?
VG TomNo

Wzut

Zitat von: Eichhörnchen schrieb am So, 30 Dezember 2012 14:461) Welche Voraussetzung sind zusätzlich notwendig, damit bei mir das im Link beschriebene Schalten des GPIO im RasPi funktioniert?
Tipp : http://elinux.org/RPi_Low-level_peripherals , runterscrollen bis zum Abschnitt "Shell script - take 2" und sich das dort verlinkte gpio installieren.
Danach lassen sich die GPIO Pins nach belieben setzen & lesen und das mit "nur" normalen Userrechten.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

franky

Hallo zusammen,

ich bin neu dabei und habe auch schon einige kleine Erfolge erzielen können (1Wire am GPIO4 etc.)
Auch den Code im ersten Beitrag verstehe ich größtenteils.

Aber wie integriere ich diese Funktion ins FHEM?

Mein erster Versuch, den Code in eine xxx.pm Datei im /opt/fhem/FHEM/ Ordner einzufügen hat dazu geführt, das System permanent auf 100% Prozessorlast hochzufahren.
Wahrscheinlich war der Ansatz völlig dämlich, aber ich lasse mich gern eines Besseren belehren ;)

VG Frank

fladdy

Zitat von: franky schrieb am Di, 04 Juni 2013 01:02Hallo zusammen,

Aber wie integriere ich diese Funktion ins FHEM?

Mein erster Versuch, den Code in eine xxx.pm Datei im /opt/fhem/FHEM/ Ordner einzufügen hat dazu geführt, das System permanent auf 100% Prozessorlast hochzufahren.
Wahrscheinlich war der Ansatz völlig dämlich, aber ich lasse mich gern eines Besseren belehren ;)

VG Frank

Moin Frank,

die Übertragung von meinem "Machbarkeitstest" in ein FHEM-Modul ist sicher nicht trivial - einer der Gründe, warum ich das Ende letzten Jahres nicht versucht hatte ... ;-)

Ich hatte ja lediglich ein existierendes python-Script auf perl übertragen und mit einem fhem-Aufruf via "system" ergänzt.

So wie ich das hochgeladen habe, muss man dan Script als Hintergrundprozess von der Konsole starten. Dort "lauert" es auf die Events der GPIOs und löst dann über den system-Aufruf die gewünschte AKtion aus.

Ich habe mich schon einige Monate nicht mehr mit dem Thema beschäftigt ... aber wenn Du ernsthaft gewillt bist, das Ganze in ein Modul zu übertragen, müsstest Du Dir sicher anschauen, wie in perl Prozesse "geforkt" werden und wie das gegenwärtig in fhem die "Interprozesskommunikation" umgesetzt wird.

Aber vielleicht hat das ja schon jemand anderer versucht...

Viel Erfolg
Fladdy

franky

Ahso, verstehe Fladdy. Das ist im identisch zu meinem Ansatz gewesen. Ich hatte es zwischenzeitlich mit einem Python Script realisiert (hatte schon eins, das bei Schalterbetätigung Interruptgesteuert Text in die Shell ausgibt), das habe ich nur um die Übergabe nach FHEM erweitert. Nicht schön, aber funktioniert. Für Dein Script bräuchte ich wie es aussieht eine kompilierte version von gpio_control.c.
Es in ein Perl Modul zu integrieren ist im mom nix für mich...ich versuche mich erstmal überhaupt in FHEM reinzufitzen ;)

Grüße
Frank

Chris65

Hallo zusammen,

ich habe die Abfrage der GPIO-Pins am RPi mittlerweile in Anlehnung an Puschels I2C Abfrage realisiert. Eine Interrupt-Steuerung benötige ich für meine Anforderung nicht, regelmäßige Abfrage ist für mich ausreichend.

Nun fehlt nur noch die Trennung der Eingänge über Optokoppler.

Falls Interesse besteht...

Gruß

Christoph

franky

Hi Christoph,

Interesse besteht auf alle Fälle :)
Ich habe mich immer noch nicht intensiv mit der Modulprogrammierung befasst.

Grüße
Frank