hue-push-client
Advanced tools
Comparing version 1.0.0 to 1.0.1
@@ -1,49 +0,1 @@ | ||
import EventSource = require('eventsource'); | ||
export declare interface Bridge { | ||
/** local IP of Hue Bridge, e.g. `10.0.0.1` */ | ||
ip: string; | ||
/** registered Hue Bridge user */ | ||
user: string; | ||
} | ||
export declare class HuePushClient extends EventSource { | ||
bridge: Bridge; | ||
/** | ||
* | ||
* @param {Bridge} bridge | ||
*/ | ||
constructor(bridge: Bridge); | ||
/** | ||
* | ||
* @param {ResourceParser} resourceParser | ||
* @returns {Promise<any|Error>} | ||
*/ | ||
resources(resourceParser: ResourceParser): Promise<any | Error>; | ||
/** | ||
* | ||
* @returns {Promise<Object<Resource>|Error>} | ||
*/ | ||
uuids(): Promise<{ | ||
[index: string]: Resource; | ||
} | Error>; | ||
/** | ||
* closes all open connections to Hue Bridge | ||
*/ | ||
close(): void; | ||
} | ||
interface Resource { | ||
id: string; | ||
} | ||
export declare type ResourceParser = (resources: string) => any; | ||
/** | ||
* returns Hue Bridge's resources output as object | ||
* @param {string} resources | ||
* @returns {Object|SyntaxError} | ||
*/ | ||
export declare const defaultResourceParser: ResourceParser; | ||
/** | ||
* returns Hue Bridge's resources output as object with UUIDs as keys | ||
* @param {string} resources | ||
* @returns {Object|SyntaxError} | ||
*/ | ||
export declare const uuidResourceParser: ResourceParser; | ||
export {}; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.uuidResourceParser = exports.defaultResourceParser = exports.HuePushClient = void 0; | ||
const EventSource = require("eventsource"); | ||
@@ -28,6 +27,4 @@ const https = require("https"); | ||
*/ | ||
resources(resourceParser) { | ||
resources(resourceParser = defaultResourceParser) { | ||
return new Promise((resolve, reject) => { | ||
resolve({}); | ||
reject(new Error('')); | ||
https.get({ | ||
@@ -47,3 +44,9 @@ host: this.bridge.ip, | ||
res.on('end', () => { | ||
resolve(resourceParser(body)); | ||
const result = resourceParser(body); | ||
if (result instanceof Error) { | ||
reject(result); | ||
} | ||
else { | ||
resolve(result); | ||
} | ||
}); | ||
@@ -60,3 +63,3 @@ }).on('error', (e) => { | ||
uuids() { | ||
return this.resources(exports.uuidResourceParser); | ||
return this.resources(uuidResourceParser); | ||
} | ||
@@ -70,3 +73,2 @@ /** | ||
} | ||
exports.HuePushClient = HuePushClient; | ||
module.exports = HuePushClient; | ||
@@ -79,3 +81,3 @@ /** | ||
const defaultResourceParser = (resources) => { | ||
let jsonObject = {}; | ||
let jsonObject = { 'asd': 'asd' }; | ||
try { | ||
@@ -89,3 +91,2 @@ jsonObject = JSON.parse(resources); | ||
}; | ||
exports.defaultResourceParser = defaultResourceParser; | ||
/** | ||
@@ -110,2 +111,1 @@ * returns Hue Bridge's resources output as object with UUIDs as keys | ||
}; | ||
exports.uuidResourceParser = uuidResourceParser; |
{ | ||
"name": "hue-push-client", | ||
"version": "1.0.0", | ||
"version": "1.0.1", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -16,5 +16,4 @@ # hue push client | ||
const client = new HuePushClient({ip: '192.168.0.10', user: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'}); | ||
const client = new HuePushClient({ip: '192.168.0.85', user: 'mWAfdI7PUJRvZ9IwXB0YgeLVn9Ytjpb5RjrFJ0rn'}); | ||
setTimeout(() => {client.close();}, 30000); | ||
client.addEventListener('open', function () { | ||
@@ -29,3 +28,2 @@ console.log('connection opened'); | ||
}); | ||
client.addEventListener('message', function (message) { | ||
@@ -45,7 +43,44 @@ if (!message.data) { | ||
``` | ||
The data part of an incomming message looks like this: | ||
```json | ||
[ | ||
{ | ||
"creationtime":"2021-09-01T08:40:54Z", | ||
"data":[ | ||
{ | ||
"id":"d231f405-baab-406e-0000-d345a1440000", | ||
"id_v1":"/sensors/8", | ||
"light":{ | ||
"light_level":10509, | ||
"light_level_valid":true | ||
}, | ||
"type":"light_level" | ||
} | ||
], | ||
"id":"f15d7da4-f849-44c9-0000-afc54dbe0000", | ||
"type":"update" | ||
} | ||
] | ||
``` | ||
You can also retrieve a description of all UUID's that are used in update messages: | ||
```javascript | ||
/** | ||
* Be aware that uuids() returns a promise | ||
*/ | ||
async function getUUIDs() { | ||
try { | ||
let UUIDs = await client.uuids(); | ||
console.log(UUIDs); | ||
} catch (e) { | ||
console.log(e); | ||
} | ||
}; | ||
getUUIDs(); | ||
``` | ||
# Documentation | ||
[Exports](docs/modules.md) | ||
todo (see examples) | ||
# license | ||
Released under [ISC](https://github.com/Pmant/hue-push-client/blob/master/license.txt) by @Pmant |
83
6377
105