Pradeep Singh | 26th May 2016
If you are trying to develop a new IoT Software Application and looking for some open source / free tools for it; you may consider following listing. This is not a complete list but it can definitely give you right pointers to start with.
MQTT or Message Queuing Telemetry Transport is a publish-subscribe based lightweight messaging protocol for use on top of the TCP/IP protocol. It is best suited for Internet of Things (IoT) and Machine to Machine (M2M)communication because of its small code footprint, lower bandwidth requirements and lower power consumption on device.
Paho project provides open-source client implementations of MQTT in several languages like c/c++, java, python, .Net etc.
Mosquitto is an open source (EPL/EDL licensed) message broker that implements the MQTT protocol versions 3.1 and 3.1.1.
MQTT Lens is a free Google Chrome plugin that allows you to test MQTT Broker connection by subscribing and publishing to a Topic.
To select the right Database for your IoT Application you need to consider several points such as processing power and memory available on Compute Module, embedded or over network access, SQL or NoSQL etc.
SQLite is an embedded SQL database engine. SQLite reads and writes directly to ordinary disk files. A complete SQL database with multiple tables, indices, triggers, and views, is contained in a single disk file. It works well with devices with limited compute power such as Mobiles, Tablets and Single board computers like Raspberry Pi etc.
SQLite does not have a separate server process so if you are looking to connect to your DB over network you may consider using MySQL DB.
InfluxDB is an open source database written in Go specifically to handle time series data for IoT Devices. InfluxDB installs in minutes without external dependencies, yet is flexible and scalable enough for complex deployments.
The Apache Cassandra database is a free and open source NoSQL Database that supports scalability and high availability without compromising performance. Cassandra’s support for replicating across multiple datacenters is best-in-class.
3. Web Application:
If you need to develop a Web Application for your IoT project you may consider using following frameworks –
Flask is a BSD Licensed micro-framework for Python based on Werkzeug, Jinja 2 and good intentions. Flask allows you to create Python based Web Applications with minimal code. You can use Flask-SocketIO to enable low latency bi-directional WebSocket communications between the clients and the server. This is specially useful for updating realtime data on IoT Dashboards.
4. Web Server:
Based on your project infrastructure you can select a light weight or performance oriented Web Server.
Lighttpd offers effective memory management of cpu load, FastCGI, SCGI, Auth, Output-Compression, URL-Rewriting, and much more. It is an ideal candidate for embedded systems and works perfectly on Raspberry Pi.
NGINX is a lightweight web server which has an open source variant. It is known for its high performance, stability, rich feature set, simple configuration, and low resource consumption.
Security is a major concern for IoT projects. You can secure your IoT app by using a Firewall to filter the Internet traffic.
iptables is the userspace command line program used to configure the Linux 2.4.x and later packet filtering ruleset. It is targeted towards system administrators. Since Network Address Translation (NAT) is also configured from the packet filter ruleset, iptables is used for this, too.
The Smoothwall Open Source Project was set up in 2000 to develop and maintain Smoothwall Express – a Free firewall that includes its own security-hardened GNU/Linux operating system and an easy-to-use web interface.
OPNsense includes most of the features available in expensive commercial firewalls, and more in many cases. It brings the rich feature set of commercial offerings with the benefits of open and verifiable sources.