Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input

Begonnen von klausw, 15 November 2013, 14:28:41

Vorheriges Thema - Nächstes Thema

klausw

Hallo Christian,

Zitat von: linusd am 27 April 2014, 16:37:23
Mein Problem ist nur, dass der Interrupt leider nicht reagiert.
Meine Testkonfiguration:
- REED-Kontakt auf GPA7
- INTA auf GPIO4 gelegt (bleibt immer auf High!?!)


define chip RPII2C 1

define testMCP23017 I2C_MCP23017 0x20
attr testMCP23017 IODev chip
attr testMCP23017 Interrupt A7

define dummyMCP23017 dummy

define notifyMCP23017 notify testMCP23017 {my $MCP23017state=ReadingsVal("testMCP23017","PortA7",0);; fhem ("set dummyMCP23017 $MCP23017state")}
attr notifyMCP23017 showTriggerTime 1


Die Ports (die Readings) werden nur ausgelesen wenn ich das <testMCP23017> geöffnet habe und F5 drücke. ??? :-[
Muss ich evtl. den INTA noch konfigurieren und wenn ja wie?

Deine Konfiguration scheint schonmal zu funktionieren.
Der Interrupt kann noch nicht laufen, da die Konfiguration noch unvollständig ist.
Der Gpio vom Raspberry muss noch eingestellt werden.
z.B. so:

define meinIntport RPI_GPIO 4
attr meinIntport direction input
attr meinIntport interrupt rising


Dieser sollte dann bei jedem Interruptereignis auslösen.
Wenn das geht, kannst Du über den GPIO ein notify auslösen, welches eine get für den MCP23017 auslöst.

Grüße
Klaus
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

IPPhoner2b

#121
Zitat von: klausw am 22 April 2014, 15:03:56
Soo, ich war Ostern offline ... sehr erholsam :D

zu aller erst: wenn es zuerst funktioniert hat dann sollte es nach dem Rückbau in gleicher Konfiguration auch wieder gehen.

Wird der Ausgang auch messbar am Pin gesetzt, oder nur im Frontend?

Bevor ich mit den Kopf zerbreche:
geht es ohne define Eingang_mcp_20 RPI_GPIO 8 wieder?
Geht es ohne die Attribute Pullup und activelow?

Es währe gut zu wissen, bei welcher Änderung es nicht mehr geht.

Hallo Klaus,

hoffe du hast die Tage gut überstanden, ich bin auch in letzter Zeit überhaupt nicht mehr zu gekommen.

Bin jetzt mal in die Fhem.cfg, und habe unten alles rausgelöscht, jetzt steht nur noch folgendes drin:

define chip RPII2C 1
define mcp_20 I2C_MCP23017 0x20
attr mcp_20 IODev chip
attr mcp_20 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7


#define Eingang_mcp_20 RPI_GPIO 12
#attr Eingang_mcp_20 direction input
#attr Eingang_mcp_20 interrupt rising


Aber selbst so wird der gesetzte Ausgang sofort zurückgenommen
2014.05.01 12:22:55 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.05.01 12:22:55 1: mcp_20 UpdReadings Register: 18, Inhalt: 0; RegA: 18, RegB: 19
2014.05.01 12:23:01 1: mcp_20 set regaddr: 12 inhalt: 20
2014.05.01 12:23:01 1: mcp_20 UpdReadings Register: 18, Inhalt: 32; RegA: 18, RegB: 19
2014.05.01 12:23:01 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.05.01 12:23:01 1: mcp_20 UpdReadings Register: 18, Inhalt: 0; RegA: 18, RegB: 19
2014.05.01 12:23:07 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.05.01 12:23:07 1: mcp_20 UpdReadings Register: 18, Inhalt: 0; RegA: 18, RegB: 19
2014.05.01 12:23:12 1: mcp_20 set regaddr: 12 inhalt: 02
2014.05.01 12:23:12 1: mcp_20 UpdReadings Register: 18, Inhalt: 2; RegA: 18, RegB: 19
2014.05.01 12:23:12 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.05.01 12:23:12 1: mcp_20 UpdReadings Register: 18, Inhalt: 0; RegA: 18, RegB: 19


Als Anhang nochmal ein Screenshot, von der Übersichtsseite des MCP, warum steht dort bei I2C-Address eine 32? Das ist aber richtig so, oder?


Also egal, welchen Ausgang ich setze, es wird sofort gekillt.

Wird noch in eine andere Datei außer der Fhem.cfg was geschrieben, weil ich habe keine Ahnung, wo der Fehler sonst liegen kann.

Ich wechsel mal kurz den MCP Chip, ob das klappt, und sonst danach noch den RPI, und wenns dann auch nicht ist, muss ja eingetlich irgendwo an der Software ein Fehler liegen.  :-[

Vielen Dank schonmal für die Unterstützung, und einen schönen ersten Mai noch.

:EDIT:
also den Chip habe ich getauscht, bringt jedenfalls keine Änderung, dann habe ich den Chip bzw. die Verbindungen alle getrennt, um zu sehen, ob er den Chip überhaupt erkennt bzw. anspricht, dann kommt beim Start auch sofort eine Fehlermeldung im Log

2014.05.01 12:59:03 3: mcp_20: failure in message from chip
2014.05.01 12:59:03 3: Direction: i2cread I2Caddress: 32 Register: 18 Data: undef received: undef


So, und jetzt noch eben den RPI getauscht, ist das selbe Spiel, der Ausgang wird ohne Verzögerung sofort deaktiviert. Bin jetzt kurz davor alles nochmal neu zu machen, weil irgendwann habe ich mal diese attribute oder define oder so übers WebInterface oben in die Zeile eingegeben. Vielleicht hat der irgendwo was hingeschrieben, dass es deshalb nicht mehr klappt....

Jetzt bin ich irgendwie noch Ratloser, als vorher

Gruß
Christian

klausw

#122
Hallo Christian,

in Deiner config kann ich keinen Fehler erkennen.

Verändere erstmal nix, ich vermute, das der Fehler im Modul liegt. Es gibt keine andere Config, es sei denn Du hast die in der fhem.cfg eingebunden.

Zitat von: IPPhoner2b am 01 Mai 2014, 12:34:21
Als Anhang nochmal ein Screenshot, von der Übersichtsseite des MCP, warum steht dort bei I2C-Address eine 32? Das ist aber richtig so, oder?
32 ist eine Dezimalzahl und entspricht Hexadezimal 0x20

Wenn bei SENDSTAT ok stehe, dann antwortet der MCP auch...also die Kommunikation ist in Ordnung.

Versuche mal folgendes:

  • Attribut verbose in chip auf 5 setzen
  • attr mcp_20 OutputPorts nochmal neu setzen
  • einen pin auf 1 setzen
  • log hier posen

ausserdem kannst Du mal mit i2cread auf der Konsole schauen, was in den ersten 2 Registern vom MCP steht.
Ich vermute, die Ports werden nicht auf Output gesetzt....warum auch immer.

Grüße
Klaus
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

hajo23

Hallo,

ich beschäftige mich seit Kurzem auch mit dem Modul für den MCP23017 von Klaus. Ich habe aber das Problem, dass der Chip nicht korrekt initialisiert wird.
"attr mcp_20 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7" wird beim Start vermutlich nicht übertragen. Wenn ich das Attribut nochmals über die Eingabezeile schiebe, dann läuft alles.

Nach dem Start steht Folgendes im log:
2014.05.02 00:24:19 5: chip: vom client empfangen|direction: i2cwrite|reg: 0|data: 0|i2caddress:
2014.05.02 00:24:19 5: chip: vom client empfangen|direction: i2cwrite|reg: 1|data: 0|i2caddress:

Grüße,
Hajo

klausw

Zitat von: hajo23 am 02 Mai 2014, 00:57:52
ich beschäftige mich seit Kurzem auch mit dem Modul für den MCP23017 von Klaus. Ich habe aber das Problem, dass der Chip nicht korrekt initialisiert wird.
.....
Nach dem Start steht Folgendes im log:
2014.05.02 00:24:19 5: chip: vom client empfangen|direction: i2cwrite|reg: 0|data: 0|i2caddress:
2014.05.02 00:24:19 5: chip: vom client empfangen|direction: i2cwrite|reg: 1|data: 0|i2caddress:

Das ist ein Fehler im Modul. Irgendwie werden die Attribute gesendet, bevor die I2C Adresse im Hash abgelegt wird.
Wesshalb was so ist weiss ich nicht, im define wird die Adresse schließlich angegeben. Ich bin an dem Thema dran...
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

IPPhoner2b

#125
Hallo Klaus,

also habe grade deine Anleitung befolgt *g*, und es hat auf Anhieb funktioniert, hier das Log:

2014.05.02 14:05:42 0: Server started with 11 defined entities (version $Id: fhem.pl 5705 2014-04-30 10:26:25Z rudolfkoenig $, os linux, user fhem, pid 1963)
2014.05.02 14:06:01 5: chip: vom client empfangen|direction: i2cwrite|reg: 0|data: 0|i2caddress: 32
2014.05.02 14:06:01 5: chip: HWaccess I2CAddr: 20
2014.05.02 14:06:01 5: chip; Register 00 schreiben - Inhalt: 00 Returnvar.: 0
2014.05.02 14:06:01 5: chip ->Client gefunden: mcp_20, I2Caddress: 32
2014.05.02 14:06:01 3: mcp_20: failure in message from chip
2014.05.02 14:06:01 3: Direction: i2cwrite I2Caddress: 32 Register: 0 Data: 0 received: undef
2014.05.02 14:06:01 5: chip: vom client empfangen|direction: i2cwrite|reg: 1|data: 255|i2caddress: 32
2014.05.02 14:06:01 5: chip: HWaccess I2CAddr: 20
2014.05.02 14:06:01 5: chip; Register 01 schreiben - Inhalt: FF Returnvar.: 0
2014.05.02 14:06:01 5: chip ->Client gefunden: mcp_20, I2Caddress: 32 Data: 255
2014.05.02 14:06:01 1: mcp_20 UpdReadings Register: 1, Inhalt: 255; RegA: 18, RegB: 19
2014.05.02 14:06:13 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.05.02 14:06:13 5: chip: HWaccess I2CAddr: 20
2014.05.02 14:06:13 5: chip; Register 12 lesen - Inhalt: 00
2014.05.02 14:06:13 5: chip; Register 13 lesen - Inhalt: 00
2014.05.02 14:06:13 5: chip ->Client gefunden: mcp_20, I2Caddress: 32
2014.05.02 14:06:13 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.05.02 14:06:13 1: mcp_20 UpdReadings Register: 18, Inhalt: 0; RegA: 18, RegB: 19
2014.05.02 14:06:19 1: mcp_20 set regaddr: 12 inhalt: 08
2014.05.02 14:06:19 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 8|i2caddress: 32
2014.05.02 14:06:19 5: chip: HWaccess I2CAddr: 20
2014.05.02 14:06:19 5: chip; Register 12 schreiben - Inhalt: 08 Returnvar.: 0
2014.05.02 14:06:19 5: chip ->Client gefunden: mcp_20, I2Caddress: 32 Data: 8
2014.05.02 14:06:19 1: mcp_20 UpdReadings Register: 18, Inhalt: 8; RegA: 18, RegB: 19
2014.05.02 14:06:19 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.05.02 14:06:19 5: chip: HWaccess I2CAddr: 20
2014.05.02 14:06:19 5: chip; Register 12 lesen - Inhalt: 08
2014.05.02 14:06:19 5: chip; Register 13 lesen - Inhalt: 00
2014.05.02 14:06:19 5: chip ->Client gefunden: mcp_20, I2Caddress: 32
2014.05.02 14:06:19 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.05.02 14:06:19 1: mcp_20 UpdReadings Register: 18, Inhalt: 8; RegA: 18, RegB: 19


Mit der Console, meintest du da I2Cget, oder I2Cread? Weil Read kenne ich und das System nicht  ::)

:EDIT ist wieder da:

Habe danach die Config gespeichert, also dass das mit Verbose 5 da drin steht, und habe neu gestartet, ohne die Ausgänge extra neu zu definieren. Dann klappt es wieder nicht, hier davon das log

2014.05.02 14:10:06 0: Server started with 11 defined entities (version $Id: fhem.pl 5705 2014-04-30 10:26:25Z rudolfkoenig $, os linux, user fhem, pid 1949)
2014.05.02 14:10:12 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.05.02 14:10:12 5: chip: HWaccess I2CAddr: 20
2014.05.02 14:10:12 5: chip; Register 12 lesen - Inhalt: 00
2014.05.02 14:10:12 5: chip; Register 13 lesen - Inhalt: 00
2014.05.02 14:10:12 5: chip ->Client gefunden: mcp_20, I2Caddress: 32
2014.05.02 14:10:12 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.05.02 14:10:12 1: mcp_20 UpdReadings Register: 18, Inhalt: 0; RegA: 18, RegB: 19
2014.05.02 14:10:21 1: mcp_20 set regaddr: 12 inhalt: 04
2014.05.02 14:10:21 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 4|i2caddress: 32
2014.05.02 14:10:21 5: chip: HWaccess I2CAddr: 20
2014.05.02 14:10:21 5: chip; Register 12 schreiben - Inhalt: 04 Returnvar.: 0
2014.05.02 14:10:21 5: chip ->Client gefunden: mcp_20, I2Caddress: 32 Data: 4
2014.05.02 14:10:21 1: mcp_20 UpdReadings Register: 18, Inhalt: 4; RegA: 18, RegB: 19
2014.05.02 14:10:21 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.05.02 14:10:21 5: chip: HWaccess I2CAddr: 20
2014.05.02 14:10:21 5: chip; Register 12 lesen - Inhalt: 00
2014.05.02 14:10:21 5: chip; Register 13 lesen - Inhalt: 00
2014.05.02 14:10:21 5: chip ->Client gefunden: mcp_20, I2Caddress: 32
2014.05.02 14:10:21 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.05.02 14:10:21 1: mcp_20 UpdReadings Register: 18, Inhalt: 0; RegA: 18, RegB: 19


:Nochmals:
So, habe auf der Console I2Cget 1 0x20 eingegeben, und habe als Antwort 0x04 erhalten, als ich dann in Fhem die Ausgänge nochmals definiert habe, so wie "Hajo23" auch schrieb, ging sofort die LED an, und auf der Webseite stand sofort dass der Ausgang gesetzt wurde

Habe nochmal nach einem Neustart die Register 0x00 und 0x01 ausgelesen, diese waren beide wieder bei 0xff, nachdem die Ports wieder in Fhem zugeordnet wurden, stand 0x00 auf 0x00  ;D

Gruß
Christian

klausw

hier ist eine Neue Version des MCP23017 Moduls

Bitte dort weiterdiskutieren.

Dieser Thread sollte dem Modul für die Pi GPIOs vorbehalten sein.
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

linusd

Mein Fehler ist mit der neuen Version des Moduls behoben.
Ich habe meine funktionieren Beispielkonfiguration hier bereitgestellt.

Hoeness

Hallo,

Ich benutze das GPIO Moul bereits zum einlesen von Tastern. Das funktioniert auch super.

Jetzt bin ich auf der Suche nach einer Lösung für das Erkennen eines Longpress eines Tasters.

Die Suchfunktion hat mich da nicht wirklich weiter gebracht.

Kann mir da jemand weiterhelfen. Link zu einer Beschreibung bzw. Code-Bsps wären top.

Danke


klausw

Zitat von: Hoeness am 10 Juli 2014, 10:38:56
Hallo,

Ich benutze das GPIO Moul bereits zum einlesen von Tastern. Das funktioniert auch super.

Jetzt bin ich auf der Suche nach einer Lösung für das Erkennen eines Longpress eines Tasters.

Die Suchfunktion hat mich da nicht wirklich weiter gebracht.

Kann mir da jemand weiterhelfen. Link zu einer Beschreibung bzw. Code-Bsps wären top.

Danke
Schau dir mal readingsproxy an.
Das könnte was für dich sein.
Wenn interrupt auf both gesetzt ist dann wird bei langem Tastendruck bereits das reading longpress gesetzt.
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

einnordlicht

Hallo,
ich moechte gerne ueber mein FHEM auf dem Raspberry PI den Brennersuastnd meiner Heizung ueberwachen. Um nicht auf Loesungen wie der modifizierten MAX Sensoren auszuweichen, habe ich es mit einer pragmatischen Loesung versucht und einfach ein altes Steckernetzteil (Handyladegeraet) parallel zum Betriebsstundenzaehlerausgang der Heizung gelegt. Der bekommt - wenn der Brenner laeuft - 230 V und erzeugt ein 5V Gleicspannungssignal, und liefert nchts wenn der Brenner aus ist. MIt einer Widerstandskaskade wurden die 5V auf die fuer GPIO ports erlaubten 3.3V gebracht und an GPIO 23 angegeschlossen. Und parallel zur Widerstandskaskade wurde noch ein 1,5k Widerstand gelegt, damit das Netzteil nach ausschalten in weniger als einer Sekunde keine Signifikante Spannung liefert.   
Hier die Settings


Dann habe ich erst mit GPIO24 einen Test gemacht
define Heizung RPI_GPIO 23
attr Heizung direction input
attr Heizung interrupt both
attr Heizung pud_resistor down
attr Heizung restoreOnStartup yes
attr Heizung room GPIO

define Heizung_FileLog FileLog ./log/Heizung-%Y.log Heizung
attr Heizung_FileLog logtype text
attr Heizung_FileLog room GPIO

Der auf output gestellte GPIO Port24 wurde mit 6k Widerstand direkt an GPIO 23 angeschlossen und je nach Zustand folgt der Heizungsstatus dem Port 24.
Nachdem ich aber das mit der Heizung verkoppelte Netzteil an Port angeschlossen habe, bekomme ich  ich aber nicht nur Wechsel ein / aus, sondern eine Kaskade von off:
2014-07-21_12:30:28 Heizung Pinlevel: low
2014-07-21_12:30:28 Heizung off
2014-07-21_12:30:46 Heizung Pinlevel: high
2014-07-21_12:30:46 Heizung on
2014-07-21_12:30:57 Heizung Pinlevel: low
2014-07-21_12:30:57 Heizung off
2014-07-21_12:31:34 Heizung Pinlevel: low
2014-07-21_12:31:34 Heizung off
2014-07-21_12:31:58 Heizung Pinlevel: low
2014-07-21_12:31:58 Heizung off
2014-07-21_12:32:03 Heizung Pinlevel: low
2014-07-21_12:32:03 Heizung off
2014-07-21_12:32:03 Heizung Pinlevel: low
2014-07-21_12:32:03 Heizung off
2014-07-21_12:32:03 Heizung Pinlevel: low
2014-07-21_12:32:03 Heizung off
2014-07-21_12:32:03 Heizung Pinlevel: low
2014-07-21_12:32:03 Heizung off
2014-07-21_12:32:03 Heizung Pinlevel: low
2014-07-21_12:32:03 Heizung off
2014-07-21_12:32:03 Heizung Pinlevel: low
2014-07-21_12:32:03 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:06 Heizung Pinlevel: low
2014-07-21_12:32:06 Heizung off
2014-07-21_12:32:06 Heizung Pinlevel: low
2014-07-21_12:32:06 Heizung off
2014-07-21_12:32:07 Heizung Pinlevel: low
2014-07-21_12:32:07 Heizung off
2014-07-21_12:32:07 Heizung Pinlevel: low
2014-07-21_12:32:07 Heizung off
2014-07-21_12:32:09 Heizung Pinlevel: low
2014-07-21_12:32:09 Heizung off
2014-07-21_12:32:09 Heizung Pinlevel: low
2014-07-21_12:32:09 Heizung off
2014-07-21_12:32:10 Heizung Pinlevel: low
2014-07-21_12:32:10 Heizung off
2014-07-21_12:32:10 Heizung Pinlevel: low
2014-07-21_12:32:10 Heizung off
2014-07-21_12:32:10 Heizung Pinlevel: low
2014-07-21_12:32:10 Heizung off
2014-07-21_12:32:11 Heizung Pinlevel: low
2014-07-21_12:32:11 Heizung off
2014-07-21_12:32:11 Heizung Pinlevel: low
2014-07-21_12:32:11 Heizung off
2014-07-21_12:32:12 Heizung Pinlevel: low
2014-07-21_12:32:12 Heizung off
2014-07-21_12:32:12 Heizung Pinlevel: low
2014-07-21_12:32:12 Heizung off
2014-07-21_12:32:12 Heizung Pinlevel: low
2014-07-21_12:32:12 Heizung off
2014-07-21_12:32:12 Heizung Pinlevel: high
2014-07-21_12:32:12 Heizung on
2014-07-21_12:34:17 Heizung Pinlevel: high
2014-07-21_12:34:17 Heizung on
2014-07-21_12:34:17 Heizung Pinlevel: low
2014-07-21_12:34:17 Heizung off
2014-07-21_12:48:47 Heizung Pinlevel: low

Zur Erlauterung: die ersten 3 Schaltungen (12:30) waren der Test mit GPIO24. Die weiteren Eintraege entstanden, als die Heizung ansprang und die 3.3V am GPIO23 anlagen. Erst nach 40 Sekunden war zwei "on" MEsswerte zu sehen. Erst dachte ich, dass auf dem Eingang viele Unterbrechungen liegen, aber dann haetten doch auch immer high/low bzw. on/off im Wechsel erfolgen muessen, oder?  Auch mit gpiscope gemessen  zeigt GPIO23 nur high values und keine Einbrueche (die ggf. theoretisch schneller erfolgen koennen als gpiscope aufloesen kann. 
Was kann es noch sein, dass diese vielen low messwerte erzeugt?
Gruss vom Nordlich aus Koelle 

klausw

Zitat von: einnordlicht am 21 Juli 2014, 13:46:30
Zur Erlauterung: die ersten 3 Schaltungen (12:30) waren der Test mit GPIO24. Die weiteren Eintraege entstanden, als die Heizung ansprang und die 3.3V am GPIO23 anlagen. Erst nach 40 Sekunden war zwei "on" MEsswerte zu sehen. Erst dachte ich, dass auf dem Eingang viele Unterbrechungen liegen, aber dann haetten doch auch immer high/low bzw. on/off im Wechsel erfolgen muessen, oder?  Auch mit gpiscope gemessen  zeigt GPIO23 nur high values und keine Einbrueche (die ggf. theoretisch schneller erfolgen koennen als gpiscope aufloesen kann. 
Was kann es noch sein, dass diese vielen low messwerte erzeugt?
Gruss vom Nordlich aus Koelle

Zusammengefasst funktioniert es, wenn Du den GPIO24 als Quelle nutzt, aber nicht mit dem Netzteil als Quelle. Richtig?

Deine Konfiguration ist soweit richtig (restoreOnStartup sollte last sein, aber yes funktioniert im mom auch noch)

Ich teile Deine Vermutung, das gpioscope (ist das eine SW Lösung, die direkt auf dem Pin misst?) wird zu langsam sein.
Kannst Du mit einem richtigen Oszi nachmessen?
Die Tatsache, das Du immer nur low misst legt nahe, das auf der Leitung Glitches drauf sind. Ist die Leitung zum Brenner lang?
Ein Glitch kann Problemlos einen Interrupt auslösen. Beim Messen am GPIO ist die Spannung dann aber schon wieder normal
Ein Tiefpass könnte da helfen (oder auch das Attribut event_on_change_reading .... aber das ist in diesem Fall sehr unsauber, da die permanenten Interrups das System auslasten).
Das mit den ersten High Werten nach 40s verstehe ich nicht. Kommen die 40s zu spät?

Mit Widerstandskaskade meinst Du sicher Spannungsteiler...allerdings wir Dir ein dazu parallesgeschalteter Widerstand das Teilungsverhältnis verbiegen. Es ist besser, den Spannungsteiler einfach niederohmiger zu machen.

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

einnordlicht

ZitatZusammengefasst funktioniert es, wenn Du den GPIO24 als Quelle nutzt, aber nicht mit dem Netzteil als Quelle. Richtig?
Korrekt. Alles sauber, jeder Schaltvorgang fuehrt zu einem Interrupt und einem korrektem Status.

ZitatIch teile Deine Vermutung, das gpioscope (ist das eine SW Lösung, die direkt auf dem Pin misst?) wird zu langsam sein.
Kannst Du mit einem richtigen Oszi nachmessen?
Habe ich leider nicht. piscope ist von der http://abyz.co.uk/rpi/pigpio Seite und ist eigentlich ganz gut, aber wahrscheinlich nicht gut genug...
Mal sehen, vielleicht setze ich sicherheits/probehalber einen kleinen Glaettungskondensator daneben.
Die Leitung zum Brenner ist 30cm zum Netzgeraet und dann 80cm zum Raspberry. Sollte eigentlich ok sein.Wenn ich es testweise direkt einschalte, ist die Spannung instantan da, beim Abschalten verschwindet die Restspannung innerhalb von  0,5sec (alledings am Digitalvoltmeter, denen sieht man das ja nicht so doll an). Aber 40 sec und so 50 ueberfluessige Flanken halte ich  beim Einschalten fuerkein gutes Signal,   zumal ich dann dann noch das Betriebsstundenzaehler Plugin damit betreiben moechte.

Ach ja, tschuldigung, ich meinte in der Tat  Spannungsteiler. Ich hatte aber nur 5  Stueck zu 1,5k zur Hand und wollte 5:3 Teilen, also 5 in Reihe und bei 3 abgegriffen. Danke fuer den Hinweis, aber so wie ich die Ohmschen Gesetze erinnere,  verbiegt ein dazu (also zu allen 5 in Reihe geschalteter Widerstaend) parallelgeschalteter Widerstand  nicht den Spannungsteiler, sondern senkt nur den Gesamtwiderstand:
Ein Zweig mit 5 in Serie 1.5 hat 5 * 1,5 =7.5k. Parallel dazu einen 1.5k macht Gesamt 1.25k  (1/Rges = 1/R1 + 1/R2)... ;) (ich hoffe, da habe ich mich jetzt nicht voellig blamiert, aber ich war so erstaunt, dass ich fast 30 Jahre spaeter es noch wusste)

Vielen Dank fuer die schnelle Antwort und noch mehr fuer die Erstellung des Plugin!

klausw

Zitat von: einnordlicht am 21 Juli 2014, 21:53:37
Korrekt. Alles sauber, jeder Schaltvorgang fuehrt zu einem Interrupt und einem korrektem Status.
Habe ich leider nicht. piscope ist von der http://abyz.co.uk/rpi/pigpio Seite und ist eigentlich ganz gut, aber wahrscheinlich nicht gut genug...
Gut für mich...dann liegt es schonmal nicht am Modul ;)

Zitat von: einnordlicht am 21 Juli 2014, 21:53:37
Mal sehen, vielleicht setze ich sicherheits/probehalber einen kleinen Glaettungskondensator daneben.
Die Leitung zum Brenner ist 30cm zum Netzgeraet und dann 80cm zum Raspberry. Sollte eigentlich ok sein.Wenn ich es testweise direkt einschalte, ist die Spannung instantan da, beim Abschalten verschwindet die Restspannung innerhalb von  0,5sec (alledings am Digitalvoltmeter, denen sieht man das ja nicht so doll an). Aber 40 sec und so 50 ueberfluessige Flanken halte ich  beim Einschalten fuerkein gutes Signal,   zumal ich dann dann noch das Betriebsstundenzaehler Plugin damit betreiben moechte.
Ich habe keine Ahnung, wie der Brenner aufgebaut ist. Aber vielleicht gibt es so eine Art Testpulse, die überprüfen, ob ein Brenner angeschlossen ist. Die könnten dann natürlich überkoppeln. Schließlich ist der Anschluss ausschließlich für einen Brenner gedacht. Das Netzteil an sich sollte ja bereits eine Glättung besitzen.
Alternativ könntest Du einen Optokoppler verwenden. Der Aufwand ist nur geringfügig größer.

Zitat von: einnordlicht am 21 Juli 2014, 21:53:37
Ach ja, tschuldigung, ich meinte in der Tat  Spannungsteiler. Ich hatte aber nur 5  Stueck zu 1,5k zur Hand und wollte 5:3 Teilen, also 5 in Reihe und bei 3 abgegriffen. Danke fuer den Hinweis, aber so wie ich die Ohmschen Gesetze erinnere,  verbiegt ein dazu (also zu allen 5 in Reihe geschalteter Widerstaend) parallelgeschalteter Widerstand  nicht den Spannungsteiler, sondern senkt nur den Gesamtwiderstand:
Ein Zweig mit 5 in Serie 1.5 hat 5 * 1,5 =7.5k. Parallel dazu einen 1.5k macht Gesamt 1.25k  (1/Rges = 1/R1 + 1/R2)... ;) (ich hoffe, da habe ich mich jetzt nicht voellig blamiert, aber ich war so erstaunt, dass ich fast 30 Jahre spaeter es noch wusste)
Das hast Du Dir gut gemerkt :D. Ich hatte es so verstanden, das die zusätzlichen 1,5k direkt am GPIO angebracht sind.
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

einnordlicht

#134
Ach ja, was so 50 oder 100 microF doch die Wogen glaetten koennen. Nach dem ich eine alte IDE  Bus Ethernetkarte geschlacht und um   einen Kondensator beraubt habe (Ich muss mich echt mal wieder eine Restekiste zulegen),  der dann parallel zum 5V Ausgang gelegt wurde, funzt der Geber genauso wie er  sollte: pro Ein / Ausschaltvorgang ein Signal.
Also alles super, nix mecker am Modul!  Ein rauf mit Mappes. Und ein zufriedener Nutzer mehr.

Ich muss mir mal die Struktur dieser Module anschauen, vielleicht kann ich ja auch mal etwas der Gemeinschaft zurueckliefern.

Und wie gesagt: nach dem die Daten sauber reinkommen, kann ich mich mit dem Betriebstundenzaehler Plugin an die Statistik und die Graphen machen.

Gruss aus Koelle vom Nordlicht (bei dem Wetter mit Heimweh)