Benutzt jemand das Modul I2C_MCP342x und kann mir helfen es zum Laufen zu bekommen? Es sieht so aus, dass das Modul in meiner Version Fehler hat und FHEM zum Absturz bringt. Wenn man das behebt bleibt der Status immer auf defined.
Ist das Thema noch aktuell? Oder läuft es inzwischen?
Hallo Klaus,
ich versuche gerade mit diesem Modul ein ADC-Board für Messzwecke auf einem RaspberryPi zum laufen zu bekommen.
Folgendes verwende ich, habe ich bisher gemacht:
- Raspberry Pi B+
- Ein ADC Board von hier: https://www.abelectronics.co.uk/p/56/ADC-Pi-Plus-Raspberry-Pi-Analogue-to-Digital-converter
- neusten Kernel geladen und 1-Wire, GPIO und RPII2C in Verwendung
define RPII2C.1 RPII2C 1
attr RPII2C.1 room ADC
attr RPII2C.1 verbose 5
define MCP3424.CH1234 I2C_MCP342x 68 4
attr MCP3424.CH1234 IODev RPII2C.1
attr MCP3424.CH1234 room ADC
1. Habe ich das richtig gemacht mit der Formatierung im define im Modul RPII2C mit 68(i2c Adresse) und 4 (Anzahl der Kanäle)?
Auf dem Board sind 2x MCP3424 verbaut, deswegen der Name für den 1sten Chip mit MCP3424.CH1234. Diese haben jeweils 4x+ und 4x- als Eingang. Oder muss ich 8 Kanäle definieren? :-X
2. In dem Device-Menü vom I2C_MCP342x Modul kann ich im Dropdown nur 1+2 auswählen, nicht 1+2+3+4 wie gedacht, oder sind das die doch die i2c Busse aus dem anderen Modul RPII2C?
3. Gibt der Treiber / das Modul I2C_MCP342x die Ergebnisse in HEX oder Volt aus?
Hier noch Ausgaben in meinem Log wenn ich z.Bsp. <get RPII2C.1 read 68> eingebe:
2016.03.07 17:47:05 5: RPII2C.1: HWaccess I2CAddr: 0x68
2016.03.07 17:47:05 5: RPII2C.1: vom client empfangen|direction: i2cbyteread|i2caddress: 104
Dieses Device scheint denke ich zu laufen.
Am Ende will ich nur 3 Eingänge von einem der beiden MCP3424 auslesen und die Werte in Volt loggen. Bei Abweichungen soll dann vlt das Threshold-Modul einen Alarm per Pushover o.ä. senden.
Danke und VG
Alex
Zitat von: Heimbastler am 07 März 2016, 18:02:54
1. Habe ich das richtig gemacht mit der Formatierung im define im Modul RPII2C mit 68(i2c Adresse) und 4 (Anzahl der Kanäle)?
Auf dem Board sind 2x MCP3424 verbaut, deswegen der Name für den 1sten Chip mit MCP3424.CH1234. Diese haben jeweils 4x+ und 4x- als Eingang. Oder muss ich 8 Kanäle definieren? :-X
sieht soweit gut aus
die 4 ist richtig, Jeder Kanal hat je einen + und einen - Pin
Zitat von: Heimbastler am 07 März 2016, 18:02:54
2. In dem Device-Menü vom I2C_MCP342x Modul kann ich im Dropdown nur 1+2 auswählen, nicht 1+2+3+4 wie gedacht, oder sind das die doch die i2c Busse aus dem anderen Modul RPII2C?
Hmm, ich habe nur die 2 Kanalige Version.
Da sollten 4 Kanäle sein ... muss ich nochmal drüberschauen. Das wird aber nix vor nächster Woche.
Zitat von: Heimbastler am 07 März 2016, 18:02:54
3. Gibt der Treiber / das Modul I2C_MCP342x die Ergebnisse in HEX oder Volt aus?
Volt
Zitat von: Heimbastler am 07 März 2016, 18:02:54
Hier noch Ausgaben in meinem Log wenn ich z.Bsp. <get RPII2C.1 read 68> eingebe:
2016.03.07 17:47:05 5: RPII2C.1: HWaccess I2CAddr: 0x68
2016.03.07 17:47:05 5: RPII2C.1: vom client empfangen|direction: i2cbyteread|i2caddress: 104
Dieses Device scheint denke ich zu laufen.
werden denn Readings angelegt?
Wenn ja dann läuft es
Hallo Klaus,
danke für die Hilfe.
Redings kann ich nicht sehen im Device-Menü / in der Device-Ansicht:
(//)
Gebe ich folgende dinge im Menü für get... ein kommt follgendes:
1. get MCP3424.CH1234 <nichts>
--> <es passiert nichts>
2. get MCP3424.CH1234 1
--> Wrong resolution, use 12, 14, 16 or 18
3. get MCP3424.CH1234 1 12
--> Wrong resolution, use 12, 14, 16 or 18
4. get MCP3424.CH1234 12
--> <es passiert nichts>
5. get MCP3424.CH1234 2
--> Unknown argument 2, choose one of 1 2
6. get MCP3424.CH1234 2 <irgendwas>
--> Unknown argument 2, choose one of 1 2
hatte die default werte nochmals per attr definiert. kein Unterschied.
define MCP3424.CH1234 I2C_MCP342x 68 4
attr MCP3424.CH1234 IODev RPII2C.1
attr MCP3424.CH1234 ch1factor 1
attr MCP3424.CH1234 ch1gain 1
attr MCP3424.CH1234 ch1resolution 12
attr MCP3424.CH1234 ch1roundDecimal 3
attr MCP3424.CH1234 poll_interval 1
attr MCP3424.CH1234 room ADC
attr MCP3424.CH1234 verbose 5
Das I2C_MCP342x Modul hinterlässt auch keine einträge im log, aber das IODevice RPII2C.1
Danke und einen schönen Abend noch,
Alex
Hallo Klaus,
habe nun meinen Messaufbau soweit fertig. Auf dem Testboard werden bis zu 24 Teile montiert und in einer Prüfkammer werden dann jeweils Temperatur und Spannung aufgezeichnet. Leider habe ich bei dem ADC-Board immer noch keinen Erfolg.
Ist es denkbar das Du Dir das Modul noch mal bezüglich dem Einsatz von MCP3424 anschauen kannst?
VG
Alex
Hallo noch Mal,
habe in die 52_I2C_MCP342x.pm reingeschaut und versucht zu verstehen an welcher Stelle die 4 Kanäle definiert/abgefragt werden. Kann es sein das in Zeile 83 folgendes Einfluss darauf nimmt?
eval { I2C_MCP342x_Init( $hash, [ @a[ 2 .. scalar(@a) - 1 ] ] ); };
VG
Alex
Zitat von: Heimbastler am 16 März 2016, 21:13:20
habe in die 52_I2C_MCP342x.pm reingeschaut und versucht zu verstehen an welcher Stelle die 4 Kanäle definiert/abgefragt werden. Kann es sein das in Zeile 83 folgendes Einfluss darauf nimmt?
eval { I2C_MCP342x_Init( $hash, [ @a[ 2 .. scalar(@a) - 1 ] ] ); };
Da wird nur die Initialisierung aufgerufen.
In dem @a ist auch die Kanalzahl mit drin (sofern beim define angegeben).
Update sollte morgen verfügbar sein.
Das Modul akzeptierte generell keine Parameter.
Ohne (Adresse 0x68 und 2 Kanäle) funktionierte es.
Denke bitte dran: Adresse in hex: 0x68 oder dezimal: 104
:D
sieht erst mal gut aus...hier ein kleiner Auszug aus der Log:
2016.03.31 08:27:01 5: RPII2C.1: vom client empfangen|nbyte: 5|direction: i2cread|i2caddress: 104
2016.03.31 08:27:01 5: RPII2C.1: HWaccess I2CAddr: 0x68
2016.03.31 08:27:01 5: RPII2C.1: vom client empfangen|nbyte: 5|direction: i2cread|i2caddress: 104
2016.03.31 08:27:01 5: RPII2C.1 ->Client gefunden: MCP3424.CH1234, I2Caddress: 104 Gelesen: 255 253 64 64 64
...in der Device-Ansicht sind nun auch Readings zu sehen...
...werde dann heute mal noch die Hardware anschliessen und berichten...jetzt waren die Eingänge noch "offen".... :o
vielen Dank so weit...
Habe wohl das gleiche Problem:
Ein 4-Kanal Modul (auch von AB electronics) wird erkannt, zeigt aber nur 2 Kanäle zum abfragen und keine readings.
Wenn das Modul an einer anderen Installation betrieben wird, klappt alles bestens.
Beide Systeme sind upgedatet.
Warum geht es dann einmal und einmal nicht?
Gruss Herbert
Hi Herbert...
hast Du mal versucht ob die 2 Kanäle tatsächlich komunizieren? Ich hatte teatweise Batterien an 3 Kanälen angelegt um das ganze zu kalibrieren. Also konkret eine Spannung angelegt um ein Reading zu erkennen.
Leider schon eine Weile her. Fall ich Montag dazu komme versuche ich noch mal meinen Werdegang nachzuvollziehen.
Viel Glück
Alex
das Problem scheint hier zu liegen:
define MCP342x_1 I2C_MCP342x 0x6A 4
attr MCP342x_1 IODev I2C
im log:
error initializing 'MCP342x_1': Define: Wrong syntax. Usage:define <name> MCP342x [<i2caddress>] [<type>]
ich habe auch schon mit den Parametern gespielt. Klammern, kleines a ....
das komische ist aber wie schon gesagt, dass mit genau der obigen Definition das Board auf einer anderen Installation korrekt läuft.
Gruss Herbert
Poste hier bitte die Ausgabe von
version I2C_MCP342x
von beiden Installationen
und von
list MCP342x_1
von der Funktionierenden
hast du anstelle von 0x6A mal 106 probiert?
Version: 52_I2C_MCP342x.pm 12059 2016-08-22 21:14:59Z klauswitt
bei beiden Installationen.
Da wo es nicht geht:
Internals:
DEF 0x6a 4
IODev I2C
NAME MCP342x_1
NR 80
STATE defined
TYPE I2C_MCP342x
Attributes:
IODev I2C
room Interfaces
Da wo es geht:
Internals:
DEF 0x6A 4
IODev I2C
NAME MCP342x_1
NR 23
STATE defined
TYPE I2C_MCP342x
Readings:
2016-09-17 12:00:16 Channel1 0.000
2016-09-17 12:00:16 Channel2 0.000
2016-09-17 12:00:16 Channel3 0.000
2016-09-17 12:00:16 Channel4 0.000
2016-09-17 12:00:16 state Ok
Attributes:
IODev I2C
poll_interval 1
room Interfaces
Die dezimale Adresse hat nichts gebracht.
komisch
selbst wenn kein MCP342x angeschlossen ist sollte diese Fehlermeldung nicht kommen.
define MCP342x_1 I2C_MCP342x 0x6A ohne die 4 am Ende gehr vermutlich auch nicht
laufen beide FHEM Instanzen auf der gleichen Perl Version?
kannst du das define mal bei einem globalen verbose 5 wiederholen?
Die "neue" Installation (die, wo es nicht geht) läuft auf einem Odroid XU4 mit Shifter Board.
Das Shifter Board hat einen Raspberry kompatiblen 40pin Anschluss.
Auf diesem Anschluss laufen mehrere andere I2C Module ( z.B. I2C_MCP23017) normal.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.1 LTS
Release: 16.04
Codename: xenial
perl 5, version 22, subversion 1 (v5.22.1) built for arm-linux-gnueabihf-thread-multi-64int
----------------------
Die "alte" Installation (die, wo es geht) läuft auf einem Raspberry2.
PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
NAME="Raspbian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=raspbian
ID_LIKE=debian
perl 5, version 20, subversion 2 (v5.20.2) built for arm-linux-gnueabihf-thread-multi-64int
----------------------
den log mit verbose5 werde ich noch im laufe des Tages machen.
Hallo,
wenn ich das Device liste kommt:
version 52_I2C_MCP342x.pm -->
52_I2C_MCP342x.pm 12059 2016-08-22 21:14:59Z klauswitt
Internals:
DEF 0x68 4
I2C_Address 104
IODev RPII2C.1
NAME MCP3424.CH1234
NR 89
RPII2C.1_SENDSTAT Ok
STATE Ok
TYPE I2C_MCP342x
channels 4
Readings:
2016-09-21 09:43:13 Channel1 42000.000
2016-09-21 09:43:13 Channel2 42000.000
2016-09-21 09:43:13 Channel3 42000.000
2016-09-21 09:43:13 Channel4 42000.000
2016-09-21 09:43:13 state Ok
Attributes:
IODev RPII2C.1
poll_interval 5
room ADC
1.
Einziger Unterschied zu Deiner Ausgabe ist STATE OK und nicht STATE defined. Ist hier der Hund begraben irgendwo?
2.
Ansonsten denke ich macht DEF 0x6a / 0x6A keinen Unterschied aus? Hattest Du ja schon kommentiert, aber in Deiner list für das Device, welches geht, steht nun mal DEF 0x6A.
VG
Alex
Ich habe nun auf dem Odroid XU4 eine FHEM minimale Installation mit nur dem MCP342x (auch nur diese Hardware) eingerichtet.
Es ergibt folgendes im log unter verbose5:
2016.09.21 10:26:02 5: Cmd: >define MCP3424_1 I2C_MCP342x 0x6a 4<
2016.09.21 10:26:02 5: Loading ./FHEM/52_I2C_MCP342x.pm
2016.09.21 10:26:02 5: Cmd: >attr MCP3424_1 IODev I2C<
2016.09.21 10:26:02 5: Cmd: >attr MCP3424_1 poll_interval 5<
2016.09.21 10:26:02 5: Cmd: >attr MCP3424_1 room I2C<
2016.09.21 10:26:02 5: Cmd: >define MCP3424_2 I2C_MCP342x 0x6b 4<
2016.09.21 10:26:02 5: Cmd: >attr MCP3424_2 IODev I2C<
2016.09.21 10:26:02 5: Cmd: >attr MCP3424_2 poll_interval 5<
2016.09.21 10:26:02 5: Cmd: >attr MCP3424_2 room I2C<
........
2016.09.21 10:26:02 5: Cmd: >setstate I2C Ok<
2016.09.21 10:26:02 5: Cmd: >setstate I2C 2016-09-19 13:10:23 +STATE 0<
2016.09.21 10:26:02 3: WARNING: unsupported character in reading +STATE (not A-Za-z/\d_\.-), notify the RPII2C module maintainer.
........
2016.09.21 10:26:02 5: Cmd: >setstate MCP3424_1 defined<
2016.09.21 10:26:02 5: Cmd: >setstate MCP3424_2 defined<
........
2016.09.21 10:26:02 5: im init client fuer MCP3424_1
2016.09.21 10:26:02 2: error initializing 'MCP3424_1': Define: Wrong syntax. Usage:
define <name> MCP342x [<i2caddress>] [<type>]
2016.09.21 10:26:02 5: im init client fuer MCP3424_2
2016.09.21 10:26:02 2: error initializing 'MCP3424_2': Define: Wrong syntax. Usage:
define <name> MCP342x [<i2caddress>] [<type>]
Hat jemand das Gerät I2C_MCP342x mit allen Kanälen schon zum laufen gebracht?
Ich kann nur einen Kanal einlesen.
Beim zweiten Kanal bekomme ich schon eine Fehlermeldung.
Für Kanal 3 und 4 gibt es keine Möglichkeit ein get aufzurufen.
Verwendet wird ein fertiges I2C_MCP342x Modul von Abelectronics mit 2x4 Kanälen.
siehe hier (https://forum.fhem.de/index.php/topic,60238.0.html)