This adapter uses Sentry libraries to automatically report exceptions and code errors to the developers. For more details and for information how to disable the error reporting see Sentry-Plugin Documentation! Sentry reporting is used starting with js-controller 3.0.
If you like it, please consider a donation:
I'm looking for support in creating / updating the user documentation and the FAQ's. If someone is interested, please contact me...
Adapter for controlling your heating system.
- Control the setpoint temperature levels of all thermostats per schedules
- Configure multiple heating periods for each day and night
- Supports all kind of thermostats (precondition: it must be available in ioBroker)
- Homematic device autodetection
- supports multiple profiles
- If there is no direct connection between the thermostat and the actuator, the actuator can be switched directly out of the adapter
- Currently, the actuator is switched off directly when the setpoint temperature is reached. As soon as the setpoint temperature is below the actual temperature, the actuator will be switched on. (To do: implement improved control)
- unlimited number of thermostats, actuators and sonsors per room are supported
- Thermostat, actuator and sensor are automatically detected per room. The function (eg "heating") is used for this.
- Rooms can be excluded within the admin interface, if a room contains a thermostat but should not be controlled
- sensor is used to reduce target temperature (e.g. if a window is open); optionally with SensorDelay
- interface to Feiertag-Adapter or any others to detect public holiday. Public holiday can be a normal day or like sundays. (admin setting)
- manual temperature override for a certain time
- predefined heating period
- take over changes from thermostat (optional)
- visualization from Pittini is supported. Thank you!
- Function = Function to be used to detect thermostats, actuators and sensors per room. It's one of the sytem enums
- timezone = to be used for cron to adjust cron jobs
- Path to Feiertag - Adapter = if you wnat to use Feiertag-Adapter to dectect automatically public holiday for today then set the path here (e.g. feiertage.0)
- delete all devices when admin opens = should be disabled. Enable it only when you need to delete all room, actuator and sensor settings. A device search will be executed when adapter admin opens
- sensor used = if you have window sensors and you want to decrease target temperature when window is open then enable that option
- actuators used = if you want to control actuators directly from adapter. Just in case there is no direct connection between thermostat and actuator.
- use actuators if no heating period = only valid with actuators. Defines how actuators are set when no heating period is active
- use actuators if no thermostat available = only valid with actuators. If you have rooms without thermostat but with heating actuator you can switche them on or off permanantly
- Profile Type = three different profile types (Monday - Sunday, or Monday - Friday and Suturday/Sunday or every day) are supported
- number of profiles = if you need more then on profile increase that value. You can then select which profile will be used.
- number of periods = define how many daily sections with different temperature you need. As more you set as more datapoints will be created. Better to use a low value (e.g. 5)
- "public holiday like sunday = if you want to set target temperatures on public holiday like sunday enable that option. Otherwise public holiday settings are the same as on normal days
- HeatingPeriod = start and end date of heating period. Used to set "HeatingPeriodActive"
- a list of all rooms. You can disable a room here.
- press edit button on right hand side to open settings window for thermostats, actuators and sensors for that room
- here you can verifay and set object ID's for thermostats, actuators and sensors
- you can add manually new thermostats, actuators or sensors. Just press + button. Then you get an empty line which needs to filled up. The Edit-Button opens a list of available devices on the system
- thermostats: ** name, temperature target OID and current temperature OID should be set.
- actuators ** name and OID for state should be set
- sensors ** name and OID for current state should be set
|HeatingPeriodActive||if off, the profiles will not be used|
|CurrentProfile||select current profile (1 based, means profile 1 use datapoints under heatingcontrol.0.Profiles.0 )|
|LastProgramRun||shows last time when adapter run|
temperature decrease / increase
|DP name||description||target temperature for relative decrease||target temperature for absolute decrease|
|GuestsPresent||increase temperature because guests wants it warmer||increase current profile temperature by Profiles.0.room.GuestIncrease||set target to Profiles.0.room.absolute.GuestIncrease|
|PartyNow||decrease temperature because it's becoming hot'||decrease current profile temperature by Profiles.0.room.PartyDecrease||set target to Profiles.0.room.absolute.PartyDecrease|
|Present||we are present, if we are not present decrease temperature||decrease current profile temperature by Profiles.0.room.AbsentDecrease||set target to Profiles.0.room.absolute.AbsentDecrease|
|VacationAbsent||we are absent, so decrease also on weekend||decrease current profile temperature by Profiles.0.room.VacationAbsentDecrease||set target to Profiles.0.room.absolute.VacationAbsentDecrease|
|FireplaceModeActive||decrease temperature bacause you use a fireplace, will be||decrease current profile temperature by Profiles.0.room.FireplaceModeDecrease||set target to Profiles.0.room.absolute.FireplaceModeDecrease|
|reseted automatically at adjustable time|
- in both szenarious only one lowering is used (in previous version of adapter more then one degreases could be used)
- in absolute degrease szenario only target values not equal 0°C are used. If you do not need any lowering for a certain room then keep decrease-values at 0°C
no heating period
there are three options
- fix Temperature per room if this option is selected, a new datapoint in object tree appears for every room. Here you can set a fix target temperature which is set when heating period is not active.
- fix Temperature for all rooms with this option you can use one target temperature for every room when heating period is not active
- nothing with this option nothing will be sent to thermostat if no heating period is active. Target temperature remain from last taget when heating period still was active. In that case and if you use actuators from the adapter then you have the possibilty to define how actuators should be set (off, on, or leave it as it is)
- HolidayPresent / PublicHolidyToday If you enable "Holiday present like sunday" or "public holiday like sunday" in admin, the profile for sunday is used when adapter is informed that today is a public holiday or you are at home in holiday.
if "use sensors" is active and sensor(s) for a room is / are configured then
- decrease current profile temperature when window is open (true) by Profiles.0.room.WindowOpenDecrease if relative decrease is configured
- set target to Profiles.0.room.absolute.WindowOpenDecrease when window is open (true) if absolute decrease is configured
optionally a delay can be used. If window is opened only for a short time sensor delay can avoid from reduce and back to normal in very short times.
you can use your calendar or any other datapoint to change datapoints in adapter. Just configure events from ical or other datapoints in admin. Supported are
|heatingcontrol.0.Present||set it to true (in case of boolean) or to a number higher then limit (in case of number)|
|heatingcontrol.0.HolidayPresent||set it to true when you at home in your holiday|
|heatingcontrol.0.VacationAbsent||set it to true when you not at home in your holiday|
|heatingcontrol.0.GuestsPresent||set it to true (in case of boolean) or to a number higher then limit (in case of number)|
|heatingcontrol.0.PartyNow||set it to true (in case of boolean) or to a number higher then limit (in case of number)|
hint: with number datapoints you could count how many people are in the house and then decide, e.g. we have enough for a party...
use changes from thermostat
Many user asked for an option to take over changes from thermostat into adapter. Now a four options are implemented:
|no||changes from thermostat are ignored|
|as override||changes from thermostat are taken as override; override time must be set in advance in heatingcontrol.0.Rooms.RoomName.TemperaturOverrideTime|
|if override time is not set, than override is not executed|
|as new profile setting||changes from thermostat are taken as target temperature for current profile period|
|until next profile point||changes from thermostat are taken as target temperature until next profile point. This is a manual mode, so only Window sensors are used. All other|
|increases / decreases are ignored. There is a datapoint in every room to disable manual mode before reaching next profile point.|
extend override when temperature is changed
The standard behavior for override is, when you change temperature the override time is not changed. E.g if you start override for 20 minutes with 25°C and you change to 28°C after 15 minutes then 28°C is only used for the last 5 minutes. With that option you restart override whenever you change override temperature. In example above 28°C would then be used for 20 minutes which leads to 15 minutes 25°C and 20 minutes 28°C
There are two mode adjustable in admin for all rooms.
- timer controlled this is the wellknown function, which uses a temperature and a duration. The given temperature is used for the duration and then temperature target will set back to value in auto mode
- until next profile point this is a new function. Here we can use a temperature override until next profile point. The duration will be ignored but must be non-zero!
Thermostat handles "window is open"
Some thermostats can handle "window is open" by itself. In those cases a direct connection between window sensor and thermostat is configured and thermostat reduces target temperature by itslef when a window is opened. In combination with option "use of changes from thermostat" / "until next profil point" will lead this to an unexpected manual state. In this situation the reduced temperature would be used until next profil point. But the adpater can handle this behavior. You must enable option "Thermostat handles 'Window is Open'" and you can configure window sensors also in adapter. When window is opened the adapter waits for max. 3 seconds for new target temperature from thermostat. If it receives a new target temperature in that time it will be used as a reduced absolut temperature. Status will then be "auto window open". As soon as the window is closed the status goes back to auto and thermostat sets back the original target temperature Attention do not use Sensor Open Delay in that case. If you use it, the Window open event appears after target temperature received from thermostat. This ends up in manual state.
Copy period and copy profile
CopyProfile copies the entire content of the profile where the button is pressed to the next profile. In the above example, the button is in profile 1. The button copies everything from profile 1 to profile 2. If you want to copy only one room, use the button in a certain room.
The CopyPeriods are available per day or Mon-Fri per room. This copies the periods to the next section. In the above example, the CopyPeriods copies all periods from Friday in the kitchen room to the periods on Saturday in the kitchen room. So you can e.g. in the profile "every day separately", copy the periods from Monday to Sunday ...
switch between linear and linear with hysteresis
describe two new datapoints heatingcontrol.0.Rooms.TestRaum.Regulator.HysteresisOffOffset and heatingcontrol.0.Rooms.TestRaum.Regulator.HysteresisOnOffset
Issues and Feature Requests
- If you are faced with any bugs or have feature requests for this adapter, please create an issue within the GitHub issue section of the adapter at github. Any feedback is appreciated and will help to improve this adapter.
Adapter with Homematic IP Fußbodenheizungsaktor HmIP-FAL230-C10 – 10fach, 230 V
It seems that HmIP-FAL230-C10 can not be used directly as an actuator in combination with that adapter. If you use HmIP-FAL230-C10 together with Homematic thermostats it should work. see also Forum
Window-open function of HM thermostats
HM thermostats have an open window function in two variants. On the one hand as temperature drop detection and on the other hand in connection with a window contact. This function causes the adapter to switch to manual mode when the window is opened. Ideally, this function should be deactivated so as not to interfere with the functionality of the adapter. If thermostat use information from window sensor then "thermostat handles window open" option should be enabled.
When the adapter crashes or an other Code error happens, this error message that also appears in the ioBroker log is submitted to Sentry. All of this helps me to provide error free adapters that basically never crashs.
2.8.1 (in progress)
- (René) see issue #283: show internal and external temperature sensors in room status
- (René) see issue #272: extend override only if different temperature was sent
- (René) see issue #278: reset remaining override time to 0 when override is canceled
- (René) offset not to be used when room is in reduced mode (e.g. window open)
- (René) see issue #271: set ack flag for changed DP after 2 seconds, to give a chance to other adpaters to react on un-acked DP's
- (René) see issue #266: differrent regulators for actor handling added (linear and linear with hysteresis)
- (René) bug fix load / save profiles: check fireplace mode added
- (René) reset offset if disabled or no sensor (see issue #274)
- (René) bug fix for override in case of "use changes from thermostat as override": reset and window open handling
- (René) see issue #268: change of override in manual mode is mssing
- (René) see issue #259: limit for temperature offset added
- (René) see issue #227: maximum time difference between standard sensor and external sensor added
- (René) see issue #264: some changes for Pittini-vis
- (René) see issue #260: bug fix isActive not ignored
- (René) see issue #258: bug fix fireplace mode and vis
- (René) maintenance mode added
- (René) see issue #255: bug fix fireplace mode
- (René) fireplace mode added
- (René) see issue #247: disable temp offset calculation when heating is off
- (René) see issue #223: bug fix to find correct period
- (René) see issue #194: accept float as minimum / maximum in vis settings; add warning if minumum is lower then 4.5°C
- (René) see issue #243: bug fix for HeatingPeriod when adpater starts
- (René) see issue #245: problem with manual mode when SensorOpenDelay is used
- (René) see issue #244: bug fix for WindowOpenImg
- (René) logging for ActorsOn optimized
- (René) see #233: remaining override time set also for choosen room in vis
- (René) bug fix public holiday detection
- (René) make it ready for js-controller 3.3
- (ericsboro) vis translation to russian
- (René) see issue #231: bug fix detect heating period
- (René) some optimisations for vis translation
- (René) see issue #187: show remaining override timeConverter
- (René) see issue #225: support different languages for vis
- (René) see issue #223: new overide mode "until next profile point"
- (René) bug fix to calculate average for temperatur offset
- (René) see issue #146: different type of window sensor and also adjustable comparative value
- (René) see issue #110: optionally every room can be set to "no heating" with separate datapoint
- (René) see issue #185: maintenance function: Delete all unused datapoints (e.g. profiles) is implemented now for admin
- (René) see issue #185: maintenance function: Delete all devices related to a room, when a room is deleted is implemented now for admin
- (René) see issue #207: copy buttons for vis added
- (René) see issue #219: bug fix: DecreaseValues and ProfilName are copied in CopyProfile now
- (René) bug fix Temperatur Offset: invert sign of TemperatureOffset
- (René) see issue #198: add name to profile as a datapoint, used to be shown in visualisation
- (René) see issue #194: limit and step width for increase / decrease values adjustable in admin
- (René) see issue #182: Temperatur Offset
- (René) see issue #212: ActiveTimeSlot inkorrekt for vis
- (René) bug fix for issue #213: Warnung "!!! Statechange not handled"
- (René) bug fix for issue #211: endless change of temperatures
- (René) bug fix for issue #208: exception "undefined is not a valid state value"
- (René) bug fix for issue #209: Not all open windows are recognized
- (René) bug fix for issue #204: do not take over reduced temperature in manual mode
- (René) bug fix for issue #203: Warnings "has no existing object, this might lead to an error"
- (René) bug fix for issue #205: override start
- (René) internal refactoring
ATTENTION: breaking changes !!!!
- complete internal refactoring (new source files, internal data structures, code review, ...)
- Periods and Profils count from 1 instead 0
- ChangesFromThermostat adjustable per room is removed
- recalculation of room temperature is performed only for the room where necessary (in previous versions all rooms were recalculated and new value transmitted)
- SensorOpenDelay / SensorCloseDelay renamed
- ResetButton to disable manual mode (and go back to auto)
- status log per room
- complete profile can be saved and loaded in admin
- copy profile (complete or for a single room) and periods (for a certain profile and room) by button supported
- datapoint selector for external datapoints added in admin
- autodectection for thermostats, sensors and actuators completely overworked
- room detection overworked
- limits and step widh for profil temperatures adjustable in admin for Pittini vis
- simple window status view (in html) for Pittini vis added
- room state as simple html table for vis added
- (optionally) extend override when temperature is changed; in standard new temperature is set, but timer is not changed
- (optionally) Thermostat handles "window is open"
- issues in github:
- #161 Profil springt zur angegebenen Zeit nicht um
- #152 Fenstererkennung im manuellen Modus
- #148 Bei Änderung vom Thermostat bis zum nächsten Profilpunkt müssen Sensoren berücksichtigt werden
- (René) bug fix: activate actors after temperatur change
- (René) see issue #149: bug fix: calculate current period in case we are still in last period from yesterday
- (René) see issue #132: timer before on and off for actuators
- (René) see issue #143: additional checks to avoid unneccessary override
- (René) see issue #140: use guests present and party now DP's also as counter like present (as a option); add adjustable counter limit for present, party now and guest present
- (René) see issue #145: avoid reset of target temperatur by profile settings in option "until next profil point" when set by thermostat
- (matida538) added better Handling of strings in HandleThermostat (convert to Number, instead of warn) (e.g. fhem connector for fht80)
- (matida538) changed Check4ValidTemperature to convert strings to Number instead of Int (else we lose information e.g. 18.5 will be 18)
- (René) some smaller code optimisations
- (René) see issue #123: use window open / close delay only when window state changed
- (René) see issue #122: better log for different type warning
- (René) see issue #120: override from thermostat only if it's different to current settings
- (René) see issue #126: TestThermostat should not be checked for correct configuration
- (René) see issue #124: vis from Pittini: Image for open / closed window adjustabel (as an option, if nothing is configured the original will be used)
- (René) see issue #127: use value from thermostat until next profile point
- (René) see issue #128: try to convert string data to number
- (René) see issue #116: get MinimumTemperature for vis only if enabled
- (René) see issue #113: re-order of rooms added
- (René) see issue #112: bug fix "Fensterübersicht"
- (René) bug fix: HeatingControlVis avoid exceptions like "Cannot read property 'val' of null"
- (René) bug fix: new temperatures set when current profile is changed
- (René) refactoring HeatingControlVis to avoid exceptions like "Cannot read property 'val' of null"
- (René) bug fix: log a warning if actors are configured but UseActors are off
- (René) log a warning if actors are configured but UseActors are off
- (René) sentry added
- (René) some hints in admin
- (René) see issue #101: sensor close delay added (similar to already existing sensor open delay)
- (René) see issue #103: date/time format string corrected for vis
- (René) see issue #104: bug fix to take over changes from vis
- (René) see issue #102: bug fix change current time period to be shown on vis
- (René) see issue #70: use changes from thermostat
- (René) see issue #91 bug fix: if the same sensor is configured for more than one room thermostat target temperature will be set for all configured rooms
- (René) script from Pittini integrated to support his visualization Pittini
- (Dutchman) some refactoring
- (René) create correct cron job for sunday if profile type "every day" is used
- (René) see issue #87: change type of time data points to string
- (René) see issue #87: set correct roles for data points
- (René) see issue #84: set default value for minimum temperature
- (René) see issue #86: all "float" converted to "number""
- (René) fix issues reported by adapter checker
- (René) check datapoint configuration: if datapoint points to itself then error messages
- (René) support of new vis see issue #76
- (Rene) thermostat mode if no heating period
- (René) deccrease/increase-handling also when Override is active (see issue #72)
- (René) priority handling for temperature increase / decrease overworked (use only values not equal zero)
- (René) bug fix: avoid exception when go to override if MinTemperature-check is active
- (René) format conversion for temperatures in string to number
- (René) ack for MinTemperature
- (René) bugfix create cron jobs for profile type 3 (daily)
- (René) bugfix exception in CheckTemperatureChange [ReferenceError: RoomState is not defined]
- (René) option: minimum temperature per room
- (René) bugfix exception in CheckTemperatureChange [ReferenceError: PublicHolidyToday is not defined]
- (René) see issue #54: stop override with OverrideTemperature =0
- (René) new priority for lowering reasons
- (René) handling of actuators without thermostat
- (René) see issue #66: handle lowering in time between 0:00 and first period
- (René) see issue #64: import of configuration fixed
- (René) see issue #60: sensor delay
- (René) see issue #57: support of the same sensor for different rooms
- (René) bug fix: "AbsentDecrease not defined" for relative lowering
- (René) see issue #59: TemperaturOverride: acceppt hh:mm and hh:mm:ss
- (René) PartyNow support by iCal
- (René) if useActuators: show how many actuators are active (as a datapoint)
Attention: some changes in datapoints!!
- (René) see issue #53: moved datapoints for relative lowering into "relative"
- (René) new datapoint to show lowering decrease mode (heatingcontrol.0.TemperatureDecreaseMode)
- (René) guest present as interface to ical
- (René) see issue #52: support radar adapter
- (René) all external states checked when adapter starts
Attention: some changes in datapoints!!
- (René) moved some datapoints from "profile" to "rooms"
- (René) see issue #50: support absolute and relative decrease of target temperature
- (René) do not check all rooms everytime: when data only for one room changed then check only one room
- (René) only one event is used to lower temperature
- (René) add interface to ical (path to vacation and path to holiday present datapoints)
- (René) support of more then one instance
- (René) bug fix in data point name
Attention: some changes in datapoints!!
- (René) in admin: new buttons to add search new rooms
- (René) bug fix: in profil type Mo-Fr / Sa- So period order check failed
- (René) see issue #38: new datapoint for WindowIsOpen
- (René) change datapoint "CurrentTimePeriod" to "CurrentTimePeriodFull", "CurrentTimePeriod" and "CurrentTimePeriodTime"
- (René) bugfix datapoint name "Sa-Su"
- (René) see issue #16: new datapoint "state" per room to show reason for temperatur change
- (René) change format of LastProgramRun date / time
- (René) try to convert temperature to number if NaN
- (René) see issue #33: check for heating period when adapter starts
- (René) fix a problem in subscription function when room can not be found
- (René) see issue #42 and #44: check all sensors per room and set state when adapter starts
- (René) show message in admin when adapter is not online
- (René) pre-define devicelist; add dummy thermostat, if list is empty
- (René) see issue #20 + #24: start and end of heating period is configurable in admin
- (René) see issue #24: use external data point to set internal "present" data point
- (René) see issue #15: manual temperatur override
- (René) see issue #35: delete of devices
- (René) reset DeleteAll at next admin start
- (René) see issue #19: handling of enums created in iobroker admin fixed
- (René) see issue #13: check order of periods; if order is wrong (next time is smaller than previous) then time si not used for cron and a warning appears in log
- (René) see issue #21: check temperatures after changing of period settings (e.g. time)
- (René) see issue #25: select OID for target and current of thermostat in admin overworked
- (René) change datapoint type from bool to boolean
- (René) see issue #14: description of datapoint time changed ('from' instead 'until')
- (René) see issue #12: unnecessary warnings removed
- (René) see issue #17: seconds removed from time list
- (René) datepoint change handling reworked
- (René) see issue #18: take over values from external PublicHoliday-datapoint
- (René) bug fixes in actuator handling
- (René) path to Feiertag-Adapter can also include a complete datapoint path
- (René) redesign of data structure
- more then one actuator, sensor and thermostat per room
- three different profile types
- manual configuration of devices (if device is not detected automatically)
- interface to Feiertag-Adapter
- public holiday as normal day or like sunday (setting in admin)
- window sensor support. Reduce target temperature when window is open
- !!ATTENTION!! data structure/objects has been changed. You need to update your visualisation settings
- (René) support for max! thermostats
- (René) debugging
- (René) ready to publish
- (René) actuator handling added
- (René) initial release
Copyright (C) <2019-2021> email@example.com
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Die aktuelle Version liegt in github