Skip to content

Commit

Permalink
implement configurable json attribute for status topics (#67)
Browse files Browse the repository at this point in the history
  • Loading branch information
hobbyquaker committed Aug 25, 2018
1 parent 74b6465 commit 8fb99c7
Show file tree
Hide file tree
Showing 48 changed files with 267 additions and 160 deletions.
4 changes: 2 additions & 2 deletions characteristics/Active.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ module.exports = function (obj, iface) {

/* istanbul ignore else */
if (settings.topic.statusActive) {
mqttSub(settings.topic.statusActive, val => {
mqttSub(settings.topic.statusActive, settings.json.statusActive, val => {
const active = val === settings.payload.activeActive ?
Characteristic.Active.ACTIVE :
Characteristic.Active.INACTIVE;
Expand All @@ -45,7 +45,7 @@ module.exports = function (obj, iface) {
.getCharacteristic(Characteristic.Active)
.on('get', callback => {
log.debug('< hap get', settings.name, 'Active');
const active = mqttStatus[settings.topic.statusActive] === settings.payload.activeActive ?
const active = mqttStatus(settings.topic.statusActive, settings.json.statusActive) === settings.payload.activeActive ?
Characteristic.Active.ACTIVE :
Characteristic.Active.INACTIVE;
log.debug('> hap re_get', settings.name, 'Active', active);
Expand Down
4 changes: 2 additions & 2 deletions characteristics/CarbonDioxideLevel.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ module.exports = function (obj, iface) {

/* istanbul ignore else */
if (settings.topic.statusCarbonDioxideLevel) {
mqttSub(settings.topic.statusCarbonDioxideLevel, val => {
mqttSub(settings.topic.statusCarbonDioxideLevel, settings.json.statusCarbonDioxideLevel, val => {
log.debug('> hap update', settings.name, 'CarbonDioxideLevel', val);
acc.getService(subtype)
.updateCharacteristic(Characteristic.CarbonDioxideLevel, val);
Expand All @@ -16,7 +16,7 @@ module.exports = function (obj, iface) {
.on('get', callback => {
log.debug('< hap get', settings.name, 'CarbonDioxideLevel');
log.debug('> hap re_get', settings.name, 'CarbonDioxideLevel', mqttStatus[settings.topic.statusCarbonDioxideLevel]);
callback(null, mqttStatus[settings.topic.statusCarbonDioxideLevel]);
callback(null, mqttStatus(settings.topic.statusCarbonDioxideLevel, settings.json.statusCarbonDioxideLevel));
});
}
};
4 changes: 2 additions & 2 deletions characteristics/CarbonMonoxideLevel.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ module.exports = function (obj, iface) {

/* istanbul ignore else */
if (settings.topic.statusCarbonMonoxideLevel) {
mqttSub(settings.topic.statusCarbonMonoxideLevel, val => {
mqttSub(settings.topic.statusCarbonMonoxideLevel, settings.json.statusCarbonMonoxideLevel, val => {
log.debug('> hap update', settings.name, 'CarbonMonoxideLevel', val);
acc.getService(subtype)
.updateCharacteristic(Characteristic.CarbonMonoxideLevel, val);
Expand All @@ -15,7 +15,7 @@ module.exports = function (obj, iface) {
.getCharacteristic(Characteristic.CarbonMonoxideLevel)
.on('get', callback => {
log.debug('< hap get', settings.name, 'CarbonMonoxideLevel');
log.debug('> hap re_get', settings.name, 'CarbonMonoxideLevel', mqttStatus[settings.topic.statusCarbonMonoxideLevel]);
log.debug('> hap re_get', settings.name, 'CarbonMonoxideLevel', mqttStatus(settings.topic.statusCarbonMonoxideLevel, settings.json.statusCarbonMonoxideLevel));
callback(null, mqttStatus[settings.topic.statusCarbonMonoxideLevel]);
});
}
Expand Down
4 changes: 2 additions & 2 deletions characteristics/CurrentPosition.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ module.exports = function (obj, iface) {

/* istanbul ignore else */
if (settings.topic.statusCurrentPosition) {
mqttSub(settings.topic.statusCurrentPosition, val => {
mqttSub(settings.topic.statusCurrentPosition, settings.json.statusCurrentPosition, val => {
const position = Math.round(val / settings.payload.currentPositionFactor);
log.debug('> hap update', settings.name, 'CurrentPosition', position);
acc.getService(subtype)
Expand All @@ -18,7 +18,7 @@ module.exports = function (obj, iface) {
.getCharacteristic(Characteristic.CurrentPosition)
.on('get', callback => {
log.debug('< hap get', settings.name, 'CurrentPosition');
const position = Math.round(mqttStatus[settings.topic.statusCurrentPosition] / settings.payload.currentPositionFactor);
const position = Math.round(mqttStatus(settings.topic.statusCurrentPosition, settings.json.statusCurrentPosition) / settings.payload.currentPositionFactor);
log.debug('> hap re_get', settings.name, 'CurrentPosition', position);
callback(null, position);
});
Expand Down
4 changes: 2 additions & 2 deletions characteristics/CurrentRelativeHumidity.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ module.exports = function (obj, iface) {

/* istanbul ignore else */
if (settings.topic.statusCurrentRelativeHumidity) {
mqttSub(settings.topic.statusCurrentRelativeHumidity, val => {
mqttSub(settings.topic.statusCurrentRelativeHumidity, settings.json.statusCurrentRelativeHumidity, val => {
log.debug('> hap update', settings.name, 'CurrentRelativeHumidity', val);
acc.getService(subtype)
.updateCharacteristic(Characteristic.CurrentRelativeHumidity, val);
Expand All @@ -17,7 +17,7 @@ module.exports = function (obj, iface) {
.getCharacteristic(Characteristic.CurrentRelativeHumidity)
.on('get', callback => {
log.debug('< hap get', settings.name, 'CurrentRelativeHumidity');
log.debug('> hap re_get', settings.name, 'CurrentRelativeHumidity', mqttStatus[settings.topic.statusCurrentRelativeHumidity]);
log.debug('> hap re_get', settings.name, 'CurrentRelativeHumidity', mqttStatus(settings.topic.statusCurrentRelativeHumidity, settings.json.statusCurrentRelativeHumidity));
callback(null, mqttStatus[settings.topic.statusCurrentRelativeHumidity]);
});
}
Expand Down
4 changes: 2 additions & 2 deletions characteristics/CurrentTemperature.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ module.exports = function (obj, iface) {
.getCharacteristic(Characteristic.CurrentTemperature)
.setProps((settings.props || {}).CurrentTemperature || {minValue: -100})
.on('get', callback => {
const temperature = convertTemperature(settings, mqttStatus[settings.topic.statusCurrentTemperature]);
const temperature = convertTemperature(settings, mqttStatus(settings.topic.statusCurrentTemperature, settings.json.statusCurrentTemperature));
log.debug('< hap get', settings.name, 'CurrentTemperature');
log.debug('> hap re_get', settings.name, temperature);
callback(null, temperature);
});

mqttSub(settings.topic.statusCurrentTemperature, val => {
mqttSub(settings.topic.statusCurrentTemperature, settings.json.statusCurrentTemperature, val => {
const temperature = convertTemperature(settings, val);
log.debug('> hap update', settings.name, 'CurrentTemperature', temperature);
acc.getService(subtype)
Expand Down
10 changes: 5 additions & 5 deletions characteristics/LockCurrentState.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ module.exports = function (obj, iface) {

/* istanbul ignore else */
if (settings.topic.statusLock) {
mqttSub(settings.topic.statusLock, val => {
mqttSub(settings.topic.statusLock, settings.json.statusLock, val => {
if (val === settings.payload.lockSecured) {
log.debug('> hap update', settings.name, 'LockCurrentState.SECURED');
service.updateCharacteristic(Characteristic.LockCurrentState, Characteristic.LockCurrentState.SECURED);
Expand Down Expand Up @@ -65,16 +65,16 @@ module.exports = function (obj, iface) {
.on('get', callback => {
log.debug('< hap get', settings.name, 'LockCurrentState');

if (mqttStatus[settings.topic.statusLock] === settings.payload.lockSecured) {
if (mqttStatus(settings.topic.statusLock, settings.json.statusLock) === settings.payload.lockSecured) {
log.debug('> hap re_get', settings.name, 'LockCurrentState.SECURED');
callback(null, Characteristic.LockCurrentState.SECURED);
} else if (mqttStatus[settings.topic.statusLock] === settings.payload.lockJammed) {
} else if (mqttStatus(settings.topic.statusLock, settings.json.statusLock) === settings.payload.lockJammed) {
log.debug('> hap re_get', settings.name, 'LockCurrentState.JAMMED');
callback(null, Characteristic.LockCurrentState.JAMMED);
} else if (mqttStatus[settings.topic.statusLock] === settings.payload.lockUnknwon) {
} else if (mqttStatus(settings.topic.statusLock, settings.json.statusLock) === settings.payload.lockUnknwon) {
log.debug('> hap re_get', settings.name, 'LockCurrentState.UNKNOWN');
callback(null, Characteristic.LockCurrentState.UNKNOWN);
} else if (mqttStatus[settings.topic.statusLock] === settings.payload.lockUnsecured) {
} else if (mqttStatus(settings.topic.statusLock, settings.json.statusLock) === settings.payload.lockUnsecured) {
log.debug('> hap re_get', settings.name, 'LockCurrentState.UNSECURED');
callback(null, Characteristic.LockCurrentState.UNSECURED);
}
Expand Down
4 changes: 2 additions & 2 deletions characteristics/LockPhysicalControls.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ module.exports = function (obj, iface) {

/* istanbul ignore else */
if (settings.topic.statusLockPhysicalControls) {
mqttSub(settings.topic.statusLockPhysicalControls, val => {
mqttSub(settings.topic.statusLockPhysicalControls, settings.json.statusLockPhysicalControls, val => {
log.debug('> hap update', settings.name, 'LockPhysicalControls', val);
acc.getService(subtype)
.updateCharacteristic(Characteristic.LockPhysicalControls, val);
Expand All @@ -26,7 +26,7 @@ module.exports = function (obj, iface) {
.getCharacteristic(Characteristic.LockPhysicalControls)
.on('get', callback => {
log.debug('< hap get', settings.name, 'LockPhysicalControls');
const state = mqttStatus[settings.topic.statusLockPhysicalControls];
const state = mqttStatus(settings.topic.statusLockPhysicalControls, settings.json.statusLockPhysicalControls);
log.debug('> hap re_get', settings.name, 'LockPhysicalControls', state);
callback(null, state);
});
Expand Down
4 changes: 2 additions & 2 deletions characteristics/MotionDetected.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ module.exports = function (obj, iface) {
.getCharacteristic(Characteristic.MotionDetected)
.on('get', callback => {
log.debug('< hap get', settings.name, 'MotionDetected');
const motion = mqttStatus[settings.topic.statusMotionDetected] === settings.payload.onMotionDetected;
const motion = mqttStatus(settings.topic.statusMotionDetected, settings.json.statusMotionDetected) === settings.payload.onMotionDetected;

log.debug('> hap re_get', settings.name, 'MotionDetected', motion);
callback(null, motion);
});

mqttSub(settings.topic.statusMotionDetected, val => {
mqttSub(settings.topic.statusMotionDetected, settings.json.statusMotionDetected, val => {
const motion = val === settings.payload.onMotionDetected;
log.debug('> hap update', settings.name, 'MotionDetected', motion);
acc.getService(subtype)
Expand Down
4 changes: 2 additions & 2 deletions characteristics/Mute.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ module.exports = function (obj, iface) {

/* istanbul ignore else */
if (settings.topic.statusMute) {
mqttSub(settings.topic.statusMute, val => {
mqttSub(settings.topic.statusMute, settings.json.statusMute, val => {
const mute = val === settings.payload.muteTrue;
log.debug('> hap update', settings.name, 'Mute', mute);
acc.getService(subtype)
Expand All @@ -27,7 +27,7 @@ module.exports = function (obj, iface) {
.getCharacteristic(Characteristic.Mute)
.on('get', callback => {
log.debug('< hap get', settings.name, 'Mute');
const mute = mqttStatus[settings.topic.statusMute] === settings.payload.muteTrue;
const mute = mqttStatus(settings.topic.statusMute, settings.json.statusMute) === settings.payload.muteTrue;
log.debug('> hap re_get', settings.name, 'Mute', mute);
callback(null, mute);
});
Expand Down
4 changes: 2 additions & 2 deletions characteristics/ObstructionDetected.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ module.exports = function (obj, iface) {
.getCharacteristic(Characteristic.ObstructionDetected)
.on('get', callback => {
log.debug('< hap get', settings.name, 'ObstructionDetected');
const obstruction = mqttStatus[settings.topic.statusObstruction] === settings.payload.onObstructionDetected;
const obstruction = mqttStatus(settings.topic.statusObstruction, settings.json.statusObstruction) === settings.payload.onObstructionDetected;
log.debug('> hap re_get', settings.name, 'ObstructionDetected', obstruction);
callback(null, obstruction);
});

mqttSub(settings.topic.statusObstruction, val => {
mqttSub(settings.topic.statusObstruction, settings.json.statusObstruction, val => {
const obstruction = val === settings.payload.onObstructionDetected;
log.debug('> hap update', settings.name, 'ObstructionDetected', obstruction);
acc.getService(subtype)
Expand Down
4 changes: 2 additions & 2 deletions characteristics/On.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ module.exports = function (obj, iface) {

/* istanbul ignore else */
if (settings.topic.statusOn) {
mqttSub(settings.topic.statusOn, val => {
mqttSub(settings.topic.statusOn, settings.json.statusOn, val => {
const on = val === settings.payload.onTrue;
log.debug('> hap update', settings.name, 'On', on);
acc.getService(subtype)
Expand All @@ -25,7 +25,7 @@ module.exports = function (obj, iface) {
.getCharacteristic(Characteristic.On)
.on('get', callback => {
log.debug('< hap get', settings.name, 'On');
const on = mqttStatus[settings.topic.statusOn] === settings.payload.onTrue;
const on = mqttStatus(settings.topic.statusOn, settings.json.statusOn) === settings.payload.onTrue;
log.debug('> hap re_get', settings.name, 'On', on);
callback(null, on);
});
Expand Down
6 changes: 3 additions & 3 deletions characteristics/PositionState.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ module.exports = function (obj, iface) {

/* istanbul ignore else */
if (settings.topic.statusPositionState) {
mqttSub(settings.topic.statusPositionState, val => {
mqttSub(settings.topic.statusPositionState, settings.json.statusPositionState, val => {
let state;
if (val === settings.payload.positionStatusDecreasing) {
state = Characteristic.PositionState.DECREASING;
Expand All @@ -26,10 +26,10 @@ module.exports = function (obj, iface) {
.on('get', callback => {
log.debug('< hap get', settings.name, 'PositionState');

if (mqttStatus[settings.topic.statusPositionState] === settings.payload.positionStatusDecreasing) {
if (mqttStatus(settings.topic.statusPositionState, settings.json.statusPositionState) === settings.payload.positionStatusDecreasing) {
log.debug('> hap re_get', settings.name, 'PositionState.DECREASING');
callback(null, Characteristic.PositionState.DECREASING);
} else if (mqttStatus[settings.topic.statusPositionState] === settings.payload.positionStatusIncreasing) {
} else if (mqttStatus(settings.topic.statusPositionState, settings.json.statusPositionState) === settings.payload.positionStatusIncreasing) {
log.debug('> hap re_get', settings.name, 'PositionState.INCREASING');
callback(null, Characteristic.PositionState.INCREASING);
} else {
Expand Down
6 changes: 3 additions & 3 deletions characteristics/RotationDirection.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ module.exports = function (obj, iface) {

/* istanbul ignore else */
if (settings.topic.statusRotationDirection) {
mqttSub(settings.topic.statusRotationDirection, val => {
mqttSub(settings.topic.statusRotationDirection, settings.json.statusRotationDirection, val => {
/* istanbul ignore next */
const dir = mqttStatus[settings.topic.statusRotationDirection] === settings.payload.rotationDirectionCounterClockwise ?
const dir = val === settings.payload.rotationDirectionCounterClockwise ?
Characteristic.RotationDirection.COUNTER_CLOCKWISE :
Characteristic.RotationDirection.CLOCKWISE;
log.debug('> hap update', settings.name, 'RotationDirection', dir);
Expand All @@ -46,7 +46,7 @@ module.exports = function (obj, iface) {
.on('get', callback => {
log.debug('< hap get', settings.name, 'RotationDirection');
/* istanbul ignore next */
const dir = mqttStatus[settings.topic.statusRotationDirection] === settings.payload.rotationDirectionCounterClockwise ?
const dir = mqttStatus(settings.topic.statusRotationDirection, settings.json.statusRotationDirection) === settings.payload.rotationDirectionCounterClockwise ?
Characteristic.RotationDirection.COUNTER_CLOCKWISE :
Characteristic.RotationDirection.CLOCKWISE;
log.debug('> hap re_get', settings.name, 'RotationDirection', dir);
Expand Down
4 changes: 2 additions & 2 deletions characteristics/RotationSpeed.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ module.exports = function (obj, iface) {

/* istanbul ignore else */
if (settings.topic.statusRotationSpeed) {
mqttSub(settings.topic.statusRotationSpeed, val => {
mqttSub(settings.topic.statusRotationSpeed, settings.json.statusRotationSpeed, val => {
/* istanbul ignore next */
const speed = (val / settings.payload.rotationSpeedFactor) || 0;
log.debug('> hap update', settings.name, 'RotationSpeed', speed);
Expand All @@ -33,7 +33,7 @@ module.exports = function (obj, iface) {
.on('get', callback => {
log.debug('< hap get', settings.name, 'RotationSpeed');
/* istanbul ignore next */
const speed = (mqttStatus[settings.topic.statusRotationSpeed] / settings.payload.rotationSpeedFactor) || 0;
const speed = (mqttStatus(settings.topic.statusRotationSpeed, settings.json.statusRotationSpeed) / settings.payload.rotationSpeedFactor) || 0;
log.debug('> hap re_get', settings.name, 'RotationSpeed', speed);
callback(null, speed);
});
Expand Down
4 changes: 2 additions & 2 deletions characteristics/StatusActive.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ module.exports = function (obj, iface) {
.getCharacteristic(Characteristic.StatusActive)
.on('get', callback => {
log.debug('< hap get', settings.name, 'StatusActive');
let act = mqttStatus[settings.topic.statusActive] === settings.payload.onActive;
let act = mqttStatus(settings.topic.statusActive, settings.json.statusActive) === settings.payload.onActive;
if (settings.payload.invertActive) {
act = !act;
}
log.debug('> hap re_get', settings.name, 'StatusActive', act);
callback(null, act);
});

mqttSub(settings.topic.statusActive, val => {
mqttSub(settings.topic.statusActive, settings.json.statusActive, val => {
let act = val === settings.payload.onActive;
if (settings.payload.invertActive) {
act = !act;
Expand Down
4 changes: 2 additions & 2 deletions characteristics/StatusFault.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ module.exports = function (obj, iface) {
.getCharacteristic(Characteristic.StatusFault)
.on('get', callback => {
log.debug('< hap get', settings.name, 'StatusFault');
let bool = mqttStatus[settings.topic.statusFault] === settings.payload.onFault;
let bool = mqttStatus(settings.topic.statusFault, settings.json.statusFault) === settings.payload.onFault;
if (settings.payload.invertFault) {
bool = !bool;
}
Expand All @@ -25,7 +25,7 @@ module.exports = function (obj, iface) {
callback(null, fault);
});

mqttSub(settings.topic.statusFault, val => {
mqttSub(settings.topic.statusFault, settings.json.statusFault, val => {
let bool = val === settings.payload.onFault;
if (settings.payload.invertFault) {
bool = !bool;
Expand Down
Loading

0 comments on commit 8fb99c7

Please sign in to comment.