Construire une ferme intelligente IoT avec Raspberry Pi et Actian Zen
Johnson Varughese
26 septembre 2024

La technologie transforme tous les secteurs d'activité, et l'agriculture ne fait pas exception. L'internet des objets (IoT) et l'informatique de pointe fournissent des outils puissants pour rendre les pratiques agricoles traditionnelles plus efficaces, plus durables et plus axées sur les données. Le Raspberry Pi est une plateforme abordable et polyvalente qui peut constituer la base d'un tel système d'agriculture intelligente.
Dans cet article de blog, nous allons construire un système d'agriculture intelligente utilisant des dispositifs IoT pour surveiller l'humidité du sol, la température et les niveaux d'humidité dans une ferme. L'objectif est d'optimiser l'irrigation et de garantir des conditions de croissance optimales pour les cultures. Nous utiliserons un Raspberry Pi fonctionnant sous Raspbian OS, Actian Zen Edge pour la gestion de la base de données, Zen Enterprise pour gérer les anomalies détectées sur la base de données du serveur distant, et Python avec l'interface Zen ODBC pour le traitement des données. En outre, nous nous appuierons sur AWS SNS (Simple Notification Service) pour envoyer des alertes en temps réel en cas d'anomalies détectées afin de permettre une action immédiate.
Conditions préalables
Avant de commencer, assurez-vous que vous disposez des éléments suivants :
- Un Raspberry Pi fonctionnant sous le système d'exploitation Raspbian.
- Python installé sur votre Raspberry Pi.
- Actian Zen base de données Edge installé.
- La bibliothèque PyODBC est installée.
- AWS SNS configuré avec un sujet approprié et des identifiants d'accès.
Étape 1 : Configuration du Raspberry Pi
Tout d'abord, mettez à jour votre Raspberry Pi et installez les bibliothèques nécessaires :
sudo apt-get update sudo apt-get upgrade sudo apt-get install python3-pip pip3 install pyodbc boto3
Étape 2 : Installer Actian Zen Edge
Suivez les instructions de la page de téléchargement d'Actian Zen Edge pour télécharger et installer Actian Zen Edge sur votre Raspberry Pi.
Étape 3 : Créer des tables dans la base de données
Nous devons créer des tables pour stocker les données des capteurs et les anomalies. Connectez-vous à votre Actian Zen base de données Edge et créez la table suivante :
CREER TABLE sensor_data ( id identité PRIMAIRE KEY, horodatage DATETIME, humidité_du_sol FLOAT, température FLOAT, humidité FLOAT ) ;
Installez Zen Enterprise, connectez-vous à la base de données centrale et créez la table suivante :
CREER TABLE anomalies ( id identité PRIMARY KEY , timestamp DATETIME, humidité_du_sol FLOAT, température FLOAT, humidité FLOAT, description longvarchar ) ;
Étape 4 : Définir le script Python
Maintenant, écrivons le script Python pour gérer l'insertion des données des capteurs, la détection des anomalie et l'alerte via AWS SNS.
anomalie Détection Logique
Définir une fonction pour vérifier les anomalies sur la base de seuils prédéfinis :
def check_for_anomalies(data): threshold = {'soil_moisture': 30.0, 'temperature': 35.0, 'humidity': 70.0} anomalies = [] if data['soil_moisture'] < threshold['soil_moisture']: anomalies.append('Low soil moisture detected') if data['temperature'] > threshold['temperature']: anomalies.append('High temperature detected') if data['humidity'] > threshold['humidity']: anomalies.append('High humidity detected') return anomalies
Insérer les données du capteur
Définir une fonction pour insérer les données du capteur dans la base de données :
import pyodbc def insert_sensor_data(data): conn = pyodbc.connect('Driver={Pervasive ODBC Interface};servername=localhost;Port=1583;serverdsn=demodata;') cursor = conn.cursor() cursor.execute("INSERT INTO sensor_data (timestamp, soil_moisture, temperature, humidity) VALUES (?, ?, ?, ?)", (data['timestamp'], data['soil_moisture'], data['temperature'], data['humidity'])) conn.commit() cursor.close() conn.close()
Envoi d'anomalies à la base de données distante
Définir une fonction pour envoyer les anomalies détectées à la base de données :
def send_anomalies_to_server(anomaly_data): conn = pyodbc.connect('Driver={Pervasive ODBC Interface};servername=<remote server>;Port=1583;serverdsn=demodata;') cursor = conn.cursor() cursor.execute("INSERT INTO anomalies (timestamp, soil_moisture, temperature, humidity, description) VALUES (?, ?, ?, ?, ?)", (anomaly_data['timestamp'], anomaly_data['soil_moisture'], anomaly_data['temperature'], anomaly_data['humidity'], anomaly_data['description'])) conn.commit() cursor.close() conn.close()
Envoyer des alertes à l'aide de AWS SNS
Définir une fonction pour envoyer des alertes à l'aide d'AWS SNS :
def send_alert(message) : sns_client = boto3.client('sns', aws_access_key_id= 'Votre ID de clé', aws_secret_access_key = 'Votre clé d'accès', region_name='votre-région') topic_arn = 'arn:aws:sns:votre-région:votre-identification-de-compte:votre-nom-de-sujet' response = sns_client.publish( TopicArn=topic_arn, Message=message, Subject=anomalie Alert' ) return response
Remplacer votre-région, votre-id-compteet votre-nom-de-sujet avec les détails de votre sujet AWS SNS.
Étape 5 : Générer les données des capteurs
Définir une fonction pour simuler les données d'un capteur du monde réel :
import random import datetime def generate_sensor_data(): return { 'timestamp': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), 'soil_moisture': random.uniform(20.0, 40.0), 'temperature': random.uniform(15.0, 45.0), 'humidity': random.uniform(30.0, 80.0) }
Étape 6 : Fonction principale pour simuler la collecte et le traitement des données
Enfin, le tout est regroupé dans une fonction principale :
def main(): for _ in range(100): sensor_data = generate_sensor_data() insert_sensor_data(sensor_data) anomalies = check_for_anomalies(sensor_data) if anomalies: anomaly_data = { 'timestamp': sensor_data['timestamp'], 'soil_moisture': sensor_data['soil_moisture'], 'temperature': sensor_data['temperature'], 'humidity': sensor_data['humidity'], 'description': ', '.join(anomalies) } send_anomalies_to_server(anomaly_data) send_alert(anomaly_data['description']) if __name__ == "__main__": main()
Conclusion
Et voilà ! En suivant ces étapes, vous avez réussi à mettre en place un système agricole intelligent de base sur un Raspberry Pi à l'aide d'Actian Zen Edge et de Python. Ce système, qui surveille les niveaux d'humidité, de température et d'humidité du sol, détecte les anomalies, stocke les données dans des bases de données et envoie des notifications via AWS SNS, est une solution évolutif pour optimiser l'irrigation et garantir des conditions de croissance optimales pour les cultures. Maintenant, c'est à vous d'appliquer ces connaissances et de contribuer à l'avenir de l'agriculture intelligente.
N'oubliez pas de remplacer les espaces réservés par les détails de votre sujet AWS SNS et les détails de la connexion à la base de données. Bonne agriculture !
S'abonner au blog d'Actian
Abonnez-vous au blogue d'Actian pour recevoir des renseignements sur les données directement à vous.
- Restez informé - Recevez les dernières informations sur l'analyse des données directement dans votre boîte de réception.
- Ne manquez jamais un article - Vous recevrez des mises à jour automatiques par courrier électronique pour vous avertir de la publication de nouveaux articles.
- Tout dépend de vous - Modifiez vos préférences de livraison en fonction de vos besoins.