{ "info": { "author": "IoT-LAB Team", "author_email": "admin@iot-lab.info", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3 :: Only", "Topic :: Communications" ], "description": "## An IoT Dashboard for open and great IoT demos\n\n### Available Demos\n\n* [RIOT](http://riot-os.org): You can find a permanent demo instance configured\n as a showroom for RIOT. This showroom is available at\n http://riot-demo.inria.fr.\n\n* [IoT-LAB open A8 demo](utils/iotlab)\n This demo automatically submits an experiment on IoT-LAB with two open A8\n nodes. The first node is configured as a border router and the second node\n runs a firmware that integrates automatically in the RIOT Demo Dashboard\n described above.\n\n```\n _____ ___ _____ ___ _____ _ _ ____\n | ___| |_ _| |_ _| |_ _| ___ |_ _| | | / \\ | __ )\n | |_ | | | | | | / _ \\ | | _____ | | / _ \\ | _ \\\n | _| | | | | | | | (_) | | | |_____| | |___ / ___ \\ | |_) |\n |_| |___| |_| |___| \\___/ |_| |_____| /_/ \\_\\ |____/\n```\n\n### Broker and Dashboard services for an IoT dashboard\n\nThe broker manages a list of alive sensor nodes by running it's own CoAP\nand WebSocket servers.\n\nThe Dashboard is a web page with some embeded javascript that displays the list\nof available nodes and their status. It also allows to interact with the nodes\n(LED control, Robot control, etc)\n\nWhen a node starts, it notifies itself to the broker server by sending a CoAP\npost. The broker then starts a discovery of the ressources provided by the node\n(using the CoAP .well-known/core resource). Once the node available resources\nare known, the broker sends to each web/mobile clients notification messages\nso that they can update themselves.\n\nTo keep track of alive nodes, each node has to periodically send a notification\nmessage to the broker.\nIf a sensor node has not sent this notification within 120s (default,\nbut this is configurable), the broker automatically removes it from the list\nof alived nodes and notifies all web/mobile clients.\n\n#### Installation procedure on a standalone system:\n\nHere are the steps to install the IoT-Kit on a standalone system. The final\nsetup will be as follows:\n* `iot-broker` and `iot-dashboard` running as systemd services\n* the `iot-broker` websocket server listening on port 8082\n* the `iot-dashboard` web application listening on port 8080. All served pages\n open a websocket client on the port 8082 of the broker\n\nFor a custom setup, please edit the `Environment` option of the\n[iot-broker](systemd/iot-broker.service) and\n[iot-dashboard](systemd/iot-dashboard.service) systemd service files\n**before** deploying. The broker port should be the same in both service files\nif you want the two to work together.\n\nHere are the installation steps:\n\n1. Clone this repository\n
\n    $ git clone https://github.com/iot-lab/iot-kit.git\n
\n2. Deploy the system (debian/raspbian/ubuntu):\n
\n    $ make deploy\n
\n3. Verify that the services are correctly running:\n
\n    $ sudo systemctl status iot-broker.service\n    \u25cf iot-broker.service - IoT Broker Application\n       Loaded: loaded (/lib/systemd/system/iot-broker.service; enabled)\n       Active: active (running) since dim. 2016-12-18 14:59:56 CET; 35min ago\n     Main PID: 32411 (python3)\n       CGroup: /system.slice/riot-broker.service\n               \u2514\u250032411 /usr/bin/python3 /home/pi/demos/bin/iot-broker --port=8082 --debug\n    [...]\n    $ sudo systemctl status iot-dashboard.service\n    \u25cf iot-dashboard.service - IoT Dashboard Application\n       Loaded: loaded (/lib/systemd/system/iot-dashboard.service; enabled)\n       Active: active (running) since dim. 2016-12-18 14:52:29 CET; 41min ago\n     Main PID: 32321 (python3)\n       CGroup: /system.slice/iot-dashboard.service\n               \u2514\u250032321 /usr/bin/python3 /home/pi/demos/bin/iot-dashboard --port=8080 --broker-port=8082 --broker...\n    [...]\n
\n\nYou can also\nupdate `Environment` option in the services definition files **after**\ndeployment as they are locate in `/lib/systemd/system/iot-broker.service` and\n`/lib/systemd/system/iot-dashboard.service`. In this case, you'all also need\nto reload the systemd daemon services and restart the `iot-broker` and\n`iot-dashboard` services:\n```\n $ sudo systemctl daemon-reload\n $ sudo systemctl restart iot-broker\n $ sudo systemctl restart iot-dashboard\n```\n\n_**Example**_: Environments used in the online RIOT demo\n* iot-broker:\n```\nEnvironment='BROKER_PORT=8082'\n```\n* iot-dashboard:\n```\nEnvironment='HTTP_PORT=8080' \\\n 'BROKER_PORT=80' \\ # This is because the broker is behind an apache proxy\n 'BROKER_HOST=riot-demo.inria.fr' \\\n 'APP_TITLE=RIOT Demo Dashboard' \\\n 'APP_LOGO=/static/assets/logo-riot.png' \\\n 'APP_FAVICON=/static/assets/favicon192.png'\n```\n\n#### Dashboard local development against an external IoT broker instance\n\nHere we take as example the online demo available at http://riot-demo.inria.fr.\nThe websocket server of the broker service is reachable on port 80.\nAs the broker and the dashboard are decoupled in 2 distinct services,\nit's possible to run a local dashboard application serving dashboard web page\nthat itself connects to the broker.\nThis way your dashboard will display the available nodes on the online RIOT\ndemo.\n\nIn this configuration, you don't need to install the iot-broker and\niot-dashboard services but you still need to install the required development\ndependencies the first time:\n```\n $ make install-dev\n```\n\nThen you can start the dashboard application:\n```\n $ make run-dashboard\n```\nand open a web browser at [http://localhost:8080](http://localhost:8080).\nWhen the web page is loaded, thanks to its embedded javascript, it directly\nconnects to the broker websocket server and starts to communicate with the\nnodes.\n\nOf course you can set the environment variables at your needs:\n`BROKER_PORT`, `BROKER_HOST`, `DASHBOARD_PORT`, `DASHBOARD_TITLE`,\n`DASHBOARD_LOGO`, `DASHBOARD_FAVICON`, `CAMERA_URL`.\n\n```\n $ BROKER_PORT=8082 BROKER_HOST=localhost make run-dashboard\n```\n\n### Setting up a Raspberry PI with 802.15.4 as border router\n\nA standalone IoT dashboard can run on a prepared raspberry pi:\n* Hardware requirements:\n * OpenLABS 802.15.4 module installed an configured. See\n [this wiki page](https://github.com/RIOT-Makers/wpan-raspbian/wiki/Create-a-generic-Raspbian-image-with-6LoWPAN-support) for more information.\n * A RPI Camera installed and configured (optional)\n\n* Software requirements:\n * Mjpg_streamer installed and running. See [the GitHub project.](https://github.com/jacksonliam/mjpg-streamer).\n\n2 useful commands to manage custom raspbian images from Linux:\n* Copy Raspberry PI SD to a compressed image on Linux:\n```\n $ dd bs=4M if=/dev/mmcblk0 | gzip > custom_raspbian.img.gz\n```\n* Dump the compressed images to the Raspberry PI\n```\n $ gzip -dc custom_raspbian.img.gz | sudo dd bs=4M of=/dev/mmcblk0\n```\n\nThen follow the IoT Dashboard installation steps described above.", "description_content_type": null, "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.iot-lab.info", "keywords": "iot demonstration web coap mqtt", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "iotkit", "package_url": "https://pypi.org/project/iotkit/", "platform": "any", "project_url": "https://pypi.org/project/iotkit/", "project_urls": { "Homepage": "http://www.iot-lab.info" }, "release_url": "https://pypi.org/project/iotkit/0.1.3.dev0/", "requires_dist": null, "requires_python": null, "summary": "Provides tools for setting up a complete IoT dashboard using standards protocols.", "version": "0.1.3.dev0" }, "last_serial": 2660488, "releases": { "0.1.3.dev0": [] }, "urls": [] }