Pulled out src files.
authorLuke Hoersten <luke@hoersten.org>
Fri, 19 Jan 2018 11:54:24 -0600
changeset 1 bc6a0f25a229
parent 0 30d8bcb1ebb4
child 2 3ab597628612
Pulled out src files.
roles/hap-nodejs/files/Door_accessory.js
roles/hap-nodejs/files/doord.py
roles/hap-nodejs/tasks/main.yaml
src/Door_accessory.js
src/doord.py
--- a/roles/hap-nodejs/files/Door_accessory.js	Fri Jan 19 11:48:25 2018 -0600
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -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() {});
--- a/roles/hap-nodejs/files/doord.py	Fri Jan 19 11:48:25 2018 -0600
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -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()
--- a/roles/hap-nodejs/tasks/main.yaml	Fri Jan 19 11:48:25 2018 -0600
+++ b/roles/hap-nodejs/tasks/main.yaml	Fri Jan 19 11:54:24 2018 -0600
@@ -22,11 +22,11 @@
   file: path="{{hap_dest}}/python" state="directory"
 
 - name: install doord.py
-  copy: src="doord.py" dest="{{hap_dest}}/python/doord.py"
+  copy: src="../../../src/doord.py" dest="{{hap_dest}}/python/doord.py"
   notify: restart hap-nodejs service
 
 - name: install door accessory
-  copy: src="Door_accessory.js" dest="{{hap_dest}}/accessories/Door_accessory.js"
+  copy: src="../../../src/Door_accessory.js" dest="{{hap_dest}}/accessories/Door_accessory.js"
   notify: restart hap-nodejs service
 
 - name: build HAP-NodeJS
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Door_accessory.js	Fri Jan 19 11:54:24 2018 -0600
@@ -0,0 +1,115 @@
+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() {});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/doord.py	Fri Jan 19 11:54:24 2018 -0600
@@ -0,0 +1,51 @@
+#!/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()