Internet of Things with Python
Prototypes and IoT systems must be developed often and efficiently for the real-life internet of things. Two new functions arise when this happens: to program IoT devices and to build a backend to connect with these devices.
Python may be utilized for both roles as the development language. Alternatively, you can use a fully functional and practical version of MicroPython to operate on devices with limited processing resources at a reasonable cost.
Let’s have a look at how to program IoT devices and develop a Python backend for them.
Why the Internet of Things?
The term “Internet of Things,” invented by Kevin Ashton in 1999, can be traced back to that year. Since then, its value and scope have grown exponentially; in fact, one of the most important indicators is its market size, which reached $151 billion in 2018 and has been steadily increasing year Prototypes and real-world Internet of Things (IoT) systems must regulate year. According to marketer projections for 2022, the IoT industry might reach $561 billion.
IoT used to be presented using examples like this one:
“You can turn on and off a light bulb in your room using your phone.”
A smart power meter that communicates readings of electricity consumption, uploads that data to the cloud, and creates monthly bills sent directly to your email inbox would scarcely surprise anyone nowadays.
IoT is increasingly being used in a variety of businesses to streamline and improve processes. Manufacturing production lines and agriculture, for example, are excellent examples of different industries taking advantage of the IoT’s numerous benefits. In the case of agriculture, IoT aids in the coordination of harvesters with trucks equipped with elevators in order to efficiently manage grains.
Why use Python in IoT
Many developers use Python as their programming language of choice. It’s easy to learn, has a straightforward syntax, and is supported by a large online community. Python is a good choice for IoT backend programming and device software development. Python can also run on Linux systems, and MicroPython can program microcontrollers.
“You can decrease the quantity of data you have to deal with by adopting this coding language.” Python knows your requirements, whether you’re starting from scratch or connecting with sensors, actuators, and accessories.”
Working with Python for IoT devices has numerous advantages, including the speed with which you can build code and the huge number of libraries available for a variety of platforms.
A python is an excellent tool for creating device prototypes. Even if you change some of your code to C, C++, or Java during production to increase performance, the system will still work flawlessly in Python.
The best solutions for IoT in Python
Python on Raspberry Pi
When it comes to running Python on an IoT device, the first thing that comes to mind is pulling your beloved Raspberry Pi from the table. Python is already pre-installed in the operating system, so all you have to do now is develop your own script.
You can control the I/O ports on the Raspberry Pi expansion bar in this situation. Fortunately, the board includes a wireless connection (Bluetooth and WiFi), Ethernet, and HDMI outputs for connecting a monitor, a customized 3.2″ 320×240 TFT LCD, or a low-power E-Ink 2.13″ 250×122 display for Raspberry Pi.
The controllers are available at a variety of processing power and price points, ranging from the powerful Raspberry Pi 4 Model B 8GB to the tiniest Raspberry Pi Zero, all of which support Python. For backward compatibility, you can install the older version of Python 2.7 if necessary.
Using the GPIO Zero module, you can quickly control the I/O ports with a few lines of Python code:
This example demonstrates how simple it is to receive and interpret signals by pressing and releasing the button on the second pin at the same time.
The availability of a wide range of programming tools, libraries, and communications for the most complex devices based on Raspberry Pi, including video processing from cameras, is one of this method’s benefits.
Python on PyBoard
The keyboard with an STM32F405RG microcontroller is the next great Python solution for IoT devices.
The pyboard is a compact and capable development board for electronics based on MicroPython. It connects via USB to your computer and includes a USB flash drive for storing Python scripts as well as a serial Python prompt (a REPL) for fast programming. This works with Windows, Mac OS X, and Linux.
PyBoard employs MicroPython, a lightweight version of the standard CPython interpreter. MicroPython is “a lean and efficient version of the Python 3 programming language that contains a small portion of the Python standard library and is meant to function on The company’s website indicates: ‘Microcontroller and in a limited environment. The MicroPython pyboard is a tiny electrical circuit board that runs MicroPython on bare metal, allowing a low-level Python operating system to handle diverse electronic applications. Interactive prompt, arbitrary precision integers, closures, list comprehension, generators, exception handling, and more are all included in MicroPython. Despite this, it is small enough to fit and run on only 256k of code space and 16k of RAM.”
MicroPython is a complete rewrite of the Python programming language (version 3.4) to make it compatible with and execute on a microcontroller. It has a lot of efficiency optimizations and requires extremely little RAM.
On the PyBoard, MicroPython runs bare-metal, offering you a Python operating system. Functions and classes for managing the board’s peripherals, including UART, I2C, SPI, ADC, and DAC, are included in the built-in pyb module.
The board’s dimensions are astounding, measuring around two-quarters of an inch by 43mm and weighing only 6 grams.
ESP8266, ESP32 with Micropython
You may run Python on ESP8266 and ESP32 if you need to construct an IoT device with low power consumption, tremendous capabilities, and wireless WiFi network integration. MicroPython, to be precise.
After installing Python on your machine, execute pip install esptool from the command line. The MicroPython installation procedure is straightforward: download the firmware from the website and install it with esptool, remembering to format the board beforehand.
There are already a number of IDEs available for Micropython development. The entire development process takes place on a functioning computer, after which it is compiled and saved in the memory of an ESP8266 or ESP32 microcontroller. Take a look at how simple this code is:
from machine import Pin
led_pin = Pin(2,Pin.OUT)
MicroPython has a lot of limitations compared to standard Python, but in general, you can simply develop the necessary client-side code and run it on ESP microcontrollers. Purchasing PyBoard is more expensive than using this option.
IoT Backend with Python
MQTT protocol with Python
MQTT, a protocol that is easily implemented using Python, is the most popular connection method for IoT devices.
The MQTT protocol is a lightweight publish/subscribe messaging transport designed for machine-to-machine (M2M)/Internet of Things connectivity. It’s beneficial for connections with remote places that require a tiny code footprint and/or limited network capacity.
The Eclipse Paho MQTT Python client module supports MQTT protocol versions 5.0, 3.1.1, and 3.1.
A client class is included in the Poho library code, which allows programs to connect to an MQTT broker and send messages, subscribe to topics, and receive messages. It also contains auxiliary methods that make it simple to publish one-time messages to MQTT servers.
The fact that the library supports Python 2.7.9 or 3.5 is intriguing to us. It’s easier to integrate images using previous Python 2.7 versions.
IoT backend on Flask in Python
The Flask microframework is intended to help you develop the backend for your IoT devices and easily set up server-side input/output information. It’s packed with features.
To get started, pick which queries your IoT devices will make, install the Flask microframework, and write a few lines of code. When a client requests information, the GET method will now return it.
while working with IoT devices like node MCU, intel Edison, raspberry pi MQTT, rest API, the cheap protocol is used for transferring data, the most applicable protocol is MQTT for IoT
. This makes it possible to communicate across system components and to expand the information exchange system in the future.
Let’s take it a step further. Assume you’ve been given the duty of displaying data from IoT devices on a web page. The Flask microframework will come to your rescue once more with its built-in template system, which allows you to create the required web page with data presentation and visuals.
The disadvantage of this strategy is that it may not be possible to initiate data transfer from the server to the device. That is, the IoT must pull data from the server on its own and at regular intervals. There are remedies to this risk, so don’t worry. Pushsafer can be used with web sockets or a Python library. PushSafer allows you to send and receive real-time push notifications to your iOS, Android, and Windows devices (mobile and desktop), as well as browsers such as Chrome, Firefox, and Opera.
Microsoft Azure IoT backend in Python
Microsoft has launched a new open-source IoT extension that enhances Azure CLI 2.0’s capabilities.
Azure CLI 2.0 includes commands for dealing with the Azure Resource Manager and management endpoints.
You can use Azure CLI 2.0 to establish an Azure VM or an IoT Hub, for example. The CLI Extension enables an Azure service to extend Azure CLI by providing customers with extra service-specific features.
Developers may access the IoT Hub, IoT Edge, and IoT Hub Device Provisioning Service from the command line using the IoT Extension.
You may manage Azure IoT Hub resources, device provisioning service instances, and associated hubs in real-time using the Azure CLI 2.0. Device management and all IoT Edge capabilities are included in the new IoT extension, which enhances Azure CLI 2.0.
- IoT capabilities of Azure CLI 2.0 – control plane
- Instances of the loT hub, consumer groups, and jobs can all be managed.
- Control device provisioning service instances, access policies, Linked—hub, and certificates.
- Extensions now include new data-plane functionalities.
- Manage the IDs of devices and edge modules, as well as their twin definitions.
- Search the Internet of Things Hub for information on device and module twins, jobs, and communications routing.
- Methods for devices and modules should be invoked.
- Obtain SAS tokens and connection strings.
- Messaging from the cloud to the device and from the device to the cloud
- Uploading files from a mobile device
- For testing, device simulation is used.
More information about how the Azure IoT backend works with Python can be found here.
You’ll be shocked to learn that it’s not Python that makes interacting with IoT devices and the backend so simple. There are various elements at play that work together to increase Python’s usefulness for IoT:
- The learning curve for basic programming constructs is relatively low.
- A large number of libraries are available for a variety of tasks.
- To run Python on the client-side, you’ll need an element base.
- Ability to create a Python backend in a variety of frameworks
- Because both the backend and the client-side of IoT are written in Python, it’s simple to integrate them.
- Micropython, in particular, has low system requirements.
- Support for the cloud
- A large number of highly qualified specialists
Python will not be able to do everything for you, but it will greatly assist you in creating the first prototype, and it will also perform assigned functions in future versions of your IoT system in cooperation with other programming languages and libraries.
Our Svitla Systems experts have vast expertise in developing IoT backends and configuring IoT client devices in Python and other programming languages. Contact us to start from scratch on your new projects, and you’ll find that our system analysts will assist you from the beginning, our developers will produce the program code, and our testers will put all of the complex’s systems to the test.
Projects involving the Internet of Things will improve the real world, as well as people’s lives. Our goal is to assist you in making all of your IoT initiatives a success.