ModbusSET

Aus FHEMWiki
Wechseln zu: Navigation, Suche
ModbusSET
Zweck / Funktion
Control / Extract information from SET Silent Pool Heat pumps
Allgemein
Typ Gerätemodul
Details
Dokumentation EN / DE
Support (Forum) Sonstiges
Modulname 98_ModbusSET.pm
Ersteller StefanStrobel (Forum / Wiki)
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!

ModbusSET allows to control / communicate with Silent 10 pool heat pumps from Schmidt Energie Technik (SET). These heat pumps provide a Modbus interface over RS485. The module probably works with other heat pumps from SET as well and since the control device used in these heat pumps is an iChill IC121 from Dixell, it could even work for other heat pumps with this controller as well or with few changes. It defines the modbus holding registers for the temperature sensors and reads them in a defined interval.

The module can also be used as a programming example for the usage of the base Modbus module.

Availability

The module has been checked in

Prerequisites

This module requires the basic Modbus module which itsef requires Device::SerialPort or Win32::SerialPort module.

Define

define <name> ModbusSET <Id> <Interval>

The module connects to the heat pump with Modbus Id <Id> through an already defined modbus device and actively requests data from the heat pump every <Interval> seconds

Example:

define WP ModbusSET 1 60

Configuration of the module

apart from the modbus id and the interval which both are specified in the define command there is nothing that needs to be defined. However there are some attributes that can optionally be used to modify the behavior of the module.

The attributes that control which messages are sent / which data is requested every <Interval> seconds are:

poll-Hyst_Mode
poll-Temp_Luft
poll-Temp_Wasser_Aus_Off
poll-Temp_Wasser_Ein_Off
poll-Temp_Wasser_Aus
poll-Hysterese
poll-Temp_Wasser_Ein
poll-Temp_Soll
poll-Temp_Luft_Off
poll-Temp_Verdampfer
poll-Temp_Verdampfer_Off

if the attribute is set to 1, the corresponding data is requested every <Interval> seconds. If it is set to 0, then the data is not requested.

by default the temperatures are requested if no attributes are set. if some readings should be polled, but less frequently than the normal interval, you can specify a pollDelay-Attribute for the reading. The pollDelay attribute allows to poll objects at a lower rate than the interval specified in the define command. you can either specify a time in seconds or number prefixed by "x" which means a multiple of the interval of the define command. if you specify a normal number then it is interpreted as minimal time between the last read and another automatic read. Please note that this does not create an individual interval timer. Instead the normal interval timer defined by the interval of the define command will check if this reading is due or not yet. So the effective interval will always be a multiple of the interval of the define.

Example:

define WP ModbusSET 1 60
attr WP poll-Temp_Soll 0
attr WP pollDelay-Hysterese 300

Set-Commands

The following set options are available:

Hysterese (defines the hysterese in Kelvin)
Hyst_Mode (defines the interpretation of hysterese for the heating and can be set to mittig, oberhalb or unterhalb)
Temp_Wasser_Aus_Off (offset of sensor in Kelvin - used to kalibrate)
Temp_Wasser_Ein_Off (offset of sensor in Kelvin - used to kalibrate)
Temp_Luft_Off (offset of sensor in Kelvin - used to kalibrate)
Temp_Verdampfer_Off (offset of sensor in Kelvin - used to kalibrate)
Temp_Soll (target temperature of the heating pump)

Get-Commands

All readings are also available as Get commands. Internally a Get command triggers the corresponding request to the device and then interprets the data and returns the right field value. To avoid huge option lists in FHEMWEB, only the most important Get options are visible in FHEMWEB. However this can easily be changed since all the readings and protocol messages are internally defined in the modue in a data structure and to make a Reading visible as Get option only a little option (e.g. showget => 1 has to be added to this data structure

Attributes

do_not_notify
readingFnAttributes
poll-Hyst_Mode
poll-Temp_Luft
poll-Temp_Wasser_Aus_Off
poll-Temp_Wasser_Ein_Off
poll-Temp_Wasser_Aus
poll-Hysterese
poll-Temp_Wasser_Ein
poll-Temp_Soll
poll-Temp_Luft_Off
poll-Temp_Verdampfer
poll-Temp_Verdampfer_Off
include a read request for the corresponding registers when sending requests every interval seconds
pollDelay-*
set a delay for polling individual Readings. In case some readings should be polled less frequently than the normal delay specified during define. Specifying a pollDelay will not create an individual timer for polling this reading but check if the delay is over when the normal update interval is handled.
You can either specify a time in seconds or number prefixed by "x" which means a multiple of the interval of the define command. If you specify a normal numer then it is interpreted as minimal time between the last read and another automatic read. Please note that this does not create an individual interval timer. Instead the normal interval timer defined by the interval of the define command will check if this reading is due or not yet. So the effective interval will always be a multiple of the interval of the define.
dev-timing-timeout
set the timeout for reads, defaults to 2 seconds
dev-timing-minSendDelay
minimal delay between two requests sent to this device
dev-timing-minCommDelay
minimal delay between requests or receptions to/from this device