Poolsteuerung per Modbus auslesen

Begonnen von Fistandantilus, 18 August 2018, 18:15:54

Vorheriges Thema - Nächstes Thema

Fistandantilus

Hi,

ich habe ein Hidrolife 16 Poolsteuerung. Ist wohl identisch mit den Sugar Valley Anlagen. Eine Beschreibung der Register habe ich hier gefunden:
https://downloads.vodnici.net/uploads/wpforo/attachments/69/171-Modbus-registers.pdf

Mit einem In-Circuit rs485 Adpter habe ich die Verbindung auch hinbekommen und die ersten Werte werden mir angezeigt. Konfiguriert ist es wie folgt:

my %BrilixParseInfo = (
# MEASURE
'h100' => { reading => 'MBF_ION_CURRENT',
name => 'ION_CURR',
poll => 1
},
'h101' => { reading => 'MBF_HIDRO_CURRENT',
name => 'HIDRO_CURR',
poll => 1
},
'h102' => { reading => 'MBF_MEASURE_PH',
name => 'PH_MEASURE',
poll => 1
},
'h103' => { reading => 'MBF_MEASURE_RX',
name => 'RX_MEASURE',
poll => 1
},
'h104' => { reading => 'MBF_MEASURE_CL',
name => 'CL_MEASURE',
poll => 1
},
'h107' => { reading => 'MBF_PH_STATUS',
name => 'PH_STATUS',
poll => 1
},
'h108' => { reading => 'MBF_RX_STATUS',
name => 'RX_STATUS',
poll => 1
},
'h109' => { reading => 'MBF_CL_STATUS',
name => 'CL_STATUS',
poll => 1
},
'h1010' => { reading => 'MBF_CD_STATUS',
name => 'CD_STATUS',
poll => 1
},
'h1012' => { reading => 'MBF_ION_STATUS',
name => 'ION_STATUS',
poll => 1
},
'h1014' => { reading => 'MBF_HIDRO_STATUS',
name => 'HIDRO_STATUS',
poll => 1
},
'h1015' => { reading => 'MBF_RELAY_STATE',
name => 'RELAY_STATE',
poll => 1
}
);


Inbesondere bei den Registern 0x010A und ff. bin ich mir nicht sicher, ob das so richtig ist?

Ich bekomme aktuell folgende readings:

MBF_CD_STATUS
0
2018-08-18 18:09:18

MBF_CL_STATUS
0
2018-08-18 18:09:18

MBF_HIDRO_CURRENT
2030
2018-08-18 18:09:18

MBF_HIDRO_STATUS
0
2018-08-18 18:09:18

MBF_ION_CURRENT
4
2018-08-18 18:09:18

MBF_ION_STATUS
0
2018-08-18 18:09:18

MBF_MEASURE_CL
749
2018-08-18 18:09:18

MBF_MEASURE_PH
348
2018-08-18 18:09:18

MBF_MEASURE_RX
0
2018-08-18 18:09:18

MBF_PH_STATUS
0
2018-08-18 18:09:18

MBF_RELAY_STATE
0
2018-08-18 18:09:18

MBF_RX_STATUS
0
2018-08-18 18:09:18


Was mir jetzt unklar ist, wie ich zum einen bei den Messwerten z.B. MBF_MEASURE_PH mit 348 den echten Wert (7,1 oder 7,2) angezeigt bekomme.
Bei Register mit den 0 Werten hab ich auch noch keine Idee.
Vielleicht habt Ihr ein paar Denkanstöße für mich bzw. könnt mir anhand der Doku mit dem Setup helfen. Ich bin absoluter Modbus Neuling und arbeite mich gerade erst in das Thema ein.

VG
F.
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage

jewuma

Lt. Manual soll der Wert dem Wert inkl. 2 Nachkommastellen entsprechen.

"Este registro indica el nivel de pH medido en centésimas. El valor 700 indica un pH
de 7.00"

Ich spreche zwar kein Italienisch, aber so sieht es aus.
Meine Vermutung ist auch, dass die Register in Hex angegeben sind, aber h102 das "Dezimalregister" 102 abfragt.

Ich würde mal h258 probieren.
Gruß
Jens


JoeALLb

Zitat von: Fistandantilus am 18 August 2018, 18:15:54
Hi,

ich habe ein Hidrolife 16 Poolsteuerung. Ist wohl
F.

Hast du das am laufen? Habe auch so ein Gerät....
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

JF Mennedy

Hallo, an welche Schnittstelle und welche Pins hast Du die RS485 Schnittstelle angeschlossen?

Gruss Jan

JF Mennedy

ok, Verbindung habe ich aufgebaut... Bekomme auch die Werte... Ist es möglich die Relais zu schalten?

JoeALLb

Klingt gut. Und, welche Pins hast du belegt? Woran hast du diese angeklemmt? An einen USB Adapter?
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

JF Mennedy

Ich benutze einen RS485 USB Adapter.
Hier das list vom Device:
Internals:
   DEF        /dev/ttyUSB0@19200,8,N,1
   DeviceName /dev/ttyUSB0@19200,8,N,1
   EXPECT     idle
   FD         4
   FUUID      5ecd0c97-f33f-6aba-3a6f-df1932aaabaaba48
   LASTOPEN   1590508205.77863
   MODE       master
   NAME       ModBusLine
   NR         14
   NTFY_ORDER 50-ModBusLine
   PARTIAL   
   PROTOCOL   RTU
   STATE      opened
   SerialConn 1
   TYPE       Modbus
   devioLoglevel 3
   nextOpenDelay 60
   QUEUE:
   READ:
     BUFFER     
   READINGS:
     2020-05-26 17:50:05   state           opened
   REMEMBER:
     lid        1
     lname      Pool
     lrecv      1590522639.52888
     lsend      1590522639.50378
   defptr:
     Pool       1
Attributes:



Das LIST vom SR-Pro:
Internals:
   DEF        1 5
   FUUID      5ecd3817-f33f-6aba-7d6f-4ace8bc1137cf58d
   INTERVAL   5
   IODev      ModBusLine
   LeadingZeros 1
   MODBUSID   1
   MODE       master
   MODULEVERSION Modbus 4.1.5 - 17.9.2019
   NAME       Pool
   NOTIFYDEV  global
   NR         15
   NTFY_ORDER 50-Pool
   PROTOCOL   RTU
   STATE      opened
   TRIGGERTIME 1590522498.90716
   TRIGGERTIME_FMT 2020-05-26 21:48:18
   TYPE       ModbusAttr
   lastUpdate 1590522493.90716
   FRAME:
   READ:
   READINGS:
     2020-05-26 21:48:14   FiltrationsModus 1.00
     2020-05-26 21:48:13   FiltrationsSchalterMan 1.00
     2020-05-26 21:48:14   RX              533.00
     2020-05-26 21:48:14   Temperatur      24.40
     2020-05-26 21:48:14   pH              7.00
     2020-05-26 21:24:02   state           opened
   REMEMBER:
     lrecv      1590522494.44271
     lsend      1590522494.41817
   gotReadings:
     Temperatur 24.40
   lastRead:
     h00258     1590522494.18808
     h00259     1590522494.06008
     h00262     1590522494.44385
     h01041     1590522494.31593
     h01043     1590522493.93219
Attributes:
   dev-h-defFormat %.2f
   dev-h-defLen 2
   dev-h-defPoll 1
   obj-h00258-expr $val * 0.01
   obj-h00258-reading pH
   obj-h00259-expr $val * 1
   obj-h00259-reading RX
   obj-h00262-expr $val * 0.1
   obj-h00262-reading Temperatur
   obj-h01041-allowWrite 1
   obj-h01041-expr $val * 1
   obj-h01041-hint 0,1,2,3,4,5,6,7
   obj-h01041-max 7
   obj-h01041-min 0
   obj-h01041-reading FiltrationsModus
   obj-h01041-set 1
   obj-h01043-allowWrite 1
   obj-h01043-expr $val * 1
   obj-h01043-hint 0,1
   obj-h01043-max 1
   obj-h01043-min 0
   obj-h01043-reading FiltrationsSchalterMan
   obj-h01043-set 1
   userattr   dev-h-defFormat dev-h-defLen dev-h-defPoll obj-h00258-expr obj-h00258-reading obj-h00259-expr obj-h00259-reading obj-h00262-expr obj-h00262-reading obj-h01041-allowWrite obj-h01041-expr obj-h01041-hint obj-h01041-max obj-h01041-min obj-h01041-reading obj-h01041-set obj-h01043-allowWrite obj-h01043-expr obj-h01043-hint obj-h01043-max obj-h01043-min obj-h01043-reading obj-h01043-set



Hier die Defines:
ModBusLine:
defmod ModBusLine Modbus /dev/ttyUSB0@19200,8,N,1


Salt-Relax-Pro:
defmod Pool ModbusAttr 1 5
attr Pool userattr dev-h-defFormat dev-h-defLen dev-h-defPoll obj-h00258-expr obj-h00258-reading obj-h00259-expr obj-h00259-reading obj-h00262-expr obj-h00262-reading obj-h01041-allowWrite obj-h01041-expr obj-h01041-hint obj-h01041-max obj-h01041-min obj-h01041-reading obj-h01041-set obj-h01043-allowWrite obj-h01043-expr obj-h01043-hint obj-h01043-max obj-h01043-min obj-h01043-reading obj-h01043-set
attr Pool dev-h-defFormat %.2f
attr Pool dev-h-defLen 2
attr Pool dev-h-defPoll 1
attr Pool obj-h00258-expr $val * 0.01
attr Pool obj-h00258-reading pH
attr Pool obj-h00259-expr $val * 1
attr Pool obj-h00259-reading RX
attr Pool obj-h00262-expr $val * 0.1
attr Pool obj-h00262-reading Temperatur
attr Pool obj-h01041-allowWrite 1
attr Pool obj-h01041-expr $val * 1
attr Pool obj-h01041-hint 0,1,2,3,4,5,6,7
attr Pool obj-h01041-max 7
attr Pool obj-h01041-min 0
attr Pool obj-h01041-reading FiltrationsModus
attr Pool obj-h01041-set 1
attr Pool obj-h01043-allowWrite 1
attr Pool obj-h01043-expr $val * 1
attr Pool obj-h01043-hint 0,1
attr Pool obj-h01043-max 1
attr Pool obj-h01043-min 0
attr Pool obj-h01043-reading FiltrationsSchalterMan
attr Pool obj-h01043-set 1


Ich kann die Werte aus dem Salt-Relax auslesen, aber ich kann noch keine Relais schalten.. Wäre aber total gut, weil ich dann auch meine Filterpumpe darüber schalten könnte...


Gruss Jan

JF Mennedy

Die RS485 Schnittstelle habe ich auf dem Anschluss "Extern (Modbus3)" rechts neben dem Stecker vom WIFI Modul auf den Pins 3 und 4 (von oben) angeschlossen. Hier musst Du mal experimentieren, was A und B ist... Wenn die Schnittstelle sich nicht öffnet einfach die Adern drehen...

JoeALLb

Vielen Dank! Habe auch einen salt relax pro, also mal sehen, ob ich weiter komme, hab aber noch kein Kabel in den technikschacht.
Daher werde ich vorerst die filterpumpe über knx direkt starten...
Eine Redox-sonde hast du nicht verbaut, oder?
Hast du das ph Modul im ph-minus oder ph-plus Modus?
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

JF Mennedy

Ich habe beide Optionen redox mit ph minus, wobei die ph Messung nicht funktioniert... Habe die Anlage seit letztem Jahr und Reklamation läuft... Das wifi Modul verbindet dich auch seit ein paar Tagen nicht mehr mit dem Portal, so dass ich jetzt nach einer anderen Lösung gesucht habe... Normalerweise schalte ich über die SR-Plus auch die Stufe der Pumpe... Habe ne badu Eco mit integriertem frequenzumformer... Die Anbindung vom web Portal hatte ich bisher mit httpmod realisiert, aber wenn das Portal nicht läuft geht halt auch in fhem nix [emoji35][emoji35][emoji35]

Gesendet von meinem VOG-L29 mit Tapatalk


JoeALLb

Spannend, habe die selbe Pumpe wie du! Jedoch kein WiFi-Modul, da ich dort sowieso keinen WLAN Empfang hätte daher hoffe ich es per modbus zu lösen...
Dosierst du dann das ph-minus manuell?
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

JF Mennedy

zur zeit dosiere ich manuell, da die Messung nicht geht... hoffe dass bayrol sich hier bald mal äußert...

JF Mennedy

Die 3 Stufen Pumpensteuerung kann man auch in der SR-Pro anschließen über den Kommunikationsschnittstellen, jedoch nicht das Aus-Signal, das habe ich über den potentialfreien Kontakt gelöst, der mir ein Schütz schaltet... Da die Anlage bei mir im Keller steht, habe ich die Zuleitung über einen verriegelnden Druckknopfschalter gelegt, der im Erdgeschoss als Not-Aus installiert ist, dann muss ich im Notfall nicht erst in den Keller rennen.. Die Ader vom GND der 3 Stufen ist noch zusätzlich über einen 0/1 Schalter gezogen, schalte ich den Schalter auf 0 kann ich die Pumpe manuell über das Steuergerät der Pumpe schalten, steht der Schalter auf 1 läufts über die SR-Pro...

JF Mennedy

So, mit dieser Definition geht auch das Schreiben der HoldingRegister:

defmod Pool ModbusAttr 1 10
attr Pool userattr dev-h-defPoll dev-h-write obj-h00258-expr obj-h00258-reading obj-h00259-expr obj-h00259-reading obj-h00262-expr obj-h00262-reading obj-h01041-allowWrite obj-h01041-expr obj-h01041-hint obj-h01041-max obj-h01041-min obj-h01041-reading obj-h01041-set obj-h01043-allowWrite obj-h01043-expr obj-h01043-hint obj-h01043-max obj-h01043-min obj-h01043-reading obj-h01043-set
attr Pool dev-h-defPoll 10
attr Pool dev-h-write 16
attr Pool disable 0
attr Pool obj-h00258-expr $val * 0.01
attr Pool obj-h00258-reading pH
attr Pool obj-h00259-expr $val * 1
attr Pool obj-h00259-reading RX
attr Pool obj-h00262-expr $val * 0.1
attr Pool obj-h00262-reading Temperatur
attr Pool obj-h01041-allowWrite 1
attr Pool obj-h01041-expr $val * 1
attr Pool obj-h01041-hint 0,1,2,3,4,5,6,7
attr Pool obj-h01041-max 7
attr Pool obj-h01041-min 0
attr Pool obj-h01041-reading FiltrationsModus
attr Pool obj-h01041-set 1
attr Pool obj-h01043-allowWrite 1
attr Pool obj-h01043-expr $val * 1
attr Pool obj-h01043-hint 0,1
attr Pool obj-h01043-max 1
attr Pool obj-h01043-min 0
attr Pool obj-h01043-reading FiltrationsSchalterMan
attr Pool obj-h01043-set 1


Problem, war dass ich die Länge des Registers mit 2 definiert hatte... und das Attribut dev-h-write muss auf 16 stehen.

JF Mennedy

Schade für die 600 Euro für das WIFI Modul, kann man sich eindeutig sparen und die Anbindung über Modbus ist wesentlich performanter... Werde das Modul in den nächsten Tagen noch ein wenig ausbauen und dann hier posten, auch mit Foto, wo die RS485 Schnittstelle angeschlossen wird...

Hilft vielleicht dann anderen SR-Pro Besitzern weiter ;-)


Gruss Jan