{"_id":"59cffec4a0d8fe0010f7046d","project":"568bdc1483d2061900d86cdc","version":{"_id":"59a72290d61777001b6c42c3","project":"568bdc1483d2061900d86cdc","__v":19,"createdAt":"2017-08-30T20:39:44.453Z","releaseDate":"2017-08-30T20:39:44.453Z","categories":["59a7236e3fe4d90025117c10","59a72eb6cb0db3001b84cfe2","59a734eb757d030019b85af8","59c0243b1b2d07001a9d2b76","59c035e42126e10028effb12","59c06c40df5b3c0010584a13","59c1a5852cabe5002641a3e7","59c2fb00b2b45c0010b7a3d7","59c32ceb9aea850010ac4130","59c32e6e190c90003cb0d12f","59c33affb2b45c0010b7aa23","59c7dfa457bd8200105444dc","59c7e975c50cf30010d712a0","59cffdef0cd4dd0010294d54","59d0622ca91a810032c8f60c","59d06733c1aec60026253065","59d174d44ac471001a07b123","59d5a5e323e6e800103defb2","59ecf1d8ed507c001c52b255"],"is_deprecated":false,"is_hidden":false,"is_beta":true,"is_stable":true,"codename":"","version_clean":"0.0.0","version":"0"},"category":{"_id":"59cffdef0cd4dd0010294d54","project":"568bdc1483d2061900d86cdc","version":"59a72290d61777001b6c42c3","__v":0,"sync":{"url":"","isSync":false},"reference":false,"createdAt":"2017-09-30T20:26:23.487Z","from_sync":false,"order":2,"slug":"platform-overview","title":"Platform Overview"},"user":"58cc41f21751ce2f003be3b7","__v":0,"parentDoc":null,"updates":[],"next":{"pages":[],"description":""},"createdAt":"2017-09-30T20:29:56.215Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":2,"body":"# Overview\n\nDroplit.io organizes devices into containers. These containers serve two functions. First, they represent relationships between devices (usually geographical, but not always). Second, they provide security access controls.\n\nContainers cannot overlap, and have a hierarchical structure. All containers must have an ID, and that ID must be unique. The IDs of all containers, and the objects inside them, must be unique. Aliases, when applied to containers, must also be unique.\n\nAn overview of the container structure is illustrated below.\n\n![droplit structure](https://droplit.box.com/shared/static/5hpebtqnjj34yo8bs9358jyoxtndnd8z.png)\n\n# Ecosystems\n\nAn ecosystem is a top-level container which encapsulates all other container types.\n\nThe entirety of an application or product should be created inside a single ecosystem. That ecosystem should contain all items that are reusable for the application.\n\nEcosystems cannot access other ecosystems. Objects contained inside an ecosystem are available to only that ecosystem, and an object cannot be shared between multiple ecosystems. The same is true for properties.\n\nThe creator of an ecosystem is also its owner. An ecosystem owner can grant other users and developers access to the ecosystem when necessary.\n\nDevice control commands cannot be issued to ecosystems.\n\nEcosystems use domains as aliases.\n\n## Clients\n\nEcosystems also contain references to objects called clients, which are not containers themselves, but monitor the type of connection the ecosystem has to the Droplit cloud. A “server” client is a local server running the Droplit system which connects to the cloud, while an “application” is an external program that connects either to a Droplit server or the Droplit cloud.\n\n# Environments\n\nAn environment represents a physical location or space, such as a single building. It can be referred to with an alias.\n\nEnvironments are the highest scope to which commands can be issued. For example, setting the environment property “BinarySwitch.switch” to “off” will set that property on all children of that environment which implement the “BinarySwitch” service class.\n\n# Zones\n\nA zone represents a group of devices. It can be referred to with an alias. Zones can also contain other zones inside of themselves.\n\nUsually, zones group devices by either their location or physical use. For example, a zone called “ConferenceRoom” could represent a room and all its devices, and a zone called “Lighting” could be present inside “ConferenceRoom” to represent all the lights in the room.\n\n![zones diagram](https://droplit.box.com/shared/static/cyo51itc66zrhxswp6gupk7lkun6415t.png)\n\n# Devices\n\nA device is the digital representation of a connected piece of smart hardware that can be remotely controlled. It can be referred to with an alias. Common examples of these include switches and smart bulbs.","excerpt":"","slug":"containers","type":"basic","title":"Containers"}
# Overview Droplit.io organizes devices into containers. These containers serve two functions. First, they represent relationships between devices (usually geographical, but not always). Second, they provide security access controls. Containers cannot overlap, and have a hierarchical structure. All containers must have an ID, and that ID must be unique. The IDs of all containers, and the objects inside them, must be unique. Aliases, when applied to containers, must also be unique. An overview of the container structure is illustrated below. ![droplit structure](https://droplit.box.com/shared/static/5hpebtqnjj34yo8bs9358jyoxtndnd8z.png) # Ecosystems An ecosystem is a top-level container which encapsulates all other container types. The entirety of an application or product should be created inside a single ecosystem. That ecosystem should contain all items that are reusable for the application. Ecosystems cannot access other ecosystems. Objects contained inside an ecosystem are available to only that ecosystem, and an object cannot be shared between multiple ecosystems. The same is true for properties. The creator of an ecosystem is also its owner. An ecosystem owner can grant other users and developers access to the ecosystem when necessary. Device control commands cannot be issued to ecosystems. Ecosystems use domains as aliases. ## Clients Ecosystems also contain references to objects called clients, which are not containers themselves, but monitor the type of connection the ecosystem has to the Droplit cloud. A “server” client is a local server running the Droplit system which connects to the cloud, while an “application” is an external program that connects either to a Droplit server or the Droplit cloud. # Environments An environment represents a physical location or space, such as a single building. It can be referred to with an alias. Environments are the highest scope to which commands can be issued. For example, setting the environment property “BinarySwitch.switch” to “off” will set that property on all children of that environment which implement the “BinarySwitch” service class. # Zones A zone represents a group of devices. It can be referred to with an alias. Zones can also contain other zones inside of themselves. Usually, zones group devices by either their location or physical use. For example, a zone called “ConferenceRoom” could represent a room and all its devices, and a zone called “Lighting” could be present inside “ConferenceRoom” to represent all the lights in the room. ![zones diagram](https://droplit.box.com/shared/static/cyo51itc66zrhxswp6gupk7lkun6415t.png) # Devices A device is the digital representation of a connected piece of smart hardware that can be remotely controlled. It can be referred to with an alias. Common examples of these include switches and smart bulbs.