=============================== IoTronic =============================== IoTronic is an Internet of Things resource management service for OpenStack clouds. IoTronic allows to manage Internet of Things resources as part of an OpenStack data center. * Free software: Apache license * Source: http://git.openstack.org/git/openstack/iotronic * Bugs: http://bugs.launchpad.net/iotronic .. contents:: Contents: :local: Basic scenario ---------------------- For this installation of the Iotronic Service we are considering a scenario with the following hosts and softwares: - Controller ( **Ubuntu linux**): Mysql, Keystone, Rabbitmq - Iotronic ( **Ubuntu linux** ): Iotronic-conductor, iotronic-wamp-agent, crossbar - Board: iotronic-lightining-rod Controller host setup ---------------------- According to the `Openstack Documentation `_ install the following softwares on the controller host: - SQL database - Message queue - Memcached - Keystone Creation of the database ------------------------- On the dbms create the iotronic db and configure the access for the user iotronic:: MariaDB [(none)]> CREATE DATABASE iotronic; MariaDB [(none)]> GRANT ALL PRIVILEGES ON iotronic.* TO iotronic@'localhost' IDENTIFIED BY ‘IOTRONIC_DBPASS’; MariaDB [(none)]> GRANT ALL PRIVILEGES ON iotronic.* TO iotronic@'%' IDENTIFIED BY ‘IOTRONIC_DBPASS’; Add the user and the enpoints on Keystone:: openstack service create iot --name Iotronic openstack user create --password-prompt iotronic openstack role add --project service --user iotronic admin openstack role create admin_iot_project openstack role create manager_iot_project openstack role create user_iot openstack role add --project service --user iotronic admin_iot_project openstack endpoint create --region RegionOne iot public http://IP_IOTRONIC:8812 openstack endpoint create --region RegionOne iot internal http://IP_IOTRONIC:8812 openstack endpoint create --region RegionOne iot admin http://1IP_IOTRONIC:8812 Configuring Iotronic Host -------------------------- Crossbar ^^^^^^^^^^^^^^^^^^^^^ Install crossbar on the Iotronic host:: apt install python-pip python3-pip libsnappy-dev libssl-dev libffi-dev python-dev pip3 install python-snappy crossbar Configuration:: mkdir /etc/crossbar nano /etc/crossbar/config.json **config.json**:: { "version": 2, "controller": { }, "workers": [ { "type": "router", "realms": [ { "name": "s4t", "roles": [ { "name": "anonymous", "permissions": [ { "uri": "*", "allow": { "publish": true, "subscribe": true, "call": true, "register": true } } ] } ] } ], "transports": [ { "type": "websocket", "endpoint": { "type": "tcp", "port": 8181 }, "debug":true, "options":{ "enable_webstatus":true, "fail_by_drop": true, "open_handshake_timeout": 2500, "close_handshake_timeout": 1000, "auto_ping_interval": 10000, "auto_ping_timeout": 5000, "auto_ping_size": 4 } } ] } ] } Create a systemd service file /etc/systemd/system/crossbar.service:: nano /etc/systemd/system/crossbar.service **crossbar.service**:: [Unit] Description=Crossbar.io After=network.target [Service] Type=simple User=root Group=root StandardInput=null StandardOutput=journal StandardError=journal ExecStart=/usr/local/bin/crossbar start --cbdir=/etc/crossbar/ ExecStop=/usr/local/bin/crossbar stop --cbdir=/etc/crossbar/ Restart=on-abort [Install] WantedBy=multi-user.target Iotronic Installation ^^^^^^^^^^^^^^^^^^^^^ Get the source:: git clone https://github.com/openstack/iotronic.git add the user iotronic:: useradd -m -d /var/lib/iotronic iotronic and Iotronic:: cd iotronic pip3 install -r requirements.txt python3 setup.py install create a log dir:: mkdir -p /var/log/iotronic chown -R iotronic:iotronic /var/log/iotronic/ edit ``/etc/iotronic/iotronic.conf`` with the correct configuration:: nano /etc/iotronic/iotronic.conf There is just one wamp-agent and it must be set as the registration agent:: register_agent = True populate the database:: iotronic-dbsync API Service Configuration ^^^^^^^^^^^^^^^^^^^^^^^^^^ Install apache and the other components:: sudo apt-get install apache2 python-setuptools libapache2-mod-wsgi-py3 create log directory:: touch /var/log/iotronic/iotronic-api_error.log touch /var/log/iotronic/iotronic-api_access.log chown -R iotronic:iotronic /var/log/iotronic/ copy the config apache2 file:: cp etc/apache2/iotronic.conf /etc/apache2/sites-available/iotronic.conf enable the configuration:: a2ensite /etc/apache2/sites-available/iotronic.conf restart apache:: systemctl restart apache2 Starting ^^^^^^^^^^^^^^^^^^^^^ On the wamp agent:: systemctl enable iotronic-wamp-agent systemctl start iotronic-wamp-agent On the conductor:: systemctl enable iotronic-conductor systemctl start iotronic-conductor Board Side ---------------------- Follow the `iotronic-lightning-rod README `_