diff options
| author | Luke Hoersten <[email protected]> | 2018-01-19 11:54:24 -0600 |
|---|---|---|
| committer | Luke Hoersten <[email protected]> | 2018-01-19 11:54:24 -0600 |
| commit | 485592bf0a22d7fbdcad6526e36b97e363aef81c (patch) | |
| tree | 175ef1d9f16ee00718d93a5222e012893a1450b3 /roles/hap-nodejs/files | |
| parent | 5f6b0c0e6e2ea3621cb0033b9f5498372c89db74 (diff) | |
Pulled out src files.
Diffstat (limited to 'roles/hap-nodejs/files')
| -rw-r--r-- | roles/hap-nodejs/files/Door_accessory.js | 115 | ||||
| -rwxr-xr-x | roles/hap-nodejs/files/doord.py | 51 |
2 files changed, 0 insertions, 166 deletions
diff --git a/roles/hap-nodejs/files/Door_accessory.js b/roles/hap-nodejs/files/Door_accessory.js deleted file mode 100644 index e1d16ef..0000000 --- a/roles/hap-nodejs/files/Door_accessory.js +++ /dev/null @@ -1,115 +0,0 @@ -var Accessory = require('../').Accessory; -var Service = require('../').Service; -var Characteristic = require('../').Characteristic; -var uuid = require('../').uuid; -var PythonShell = require('python-shell'); - -var door = exports.accessory = new Accessory('Door', uuid.generate('hap-nodejs:accessories:door')); -door.username = 'C1:5D:3A:EA:54:AB'; -door.pincode = '031-45-154'; - -door.getService(Service.AccessoryInformation) - .setCharacteristic(Characteristic.Manufacturer, 'Raspberry Pi') - .setCharacteristic(Characteristic.Model, 'Zero W') - .setCharacteristic(Characteristic.SerialNumber, 'A1S2NASF88EW'); - -var DOOR = { - lockTimeout: 10000, // milliseconds - 10 sec - - pyshell: new PythonShell('doord.py', { - mode: 'text', - pythonPath: '/usr/bin/python3', - pythonOptions: ['-u'], - scriptPath: 'python/' - }), - - lock: function() { - console.log('locking door'); - this.pyshell.send('lock'); - }, - - unlock: function() { - console.log('unlocking door'); - this.pyshell.send('unlock'); - }, - - identify: function() { - console.log('identify door'); - }, - - listenDoorbell: function(doorbellOnCallback, doorbellOffCallback) { - this.pyshell.on('message', function (message) { - console.log(message); - switch(message) { - case 'doorbell_on': - doorbellOnCallback(); - break; - case 'doorbell_off': - doorbellOffCallback(); - break; - } - }); - } -}; - -door.on('identify', function(paired, callback) { - DOOR.identify(); - callback(); -}); - -door.addService(Service.Doorbell, 'Doorbell'); -door.addService(Service.CameraRTPStreamManagement, 'Psudo-Camera'); -door.addService(Service.Speaker, 'Psudo-Speaker'); -door.addService(Service.Microphone, 'Psudo-Microphone'); - -door.addService(Service.LockMechanism, 'Door') - .setCharacteristic(Characteristic.LockTargetState, Characteristic.LockTargetState.SECURED) // force initial state - .setCharacteristic(Characteristic.LockCurrentState, Characteristic.LockCurrentState.SECURED) - .getCharacteristic(Characteristic.LockTargetState) - .on('set', function(value, callback) { - setDoorTargetState(value); - callback(); - }); - -function setDoorTargetState(value) { - switch(value) { - case Characteristic.LockTargetState.UNSECURED: - unlockDoor(); - break; - case Characteristic.LockTargetState.SECURED: - lockDoor(); - break; - } -} - -function unlockDoor() { - DOOR.unlock(); - door.getService(Service.LockMechanism) - .setCharacteristic(Characteristic.LockCurrentState, - Characteristic.LockCurrentState.UNSECURED); - scheduleUnlockTimeout(); -} - -function lockDoor() { - DOOR.lock(); - door.getService(Service.LockMechanism) - .setCharacteristic(Characteristic.LockCurrentState, - Characteristic.LockCurrentState.SECURED); -} - -function scheduleUnlockTimeout() { - setTimeout(function() { - console.log('unlock timeout door'); - door.getService(Service.LockMechanism) - .setCharacteristic(Characteristic.LockTargetState, - Characteristic.LockTargetState.SECURED); - }, DOOR.lockTimeout); -} - -DOOR.listenDoorbell( - function() { - door.getService(Service.Doorbell) - .setCharacteristic(Characteristic.ProgrammableSwitchEvent, - Characteristic.ProgrammableSwitchEvent.SINGLE_PRESS); - }, - function() {}); diff --git a/roles/hap-nodejs/files/doord.py b/roles/hap-nodejs/files/doord.py deleted file mode 100755 index 4cde487..0000000 --- a/roles/hap-nodejs/files/doord.py +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python3 - -import time -import automationhat -import sys - -import queue -import threading - - -def main(): - command_queue = queue.LifoQueue() - read_thread = threading.Thread(target=read_loop, args=[command_queue]) - read_thread.start() - run_loop(command_queue) - - -def read_loop(command_queue): - while True: - command_queue.put_nowait(sys.stdin.readline().rstrip('\n')) - - -def run_loop(command_queue): - thread_local = threading.local() - thread_local.doorbell_on_state = False - - while True: - run_command(command_queue) - read_doorbell(thread_local) - - -def run_command(command_queue): - try: - command = command_queue.get(timeout=0.5) - except queue.Empty: - pass - else: - automationhat.relay.on() if command == "unlock" else automationhat.relay.off() - - -def read_doorbell(thread_local): - analog_value = automationhat.analog.one.read() - doorbell_on_state = 6.0 < analog_value and analog_value < 6.3 - - if doorbell_on_state != thread_local.doorbell_on_state: - thread_local.doorbell_on_state = doorbell_on_state - print("doorbell_on") if doorbell_on_state else print("doorbell_off") - - -if __name__ == "__main__": - main() |
