mirror of
https://github.com/zyphlar/doorlock.git
synced 2024-04-03 21:36:03 +00:00
A happy beginning 🚪🔒
This commit is contained in:
24
src/boot.js
Normal file
24
src/boot.js
Normal file
@@ -0,0 +1,24 @@
|
||||
const Door = require('./models/door')
|
||||
|
||||
Door.open()
|
||||
|
||||
// const server = require('./server')
|
||||
|
||||
// doorlock.updateCards()
|
||||
// server()
|
||||
|
||||
// const HID = require('node-hid')
|
||||
|
||||
// choose driverType
|
||||
// default is 'libusb' for Mac OSX & Windows
|
||||
// default is 'hidraw', for Linux
|
||||
// let type = null
|
||||
|
||||
// if (process.argv[2]) {
|
||||
// type = process.argv[2]
|
||||
// }
|
||||
// disabled until prebuild gets multi-target, see issue node-hid#242
|
||||
// console.log('driverType:', (type) ? type : 'default');
|
||||
// HID.setDriverType( type );
|
||||
|
||||
// console.log('devices:', HID.devices())
|
||||
7
src/models/access-log.js
Normal file
7
src/models/access-log.js
Normal file
@@ -0,0 +1,7 @@
|
||||
class AccessLog {
|
||||
static log(member) {
|
||||
console.log('LOGGING', member)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = AccessLog
|
||||
11
src/models/display.js
Normal file
11
src/models/display.js
Normal file
@@ -0,0 +1,11 @@
|
||||
class Display {
|
||||
static successMessage(msg) {
|
||||
console.log('SUCCESS', msg)
|
||||
}
|
||||
|
||||
static failureMessage(msg) {
|
||||
console.log('FAILURE', msg)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Display
|
||||
67
src/models/door.js
Normal file
67
src/models/door.js
Normal file
@@ -0,0 +1,67 @@
|
||||
const tessel = require('tessel')
|
||||
const constants = require('../../config/constants')
|
||||
// const fs = require('fs')
|
||||
// const path = require('path')
|
||||
|
||||
// const USB_MOUNT_PATH = '/mnt/sda1'
|
||||
// const CARDS_PATH = path.join(USB_MOUNT_PATH, 'cards.json')
|
||||
|
||||
class Door {
|
||||
static open() {
|
||||
// TODO: trigger door opening...
|
||||
tessel.led[2].on()
|
||||
|
||||
return new Promise(resolve => {
|
||||
setTimeout(() => {
|
||||
// TODO: trigger door closing
|
||||
Door.close()
|
||||
resolve()
|
||||
}, constants.DOOR_OPEN_DELAY)
|
||||
})
|
||||
}
|
||||
|
||||
static close() {
|
||||
console.log('CLOSE DOOR')
|
||||
tessel.led[2].off()
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Door
|
||||
|
||||
// const doorlock = {}
|
||||
|
||||
// doorlock.updateCards = () => {
|
||||
// console.log('fetch cards from API and update file')
|
||||
// const cards = [{ card: '1234', name: 'John' }, { card: '5566', name: 'Jane' }]
|
||||
// doorlock.writeCards(cards)
|
||||
// }
|
||||
|
||||
// doorlock.readCards = cb => {
|
||||
// fs.readFile(CARDS_PATH, function(err, data) {
|
||||
// if (err) throw err
|
||||
// console.log('data:', data.toString())
|
||||
// cb(JSON.parse(data))
|
||||
// })
|
||||
// }
|
||||
|
||||
// doorlock.writeCards = cards => {
|
||||
// const text = JSON.stringify(cards)
|
||||
// fs.writeFile(CARDS_PATH, text, err => {
|
||||
// if (err) throw err
|
||||
// console.log('wrote:', cards)
|
||||
// })
|
||||
// }
|
||||
|
||||
// doorlock.open = () => {
|
||||
// console.log('open!')
|
||||
// tessel.led[2].on()
|
||||
// setTimeout(() => tessel.led[2].off(), 3000)
|
||||
// }
|
||||
|
||||
// doorlock.close = () => {
|
||||
// console.log('close!')
|
||||
// tessel.led[3].on()
|
||||
// setTimeout(() => tessel.led[3].off(), 3000)
|
||||
// }
|
||||
|
||||
// module.exports = doorlock
|
||||
24
src/models/door.test.js
Normal file
24
src/models/door.test.js
Normal file
@@ -0,0 +1,24 @@
|
||||
const Door = require('./door')
|
||||
const tessel = require('tessel')
|
||||
|
||||
jest.mock('tessel')
|
||||
|
||||
describe('models/door', () => {
|
||||
describe('.open', () => {
|
||||
test('opens door', () => {
|
||||
jest.spyOn(Door, 'close')
|
||||
// Door.close = jest.fn()
|
||||
return Door.open().then(() => {
|
||||
expect(tessel.led[2].on).toBeCalled()
|
||||
expect(Door.close).toBeCalled()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('.close', () => {
|
||||
test('closes door', () => {
|
||||
Door.close()
|
||||
expect(tessel.led[2].off).toBeCalled()
|
||||
})
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user