Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var Accessory = require('../').Accessory;
- var Service = require('../').Service;
- var Characteristic = require('../').Characteristic;
- var uuid = require('../').uuid;
- var mqtt = require('mqtt');
- var options = {
- port: 1883,
- host: '192.168.1.99',
- clientId: 'Bedroom plug accessory'
- };
- var client = mqtt.connect(options);
- console.log("Bedroom plug Connected to MQTT broker");
- // here's a fake hardware device that we'll expose to HomeKit
- var FAKELIGHT = {
- powerOn: false,
- brightness: 100, // percentage
- setPowerOn: function(on) {
- console.log("Turning the light %s!", on ? "on" : "off");
- FAKELIGHT.powerOn = on;
- console.log(on);
- if(on){
- client.publish('bedroomplug', 'on');
- }
- else{
- client.publish('bedroomplug', 'off');
- }
- },
- setBrightness: function(brightness) {
- console.log("Setting light brightness to %s", brightness);
- FAKELIGHT.brightness = brightness;
- },
- identify: function() {
- console.log("Identify the light!");
- }
- }
- // Generate a consistent UUID for our light Accessory that will remain the same even when
- // restarting our server. We use the `uuid.generate` helper function to create a deterministic
- // UUID based on an arbitrary "namespace" and the word "light".
- var lightUUID = uuid.generate('hap-nodejs:accessories:bedroomplug');
- // This is the Accessory that we'll return to HAP-NodeJS that represents our fake light.
- var light = exports.accessory = new Accessory('Bedroom plug', lightUUID);
- // Add properties for publishing (in case we're using Core.js and not BridgedCore.js)
- light.username = "FF:FF:FF:FF:FF:FF:A6";
- light.pincode = "031-45-154";
- // set some basic properties (these values are arbitrary and setting them is optional)
- light
- .getService(Service.AccessoryInformation)
- .setCharacteristic(Characteristic.Manufacturer, "Oltica")
- .setCharacteristic(Characteristic.Model, "Rev-1")
- .setCharacteristic(Characteristic.SerialNumber, "A1S2NASF88EW");
- // listen for the "identify" event for this Accessory
- light.on('identify', function(paired, callback) {
- FAKELIGHT.identify();
- callback(); // success
- });
- // Add the actual Lightbulb Service and listen for change events from iOS.
- // We can see the complete list of Services and Characteristics in `lib/gen/HomeKitTypes.js`
- light
- .addService(Service.Lightbulb, "Bedroom plug") // services exposed to the user should have "names" like "Fake Light" for us
- .getCharacteristic(Characteristic.On)
- .on('set', function(value, callback) {
- FAKELIGHT.setPowerOn(value);
- callback(); // Our fake Light is synchronous - this value has been successfully set
- });
- // We want to intercept requests for our current power state so we can query the hardware itself instead of
- // allowing HAP-NodeJS to return the cached Characteristic.value.
- light
- .getService(Service.Lightbulb)
- .getCharacteristic(Characteristic.On)
- .on('get', function(callback) {
- // this event is emitted when you ask Siri directly whether your light is on or not. you might query
- // the light hardware itself to find this out, then call the callback. But if you take longer than a
- // few seconds to respond, Siri will give up.
- var err = null; // in case there were any problems
- if (FAKELIGHT.powerOn) {
- console.log("Are we on? Yes.");
- callback(err, true);
- }
- else {
- console.log("Are we on? No.");
- callback(err, false);
- }
- });
- // also add an "optional" Characteristic for Brightness
- light
- .getService(Service.Lightbulb)
- .addCharacteristic(Characteristic.Brightness)
- .on('get', function(callback) {
- callback(null, FAKELIGHT.brightness);
- })
- .on('set', function(value, callback) {
- FAKELIGHT.setBrightness(value);
- callback();
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement