Forum: Haus & Smart Home OpenHAB mit Raspberry PI / CAN


von Christian S. (vivus)


Angehängte Dateien:

Lesenswert?

Hallo,

ich will mir mal OpenHAB angucken.

Dies würde ich gerne mit einem Raspberry PI und der Schaltung im Anhang 
tun. (Den PCA82... ersetze ich durch einen MCP2551). Das sollte ja 
soweit klappen.

Nun meine Frage.

Wie bekomme ich die Daten am besten in OpenHAB? Ich habe mir das Serial 
Binding angeguckt. Gibt es darüber hinaus andere Wege, die vielleicht 
sinnvoller oder einfacher sind die Daten in OpenHAB zu bekommen?

Gruß

von Christian S. (vivus)


Lesenswert?

Niemand hat eine Idee? Frage falsch formuliert? Woran liegts?

von Stefan (Gast)


Lesenswert?

Hi,

ich verwende zwar keinen CAN sondern einen at86rf231 über SPI am PI, 
aber ist ja grundsätzlich das selbe Problem. Habe mir ein kleines C 
Programm auf dem PI gebaut das den SPI ansteuert und die Daten per MQTT 
an OPENHAB weitergibt.

Gruß
Stefan

von Tilo R. (joey5337) Benutzerseite


Lesenswert?

Hallo,

ich weiß, das passt nicht direkt zu deiner Frage, aber bei deiner 
Schaltung bin ich stutzig geworden.

Reichen denn die 3,3V für den MCP2551?

Ich habe mir das Datenblatt angeschaut aber vergeblich nach konkreten 
Vorschlägen für Vdd gesucht (außer Absolute Maximum Rating 7.0V).

Irgendwie habe ich in Erinnerung, dass es bei einfachen Treibern mit nur 
3,3V Probleme geben kann.

Kannst du da etwa dazu sagen?

Grüße, Tilo

von Tilo R. (joey5337) Benutzerseite


Lesenswert?

Ich kann meine Frage jetzt selbst beantworten. Falls jemand später mal 
über diesen Thread stolpert und die selbe Frage hat:

3.3V und 5.0V-CAN-Treiber am selben Bus sind kein Problem.

Wers genau wissen möchte: z.B. 
http://www.ti.com/lit/an/slla337/slla337.pdf

von Dario B. (abcd)


Lesenswert?

muss es wirklich can sein? ethernet leistet auch gute dienste.....

von Gerd B. (bertr2d2) Benutzerseite


Lesenswert?

Anstatt eines MCP2551 würde ich den MCP2562 verwenden.

RPi und CAN (mit MCP2515) sind aber keine sehr gute Kombination.
Das Zusammenspiel zwischen GPIO-IRQ und SPI/CAN hat zum Teil
hohe Latenzen und das führt zu Paketverlusten bzw. Vertauschungen
der Pakete, wenn die CAN-Frames in schneller Folge kommen.

Für SocketCAN und OpenHAB gibt es einige Treffer bei Google.
Das dürfte relativ einfach sein.

Ich kann die Faszination rund um den RPi verstehen, aber für
Steuerungen (incl. CAN) ist der BeagleBone Black die wesentlich
bessere Wahl.

: Bearbeitet durch User
von Christian S. (vivus)


Lesenswert?

Stefan schrieb:
> Daten per MQTT an OPENHAB
Das werde ich mir auch mal angucken, Danke!

Dario B. schrieb:
> muss es wirklich can sein? ethernet leistet auch gute dienste.....
Ja muss CAN sein :)

Gerd B. schrieb:
> Anstatt eines MCP2551 würde ich den MCP2562 verwenden.
Kannst du das begründen?

Ich werde mal Tests machen mit einem MAX3050 / MCP2551 und MCP2562

Gerd B. schrieb:
> Das Zusammenspiel zwischen GPIO-IRQ und SPI/CAN hat zum Teil
> hohe Latenzen und das führt zu Paketverlusten bzw. Vertauschungen
> der Pakete, wenn die CAN-Frames in schneller Folge kommen.
Hast du hier Erfahrungen gemacht? Was heißt bei dir schnell?

Gerd B. schrieb:
> Für SocketCAN und OpenHAB gibt es einige Treffer bei Google.
Danke dir, werde ich mir angucken. Hab inzwischen auch jemanden 
gefunden, der was für openHAB geschrieben hat und zwar CANopen Binding

Gerd B. schrieb:
> Ich kann die Faszination rund um den RPi verstehen, aber für
> Steuerungen (incl. CAN) ist der BeagleBone Black die wesentlich
> bessere Wahl.
Habe noch einen RPi der ersten Stunde und wollte die Möglichkeit mit dem 
MCP2551 / 2515 mal testen. Die Idee, den BeagleBone Black zu verwenden 
ist aber, sollte ich noch ein wenig weite mit CAN / OpenHAB arbeiten, 
sehr gut. Danke dir für den Tipp!

: Bearbeitet durch User
von Gerd B. (bertr2d2) Benutzerseite


Lesenswert?

Christian S. schrieb:
> Gerd B. schrieb:
>> Anstatt eines MCP2551 würde ich den MCP2562 verwenden.
> Kannst du das begründen?

Der MCP2562 kann mit zwei Spannungen arbeiten: Vio zum MCP2515
mit 3V3 und Vdd 5V CAN-Bus. Das entspricht der CAN-Spezifikation.
Mit einem MCP2551 (5V) brauchst Du einen Spannungsteiler
zum MCP2515.

>
> Ich werde mal Tests machen mit einem MAX3050 / MCP2551 und MCP2562
>
> Gerd B. schrieb:
>> Das Zusammenspiel zwischen GPIO-IRQ und SPI/CAN hat zum Teil
>> hohe Latenzen und das führt zu Paketverlusten bzw. Vertauschungen
>> der Pakete, wenn die CAN-Frames in schneller Folge kommen.
> Hast du hier Erfahrungen gemacht? Was heißt bei dir schnell?

Ja, reichlich. Siehe:
https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=7027
https://www.raspberrypi.org/forums/viewtopic.php?p=163821#p163821
Ich habe einige Stunden vor dem Osci verbracht, um die Schwachstellen
zu erkennen. Mit neueren Treibern bessert sich die Lage, aber
letztendlich immer noch nicht 100%.

Spasseshalber habe ich mal SPI Treiber (bitbanged) und MCP2515 Treiber
zusammen gemanscht. Das Ergebnis war deutlich besser als ich
erwartet habe (OpenWRT Router):
https://github.com/GBert/openwrt-misc/tree/master/mcp2515-banged

Die Leistung (Frame Rate ohne Verlust) ist besser obwohl der Router
eine deutlich schwächere CPU hat.

Der Knackpunkt sind die Latenzen / Anzahl der generierten IRQs.

>
> Gerd B. schrieb:
>> Für SocketCAN und OpenHAB gibt es einige Treffer bei Google.
> Danke dir, werde ich mir angucken. Hab inzwischen auch jemanden
> gefunden, der was für openHAB geschrieben hat und zwar CANopen Binding
>
> Gerd B. schrieb:
>> Ich kann die Faszination rund um den RPi verstehen, aber für
>> Steuerungen (incl. CAN) ist der BeagleBone Black die wesentlich
>> bessere Wahl.
> Habe noch einen RPi der ersten Stunde und wollte die Möglichkeit mit dem
> MCP2551 / 2515 mal testen. Die Idee, den BeagleBone Black zu verwenden
> ist aber, sollte ich noch ein wenig weite mit CAN / OpenHAB arbeiten,
> sehr gut. Danke dir für den Tipp!

Ich verwende den BBB um die Performance anderer CAN-Adapter zu testen.
Der BBB kann CAN-Pakete sehr schnell verarbeiten bzw. generieren -
der BBB ist meine Referenz an der sich andere messen müssen.

Gruß

Gerd

von Christian S. (vivus)


Lesenswert?

Danke für deine Erfahrungen. Werden mir mal einen BBB besorgen. Du weißt 
nicht zufällig, ob da bald was neues kommt oder? Die RevC ist ja schon 
älter als ein Jahr und die ganzen vorgänger bis A5A sind ja ziemlich 
identisch. Dh. so langsam müsste da doch was kommen. :)

Hast du zufällig mal den MAX3050 oder MAX13050 (bzw. den MAX13054 mit 
3.3 V Supply) getestet?

von Gerd B. (bertr2d2) Benutzerseite


Lesenswert?

Hallo Christian,

Christian S. schrieb:
> Danke für deine Erfahrungen. Werden mir mal einen BBB besorgen. Du weißt
> nicht zufällig, ob da bald was neues kommt oder? Die RevC ist ja schon
> älter als ein Jahr und die ganzen vorgänger bis A5A sind ja ziemlich
> identisch. Dh. so langsam müsste da doch was kommen. :)

Ne, weiss nicht ob es bald eine neue Revision gibt. Andererseits ist das
doch ein gutes Zeichen: Keine nenneswerte (neue) Probleme mehr ...

>
> Hast du zufällig mal den MAX3050 oder MAX13050 (bzw. den MAX13054 mit
> 3.3 V Supply) getestet?

Tut mir leid, ich verwende nur Microchip Tranceiver bzw. TI ISO1050
(galvanische Trennung), weil ich die kenne und bisher keine Probleme
damit hatte. Bin mir aber sicher, das es genügend andere Tranceiver
gibt, die mindestens genauso gut oder besser sind.

Gruß

Gerd

von Christian S. (vivus)


Lesenswert?

Gerd B. schrieb:
> Christian S. schrieb:
>> Danke für deine Erfahrungen. Werden mir mal einen BBB besorgen. Du weißt
>> nicht zufällig, ob da bald was neues kommt oder? Die RevC ist ja schon
>> älter als ein Jahr und die ganzen vorgänger bis A5A sind ja ziemlich
>> identisch. Dh. so langsam müsste da doch was kommen. :)
>
> Ne, weiss nicht ob es bald eine neue Revision gibt. Andererseits ist das
> doch ein gutes Zeichen: Keine nenneswerte (neue) Probleme mehr ...

Der Vorteil wäre, dass alle den neuen kaufen und ihren alten verkaufen 
:) - der würde mir nämlich reichen ;).

von Christian S. (vivus)


Lesenswert?

Hast du dich schon mal mit CANopen beschäftigt? Ich würde es gerne 
nutzen, es scheint aber nicht ganz so viele Informationen zu diesem 
Thema zu geben. Gerade wenn man das ganze auf einem AVR/STM MCU nutzen 
möchte.

von Gerd B. (bertr2d2) Benutzerseite


Lesenswert?

Hallo Christian,

CANopen habe ich noch nicht verwendet. Über Google und auch hier in
den Foren gibt es einige Treffer. Auf github gibt es sogar eine Library.

Gruß

Gerd

von jgeisler0303 (Gast)


Lesenswert?

Hi,
ich bin der Autor des openHAB CANopen Bindings und würde mich sehr über 
Tester freuen. Im Moment bin ich dabei, den Code komplett neu zu 
strukturieren, um weitere Erweiterungen leichter integrieren zu können.

Bei mir läuft aktuell ein CANopen Gerät am Pi, das ich alle 30s per SYNC 
polle. Mit dem neuen Treiber mcp2515, der hier 
(http://ifinterface.com/page/page3.php?langid=1) enthalten ist, läuft 
das ganz gut. In Zukunft werde ich aber wohl auf den Banana Pi 
umsteigen, der wie der BBB einen CAN Bus Interface direkt an Board hat. 
Leider läuft der das Interface im Banana Pi aktuell nur mit CAN4Linux 
statt mit SocketCAN (wie der MCP2515), sodass ich erst noch einen neuen 
Treiber-Adapter schreiben muss.

In meinem https://github.com/jgeisler0303/AGCON Projekt habe ich auch 
eine Platine, die den RPi mit MCP2515 + MCP2551 ausstattet. Und, falls 
es interessiert, im Projekt https://github.com/jgeisler0303/CANFestivino 
arbeite ich auch gerade an einem CANopen Stack für atmega328.

von Olaf D. (olaf_snowman)


Lesenswert?

Hallo jgeisler0303,

ich habe interesse die CANOpen Bindings zu testen. Ich verwende openHAB 
auf einem RasPi mit MCP2515 als CAN0 und würde gerne einen WAGO 750-347 
CANKoppler damit bedienen. Ich habe mir die entsprechende README zu den 
CANOpen Bindings angesehen, werde aber noch nicht so recht schlau daraus 
;-)

Ich habe openHAB per apt aus der folgenden Quelle installiert:

deb http://dl.bintray.com/openhab/apt-repo stable main

Habe ich die README richtig verstanden, muss ich openHAB inkl. der 
CANOpen Bindings selber kompilieren/bauen?

Viele Grüße

Olaf

jgeisler0303 schrieb:
> Hi,
> ich bin der Autor des openHAB CANopen Bindings und würde mich sehr über
> Tester freuen. Im Moment bin ich dabei, den Code komplett neu zu
> strukturieren, um weitere Erweiterungen leichter integrieren zu können.
>
> Bei mir läuft aktuell ein CANopen Gerät am Pi, das ich alle 30s per SYNC
> polle. Mit dem neuen Treiber mcp2515, der hier
> (http://ifinterface.com/page/page3.php?langid=1) enthalten ist, läuft
> das ganz gut. In Zukunft werde ich aber wohl auf den Banana Pi
> umsteigen, der wie der BBB einen CAN Bus Interface direkt an Board hat.
> Leider läuft der das Interface im Banana Pi aktuell nur mit CAN4Linux
> statt mit SocketCAN (wie der MCP2515), sodass ich erst noch einen neuen
> Treiber-Adapter schreiben muss.
>
> In meinem https://github.com/jgeisler0303/AGCON Projekt habe ich auch
> eine Platine, die den RPi mit MCP2515 + MCP2551 ausstattet. Und, falls
> es interessiert, im Projekt https://github.com/jgeisler0303/CANFestivino
> arbeite ich auch gerade an einem CANopen Stack für atmega328.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.