Autor Thema: Poolsteuerung per Modbus auslesen  (Gelesen 6161 mal)

Offline JF Mennedy

  • Full Member
  • ***
  • Beiträge: 165
Antw:Poolsteuerung per Modbus auslesen
« Antwort #15 am: 27 Mai 2020, 12:03:10 »
So,

hier die derzeitige Definition:

defmod NaturallySalt ModbusAttr 1 10
attr NaturallySalt userattr dev-h-defPoll dev-h-write obj-h00257-expr obj-h00257-reading 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 obj-h01057-expr obj-h01057-reading obj-h01068-allowWrite obj-h01068-expr obj-h01068-hint obj-h01068-max obj-h01068-min obj-h01068-reading obj-h01068-set obj-h01282-allowWrite obj-h01282-expr obj-h01282-hint obj-h01282-max obj-h01282-min obj-h01282-reading obj-h01282-set obj-h01284-allowWrite obj-h01284-expr obj-h01284-hint obj-h01284-max obj-h01284-min obj-h01284-reading obj-h01284-set obj-h01284-setexpr obj-h01288-allowWrite obj-h01288-expr obj-h01288-hint obj-h01288-max obj-h01288-min obj-h01288-reading obj-h01288-set
attr NaturallySalt DbLogExclude .*
attr NaturallySalt IODev ModBusLine
attr NaturallySalt alias NaturallySalt
attr NaturallySalt dev-h-defPoll 10
attr NaturallySalt dev-h-write 16
attr NaturallySalt disable 0
attr NaturallySalt group Pool
attr NaturallySalt icon virtualbox-alt
attr NaturallySalt obj-h00257-expr $val * 0.1
attr NaturallySalt obj-h00257-reading Hydro
attr NaturallySalt obj-h00258-expr $val * 0.01
attr NaturallySalt obj-h00258-reading pH
attr NaturallySalt obj-h00259-expr $val * 1
attr NaturallySalt obj-h00259-reading RX
attr NaturallySalt obj-h00262-expr $val * 0.1
attr NaturallySalt obj-h00262-reading Temperatur
attr NaturallySalt obj-h01041-allowWrite 1
attr NaturallySalt obj-h01041-expr $val * 1
attr NaturallySalt obj-h01041-hint 0,1,2,3,4,5,6,7
attr NaturallySalt obj-h01041-max 7
attr NaturallySalt obj-h01041-min 0
attr NaturallySalt obj-h01041-reading FiltrationsModus
attr NaturallySalt obj-h01041-set 1
attr NaturallySalt obj-h01043-allowWrite 1
attr NaturallySalt obj-h01043-expr $val * 1
attr NaturallySalt obj-h01043-hint 0,1
attr NaturallySalt obj-h01043-max 1
attr NaturallySalt obj-h01043-min 0
attr NaturallySalt obj-h01043-reading FiltrationsSchalterMan
attr NaturallySalt obj-h01043-set 1
attr NaturallySalt obj-h01057-expr $val * 1
attr NaturallySalt obj-h01057-reading FiltrationState
attr NaturallySalt obj-h01068-allowWrite 1
attr NaturallySalt obj-h01068-expr $val * 1
attr NaturallySalt obj-h01068-hint 0,1
attr NaturallySalt obj-h01068-max 1
attr NaturallySalt obj-h01068-min 0
attr NaturallySalt obj-h01068-reading Cover
attr NaturallySalt obj-h01068-set 1
attr NaturallySalt obj-h01282-allowWrite 1
attr NaturallySalt obj-h01282-expr $val * 0.1
attr NaturallySalt obj-h01282-hint 0,10,20,30,40,50,60,70,80,90,100
attr NaturallySalt obj-h01282-max 100
attr NaturallySalt obj-h01282-min 0
attr NaturallySalt obj-h01282-reading HydroSollwert
attr NaturallySalt obj-h01282-set 1
attr NaturallySalt obj-h01284-allowWrite 1
attr NaturallySalt obj-h01284-expr $val * 0.01
attr NaturallySalt obj-h01284-hint 6.8,6.9,7.0,7.1,7.2,7.4,7.5,7.6
attr NaturallySalt obj-h01284-max 7.6
attr NaturallySalt obj-h01284-min 6.8
attr NaturallySalt obj-h01284-reading phSollwert
attr NaturallySalt obj-h01284-set 1
attr NaturallySalt obj-h01284-setexpr $val * 100
attr NaturallySalt obj-h01288-allowWrite 1
attr NaturallySalt obj-h01288-expr $val * 1
attr NaturallySalt obj-h01288-hint 400,450,500,550,600,650
attr NaturallySalt obj-h01288-max 700
attr NaturallySalt obj-h01288-min 300
attr NaturallySalt obj-h01288-reading rxSollwert
attr NaturallySalt obj-h01288-set 1
attr NaturallySalt realRoom Schwimmbad
attr NaturallySalt room 00_Haus,11_Garten,12_Schwimmbad,35_Keller,73_GoogleHome
attr NaturallySalt stateFormat {sprintf("Temp: %.1f °C PH: %.2f Redox: %.0f Elektrolyse: %.0f", ReadingsNum($name,'Temperatur',0),ReadingsNum($name,'pH',0),ReadingsNum($name,'RX',0),ReadingsNum($name,'Hydro',0)  )}
attr NaturallySalt userReadings temperature { ReadingsNum($name,"Temperatur",0) }, \
state { ReadingsVal($name,"FiltrationState",0) }
attr NaturallySalt webCmd FiltrationsModus:FiltrationsSchalterMan:phSollwert:rxSollwert:HydroSollwert
attr NaturallySalt webCmdLabel FiltrationsModus:FiltrationsSchalterMan:phSollwert:rxSollwert:HydroSollwert

« Letzte Änderung: 27 Mai 2020, 20:09:49 von JF Mennedy »

Offline alen

  • New Member
  • *
  • Beiträge: 36
Antw:Poolsteuerung per Modbus auslesen
« Antwort #16 am: 01 Juni 2020, 14:46:33 »
Hallo zusammen

Ich habe die Poolsteuerung Hidrolife Sal 22 (mehr oder weniger baugleich zur Salt Relax Pro).
Darf ich fragen, was für einen USB Modus converter ihr benutzt?
Würde dieser auch funktionieren?

https://www.digitec.ch/de/s1/product/oem-yf-usb-zu-rs485-adapter-diverse-elektronikmodul-5999133

Gruss
alen
Raspberry Pi Model Model 2 SD 32GB
Jeelink
FHEM 5.6, 2x TX 29DTH-IT

Offline JF Mennedy

  • Full Member
  • ***
  • Beiträge: 165
Antw:Poolsteuerung per Modbus auslesen
« Antwort #17 am: 03 Juni 2020, 13:59:35 »
Hallo Alen,

Ich verwende die USB - RS485 Adapter von CTI (https://www.cti-shop.com/rs485-konverter/usb-485-mini-op). Die sind zwar etwas teuerer, da ich sie oft in der Industrie verwende und ich die halt vorrätig habe. Normalersweise sollte es auch mit den günstigeren Varianten funktionieren, er muss nur von Deinem OS als serielles Device erkannt werden werden. Das kannst Du mit folgendem Befehl in der Konsole prüfen: ls -al /dev/serial/by-id
Das gibt Dir eine Ausgabe die etwa so aussehen sollte:

lrwxrwxrwx 1 root root  13 Mai 29 09:54 usb-CTI_GmbH_USB-485-Mini_CTRBD29D-if00-port0 -> ../../ttyUSB0
In das Define kommt dann als Schnittstelle:

/dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0
anstelle von ttyUSB0...

Da ich verschiedene USB Adapter an meinem System benutze (für Modbus, M-Bus, Enocean, Bluetooth, Z-Wave) bevorzuge ich die Definition über die ID und nicht über die ttyUSBx Angabe, da diese bei Neustart wechseln kann.

Das define der ModbusLine sieht bei mir so aus (die SaltRelaxPro kommuniziert mit 19200, 8 N 1, daher die Schnittstelle mit diesen Parametern öffnen):

define ModBusLine Modbus /dev/serial/by-id/usb-CTI_GmbH_USB-485-Mini_CTRBD29D-if00-port0@19200,8,N,1
Wenn die ModbusLine den Status open hat, kannst Du Deine Steuerung als ModbusAttr definieren. DieSaltRelaxPro hat die ModbusAdresse 1 und soll alle 10 Sekundengepollt werden:

define NaturallySalt ModbusAttr 1 10

Gruss Jan

Offline JF Mennedy

  • Full Member
  • ***
  • Beiträge: 165
Antw:Poolsteuerung per Modbus auslesen
« Antwort #18 am: 30 Juni 2020, 22:56:23 »
Anbei noch das Foto von den benutzten Pins...

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1614
Antw:Poolsteuerung per Modbus auslesen
« Antwort #19 am: 30 Juli 2020, 23:34:58 »
Danke für das Photo, hatte es tatsächlich falsch angeschlossen.
Hast Du auch weitere dinge versucht wie das schalten der relais oder das schalten einer vario-pumpe oder der UV Anlage?

Leider hab ich von Modbus so gar keinen Plan....

Mit diesem Dokument hier stimmt a nichts überein, oder? (Wurde an anderer Stelle verlinkt)
https://downloads.vodnici.net/uploads/wpforo/attachments/69/171-Modbus-registers.pdf

sG Joe
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

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1614
Antw:Poolsteuerung per Modbus auslesen
« Antwort #20 am: 30 Juli 2020, 23:55:11 »
Noch eine Nachfrage: Weißt du, was darüber der 4-20mA stecker macht?
Und weißt du welcher Typ Temeratursendor auf dem Board passt? Der originale ist dieses Jahr nicht mehr lieferbar....
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

Offline JF Mennedy

  • Full Member
  • ***
  • Beiträge: 165
Antw:Poolsteuerung per Modbus auslesen
« Antwort #21 am: 31 Juli 2020, 09:18:51 »
Hallo,

doch das Dokument ist in Ordnung, Ich habe mir da die Register herausgeholt. Sie müssen allerdings von hex nach dezimal umgerechnet werden (Bsp. Register 0x0106 MBF_MEASURE_TEMPERATURE ist in FHEM obj-h00262-reading). Es fehlt leider die Registeradresse zum schalten der 3 Stufen der Pumpe, aber das Relais zum ein und ausschalten ist verfügbar.

UV habe ich nicht, kannst Du aber bestimmt an eins der freien Relais anschließen, ebenso wie einen Kontakt für eine Heizung. Die Pumpe darf auf keinen Fall direkt an die SR Pro angeschlossen werden, sondern an ein Relais bzw. Schütz. Wofür der 4-20mA Anschluss ist, kann ich Dir leider nicht sagen... Auch nicht für die Temperatur Sonde, aber die gibt es bei verschiedenen Online-Händlern...

Das ist meine derzeitige Konfig, mit der ich RX-Sollwert, pH-Sollwert und Pumpe schalten kann und auch die aktuellen Werte von RX, pH auslese

defmod NaturallySalt ModbusAttr 1 10
attr NaturallySalt userattr dev-h-defPoll dev-h-write obj-h00257-expr obj-h00257-reading 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 obj-h01057-expr obj-h01057-reading obj-h01068-allowWrite obj-h01068-expr obj-h01068-hint obj-h01068-max obj-h01068-min obj-h01068-reading obj-h01068-set obj-h01282-allowWrite obj-h01282-expr obj-h01282-hint obj-h01282-max obj-h01282-min obj-h01282-reading obj-h01282-set obj-h01282-setexpr obj-h01284-allowWrite obj-h01284-expr obj-h01284-hint obj-h01284-max obj-h01284-min obj-h01284-reading obj-h01284-set obj-h01284-setexpr obj-h01288-allowWrite obj-h01288-expr obj-h01288-hint obj-h01288-max obj-h01288-min obj-h01288-reading obj-h01288-set
attr NaturallySalt DbLogExclude .*
attr NaturallySalt DbLogInclude RX,Temperatur,pH
attr NaturallySalt IODev ModBusLine2
attr NaturallySalt alias NaturallySalt
attr NaturallySalt dev-h-defPoll 10
attr NaturallySalt dev-h-write 16
attr NaturallySalt disable 0
attr NaturallySalt group Pool
attr NaturallySalt icon virtualbox-alt
attr NaturallySalt obj-h00257-expr $val * 0.1
attr NaturallySalt obj-h00257-reading Hydro
attr NaturallySalt obj-h00258-expr $val * 0.01
attr NaturallySalt obj-h00258-reading pH
attr NaturallySalt obj-h00259-expr $val * 1
attr NaturallySalt obj-h00259-reading RX
attr NaturallySalt obj-h00262-expr $val * 0.1
attr NaturallySalt obj-h00262-reading Temperatur
attr NaturallySalt obj-h00263-reading pH-Status
attr NaturallySalt obj-h00264-reading RX-Status
attr NaturallySalt obj-h01041-allowWrite 1
attr NaturallySalt obj-h01041-expr $val * 1
attr NaturallySalt obj-h01041-hint 0,1,2,3,4,5,6,7
attr NaturallySalt obj-h01041-max 7
attr NaturallySalt obj-h01041-min 0
attr NaturallySalt obj-h01041-reading FiltrationsModus
attr NaturallySalt obj-h01041-set 1
attr NaturallySalt obj-h01043-allowWrite 1
attr NaturallySalt obj-h01043-expr $val * 1
attr NaturallySalt obj-h01043-hint 0,1
attr NaturallySalt obj-h01043-max 1
attr NaturallySalt obj-h01043-min 0
attr NaturallySalt obj-h01043-reading FiltrationsSchalterMan
attr NaturallySalt obj-h01043-set 1
attr NaturallySalt obj-h01057-expr $val * 1
attr NaturallySalt obj-h01057-reading FiltrationState
attr NaturallySalt obj-h01068-allowWrite 1
attr NaturallySalt obj-h01068-expr $val * 1
attr NaturallySalt obj-h01068-hint 0,1
attr NaturallySalt obj-h01068-max 1
attr NaturallySalt obj-h01068-min 0
attr NaturallySalt obj-h01068-reading Cover
attr NaturallySalt obj-h01068-set 1
attr NaturallySalt obj-h01282-allowWrite 1
attr NaturallySalt obj-h01282-expr $val * 0.1
attr NaturallySalt obj-h01282-hint 0,10,20,30,40,50,60,70,80,90,100
attr NaturallySalt obj-h01282-max 100
attr NaturallySalt obj-h01282-min 0
attr NaturallySalt obj-h01282-reading HydroSollwert
attr NaturallySalt obj-h01282-set 1
attr NaturallySalt obj-h01282-setexpr $val * 10
attr NaturallySalt obj-h01284-allowWrite 1
attr NaturallySalt obj-h01284-expr $val * 0.01
attr NaturallySalt obj-h01284-hint 6.8,6.9,7.0,7.1,7.2,7.4,7.5,7.6
attr NaturallySalt obj-h01284-max 7.6
attr NaturallySalt obj-h01284-min 6.8
attr NaturallySalt obj-h01284-reading phSollwert
attr NaturallySalt obj-h01284-set 1
attr NaturallySalt obj-h01284-setexpr $val * 100
attr NaturallySalt obj-h01288-allowWrite 1
attr NaturallySalt obj-h01288-expr $val * 1
attr NaturallySalt obj-h01288-hint 400,450,500,550,600,650
attr NaturallySalt obj-h01288-max 700
attr NaturallySalt obj-h01288-min 300
attr NaturallySalt obj-h01288-reading rxSollwert
attr NaturallySalt obj-h01288-set 1
attr NaturallySalt realRoom Schwimmbad
attr NaturallySalt room 00_Haus,11_Garten,12_Schwimmbad,35_Keller,73_GoogleHome
attr NaturallySalt stateFormat {sprintf("Temp: %.1f °C PH: %.2f Redox: %.0f Elektrolyse: %.0f", ReadingsNum($name,'Temperatur',0),ReadingsNum($name,'pH',0),ReadingsNum($name,'RX',0),ReadingsNum($name,'Hydro',0)  )}
attr NaturallySalt userReadings temperature { ReadingsNum($name,"Temperatur",0) }, \
state { ReadingsVal($name,"FiltrationState",0) }
attr NaturallySalt webCmd FiltrationsModus:FiltrationsSchalterMan:phSollwert:rxSollwert:HydroSollwert
attr NaturallySalt webCmdLabel FiltrationsModus:FiltrationsSchalterMan:phSollwert:rxSollwert:HydroSollwert

Die Stufe der Pumpe schalte ich über ein HTTPMOD Device (welches auch die Werte von der SR Pro abholt):

defmod NaturallySaltWeb HTTPMOD http://naturally-salt-poolaccess.de/de/pool/getmainvalues?id=7440 60
attr NaturallySaltWeb userattr reading100JSON reading100Name reading101JSON reading101Name reading102JSON reading102Name reading103JSON reading103Name reading104JSON reading104Name reading105JSON reading105Name reading106JSON reading106Name reading107JSON reading107Name reading108JSON reading108Name reading109JSON reading109Name reading110JSON reading110Name reading111JSON reading111Name reading112JSON reading112Name reading113JSON reading113Name reading114JSON reading114Name reading115JSON reading115Name reading116JSON reading116Name reading117JSON reading117Name reading118JSON reading118Name reading119JSON reading119Name reading120JSON reading120Name reading121JSON reading121Name reading122JSON reading122Name reading123JSON reading123Name reading124JSON reading124Name reading125JSON reading125Name reading126JSON reading126Name reading127JSON reading127Name reading128JSON reading128Name reading129JSON reading129Name reading130JSON reading130Name reading131JSON reading131Name reading132JSON reading132Name set01Data set01Hint set01Name set01URL set02Data set02Hint set02Name set02URL set03Data set03Hint set03Name set03URL set04Data set04Hint set04Name set04URL set05Data set05Hint set05Max set05Min set05Name set05URL set06Data set06Hint set06Max set06Min set06Name set06URL set07Data set07Hint set07Max set07Min set07Name set07URL set08Data set08Hint set08Max set08Min set08Name set08URL setHeader1 setHeader2 sid01Data sid01URL
attr NaturallySaltWeb DbLogExclude .*
attr NaturallySaltWeb alias NaturallySalt
attr NaturallySaltWeb enableControlSet 1
attr NaturallySaltWeb enableCookies 1
attr NaturallySaltWeb enableXPath 1
attr NaturallySaltWeb enforceGoodReadingNames 0
attr NaturallySaltWeb extractAllJSON 1
attr NaturallySaltWeb gassistantName Schwimmbad
attr NaturallySaltWeb genericDeviceType thermometer
attr NaturallySaltWeb group Pool
attr NaturallySaltWeb handleRedirects 1
attr NaturallySaltWeb icon virtualbox-alt
attr NaturallySaltWeb reAuthRegex id="pass"|data-validation-engine
attr NaturallySaltWeb reading100JSON RX_status_current
attr NaturallySaltWeb reading100Name RX_status_current
attr NaturallySaltWeb reading101JSON CL_status_hidro
attr NaturallySaltWeb reading101Name CL_status_hidro
attr NaturallySaltWeb reading102JSON CL
attr NaturallySaltWeb reading102Name CL
attr NaturallySaltWeb reading103JSON PH_status_hi_value
attr NaturallySaltWeb reading103Name PH_status_hi_value
attr NaturallySaltWeb reading104JSON RXColor_hex
attr NaturallySaltWeb reading104Name RXColor_hex
attr NaturallySaltWeb reading105JSON CLColor_class
attr NaturallySaltWeb reading105Name CLColor_class
attr NaturallySaltWeb reading106JSON CL1
attr NaturallySaltWeb reading106Name CL1
attr NaturallySaltWeb reading107JSON RXColor_class
attr NaturallySaltWeb reading107Name RXColor_class
attr NaturallySaltWeb reading108JSON temp
attr NaturallySaltWeb reading108Name temp
attr NaturallySaltWeb reading109JSON PH
attr NaturallySaltWeb reading109Name PH
attr NaturallySaltWeb reading110JSON CLColor_hex
attr NaturallySaltWeb reading110Name CLColor_hex
attr NaturallySaltWeb reading111JSON PH_status_type
attr NaturallySaltWeb reading111Name PH_status_type
attr NaturallySaltWeb reading112JSON RX1
attr NaturallySaltWeb reading112Name RX1
attr NaturallySaltWeb reading113JSON CL_status_current
attr NaturallySaltWeb reading113Name CL_status_current
attr NaturallySaltWeb reading114JSON RX_status_hidro
attr NaturallySaltWeb reading114Name RX_status_hidro
attr NaturallySaltWeb reading115JSON lightStat_status_type
attr NaturallySaltWeb reading115Name lightStat_status_type
attr NaturallySaltWeb reading116JSON RX
attr NaturallySaltWeb reading116Name RX
attr NaturallySaltWeb reading117JSON CD1
attr NaturallySaltWeb reading117Name CD1
attr NaturallySaltWeb reading118JSON lightStat_status_status
attr NaturallySaltWeb reading118Name lightStat_status_status
attr NaturallySaltWeb reading119JSON CDColor_class
attr NaturallySaltWeb reading119Name CDColor_class
attr NaturallySaltWeb reading120JSON local_time
attr NaturallySaltWeb reading120Name local_time
attr NaturallySaltWeb reading121JSON PH_status_color_class
attr NaturallySaltWeb reading121Name PH_status_color_class
attr NaturallySaltWeb reading122JSON PH_status_alarm
attr NaturallySaltWeb reading122Name PH_status_alarm
attr NaturallySaltWeb reading123JSON CD
attr NaturallySaltWeb reading123Name CD
attr NaturallySaltWeb reading124JSON filtration_time_remaining
attr NaturallySaltWeb reading124Name filtration_time_remaining
attr NaturallySaltWeb reading125JSON filtration_stat
attr NaturallySaltWeb reading125Name filtration_stat
attr NaturallySaltWeb reading126JSON CL_status_status
attr NaturallySaltWeb reading126Name CL_status_status
attr NaturallySaltWeb reading127JSON RX_status_status
attr NaturallySaltWeb reading127Name RX_status_status
attr NaturallySaltWeb reading128JSON PH_status_status
attr NaturallySaltWeb reading128Name PH_status_status
attr NaturallySaltWeb reading129JSON PH_status_color_hex
attr NaturallySaltWeb reading129Name PH_status_color_hex
attr NaturallySaltWeb reading130JSON CD_status
attr NaturallySaltWeb reading130Name CD_status
attr NaturallySaltWeb reading131JSON CDColor_hex
attr NaturallySaltWeb reading131Name CDColor_hex
attr NaturallySaltWeb reading132JSON filtration_mode
attr NaturallySaltWeb reading132Name filtration_mode
attr NaturallySaltWeb realRoom Schwimmbad
attr NaturallySaltWeb room 11_Garten,35_Keller
attr NaturallySaltWeb set01Data data={"mode": $val}
attr NaturallySaltWeb set01Hint 0,1
attr NaturallySaltWeb set01Name Pumpe
attr NaturallySaltWeb set01URL http://naturally-salt-poolaccess.de/de/pool/setfiltrationvalues
attr NaturallySaltWeb set02Data data={"mode": 1 , "vel": $val}
attr NaturallySaltWeb set02Hint 0,1,2
attr NaturallySaltWeb set02Name Pumpenstufe
attr NaturallySaltWeb set02URL http://naturally-salt-poolaccess.de/de/pool/setfiltrationvalues
attr NaturallySaltWeb set03Data data=%7B%22type%22%3A0%2C%22mode%22%3A1%2C%22vel%22%3A$val%7D&int=%5B%5D&vel=%5B%5D
attr NaturallySaltWeb set03Hint 1
attr NaturallySaltWeb set03Name PumpeStufe2
attr NaturallySaltWeb set03URL http://naturally-salt-poolaccess.de/de/pool/setfiltrationvalues
attr NaturallySaltWeb set04Data data=%7B%22type%22%3A0%2C%22mode%22%3A1%2C%22vel%22%3A$val%7D&int=%5B%5D&vel=%5B%5D
attr NaturallySaltWeb set04Hint 2
attr NaturallySaltWeb set04Name PumpeStufe3
attr NaturallySaltWeb set04URL http://naturally-salt-poolaccess.de/de/pool/setfiltrationvalues
attr NaturallySaltWeb set05Data type=0&status=$val&freq=86400&start=20%3A00&end=23%3A00
attr NaturallySaltWeb set05Hint 0,1
attr NaturallySaltWeb set05Max 1
attr NaturallySaltWeb set05Min 0
attr NaturallySaltWeb set05Name Licht
attr NaturallySaltWeb set05URL http://naturally-salt-poolaccess.de/de/pool/setlightvalues
attr NaturallySaltWeb set06Data id=7440&acid=$val&base=NaN&type=ACID
attr NaturallySaltWeb set06Hint 700,710,720,730,740,750
attr NaturallySaltWeb set06Max 750
attr NaturallySaltWeb set06Min 700
attr NaturallySaltWeb set06Name SollwertPH
attr NaturallySaltWeb set06URL http://naturally-salt-poolaccess.de/de/pool/setphvalue
attr NaturallySaltWeb set07Data id=7440&val=$val
attr NaturallySaltWeb set07Hint 500,550,600,650,700,750,800
attr NaturallySaltWeb set07Max 800
attr NaturallySaltWeb set07Min 500
attr NaturallySaltWeb set07Name SollwertRedox
attr NaturallySaltWeb set07URL http://naturally-salt-poolaccess.de/de/pool/setrxvalue
attr NaturallySaltWeb set08Data id=7440&level=$val&cover=0&reduction=20&cloration=0&hidroControl=cl&disable=0&hidroTemp=0&hidroTempValue=5
attr NaturallySaltWeb set08Hint 0,10,20,30,40,50,60,70,80,90,95,100
attr NaturallySaltWeb set08Max 100
attr NaturallySaltWeb set08Min 0
attr NaturallySaltWeb set08Name SollwertElektrolyse
attr NaturallySaltWeb set08URL http://naturally-salt-poolaccess.de/de/pool/sethidrovalue
attr NaturallySaltWeb setHeader1 Content-Type: application/x-www-form-urlencoded;; charset=UTF-8
attr NaturallySaltWeb setHeader2 User-Agent: Mozilla/5.0 (Windows NT 10.0;; Win64;; x64)
attr NaturallySaltWeb sid01Data user=deine@email.de&pass=DeinPasswort&remember_password=1&entrar=Eingabe
attr NaturallySaltWeb sid01URL http://naturally-salt-poolaccess.de/de/login/login
attr NaturallySaltWeb stateFormat {sprintf("Temp: %.1f °C PH: %.1f Redox: %.0f Elektrolyse: %.0f", ReadingsNum($name,'temp',0),ReadingsNum($name,'PH',0),ReadingsNum($name,'RX',0),ReadingsNum($name,'RX_status_current',0)  )}
attr NaturallySaltWeb userReadings temperature { ReadingsNum($name,"Temperatur",0) }, \
state { ReadingsVal($name,"FiltrationState",0) }
attr NaturallySaltWeb verbose 0
attr NaturallySaltWeb webCmd SollwertPH:SollwertRedox:SollwertElektrolyse:Pumpe:Pumpenstufe
attr NaturallySaltWeb webCmdLabel PH:Redox:Elektrolyse:Pumpe:Stufe

Gruss Jan

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1614
Antw:Poolsteuerung per Modbus auslesen
« Antwort #22 am: 31 Juli 2020, 11:10:46 »
Vielen Dank für die Infos, das ist eine riesen Hilfe!

Nun, WiFi Modul habe ich keines da da draußen eh kein Empfang ist und die Rohre ins Haus fast 40m lang sind.
Aber zumindest kann ich über das Pumpen Relais abgreifen, ob die Pumpe laufen sollte oder nicht. Die Stufe kann ich in der Haussteuerung einstellen, aber wollte die Verantwortung dafür Kerne an die pool Steuerung "abgeben".
Vielleicht muss ich einfach den Status der Klemmen über einen sensor abgreifen.
Die Pumpe selbst hängt an einem Relais, da sie per Luftdruckschalter direkt aus dem Pool heraus in der Geschwindigkeit geregelt werden kann.
Mweist du wie diese Stecker heißen, die du an pin 3 und 4 angebracht hast? Mein Kabel ist noch sehr provisorisch an dem Stecker befestigt.

Danke vielmals, LG Joe
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

Offline JF Mennedy

  • Full Member
  • ***
  • Beiträge: 165
Antw:Poolsteuerung per Modbus auslesen
« Antwort #23 am: 31 Juli 2020, 11:29:43 »
Ich habe da einfache Jumper Kabel für benutzt, die aus der Steuerung herausgeführt sind und dann auf die Busleitung angeklemmt sind.

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1614
Antw:Poolsteuerung per Modbus auslesen
« Antwort #24 am: 01 August 2020, 08:29:35 »
Super, danke.

Habe noch das gefunden:
0x0100
Hidro shock enabled – Chlorine boost activated.

Das sollte ich ja dann auch noch hinzufügen können, oder?

Werde es mal versuchen, doch wie rechne ich dies zu dezimal um?
Wäre das dann 256?

Edit: Scheint nicht zu funktionieren, bekomme immer die 0 als ergebnis
« Letzte Änderung: 01 August 2020, 08:45:51 von JoeALLb »
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

Offline JF Mennedy

  • Full Member
  • ***
  • Beiträge: 165
Antw:Poolsteuerung per Modbus auslesen
« Antwort #25 am: 01 August 2020, 10:55:33 »
Ja du kannst alles an Registern auslesen... Wenn Du eine 0 zurück bekommst, dann ist die schockchlorung deaktiviert... Von hex in dez kannst Du ganz einfach mit dem Windows Rechner umrechnen. Den Rechner auf Programmierer umschalten... Ich habe mich gestern noch amüsiert und die bit-maskierten register des Relais Status und ph, RX stati zu implementieren...
defmod NaturallySalt ModbusAttr 1 10
attr NaturallySalt userattr dev-h-defPoll dev-h-write obj-h00257-expr obj-h00257-reading obj-h00258-expr obj-h00258-reading obj-h00259-expr obj-h00259-reading obj-h00260-expr obj-h00260-reading obj-h00261-expr obj-h00261-reading obj-h00262-expr obj-h00262-reading obj-h00263-reading obj-h00263-unpack obj-h00264-reading obj-h00264-unpack obj-h00270-reading obj-h00270-unpack 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 obj-h01057-expr obj-h01057-reading obj-h01068-allowWrite obj-h01068-expr obj-h01068-hint obj-h01068-max obj-h01068-min obj-h01068-reading obj-h01068-set obj-h01282-allowWrite obj-h01282-expr obj-h01282-hint obj-h01282-max obj-h01282-min obj-h01282-reading obj-h01282-set obj-h01282-setexpr obj-h01284-allowWrite obj-h01284-expr obj-h01284-hint obj-h01284-max obj-h01284-min obj-h01284-reading obj-h01284-set obj-h01284-setexpr obj-h01288-allowWrite obj-h01288-expr obj-h01288-hint obj-h01288-max obj-h01288-min obj-h01288-reading obj-h01288-set
attr NaturallySalt DbLogExclude .*
attr NaturallySalt DbLogInclude RX,Temperatur,pH,pH-Minus
attr NaturallySalt IODev ModBusLine2
attr NaturallySalt alias NaturallySalt
attr NaturallySalt dev-h-defPoll 10
attr NaturallySalt dev-h-write 16
attr NaturallySalt disable 0
attr NaturallySalt group Pool
attr NaturallySalt icon virtualbox-alt
attr NaturallySalt obj-h00257-expr $val * 0.1
attr NaturallySalt obj-h00257-reading Hydro
attr NaturallySalt obj-h00258-expr $val * 0.01
attr NaturallySalt obj-h00258-reading pH
attr NaturallySalt obj-h00259-expr $val * 1
attr NaturallySalt obj-h00259-reading RX
attr NaturallySalt obj-h00260-expr $val * 1
attr NaturallySalt obj-h00260-reading Chlor
attr NaturallySalt obj-h00261-expr $val * 1
attr NaturallySalt obj-h00261-reading Conductivity
attr NaturallySalt obj-h00262-expr $val * 0.1
attr NaturallySalt obj-h00262-reading Temperatur
attr NaturallySalt obj-h00263-reading pH-Status
attr NaturallySalt obj-h00264-reading RX-Status
attr NaturallySalt obj-h00270-reading Relais-Status
attr NaturallySalt obj-h01041-allowWrite 1
attr NaturallySalt obj-h01041-expr $val * 1
attr NaturallySalt obj-h01041-hint 0,1,2,3,4,5,6,7
attr NaturallySalt obj-h01041-max 7
attr NaturallySalt obj-h01041-min 0
attr NaturallySalt obj-h01041-reading FiltrationsModus
attr NaturallySalt obj-h01041-set 1
attr NaturallySalt obj-h01043-allowWrite 1
attr NaturallySalt obj-h01043-expr $val * 1
attr NaturallySalt obj-h01043-hint 0,1
attr NaturallySalt obj-h01043-max 1
attr NaturallySalt obj-h01043-min 0
attr NaturallySalt obj-h01043-reading FiltrationsSchalterMan
attr NaturallySalt obj-h01043-set 1
attr NaturallySalt obj-h01057-expr $val * 1
attr NaturallySalt obj-h01057-reading FiltrationState
attr NaturallySalt obj-h01068-allowWrite 1
attr NaturallySalt obj-h01068-expr $val * 1
attr NaturallySalt obj-h01068-hint 0,1
attr NaturallySalt obj-h01068-max 1
attr NaturallySalt obj-h01068-min 0
attr NaturallySalt obj-h01068-reading Cover
attr NaturallySalt obj-h01068-set 1
attr NaturallySalt obj-h01282-allowWrite 1
attr NaturallySalt obj-h01282-expr $val * 0.1
attr NaturallySalt obj-h01282-hint 0,10,20,30,40,50,60,70,80,90,100
attr NaturallySalt obj-h01282-max 100
attr NaturallySalt obj-h01282-min 0
attr NaturallySalt obj-h01282-reading HydroSollwert
attr NaturallySalt obj-h01282-set 1
attr NaturallySalt obj-h01282-setexpr $val * 10
attr NaturallySalt obj-h01284-allowWrite 1
attr NaturallySalt obj-h01284-expr $val * 0.01
attr NaturallySalt obj-h01284-hint 6.8,6.9,7.0,7.1,7.2,7.4,7.5,7.6
attr NaturallySalt obj-h01284-max 7.6
attr NaturallySalt obj-h01284-min 6.8
attr NaturallySalt obj-h01284-reading phSollwert
attr NaturallySalt obj-h01284-set 1
attr NaturallySalt obj-h01284-setexpr $val * 100
attr NaturallySalt obj-h01288-allowWrite 1
attr NaturallySalt obj-h01288-expr $val * 1
attr NaturallySalt obj-h01288-hint 400,450,500,550,600,650
attr NaturallySalt obj-h01288-max 700
attr NaturallySalt obj-h01288-min 300
attr NaturallySalt obj-h01288-reading rxSollwert
attr NaturallySalt obj-h01288-set 1
attr NaturallySalt realRoom Schwimmbad
attr NaturallySalt room 00_Haus,11_Garten,12_Schwimmbad,35_Keller,73_GoogleHome
attr NaturallySalt stateFormat {sprintf("Temp: %.1f °C PH: %.2f Redox: %.0f Elektrolyse: %.0f pH-Minus: %d", ReadingsNum($name,'Temperatur',0),ReadingsNum($name,'pH',0),ReadingsNum($name,'RX',0),ReadingsNum($name,'Hydro',0),ReadingsVal($name,'pH-Minus',0)  )}
attr NaturallySalt userReadings temperature { ReadingsNum($name,"Temperatur",0) }, \
state { ReadingsVal($name,"FiltrationState",0) },\
PH_STATUS { sprintf("%016b",ReadingsVal($name,"pH-Status",0)) },\
RX_STATUS { sprintf("%016b",ReadingsVal($name,"RX-Status",0)) },\
RELAIS_STATUS { sprintf("%016b",ReadingsVal($name,"Relais-Status",0)) },\
pH-Minus { (split //,ReadingsVal($name,"RELAIS_STATUS","0000000000000000"))[15]}\

attr NaturallySalt webCmd FiltrationsModus:FiltrationsSchalterMan:phSollwert:rxSollwert:HydroSollwert
attr NaturallySalt webCmdLabel FiltrationsModus:FiltrationsSchalterMan:phSollwert:rxSollwert:HydroSollwert

Somit weiss ich wie oft und wie lange die PH minus Pumpe gelaufen ist :-)

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1614
Antw:Poolsteuerung per Modbus auslesen
« Antwort #26 am: 01 August 2020, 11:00:34 »
Danke vielmals!

Das mit der Schockchlorierung klappt bei mir leider nicht, da wird immer die 0 angezeigt.
Lässt du dein Gerät permanent eingeschaltet?
Ich habe aktuell auch das Problem, dass nach dem einschalten des Gerätes stark negative Werte einmalig gesendet werden. Hast du saß auch? Filtert du das irgendwie?


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

Offline JF Mennedy

  • Full Member
  • ***
  • Beiträge: 165
Antw:Poolsteuerung per Modbus auslesen
« Antwort #27 am: 01 August 2020, 11:13:14 »
Ne meine Anlage läuft durch...

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1614
Antw:Poolsteuerung per Modbus auslesen
« Antwort #28 am: 01 August 2020, 20:36:57 »
Zur Info: Ich habe einfach PH und RX jeweils mit Min und Max begrenzt,um beim Start die negativen Werte zu verhindern,klappt bestens, seither sehen meine Plots besser aus!

sG Joe
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

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1614
Antw:Poolsteuerung per Modbus auslesen
« Antwort #29 am: 01 August 2020, 23:24:53 »
Anbei noch veränderte Userreadings. Diese sind gefiltert, lösen also nicht alle bei jedem event aus.
Zusätzlich habe ich eventValues verwendet.
Vielleicht interessierts dich :D

temperature:Temperatur.* { $eventValue },
state:FiltrationState.* { $eventValue },
PH_STATUS:pH-Status.* { sprintf("%016b",$eventValue) },
RX_STATUS:RX-Status.* { sprintf("%016b",$eventValue) },
RELAIS_STATUS:Relais-Status.* { sprintf("%016b",$eventValue) },
pH-Minus:RELAIS_STATUS.* { (split //,$eventValue)[15]}
« Letzte Änderung: 01 August 2020, 23:48:00 von JoeALLb »
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

 

decade-submarginal