Skip to content

Commit

Permalink
Add support for eltako_tf_lux
Browse files Browse the repository at this point in the history
  • Loading branch information
awaescher committed Jan 8, 2024
1 parent 9a8c8c2 commit 0545d63
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 1 deletion.
38 changes: 38 additions & 0 deletions src/EltakoLightSensorAccessory.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import { Service, PlatformAccessory, CharacteristicValue } from 'homebridge';
import { EltakoMiniSafe2Platform } from './platform';
import { IUpdatableAccessory } from './IUpdatableAccessory';

export class EltakoLightSensorAccessory implements IUpdatableAccessory {
private service: Service;

constructor(
private readonly platform: EltakoMiniSafe2Platform,
public readonly accessory: PlatformAccessory,
) {

this.accessory.getService(this.platform.Service.AccessoryInformation)!
.setCharacteristic(this.platform.Characteristic.Manufacturer, accessory.context.device.info.vendor)
.setCharacteristic(this.platform.Characteristic.Model, accessory.context.device.info.data)
.setCharacteristic(this.platform.Characteristic.SerialNumber, accessory.context.device.info.address);

// https://developers.homebridge.io/#/service/LightSensor
const serviceType = this.platform.Service.LightSensor;
this.service = this.accessory.getService(serviceType) || this.accessory.addService(serviceType);

this.service.setCharacteristic(this.platform.Characteristic.Name, accessory.context.device.name);

this.service.getCharacteristic(this.platform.Characteristic.CurrentAmbientLightLevel)
.onGet(this.getCurrentAmbientLightLevel.bind(this));
}

getCurrentAmbientLightLevel(): CharacteristicValue {
const state = this.platform.deviceStateCache.find(s => s.sid === this.accessory.context.device.info.sid);
return state?.state?.illumination ?? 0;
}

update() {
this.service
.getCharacteristic(this.platform.Characteristic.CurrentAmbientLightLevel)
.updateValue(this.getCurrentAmbientLightLevel());
}
}
11 changes: 10 additions & 1 deletion src/platform.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import { API, DynamicPlatformPlugin, Logger, PlatformAccessory, PlatformConfig, Service, Characteristic } from 'homebridge';

import { PLATFORM_NAME, PLUGIN_NAME } from './settings';
import { EltakoSwitchAccessory } from './EltakoSwitchAccessory';
import { EltakoBlindsAccessory } from './EltakoBlindsAccessory';
import { EltakoDimmerAccessory } from './EltakoDimmerAccessory';
import { EltakoLightSensorAccessory } from './EltakoLightSensorAccessory';
import { EltakoSwitchAccessory } from './EltakoSwitchAccessory';
import { EltakoTemperatureAndHumiditySensorAccessory } from './EltakoTemperatureAndHumiditySensorAccessory';
import { MiniSafe2Api } from './MiniSafe2Api';
import { Device } from './models';
Expand Down Expand Up @@ -184,6 +185,10 @@ export class EltakoMiniSafe2Platform implements DynamicPlatformPlugin {
instance = new EltakoDimmerAccessory(this, existingAccessory);
break;
}
case 'eltako_tf_lux': {
instance = new EltakoLightSensorAccessory(this, existingAccessory);
break;
}
}

if (instance) {
Expand Down Expand Up @@ -229,6 +234,10 @@ export class EltakoMiniSafe2Platform implements DynamicPlatformPlugin {
instance = new EltakoDimmerAccessory(this, accessory);
break;
}
case 'eltako_tf_lux': {
instance = new EltakoLightSensorAccessory(this, accessory);
break;
}
}

if (instance) {
Expand Down

0 comments on commit 0545d63

Please sign in to comment.