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!

Beta-User

OK, für einen ProMini sind da wirklich viele PINs bereits belegt ;).

Was die für MySensors@RS485 brauchst, sind halt zwei PINs für softserial zur Anbindung des Moduls. Das können auch analoge sein (die können ja auch digital), Du müsstest nur die entsprechenden Definitionen im MySensors-spezifischen Kopfbereich von 8 und 9 entsprechend anpassen und dann müßtest Du Dir überlegen, wie Du Deine Funktionalität in eine MySensors-konforme Nachrichtenstruktur bringst. Ist aber für Dich kein Hexenwerk, wenn ich diese Sketche usw. so sehe :).

Für die Jalousiensteuerung könntest Du mal den Dimmer-Sketch ansehen. Da kannst Du den MySensors-Input "an" auf Deine Reaktion für die Hoch-Taste legen und dieselbe Reaktion erfolgen lassen, dto. für aus und den Dimmwert auch in eine Fahrzeit hoch bzw. runter umrechnen.

Für Zeitanzeige- und Display gab es irgendwo auch ein Beispiel (aber noch 1.5-er Framework), ich meine, das im Starter-Guide im Wiki verlinkt zu haben.

Was nicht geht, ist via MySensors@RS485 eine echte serielle Schnittstelle ins Netz zu bringen, aber das war wohl auch nicht der Plan, oder?
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

Danke, um Serielle Schnittstellen ins Netz zu bringen habe ich schon eine Lösung. Und noch wichtiger: Einen Jumper zum Abschalten!

ZitatIch habe noch freie Pins:  2-D5, 3-D5, 4-D7, 10-13, A1-A3

Ich muss doch aber neben diesem noch zwei andere Einträge machen ?
Zitat#define MY_RS485_DE_PIN 2
-Und ich weiss leider noch nicht wie genau... Habe dazu kein Beispiel gefunden.


Zitatund dann müßtest Du Dir überlegen, wie Du Deine Funktionalität in eine MySensors-konforme Nachrichtenstruktur bringst. Ist aber für Dich kein Hexenwerk, wenn ich diese Sketche usw. so sehe
Das hab ich nicht alles selbst gemacht...
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

OK, der Interrupt-Pin ist mir unter der Dusche dann auch eingefallen, muß wohl 2 oder 3 sein (müßtest Du ggf. freischaufeln oder versuchen, ob es mit einem SW-interrupt auch geht). Wenn ich das richtig verstanden habe, meldet das Modul darüber, ob eine Nachricht angekommen ist bzw. wird es aktiviert, wenn etwas gesendet werden soll.

Noch was aus der Dusche:
- Für die Markisensteuerung wäre vermutlich der MySensors-Typ "Servo" besser geeignet. In meinem repo gibt es dazu einen Sketch, den Du evtl. mal hinsichtlich der Nachrichtenübertragung vom und zum Servo ansehen könntest. Dort macht nämlich auch der Arduino Dinge autonom und meldet das dann zurück (brauchst Du vermutlich auch, wenn eine Taste gedrückt wurde bzw. ein neuer Status erreicht ist, oder?).
- UU braucht die Markise eine "Turn-Time", weiß nicht, ob das berücksichtigt ist (keine Wartezeit ist uU. nicht gut für den Motor). Irgendwo habe ich da auch mal was gesehen mit 3 Relais, um Problemen vorzubauen (einer zum Umschalten), habe jetzt aber nicht nachgesehen, wie das bei Deinem Sketch gelöst ist.
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,

die Markise selbst habe ich Griff.
Die Relais sind HW-Seitig verriegelt so dass man nur eine Richtung gleichzeitig auslösen kann. Dann muss man bei Kondensatormotoren div. Sachen beachten. Zum Beispiel dass der Kondensator sich erst entladen muss vor Umpolung.
Das macht die Lib die ich mir "schreiben liess"...




Das Problem ist dass ich keinen Plan habe welche "defines" nötig sind um den zweiten und dritten Arduino Pin umzubiegen...
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

#19
Zitat von: Ranseyer am 18 Februar 2017, 18:35:39
Das Problem ist dass ich keinen Plan habe welche "defines" nötig sind um den zweiten und dritten Arduino Pin umzubiegen...
OK, ich glaube, so langsam habe ich das Problem verstanden ::).

Also: die HW-PINs für die AltSoftSerial-Anbindung der RS485 sind "hart" vergeben (in der AltSoftSerial-lib, dort ...Boards.h, Zeilen 88ff).
Wenn Du das nicht auf den "MySensors-Standard" ändern/umlöten kannst, müßtest Du versuchen, das in dieser Header-File ändern, allerdings kann ich nicht sagen, welche Nebenwirkungen das hat ???.

Jedenfalls scheint es nicht mit einem simplen define zu gehen :(.

EDIT: wenn Du auf den ESP verzichtest, könntest Du die HW-serial-Variante nehmen. Für später wäre das vermutlich kein Problem...

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

kleinerDrache

Warum legst du nicht den ESP auf eine Soft Serial dann ist die Hardware frei für deine LIB. Dem ESP sind die Pins egal Hauptsache die Signale stimmen und da ist die Soft Sertial genauso gut wie die Hardware Serial.
Raspi 2 - Hmusb2 , 2xJeeLink , EnOcean pi: Serie14 Geräte , 6xHM-Sec-Rhs , 6xHM-CC-RT-DN, verschiedene MySensor Nodes, ein bischen MQTT

Ranseyer

Zitat von: Beta-User am 09 Februar 2017, 22:03:56
- 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.

Wollte mal den Urlaub creativ nutzen, komme aber nicht so recht voran.
Ich habe Platinchen bekommen für den MAX487 /SMD. Nachdem das nicht läuft habe ich das ganze nochmals etwas gröber aufgebaut.

Was läuft:
-Kleine Testumgebung mit Gateway+Motionsensor auf jeweils Arduino Nano. Die unterhalten sicht prächtig und ich kann z.B. Beim Einschalten sehen dass die Spannung auf A+B hochgeht (das Oszi oder Logic-Analalyzer würde den Inhalt zeigen)

Nicht läuft:
-identischer Aufbau, aber Pro-Mini mit 8MHz (Takt in Arduino richtig eingestellt, Spannung 3,3 oder 5V, Node-ID Manuell vergeben, Debug mit 115200 Baud klappt)
(-das ganze mit dem MAX487/SMD verghält sich gleich)

Es tut sich m.E. gar nichts auf dem RS485 Bus. (Somit scheint es ja wohl ein Problem mit D8,9 oder D2 zu geben?)
Oder was könnte ich sonst übersehen haben ?

0 MCO:BGN:INIT NODE,CP=RSNNA--,VER=2.1.1
4 TSM:INIT
4 TSF:WUR:MS=0
6 TSM:INIT:TSP OK
8 TSM:INIT:STATID=111
10 TSF:SID:OK,ID=111
12 TSM:FPAR
30 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
2039 !TSM:FPAR:NO REPLY
2041 TSM:FPAR
2060 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
4069 !TSM:FPAR:NO REPLY
4071 TSM:FPAR
4089 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
6100 !TSM:FPAR:NO REPLY
6103 TSM:FPAR
6121 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
8130 !TSM:FPAR:FAIL
8132 TSM:FAIL:CNT=1
8134 TSM:FAIL:PDT
18137 TSM:FAIL:RE-INIT
18139 TSM:INIT
18141 TSM:INIT:TSP OK
18143 TSM:INIT:STATID=111
18145 TSF:SID:OK,ID=111
18147 TSM:FPAR
18165 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
20174 !TSM:FPAR:NO REPLY
20176 TSM:FPAR
20195 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
22204 !TSM:FPAR:NO REPLY
22206 TSM:FPAR
22224 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
24236 !TSM:FPAR:NO REPLY
24238 TSM:FPAR
24256 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
26265 !TSM:FPAR:FAIL
26267 TSM:FAIL:CNT=2
26269 TSM:FAIL:PDT


Im Sketch habe ich nur die Node-ID ergänzt:
**
* The MySensors Arduino library handles the wireless radio link and protocol
* between your home built sensors/actuators and HA controller of choice.
* The sensors forms a self healing radio network with optional repeaters. Each
* repeater and gateway builds a routing tables in EEPROM which keeps track of the
* network topology allowing messages to be routed to nodes.
*
* Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
* Copyright (C) 2013-2015 Sensnology AB
* Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
*
* Documentation: http://www.mysensors.org
* Support Forum: http://forum.mysensors.org
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* version 2 as published by the Free Software Foundation.
*
*******************************
*
* REVISION HISTORY
* Version 1.0 - Henrik Ekblad
*
* DESCRIPTION
* This is an example of sensors using RS485 as transport layer
*
* Motion Sensor example using HC-SR501
* http://www.mysensors.org/build/motion
*
* If your Arduino board has additional serial ports
* you can use to connect the RS485 module.
* Otherwise, the transport uses AltSoftSerial to handle two serial
* links on one Arduino. Use the following pins for RS485 link
*
*  Board          Transmit  Receive   PWM Unusable
* -----          --------  -------   ------------
* Teensy 3.0 & 3.1  21        20         22
* Teensy 2.0         9        10       (none)
* Teensy++ 2.0      25         4       26, 27
* Arduino Uno        9         8         10
* Arduino Leonardo   5        13       (none)
* Arduino Mega      46        48       44, 45
* Wiring-S           5         6          4
* Sanguino          13        14         12 *
*
*/

// Enable debug prints to serial monitor
#define MY_DEBUG

// Enable RS485 transport layer
#define MY_RS485

// Define this to enables DE-pin management on defined pin
#define MY_RS485_DE_PIN 2

// Set RS485 baud rate to use
#define MY_RS485_BAUD_RATE 9600

#define MY_NODE_ID 111

// Enable this if RS485 is connected to a hardware serial port
//#define MY_RS485_HWSERIAL Serial1

#include <MySensors.h>

unsigned long SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds)
#define DIGITAL_INPUT_SENSOR 3   // The digital input you attached your motion sensor.  (Only 2 and 3 generates interrupt!)
#define CHILD_ID 1   // Id of the sensor child

// Initialize motion message
MyMessage msg(CHILD_ID, V_TRIPPED);

void setup()
{
  pinMode(DIGITAL_INPUT_SENSOR, INPUT);      // sets the motion sensor digital pin as input
}

void presentation()
{
  // Send the sketch version information to the gateway and Controller
  sendSketchInfo("Motion Sensor", "1.0");

  // Register all sensors to gw (they will be created as child devices)
  present(CHILD_ID, S_MOTION);
}

void loop()
{
  // Read digital motion value
  bool tripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH;

  Serial.println(tripped);
  send(msg.set(tripped?"1":"0"));  // Send tripped value to gw

  // Sleep until interrupt comes in on motion sensor. Send update every two minute.
  sleep(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), CHANGE, SLEEP_TIME);
}

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

Zitat von: Ranseyer am 19 April 2017, 11:16:31
Nicht läuft:
-identischer Aufbau, aber Pro-Mini mit 8MHz (Takt in Arduino richtig eingestellt, Spannung 3,3 oder 5V, Node-ID Manuell vergeben, Debug mit 115200 Baud klappt)
Kann das mit der F_CPU zusammenhängen? MySensors@RS485 nutzt (wenn D8/D9) die AltSoftSerial, für die spielt das Timing eine Rolle (mußte ua. deswegen auch eine andere Servo-Motor-lib mit einbinden).
Für einen ersten Test würde ich also empfehlen, erst mal die HW-Serial-Variante zu nutzen und dann ggf. nochmal nachzuvollziehen, ob dieser Parameter korrekt bei der altsoftserial ankommt. Eventuell kommt das was durcheinander, je nachdem, wie die #defines und Aufrufe nacheinander kommen).
Nur eine Vermutung, aber wenn außer dem Arduino nichts anderes getauscht wurde...
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

OK, ich habe ein funktionierendes GW.

Wenn ich den "Sensor" auf dem Steckbrett (Arduino Nano) dranhänge werde ich geflutet mit dieses Meldungen:

0;255;3;0;9;TSF:CKU:OK,FCTRL
0;255;3;0;9;TSF:MSG:GWL OK
0;255;3;0;9;TSF:MSG:SEND,0-0-50-50,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
0;255;3;0;9;TSF:MSG:READ,50-50-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
0;255;3;0;9;TSF:MSG:BC
0;255;3;0;9;TSF:MSG:FPAR REQ,ID=50
0;255;3;0;9;TSF:CKU:OK,FCTRL
0;255;3;0;9;TSF:MSG:GWL OK
0;255;3;0;9;TSF:MSG:SEND,0-0-50-50,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
0;255;3;0;9;TSF:MSG:READ,50-50-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
0;255;3;0;9;TSF:MSG:BC
0;255;3;0;9;TSF:MSG:FPAR REQ,ID=50
0;255;3;0;9;TSF:CKU:OK,FCTRL
0;255;3;0;9;TSF:MSG:GWL OK


Nun habe ich mal den Arduino-Mini gegen einen mit 16 MHz getauscht. => Kein Erfolg. (Selbe Meldungen wie oben, woraus ich schliesse er kommuniziert nicht mit dem GW.)

Also werde ich testen:
Zitat// Enable this if RS485 is connected to a hardware serial port
#define MY_RS485_HWSERIAL Serial1

Wobei ich hoffe die erste "Serial" heisst nicht "0" ...

-Mit Rx (Arduino) gehe ich nach "R"
-und mit TX auf "D" seitens dem RS485 Chip...
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!

Ranseyer

Mist...

Egal ob Serial 0 oder 1:

ZitatBMP280-test:63: error: 'Serial0' was not declared in this scope
#define MY_RS485_HWSERIAL Serial0
                           ^
/home/martin/Arduino/libraries/MySensors/core/MyTransportRS485.cpp:97:24: note: in expansion of macro 'MY_RS485_HWSERIAL'
HardwareSerial& _dev = MY_RS485_HWSERIAL;
                        ^
exit status 1

Meine Version:
Zitat#define MYSENSORS_LIBRARY_VERSION "2.1.1"
'Serial0' was not declared in this scope
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

Zitat von: Ranseyer am 19 April 2017, 12:41:36
...Kein Erfolg. (Selbe Meldungen wie oben, woraus ich schliesse er kommuniziert nicht mit dem GW.)
Das sieht mir aber schon nach einer funktionierenden Kommunikation aus. Es gibt Reads und Sends, keine Fehlermeldung am GW.

Stöpselst Du das Ding an FHEM an mit entsprechendem define, sollte die Node auch bei entsprechend eingeschalteten Optionen (inclusion+autocreate) angelegt werden. Was uU. aber sein kann: dass die Zuordnung zu den IO's nicht passt, wenn Du mehrere GW's nutzt (neue Nodes scheinen immer dem letzten in der fhem.cfg definierten GW zugeordnet zu werden, das muß man händisch korrigieren(?)).
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

Sorry habe mir unklar ausgedrückt. Der Arduino Nano läuft ja wunderbar und man kann sehen dass die Kommunikation läuft. (auf dieses Log beziehst du dich)


Der Pro Mini bringt nur Resultate siehe weiter oben:
(8 oder 16MHz, mit passender Option beim Compilieren, auch mit 5V)
0 MCO:BGN:INIT NODE,CP=RSNNA--,VER=2.1.1
4 TSM:INIT
4 TSF:WUR:MS=0
6 TSM:INIT:TSP OK
8 TSM:INIT:STATID=111
10 TSF:SID:OK,ID=111
12 TSM:FPAR
30 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
2039 !TSM:FPAR:NO REPLY
2041 TSM:FPAR
2060 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
4069 !TSM:FPAR:NO REPLY
4071 TSM:FPAR
4089 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
6100 !TSM:FPAR:NO REPLY
6103 TSM:FPAR
6121 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
8130 !TSM:FPAR:FAIL
8132 TSM:FAIL:CNT=1
8134 TSM:FAIL:PDT
18137 TSM:FAIL:RE-INIT
18139 TSM:INIT
18141 TSM:INIT:TSP OK
18143 TSM:INIT:STATID=111
18145 TSF:SID:OK,ID=111
18147 TSM:FPAR
18165 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
20174 !TSM:FPAR:NO REPLY
20176 TSM:FPAR
20195 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
22204 !TSM:FPAR:NO REPLY
22206 TSM:FPAR
22224 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
24236 !TSM:FPAR:NO REPLY
24238 TSM:FPAR
24256 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
26265 !TSM:FPAR:FAIL
26267 TSM:FAIL:CNT=2
26269 TSM:FAIL:PDT

Der spricht also nicht mit dem Gateway.

HW-Seriell habe ich spontan nicht zum Laufen bekommen wegen:
ZitatBMP280-test:63: error: 'Serial0' was not declared in this scope
#define MY_RS485_HWSERIAL Serial0
                           ^
/home/martin/Arduino/libraries/MySensors/core/MyTransportRS485.cpp:97:24: note: in expansion of macro 'MY_RS485_HWSERIAL'
HardwareSerial& _dev = MY_RS485_HWSERIAL;

Morgen gehts weiter...
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

Hmmm...

Damit liegt es m.E. weder an den RS485-Bausteinen noch an der Ansteuerung bzw. PIN-Belegung und AltSoftSerial ist auch nicht das Problem, sonst würde es mit dem Nano nicht gehen. Also liegt es m.E. entweder an der anderen HW (defekt oder zu wenig Power für den max?) oder deren SW-mäßiger Umsetzung (=Board-Def).

Probier doch mal, den 5V-Pro Mini (mit AltSoftSerial) mit der Boarddef. für Nanos zu kompilieren und zu flashen (geht nach meinem Eindruck ohne Probleme). 

Dann (ungeprüft): der max485 braucht wohl 5V, vielleicht parallel mal anderweitig versorgen
Und (Vermutung): Da der 328-er nur eine serielle HW-Schnittstelle hat, heißt die uU. nur "Serial" ohne angehängte Ziffer? (Aber wie gesagt, das scheint nicht das Problem zu sein, jedenfalls nicht bei der 5V/16MHz-Variante.
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

Zitat von: Beta-User am 20 April 2017, 09:05:21
Damit liegt es m.E. weder an den RS485-Bausteinen noch an der Ansteuerung bzw. PIN-Belegung und AltSoftSerial ist auch nicht das Problem, sonst würde es mit dem Nano nicht gehen. Also liegt es m.E. entweder an der anderen HW (defekt oder zu wenig Power für den max?) oder deren SW-mäßiger Umsetzung (=Board-Def).


Problem vorerst gelöst. Danke für die Tipps.

Ursache muss im "libraries" Ordner gewesen sein. Ich hab mir schon fast einen abgebrochen, aber irgendwann mal habe ich gemerkt dass auch die Nanos nicht mehr miteinander sprechen, und nach dem ich alles nochmals aufgebaut habe war auch die Verkabelung ausgeschlossen.

Nun läuft es jedenfalls mit Arduino 1.8.2 (Boards 1.6.18) und MySensory 2.1.1 ohne irgendetwas zu beachten. Nur Copy&Paste der Samples von mySensors.
Also einfach neue IDE gezogen und mySensory eingebunden fertig. (Natürlich muss bei 8 MHz Arduinos der Takt angepasst werden, das geht auch ohne Kniffe beim Pro/Mini)

PS: Treffen bei Stuttgart: Mal sehe ob ich das schaffe in dem ich nen anderen Termin sausen lasse.
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:
Schön, dass Du die Ursache des Problems gefunden hast.
Zitat von: Ranseyer am 25 April 2017, 20:04:19
PS: Treffen bei Stuttgart: Mal sehe ob ich das schaffe in dem ich nen anderen Termin sausen lasse.
Wäre nett, wenn das klappt. Mit MySensors@RS485 scheinen nicht so viele Leute Erfahrung zu haben, und der Systemverglich zu HomeBrewWired wäre auch ein interessantes Thema für den Fall, dass Thorsten Pferdekaemper auch kommt.
Dann würden mich Deine Erfahrungen mit dem STM32 interessieren, habe auch schon lange 3 von den Dingern rumliegen für den Fall, dass die Systemressourcen der Nanos nicht ausreichen sollten... Wir sind aber erfahrungsgemäß länger da, evtl. kannst Du ja später dazustoßen.
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

Was ich verdrängt hatte.
RS485 ist noch gebräuchlicher als manche annehmen...

Die gute Nachricht: Die verwenden bessere Stecker als wir
Die Schlechte: Die sind sicherlich zu groß für uns (und auch relativ teuer)

Aber man kann lernen von der Konkurrenz:
https://www.element14.com/community/groups/open-source-hardware/blog/2017/08/24/dmx-explained-dmx512-and-rs-485-protocol-detail-for-lighting-applications
https://de.wikipedia.org/wiki/DMX_(Lichttechnik)
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!