45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
const Bus = require('@uci/i2c').Bus,
|
|
MCP = require('../lib/mcp'),
|
|
pause = require('@uci/utils').pPause
|
|
|
|
let bus = new Bus()
|
|
|
|
let ADDRS = [0x24, 0x25, 0x26, 0x27]
|
|
|
|
let relayBanks = ADDRS.map(devAddr => {
|
|
return new MCP.MCP23017(bus, devAddr, {
|
|
pin_cfg_default: 'output',
|
|
desc: `relays at i2c address ${devAddr.toString(16)}`,
|
|
stateB: 255, // should be read from persistant state file for when power goes out
|
|
stateA: 255
|
|
})
|
|
})
|
|
|
|
async function go(port = 'A') {
|
|
let time = 1
|
|
await relayBanks[0].init()
|
|
await pause(time * 1000)
|
|
await relayBanks[0].allOff(port)
|
|
await pause(time * 1000)
|
|
await relayBanks[0].on([1, 5, 8], port, 'PLC')
|
|
await pause(time * 1000)
|
|
await relayBanks[0].on([1, 2, 5, 7, 8], port, 'PLC')
|
|
await pause(time * 1000)
|
|
await relayBanks[0].off([1, 3, 5, 8], port, 'PLC')
|
|
await pause(time * 1000)
|
|
await relayBanks[0].off([1, 3, 5, 8, 7, 2], port, 'PLC')
|
|
await pause(time * 1000)
|
|
await relayBanks[0].toggle([1, 5, 7], port, 'PLC')
|
|
await pause(time * 1000)
|
|
await relayBanks[0].toggle([1, 5, 8], port, 'PLC')
|
|
await pause(time * 1000)
|
|
await relayBanks[0].toggle([8], port, 'PLC')
|
|
await pause(time * 1000)
|
|
await relayBanks[0].force([3, 4], port, 'PLC')
|
|
await pause(time * 1000)
|
|
await relayBanks[0].allOn(port)
|
|
}
|
|
|
|
go('B') // .then(resp => console.log(resp))
|
|
.catch(reason => console.error(reason))
|