FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: klausg am 05 Juni 2015, 10:18:16

Titel: I2C_MCP342x
Beitrag von: klausg am 05 Juni 2015, 10:18:16
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.
Titel: Antw:I2C_MCP342x
Beitrag von: klausw am 25 September 2015, 09:51:10
Ist das Thema noch aktuell? Oder läuft es inzwischen?
Titel: Antw:I2C_MCP342x
Beitrag von: Heimbastler am 07 März 2016, 18:02:54
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
Titel: Antw:I2C_MCP342x
Beitrag von: klausw am 09 März 2016, 20:15:23
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
Titel: Antw:I2C_MCP342x
Beitrag von: Heimbastler am 09 März 2016, 22:21:51
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
Titel: Antw:I2C_MCP342x
Beitrag von: Heimbastler am 16 März 2016, 20:50:56
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
Titel: Antw:I2C_MCP342x
Beitrag von: Heimbastler am 16 März 2016, 21:13:20
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
Titel: Antw:I2C_MCP342x
Beitrag von: klausw am 17 März 2016, 00:04:45
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).
Titel: Antw:I2C_MCP342x
Beitrag von: klausw am 24 März 2016, 00:51:44
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
Titel: Antw:I2C_MCP342x
Beitrag von: Heimbastler am 31 März 2016, 08:36:56
 :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...
Titel: Antw:I2C_MCP342x
Beitrag von: HRueck am 17 September 2016, 13:23:07
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
Titel: Antw:I2C_MCP342x
Beitrag von: Heimbastler am 17 September 2016, 15:33:31
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
Titel: Antw:I2C_MCP342x
Beitrag von: HRueck am 20 September 2016, 17:34:41
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
Titel: Antw:I2C_MCP342x
Beitrag von: klausw am 20 September 2016, 17:49:05
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?
Titel: Antw:I2C_MCP342x
Beitrag von: HRueck am 20 September 2016, 21:30:47
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.
Titel: Antw:I2C_MCP342x
Beitrag von: klausw am 20 September 2016, 23:28:50
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?
Titel: Antw:I2C_MCP342x
Beitrag von: HRueck am 21 September 2016, 09:44:58
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.
Titel: Antw:I2C_MCP342x
Beitrag von: Heimbastler am 21 September 2016, 09:56:45
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
Titel: Antw:I2C_MCP342x
Beitrag von: HRueck am 21 September 2016, 10:36:39
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>]

Titel: Antw:I2C_MCP342x
Beitrag von: Burny4600 am 07 November 2016, 15:52:47
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.
Titel: Antw:I2C_MCP342x
Beitrag von: klausw am 07 November 2016, 16:48:59
siehe hier (https://forum.fhem.de/index.php/topic,60238.0.html)