Auszug aus Integration...: RS485-Grundlagen

Begonnen von Beta-User, 09 Februar 2017, 22:03:56

Vorheriges Thema - Nächstes Thema

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).   
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

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

#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
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

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
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

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
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

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:
#define MY_NODE_ID 50

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 :).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

wthiess

Hallo Beta-USER

wenn nicht mit dem Adapter. Wo schliesse ich die Drähte an am Raspberry?

Lg
Wolfgang
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

Beta-User

Gar nicht am PI, sondern am GW, und das dann per USB am PI ;)...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

wthiess

Jetz kenn ich mich nicht mehr aus. Ich hab einen Raspberry und einen Arduino. Bitte in einem Satz und  ohne Akürzungen.  Raspberry > USB> ............ Rs485 > Arduino.

Lg
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

Beta-User

Tpischerweise: Raspberrry <-> USB-Kabel <-> Arduino <-> RS485-Modul <-(2-Adriges Kabel)-> RS485-Modul <-> Arduino (z.B. Motion Sensor)

Btw: wir könnten mittelfristig auch Deinen Kamin-Arduino zum RS485-GW umfunktionieren, wir müßten nur die PIN-Belegung für RS485 etwas anpassen und natürlich die Eingangsdefinitionen an dem Sketch von neulich etwas ändern 8). Ein GW kann auch eine Sensor-Node sein (siehe Wiki).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

wthiess

Das heist es müssen immer 2 arduinos sein. Kamn einer am raspi auch mehrere slaves versorgen. Oder beötigt jeder sein eigenes gegenüber?
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

Beta-User

#10
Es muß nur ein GW geben, das kann dann viele (MySensors generell: 254, RS485 evtl. weniger) andere Nodes (=Arduino+RS485-Modul) versorgen...

Am besten mal die MySensors-Seite durchsehen, da ist vieles anschaulich dargestellt.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Beta-User

So, zu guter Letzt für heute noch neues von den RS485-Tests:

- Die Vergabe der Node-IDs muß manuell erfolgen
- Jedenfalls zwei serielle GW's parallel sind kein Problem (hier: FTDI's per by-id adressiert), die IO's werden sauber zugeordnet
- Die aktuelle Board-Def. scheint nach wie vor keine Reboots auszulösen

Mein Test-"Netz" bestand aus GW+ 2 Nodes, dazwischen jeweils 10-20m Kabel.

Planung jetzt: die RS485-Variante produktiv in Betrieb nehmen und nach und nach die eine oder andere Node umstellen bzw. dann auch im Keller zentral mit 12V versorgen.

Wiki-Starter-Guide-update folgt, sobald ich etwas gefestigte Erfahrung habe.

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Ranseyer

Mal ne Dumme Frage. Der Testaufbau zu RS485 läuft bei mir bis jetzt recht gut. (Das Gateway zeigt mit auf der Seriellen per Debug-Meldungen dass der Bewegungsmelder vorhanden ist und funktioniert)
Nun sollte das ganze an den vorhandenen Arduino-Pro Mini dran.

Wie ich das verstehe kann man auch andere Pins nutzen, allerdings per AltSoft Softserial. Also ca. so: https://www.arduino.cc/en/Tutorial/TwoPortReceive
Ich habe noch freie Pins:  2-D5, 3-D5, 4-D7, 10-13, A1-A3 (weitere Pins müsste ich suchen oder gar murksen)
Somit müsste ich doch irgendwo die Defines passend dazu machen.

Ich würde mich sehr über einen Tipp freuen wo ich dazu welche Pins wie definieren müsste...
FHEM mit FTUI. Homematic-Funk für Thermostate und Licht. MySensors als Basis für eigene HW.
Zentrale ist der MAPLE-CUL mit RFM69+HModUART-AddOn.
Doku zu meinen Projekten: Github/Ranseyer. Platinen falls verfügbar gerne auf Anfrage.
Support: gerne wenn ich Zeit+Lust habe im Forum. Nicht per PN!

Beta-User

@Ranseyer:
Was hast Du vor? Brauchst Du eine dritte serielle Schnittstelle, willst einfach nur die für die Kommunikation via RS485-Modul relevanten PIN's umbelegen oder einen Nicht-MySensors-Arduino anbinden?

Vielleicht kannst Du Deinen Aufbau näher beschreiben und den Sketch beifügen, um den es geht...

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Ranseyer

Hi,

ich haben einen Arduino bei dem schon einige Pins belegt sind. An RX / TX hängt ein ESP8266 zum flashen und debuggen.
Der bisherige Sketch dürfte im Moment noch witzlos sein. Je nach Tastendruck werden Relais angesteuert.
Künftig will ich Sensoren für Temp, Regen und Wind per RS485 anbinden. (Weitere Idee: per RS485 die Markisen zum Einfahren befehlen)


Das ist die HW.


Die RS485 Mysensors Geschichte habe ich vollkommen getrennt zum Testen aufgebaut.
FHEM mit FTUI. Homematic-Funk für Thermostate und Licht. MySensors als Basis für eigene HW.
Zentrale ist der MAPLE-CUL mit RFM69+HModUART-AddOn.
Doku zu meinen Projekten: Github/Ranseyer. Platinen falls verfügbar gerne auf Anfrage.
Support: gerne wenn ich Zeit+Lust habe im Forum. Nicht per PN!