UNPKG

homebridge-rpi

Version:
103 lines (98 loc) 3.26 kB
// homebridge-rpi/lib/RpiService.js // Copyright © 2019-2026 Erik Baauw. All rights reserved. // // Homebridge plugin for Raspberry Pi. import { ServiceDelegate } from 'homebridge-lib/ServiceDelegate' class RpiService extends ServiceDelegate { constructor (rpiAccessory, params = {}) { params.name = rpiAccessory.name params.Service = params.hidden ? rpiAccessory.Services.my.Resource : rpiAccessory.Services.hap.TemperatureSensor super(rpiAccessory, params) if (!params.hidden) { this.addCharacteristicDelegate({ key: 'temperature', Characteristic: this.Characteristics.hap.CurrentTemperature, unit: '°C' }) this.addCharacteristicDelegate({ key: 'temperatureUnit', Characteristic: this.Characteristics.hap.TemperatureDisplayUnits, value: this.Characteristics.hap.TemperatureDisplayUnits.CELSIUS }) this.addCharacteristicDelegate({ key: 'frequency', Characteristic: this.Characteristics.my.CpuFrequency, unit: 'MHz' }) this.addCharacteristicDelegate({ key: 'throttled', Characteristic: this.Characteristics.my.CpuThrottled }) this.addCharacteristicDelegate({ key: 'cpuVoltage', Characteristic: this.Characteristics.my.CpuVoltage, unit: 'mV' }) this.addCharacteristicDelegate({ key: 'underVoltage', Characteristic: this.Characteristics.my.CpuUnderVoltage }) this.addCharacteristicDelegate({ key: 'swapUsage', Characteristic: this.Characteristics.my.SwapUsage, unit: '%' }) this.addCharacteristicDelegate({ key: 'load', Characteristic: this.Characteristics.my.CpuLoad }) this.addCharacteristicDelegate({ key: 'lastBoot', Characteristic: this.Characteristics.my.LastBoot }) } this.addCharacteristicDelegate({ key: 'lastupdated', Characteristic: this.Characteristics.my.LastUpdated, silent: true }) this.addCharacteristicDelegate({ key: 'heartrate', Characteristic: this.Characteristics.my.Heartrate, props: { minValue: 1, maxValue: 60, minStep: 1 }, value: 15 }) this.addCharacteristicDelegate({ key: 'statusFault', Characteristic: this.Characteristics.hap.StatusFault, silent: true }) this.addCharacteristicDelegate({ key: 'logLevel', Characteristic: this.Characteristics.my.LogLevel, value: this.accessoryDelegate.logLevel }) } checkState (state) { if (state == null) { this.values.lastupdated = String(new Date()).slice(0, 24) return } this.values.temperature = state.temp this.values.frequency = Math.round(state.freq / 1000000) this.values.cpuVoltage = Math.round(state.volt * 1000) this.values.throttled = (state.throttled & 0x000e) !== 0 this.values.underVoltage = (state.throttled & 0x0001) !== 0 this.values.load = state.load this.values.swapUsage = state.swap this.values.lastupdated = String(new Date(state.date)).slice(0, 24) this.values.lastBoot = String(new Date(state.boot)).slice(0, 24) } } export { RpiService }