Skip to content

Commit e834155

Browse files
authored
Merge pull request #342 from claudegel/TH6250
Better support for TH6250WF and TH6500WF
2 parents 28ad714 + a11284e commit e834155

File tree

11 files changed

+1368
-426
lines changed

11 files changed

+1368
-426
lines changed

README.md

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,8 @@ Automations require services to be able to send commande. Ex. light.turn_on. For
253253
- neviweb130.set_cool_min_time_off, to set cooling minimum time off.
254254
- neviweb130.set_neviweb_status, to set global Neviweb status, home / away.
255255
- neviweb130.set_refuel_alert, to get an alert when the propane tank is refueled,
256+
- neviweb130.set_humidifier_type, to set the type of humidifier device connected to TH6500WF or TH6250WF.
257+
- neviseb130.set_schedule_mode, to set the schedule mode, manual or auto for TH6500WF or TH6250WF.
256258

257259
## Catch Éco Sinopé signal for peak period
258260
If you have at least on thermostat or one load controler registered with Éco-Sinopé program, it is now possible to catch when Neviweb send the signal for pre-heating start period for thermostats or turn_off signal for the load controler. Seven attributes have been added for thermostats and three for load controler to know that peak period is comming and how it is managed:
@@ -281,15 +283,16 @@ If you have at least on thermostat or one load controler registered with Éco-Si
281283
It is then possible to make an automation to set all HA devices ready for peak period by following the eco_status attribute change from «off» to «on».
282284

283285
## Statistic for energy
284-
Six attributes are added to track energy usage for devices:
285-
- hourly_kwh: kwh used for last hour
286-
- daily_kwh: kwh used for last day
287-
- monthly_kwh: kwh used for last month
288-
- current_hour_kwh": kwh used during current hour
289-
- current_today_kwh: kwh used during current day
290-
- current_month_kwh: kwh used during current month
286+
Seven attributes are added to track energy usage for devices:
287+
- total_kwh_count: total count of energy usage to date.
288+
- hourly_kwh_count: total count for hourly usage for current day.
289+
- daily_kwh_count: total count of water liters daily usage for current month.
290+
- monthly_kwh_count: total count of water liters monthly usage for current year.
291+
- hourly_kwh: kwh used for last hour.
292+
- daily_kwh: kwh used for last day.
293+
- monthly_kwh: kwh used for last month.
291294

292-
They are polled from Neviweb every 30 minutes. The first polling start 5 minutes after HA restart.
295+
They are polled from Neviweb every 30 minutes. The first polling start 5 minutes after HA restart. Neviweb have a two hours delay to publish his data.
293296

294297
### Track energy consumption in HA Energy dashboard
295298
When energy attributes are available, it is possible to track energy consumption of individual devices in Home Assistant energy dashboard by creating a [Template sensor](https://www.home-assistant.io/integrations/template/) in configuration.yaml:
@@ -318,15 +321,16 @@ template:
318321
```
319322
320323
## Statistic for Sedna flow sensor
321-
Six attributes are added to track water usage for Sedna valve. They are shown as m³ (cubic meeter) which is what energy module is looking for:
322-
- hourly_flow_count: total count of water liters hourly usage
323-
- daily_flow_count: total count of water liters daily usage
324-
- monthly_flow_count: total count of water liters monthly usage
325-
- hourly_flow: water liters used for last hour
326-
- daily_flow: water liters used for last day
327-
- monthly_flow: water liters used for last month
328-
329-
They are polled from Neviweb every 30 minutes. The first polling start 5 minutes after HA restart.
324+
Seven attributes are added to track water usage for Sedna valve. They are shown as m³ (cubic meeter) which is what energy module is looking for:
325+
- total_flow_count: total count of water liters usage to date.
326+
- hourly_flow_count: total count of hourly water liters usage for current day.
327+
- daily_flow_count: total count of daily water liters usage for current month.
328+
- monthly_flow_count: total count of monthly water liters usage for current year.
329+
- hourly_flow: water liters used for last hour.
330+
- daily_flow: water liters used for last day.
331+
- monthly_flow: water liters used for last month.
332+
333+
They are polled from Neviweb every 30 minutes. The first polling start 5 minutes after HA restart. Neviweb have a two hours delay to publish his data.
330334
331335
### Track water consumption in HA Energy dashboard
332336
When flow attributes are available, it is possible to track water consumption of sedna valve in Home Assistant energy dashboard by creating a [Template sensor](https://www.home-assistant.io/integrations/template/) in configuration.yaml:

custom_components.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"neviweb130": {
3-
"version": "3.0.5",
3+
"version": "3.0.6",
44
"local_location": "/custom_components/neviweb130/__init__.py",
55
"remote_location": "https://github.com/claudegel/sinope-130/tree/master/custom_components/__init__.py",
66
"visit_repo": "https://github.com/claudegel/sinope-130",

custom_components/neviweb130/__init__.py

Lines changed: 76 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,23 @@
1818
ATTR_BATTERY_TYPE, ATTR_COLD_LOAD_PICKUP_REMAIN_TIME,
1919
ATTR_CONF_CLOSURE, ATTR_CONTROLLED_DEVICE,
2020
ATTR_COOL_LOCK_TEMP, ATTR_COOL_MIN_TIME_OFF,
21-
ATTR_COOL_MIN_TIME_ON, ATTR_COOL_SETPOINT_MAX,
22-
ATTR_COOL_SETPOINT_MIN, ATTR_CYCLE, ATTR_CYCLE_OUTPUT2,
23-
ATTR_DISPLAY2, ATTR_DISPLAY_CONF, ATTR_DRSETPOINT,
24-
ATTR_DRSTATUS, ATTR_EARLY_START, ATTR_FAN_SPEED,
25-
ATTR_FAN_SWING_HORIZ, ATTR_FAN_SWING_VERT,
21+
ATTR_COOL_MIN_TIME_ON, ATTR_COOL_SETPOINT,
22+
ATTR_COOL_SETPOINT_MAX, ATTR_COOL_SETPOINT_MIN, ATTR_CYCLE,
23+
ATTR_CYCLE_OUTPUT2, ATTR_DISPLAY2, ATTR_DISPLAY_CONF,
24+
ATTR_DRSETPOINT, ATTR_DRSTATUS, ATTR_EARLY_START,
25+
ATTR_FAN_SPEED, ATTR_FAN_SWING_HORIZ, ATTR_FAN_SWING_VERT,
2626
ATTR_FLOOR_AIR_LIMIT, ATTR_FLOOR_AUX, ATTR_FLOOR_MAX,
2727
ATTR_FLOOR_MIN, ATTR_FLOOR_MODE, ATTR_FLOOR_OUTPUT2,
2828
ATTR_FLOOR_SENSOR, ATTR_FLOW_ALARM1_LENGHT,
2929
ATTR_FLOW_ALARM1_OPTION, ATTR_FLOW_ALARM1_PERIOD,
3030
ATTR_FLOW_ENABLED, ATTR_FLOW_METER_CONFIG,
3131
ATTR_FLOW_THRESHOLD, ATTR_FUEL_ALERT,
32-
ATTR_FUEL_PERCENT_ALERT, ATTR_GAUGE_TYPE,
33-
ATTR_HEAT_LOCK_TEMP, ATTR_INPUT_1_OFF_DELAY,
34-
ATTR_INPUT_1_ON_DELAY, ATTR_INPUT_2_OFF_DELAY,
35-
ATTR_INPUT_2_ON_DELAY, ATTR_INTENSITY, ATTR_KEY_DOUBLE_UP,
32+
ATTR_FUEL_PERCENT_ALERT, ATTR_GAUGE_TYPE, ATTR_HEAT_COOL,
33+
ATTR_HEAT_LOCK_TEMP, ATTR_HUMID_SETPOINT,
34+
ATTR_HUMIDIFIER_TYPE, ATTR_HUMIDITY,
35+
ATTR_INPUT_1_OFF_DELAY, ATTR_INPUT_1_ON_DELAY,
36+
ATTR_INPUT_2_OFF_DELAY, ATTR_INPUT_2_ON_DELAY,
37+
ATTR_INTENSITY, ATTR_INTENSITY_MIN, ATTR_KEY_DOUBLE_UP,
3638
ATTR_KEYPAD, ATTR_LANGUAGE, ATTR_LEAK_ALERT,
3739
ATTR_LED_OFF_COLOR, ATTR_LED_OFF_INTENSITY,
3840
ATTR_LED_ON_COLOR, ATTR_LED_ON_INTENSITY,
@@ -49,7 +51,7 @@
4951
ATTR_TIMER, ATTR_TIMER2, ATTR_WATER_TEMP_MIN,
5052
ATTR_WIFI_KEYPAD, CONF_HOMEKIT_MODE, CONF_IGNORE_MIWI,
5153
CONF_NETWORK, CONF_NETWORK2, CONF_NETWORK3, CONF_NOTIFY,
52-
CONF_STAT_INTERVAL, DOMAIN, MODE_MANUAL)
54+
CONF_STAT_INTERVAL, DOMAIN, MODE_MANUAL, STARTUP_MESSAGE)
5355
from .schema import CONFIG_SCHEMA as config_schema
5456
from .schema import HOMEKIT_MODE as DEFAULT_HOMEKIT_MODE
5557
from .schema import IGNORE_MIWI as DEFAULT_IGNORE_MIWI
@@ -72,6 +74,8 @@
7274

7375
def setup(hass, hass_config):
7476
"""Set up neviweb130."""
77+
_LOGGER.info(STARTUP_MESSAGE)
78+
7579
data = Neviweb130Data(hass, hass_config[DOMAIN])
7680
hass.data[DOMAIN] = data
7781

@@ -757,13 +761,16 @@ def set_mode(self, device_id, mode):
757761
data = {ATTR_POWER_MODE: mode}
758762
self.set_device_attributes(device_id, data)
759763

760-
def set_setpoint_mode(self, device_id, mode, wifi):
764+
def set_setpoint_mode(self, device_id, mode, wifi, HC):
761765
"""Set thermostat operation mode."""
762-
"""Work differently for wifi and zigbee devices."""
766+
"""Work differently for wifi and zigbee devices and TH6250xx devices."""
763767
if wifi:
764-
if mode in [HVACMode.HEAT, MODE_MANUAL]:
765-
mode = MODE_MANUAL
766-
data = {ATTR_SETPOINT_MODE: mode}
768+
if HC:
769+
data = {ATTR_HEAT_COOL: mode}
770+
else:
771+
if mode in [HVACMode.HEAT, MODE_MANUAL]:
772+
mode = MODE_MANUAL
773+
data = {ATTR_SETPOINT_MODE: mode}
767774
else:
768775
data = {ATTR_SYSTEM_MODE: mode}
769776
self.set_device_attributes(device_id, data)
@@ -779,10 +786,36 @@ def set_occupancy_mode(self, device_id, mode, wifi):
779786
self.set_device_attributes(device_id, data)
780787

781788
def set_temperature(self, device_id, temperature):
782-
"""Set device temperature."""
789+
"""Set device heating temperature target."""
783790
data = {ATTR_ROOM_SETPOINT: temperature}
784791
self.set_device_attributes(device_id, data)
785792

793+
def set_cool_temperature(self, device_id, temperature):
794+
"""Set device cooling temperature target."""
795+
data = {ATTR_COOL_SETPOINT: temperature}
796+
self.set_device_attributes(device_id, data)
797+
798+
def set_humidity(self, device_id, humidity):
799+
"""Set device humidity target."""
800+
data = {ATTR_HUMID_SETPOINT: humidity}
801+
self.set_device_attributes(device_id, data)
802+
803+
def set_humidifier_type(self, device_id, type):
804+
"""Set humidifier type for TH6500WF and TH6250WF."""
805+
data = {ATTR_HUMIDIFIER_TYPE: type}
806+
self.set_device_attributes(device_id, data)
807+
808+
def set_schedule_mode(self, device_id, mode, HC):
809+
"""Set schedule mode for TH6500WF and TH6250WF."""
810+
if HC:
811+
data = {ATTR_SETPOINT_MODE: mode}
812+
self.set_device_attributes(device_id, data)
813+
else:
814+
self.notify_ha(
815+
"Warning: Service set_schedule_mode is only for "
816+
+ "TH6500WF or TH6250WF thermostats."
817+
)
818+
786819
def set_backlight(self, device_id, level, device):
787820
"""Set backlight intensity when idle, on or auto."""
788821
"""Work differently for wifi and zigbee devices."""
@@ -888,9 +921,12 @@ def set_cool_setpoint_max(self, device_id, temp):
888921
_LOGGER.debug("CoolsetpointMax.data = %s", data)
889922
self.set_device_attributes(device_id, data)
890923

891-
def set_aux_cycle_output(self, device_id, status, val):
924+
def set_aux_cycle_output(self, device_id, status, val, wifi):
892925
"""Set low voltage thermostat aux cycle status and length."""
893-
data = {ATTR_CYCLE_OUTPUT2: {"status": status, "value": val}}
926+
if wifi:
927+
data = {ATTR_AUX_CYCLE: val}
928+
else:
929+
data = {ATTR_CYCLE_OUTPUT2: {"status": status, "value": val}}
894930
_LOGGER.debug("auxCycleoutput.data = %s", data)
895931
self.set_device_attributes(device_id, data)
896932

@@ -938,7 +974,7 @@ def set_em_heat(self, device_id, heat, low, sec):
938974
if low == "voltage":
939975
data = {ATTR_CYCLE_OUTPUT2: {"status": heat, "value": sec}}
940976
elif low == "wifi":
941-
data = {ATTR_AUX_CYCLE: heat}
977+
data = {ATTR_AUX_CYCLE: sec}
942978
else:
943979
data = {ATTR_FLOOR_AUX: heat}
944980
_LOGGER.debug("em_heat.data = %s", data)
@@ -1053,7 +1089,7 @@ def set_flow_meter_options(self, device_id, alarm, action, lenght, threshold):
10531089
_LOGGER.debug("Flowmeter options.data = %s", data)
10541090
self.set_device_attributes(device_id, data)
10551091

1056-
def set_led_indicator(self, device_id, state, intensity, red, green, blue):
1092+
def set_led_indicator(self, device_id, state, red, green, blue):
10571093
"""Set devive led indicator intensity and color for on and off state."""
10581094
if state == 1:
10591095
data = {
@@ -1063,9 +1099,7 @@ def set_led_indicator(self, device_id, state, intensity, red, green, blue):
10631099
"blue": blue,
10641100
}
10651101
}
1066-
self.set_device_attributes(device_id, data)
1067-
data2 = {ATTR_LED_ON_INTENSITY: intensity}
1068-
self.set_device_attributes(device_id, data2)
1102+
_LOGGER.debug("led on color.data = %s", data)
10691103
else:
10701104
data = {
10711105
ATTR_LED_OFF_COLOR: {
@@ -1074,11 +1108,26 @@ def set_led_indicator(self, device_id, state, intensity, red, green, blue):
10741108
"blue": blue,
10751109
}
10761110
}
1077-
self.set_device_attributes(device_id, data)
1078-
data2 = {ATTR_LED_OFF_INTENSITY: intensity}
1079-
self.set_device_attributes(device_id, data2)
1080-
_LOGGER.debug("led.data = %s, led.data2 = %s", data, data2)
1111+
_LOGGER.debug("led off color.data = %s", data)
1112+
self.set_device_attributes(device_id, data)
1113+
1114+
def set_led_on_intensity(self, device_id, intensity):
1115+
"""Set devive led indicator intensity for on state."""
1116+
data = {ATTR_LED_ON_INTENSITY: intensity}
1117+
self.set_device_attributes(device_id, data)
1118+
_LOGGER.debug("led on intensity.data on = %s", data)
1119+
1120+
def set_led_off_intensity(self, device_id, intensity):
1121+
"""Set devive led indicator intensity for off state."""
1122+
data = {ATTR_LED_OFF_INTENSITY: intensity}
1123+
self.set_device_attributes(device_id, data)
1124+
_LOGGER.debug("led off intensity.data on = %s", data)
1125+
1126+
def set_light_min_intensity(self, device_id, intensity):
1127+
"""Set dimmer light minimum intensity from 1 to 3000."""
1128+
data = {ATTR_INTENSITY_MIN: intensity}
10811129
self.set_device_attributes(device_id, data)
1130+
_LOGGER.debug("led min intensity.data on = %s", data)
10821131

10831132
def set_wattage(self, device_id, watt):
10841133
"""Set light and dimmer watt load."""

0 commit comments

Comments
 (0)