FHEM Forum

Verschiedenes => Bastelecke => Thema gestartet von: stonev am 09 November 2015, 23:43:15

Titel: Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: stonev am 09 November 2015, 23:43:15
Hallo,

mir qualmt langsam der Kopf und es ist an der Zeit, dass ein Anfänger noch mal ein paar Anstöße braucht :-\

Ein Raspberry steht bereit. FHEM ist bereits installiert. An das GPIO soll nun ein Max485 anschlossen werden um anschließend eine RS485 (Protokoll: HMW) Verbindung zum einem Arduino (Ebenfalls mit Max485) aufzubauen.

Folgende Fragen:

1. Hardwareaufbau:
Sowohl der Arduino als auch der RPI sollen einen Max485 wie auf der angehängten Grafik bekommen und darüber kommunizieren können. Also nur den Max485 und sonst (abgesehen von Busabschluss) nix weiter.
Ich habe jetzt ein paar mal im Netz gelesen, dass Leute zwischen RPI und Max485 noch einen Pegelwandler schalten. Das verunsichert mich etwas. Was ist richtig?

2. Software:
Die Geräte müssen ja mitbekommen, dass da nun ein MAX485 an ihrer seriellen schnittstelle hängt. Da muss ich doch beim RPI bestimmt ein Paket installieren und beim Arduino ne Library einbinden?
Was genau muss ich da machen? Gibt es da vlt. irgendo eine Anleitung?

3. Protokoll:
Im HomeMatic Berich wird ein Homematic Wired Protokoll entlickelt. Die Lib für den Arduino habe ich gefunden, aber was muss ich alles in den Sketch schreiben, das es funktioniert. Der Arduino muss ja eine Adresse bekommen. Gleiches dürfte auch für den RPI gelten, wobei hier das Protokoll schon in FHEM implenentiert sein dürfte. Denke da brauch nicht nichts mehr machen, oder?

Es wäre toll, wenn mir jemand mal genau sagen könnte, was zu tun ist. Wenn es Links auf hilfreiche Quellen gibt, wäre ich sehr dankbar.
Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: PeMue am 10 November 2015, 17:19:00
Zitat von: stonev am 09 November 2015, 23:43:15
1. Hardwareaufbau:
Sowohl der Arduino als auch der RPI sollen einen Max485 wie auf der angehängten Grafik bekommen und darüber kommunizieren können. Also nur den Max485 und sonst (abgesehen von Busabschluss) nix weiter.
Ich habe jetzt ein paar mal im Netz gelesen, dass Leute zwischen RPI und Max485 noch einen Pegelwandler schalten. Das verunsichert mich etwas. Was ist richtig?
Hallo,

ich habe jetzt nicht geprüft, an welchen Pins der MAX385 hängt, aber der Raspberry Pi hat 3,3 V Pegel an den Ausgängen. Daher würde ich komplett auf 3,3 V (auf der Raspberry Pi Seite) umstellen und einen MAX3485 (3,3 V) nehmen. Im Proinzip machst Du über den RS485 Bus eine serielle Verbindung auf, d.h. Du solltest den MAX3485 an die seriellen Pins hängen (oder per GPIO Pin eine serielle Schnittstelle Senden bzw. Empfangen emulieren).

Zitat von: stonev am 09 November 2015, 23:43:15
2. Software:
Die Geräte müssen ja mitbekommen, dass da nun ein MAX485 an ihrer seriellen schnittstelle hängt. Da muss ich doch beim RPI bestimmt ein Paket installieren und beim Arduino ne Library einbinden?
Was genau muss ich da machen? Gibt es da vlt. irgendo eine Anleitung?
Stimmt, einfach mal nach serielle Schnittstelle Raspberry Pi freischalten hier im Forum bzw. auf Google suchen ...
Für Arduino kann ich nichts sagen.

Soweit mal, was ich weiß.

Gruß PeMue
Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: Thorsten Pferdekaemper am 10 November 2015, 17:38:24
Hi,
schau Dir mal den ganzen Kram zu Homematic Wired im Wiki an. Da steht eigentlich, wie es geht. Natürlich hängt da kein MAX485 direkt am RasPi.
Ich würde auch empfehlen, das ganze erst einmal mit einem Original HMW-Gerät zu machen, wenn Du Dich selbst als Anfänger bezeichnest.
Gruß,
   Thorsten
Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: stonev am 10 November 2015, 21:37:30
OK, aber viel braucht der MAX485 auch nicht. Ich war halt unsicher bzgl. 3,3V / 5V.
Ich werde bei nächster Gelegenheit eine 3,3 V Version mitbestellen. Bis dahin behelfe ich mit dem 5V Max und leg nen Spannungsteiler aus zwei Widerständen zwischen Max und RX am RPI.

Ich habe heute noch ganz viel im WIKI gelesen. Verstehe einiges, weiß aber manchmal noch nicht, wie es praktisch umgesetzt wird. Ich wollte hier auch keine fertigen Lösungen von euch, sondern nur Denkanstöße....  ::)

Nach Installtion und Verkabelung der Hardware würde ich nun wie folgt weitermachen:

attr global logfile -
attr global modpath .
attr global motd ...
attr global statefile ./log/fhem.save
attr global userattr devStateIcon icon webCmd
attr global verbose 3

define telnetPort telnet 7073 global
define autocreate autocreate

define WEB FHEMWEB 8093 global
attr WEB plotmode SVG
attr WEB plotsize 800,240

### HM485 Interface (WIZ108SR)
#
define HM485_LAN HM485_LAN localhost:2000
attr HM485_LAN HM485d_device /dev/ttyAMA0
attr HM485_LAN hmwId 00000001
attr HM485_LAN HM485d_bind 1

# on slow servers like fritzbox or raspberry pi it should necessarry to increase this value
attr HM485_LAN HM485d_startTimeout 2

attr HM485_LAN room HM485
attr HM485_LAN HM485d_logVerbose 4

# Test webCmd
attr HM485_LAN webCmd RAW 000085CD 98 00000001 780F00:discovery start
Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: Thorsten Pferdekaemper am 10 November 2015, 22:19:39
Hi,

wie man das mit einem "nackten" MAX485 oder so hinbekommt musst Du wahrscheinlich selbst ausprobieren. Ich mache das bisher erfolgreich damit: http://www.reichelt.de/USB-Konverter/DIGITUS-DA-70157/3//index.html?ARTICLE=122187 (http://www.reichelt.de/USB-Konverter/DIGITUS-DA-70157/3//index.html?ARTICLE=122187). Dafür könnte ich Dir auch eine fertige Konfiguration liefern.

Das Zeugs im git packt man einfach so wie es ist ins fhem-Verzeichnis, also normalerweise /opt/fhem. Du brauchst nicht nur das Unterverzeichnis FHEM, sondern auch www.

Das mit dem Daemon sollte automatisch passieren, wenn man nach der Anleitung hier vorgeht: http://www.fhemwiki.de/wiki/Serial/Netzwerk-RS485-Adapter (http://www.fhemwiki.de/wiki/Serial/Netzwerk-RS485-Adapter). Allerdings wie gesagt: Mit einem nackten MAX485 über irgendwelche GPIOs hat das wahrscheinlich noch niemand versucht.

Gruß,
   Thorsten
Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: stonev am 10 November 2015, 22:40:01
Dirk hat es scheinbar schon einmal gemacht:
http://forum.fhem.de/index.php/topic,12854.0.html

Dachte daher das wäre gängige Praxis und erprobt.
Ich will mir natürlich keine unnötigen Probleme einhandeln. Das könnte man dann irgendwann probieren, wenn die gesamte Konfiguration läuft.

Ich besorge mir dann den Digitus.

Zitat von: Thorsten Pferdekaemper am 10 November 2015, 22:19:39
Du brauchst nicht nur das Unterverzeichnis FHEM, sondern auch www.

Was meinst Du mit .www  ein weiteres Unterverzeichnis?


Zitat von: Thorsten Pferdekaemper am 10 November 2015, 22:19:39
Ich mache das bisher erfolgreich damit: http://www.reichelt.de/USB-Konverter/DIGITUS-DA-70157/3//index.html?ARTICLE=122187 (http://www.reichelt.de/USB-Konverter/DIGITUS-DA-70157/3//index.html?ARTICLE=122187). Dafür könnte ich Dir auch eine fertige Konfiguration liefern.


Das wäre natürlich super, dann würde ich mal sehen, wie so etwas fertig aussieht für mich ggf. anpassen und verstehen. Wäre sehr nett.

Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: Thorsten Pferdekaemper am 10 November 2015, 22:52:37
Zitat von: stonev am 10 November 2015, 22:40:01
Dirk hat es scheinbar schon einmal gemacht:
http://forum.fhem.de/index.php/topic,12854.0.html
Soweit ich weiß hat Dirk einen einen Lan-Adapter gebastelt. An dem RasPi-Teil war nie ein MAX485 dran. Jedenfalls ist das nicht die gängige Praxis.

Zitat
Was meinst Du mit .www  ein weiteres Unterverzeichnis?
Du musst alles von hier runterladen: https://github.com/kc-GitHub/FHEM-HM485 (https://github.com/kc-GitHub/FHEM-HM485). Am besten unter "Download ZIP". Dann hast Du zwei Verzeichnisse drin: FHEM und www. Beide müssen nach /opt/fhem.

Zitat
Das wäre natürlich super, dann würde ich mal sehen, wie so etwas fertig aussieht für mich ggf. anpassen und verstehen. Wäre sehr nett.
Also das Teil mit dem Digitus sieht so aus:

define hm485 HM485_LAN localhost:2000
attr hm485 HM485d_bind 1
attr hm485 HM485d_device /dev/ttyUSB0
attr hm485 HM485d_startTimeout 5
attr hm485 hmwId 00000001

Ich habe noch eins mit einem Lan-Adapter, das sieht so aus:

define hm485 HM485_LAN localhost:2000
attr hm485 HM485d_bind 1
attr hm485 HM485d_device 192.168.178.164:5000
attr hm485 HM485d_startTimeout 5
attr hm485 hmwId 00000001

Gruß,
   Thorsten

Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: Ralf9 am 10 November 2015, 22:57:55
Zitat von: stonev am 10 November 2015, 21:37:30
Um später auf die Schnittstelle zugreifen zu können muss sie z. B. als Device  (ttyAMA0?) eingebunden werden.
sofern man einen USB <-> RS-485 Adapter verwendet läuft das Plug&Play, aber mit dem MAX vie GPIO wohl nicht.

Ich verwende als RS-485 Transceiver den LTC1487 direkt an der seriellen Schnittstelle. Ich bin einen Schritt weiter gegangen und habe noch den ADuM1301 (Triple-Channel Digital Isolators) dazwischen geschaltet (siehe Anlage).
Ich dürfte der einzigste sein, der den RS-485 Transceiver direkt an der seriellen betreibt.
Das Problem dabei ist die Ansteuerung des DE (Driver Output Enable) Pins mit dem GPIO, das Timing ist hierbei sehr zeitkritisch.
Ich kann dies für Anfänger nicht empfehlen. Du wirst Dir damit unnötige Probleme  einhandeln.

Gruß Ralf
Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: stonev am 10 November 2015, 23:13:32
Zitat von: Thorsten Pferdekaemper am 10 November 2015, 22:52:37
Am besten unter "Download ZIP". Dann hast Du zwei Verzeichnisse drin: FHEM und www. Beide müssen nach /opt/fhem.

Ha, ha, runtergeladen hatte ich es schon. Hätte ich noch rein geschaut, hätte sich die Frage nicht gestellt. :-[

Zitat von: Thorsten Pferdekaemper am 10 November 2015, 22:52:37

define hm485 HM485_LAN localhost:2000
attr hm485 HM485d_bind 1
attr hm485 HM485d_device /dev/ttyUSB0
attr hm485 HM485d_startTimeout 5
attr hm485 hmwId 00000001

Gruß,
   Thorsten

Mille Gratie  :)

Solltest Du irgendwann auch noch ein Beispiel für das Einbinden der HMW Library im Setup vom Arduino haben...  :D


Zitat von: Ralf9 am 10 November 2015, 22:57:55
Ich kann dies für Anfänger nicht empfehlen. Du wirst Dir damit unnötige Probleme  einhandeln.

Gruß Ralf

Danke, es wird der Digitus.
Ich dachte ursprünglich nur mal. dass ein Anschluss am GPIO mechanisch stabiler wäre als der lange verschraubte USB Adater. Aber das rechtfertigt nicht, sich solche Probleme einzuhandeln.
Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: Thorsten Pferdekaemper am 10 November 2015, 23:31:03
Zitat von: stonev am 10 November 2015, 23:13:32Mille Gratie  :)
Du solltest ein bisschen an Deinem Italienisch arbeiten...

Zitat
Solltest Du irgendwann auch noch ein Beispiel für das Einbinden der HMW Library im Setup vom Arduino haben...  :D
Siehe Deinen anderen Thread.
Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: stonev am 10 November 2015, 23:38:12
Zitat von: Thorsten Pferdekaemper am 10 November 2015, 23:31:03
Du solltest ein bisschen an Deinem Italienisch arbeiten...

;D Und das nach drei Italienurlauben ...  Grazie  ;D
Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: stonev am 11 November 2015, 22:42:44
Zitat von: Thorsten Pferdekaemper am 10 November 2015, 22:52:37
Am besten unter "Download ZIP". Dann hast Du zwei Verzeichnisse drin: FHEM und www. Beide müssen nach /opt/fhem.

Hab das gerade mit WinSCP erledigt. War aber ein wenig müselig, weil man die Dateien aus dem Brunch ja auch noch auf die jeweiligen Unterordner von FHEm und www verteilen muss.
Kann man das nicht irgendwie einfacher direkt aus dem Git haben? Z. B. mit Git Merge oder sowas? Kenne mich mit GIT nicht aus, aber wenn das mit einer Zeile in Putty zu erledigen wäre, wär´s eleganter i Hinblick auf ein Tutorial.
Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: Thorsten Pferdekaemper am 11 November 2015, 22:47:48
Hi,
ich ziehe einfach das ganze Verzeichnis ins WinSCP. Dafür muss ich noch nicht einmal das .zip auspacken.
Vorher muss man ggf. chmod bemühen.
Gruß,
   Thorsten
Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: stonev am 11 November 2015, 23:10:00
Zitat von: Thorsten Pferdekaemper am 10 November 2015, 22:52:37

Also das Teil mit dem Digitus sieht so aus:

define hm485 HM485_LAN localhost:2000
attr hm485 HM485d_bind 1
attr hm485 HM485d_device /dev/ttyUSB0
attr hm485 HM485d_startTimeout 5
attr hm485 hmwId 00000001



Wenn ich die FHEM.cfg speichern will wird folgende Fehlermeldung ausgegeben:
HM485_LAN: unknown attribute HM485d_device. Type 'attr HM485_LAN ?' for a detailed list.

Allerdings hängt auch der Digitus USB Adapter noch nicht dran. Der steckt noch in der Post...  Ich glaube aber nicht, dass es daran liegt, oder doch? Neu gestartet hatte ich den RPI schon.

Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: Thorsten Pferdekaemper am 12 November 2015, 09:54:58
Zitat von: stonev am 11 November 2015, 23:10:00
Wenn ich die FHEM.cfg speichern will wird folgende Fehlermeldung ausgegeben:
HM485_LAN: unknown attribute HM485d_device. Type 'attr HM485_LAN ?' for a detailed list.

Ich habe mir jetzt mal das Coding dazu angeschaut. Jetzt wundert mich, dass es bei mir funktioniert.
Hast Du mal versucht, nachdem die Fehlermeldung kommt FHEM nochmal sauber durchzustarten, also mit "shutdown restart"?
Ggf. ist das auch zweimal notwendig.
Kannst Du mir außerdem mal die Ausgabe eines "list hm485" schicken?
Gruß,
  Thorsten
Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: stonev am 12 November 2015, 14:10:57
Kann frühestens Morgen Abend machen, dann aber gerne...

Hatte gestern nachher auch mal versucht, den hm485d.pm-Daemon manuell zu starten mit
/opt/fhem/FHEM/lib/HM485/HM485d/HM485d.pl -localPort 2000 -device /dev/ttyUSB0 -verbose 4

Das hat aber auch nicht funktioniert. Die Datei liegt an angegebener Stelle, aber es gab eine Fehlermeldung, an die ich mich nicht mehr genau erinnere. War schon recht spät, deswegen hab ich danach alles ausgemacht.

Ich hatte mir überlegt, dass vlt. mit den Rechten etwas nicht stimmen könnte. Da wollte ich mal drüber schauen. Normalerweise melde ich mich mit WinSCP immer als root an. Das geht mit Jessie aber nicht mehr bzw. man muss noch etwas mehr machen - muss mal nachlesen.
Auf jeden Fall hab ich die Dateien dann als User "PI" kopiert. Die Rechte der einzelnen Dateien habe ich aber an die der schon vorhandenen Dateien angepasst (glaube 666 war´s).
Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: Thorsten Pferdekaemper am 12 November 2015, 14:46:54
Hi,
um mit WinSCP Dateien einfach rüberziehen zu können kann man einfach das /opt/fhem Verzeichnis auf "für jeden schreibbar" setzen, dann sollte das auch gehen.
Ansonsten muss HM485d.pl ausführbar sein. Also in etwa "chmod a+x HM485d.pl".
Das ist aber nicht das eigentliche Problem. Ich denke mal, dass FHEM gar nicht erst versucht hat, den Daemon automatisch zu starten. Bei mir klappt das aber...
Gruß,
   Thorsten
Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: Thorsten Pferdekaemper am 12 November 2015, 22:56:10
Hi,
ich habe das mit dem device-Attribut nochmal angeschaut. Wenn man das Device definiert, dann fehlt das Attribut tatsächlich erst einmal. Wenn dann HM485d_bind = 1 ist sollte nach einem Neustart (mit shutdown restart) das Device-Attribut vorhanden sein und man kann es setzen.
Blöderweise muss man dann nochmal durchstarten, damit der Daemon auch startet.
Ich muss mir das ganze nochmal scharf anschauen und es mal ordentlich programmieren. Jetzt ist aber man wieder spät...
Gruß,
   Thorsten
Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: stonev am 13 November 2015, 21:53:37
Die Rechte waren - wie  vermutet - nicht korrekt. Der Daemon läßt sich nun starten und wird auch beim Reboot automatisch gestartet. Läuft alles.

Ausgabe von list hm485:
Internals:
   DEF        localhost:2000
   DeviceName localhost:2000
   FD         16
   HM485d_CommandLine ./FHEM/lib/HM485/HM485d/HM485d.pl --serialNumber SGW0123456 --device /dev/ttyUSB0 --localPort 2000
   HM485d_PID   898
   HM485d_STATE started
   InterfaceType HMW-SOFT-GW
   NAME       hm485
   NR         21
   PARTIAL
   ProtokolVersion 01
   STATE      open
   SerialNumber SGW0123456
   TYPE       HM485_LAN
   Version    0.2.2
   hmwId      00000001
   msgCounter 2
   Keepalive:
     ok         1
     retry      0
Attributes:
   HM485d_bind 1
   HM485d_device /dev/ttyUSB0
   HM485d_startTimeout 5
   hmwId      00000001


Sorry, wenn ich Dir unnötig arbeit gemacht habe  :-[
Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: Thorsten Pferdekaemper am 13 November 2015, 22:00:38
Zitat von: stonev am 13 November 2015, 21:53:37
Die Rechte waren - wie  vermutet - nicht korrekt. Der Daemon läßt sich nun starten und wird auch beim Reboot automatisch gestartet. Läuft alles.
Freut mich.

Zitat
Sorry, wenn ich Dir unnötig arbeit gemacht habe  :-[
Kein Problem. Das hat mir gezeigt, dass da ein paar Sachen nicht ganz so laufen, wie ich das gerne hätte. Ich bin gerade dabei, das mit den fehlenden Attributen etc. zu überarbeiten.
Gruß,
   Thorsten
Titel: Antw:Raspberry und Arduino per RS485 verbinden? Protokoll HomeMatic Wired...
Beitrag von: Thorsten Pferdekaemper am 13 November 2015, 23:58:31
Hi,
mit der neusten dev-Version sollte die Durchstarterei beim Anlegen des HM485_LAN nicht mehr nötig sein. Details gibt es hier: http://forum.fhem.de/index.php/topic,10607.msg358973.html#msg358973 (http://forum.fhem.de/index.php/topic,10607.msg358973.html#msg358973).
Gruß,
   Thorsten