FHEM Forum

FHEM - Hardware => Einplatinencomputer => Thema gestartet von: svkn am 29 Mai 2013, 14:21:54

Titel: GPIO Status auslesen und anzeigen
Beitrag von: svkn am 29 Mai 2013, 14:21:54
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.
Titel: Aw: GPIO Status auslesen und anzeigen
Beitrag von: Puschel74 am 29 Mai 2013, 14:43:06
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).
Titel: Aw: GPIO Status auslesen und anzeigen
Beitrag von: svkn am 29 Mai 2013, 14:51:35
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 ?
Titel: Aw: GPIO Status auslesen und anzeigen
Beitrag von: Puschel74 am 29 Mai 2013, 17:06:10
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
Titel: Aw: GPIO Status auslesen und anzeigen
Beitrag von: svkn am 03 Juni 2013, 16:37:29
Danke für die Antwort. Hast du dafür mal ein Beispiel ? Aus der Doku werde ich nicht so ganz schlau.
Titel: Aw: GPIO Status auslesen und anzeigen
Beitrag von: Puschel74 am 03 Juni 2013, 16:49:46
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