MCP23017 zyklisch Eingänge abfragen

Begonnen von Burny4600, 24 Februar 2019, 10:23:48

Vorheriges Thema - Nächstes Thema

Burny4600

Ich habe MCP23017 Portextender mit Interrupt Abfrage installiert.
Ich benötige für einige Eingänge zyklische Abfragen damit diese via FHEM2FHEM den aktuellen Status übertragen, falls der RMC den Status nicht mitbekommen hat (Neustart).
Das Polling des MCP23017 funktioniert leider bei mir nicht.

list INT
Internals:
   CFGFN      /media/hdd/fhem/mycfg/AD_Controller/I2C_MCP23017_rasp02.cfg
   DEF        21
   EXCEPT_FD  18
   FUUID      5c4500f9-f33f-c019-b5f0-dfc1c428017fdc7e
   GPIO_Basedir /sys/class/gpio
   GPIO_Nr    21
   NAME       INT
   NR         344
   STATE      AUS
   TYPE       RPI_GPIO
   WiringPi_gpio /usr/local/bin/gpio
   READINGS:
     2000-01-01 01:00:36   Dblclick        off
     2000-01-01 01:00:36   Longpress       off
     2019-02-24 10:19:48   Pinlevel        low
     2019-02-24 10:19:47   interrupt       egal
     2019-02-24 10:19:47   state           off
   fhem:
     interfaces switch
Attributes:
   active_low yes
   alias      RPI_GIPO 21 Interrupt für MCP23017 Modul
   devStateIcon EIN:control_on_off@0CFB0C AUS:control_home@red
   direction  input
   eventMap   on:EIN off:AUS
   icon       control_on_off
   interrupt  both
   poll_interval 1
   room       _GPIO,_IO
   userReadings interrupt {fhem ("get mcp23017_B1_HZR,mcp23017_B2_HZR");;"egal"}


list mcp23017_B1_HZR
Internals:
   CFGFN      /media/hdd/fhem/mycfg/AD_Controller/I2C_MCP23017_rasp02.cfg
   CHANGED   
   DEF        0x20
   FUUID      5c4500f8-f33f-48ad-afee-c59582979e67026e
   I2C_Address 32
   IODev      RpiI2C_1
   NAME       mcp23017_B1_HZR
   NR         317
   RpiI2C_1_SENDSTAT Ok
   STATE      Ok
   TYPE       I2C_MCP23017
   READINGS:
     2019-02-23 14:18:39   PortA0          off
     2018-05-04 14:20:05   PortA1          on
     2019-02-23 02:25:57   PortA2          on
     2019-02-03 09:56:24   PortA3          on
     2018-05-04 14:20:05   PortA4          off
     2018-05-04 14:20:05   PortA5          off
     2018-05-04 14:20:05   PortA6          off
     2018-05-04 14:20:05   PortA7          off
     2018-05-04 14:20:05   PortB0          off
     2018-05-04 14:20:05   PortB1          off
     2018-05-04 14:20:05   PortB2          off
     2018-05-04 14:20:05   PortB3          off
     2018-05-04 14:20:05   PortB4          off
     2018-05-04 14:20:05   PortB5          off
     2018-05-04 14:20:05   PortB6          on
     2018-05-04 14:20:05   PortB7          on
     2019-02-24 10:21:47   state           Ok
Attributes:
   IODev      RpiI2C_1
   Interrupt  A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
   InterruptOut connected_active-low
   Pullup     A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
   alias      Digital I/O Bank 1 | Port A0-A7,B0-B7 (Input)
   devStateIcon Ok:it_net@0CFB0C Initialized:it_net@yellow defined:it_net@yellow disconnected:it_net@red error:it_net@red
   event-on-change-reading .*
   group      MCP23017
   icon       it_net
   invert_input A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
   poll_interval 1
   room       _IO


Gibt es eine Möglichkeit gewisse Eingänge am MCP23017 Modul abzufragen?

LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

klausw

Hallo Chris,

woran erkennst du das polling nicht funktioniert?
Bei einem Interrupt funktioniert es?

event-on-change-reading .* sorgt dafür, das bei einem poll Vorgang die Readings nicht aktualisiert werden (ändern sollten sie sich ja nicht denn dann gibt es einen Interrupt)
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

Burny4600

@klausw

Mit event-on-change-reading .* ist keine gute Lösung. Da hast du Recht. Ich habe es jetz entfernt und das Attribut poll_interval 1 eingefügt.
Es ist anhand dem Reading ersichtlich, dass es sich jede Minute jetzt ändert. Nur ändert das nichts an den Eingängen. Die Eingänge werden trotzdem nicht neu eingelesen.
LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess