Skip to content

Commit

Permalink
[Fix] Remove all references to hap-js (#20)
Browse files Browse the repository at this point in the history
  • Loading branch information
madchicken authored May 23, 2020
1 parent 908fb32 commit afde710
Show file tree
Hide file tree
Showing 8 changed files with 59 additions and 48 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "homebridge-comelit-platform",
"version": "2.0.1",
"version": "2.1.0",
"author": "Pierpaolo Follia",
"repository": {
"type": "git",
Expand Down
9 changes: 5 additions & 4 deletions src/accessories/blind.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import { ComelitAccessory } from './comelit';
import { BlindDeviceData, ComelitClient, ObjectStatus } from 'comelit-client';
import { Callback, Characteristic, CharacteristicEventTypes, Service } from 'hap-nodejs';
import { HomebridgeAPI } from '../index';
import { PositionState } from 'hap-nodejs/dist/lib/gen/HomeKit';
import { ComelitPlatform } from '../comelit-platform';
import { PlatformAccessory } from 'homebridge';
import { PlatformAccessory, Callback, CharacteristicEventTypes, Service } from 'homebridge';
import { PositionState } from './hap';
import Timeout = NodeJS.Timeout;

export class Blind extends ComelitAccessory<BlindDeviceData> {
Expand Down Expand Up @@ -33,6 +31,7 @@ export class Blind extends ComelitAccessory<BlindDeviceData> {
protected initServices(): Service[] {
const accessoryInformation = this.initAccessoryInformation();

const Characteristic = this.platform.Characteristic;
this.coveringService =
this.accessory.getService(this.platform.Service.WindowCovering) ||
this.accessory.addService(this.platform.Service.WindowCovering);
Expand Down Expand Up @@ -89,6 +88,7 @@ export class Blind extends ComelitAccessory<BlindDeviceData> {
}

public update(data: BlindDeviceData) {
const Characteristic = this.platform.Characteristic;
const status = parseInt(data.status);
const now = new Date().getTime();
switch (status) {
Expand Down Expand Up @@ -125,6 +125,7 @@ export class Blind extends ComelitAccessory<BlindDeviceData> {
}

private positionFromTime() {
const Characteristic = this.platform.Characteristic;
const now = new Date().getTime();
// Calculate the number of milliseconds the blind moved
const delta = now - this.lastCommandTime;
Expand Down
13 changes: 6 additions & 7 deletions src/accessories/dehumidifier.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
import { ComelitAccessory } from './comelit';
import { ClimaMode, ClimaOnOff, ComelitClient, ThermostatDeviceData } from 'comelit-client';
import { Characteristic, CharacteristicEventTypes, Service, VoidCallback } from 'hap-nodejs';
import { HomebridgeAPI } from '../index';
import client from 'prom-client';
import { ComelitPlatform } from '../comelit-platform';
import { CharacteristicEventTypes, PlatformAccessory, Service, VoidCallback } from 'homebridge';
import {
Active,
CurrentHumidifierDehumidifierState,
TargetHumidifierDehumidifierState,
} from 'hap-nodejs/dist/lib/gen/HomeKit';
import client from 'prom-client';
import { ComelitPlatform } from '../comelit-platform';
import { PlatformAccessory } from 'homebridge';
} from './hap';

const dehumidifierStatus = new client.Gauge({
name: 'comelit_dehumidifier_status',
Expand All @@ -27,10 +25,10 @@ export class Dehumidifier extends ComelitAccessory<ThermostatDeviceData> {

constructor(platform: ComelitPlatform, accessory: PlatformAccessory, client: ComelitClient) {
super(platform, accessory, client);
// this.uuid_base = `${device.objectId}#D`;
}

protected initServices(): Service[] {
const Characteristic = this.platform.Characteristic;
const accessoryInformation = this.initAccessoryInformation();
this.dehumidifierService =
this.accessory.getService(this.platform.Service.HumidifierDehumidifier) ||
Expand Down Expand Up @@ -106,6 +104,7 @@ export class Dehumidifier extends ComelitAccessory<ThermostatDeviceData> {
}

public update(data: ThermostatDeviceData): void {
const Characteristic = this.platform.Characteristic;
const isOff = this.isOff(data);
const isAuto = this.isAuto(data);
this.log.info(
Expand Down
35 changes: 35 additions & 0 deletions src/accessories/hap.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
export enum Active {
INACTIVE = 0,
ACTIVE = 1,
}

export enum CurrentHumidifierDehumidifierState {
INACTIVE = 0,
IDLE = 1,
HUMIDIFYING = 2,
DEHUMIDIFYING = 3,
}

export enum TargetHumidifierDehumidifierState {
HUMIDIFIER_OR_DEHUMIDIFIER = 0,
HUMIDIFIER = 1,
DEHUMIDIFIER = 2,
}

export enum PositionState {
DECREASING = 0,
INCREASING = 1,
STOPPED = 2,
}

export enum TargetHeatingCoolingState {
OFF = 0,
HEAT = 1,
COOL = 2,
AUTO = 3,
}

export enum TemperatureDisplayUnits {
CELSIUS = 0,
FAHRENHEIT = 1,
}
6 changes: 4 additions & 2 deletions src/accessories/lightbulb.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { ComelitAccessory } from './comelit';
import { ComelitClient, LightDeviceData, ObjectStatus } from 'comelit-client';
import { Characteristic, CharacteristicEventTypes, Service } from 'hap-nodejs';
import client from 'prom-client';
import { PlatformAccessory } from 'homebridge';
import { PlatformAccessory, CharacteristicEventTypes, Service } from 'homebridge';
import { ComelitPlatform } from '../comelit-platform';

const lightStatus = new client.Gauge({
Expand All @@ -27,6 +26,7 @@ export class Lightbulb extends ComelitAccessory<LightDeviceData> {
}

async identify() {
const Characteristic = this.platform.Characteristic;
if (this.isOn()) {
this.lightbulbService.setCharacteristic(Characteristic.On, false);
setTimeout(() => {
Expand All @@ -47,6 +47,7 @@ export class Lightbulb extends ComelitAccessory<LightDeviceData> {
protected initServices(): Service[] {
const accessoryInformation = this.initAccessoryInformation(); // common info about the accessory

const Characteristic = this.platform.Characteristic;
const status = parseInt(this.device.status);
this.lightbulbService =
this.accessory.getService(this.platform.Service.Lightbulb) ||
Expand All @@ -71,6 +72,7 @@ export class Lightbulb extends ComelitAccessory<LightDeviceData> {
}

public update(data: LightDeviceData) {
const Characteristic = this.platform.Characteristic;
const status = parseInt(data.status) === ObjectStatus.ON;
this.log.info(`Updating status of light ${this.device.id}. New status is ${status}`);
lightStatus.set({ light_name: data.descrizione }, parseInt(data.status));
Expand Down
28 changes: 3 additions & 25 deletions src/accessories/outlet.ts
Original file line number Diff line number Diff line change
@@ -1,30 +1,15 @@
import { ComelitAccessory } from './comelit';
import { ComelitClient, OutletDeviceData } from 'comelit-client';
import { Characteristic, CharacteristicEventTypes, Formats, Perms, Service } from 'hap-nodejs';
import { HomebridgeAPI } from '../index';
import client from 'prom-client';
import { ComelitPlatform } from '../comelit-platform';
import { PlatformAccessory } from 'homebridge';
import { PlatformAccessory, CharacteristicEventTypes, Service } from 'homebridge';

const singleConsumption = new client.Gauge({
name: 'comelit_plug_consumption',
help: 'Consumption for single line in Wh',
labelNames: ['plug_name'],
});

class Consumption extends Characteristic {
static readonly UUID: string = '00000029-0000-2000-8000-0026BB765291';

constructor() {
super('Power consumption', Consumption.UUID);
this.setProps({
format: Formats.STRING,
perms: [Perms.READ, Perms.WRITE, Perms.NOTIFY],
});
this.value = this.getDefaultValue();
}
}

export class Outlet extends ComelitAccessory<OutletDeviceData> {
static readonly ON = 1;
static readonly OFF = 0;
Expand All @@ -36,22 +21,21 @@ export class Outlet extends ComelitAccessory<OutletDeviceData> {
}

public update(data: OutletDeviceData) {
const Characteristic = this.platform.Characteristic;
const status = parseInt(data.status);
this.outletService.getCharacteristic(Characteristic.On).updateValue(status > 0);
const power = parseFloat(data.instant_power);
this.outletService.getCharacteristic(Characteristic.InUse).updateValue(power > 0);
this.outletService.getCharacteristic(Consumption).updateValue(`${data.instant_power} W`);
this.log.info(`Reporting consumption for ${data.descrizione}: ${data.instant_power}Wh`);
singleConsumption.set({ plug_name: data.descrizione }, power);
}

protected initServices(): Service[] {
const accessoryInformation = this.initAccessoryInformation();

const Characteristic = this.platform.Characteristic;
this.outletService =
this.accessory.getService(this.platform.Service.Outlet) ||
this.accessory.addService(this.platform.Service.Outlet);
this.outletService.addOptionalCharacteristic(Consumption);
this.update(this.device);
this.outletService
.getCharacteristic(Characteristic.InUse)
Expand All @@ -71,12 +55,6 @@ export class Outlet extends ComelitAccessory<OutletDeviceData> {
callback(e);
}
});
this.outletService
.getCharacteristic(Consumption)
.on(CharacteristicEventTypes.GET, async (callback: Function) => {
callback(null, `${this.device.instant_power} W`);
});

return [accessoryInformation, this.outletService];
}
}
3 changes: 1 addition & 2 deletions src/accessories/power-supplier.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import { ComelitAccessory } from './comelit';
import { Service } from 'hap-nodejs';
import { ComelitClient, SupplierDeviceData } from 'comelit-client';
import client from 'prom-client';
import { ComelitPlatform } from '../comelit-platform';
import { PlatformAccessory } from 'homebridge';
import { PlatformAccessory, Service } from 'homebridge';

const consumption = new client.Gauge({
name: 'comelit_total_consumption',
Expand Down
11 changes: 4 additions & 7 deletions src/accessories/thermostat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,10 @@ import {
ThermoSeason,
ThermostatDeviceData,
} from 'comelit-client';
import { Characteristic, CharacteristicEventTypes, Service, VoidCallback } from 'hap-nodejs';
import { HomebridgeAPI } from '../index';
import {
TargetHeatingCoolingState,
TemperatureDisplayUnits,
} from 'hap-nodejs/dist/lib/gen/HomeKit';
import { TargetHeatingCoolingState, TemperatureDisplayUnits } from './hap';
import client from 'prom-client';
import { ComelitPlatform } from '../comelit-platform';
import { PlatformAccessory } from 'homebridge';
import { PlatformAccessory, CharacteristicEventTypes, Service, VoidCallback } from 'homebridge';

const thermostatStatus = new client.Gauge({
name: 'comelit_thermostat_status',
Expand All @@ -38,6 +33,7 @@ export class Thermostat extends ComelitAccessory<ThermostatDeviceData> {
protected initServices(): Service[] {
const accessoryInformation = this.initAccessoryInformation();

const Characteristic = this.platform.Characteristic;
this.thermostatService =
this.accessory.getService(this.platform.Service.Thermostat) ||
this.accessory.addService(this.platform.Service.Thermostat);
Expand Down Expand Up @@ -108,6 +104,7 @@ export class Thermostat extends ComelitAccessory<ThermostatDeviceData> {
}

public update(data: ThermostatDeviceData): void {
const Characteristic = this.platform.Characteristic;
const currentCoolingState = this.isOff()
? TargetHeatingCoolingState.OFF
: this.isWinter()
Expand Down

0 comments on commit afde710

Please sign in to comment.