1530
|
1 # Goals
|
|
2
|
|
3 Make rules easy to add and experiment with.
|
|
4 Be transparent and debuggable.
|
|
5 Don't pack things into names that need to be parsed out.
|
|
6 Prefer RDF and URIs over ad-hoc structures and ids.
|
|
7 Integrate with lots of outside data sources.
|
|
8
|
|
9 ## Input
|
|
10
|
|
11 Services create RDF graphs (legacy) and send MQTT messages (esp32 nodes, and eventually everything)
|
|
12
|
|
13 `mqtt_to_rdf` gathers those inputs; writes some of them to influxdb; turns them into an RDF graph
|
|
14
|
|
15 `collector` takes multiple RDF graphs and merges them into new combinations
|
|
16
|
|
17 ## Reasoning
|
|
18 `reasoning` takes an RDF graph and N3 rules; emits an RDF graph (and makes HTTP PUT and POST requests)
|
|
19
|
|
20 ## Output
|
|
21
|
|
22 `rdf_to_mqtt` takes RDF graph and emits MQTT messages
|
|
23
|
|
24 (`reasoning` does some of its own output actions)
|
|
25
|
|
26 Services (sometimes, the same ones that gathered input) perform home automation outputs.
|
1531
|
27
|
|
28 ## Protocols
|
|
29
|
|
30 A SyncedGraph can be updated on a server such that the updates (as Patch objects) are sent as JSON-LD over a long-running SSE connection. There's a Patches-over-websocket connector in the `rdfdb` repo.
|
|
31
|
|
32 MQTT: Matching a lot of what esphome.io has, which maybe is compatible with homeassistant?
|