Subject: [T2TRG] 1. WoT Thing should move to a Band Architecture (Introduction)

From: David Janes <[email-masked]>
Date: Wed, 27 Jan 2016 04:24:48 -0500

Just for some leading context, I participated in the open day and plugfest
and presented the following

http://www.slideshare.net/dpjanes/semantic-and-the-internet-of-things
https://github.com/dpjanes/homestar-coap/blob/master/docs/plugfest/index.md

Carsten Bormann suggest I break out my individual points for discussion,
which I'm doing here, over several emails

********
Formatted version:
https://github.com/dpjanes/homestar-plugfest/blob/master/docs/2016-01%20W3C%20IETF/1.%20WoT%20Thing%20should%20move%20to%20a%20Band%20Architecture%20(Introduction).md
********
1. WoT Thing should move to a Band Architecture (Introduction)

This will be a series of postings, discussing issues the WoT Thing model
and proposed solutions

   1. WoT Thing should move to a Band Architecture (Introduction)
   2. WoT Thing needs to have istate/ostate Bands
   3. WoT Thing needs to have meta Band
   4. WoT Thing needs to have a model Band
   5. Actions should be used lightly; and should return a new Thing
   6. WoT Thing should move to a Band Architecture (Conclusion)

<https://github.com/dpjanes/homestar-plugfest/blob/master/docs/2016-01%20W3C%20IETF/1.%20WoT%20Thing%20should%20move%20to%20a%20Band%20Architecture%20(Introduction).md#code>
Code

We'll be writing code examples in NodeJS and JSON. Don't get caught up in
the details.

Also note that I'm writing all this in a hurry, feel free get back to me.
<https://github.com/dpjanes/homestar-plugfest/blob/master/docs/2016-01%20W3C%20IETF/1.%20WoT%20Thing%20should%20move%20to%20a%20Band%20Architecture%20(Introduction).md#reference-model>Reference
Model

The reference model is from (
https://github.com/w3c/wot/blob/master/TF-AP/thing-api/thing-api-webidl.md).

interface Thing: EventTarget {
    readonly attribute DOMString id;
    readonly attribute DOMString type;
    readonly attribute DOMString name;
    readonly attribute boolean reachable;
    attribute EventHandler onreachabilitychange;
    Promise<any> callAction(DOMString actionName, any parameter);
    Promise<any> setProperty(DOMString propertyName, any newValue)a;
    Promise<any> getProperty(DOMString propertyName);
    void addListener(DOMString eventName, ThingEventListener listener);
    void removeListener(DOMString eventName, ThingEventListener listener);
    void removeAllListeners(DOMString eventName);
}