Closed anthr76 closed 2 years ago
I am testing with this configuration.. (ref: https://github.com/Koenkk/zigbee-herdsman-converters/blob/d0f7ff1eef6d40f4fbdff1faf94677468b401d50/devices/centralite.js#L143-L167)
const fz = {...require('zigbee-herdsman-converters/converters/fromZigbee'), legacy: require('zigbee-herdsman-converters/lib/legacy').fromZigbee};
const tz = require('zigbee-herdsman-converters/converters/toZigbee');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const reporting = require('zigbee-herdsman-converters/lib/reporting');
const extend = require('zigbee-herdsman-converters/lib/extend');
const e = exposes.presets;
const ea = exposes.access;
const definition = {
zigbeeModel: ['3156105'],
model: '3156105',
vendor: 'Centralite',
description: 'HA Thermostat,',
fromZigbee: [fz.battery, fz.legacy.thermostat_att_report, fz.fan, fz.ignore_time_read],
toZigbee: [tz.factory_reset, tz.thermostat_local_temperature, tz.thermostat_local_temperature_calibration,
tz.thermostat_occupied_heating_setpoint, tz.thermostat_occupied_cooling_setpoint,
tz.thermostat_setpoint_raise_lower, tz.thermostat_remote_sensing,
tz.thermostat_control_sequence_of_operation, tz.thermostat_system_mode,
tz.thermostat_relay_status_log, tz.fan_mode, tz.thermostat_running_state],
exposes: [e.battery(), exposes.climate().withSetpoint('occupied_heating_setpoint', 10, 30, 1).withLocalTemperature()
.withSystemMode(['off', 'heat', 'cool', 'emergency_heating'])
.withRunningState(['idle', 'heat', 'cool', 'fan_only']).withFanMode(['auto', 'on'])
.withSetpoint('occupied_cooling_setpoint', 10, 30, 1).withLocalTemperatureCalibration()],
meta: {battery: {voltageToPercentage: '3V_1500_2800'}},
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'hvacThermostat', 'hvacFanCtrl']);
await reporting.batteryVoltage(endpoint);
await reporting.thermostatRunningState(endpoint);
await reporting.thermostatTemperature(endpoint);
await reporting.fanMode(endpoint);
},
};
module.exports = definition;
So far things are reporting correctley though power thinks it's being recevied by main power but really it's on battery. Going to do futher testing.
https://i.imgur.com/MBmcUdx.png
It appears I cannot set a target temperature in Homeassistant. Battery status is detected but still thinks its using main power
However I am able to set targettemp in z2m
This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days
@anthr76 tried your code and with a little editing got the temperature editable in Homeassistant, mostly. It looks like it's only allowing an "auto" mode where you set both the top and bottom extremes, could be a Homeassistant issue, not sure.
const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
const tz = require('zigbee-herdsman-converters/converters/toZigbee');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const reporting = require('zigbee-herdsman-converters/lib/reporting');
const extend = require('zigbee-herdsman-converters/lib/extend');
const e = exposes.presets;
const ea = exposes.access;
const definition = {
zigbeeModel: ['3156105'],
model: '3156105',
vendor: 'Centralite',
description: 'Centralite (xfinity/comcast) zigbee HVAC Thermostat',
fromZigbee: [fz.battery, fz.thermostat, fz.fan, fz.ignore_time_read],
toZigbee: [tz.factory_reset, tz.thermostat_local_temperature, tz.thermostat_local_temperature_calibration,
tz.thermostat_occupied_heating_setpoint, tz.thermostat_occupied_cooling_setpoint,
tz.thermostat_setpoint_raise_lower, tz.thermostat_remote_sensing,
tz.thermostat_control_sequence_of_operation, tz.thermostat_system_mode,
tz.thermostat_relay_status_log, tz.fan_mode, tz.thermostat_running_state], // ,tz.thermostat_temperature_setpoint_hold],
exposes: [e.battery(),
// exposes.binary('temperature_setpoint_hold', ea.ALL, true, false)
// .withDescription('Prevent changes. `false` = run normally. `true` = prevent from making changes.'),
exposes.climate().withSetpoint('occupied_heating_setpoint', 10, 30, 0.1).withLocalTemperature()
.withSystemMode(['heat', 'cool', 'auto', 'off'])
.withRunningState(['idle', 'heat', 'cool', 'fan_only']).withFanMode(['auto', 'on'])
.withSetpoint('occupied_cooling_setpoint', 10, 30, 0.1).withLocalTemperatureCalibration(-30, 30, 0.1)],
meta: {battery: {voltageToPercentage: '3V_1500_2800'}},
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
const binds = ['genBasic', 'genIdentify', 'genPowerCfg', 'genTime', 'hvacThermostat', 'hvacFanCtrl', 'hvacUserInterfaceCfg'];
await reporting.bind(endpoint, coordinatorEndpoint, binds);
await reporting.thermostatSystemMode(endpoint);
await reporting.batteryVoltage(endpoint);
await reporting.thermostatRunningState(endpoint);
await reporting.thermostatTemperature(endpoint);
await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
await reporting.thermostatOccupiedCoolingSetpoint(endpoint);
await reporting.fanMode(endpoint);
// await reporting.thermostatTemperatureSetpointHold(endpoint);
},
};
module.exports = definition;
Information about the device + link
Centralite thermostat sometimes provided from Cable Providers. I've recentley gotten my hands on one. I'm a two day user of zigbee and have no idea where to start.
https://community.smartthings.com/t/centralite-ha-thermostat/3317/16 https://www.amazon.com/Centralite-Thermostat-Xfinity-Comcast-3156105/dp/B00IUN4K3C https://www.manualslib.com/manual/1828381/Centralite-Zigbee-Alliance-Home-3156105.html?page=3#manual
data/database.db entry of the device