Relais über GPIO schalten und Taster abfragen.

Begonnen von Tueftler1983, 05 Oktober 2016, 17:00:00

Vorheriges Thema - Nächstes Thema

Tueftler1983

Hallo ich habe an meinem FHEM System eine AVR NET IO mit Ethersex Firmware über Netzwerk eingebunden  über das ich 4 Relais schalte und 2 Eingänge auswerte.
Jetzt gibt es aber des öfteren Probleme, Relais werden nicht geschaltet obwohl es angezeigt wird oder der Zustand der Eingänge wird nicht erfasst.

Jetzt wollte ich gerne eine kleine 4 Kanal Relaiskarte über die GPIO's schalten und über 2 GPIO's den Zustand der Schalter abfragen. Geht das so einfach?

An den GPIO'S hängen bis jetzt nur ein 433mhz Sender (GPIO17) und Empfänger (GPIO18)
Angesteuert bzw ausgelesen mit Pilight.
Damit ist auch Wiringpi installiert.

Wiringpi Pin 0 Sender und Empfänger Pin 1

Jetzt hätte ich gern
Relais1 auf Pin 2
Relais2 auf Pin 3
Relais3 auf Pin 4
Relais4 auf Pin 5
Eingang1 auf Pin 6
Eingang2  auf Pin 7

Wie stelle ich das an?
Elektrisch kein Problem aber wie konfiguriere ich das in Fhem?

Danke euch schonmal für die hilfe

klausw

Schaue dir mal dieses Modul an.
Damit kannst du die GPIOs unter FHEM nutzen.
Das Modul verwendet die BCM Nummerierung.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Tueftler1983

Okay wenn ich es richtig sehe muss ich aber immer den GPIO PIN  abfragen an dem z.b. Meine Klingel angeschlossen ist... oder?
Ich bekomme nicht automatisch den Zustand angezeigt.
Das wäre doof da ich ja eine Aktion auslösen möchte wenn es an der Türe klingelt.

klausw

Lies den Abschnitt doch erstmal bis zum Schluss durch.  8)
Pollen ist nicht notwendig, da der Interrupt verwendet werden kann.
Die Ports können nur 3,3V. Mit der Klingel solltest du da aufpassen.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Frank_Huber

Zitat von: Tueftler1983 am 05 Oktober 2016, 17:00:00Eingang1 auf Pin 6
Eingang2  auf Pin 7

Ich denke Du meinst GPIO 6 und 7.
Pin 6 wäre GND, Pin 7 wäre GPIO 04

Die GPIOs so:
define GPIO_IN_06 RPI_GPIO 6
attr GPIO_IN_06 active_low yes
attr GPIO_IN_06 debounce_in_ms 20
attr GPIO_IN_06 direction input
attr GPIO_IN_06 interrupt both

define GPIO_IN_07 RPI_GPIO 7
attr GPIO_IN_07 active_low yes
attr GPIO_IN_07 debounce_in_ms 20
attr GPIO_IN_07 direction input
attr GPIO_IN_07 interrupt both


0V auf den GPIO legt den Eingang auf aktiv.

Tueftler1983

#5
Hallo
Mit der Klingel ist kein Problem da ich mit der Klingel Leitung auf einen Gleichrichter gehe mit Kondensator dahinter und dann auf ein Relais Modul das von 6-12v zuverlässig schaltet und mit dem Relaiskontakt gehe ich dann auf den Raspberry.

Mit den Pins meine ich die Belegung von WiringPI. Laut anhang.

Zu den Eingängen ich hatte das: http://www.fhemwiki.de/wiki/Raspberry_Pi:_GPIOs_schalten
gelesen da wurde es nicht klar draus.

Okay danke euch erstmal. Werde erstmal testen und nicht dann melden.

Tueftler1983

#6
Sprich naCh BCM Belegung
Relais1 27
Relais2 22
Relais3 23
Relais4 24
Eingang1 10
Eingang2 9

klausw

Zitat von: Tueftler1983 am 06 Oktober 2016, 13:54:40
Zu den Eingängen ich hatte das: http://www.fhemwiki.de/wiki/Raspberry_Pi:_GPIOs_schalten
gelesen da wurde es nicht klar draus.
Die WikiSeite ist auch alles andere als aktuell/korrekt. (wenn du magst kannst du das gern ändern  8))
In der Commandref sollte dafür alles drinstehen.

wiring pi wird nicht benötigt

Die GPIOs sind an sich alle verwendbar.
14 und 15 sind per default als RS232 für ein Terminal definiert, das müsste, wenn sie als GPIO verwendet werden sollen, abgestellt werden. Wenn du später I2C oder SPI nutzen willst, schränkt das die Anzahl weiter ein.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Tueftler1983

Hallo zusammen,
erste Nachricht: Ich kann meine 4 Relaisschalten über die GPIO´s 22,23,24,27
Aber sie schalten invertiert das heist in FHEN steht ON und das relais ist OFF habe es mit dem attr active_low versucht aber egal ob es auf yes oder no steht es bleibt dabei die Relais schalten Invertiert.

Kann mir da einer sagen wie ist das ändern kann??

Die Eingange für die Klingel frage ich über die GPIO´s 9 und 10 ab das klappt auch super.

Mein problem liegt noch bei den Relais, klar könnte ich einfach den State Style ändern aber das wäre gefuscht.

Hoffe ihr könnt mir helfen

klausw

Zitat von: Tueftler1983 am 10 Oktober 2016, 11:43:03
erste Nachricht: Ich kann meine 4 Relaisschalten über die GPIO´s 22,23,24,27
Aber sie schalten invertiert das heist in FHEN steht ON und das relais ist OFF habe es mit dem attr active_low versucht aber egal ob es auf yes oder no steht es bleibt dabei die Relais schalten Invertiert.

Kann mir da einer sagen wie ist das ändern kann??

Mein problem liegt noch bei den Relais, klar könnte ich einfach den State Style ändern aber das wäre gefuscht.
Gepfuscht ist das nicht, der GPIO hat ja schließlich den Pegel  8) . Was zählt ist das Ergebnis.
Allerdings sollte active_low funktionieren.
Steht was im Logfile?
Poste mal der Ergebnis von ls -l /sys/class/gpio/gpio22/
oder über FHEM: {`ls -l /sys/class/gpio/gpio22/ `}
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Tueftler1983

Hallo das Ergebnis aus Fhem heraus sieht so aus wie Screenshot 1.
Das das Definierte Relais dazu Screenshot 2.


Tueftler1983

Könnte es damit zusammenhängen das ich WiringPI installiert habe? Das brauche ich Für Pilight um mein 433mhz Sender und Empfänger anzusprechen?

Habe dazu Grade das im Wiki gefunden:

Zitat
Wenn das Attribut pud_resistor verwendet werden soll und für ältere Raspbian Distributionen, muss zusätzlich das gpio Tool der WiringPi Bibliothek installiert werden, um den internen Pullup/down Widerstand zu aktivieren, bzw. GPIO's zu exportieren und die korrekten Nutzerrechte zu setzen (für den zweiten Fall funktioniert das active_low Attribut nicht).

klausw

Zitat von: Tueftler1983 am 10 Oktober 2016, 14:38:43
Könnte es damit zusammenhängen das ich WiringPI installiert habe? Das brauche ich Für Pilight um mein 433mhz Sender und Empfänger anzusprechen?
Nein, wenn alles korrekt konfiguriert ist hat WiringPi keinen Einfluss. Es wird nur als Alternative verwendet wenn der Zugriff über SysFs nicht funktioniert.

Zitat von: Tueftler1983 am 10 Oktober 2016, 14:03:04
Hallo das Ergebnis aus Fhem heraus sieht so aus wie Screenshot 1.
Das das Definierte Relais dazu Screenshot 2.

Im ersten Bildchen ist das Problem schon zu sehen. Die Dateien laufen unter root:root
Edge und value sind bei dir dem User fhem und der Gruppe fhem zugewiesen.
Das ist ein Zeichen dafür, das dieser GPIO über WiringPi angelegt wurde.
WiringPi wird nur verwendet, wenn fhem keine Zugriffsrechte auf die GPIOs hat.

Es müsste eigentlich so aussehen:
-rwxrwx--- 1 root gpio 4096 Okt 10 09:31 active_low
lrwxrwxrwx 1 root gpio    0 Okt 10 09:31 device -> ../../../20200000.gpio
-rwxrwx--- 1 root gpio 4096 Okt 10 09:31 direction
-rwxrwx--- 1 root gpio 4096 Okt 10 09:31 edge
drwxrwx--- 2 root gpio    0 Okt 10 09:31 power
lrwxrwxrwx 1 root gpio    0 Okt 10 09:31 subsystem -> ../../../../../../class/gpio
-rwxrwx--- 1 root gpio 4096 Okt 10 09:31 uevent
-rwxrwx--- 1 root gpio 4096 Okt 10 09:31 value


Das kann daran liegen, das fhem nicht in der Gruppe gpio ist (hast du adduser wie in der commandref beschrieben ausgeführt?)
Oder du hast ein raspbian upgrade gemacht (von wheezy auf jessie).
Bei letzterem würde ein
ls -l /sys/class/gpio/
aufschluss bringen.

Grüße
Klaus

PS: bitte mit der Code Funktion hier im Form arbeiten (ist die "#" oben im Antworten Fenster) das erleichtert das lesen.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Tueftler1983

Hallo Fhem habe ich zur Gruppe gpio hinzugefügt mit dem Befehl
sudo adduser fhem gpio
Wenn ich den Befehl jetzt nochmal eingebe kommt die meldung:
Der Benutzer �fhem� ist bereits ein Mitglied der Gruppe �gpio�.

Als distribution ist folgend installiert.
root@fhemserver:~# cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)"
NAME="Raspbian GNU/Linux"
VERSION_ID="7"
VERSION="7 (wheezy)"
ID=raspbian
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"


Hoffe das hilft weiter

klausw

Zitat von: Tueftler1983 am 10 Oktober 2016, 16:10:27
Hallo Fhem habe ich zur Gruppe gpio hinzugefügt mit dem Befehl
sudo adduser fhem gpio
Wenn ich den Befehl jetzt nochmal eingebe kommt die meldung:
Der Benutzer �fhem� ist bereits ein Mitglied der Gruppe �gpio�.

Als distribution ist folgend installiert.
...

Hoffe das hilft weiter
Mir musses nicht helfen ;)

Hast du auf dem System irgendwann einmal "apt-get upgrade" ausgeführt?
Da ist scheinbar irgendwas in der Rechtefreigabe verbogen.

Normalerweise:
die Dateien export und unexport haben folgende Rechte:
ls -l /sys/class/gpio/
-rwxrwx--- 1 root gpio 4096 Okt 10 09:32 export
...
-rwxrwx--- 1 root gpio 4096 Okt 10 09:31 unexport


wenn du jetzt einen Pin exportierst (unter dem user fhem) z.B.
echo 15 > /sys/class/gpio/export
haben alle Dateien unter /sys/class/gpio/gpio15/
die gleichen Rechte

Bei dir passen vermutlich die rechte von export und unexport. Aber die Rechte der gpioxx Dateien sind in der Gruppe root anstelle von gpio

Ich habe diese Problem nur durch eine Neuinstallation lösen können.
Oder du verzichtest halt auf die Invertierung.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280