iy3xk ftc9ky lscsucks

Yet Another Xfinity Security to Home Assistant Howto (YAXSHAH)

June 2022 (c) RLamb
Used: Home Assistant Core 2022.6.0 + zigbee2mqtt 1.25.1 (localhost) + Mosquitto MQTT v3.1.1 (localhost)


[2] With camera powered up, press reset for 30+ secs. Then power cycle Login "administrator" no pass. URL is http://ipaddr/img/video.mjpeg. From https://itbyfire.blogspot.com/2017/03/hacking-xfinitys-home-security-cameras.html

[5] Sometimes you need to truly remove battery and reconnect / power cycle to get ziggbee2mqtt+HA to see settings made on the thermostat manually.

/opt/zigbee2mqtt/data/configuration.yaml:
...
external_converters:
  - cl3156105.js
...

/opt/zigbee2mqtt/data# cat cl3156105.js
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 fzLocal = {
    centralite3156105: {
        cluster: 'hvacThermostat',
        type: ['raw'],
        convert: (model, msg, publish, options, meta) => {
            const result = {};
            const dp = msg.data;
            meta.logger.debug(`Ricks centralite3156105:  ${dp[2]} ${dp[5]} `);
            const lookupmode = {0:'off',1:'heat',2:'cool',};
            const value = lookupmode[dp[5]];
            return {system_mode: value};
        },
    },
};
const definition = {
    zigbeeModel: ['3156105'],
    model: '3156105',
    vendor: 'Centralite',
    description: 'Centralite HA,',
    fromZigbee: [fzLocal.centralite3156105, 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, 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(-30, 30, 0.1)],
    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);
        await reporting.thermostatTemperatureSetpointHold(endpoint);
        await reporting.thermostatOccupiedCoolingSetpoint(endpoint);
        await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
    },
    
};
module.exports = definition;

[6] USB + careful antenna placement via low loss cable safer than remote serial. Tasmota sometimes reboots itself and has lost serial port config. No good if away from home. Wifi 2 zigbee (virt serial port) bridges are prone to errors in the link (tasmota+sonoff zbbridge). I noticed high traffic on a wifi link can drown out the low bw wifi2zigbee. Also need separate UPS for such a bridge for power outages. USB based /dev/ttyUSBx adapter gets power from already UPS'd server.

[8] No need for wifi half of unit. use power/setup dongle to keep it wired. Hold reset behind camera down for 10 sec. Then "adminstrator". URL http://ipaddr/img/video.mjpeg See excellent descripiton by https://itbyfire.blogspot.com/2017/03/hacking-xfinitys-home-security-cameras.html

[1]

#!/bin/bash
if [ $# -lt 2 ]; then
  echo $0 uid cmd
  exit 0
fi
mqttip="-h 127.0.0.1 -p 1883"
uid=`echo "$1" | tr '[:upper:]' '[:lower:]'`
name=`echo $1 | sed s/_/' '/g`
xx="{\"name\": \"$name\", \"device_class\": \"door\", \"state_topic\": \"homeassistant/binary_sensor/$uid/state\", \"unique_id\":\"$uid\" }"
#echo \'$xx\'
#echo "$xx"
if [ "$2" = "config" ]; then
  # need -r
  mosquitto_pub $mqttip -r -t "homeassistant/binary_sensor/$uid/config" -m "$xx"
elif [ "$2" = "delete" ]; then
  mosquitto_pub $mqttip -t "homeassistant/binary_sensor/$uid/config" -m ''
else
  mosquitto_pub $mqttip -t "homeassistant/binary_sensor/$uid/state" -m "$2"
fi
exit 0

'I no longer wish to be limited to the clouds.' - Star Trek 1969 'The Clound Minders'
"I no longer wish to be limited to the clouds." - Star Trek 1969 "The Cloud Minders"
Copyright © 2022 Department C Inc