Envoyé les mesures d'un ESP 8266 à un Raspberry pi (serveur)

Youssoufba
ven, 07/19/2019 - 17:57
Bonjour à tous,
Après avoir discuter avec un prof qui me conseillait sur un projet que je veux (et je vais) réaliser, il est arrivé à me conseiller de l'améliorer. A la base je voulais enregistrer les données mesurées par un ESP 8266 (encore merci à Walter pour son aide précieuse) mais mon professeur me conseille plutôt que "d'écrire" directement dans Firebase de passer par un serveur. J'ai un peu fouiller et trouver que le Raspberry serai adapté pour ce rôle , jusqu'à présent je ne vois pas encore de moyen de récupérer les mesure de l'ESP 8266 (sans fils) pour les traiter et comme serveur mon prof me conseille l'utilisation de Django (qui d'après mes recherches n'est pas adapté).
j'espère que vous avoir exposer les grandes lignes de mes incompréhension. (choix du Raspberry, comment faire la transmission sans fil de l'ESP au serveur?, Django est-il adapté?) .
En attendant vos avis et réponses je vous remercie d'avance et bonne journée.
Walter
sam, 07/20/2019 - 13:08
Salut,
Il t'a conseiller Django le framework python, donc d'écrire ton API Rest pour stocker en interne dans quel base ?
Là il n'est plus juste question de stocker des données, mais bien d'écrire une API Crud pour la gestion de tes données.
J'ai du mal a voir l'avantage sur une base de donnée FireBase(ou autre) hébergée chez google, qui fournis déjà une API CRUD, disponible dans une multitude de langage avec des API dédié ou encore accessible par une simple requête HTTP.
Les problématiques pour ce type de base serait, ton IoT n'a pas accès a internet, le prix de la base pour une exploitation commerciale, la confidientialité des données.
Après ca dépend de ce que tu veux vraiment faire, le stockage des données est une chose, mais comment veux tu y accéder et les restituer une fois celle-ci stockées?
Si tu veux y accéder via une interface WEB, il te faudra un serveur HTTP(pouruoi pas un raspberry) et y développer une application WEB.
Dans ce cas là il peut être intéressant de mettre ta BD sur la même machine.
Par contre si tu prévois des ESP n'étant pas sur le même réseau et des clients de visualisations sur Mobile, une base de donnée dans le cloud est très intéressantes.
Pour répondre plus précisément à ta question, en faite si tu veux utiliser un raspberry en tant que serveur avec le framework django, cela ce passe exactement comme avec Firebase.
Avec ton framework tu va faire un serveur HTTP et proposer une API CRUD.
Donc ton ESP8266 va envoyer les données collectées via un appel http comme suit:
URL=> http://myServer/maCollectionsDeRessources
Method => POST
post data => [{temp:10, humi: 85, timestamp:1563616800}, {temp:11, humi: 80, timestamp:1563617700}]
Ton client qui se chargera de restitué les données pourra alors accéder à tes données par la simple requête HTTP(method GET) http://myServer/maCollectionsDeRessources
normalement tu peux aussi filtrer ta collection, sur une plage de timestamp par exemple, j'ai pas vérifier les fonctionnalité de django, mais c'est assez standard.
Youssoufba
mar, 07/23/2019 - 16:54
Après plusieurs recherches sur les idées que tu m'as proposées je pense que le projet prend de plus en plus forme et je t'en remercie.
Maintenant la prochaine étape est la transmission de l'ESP à Django que je ne sais pas trop comment procéder.
Je comprends pas clairement la notion d'API Rest (la fonction oui, mais la creation en fonction de l'usage à en faire non!) qui me sera sûrement utile
En attendant des avis et reponses Bonne journnée à tous!
Walter
mer, 07/24/2019 - 10:00
Cool, une API REST est un ensemble de bonne pratique pour écrire un service WEB, dans ton cas sauvegarde/(visualisation) de donnée issue de ton objet connecté.
Pour moi la définition qui colle le mieux c'est un système sans état combiné à des actions prédéfinies et uniformisées.
Sans état implique que le serveur ne garde pas un état / une référence entre deux requêtes du même client.
chaque requête du client sont indépendante les unes des autres.
Les actions prédéfinies avec le protocole HTTP, impliques que toutes URI est une ressource et que la méthode utilisée pour la requête POST/GET/PUT/DELETE définie l'action(CRUD).
Après derrière une API Rest, il y a bien plus que ça et un vrais raisonnement, mais déjà avec çà, tu as un service WEB cohérent et simple à utiliser/concevoir.
A priori avec python+Django, utilise "Django REST Framework" qui va te permettre de créer ton modèle de donnée et l'API Rest pour y accéder, ou sinon tu utilise l'ORM de django pour définir ta structure de donnée et fais toi même l'API qui permet d'y accéder.
Après si tu veux un peu plus d'aide il faudrait que tu décrive clairement et complètement ton projet.
Si tu as des points de blocages, n'hesites pas à les exposer.
Youssoufba
mer, 07/24/2019 - 11:36
Je suis avec un ami informaticien et moi je suis électronicien toujours en formation.
Il a commencé à la création d'une application permettant le remplissage et affichage d'un formulaire à distance (pour une cave par exemple) et où j'interviens c'est la conception du dispositif de mesure et la transmission des mesures vers une base de données (firebase) qu'il récupérera et affichera dans l'application.
Avec un prof que nous consultons de temps à autre qui nous conseil sur les différents outils et méthodes à utiliser afin que notre système soit simple et fiable, voilà un peu le projet en détail et si tu as des améliorations ou conseils je suis là pour ça encore merci!
Walter
mer, 07/24/2019 - 13:11
Ok, si vous voulez que votre application puisse être décliner sur plusieurs support et accessible de n'importe ou, peut être serait-il intéressant de rester sur un accès direct à votre base Firebase.
Surtout qu'a priori elle offre déjà les fonctionnalités que vous voulez coder dans votre serveur HTTP.
D'ailleurs pour un tel projet, si vous voulez vraiment créer votre serveur HTTP, l'utilisation d'une base comme Sqlite serait peut être plus appropriée(cela dépend du volume de donnée).
De même si votre but n'est pas de vous former au développement ou le plaisir de développer le maximum vous même, vous pouvez utiliser le protocole de messagerie MQTT et installer Mosquitto sur votre raspberry.