Verschiedenes > MySensors

Auszug aus Integration...: RS485-Grundlagen

(1/7) > >>

Beta-User:
So, nachdem jetzt meine RS485-Bausteinchen gekommen sind, hier mal ein paar erste Erfahrungen damit (nur GW+Motion-Sensor):

- Wiring ist einfach, man muß eigentlich nur wissen, dass DE und RE zu verbinden sind und zusammen auf Arduino-Pin-D2 gehen, RO nach Arduino-D8 und DI nach Arduino-D9, VCC, GND.

- Im Sketch wird einfach der Kommunikationslayer getauscht, wie im Beispiel (Motionsensor).

Problemchen:
- Die Node-ID wird nicht automatisch vergeben, muß man im Sketch manuell definieren
- Mehrere GW scheinen die saubere Anlage der Readings zu verhindern (würde die Ursache aber eher in einem der pm-Module vermuten, das wäre noch zu prüfen).
- Man braucht ein seperates GW, ein "Kombi-GW" z.B. für NRF und RS485 ist nicht vorgesehen.

Randbemerkungen:
Habe für das GW testweise die aktuelle Arduino-Board-Def. (1.6.17) genommen. Damit scheint das Reboot-Problem gelöst zu sein (habe aber keine intensiven Analysen gemacht, China-CH340).   

wthiess:
Hallo Beta-User!

Habe nun auch meine RS485 Adapter bekommen. Ich möchte fürs erste nur mal einen Pin am Ardunio schalten. Ich habe den Ardunio folgene Software aufgespielt
https://github.com/smarmengol/Modbus-Master-Slave-for-Arduino

In Fhem verwende ich da Modul ModbusAttr. Mit diesem Modul betreibe ich bereits erfolgreich mehrere Modbusgeräte.
Allerdings bekomme ich mit dieser Konfiguration nur Timeouts. Auch unter Windows mit einem Modbusscanner den ich immer zum testen verwende bekomme ich nur Timeouts.

Kannst du mir hier bitte weiterhelfen. Eventuell ist mein Konzept total falsch.
Als Anhang die Schaltung nach der ich gearbeitet habe.


lg
Wolfgang


--- Code: ---#Modbus
define ArduinoModbus Modbus /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@9600,8,N,1
attr ArduinoModbus room Modbus

#Relais1
define R1 ModbusAttr 1 2
attr R1 IODev ArduinoModbus
attr R1 dev-h-combine 5
attr R1 dev-h-defPoll 1
attr R1 obj-h10-hint 0,1
attr R1 obj-h10-reading Relais1
attr R1 obj-h10-set 1
attr R1 room Modbus
attr R1 stateFormat Relais1
attr R1 webCmd Relais1

# Für Modbusscanner
#define WMZ ModbusAttr 1 2
#attr WMZ IODev ArduinoModbus
#attr WMZ room Modbus
#attr WMZ enableControlSet 1

--- Ende Code ---

Beta-User:
@wthiess:
M.E. bist Du mit der Anfrage bzw. diesem Sketch hier in diesem Thread falsch...
Wenn Du das anders als mit dem MySensors-Protokoll gelöst haben willst, solltest Du einen neuen Thread aufmachen.

Vorab wäre meine Empfehlung aber, wirklich MySensors zu nutzen, dann brauchst Du Dich um die Einbindung in FHEM nicht selbst zu kümmern, das geht dann mehr oder weniger automatisch ;).

Hier wäre das Vorgehen also, einen Arduino als GW zu nutzen (Skecht wie in MySensors enthalten) und dann z.B. den Relay-Sketch von NRF auf RS485 umzuarbeiten (sind nur die paar Zeilen Code im Header+Vergabe einer NodeID). Da helfe ich gerne ;). Den USB-Adapter im Bild rechts brauchst Du dazu nicht.

Bei Nutzung dieses Adapters wäre Homebrew Wired evtl. eine Variante, wie das einfach in FHEM eingebunden werden kann.

Gruß,
Beta-User

wthiess:
Hallo Beta-User

Ich hab noch keine Lösung. Sind nur Versuche.
Ich habe schon einen Modbus im Haus mit so einem Adapter. Diesen möchte ich gerne erweitern. Wie sollte es ohne Adapter gehen? Verstehe ich nicht.

Lg
Wolfgang

Beta-User:
Erweitern stelle ich mir schwierig vor, weil das nur geht, wenn "alle Beteiligten dieselbe Sprache sprechen". Das ist m.E. nicht der Fall, ich versuch' mal eine Erklärung:

1. RS485 ist nur eine elektrische Beschreibung der Kommunikation zwischen einzelnen Geräten und sagt weder etwas über die Kommunikationsgeschwindigeit aus noch darüber, wie die erzeugten Binärdaten zu verstehen sind.
2. Es muß also für die Kommunikation auf dem Bus noch eine logische Ebene dazukommen, ein "Protokoll". Du mußt also entweder allen beiteiligten Arduinos ModBus (so das überhaupt ein Protokoll ist) beibringen oder ein zweites RS485-Netz aufbauen.
3. Dann müssen die übertragenen Daten noch irgendwie zu FHEM und dort ausgewertet werden können. Bei MySensors macht das das GW, das die Daten vom Bus liest, vorverarbeitet und dann in einer bestimmten Form an das Perl-Modul (00_MYSENSORS.pm) übergibt zur Weiterverabeitung. Dieses Perl-Modul legt dann die entsprechenden Devices mit Hilfe des Moduls 10_MYSENSORS_DEVICE.pm an. Schau Dir dazu vielleicht auch nochmal die "Systemübersicht" an.

Du hast also entweder die Option, die ganze Auswerterei selber hinzufrickeln, oder Du nimmst was bestehendes. Das dürfte deutlich einfacher sein ::).

Nach wie vor würde ich daher empfehlen, dass Du das einfach mal austestest, dann wird das vielleicht verständlicher. Basisinfos zu MySensors und FHEM habe ich im Wiki als Starterguide versucht darzustellen, ist aber noch nicht auf RS485 und 2.1.1 abgestimmt.

Wie gesagt, wenn Du Hilfe beim Erstellen/Ändern der MySensors-Sketche benötigst, soll das kein Hindernis sein ;). Ich habe gestern mal mit dem Motion-Sensor-Beispiel für RS 485 angefangen, da mußte ich nur die Node-ID zusätzlich festlegen:

--- Code: ---#define MY_NODE_ID 50
--- Ende Code ---

Am besten wäre es, Du würdest auch einen Motion-Sensor aufbauen (ich habe dazu eine Lichtschranke benutzt, es ginge auch ein Taster...) und dann mal im Seriellen Monitor der IDE bei der Sensor-Node beobachten, was passiert.
Gelegentiche Browser-Refreshs nicht vergessen :).

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln