= Specific Ideas from Eric = These ideas relate to use cases, architecture, implementation, and other aspects. They are here as they are pre-mature for our stage in the development process. It is a mess right now... == Notes on Important NF Requirements == * Extensibility and cost/ease of installation * The best way to achieve these is to use standard networking for communication. This is known to scale and is cheap (for what you are getting) because of the mass of production. Having every device network-aware is too expensive though, so we do need to allow dumber (aka: cheaper) devices to exist. Also, so many people already know how to setup a home network. * Ease of installation * If we use a network, then it would be nice to have autodiscovery. We should probably use Zeroconf (DNS-SD) or UPnP (SSDP) for this. Zeroconf is considered easier to implement, because it uses DNS instead of HTTP as its basis. Zeroconf would probably allow cheaper devices. == Architecture == I am REALLY favoring a distributed system based on the network. It could become a centralized system in some cases. All it does is reuse existing architecture and make devices smart enough to communicate with the computers. It would be very extensible. General idea: * smart devices * network savvy - all can communicate with each other on the local home network (802.11, ethernet) * Zeroconf would be the discovery mechanism * it uses multicast packets to deliver enough information onto the local network to allow devices to connect to each other * one TCP protocol would be the main communication medium * we would want to create a simple "remote control" protocol (based on SNMP or HTTP?) * we might use SNMP - using it would not require the zeroconf mechanism (I think, because it does some UDP stuff...) * dumb devices * these devices should be able to be manufactured cheaply * not network savvy * would be connected to a smart device and use a simple protocol for communication * the smart device would publish the dumb device's information onto the network * when you only have one smart device (computer), then it would be centralized - otherwise it would be distributed * You would have smart devices that were similar to access points * they could connect to dumb devices using any means (serial cable, USB, Bluetooth, Firewire, etc.) * All devices could implement more protocols and could share their features with Zeroconf * devices could then communicate with each other in whatever protocol they wanted (makes it extensible)