OrderEat project for course Programming for IOT @ PoliTo.
- Scalable on the number of users;
- Scalable on the number of restaurants;
- Scalable to manage various IoT devices, users and contexts (e.g. adding/removing new devices, users and context at run-time without modifying the source-code).
- Automatic setup process;
- Comfort for the customer;
- Consumption control for restaurateur;
- Unique Configuration File;
- Guarantee information exchange among the actors in the system over the internet (REST and MQTT)
-Config File is shared in the folder between actors
- Name Folder: OrderEatWebApp
- Name project: orderEat
- Name app1: food ---> Customer Panel
- Name app2: rpanel ---> Restaurant Panel
- Name app3: tg-menu --> Customer Panel for Telegram Orders at Restuarant
To run the web app in your localhost, be sure to install the following requirements in a virtual environment, activate the venv and the run the following command:
$ python manage.py runserver
==== Then click CTRL + link(localhost:8080) in the console and the platform will be available in the browser.
You can find a deployed version through Heroku (PaaS) of the platform here: link
The platform has been divided in three different applications exploiting OOP and tasks division
The dashboard exploits Thingsboard CE installed on a Ubuntu Server 18.04 LTS VM (IaaS). The main utilized features are:
- Rule Chains: Default Root Rule Chain with additional "save attributes" node for shared attributes, and additional "rule chain" node for Alarm Rule Chain. Alarm Rule Chain manages the creation and clearance of alarms based on customer feedbacks according to a custom javascript code;
- HTTP/MQTT/REST API: For client, asset and device provision, their telemetry and client/share attributes;
- Relations: Relation between Assets, Devices and Clients;
- Dashboard
- Main Components:
- Communication:
- BME680⟺ESP32: I2C;
- ESP32⟺Thingsboard: MQTT
- Comments: BME680 SDO ⟹ GND for I2C Address: 0x76
- Interactive chat
- User friendly keyboard to improve interactiviy
- Communication with Thingsboard
- Communication with Firebase