UNIPI Neuron / Modbus

Begonnen von cmburn, 23 November 2016, 07:49:20

Vorheriges Thema - Nächstes Thema

cmburn

Ich muß mich jetzt auch mal zu Wort melden. Ich habe einen Neuron L404 von http://unipi.technology.
Darauf läuft Debian Jessie (ist ein Raspi 3 drin)
Die Komponenten (fast alle)  werden über Modbus (RS485) und der Hardwarelayer geht schon und ist über Port 502 erreichbar.

Könnte mir einer der Modbuswissenden wie ich da mit dem modbus-modul von FHEM ran komme (über das Netzwerk kann ich die Relays ja schalten mit meinem Modbusscanner)
Wichtig sind im Moment erst einmal die Relays, die benötige ich zuerst. (ich will die über FS20 schalten / bzw. das Webinterface)
Der Restliche Kram (1-wire über Modbus; i/o ist noch nicht relevant)



Die Register sind dokumentiert:
https://files.unipi.technology/index.php/s/zTmrEbQEvifNd6W/download?path=%2FProducts%2FNeuron%2FDocumentation&files=L40x_modbus_registers.pdf

https://files.unipi.technology/index.php/s/zTmrEbQEvifNd6W?path=%2FProducts%2FNeuron

rapster

http://unipi.technology/software/: EVOK – our original software what we keep developing, updating and we will always support it. It is a thin layer between hardware and more complex software (FHEM, Node-RED, custom-made scripts etc.). Suitable for developers and their own software.

cmburn

#2
but evok is NOT ready for Neuron (only for unipi)... 

Why i need an extra Layer, i think FHEM can access modbus direct?

livemedia

Hat sich in der Angelegenheit eine Lösung ergeben ?

Ich habe selbst gerade einen L203 erhalten und die EVOK-Api läuft in der aktuellen Version problemlos.
1-wire hängt übrigens wie beim UniPi 1.x weiterhin am i2c und nicht am Modbus.


cmburn

#4
Ja, so weit bin ich auch. Evok läuft unter einer Minimalinstallation von debian, wobei die Installation noch betabetabeta ist.

Ich hab nun das Problem wie ich von FHEM darauf komme.

Es gäbe ja noch den direkten Weg von FHEM auf den MODBUS durchzugreifen, was mir am liebsten wäre. (keine unnötigen Zwischenschichten).
Allerdings hab ich keine Ahnung wie ich das adressiert bekomme.

Die Alternative wäre der Zugriff auf Evok. Da gibt es ja einige Möglichkeiten. Das Einfachste wäre http, aber da bin ich mir mit dem Rückkanal nicht so sicher.
Der Zustand der Ausgänge muß sich definitiv zuverlässig in FHEM wiederspiegeln. (Das ist der Grund für das Teil, bei meinem FS20/Hutschine geht da ja nicht)

Na ja, am liebsten wäre mir der Zugriff auf den 502er Modbusport.

livemedia

Soo...
Also der Zugriff auf die Ausgänge direkt aus FHEM über ModbusTCP ist recht einfach :

Modbus-Server definieren

#define Modbus Server 1 (Relays)
#####################################
define ModbusTCPRelay ModbusTCPServer 127.0.0.1:502
attr ModbusTCPRelay queueDelay 20


Relays definieren lt. Dokumentation. Beispiel für Unipi Neuron L203

#define Relay Group 1
#####################################
define DigitalOut1.1 ModbusCoil 0 1
attr DigitalOut1.1 IODev ModbusTCPRelay
attr DigitalOut1.1 event-on-change-reading .*
define DigitalOut1.2 ModbusCoil 0 2
attr DigitalOut1.2 IODev ModbusTCPRelay
attr DigitalOut1.2 event-on-change-reading .*
define DigitalOut1.3 ModbusCoil 0 3
attr DigitalOut1.3 IODev ModbusTCPRelay
attr DigitalOut1.3 event-on-change-reading .*
define DigitalOut1.4 ModbusCoil 0 4
attr DigitalOut1.4 IODev ModbusTCPRelay
attr DigitalOut1.4 event-on-change-reading .*


Gruppe 2 und 3 (je nach Modul) ergänzen. Meine 32 Ausgänge schalten damit. Probleme habe ich allerdings noch bei der Verarbeitung der 36 digitalen Eingänge. Die sind nach gleichem Muster angelegt. Allerdings erhalten ich bei Gruppe 1 nur von Input 1 und bei den Gruppen 2 und 3 jeweils von den Inputs 1-9 Rückmeldungen. Die restlichen Eingänge spielen verstecken mit mir. ModbusTCPServer meldet "except 2" bei der Abfrage. Daran arbeite ich noch.

maci

Zitat von: cmburn am 01 Februar 2017, 06:58:27
Ja, so weit bin ich auch. Evok läuft unter einer Minimalinstallation von debian, wobei die Installation noch betabetabeta ist.


Mit Evok kann ich die voll zustimmen.
Ich habe eine Unipi 1.1
Auch die Dokumentation ist mehr als dürftig
Einmal habe ich ich es bei Testinstallationen geschafft, dass er mir die Relays auf der Unipi erkannt hat, und 3 Sensoren.
Bei einem anderen mal hat er gar nichts erkannt.
Auch die händische Anlage hat nichts gebracht.
Doch das gehört nicht hierher.

Gruß
Georg
Fhem auf Dell Thinclient, Fhem auf Raspebrry Pi4,
UniPi Vers. 1.1 mit Raspberry Pi3, 1wire USB Adapter mit OWX
Netatmo Wetterstation + Regenmesser + Netatmo Thermostat
Homematic mit HMLan

cmburn

Sooo,

ich hab mir mal die Mühe gemacht den Rest der Relays von meinem L403 zu ergänzen. ;D

Wobei ich nicht wirklich zufrieden bin. Mir fehlt noch der 'Rückkanal'. Also die regelmäßige Abfrag der Register, wenn z.B. etwas über Evok geschaltet wird, bzw. der Stand der Relays nach einem Reboot (die bleiben nämlich wie sie sind, wenn man den Strom nicht weg nimmt)

PS: vielen Dank für den Codeschnipsel, genau das hab ich gebraucht!!! 8)


#define Modbus Server 1 (Relays)
#####################################
define ModbusTCPRelay ModbusTCPServer 127.0.0.1:502
attr ModbusTCPRelay queueDelay 20
attr ModbusTCPRelay room Modbus

#define Relay Group 1
#####################################
define DigitalOut1.01 ModbusCoil 0 1
attr DigitalOut1.01 IODev ModbusTCPRelay
attr DigitalOut1.01 event-on-change-reading .*
attr DigitalOut1.01 room Modbus
define DigitalOut1.02 ModbusCoil 0 2
attr DigitalOut1.02 IODev ModbusTCPRelay
attr DigitalOut1.02 event-on-change-reading .*
attr DigitalOut1.02 room Modbus
define DigitalOut1.03 ModbusCoil 0 3
attr DigitalOut1.03 IODev ModbusTCPRelay
attr DigitalOut1.03 event-on-change-reading .*
attr DigitalOut1.03 room Modbus
define DigitalOut1.04 ModbusCoil 0 4
attr DigitalOut1.04 IODev ModbusTCPRelay
attr DigitalOut1.04 event-on-change-reading .*
attr DigitalOut1.04 room Modbus

#define Relay Group 2
#####################################
define DigitalOut2.01 ModbusCoil 2 1
attr DigitalOut2.01 IODev ModbusTCPRelay
attr DigitalOut2.01 event-on-change-reading .*
attr DigitalOut2.01 room Modbus
define DigitalOut2.02 ModbusCoil 2 2
attr DigitalOut2.02 IODev ModbusTCPRelay
attr DigitalOut2.02 event-on-change-reading .*
attr DigitalOut2.02 room Modbus
define DigitalOut2.03 ModbusCoil 2 3
attr DigitalOut2.03 IODev ModbusTCPRelay
attr DigitalOut2.03 event-on-change-reading .*
attr DigitalOut2.03 room Modbus
define DigitalOut2.04 ModbusCoil 2 4
attr DigitalOut2.04 IODev ModbusTCPRelay
attr DigitalOut2.04 event-on-change-reading .*
attr DigitalOut2.04 room Modbus

define DigitalOut2.05 ModbusCoil 2 5
attr DigitalOut2.05 IODev ModbusTCPRelay
attr DigitalOut2.05 event-on-change-reading .*
attr DigitalOut2.05 room Modbus
define DigitalOut2.06 ModbusCoil 2 6
attr DigitalOut2.06 IODev ModbusTCPRelay
attr DigitalOut2.06 event-on-change-reading .*
attr DigitalOut2.06 room Modbus
define DigitalOut2.07 ModbusCoil 2 7
attr DigitalOut2.07 IODev ModbusTCPRelay
attr DigitalOut2.07 event-on-change-reading .*
attr DigitalOut2.07 room Modbus
define DigitalOut2.08 ModbusCoil 2 8
attr DigitalOut2.08 IODev ModbusTCPRelay
attr DigitalOut2.08 event-on-change-reading .*
attr DigitalOut2.08 room Modbus


define DigitalOut2.09 ModbusCoil 2 9
attr DigitalOut2.09 IODev ModbusTCPRelay
attr DigitalOut2.09 event-on-change-reading .*
attr DigitalOut2.09 room Modbus
define DigitalOut2.10 ModbusCoil 2 10
attr DigitalOut2.10 IODev ModbusTCPRelay
attr DigitalOut2.10 event-on-change-reading .*
attr DigitalOut2.10 room Modbus
define DigitalOut2.11 ModbusCoil 2 11
attr DigitalOut2.11 IODev ModbusTCPRelay
attr DigitalOut2.11 event-on-change-reading .*
attr DigitalOut2.11 room Modbus
define DigitalOut2.12 ModbusCoil 2 12
attr DigitalOut2.12 IODev ModbusTCPRelay
attr DigitalOut2.12 event-on-change-reading .*
attr DigitalOut2.12 room Modbus

define DigitalOut2.13 ModbusCoil 2 13
attr DigitalOut2.13 IODev ModbusTCPRelay
attr DigitalOut2.13 event-on-change-reading .*
attr DigitalOut2.13 room Modbus
define DigitalOut2.14 ModbusCoil 2 14
attr DigitalOut2.14 IODev ModbusTCPRelay
attr DigitalOut2.14 event-on-change-reading .*
attr DigitalOut2.14 room Modbus
define DigitalOut2.15 ModbusCoil 2 15
attr DigitalOut2.15 IODev ModbusTCPRelay
attr DigitalOut2.15 event-on-change-reading .*
attr DigitalOut2.15 room Modbus
define DigitalOut2.16 ModbusCoil 2 16
attr DigitalOut2.16 IODev ModbusTCPRelay
attr DigitalOut2.16 event-on-change-reading .*
attr DigitalOut2.16 room Modbus


define DigitalOut2.17 ModbusCoil 2 17
attr DigitalOut2.17 IODev ModbusTCPRelay
attr DigitalOut2.17 event-on-change-reading .*
attr DigitalOut2.17 room Modbus
define DigitalOut2.18 ModbusCoil 2 18
attr DigitalOut2.18 IODev ModbusTCPRelay
attr DigitalOut2.18 event-on-change-reading .*
attr DigitalOut2.18 room Modbus
define DigitalOut2.19 ModbusCoil 2 19
attr DigitalOut2.19 IODev ModbusTCPRelay
attr DigitalOut2.19 event-on-change-reading .*
attr DigitalOut2.19 room Modbus
define DigitalOut2.20 ModbusCoil 2 20
attr DigitalOut2.20 IODev ModbusTCPRelay
attr DigitalOut2.20 event-on-change-reading .*
attr DigitalOut2.20 room Modbus

define DigitalOut2.21 ModbusCoil 2 21
attr DigitalOut2.21 IODev ModbusTCPRelay
attr DigitalOut2.21 event-on-change-reading .*
attr DigitalOut2.21 room Modbus
define DigitalOut2.22 ModbusCoil 2 22
attr DigitalOut2.22 IODev ModbusTCPRelay
attr DigitalOut2.22 event-on-change-reading .*
attr DigitalOut2.22 room Modbus
define DigitalOut2.23 ModbusCoil 2 23
attr DigitalOut2.23 IODev ModbusTCPRelay
attr DigitalOut2.23 event-on-change-reading .*
attr DigitalOut2.23 room Modbus
define DigitalOut2.24 ModbusCoil 2 24
attr DigitalOut2.24 IODev ModbusTCPRelay
attr DigitalOut2.24 event-on-change-reading .*
attr DigitalOut2.24 room Modbus

define DigitalOut2.25 ModbusCoil 2 25
attr DigitalOut2.25 IODev ModbusTCPRelay
attr DigitalOut2.25 event-on-change-reading .*
attr DigitalOut2.25 room Modbus
define DigitalOut2.26 ModbusCoil 2 26
attr DigitalOut2.26 IODev ModbusTCPRelay
attr DigitalOut2.26 event-on-change-reading .*
attr DigitalOut2.26 room Modbus
define DigitalOut2.27 ModbusCoil 2 27
attr DigitalOut2.27 IODev ModbusTCPRelay
attr DigitalOut2.27 event-on-change-reading .*
attr DigitalOut2.27 room Modbus
define DigitalOut2.28 ModbusCoil 2 28
attr DigitalOut2.28 IODev ModbusTCPRelay
attr DigitalOut2.28 event-on-change-reading .*
attr DigitalOut2.28 room Modbus


#define Relay Group 3
#####################################
define DigitalOut3.01 ModbusCoil 3 1
attr DigitalOut3.01 IODev ModbusTCPRelay
attr DigitalOut3.01 event-on-change-reading .*
attr DigitalOut3.01 room Modbus
define DigitalOut3.02 ModbusCoil 3 2
attr DigitalOut3.02 IODev ModbusTCPRelay
attr DigitalOut3.02 event-on-change-reading .*
attr DigitalOut3.02 room Modbus
define DigitalOut3.03 ModbusCoil 3 3
attr DigitalOut3.03 IODev ModbusTCPRelay
attr DigitalOut3.03 event-on-change-reading .*
attr DigitalOut3.03 room Modbus
define DigitalOut3.04 ModbusCoil 3 4
attr DigitalOut3.04 IODev ModbusTCPRelay
attr DigitalOut3.04 event-on-change-reading .*
attr DigitalOut3.04 room Modbus

define DigitalOut3.05 ModbusCoil 3 5
attr DigitalOut3.05 IODev ModbusTCPRelay
attr DigitalOut3.05 event-on-change-reading .*
attr DigitalOut3.05 room Modbus
define DigitalOut3.06 ModbusCoil 3 6
attr DigitalOut3.06 IODev ModbusTCPRelay
attr DigitalOut3.06 event-on-change-reading .*
attr DigitalOut3.06 room Modbus
define DigitalOut3.07 ModbusCoil 3 7
attr DigitalOut3.07 IODev ModbusTCPRelay
attr DigitalOut3.07 event-on-change-reading .*
attr DigitalOut3.07 room Modbus
define DigitalOut3.08 ModbusCoil 3 8
attr DigitalOut3.08 IODev ModbusTCPRelay
attr DigitalOut3.08 event-on-change-reading .*
attr DigitalOut3.08 room Modbus


define DigitalOut3.09 ModbusCoil 3 9
attr DigitalOut3.09 IODev ModbusTCPRelay
attr DigitalOut3.09 event-on-change-reading .*
attr DigitalOut3.09 room Modbus
define DigitalOut3.10 ModbusCoil 3 10
attr DigitalOut3.10 IODev ModbusTCPRelay
attr DigitalOut3.10 event-on-change-reading .*
attr DigitalOut3.10 room Modbus
define DigitalOut3.11 ModbusCoil 3 11
attr DigitalOut3.11 IODev ModbusTCPRelay
attr DigitalOut3.11 event-on-change-reading .*
attr DigitalOut3.11 room Modbus
define DigitalOut3.12 ModbusCoil 3 12
attr DigitalOut3.12 IODev ModbusTCPRelay
attr DigitalOut3.12 event-on-change-reading .*
attr DigitalOut3.12 room Modbus

define DigitalOut3.13 ModbusCoil 3 13
attr DigitalOut3.13 IODev ModbusTCPRelay
attr DigitalOut3.13 event-on-change-reading .*
attr DigitalOut3.13 room Modbus
define DigitalOut3.14 ModbusCoil 3 14
attr DigitalOut3.14 IODev ModbusTCPRelay
attr DigitalOut3.14 event-on-change-reading .*
attr DigitalOut3.14 room Modbus
define DigitalOut3.15 ModbusCoil 3 15
attr DigitalOut3.15 IODev ModbusTCPRelay
attr DigitalOut3.15 event-on-change-reading .*
attr DigitalOut3.15 room Modbus
define DigitalOut3.16 ModbusCoil 3 16
attr DigitalOut3.16 IODev ModbusTCPRelay
attr DigitalOut3.16 event-on-change-reading .*
attr DigitalOut3.16 room Modbus


define DigitalOut3.17 ModbusCoil 3 17
attr DigitalOut3.17 IODev ModbusTCPRelay
attr DigitalOut3.17 event-on-change-reading .*
attr DigitalOut3.17 room Modbus
define DigitalOut3.18 ModbusCoil 3 18
attr DigitalOut3.18 IODev ModbusTCPRelay
attr DigitalOut3.18 event-on-change-reading .*
attr DigitalOut3.18 room Modbus
define DigitalOut3.19 ModbusCoil 3 19
attr DigitalOut3.19 IODev ModbusTCPRelay
attr DigitalOut3.19 event-on-change-reading .*
attr DigitalOut3.19 room Modbus
define DigitalOut3.20 ModbusCoil 3 20
attr DigitalOut3.20 IODev ModbusTCPRelay
attr DigitalOut3.20 event-on-change-reading .*
attr DigitalOut3.20 room Modbus

define DigitalOut3.21 ModbusCoil 3 21
attr DigitalOut3.21 IODev ModbusTCPRelay
attr DigitalOut3.21 event-on-change-reading .*
attr DigitalOut3.21 room Modbus
define DigitalOut3.22 ModbusCoil 3 22
attr DigitalOut3.22 IODev ModbusTCPRelay
attr DigitalOut3.22 event-on-change-reading .*
attr DigitalOut3.22 room Modbus
define DigitalOut3.23 ModbusCoil 3 23
attr DigitalOut3.23 IODev ModbusTCPRelay
attr DigitalOut3.23 event-on-change-reading .*
attr DigitalOut3.23 room Modbus
define DigitalOut3.24 ModbusCoil 3 24
attr DigitalOut3.24 IODev ModbusTCPRelay
attr DigitalOut3.24 event-on-change-reading .*
attr DigitalOut3.24 room Modbus

define DigitalOut3.25 ModbusCoil 3 25
attr DigitalOut3.25 IODev ModbusTCPRelay
attr DigitalOut3.25 event-on-change-reading .*
attr DigitalOut3.25 room Modbus
define DigitalOut3.26 ModbusCoil 3 26
attr DigitalOut3.26 IODev ModbusTCPRelay
attr DigitalOut3.26 event-on-change-reading .*
attr DigitalOut3.26 room Modbus
define DigitalOut3.27 ModbusCoil 3 27
attr DigitalOut3.27 IODev ModbusTCPRelay
attr DigitalOut3.27 event-on-change-reading .*
attr DigitalOut3.27 room Modbus
define DigitalOut3.28 ModbusCoil 3 28
attr DigitalOut3.28 IODev ModbusTCPRelay
attr DigitalOut3.28 event-on-change-reading .*
attr DigitalOut3.28 room Modbus





Negropo

Hallo zusammen,

ich habe mal eine Modbus-Anfänger-Frage. Ich expermentiere mit einer Neuron xS10 Extension herum. Habe diese geschenkt bekommen und will sie nun an FHEM via Modbus anbinden. Die grundlegende Anbindung funktioniert mit folgendem Eintrag schon.

define NeuronModbus Modbus /dev/ttyUSB0@19200,8,N,1
define NeuronxS10 ModbusAttr 0 60 RTU


Jetzt bin ich noch am rätseln wie ich die einzelnen Register abrufen kann. Via ModbusCoil, wie in den Beispielen oben funktioniert es nicht, da FHEM das Modul ModbusCOil bereits nicht kennt.
Bei ModbusAttr bin ich bisher nicht schlau geworden, wie ich meine Register-Informationen, siehe hier:

https://files.unipi.technology/s/public?path=%2FProducts%2FNeuron%2FModbus%20Registers%20Maps#pdfviewer

auf das ModbusAtrr-Format übertragen kann.

Vielleicht kann mir bitte einer der Erfahrenen hier weiterhelfen. Danke!

Gruß Negropo

klausw

Es hat zwar nix mit Modbus zu tun, aber mit dem Neuron und dessen Ansteuetung:
[neues Modul] UniPi Neuron (Websocket/JSON)


RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280