Test GPIO am Raspberry 5 (ohne wiringpi)

Begonnen von Adimarantis, 28 Dezember 2023, 19:07:23

Vorheriges Thema - Nächstes Thema

Adimarantis

Nachdem ja WiringPi nicht mehr gewartet wird und auf dem Rapsberry 5 nicht mehr unterstützt wird und FHEM RPI_GPIO auch auf WiringPi angewiesen ist, heisst das m.E. aktuell, dass FHEM (sofern etwas mit GPIO gemacht werden soll) auf dem Raspi5 nicht funktioniert.

Ich hab mich heut mal hingesetzt und testweise eine Perl-Anbindung von libgpiod gebastelt. Das sollte ja die aktuell noch unterstützte API sein.

Das ist jetzt wirklich nur mal ein "Proof of Concept". Auf meinem Raspi400 funktioniert damit zumindest, dass ich eine LED ein- und ausschalten kann. Die API kann so sicher nicht bleiben und weiterführende Funktionen wie PWM oder Interrupts hab ich mir noch nichtmal angeschaut wie/ob die gehen.

Mich würde aber trotzdem mal interessieren ob zumindest das, was ich da zusammengestrickt habe auf einem Raspi 5 gehen würde.

Also wer Lust und Zeit hat, mal https://github.com/bublath/rpi-gpiod ansehen.

Jörg

Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Michael70

Hallo Jörg,
jetzt hast du mich tatsächlich (kurzfristig) ein wenig verunsichert, ich meine aber WiringPi wird nicht zwangsläufig benötigt.
Zumindest verwende ich FHEM 6.2 auf meinem Raspberry Pi mit Bullseye und auch dort ist schon kein WiringPi (per default) installiert.
Da ich alle meine Peripherie über die GPIO's schalte hätte ich sonst tatsächlkich ein (zukünftiges) Problem.

VG, Michael

define Pin22_RPL RPI_GPIO 25
attr Pin22_RPL direction output
#   DEF        25
#   FUUID      658ac8a0-f33f-11b5-aba0-22e2e294ee572986
#   GPIO_Basedir /sys/class/gpio
#   GPIO_Nr    25
#   NAME       Pin22_RPL
#   NR         44
#   STATE      on
#   TYPE       RPI_GPIO
#   WiringPi_gpio
#   eventCount 1
#   READINGS:
#     2023-12-29 19:13:07   Pinlevel        low
#     2023-12-29 19:13:19   state           on
#   fhem:
#     interfaces switch
#
setstate Pin22_RPL on
setstate Pin22_RPL 2023-12-29 19:13:07 Pinlevel low
setstate Pin22_RPL 2023-12-29 19:13:19 state on

Raspberry Pi 4 (Raspberry OS Bullseye), FHEM 6.2, 1-Wire USB Busmaster. Anwendung: Kellerlüftung und Heizung Zirkulationspumpe, Balkon PV Überschuss Steuerung

Adimarantis

Hab mir RPI_GPIO nochmal etwas näher angeschaut und ich vermute mal, dass WiringPi nur für bestimmte Varianten von Hardware und OS benötigt wird. Wann genau ist mir jetzt auf Anhieb auch nicht klar.
Ich weiss nur, dass ich bei meinem Raspberry1 mit BullsEye Probleme mit den GPIO hatte, bis ich WiringPi geupdated hatte.

Außerdem hatte ich irgendwo gelesen, dass sich mit dem Raspberry 5 und/oder Bookworm etwas ändert (ob das jetzt RPI_GPIO betrifft oder nicht ist unklar) und vorallem WiringPi nicht mehr funktioniert.

Da hab ich wohl mehr Panik geschürt als notwendig.

Gibt es Raspi5/Bookworm Nutzer die da mehr wissen?
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Stelaku

Hallo alle zusammen

Ich habe mein System auch kpl. über GPIO´s vom Raspberry Pi und mit den Port Expander MCP23017 Kabelgebunden am laufen.
Mein aktives System läuft noch auf einen 3er Pi mit Buster und wiringpi ohne Probleme.
Auf meinen 4er Pi und bis Bullseye geht auch noch alles.
Aber ab bookworm gehen nur noch die GPIO als Ausgänge zu schalten.
Als Eingänge mit dem Modul RPI_GPIO lassen sich mit bookworm nur noch
GPIO1
GPIO2
GPIO3
GPIO4
GPIO5
GPIO6
GPIO7
GPIO8
GPIO14
GPIO15
verwenden.

So wie ich das gelesen haben wird wiringpi nur bei Verwendung der GPIOs als Eingänge benötigt um die Pull up oder Pull downs zu setzten.
Ich habe mir jetzt mit einer kleinen Brücke über python-fhem und GPIOZero in einen Python script die Eingänge wieder nutzbar gemacht.
Keine schöne Lösung ich hoffe das sich da noch was tut.

Viele Grüsse

Stephan





Adimarantis

Ich hab jetzt mal testweise Bookworm (64 Bit) auf meinem Raspi400 installiert (komplette Neuinstallation, kein upgrade).
Obwohl kein wiringPi installiert ist, kann ich GPIO21 und GPIO12 (mehr hab ich jetzt Stichprobenartig nicht probiert) sowohl schalten, als auch als Eingang (inkl. Interrupt) verwenden.

Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

klausw

WiringPi ist für die Funktionalität des Moduls nicht vonnöten.
Auf die Gpios wird direkt über Sysfs zugegriffen (/sys/class/gpio).
WiringPi kann zur Ansteuerung verwendet werden, das ist noch aus historischen Gründen drin, aber nicht zu empfehlen. Außerdem konnte man über WiringPi bei Inputs einen internen Pullup Widerstand aktivieren, was über sysfs nicht möglich ist.
Ich habe testweise Raspberry Pi OS Lite 64bit Bookworm (December 11th 2023) auf einem Pi4 installiert und konnte beispielsweise Gpio 25 und 25 auch als Input nutzen.
Es ist möglich, das andere installierte Dienste die Gpios nutzen und diese teilweise blockieren.
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

CBUser

Habe einen Pi5 neu installiert, ein fhem-Backup des Pi4 (mit WiringPi) erstellt und ins frisch installierte fhem auf den Pi5 eingespielt. GPIOs kann ich auf dem Pi5 nicht mehr ansprechen, weder als Output noch als Input. Was mich sehr wundert, I2C über die GPIOs funktioniert. Problem:  leider kann ich durch den fehlenden GPIO-Eingang nicht mehr auf Interrupts des I2C reagieren. Kennt jemand eine Lösung, um zumindest einen GPIO als Input verwenden zu können? Muss ich ggf. durch das Einspielen der Sicherung mit dem nicht mehr funktionierenden WiringPi irgendetwas deaktivieren, verändern oder löschen?

Stelaku

#7
Hallo CBUser

Ich habe mir bei meinen PI 4 über ein Pyhton script das per mqtt an mein Fhem sendent provisorisch geholfen.
Folgendes habe im home Verzeichnis ausgeführt
Damit wird erstmal pip installiert um danach paho-mqtt über pip zu installiernen danach kommt python3-gpiozero
sudo apt-get install -y pip
pip install --break-system-packages "paho-mqtt<2.0.0"
pip install --break-system-packages paho-mqtt
sudo apt install python3-gpiozero

hier mal mein pyhton script
das ich auch im home Verzeichnis mit
sudo nano Taster.py
angelegt habe und diesen code eingefühgt habe.

import logging
import time
import paho.mqtt.client as mqtt
import sys
from gpiozero import LED
from gpiozero import Button

broker_address="localhost"
port = 1883
client = mqtt.Client("GPIO")
username = 'Dein username'
password = 'Dein password'
client.username_pw_set(username, password)
client.connect(broker_address, port)

client.loop_start()

block4  = 0
GPIO4   = Button(4)

block17 = 0
GPIO17  = Button(17)

block27 = 0
GPIO27  = Button(27)

block5 = 0
GPIO5  = Button(5)

block19 = 0
GPIO19  = Button(19)

block26 = 0
GPIO26  = Button(26)

block21 = 0
GPIO21  = Button(21)

block20 = 0
GPIO20  = Button(20)

block12 = 0
GPIO12  = Button(12)

block1 = 0
GPIO1  = Button(1)

block7 = 0
GPIO7  = Button(7)

block8 = 0
GPIO8  = Button(8)

block18 = 0
GPIO18  = Button(18)

while True:
    if GPIO4.is_pressed and block4 == 0:
        client.publish("GPIO4", "on", 0)
        block4 = 1
    if GPIO4.is_pressed == False and block4 == 1:
        client.publish("GPIO4", "off", 0)
        block4 = 0


    if GPIO17.is_pressed and block17 == 0:
        client.publish("GPIO4", "on", 0)
        block17 = 1
    if GPIO17.is_pressed == False and block17 == 1:
        client.publish("GPIO17", "off", 0)
        block17 = 0

    if GPIO27.is_pressed and block27 == 0:
        client.publish("GPIO27", "on", 0)
        block27 = 1
    if GPIO27.is_pressed == False and block27 == 1:
        client.publish("GPIO27", "off", 0)
        block27 = 0

    if GPIO5.is_pressed and block5 == 0:
        client.publish("GPIO5", "on", 0)
        block5 = 1
    if GPIO5.is_pressed == False and block5 == 1:
        client.publish("GPIO5", "off", 0)
        block5 = 0

    if GPIO19.is_pressed and block19 == 0:
        client.publish("GPIO19", "on", 0)
        block19 = 1
    if GPIO19.is_pressed == False and block19 == 1:
        client.publish("GPIO19", "off", 0)
        block19 = 0

    if GPIO26.is_pressed and block26 == 0:
        client.publish("GPIO26", "on", 0)
        block26 = 1
    if GPIO26.is_pressed == False and block26 == 1:
        client.publish("GPIO26", "off", 0)
        block26 = 0

    if GPIO21.is_pressed and block21 == 0:
        client.publish("GPIO21", "on", 0)
        block21 = 1
    if GPIO21.is_pressed == False and block21 == 1:
        client.publish("GPIO21", "off", 0)
        block21 = 0

    if GPIO20.is_pressed and block20 == 0:
        client.publish("GPIO20", "on", 0)
        block20 = 1
    if GPIO20.is_pressed == False and block20 == 1:
        client.publish("GPIO20", "off", 0)
        block20 = 0

    if GPIO12.is_pressed and block12 == 0:
        client.publish("GPIO12", "on", 0)
        block12 = 1
    if GPIO12.is_pressed == False and block12 == 1:
        client.publish("GPIO12", "off", 0)
        block12 = 0

    if GPIO1.is_pressed and block1 == 0:
        client.publish("GPIO1", "on", 0)
        block1 = 1
    if GPIO1.is_pressed == False and block1 == 1:
        client.publish("GPIO1", "off", 0)
        block1 = 0

    if GPIO7.is_pressed and block7 == 0:
        client.publish("GPIO7", "on", 0)
        block7 = 1
    if GPIO7.is_pressed == False and block7 == 1:
        client.publish("GPIO7", "off", 0)
        block7 = 0

    if GPIO8.is_pressed and block8 == 0:
        client.publish("GPIO8", "on", 0)
        block8 = 1
    if GPIO8.is_pressed == False and block8 == 1:
        client.publish("GPIO8", "off", 0)
        block8 = 0

    if GPIO18.is_pressed and block18 == 0:
        client.publish("GPIO18", "on", 0)
        block18 = 1
    if GPIO18.is_pressed == False and block18 == 1:
        client.publish("GPIO18", "off", 0)
        block18 = 0


    else:
        time.sleep(0.05)



Username und Password bitte anpassen und
natürlich nicht vergessen diese Datei ausführbar machen

sudo chmod +x Taster.py
dann noch mit systemd autostarten

folgende Datei mit öffnen
sudo nano /etc/systemd/system/Taster.serviceund mit diesem inhalt füllen bitte stephan mit Deinem Datei Pfad ersetzten
[Unit]
Description=Start TasterGPIO
After=multi-user.target

[Service]
Type=idle
User=stephan

ExecStart=/usr/bin/python3 /home/stephan/Taster.py

Restart=always
RestartSec=30

[Install]

WantedBy=multi-user.target

jetzt noch die systemdatei aktivieren
sudo systemctl enable Taster.serviceund mit
sudo systemctl start Taster.servicestarten
Wenn Du schon einen MQTT2_SERVER auf FHEM installiert hast sollte ein neues mqtt Device angelegt werden das MQTT2_GPIO heisst.
In diesen befindet sich dann die readings mit den GPIO Eingängen.
Bei mir ist GPIO4 als Interupt vorgesehen. Dieser wird high wenn ich einen Eingang am MCP schalte.

Ich habe bei mir die einzelnen Eingänge noch per readingsProxy besser sichtbar gemacht und meinreadingsProxy für den Interupt sieht so aus
defmod Interrupt readingsProxy MQTT2_GPIO:GPIO4
attr Interrupt alias Interupt
attr Interrupt group GPIO Eingänge
attr Interrupt room Eingänge
attr Interrupt sortby 20
attr Interrupt userReadings test {fhem ("get MCP0,MCP2,MCP4,MCP6");;;;;;;;;;;;;;;; "egal"}
attr Interrupt valueFn {($VALUE eq "on")?"on":"off"}
das userReading musst Du dann noch so anpassen das es auf Deine MCP´s passt.
So ich hoffe ich habe nichts vergessen und wünsche Dir viel Erfolg beim ausprobieren.
Aber wie gesagt es ist nur eine Notlösung. Die bei mir schon länger ohne Probleme läuft.

Viele Grüsse Stephan



CBUser

Hallo Stephan,
Danke für die ausführliche Beschreibung! Ja, der MQTT2-Server läuft auch bei mir. Werde es zum WE testen.
Christian

klausw

#9
Ich habe inzwischen FHEM auf einem Pi5 in Betrieb genommen.
Die GPIOs können nach wie vor mit dem Modul genutzt werden.
Nur die Bezeichnung hat sich geändert.

Über cat /sys/kernel/debug/gpio bekommmt man eine Übersicht aller GPIOs.
Dort sucht man sich den gewünschten GPIO und nutzt im Modul antelle der GPIO Nummer die dreistellige Zahl der ersten Bezeichnung.

Beispiel GPIO26:
cat /sys/kernel/debug/gpio | grep GPIO26
gpio-597 (GPIO26              |sysfs               ) in  lo

FHEM:
define GPIO26 RPI_GPIO 597
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

Stelaku

Hallo klausw

Vielen dank für Deinen hinweis.
Habe ich auch gleich mal mit meinem PI 4 und Bookworm ausprobiert.
Ausgänge lassen sich so wieder ohne Probleme schalten.
Bei Eingängen geht es leider nicht.
Hier mein RPI_GPIO Device
defmod GPIO14 RPI_GPIO 526
attr GPIO14 active_low yes
attr GPIO14 alias Status_Eltako_Kueche
attr GPIO14 debounce_in_ms 0
attr GPIO14 direction input
attr GPIO14 event-on-change-reading state
attr GPIO14 group GPIO Eingänge
attr GPIO14 interrupt both
attr GPIO14 pud_resistor up
attr GPIO14 room Eingänge
attr GPIO14 sortby 04

setstate GPIO14 off
setstate GPIO14 2024-04-29 16:43:58 Dblclick off
setstate GPIO14 2024-04-29 16:43:58 Longpress off
setstate GPIO14 2024-04-29 16:44:26 Pinlevel low
setstate GPIO14 2024-04-29 16:43:58 state off


Habe wiring pi installiert aus dieser quelle. Das funktioniert auch bis Bullseye
wget https://github.com/WiringPi/WiringPi/releases/download/2.61-1/wiringpi-2.61-1-arm64.deb
hab auch dieses mal ausprobiert https://blog.gc2.at/post/wiringpi/sieht so aus als würde dort wirinpi weiterentwickelt werden.
klappt bei mir nur nicht.

Vieleicht hast Du noch eine Idee.

Viele Grüsse

Stephan

klausw

Ho Stefan,

Zitat von: Stelaku am 29 April 2024, 16:50:03Habe ich auch gleich mal mit meinem PI 4 und Bookworm ausprobiert.
Das Pi4 hat noch die normale GPIO Nummerierung, irgendwas passt da nicht.


Zitat von: Stelaku am 29 April 2024, 16:50:03Bei Eingängen geht es leider nicht.
Hier mein RPI_GPIO Device
defmod GPIO14 RPI_GPIO 526
attr GPIO14 active_low yes
attr GPIO14 alias Status_Eltako_Kueche
attr GPIO14 debounce_in_ms 0
attr GPIO14 direction input
attr GPIO14 event-on-change-reading state
attr GPIO14 group GPIO Eingänge
attr GPIO14 interrupt both
attr GPIO14 pud_resistor up
attr GPIO14 room Eingänge
attr GPIO14 sortby 04

Die Konfig scheint in Ordnung. Bis auf die Nummer. Das sollte beinm Pi4 auch die 14 sein.
Was geht denn nicht? Der Interrupt? ReadValue?
Steht was im Logfile?
wie sieht das komplette list vom Device aus?


Wiringpi habe ich nicht installiert. Ich würde es auch nicht mehr empfehlen. Das ist ein Überbleibsel aus der ersten Implementierung. Interrupts würden mit WiringPi auch nicht funktionieren. Nur für den internen Pullup hatte eine Art Mischbetrieb verwendet.
[/quote]
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

Stelaku

Hallo Klaus

Ich glaube ich habe meinen Fehler gefunden.

Die als Eingänge deklarierten GPIO´s werden nicht erkannt weil der interne pull up Wiederstand im Pi anscheind nicht aktiviert wird.

Wenn ich den pull up wiederstand Hardware Seitig einbaue funktioniert mein GPIO14 mit den interupt both wie früher.

Das mit den pull up hat wiring pi früher mit erledigt oder ?

Gruß

Stephan


Frank_Huber

Zitat von: Stelaku am 30 April 2024, 18:08:17Hallo Klaus

Ich glaube ich habe meinen Fehler gefunden.

Die als Eingänge deklarierten GPIO´s werden nicht erkannt weil der interne pull up Wiederstand im Pi anscheind nicht aktiviert wird.

Wenn ich den pull up wiederstand Hardware Seitig einbaue funktioniert mein GPIO14 mit den interupt both wie früher.

Das mit den pull up hat wiring pi früher mit erledigt oder ?

Gruß

Stephan


Das war mehr oder weniger der einzige Grund wofür wiringpi benötigt wurde. 🙃

klausw

Zitat von: Stelaku am 30 April 2024, 18:08:17Das mit den pull up hat wiring pi früher mit erledigt oder ?

Genau, wie auch Frank schreibt ist wiringpi eigentlich nur deswegen dringeblieben.
Ich hätte es sonst liebend gern rausgeworfen, da es immer wieder zu Mißverständnissen gefürt hat.
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

hugo

Hallo zusammen,
ich hänge mich mal hier rein.
Bei funktioniert mein "IR Infrarot Modul" am GPIO Port nicht mehr.

Raspi 2B mit Bookworm 

Hat jemand eine Idee, damit mein Modul wieder funktioniert?

define GPIOTest RPI_GPIO 539\

attr GPIOTest active_low yes
attr GPIOTest direction input
attr GPIOTest interrupt both
attr GPIOTest pud_resistor up
attr GPIOTest room Unsorted,hidden
attr GPIOTest toggletostate yes
#   CFGFN     
#   DEF        539
#
#   FUUID      6648fe99-f33f-046a-7820-4f9d3dfb9f937a2b
#   GPIO_Basedir /sys/class/gpio
#   GPIO_Nr    539
#
#   NAME       GPIOTest
#   NR         95
#   STATE      ???
#   TYPE       RPI_GPIO
#   WiringPi_gpio
#   eventCount 1
#   filehandle
#   READINGS:
#     Pinlevel:
#       TIME       2024-05-18 21:38:29
#       VAL       
#   fhem:
#     interfaces switch
#
setstate GPIOTest 2024-05-18 21:38:29 Pinlevel 0


Vielen Dank für eure Hilfe

Gruß Josef
Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

Stelaku

Hallo hugo

Ich glaube du hast das selbe Problem wie ich hier schon in Beitrag #12 geschrieben habe.
Dir wird ein Hardware Seitiger 50 Kohm pull up Wiederstand vom gpio27 auf 3,3 Volt des Rasperry Pi fehlen.

Gruß

Stephan




Christoph Morrison

Es gibt für den RPI5 übrigens ein Tool namens pinctrl mit dem man die Pullups (wieder) softwareseitig setzen kann.

wbini

entweder wie der Christoph schreibt die Pullups über pinctrl (z.B.: pinctrl set 8,15,20,22,23,27 ip pu) setzen. oder in der config.txt (gpio=8=ip,pu)

hugo

Hallo zusammen,
leider bin ich nicht so bewandert in der Elektronik.

Jetzt für mich nochmal zum Verständnis.

Ich mache die Einträgen in der rc.local (echo 22 > ...) führe die chmod aus.
config .txt geändert gpio=22,27=pu,ip
Zwischen 3V und Gpio27 ein 100k Widerstand beim IR-Modul

Starte den Rechner neu.

Der Status vom RPI_GPIO bleibt auf ???
ein "set GPIOTestreadValue" bringt keine Änderung

Die PIN-Belegung habe ich nochmal geprüft.

Wo liegt mein fehler?

Danke für die Antworten.

Gruß Josef



Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

wbini

Hallo hugo,

auf dem Pi4 gilt noch die ursprüngliche Nummerierung (cat /sys/kernel/debug/gpio | grep 22)

Das Beispiel funktioniert so bei mir auf einem Pi4:
define GPIOTest RPI_GPIO 22
attr GPIOTest active_low yes
attr GPIOTest direction input
attr GPIOTest interrupt both
###attr GPIOTest pud_resistor up
attr GPIOTest room Unsorted,hidden
attr GPIOTest toggletostate yes

Pullup setzen (verwende lediglich den internen PullUp):
Variante 1: über die config.txt per "gpio=22=pu,ip"
Variante 2: in der rc.local per "pinctrl set 22 ip pu"

Den Status für den Pin 22 kannst mit "pinctrl 22" prüfen

hugo

Hallo wbini,
wenn ich deine Einstellungen vornehmen, wird in der Console einmal hi/lo angezeigt sobald das Modus den Status ändert.
Allerding wird in Fhem nichts angezeigt bzw geändert.
Scheint wohl da ein Problem zu sein?


pi@FhemHome:~ $ pinctrl 27
27: ip    -- | lo // GPIO27 = input
pi@FhemHome:~ $ pinctrl 27
27: ip    -- | hi // GPIO27 = input

define GPIOTest RPI_GPIO 27\
\

attr GPIOTest active_low yes
attr GPIOTest direction input
attr GPIOTest interrupt both
attr GPIOTest room hidden
attr GPIOTest toggletostate yes
#   DEF        27
#
#
#   FUUID      6648fe99-f33f-046a-7820-4f9d3dfb9f937a2b
#   GPIO_Basedir /sys/class/gpio
#   GPIO_Nr    27
#
#
#   NAME       GPIOTest
#   NR         95
#   STATE      ???
#   TYPE       RPI_GPIO
#   WiringPi_gpio
#   eventCount 7
#   filehandle
#   READINGS:
#     Pinlevel:
#       TIME       2024-05-19 13:25:16
#       VAL       
#   fhem:
#     interfaces switch
#
setstate GPIOTest 2024-05-19 13:25:16 Pinlevel 0

Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

wbini

Das kann ich leider nicht beantworten. Wenn im LogFile sonst keine Fehler auftauchen, könnte es sein.

Meine aktuelle Definition meiner Türklingel läuft auch über GPIO 27 ohne Probleme:

define K_Innen RPI_GPIO 27
attr K_Innen active_low yes
attr K_Innen alias KlingelInnen
attr K_Innen devStateIcon on:Wecker.Immer off:Wecker.Aus
attr K_Innen direction input
attr K_Innen event-on-change-reading state
attr K_Innen interrupt both
attr K_Innen room OWX,System->GPIOs

Übrigens: Dein Setzen des PullUps hat wohl nicht gegriffen. Bei mir sieht das so aus:
27: ip    pu | hi // GPIO27 = input

Setz doch mal ein "pinctrl set 27 ip pu" ab und prüfe das mal erneut.

Auch das Attribut "attr GPIOTest toggletostate yes" verwende ich nicht, da nur bei falling oder rising funktioniert.

hugo

pi@FhemHome:/opt/fhem $ pinctrl set 27 ip pu
pi@FhemHome:/opt/fhem $ pinctrl 27
27: ip    -- | hi // GPIO27 = input


Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

wbini

Ist schon mal ein anderes Verhalten wie bei mir.

Eventuell neu aufsetzen.

Muss jetzt leider wieder raus, Pfingsten ruft.

Stelaku

Hallo Hugo

hab das jetzt auch nochmal auf meinen 3er Test pi mit dem aktuellen bookworm OS getestet.
mit Deiner Ursprungs def
defmod GPIOTest RPI_GPIO 539
attr GPIOTest active_low yes
attr GPIOTest direction input
attr GPIOTest interrupt both
attr GPIOTest pud_resistor up
attr GPIOTest room Unsorted,hidden
attr GPIOTest toggletostate yes

funktioniert das bei mir mit einen 100 Kohm Wiederstand von gpio27 zu 3,3Volt ohne Probleme.
Hats Du denn im fhem log irgentwelche Fehlermeldungen.
Eventuell vergessen fhem der Gruppe gpio zuzuweisen ?.

sudo adduser fhem gpio

Gruss

Stephan

hugo

Hallo Stefan,
vielen Dank dass du dir so viel mühe machst.
Jetzt war auch noch das Internet ausgefallen. Einfach alles ....

Also fhem war der Gruppe gpio zugewiesen.
adduser: Der Benutzer »fhem« ist bereits ein Mitglied der Gruppe »gpio«.

Im Logfile steht folgendes.
2024.05.20 11:15:29 1: Can't open file: GPIOTest, value
2024.05.20 11:15:29 1: GPIOTest GetFn: readout of Pinvalue fail
sh: 1: export: 539: bad variable name

Bei meinem Wasserzähler auf GPIO 22 kommt folgende Meldung:
2024.05.20 11:17:23 1: Can't open file: GPIOZaehlerWasser, value
2024.05.20 11:17:23 1: GPIOZaehlerWasser GetFn: readout of Pinvalue fail

GPioTest auf 27 umgestellt.
sh: 1: export: 27: bad variable name
2024.05.20 11:23:21 1: Can't open file: GPIOTest, value
2024.05.20 11:23:21 1: GPIOTest GetFn: readout of Pinvalue fail

Gruß Josef
Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

Stelaku

Hallo Josef

Die Meldungen im log sagen das fhem nicht auf die gpio´s zugreifen kann. Was normal mit

sudo adduser fhem gpio
und ein reboot des pi´s erledigt ist.

Was ich mir jetzt noch denken könnte, ist das Du in den vorangegangenen Versuchen mit der config.txt oder den eintrag in Deiner rc.local
die gpio schon belegst, und diese für fhem als busy nicht mehr verfügbar sind.

Hast Du die vorangegangenden Änderung auch alle wieder gelöscht ?



hugo

Hallo Stefan,
alles aus der config.txt und rc.local gelöscht.
adduser ausgeführt, user ist bereits in der Gruppe.

Reboot durch geführt.

Nach dem reboot nochmal ein shutdown und restart durchgeführt.

Jetzt erhalte ich diese Meldungen im Log-file
2024.05.20 20:24:02 0: Server shutdown
Can't use an undefined value as a symbol reference at ./FHEM/51_RPI_GPIO.pm line 418.
2024.05.20 20:25:34 3: [UtilsHourCounter] Init Done with Version 1.0.1.0 - 10.12.2014 (john)
2024.05.20 20:25:34 1: Including fhem.cfg
2024.05.20 20:25:39 2: eventTypes: loaded 856 lines from ./log/eventTypes.txt
2024.05.20 20:25:45 1: PERL WARNING: Can't exec "export": Datei oder Verzeichnis nicht gefunden at ./FHEM/51_RPI_GPIO.pm line 647, <$fh> line 96.
2024.05.20 20:25:45 1: PERL WARNING: Use of uninitialized value $exp_result in pattern match (m//) at ./FHEM/51_RPI_GPIO.pm line 649, <$fh> line 96.
2024.05.20 20:25:45 1: PERL WARNING: Use of uninitialized value $exp_result in concatenation (.) or string at ./FHEM/51_RPI_GPIO.pm line 659, <$fh> line 96.
2024.05.20 20:25:45 1: Can't open file: GPIOZaehlerWasser, active_low
2024.05.20 20:25:45 1: PERL WARNING: Can't exec "export": Datei oder Verzeichnis nicht gefunden at ./FHEM/51_RPI_GPIO.pm line 647, <$fh> line 99.
2024.05.20 20:25:45 1: PERL WARNING: Use of uninitialized value $exp_result in pattern match (m//) at ./FHEM/51_RPI_GPIO.pm line 649, <$fh> line 99.
2024.05.20 20:25:45 1: PERL WARNING: Use of uninitialized value $exp_result in concatenation (.) or string at ./FHEM/51_RPI_GPIO.pm line 659, <$fh> line 99.
2024.05.20 20:25:45 1: Can't open file: GPIOZaehlerWasser, edge
2024.05.20 20:25:45 1: PERL WARNING: Can't exec "-g": Datei oder Verzeichnis nicht gefunden at ./FHEM/51_RPI_GPIO.pm line 647, <$fh> line 101.
2024.05.20 20:25:45 1: PERL WARNING: Use of uninitialized value $exp_result in pattern match (m//) at ./FHEM/51_RPI_GPIO.pm line 649, <$fh> line 101.
2024.05.20 20:25:45 1: PERL WARNING: Use of uninitialized value $exp_result in concatenation (.) or string at ./FHEM/51_RPI_GPIO.pm line 659, <$fh> line 101.
2024.05.20 20:25:51 1: PERL WARNING: Unsuccessful stat on filename containing newline at ./FHEM/51_RPI_GPIO.pm line 118, <$fh> line 511.
sh: 1: export: 539: bad variable name
2024.05.20 20:25:56 1: Can't open file: GPIOTest, active_low
sh: 1: export: 539: bad variable name
2024.05.20 20:25:56 1: Can't open file: GPIOTest, edge
2024.05.20 20:25:56 1: Including ./log/fhem.save

Gruß Josef
Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

Stelaku

hast du in den defs für die gpios die richtige Nummer stehen . Sprich für gpio27 def 27
oder def 539.
539 hab ich bei mir. Und bitte nicht vergessen shutdown restart in fhem.
bei mir funktionieren nur die debug nummer.

gruss Stephan

hugo

Was ich herausgefunden habe, dass bei mir die Gpio nicht unter /sys/ sondern unter /system/
Habe die 51...Pk geändert hat aber auch nichts gebracht.
Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

hugo

Hallo Stefan,
jetzt habe ich das System nochmal neu aufgesetzt.
Fhem nicht per Backup eingespielt sonder die Devices von Hand angelegt.
Jetzt funktionieren die GPIOs wieder. Allerdings mit den Debug Nummern.
Muss halt noch etwas nacharbeiten.

Nochmals herzlichen Dank für deine Mühe und die Geduld.

Gruß Josef

PS: Jetzt kann ich beruhigt in den Urlaub fahren.  :)
Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

Inputsammler

Hallo zusammen,

Danke klausw für die Info das funktioniert super und Stelaku danke fürs daraf hinweisen für die Lösung :-)
Somit funktionieren meine Rollos wieder Wunderbar :-)

GRUß GERD

https://forum.fhem.de/index.php?topic=138404.msg1314504#msg1314504
Rpi's und Bpi's und Hw von Dirk und locutus
CCU2,F20,Ks300,1-Wire,Homematic usw ...
vitodens 300 & IstrkrM372 auslesen über USB und FHEM
RUHE IN FRIEDEN AHA1805 RIP Mallorca +29.08.16
I miss you and your Family H.H.L.L.

Dersch

Super, mit den Debug Nummer läuft es wieder. Habe einem alten B+ ein Kernel Upgrade gegönnt und danach gingen die GPIOS über FHEM erstmal nicht mehr.

Auch läuft es nun mit WiringPi wieder. Denn das hat einen neuen Maintainer und wird wieder gepflegt: https://github.com/WiringPi/WiringPi?tab=readme-ov-file

Da ich nur Eingänge über GPIOS nutze geht so auch wieder ActiveLow über FHEM.