MCP2515 CAN-Modul unter FHEM einbinden?

Begonnen von Burny4600, 30 März 2017, 20:29:17

Vorheriges Thema - Nächstes Thema

Burny4600

Hat schon jemand das CAN-Modul MCP2515 in FHEM eingebunden bzw. gibt es dazu eine Anleitung?

Die Grundkonfiguration ist abgeschlossen und das Modul ersichtlich unter ifconfig.
MfG 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

juergs

Ich habe auch noch ein paar Module hier herumliegen.

Könntest Du Dein Aufbau mal schildern?

Grüße,
Jürgen

Burny4600

Die Verdrahtung des MCP2515 Moduls

GPIO               MCP2515 CAN
HEADR   SIGNAL     MODULE
PIN      NAME  --- SIGNAL
#01       3,3V --- VCC
#02         5V --- Extra (Verbindung zu Vcc TJA1050 wird nach dem Test auf Versorgung vom CAN-Bus umgestellt)
#06        GND --- GND (Verbindung zu GND TJA1050 wird nach dem Test auf Versorgung vom CAN-Bus umgestellt)
#09        GND --- GND
#19       MOSI --- SI
#21       MISO --- SO
#23       SCLK --- SCK/CLK
#24   SPI0.CE0 --- CS
#22     GPIO25 --- INT

Meine Configuration sieht so aus.
Raspberry aktualisieren
sudo apt-get update &&
sudo apt-get upgrade

Überprüfen der Kernel Version
uname -a
Linux piv2 4.1.19-v7+ #853 SMP Wed Mar 9 18:09:16 GMT 2016 armv7l GNU/Linux

Für das Modul ist es notwendig spi zu aktivieren
sudo raspi-config

Kontrolle des Vorhandenseins des aktiven SPI Eintrages
sudo nano /boot/config.txt
### MCP 2515 CAN-Modul
dtparam=spi=on

Blacklist editieren: sudo nano /etc/modprobe.d/raspi-blacklist.conf
# blacklist spi and i2c by default (many users don't need them)

# blacklist spi-bcm2708
# blacklist i2c-bcm2708
# blacklist mcp251x


Rechte vergeben.
sudo chmod -R a+w /sbin/ip

### Elfatherm E6
sudo /sbin/ip link set can0 up type can bitrate 20000

Damit das CAN Modul bei jedem Neustart automatisch geladen wird ist folgender Eintrag in der Datei rc.local notwendig.
sudo nano /etc/rc.local
Eintrag vor dem exit einfügen.
### MCP2515 Modul für Elfatherm E6
/sbin/ip link set can0 up type can bitrate 20000

Adapter Einrichtung für 8MHz und INT auf GPIO 25
sudo nano /boot/config.txt
### MCP 2515 CAN-Modul
dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25
dtoverlay=spi-bcm2835-overlay

sudo apt-get install python3-dbus
sudo apt-get install git
cd
git clone https://github.com/linux-can/can-utils.git
cd  can-utils/
./configure
make
sudo apt-get install can-utils
sudo shutdown -r now
MfG 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

juergs

Hallo Chris,
danke für die Infos.  :) :)
Vielleicht bekomme ich das schnell mal aufgebaut...

Grüße,
Jürgen

juergs

#4
Hallo Chris,

hast Du konkrete Vorstellungendavon,  was Du mit dem CAN-Bus steuern oder erfassen willst?
Automotive?

Ein CAN-Packet ist erst mal nichts anderes, als eine nummerierte Hülse für 8 Bytes ....
Wie diese 8 Bytes verwendet werden regeln ja verschiedene Protokolle, jeder kocht da ja sein eigenes Süppchen.
Eine SPI-Anbindung ist deshalb ja auch nur die halbe Miete, die übergelagerten Schichten um das Protokoll
aufzubauen müssen ja in Software "gegossen" werden...

Hast Du da schon was Fertiges?
Beispiel 
https://www.mikrocontroller.net/articles/CAN_als_Hausbus

Grüße,
Jürgen

adam-nrw

Hallo Zusammen,

ich interessiere mich ebenfalls sehr für die Möglichkeit CAN in FHEM einzubinden. Ich würde gern die Informationen von einer Türsteuerung abgreifen un ebenfalls über den CAN Steuerbefehle aussenden. Die Steuerung hat eine CAN Schnittstelle. Muss dafür erst ein Modul entwickelt werden? Und wie sieht es mit dem CAN in Fhem aus?
Leider muss ich zugeben das ich bislang nur die Idee und nicht mehr hab.

Besten Dank!

Adam

juergs

#6
Über eine bestehende Intergation in FHEM kann ich leider nicht beitragen.

Ist eine Frage der Implementierung:
SW-Implementierung auf dem Pi -> FHEM oder z.B. eine Art CAN-Gateway (wie z.B. der CUL) mittels separater Anbindung per yC) mit seriellen Schnittstelle.
Darüber hinaus noch die Schichten + Protokolle, denn CAN ist nicht gleich CAN.

Wäre schön wenn es was gäbe, befürchte aber wenn, wäre es proprietär auf ein spezifisches Protokoll/Anwendungsfall zugeschnitten.
Das von 0 an aus dem Boden zu hieven, wäre wohl eine Mammutaufgabe ...

Grüße,
Jürgen

Burny4600

Ich habe vor das CAN-Modul für die Heizung zu verwenden.
Vorhanden ist ein Krom-Schröder Heizungsregler mit zwei Heizkreisen und zwei Bedienteilen, wobei nur ein Bedienteil den CAN-Bus verwendet.
An dem Bedienteil möchte ich das CAN-Modul andocken um den aktuellen Status des Systems abzugreifen, bzw. gewisse Änderungen via CAN-BUS zum Regler zu übertragen.
ZB Freigabe Heizung usw.
Bei diesem Protokoll, dass dieser Heizungsregler verwendet, handelt es sich um ein Elfatherm E6 Model.
MfG 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

juergs

#8
fertiges CAN-Modul, bzw. als günstiger Bausatz:
http://www.fischl.de/usbtin/  mit mcp2515.c - Source
Source ist für PIC, sollte aber leicht auf Atmel/ARM umbaubar sein ...

Es kamen ja auch schon Andere auf den Gedanken:
http://www.haustechnikdialog.de/Forum/t/169910/ComfortSoft-mit-CAN-BUS-Anbindung-Raspberry-Pi-verwenden

FHEM/tiCAN
https://drive.google.com/file/d/0B1UL59HBifIPdjIzVHpseHBXQlU/view

Beispiel - Projekt:
http://juerg5524.ch/list_data.php

Aus dem KNX-Umfeld:
https://knx-user-forum.de/forum/%C3%B6ffentlicher-bereich/knx-eib-forum/12686-anbindung-canbus-an-knx

Ich gehe mal davon aus, dass die verwendeten Protokolle nicht offen verfügbar sind?
D.h. man müsste erst mal den Bus sniffen und ......
http://messpunkt.org/blog/

Jetzt wo man das Thema kennt und SuFu anwendet  ;D:
https://forum.fhem.de/index.php/topic,42248.msg570772.html#msg570772
https://forum.fhem.de/index.php/topic,33273.msg256408.html#msg256408

@Burny4600: Du warst dort auch schon aktiv?

Burny4600

Ja das kann schon sein.
Hatte jetzt längere Zeit die CANBUS Angelegenheit liegen lassen und muss mir alles wieder zusammensuchen da ich meine Notizen irtümlich warscheinlich gelöscht hatte.
MfG 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

juergs

#10
Hi Burny4600,
kein Problem ...  ;)
Im Moment fehlt mir noch ein passender CAN-Knoten zum experimentieren ...


Monitor
Tutorial & CANLib
Open Source CAN bus Analyser and Simulation

Jürgen

sweetie-pie

#11
Hallo,

gab es hierzu jemals neue Erkenntnisse?

Ich habe möchte auch gerne Daten von einem can0-Interface auf einem RaspberryPi in eine fhem-Instanz bekommen.
Alle meine Suchen und Experimente waren nicht von Erfolg gekrönt, wobei ich auch zugeben muss, dass ich kein Perl-Profi bin.

Nach meinen Erkenntnissen kann Perl nicht das CAN-Socket ansprechen.
Unter Python habe ich da bereits einige hilfreiche Tools und Debugprogramme gebaut.

Meine Gedanken gehen jetzt zu einer Art Wrapper-Skipt und Umweg über SOCAT und ein TTY-Interface.
Hab das mal testweise probiert, indem ich den Output von CANDUMP (aus canutils) in ein TTY-Device schiebe.
Dort könnte ich es dann mit fhem wieder abholen.
Senden könnte man über einen Wrapper von CANSEND machen.

Fühlt sich aber irgendwie an, wie durch die Brust ins Auge...

Gruß
 sweetie-pie