Apply human-like commands to IOTDB Things
This applies "human like" commands to things. For example, "turn up" the "lights". Note that this does not do NLP processing, we assume requests are already structured as so:
{
"thing": "TV",
"action": "turn on"
}
This then will look through any transporter you provide to file matching things, based on the their current state, metadata, etc.
See the folder vocabulary. Everything is written in YAML.
We assume there's something doing some parsing beforehand, and we're down to the core data. This doesn't do any clever NLP stuff. That's what your Amazon Echo (etc) are for.
Input Requests look like this:
{
"thing": "TV",
"action": "turn on"
}
A special action is forget
, which will delete the Thing from the Transporter.
If the Transporter is IOTDB, it will disconnect the Thing.
List all the Things that are on
{
"thing": "TV",
"action": "on"
}
A special action is list
, which will list everything
Requests can be specifically restricted to a Zone
{
"thing": "TV",
"action": "off",
"zone": "Second Floor",
}
Here's a basic example to directly manipulate a WeMo Socket. There's a fair bit of setup, but we hope it's worth it.
const iotdb = require("iotdb")
const _ = iotdb._;
const iotdb_commands = require("iotdb-commands")
iotdb.use("homestar-wemo")
iotdb.connect("WeMoSocket")
const iotdb_transport_iotdb = require("iotdb-transport-iotdb")
const iotdb_transporter = iotdb_transport_iotdb.make({}, iotdb.things())
iotdb_commands.match({
transporter: iotdb_transporter,
requestd: {
action: "turn on", // or try: query: "on"
thing: "lights",
}
}, ( error, matches ) => {
matches.forEach(matchd => iotdb_commands.execute(iotdb_transporter, matchd, error => {
…
});
})
If you installed Home☆Star youll be able to try it from the command line
$ homestar --thing "tv" --action "turn on"
Note that this assumes you're in an environment set up by homestar-persist, so don't tear your hair out if this doesn't work for you immediately.
Try it out using
$ node tools/RunSamples samples/tests/action-lights-turn-up.json | bunyan
$ node tools/RunSamples samples/tests/query-tv-channel.json | bunyan
The samples
folder is where all the sample data is stored. Eventually we'll
have sample results, so RunSamples
will work to run test caes
There are numerous test cases in test. These are independent of the samples (next sction).
The folders samples/tests
Have input Requests to test against
The folder samples/things
are the "Things" to test with