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
Schaue dir mal dieses (http://fhem.de/commandref_DE.html#RPI_GPIO) Modul an.
Damit kannst du die GPIOs unter FHEM nutzen.
Das Modul verwendet die BCM (https://de.pinout.xyz/) Nummerierung.
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.
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.
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.
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.
Sprich naCh BCM Belegung
Relais1 27
Relais2 22
Relais3 23
Relais4 24
Eingang1 10
Eingang2 9
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.
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
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/ `}
Hallo das Ergebnis aus Fhem heraus sieht so aus wie Screenshot 1.
Das das Definierte Relais dazu Screenshot 2.
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).
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.
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
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.
Ja apt-get upgrade habe ich schonmal gemacht. Nadja neu Installation dann erst wenn ich meinen Raspberry PI3 habe.
Schade habe gehofft ich könnte die rechte anpassen. Kann ich nicht einfach von Hand die rechte ändern mit WinSCP habe damit schon rechte von Dateien von root auf fhem geändert
Zitat von: Tueftler1983 am 10 Oktober 2016, 18:59:07
Schade habe gehofft ich könnte die rechte anpassen. Kann ich nicht einfach von Hand die rechte ändern mit WinSCP habe damit schon rechte von Dateien von root auf fhem geändert
Doch, das kannst du natürlich auch machen.
Beim Starten könntest du die Rechte jedes mal anpassen.
In der Commandref findest du Informationen dazu.
Kurze Info habe die rechte der active_low Datei in den 4 Ordnern der GPIO´s von den rechten als besitzer fhem geändert. jetzt gehts selbst nach nem Neustart des PI bleiben die rechte bei FHEM.
Jetzt also alles wunderbar
Noch eine frage, wie lang muss das Signal am gpio Anliegen damit FHEM es zuverlässig erkennt?
Habe noch das Problem das teilweise das Klingeln nicht erkannt wird.
Zitat von: Tueftler1983 am 11 Oktober 2016, 14:44:03
Kurze Info habe die rechte der active_low Datei in den 4 Ordnern der GPIO´s von den rechten als besitzer fhem geändert. jetzt gehts selbst nach nem Neustart des PI bleiben die rechte bei FHEM.
Diese Dateien sind doch virtuell und werden bei jedem Booten neu angelegt.
Das muss ich nicht verstehen :o
aber egal ... Hauptsache es läuft ;)
Zitat von: Tueftler1983 am 11 Oktober 2016, 18:26:48
Noch eine frage, wie lang muss das Signal am gpio Anliegen damit FHEM es zuverlässig erkennt?
Habe noch das Problem das teilweise das Klingeln nicht erkannt wird.
Wenn du den Interrupt nutzt, sollte es direkt erkannt werden, da auf die Flanke geschaut wird.
Poste mal deine Einstellungen:
list <definename>
Hallo
Habe den Internen Pull_Down erst eben aktiviert muss morgen mal gucken ob es damit besser läuft
Internals:
DEF 10
EXCEPT_FD 19
GPIO_Basedir /sys/class/gpio
NAME GPIO_Klingel_Eingang
NR 159
RPI_pin 10
STATE off
TYPE RPI_GPIO
WiringPi_gpio /usr/bin/gpio
lasttrg 1476280593.77971
Readings:
2016-10-12 15:54:31 Counter 10
2016-10-12 16:56:38 Dblclick off
2016-10-12 16:56:38 Longpress off
2016-10-12 16:56:38 Pinlevel low
2016-10-12 16:56:38 state off
Fhem:
interfaces switch
Attributes:
direction input
interrupt both
pud_resistor down
Also leider gehen immer noch klingel versuche verloren sie werden von FHEM aber nicht erkannt.
Wenn ich auf steigende Flanke stelle zählt der counter zwar jedes klingeln aber das doif das den auf ein on des Eingangs reagieren soll reagiert nicht.
Zitat von: Tueftler1983 am 13 Oktober 2016, 18:25:13
Also leider gehen immer noch klingel versuche verloren sie werden von FHEM aber nicht erkannt.
Wenn ich auf steigende Flanke stelle zählt der counter zwar jedes klingeln aber das doif das den auf ein on des Eingangs reagieren soll reagiert nicht.
beim GPIO das Attribut eventonchangereading auf counter setzen
doif kenne ich nicht aber wenn es wie at funktioniert dann kannst du auf den counter von gpio triggern und bei jeder Aktualisierung die Klingel auslösen
Habe leider keine Ahnung wie ich auf den counter triggern kann, wäre da für Vorschläge offen.
Wie gesagt DOIF kenne ich nicht.
Wenn im eventonchangereading des GPIOs counter steht, wird bei jedem hochzählen des counters ein Event ausgelöst (kann man schön im Event monitor beobachten). Da dies nun das einzige Event des GPIOs ist kanns du auf alle Events des GPIO triggern.
Beispiel:
define >notifyname> notify <gpioname> set klingel on-for-timer 10
um auf ein spezielles Event zu triggern:
define >notifyname> notify <gpioname>:counter.* set klingel on-for-timer 10
Wie die events aussehen kannst du im Eventmonitor sehen.