GPIO Status auslesen und anzeigen

Begonnen von svkn, 29 Mai 2013, 14:21:54

Vorheriges Thema - Nächstes Thema

svkn

Hallo erstmal an alle,

ich möchte gern meine Hausautomatisierung auf der Basis von FHEM und dem Raspberry aufbauen. Zuerst soll die Gartenbewässerung damit geschaltet werden. Die Ansteuerung der Magnetventile/Relais über FHEM ist auch schon eingerichtet. Dazu habe ich folgendes definiert.


attr global room Garten
define GPIO17 dummy
attr GPIO17 room Garten
attr GPIO17 alias Beet hinten
attr GPIO17 setList on off

define on_GPIO17 notify GPIO17:on {\
system("gpio -g write 17 0")}

define off_GPIO17 notify GPIO17:off {\
system("gpio -g write 17 1")}

Nun würde ich aber gern den Status der GPIO auslesen und danach die Anzeige in FHEM realisieren.
Geht so was ? Und wenn ja wie ? Über ein paar Tipps und Hinweise würde ich mich freuen.

Puschel74

Hallo,

mit den GPIO-Pins arbeite ich (noch) nicht aber sollte das anstelle von write nicht mit read gehen?
Ich weiß nicht ob das unterstützt wird.

Grüße

Edith: Sorry, grad nach gelesen. Read geht nur bei Eingängen aber nicht bei Ausgängen (was ja auch Sinn macht).
Edith2: Aber in /sys/class/gpio gibt es einen Unterordner mit dem Pin (/sys/class/gpio/gpio17 für Ausgang 17). Aus diesem sollte man sich den letzten Zustand auslesen können (1 für ein und 0 für aus).
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

svkn

den Status der GPIO auszulesen ist nicht das Problem. Dazu gibt es 'gpio readall'. Dieser listet die GPIO auf mit dem Wert "IN" oder "Out" und dazu "High" oder "Low". Aber wie bekomme ich das im FHEM angezeigt ?

Puschel74

Hallo,

wenn du dieses "gpio readall" über ein Script aufrufen und die Rückgabewerte in Variablen abspeichern kannst brauchst du diese
Variablen "nur" noch an fhem übergeben.
Der Scriptaufruf kann per notify als Subroutine in der 99_myUtils.pm erfolgen.

So mache ich das um meine LM75 ab zu fragen.
Per at wird alle x Minuten ein notify getriggert über welches eine Routine in der 99_myUtils.pm aufgerufen wird.
Diese Routine fragt per Kommandozeilenbefehl den Sensor ab und bekommt als hex die Temperatur zurück.
In der Routine wird dann von hex nach dez umgerechnet und der Wert an das notify zurück geliefert welches mir dann entsprechend diesen Wert in einen Dummy schreibt.
Ich bin mir sicher das das auch einfacher geht - aber ich bin schon zufrieden das ich das soweit hin bekommen habe.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

svkn

Danke für die Antwort. Hast du dafür mal ein Beispiel ? Aus der Doku werde ich nicht so ganz schlau.

Puschel74

Hallo,

so habe ich den Aufruf in meine 99_I2C_GetValue.pm eingebaut:

my ($befehl) = "sudo i2cget -y 1 ".$sensor." 0x00 w &";
my ($result) = `$befehl`;


Ausserhalb einer *.pm muss, vermute ich, noch ein system vorne dran.
Da kann ich mich aber auch täuschen.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.