https://github.com/jhurliman/node-motionblinds
A node.js library for interfacing with Motion Blinds from Coulisse B.V
https://github.com/jhurliman/node-motionblinds
blinds coulisse home-automation nodejs omniablinds typescript
Last synced: 2 months ago
JSON representation
A node.js library for interfacing with Motion Blinds from Coulisse B.V
- Host: GitHub
- URL: https://github.com/jhurliman/node-motionblinds
- Owner: jhurliman
- License: mit
- Created: 2021-02-22T21:00:57.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-08-15T18:32:44.000Z (10 months ago)
- Last Synced: 2025-03-26T16:39:03.901Z (3 months ago)
- Topics: blinds, coulisse, home-automation, nodejs, omniablinds, typescript
- Language: TypeScript
- Homepage:
- Size: 355 KB
- Stars: 7
- Watchers: 2
- Forks: 3
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# node-motionblinds
node.js library for interfacing with Motion Blinds from Coulisee B.V. including
derivative products such as OmniaBlinds.### Retrieving Your Key
The Motion Blinds API uses a 16 character key that can be retrieved from the
official "Motion Blinds" app for iOS or Android. Open the app, click the 3 dots
in the top right corner, go to "Settings", go to "About MOTION", then quickly
tap the screen five times. A popup will appear showing your key.### Usage
See [`hiltest/hiltest.ts`](https://github.com/jhurliman/node-motionblinds/blob/main/hiltest/hiltest.ts)
for examples of reading and writing to blinds.```javascript
import MotionGateway from 'motionblinds'(async function main () {
// Initialize the MotionGateway class. Passing in the optional `key` parameter
// enables write commands
const gw = new MotionGateway({ key: '' })
// Open read and write sockets for UDP multicast communication with Motion
// blinds. This will automatically be called when any outgoing message needs
// to be sent, so it only needs to manually be called if you intend to
// passively listen for broadcast messages
// gw.start()// Listen for "report" events, broadcast by devices when a state transition
// has completed
gw.on('report', (report) => {
console.dir(report)
})// Sends the `getDeviceList()` command followed by a `readDevice()` for each
// returned device. This calls `start()` as a side effect of communication.
// The `token` member will also be set as a side effect of the
// `getDeviceList()` call, enabling write commands after this completes
const devices = await gw.readAllDevices()
for (const device of devices) {
if (device.deviceType === MotionGateway.Blind) {
// Send a Close/Down command for each discovered device of type Blind
await gw.writeDevice(device.mac, device.deviceType, {
operation: MotionGateway.Operation.CloseDown,
})
}
}// Disconnect the send and receive UDP sockets
gw.stop()
}())
```### Test
Run `yarn test` to verify basic offline functionality of the library. To run the
hardware-in-the-loop tests against real blinds, use
`MOTION_KEY="" yarn test:hil`### License
node-motionblinds is licensed under [MIT](https://opensource.org/licenses/MIT).