diff --git a/devices/smoke-kidde.js b/devices/smoke-kidde.js new file mode 100644 index 00000000..32ab02dd --- /dev/null +++ b/devices/smoke-kidde.js @@ -0,0 +1,24 @@ +import RingSocketDevice from './base-socket-device.js' + +export default class SmokeKidde extends RingSocketDevice { + constructor(deviceInfo) { + super(deviceInfo, 'alarm') + this.deviceData.mdl = 'Kidde Smoke Alarm' + + this.entity.smoke = { + component: 'binary_sensor', + device_class: 'smoke' + } + + } + + publishState() { + const components = this.device.data.components + + const smokeAlarm = components?.['alarm.smoke'] + const smokeState = smokeAlarm?.alarmStatus === 'active' ? 'ON' : 'OFF' + + this.mqttPublish(this.entity.smoke.state_topic, smokeState) + this.publishAttributes() + } +} diff --git a/lib/ring.js b/lib/ring.js index 8172719e..27697c96 100644 --- a/lib/ring.js +++ b/lib/ring.js @@ -23,6 +23,7 @@ import SecurityPanel from '../devices/security-panel.js' import Siren from '../devices/siren.js' import SmokeAlarm from '../devices/smoke-alarm.js' import SmokeCoKiddie from '../devices/smoke-co-kiddie.js' +import SmokeKidde from '../devices/smoke-kidde.js' import SmokeCoListener from '../devices/smoke-co-listener.js' import Switch from '../devices/switch.js' import TemperatureSensor from '../devices/temperature-sensor.js' @@ -357,6 +358,8 @@ export default new class RingMqtt { return new CoAlarm(deviceInfo) case RingDeviceType.KiddeSmokeCoAlarm: return new SmokeCoKiddie(deviceInfo) + case 'comp.bluejay.sensor_bluejay_s': + return new SmokeKidde(deviceInfo) case RingDeviceType.SmokeCoListener: return new SmokeCoListener(deviceInfo) case RingDeviceType.BeamsMotionSensor: