Next step after using S-Soil MTEC-02B sensor in Milestone 2: Outdoor single sensor and saving telemetry data via Fledge software framework will be setting up an approach framework we are going to setup a framework where developers can add new sensors or from scratch and build a new software stack and to provide secure, private, zero-touch deployments to a subset of Edge Nodes (IoT devices).
RPi4 board will be used as Edge Node.
Deployments are distributed via completely customised Edge Server and can be deployed locally on developer workstation, in cloud infrastructure or on on- premises.The software build will be deployed with Open Horizon and uses open-source applications to be deployed to the RPi4 board.
Goals
...
All components are open sourced and can be reconfigured and customised, interested parties may use any cloud infrastructure which support containerised servers deployments i.e. GCP, AWS, Azure, IBM Cloud, Alibaba Cloud, Digital Ocean, Oracle Cloud, VMware Cloud, Cisco Cloud.
In this case the containerised services software is deployed with Open Horizon to RPi4 board.
Goals
- Build OS image with BSP distribution for Edge Node and save it to SD card. Insert SD card with BSP to RPi4 board and start controlling the board remotely.
[~10 minutes] - Run local Edge Server on developer workstation with all needed services for software development and zero touch deployment.
[~3 minutes]
- Connect/solder S-Soil MTEC-02B with USB to RS485 converter and insert into RPi4 board.
- Build a custom stack for S-Soil MTEC-02B to extract realtime data - Total Dissolved Solids (TDS), Temperature, Salinity, Volumetric Water Content (VWC) with python script, send data to Edge Server with Telegraf.
Deploy new stack remotely without touching the board to Edge Node (RPi4 board) from developer workstation.
Edge Server will collect data in InfluxDB and telemetry data will be available to display Grafana dashboard.
[~4 minutes] - Update stack on developer workstation and redeploy stack into the Edge Node remotely.
[~3 minutes]
Prerequisites
Hardware
- Raspberry Pi4 model B 4GB+ RAM
- Industrial Soil Moisture & Temperature & EC Sensor MODBUS-RTU RS485 (S-Soil MTEC-02B)
- 16+ GB micro SD Card
- Power supply for Raspberry Pi 4
- SD card reader
- x64 (development workstation)
- USB to RS485 converter (or similar like USB-RS485-WE-1800-BT)
Software
MacOS/Linux based developer host with installed Docker Desktop (TBD: add OCI compatible alternatives)
Containerised Architecture has been selected to build an isolated software components for Edge Node, Edge Server as well as for development and deployment tools.
It can be used without restriction, including without limitation to build isolated proprietary ecosystem for IIoT device management and zero-touch secure device onboard.
In this milestone container images are based on open source components to display, debug and analyse data from Edge Node with connected S-Soil MTEC-02B sensor.
From the software components structure view of the IoT device there are static BSP image and dynamic services or stack which are added/updated after device was which are deployed remotely to Edge Server and downloaded by Edge Nodes.
Stack services are managed by Edge Server and deployed automatically to device fleet according to business policies rules (deployment by edge node id is presented in this example) after device has been onboarded.
Edge Node BSP image Node should be pre-configured with BSP image, so the device could update itself after the boot and later when new services are available for ituploaded and published.
The stack consist of one or more preconfigured and tested software components which are running in isolated containers on the board and managed by Deployment Agent.
To provide more secure board management there are no management none IP ports are exposed from the board outside in production (this is configured when initial BSP image for the board is created).
Development tools is a docker image it's intended to:
- Create initial BSP image and write it to SD card
- Run EdgeServer with Open Horizon services, Grafana, InfluxDB, Loki and onboard the Edge Device
- Create initial stack for development and further deployment to Edge Device
- Deploy stack on Edge Device by using business policy rule (Edge Device name as an example)
A single Edge Server (based on Open Horizon) may manage/update more than 100k 10k of clusters or stand alone Edge Node alone IoT devices acting as Edge Nodes.
Each Edge Node may control a hundreds dozens of wired or wireless and very limited IoT devices Edge Devices (Arduino, STM32, ESP32, etc.) or /and sensors directly.
Here is a top view of ecosystem:
Also with added AI services, Edge Node may act as distributed AI node with federated learning capabilities.
Here is how the software system components are deployed on Edge Node and on Edge Server.
A software stack which is deployed to Edge Node, can be any set of proprietary or open-source containerised applications (Telegraf, Node-exporter, ) or more complex (EdgeX, Fledge) software frameworks
...
Prerequisites
Hardware
- Raspberry Pi4 model B 4GB+ RAM
- Industrial Soil Moisture & Temperature & EC Sensor MODBUS-RTU RS485 (S-Soil MTEC-02B)
- 16+ GB micro SD Card
- Power supply for Raspberry Pi 4
- SD card reader
- x64 PC (laptop or dedicated server)
- USB to RS485 converter (or similar like USB-RS485-WE-1800-BT)
Software
MacOS/Linux based host with installed Docker Desktop
In this milestone, we cover:
- How to start and run the system from scratch
- How to start your own customised solution
- How to update RPi4 board running all needed tools locally
...
To create an initial BSP image in SD card for the RPi4 board, where you can deploy your own services to support sensors.
Download OS image from here, copy file to SmartAg-foundation/tools/os.img
Insert SD card and run:
./write_bsp_image node_name
(node_name can be any suitable name for Edge node and will be used later to deploy the services)
Links
...
Goals
- Start system from scratch with ability to extend it with new services.
System Diagram
<>and updated:
1. Create OS image with BSP installed and create disk image to be used in Edge Node
2. Deploy and run Edge Server
3. Update software stack on the Edge Node by building container images, uploading them to private registry server
(or public registry available via DockerHub, Amazon ECR, Google GCR, Microsoft ACR, etc.)
An Edge Node software stack can be any set of:
- Proprietary/open-source containerised services.
- Integrations with 3rd party services (AWS IoT, GCP IoT Core, Particle, etc.)
- Complex software frameworks (EdgeX, ORRA, Fledge, etc.) with own architecture, services stack, software updates and management tools.
Some open source data exporters to consider are - telegraf, node-exporter, statsd, tcollector, collectd, cadvisor, promtail.
Stack can be single or multiple containerised services working together and incorporating designed business logic.
Steps to configure
- Clone SmartAg-foundation repo. And change directory to tools.
- Build BSP image, write to SD card. Insert 16GB+ SD card in drive and run Edge Node
sudo ./write_bsp_image example-edge-node
- Run Edge Server
./start_local_edgeserver
- Solder sensor and USB converter (described in p.6 from Milestone 2: Outdoor single sensor)
- Create new example stack. By default new stack will contain a workable solution with telegraf and exec plugin for S-Soil MTEC-02B.
./create_stack ssoil-mtec-02b-single
- Insert sensor to USB port of Edge Node
- Build stack to get retrieve data (Total Dissolved Solids (TDS), Temperature, Volumetric Water Content (VWC)) from S-Soil MTEC-02B, deploy
./build_and_deploy ssoil-mtec-02b-single example-edge-node
- Open Grafana from Edge Server http://localhost:3000/, login, explore and display telemetry data
Once InfluxDB data source needs to be configured as below:
URL - http://influxdb:8086
Database - telegraf
User - user
Password - password
And press "Save and Test" - Open Explore tab (http://localhost:3000/explore)
You should see new measurement mtec-02b-sensor and fields for it (tds, temperature, vwc) - (Optional) Extend service with new logic to read soil salinity - check how to do it in this part of video https://youtu.be/mCqbzVYJyVs?t=1306
Deploy and view new data on a dashboard (salinity should be available)