uci-mcp/test/relays.js

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))