# project domotica
still WIP
## terminology
|verb/acronym|description|
|-|-|
|dongle|USB stick with a nRF52833 or nRF52840 module|
|bts|Border Transport Server|
|node|A dongle running in node mode|
|border router|A dongle running in border router mode|
## architecture
Above is a draft version of the system architecture.
- Each node runs the same firmware, and is capable of being a border router.
- Each dongle starts in "node mode" by default, and only turns into border
router mode once it receives a special command over the USB serial bus.
- A node can turn into a border router, but will still keep functioning as a
normal node as well.
- All blocks in the desktop computer zone can be run on different computers
over the network.
- The BTS creates a TCP socket which sends data to the client on incoming
events from the mesh network, and broadcasts any data received from the
client back to the mesh network.
- The configuration UI / action handler server sends and receives events
to/from the TCP socket API, and will decide which actions should be taken for
each event.
- The protocol used for communicating between network nodes is preferably in a
binary format to save on bandwidth.
- The protocol used by the TCP socket API is text-based, as it's used to
communicate between userspace services on desktop computers.
- Each node sends a button event to the border router when it's button is
pressed.
- Each node sets it's LED's status upon receiving an LED event.
- Each node has it's own ID (this is probably going to be it's bluetooth MAC
address for simplicity).