Simple API for Logitech Harmony Hub using local Websocket Connection
npm install harmonyhubws
A node module for Logitech Harmony Hub.
Uses a simple watchdog to reconnect on connection losses.
npm install harmonyhubws --production`Usage Example
with Hub IP 192.168.0.50:
`Javascript
const util = require('util');
const HarmonyHubWS = require('harmonyhubws');
const IP = '192.168.0.50';let harmonyHubWS = new HarmonyHubWS(IP);
harmonyHubWS.on('online', () => {
console.log('connected to hub', IP);
//request config
harmonyHubWS.requestConfig();
});
harmonyHubWS.on('config', (config) => {
//be careful, config could be very big!
console.log('config', util.inspect(config,false, null, true));
//request hub state
harmonyHubWS.requestState();
//if there is a device press first button of device
if (config.device.length) {
let device = config.device[0];
if (device.controlGroup.length && device.controlGroup[0].function.length) {
console.log('pressing key', device.label, device.controlGroup[0].function[0].label);
harmonyHubWS.requestKeyPress(device.controlGroup[0].function[0].action);
}
}
//if there is an activity start it
if (config.activity.length) {
let activity = config.activity[0];
console.log('starting activity', activity.label);
harmonyHubWS.requestActivityChange(activity.id);
}
});
harmonyHubWS.on('state', (activityId, activityStatus) => {
console.log('state', activityId, activityStatus);
//if an activity is started turn it off and close client
if (activityStatus === 2) {
console.log('activity started, turn off', activityId);
harmonyHubWS.requestActivityChange('-1');
harmonyHubWS.close();
}
});
harmonyHubWS.on('offline', () => {
console.log('lost connection to hub', IP);
});
`$3
Returns the state object of the robot. Also updates all robot properties.
* ip: string - IP of your Harmony Hub
* [watchdog]: boolean - defaults to true
* example:
`Javascript
const HarmonyHubWS = require('harmonyhubws');
const IP = '192.168.0.50';//start client without automatic connection handling
let harmonyHubWS = new HarmonyHubWS(IP, false);
`Functions
$3
Asks Hub to send Config. To retrieve config use event config.$3
Asks Hub to send current state. To retrieve current state use event state.$3
Asks Hub to start activity with ID activityId. Results in multiple state events, activityState will be 2 when the activity is completely started.
* activityId: number|string - ID of the activity you want to start, use '-1' (string!) to turn off any activity. To retrieve activity IDs see requestConfig.$3
Asks Hub to press a device key.
* action: string - whole action string (deviceId, keyId, type) as retrieved from config.
* [hold]: string 'press' or 'hold' - defaults to press, hold is a long press for ~250ms, if you want to hold longer you need to request hold repeatedly.
* [delay]: number defaults to 100, how long the key is held
or
$3
* deviceId: string - ID of the device you want to control. To retrieve device IDs see requestConfig.
* keyId: string - ID (name) of the key you want to press. To retrieve key Ids see requestConfig.
* [type]: number - defaults to IRCommand. To retrieve key types see requestConfig.
* [hold]: string 'press' or 'hold' - defaults to press, hold is a long press for ~250ms, if you want to hold longer you need to request hold repeatedly.
* [delay]: number defaults to 100, how long the key is heldEvents
$3
Fired when connection to hub is established.$3
Fired when connection to hub is lost.$3
Fired when hub sends its current state.
* activityId: number|string - ID of current activity, '-1' for powerOff.
* activityState: number - state of current activity, where
* 0: off
* 1: starting (hub blocked until activityState is 2)
* 2: started
* 3: stopping (hub blocked until activityState is 0)$3
Fired when hub sends its configuration (devices, activities).
* config: object` - Hubs configuration. For details see example.