ESP32 : Premiers pas avec Deta Base (base de données gratuite)

ESP32 : Premiers pas avec Deta Base (base de données gratuite)

Démarrez avec Deta Base en utilisant la carte ESP32. Deta Base est une base de données NoSQL. Il est illimité, gratuit et facile à utiliser. De plus, il nécessite une configuration minimale. Il est donc parfait pour vos projets d’amateur et de prototypage. Vous apprendrez à effectuer des opérations de création, de lecture, de mise à jour, de suppression et d’interrogation dans une instance Deta Base à l’aide d’un ESP32.

ESP32 Premiers pas avec Deta Base Base de données illimitée et gratuite pour les développeurs

Pour interagir avec Deta base à l’aide de l’ESP32, nous utiliserons le bibliothèque detaBaseArduinoESP32. Le présent didacticiel était basé sur les guides créés par le développeur de la bibliothèque. Vous pouvez trouver les guides sur le lien suivant :

Présentation de Deta Base

La meilleure façon de décrire Base de données:

Deta Base est une base de données NoSQL entièrement gérée, rapide, évolutive et sécurisée, axée sur la simplicité pour l’utilisateur final. Il offre une interface utilisateur à travers lequel vous pouvez facilement voir, interroger, mettre à jour et supprimer des enregistrements dans la base de données.

https://docs.deta.sh/docs/base/about

Et la meilleure partie est que Deta Base est libre utiliser!

Si vous vous demandez où vos données sont enregistrées et si elles sont sécurisées, voici la réponse :

Vos données sont chiffrées et stockées en toute sécurité sur AWS. Les clés de chiffrement sont gérées par AWS ; AWS gère les exaoctets des données les plus sensibles au monde.

https://docs.deta.sh/docs/base/about#is-my-data-secure

Nous vous recommandons de consulter la documentation pour vous familiariser avec Deta Base :

Deta Base est toujours en version bêta, vous pouvez donc vous attendre à des améliorations à l’avenir.

Création d’un compte de base de données

Pour commencer, vous devez créer un compte Deta Base. Aller à deta.shet cliquez sur Rejoindre Deta pour créer un nouveau compte.

site web de la base de données

Saisissez un nom d’utilisateur, un mot de passe et une adresse e-mail pour créer un nouveau compte.

base de données créer un compte

Deta base vous enverra un e-mail de vérification. Vérifiez votre compte et vous devriez être redirigé vers votre tableau de bord Deta. La fenêtre suivante apparaît :

Création d'un compte de base de données

Par défaut, il crée un nouveau projet appelé « default ». Comme mentionné, les projets sont accessibles via des identifiants et des clés. Lorsque vous cliquez sur le Voir le bouton Ma clé, vous obtiendrez votre identifiant de projet et votre clé. Assurez-vous enregistrez-le quelque part car vous en aurez besoin plus tardla clé ne s’affichera qu’une seule fois.

Création d'une clé d'API de compte Deta Base

Lorsque vous avez terminé. Cliquez sur proche.

La bibliothèque que nous utiliserons avec l’ESP32 crée automatiquement une instance Base (table de base de données) pour votre projet. Ainsi, vous n’avez pas besoin de le créer manuellement sur l’interface Deta Base.

Installation de la bibliothèque Deta Base pour ESP32

Pour interagir avec Deta Base à l’aide de l’ESP32, nous utiliserons le bibliothèque detaBaseArduinoESP32. Vous pouvez installer la bibliothèque dans l’IDE Arduino. Aller à Esquisser > Inclure la bibliothèque > Gérer les bibliothèques. Rechercher detabasearduinoesp32 et installez la bibliothèque par Kushagra Goel.

Installer la bibliothèque Deta Base pour ESP32 Arduino IDE

Deta Base avec ESP32 : Opérations CRUD

Dans cette section, vous apprendrez à programmer votre ESP32 pour effectuer des opérations et des requêtes CRUD (créer, lire, mettre à jour, supprimer) sur Deta Base. La bibliothèque fournit un exemple simple montrant comment procéder.

Dans l’IDE Arduino, assurez-vous d’avoir une carte ESP32 sélectionnée dans Outils > Planche. Ensuite aller à Dossier > Exemples > detabaseAduinoESP32 et sélectionnez le detaLibTest Exemple.

Le code suivant devrait se charger.

# Original Source: https://github.com/A223D/detaBaseArduinoESP32/blob/main/examples/detaLibTest/detaLibTest.ino

#include <detaBaseArduinoESP32.h>
#include <WiFiClientSecure.h>
#define LED 2

char* apiKey = "MY_KEY";
char* detaID = "MY_ID";
char* detaBaseName = "MY_BASE";

WiFiClientSecure client;
DetaBaseObject detaObj(client, detaID, detaBaseName, apiKey, true);


void setup() {
  Serial.begin(115200);
  Serial.println("Let's begin initialization");
  pinMode(LED, OUTPUT);
  digitalWrite(LED, LOW);
  Serial.println("Reached before WiFi init");
  WiFi.begin("0xCAFE", "0xC0FFEE");
  Serial.println("Waiting to connect to WiFi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  digitalWrite(LED, HIGH);

}

// PUT "{\"items\":[{\"age\":4}]}"

//INSERT "{\"item\":{\"key\":\"cba\",\"age\":4}}"

//INSERT "{\"item\":{\"key\":\"abc\",\"age\":4}}"

//UPDATE "{\"increment\":{\"age\":1}}", key:abc

//UPDATE "{\"increment\":{\"age\":1}}", key:cba

//QUERY "{\"query\":[{\"age?lt\": 10}]}"

void loop() {
  printResult(detaObj.putObject("{\"items\":[{\"age\":4}]}"));
  Serial.println();
  printResult(detaObj.getObject("cba"));
  Serial.println();
  printResult(detaObj.deleteObject("abc"));
  Serial.println();
  printResult(detaObj.insertObject("{\"item\":{\"key\":\"cba\",\"age\":4}}"));
  Serial.println();
  printResult(detaObj.insertObject("{\"item\":{\"key\":\"abc\",\"age\":4}}"));
  Serial.println();
  printResult(detaObj.updateObject("{\"increment\":{\"age\":1}}", "abc"));
  Serial.println();
  printResult(detaObj.updateObject("{\"increment\":{\"age\":1}}", "bcs"));
  Serial.println();
  printResult(detaObj.query("{\"query\":[{\"age?lt\": 10}]}"));
  Serial.println();

  while (true);
}

Afficher le code brut

Vous devez insérer la clé et l’ID de l’API de votre projet. Vous devez également insérer un nom pour la base de données – cela peut être ce que vous voulez. je l’ai appelé Test.

char* apiKey = "REPLACE_WITH_YOUR_PROJECT_API_KEY";
char* detaID = "REPLACE_WITH_YOUR_PROJECT_ID";
char* detaBaseName = "Test";

Dans le mettre en place()vous devez inclure vos informations d’identification réseau, SSID et mot de passe pour que votre ESP32 puisse se connecter à Internet.

WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

Vous pouvez télécharger le code maintenant et il fonctionnera immédiatement. Nous vous recommandons de lire la section suivante pour comprendre comment les choses fonctionnent réellement.

Comment ça fonctionne

Lisez cette section pour savoir comment interagir avec Deta Base à l’aide de l’ESP32.

Inclure les bibliothèques

Tout d’abord, incluez le detaBaseArduinoESP32 bibliothèque. Vous devez également inclure le WiFiClientSécurisé bibliothèque—cela inclut automatiquement la WiFi.h bibliothèque, également nécessaire dans cet exemple.

#include <detaBaseArduinoESP32.h>
#include <WiFiClientSecure.h>

Clé de base de données, ID et nom

Insérez la clé du projet, l’ID et un nom pour la base. Comme mentionné précédemment, si elle n’est pas encore créée, la bibliothèque créera automatiquement une instance Base pour vous sur Deta Base. Le nom de la base de données peut être celui qui le décrit le mieux. Dans ce cas, je l’ai appelé Test. Si vous avez déjà créé une instance Base manuellement sur Deta Base, vous pouvez utiliser son nom ici.

char* apiKey = "REPLACE_WITH_YOUR_PROJECT_API_KEY";
char* detaID = "REPLACE_WITH_YOUR_PROJECT_ID";
char* detaBaseName = "Test";

Création d’un DetaBaseObject

Ensuite, vous devez créer un WiFiClientSécurisé et un DetaBaseObject objets. La DetaBaseObject accepte comme arguments le client WiFi, l’ID du projet, le nom de la base, la clé API, enfin une variable booléenne. Cette dernière variable booléenne lorsqu’elle est définie sur vrai active l’instruction de débogage.

WiFiClientSecure client;
//choose this:
DetaBaseObject detaObj(client, detaID, detaBaseName, apiKey, true);
//or this:
//DetaBaseObject detaObj(client, detaID, detaBaseName, apiKey);

La client est passé au DetaBaseObject tel quel, sans aucune modification. Cela est dû au fait qu’un certificat d’autorité de certification root est défini dans le DetaBaseObject constructeur. Ceci est nécessaire car nous faisons des demandes via HTTPS.

mettre en place()

Dans le mettre en place()connectez l’ESP32 au Wi-Fi en utilisant vos identifiants Wi-Fi : SSID et mot de passe.

void setup() {
  Serial.begin(115200);
  Serial.println("Let's begin initialization");
  pinMode(LED, OUTPUT);
  digitalWrite(LED, LOW);
  Serial.println("Reached before WiFi init");
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.println("Waiting to connect to WiFi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  digitalWrite(LED, HIGH);
}

Insérer

Pour insérer des éléments dans la base de données, vous pouvez utiliser le mettreObjet() fonction. Comme décrit dans le Documentation de la base de donnéesune opération put attend un objet JSON au format suivant :

{
  // array of items to put
  "items": [
    {
      "key": {key}, // optional, a random key is generated if not provided
      "field1": "value1",
      // rest of item
    },
    // rest of items
  ]
}

La clé est facultative et sera attribuée par Deta Base si elle n’est pas fournie. Si une clé est fournie et qu’une entrée existe déjà avec cette clé, elle est écrasée.

La ligne de code suivante :

printResult(detaObj.putObject("{\"items\":[{\"age\":4}]}"));

Qui contient le JSON suivant :

{
  "items":[
    {
      "age":"4"
    }
  ]
}

Ajoute ce qui suit à la base de données :

{
  "age": 4
}

Un caractère barre oblique inverse (\) est ajouté avant chaque «  pour indiquer un caractère d’échappement, puisque nous avons besoin «  dans l’entrée JSON.

Noter: Les clés doivent être des chaînes. Si vous souhaitez utiliser un nombre comme clé, assurez-vous qu’il est interprété comme une chaîne en le mettant entre guillemets. (Citations doubles avec des barres obliques inverses.)

Avec PUT, vous pouvez insérer plusieurs éléments dans une seule requête. Par exemple:

printResult(detaObj.putObject("{\"items\":[{\"age\":4,\"weight\":28}]}"));

Si la demande aboutit, nous verrons un code d’état de niveau 200 dans le moniteur série, ainsi que l’objet ou les objets entiers avec sa ou ses clés.

Si vous accédez à votre projet Deta Base, vous devriez voir une nouvelle instance de base et l’élément que nous venons d’insérer.

Récupérer un objet

Vous pouvez récupérer un objet par sa clé en utilisant le obtenirObjet() fonction. La fonction attend une clé comme argument. Il peut s’agir d’une clé existante ou d’une clé inexistante.

La ligne de code suivante essaie de récupérer un objet avec ABC clé.

printResult(detaObj.getObject("cba"));

Vous devriez recevoir un message d’erreur car il n’y a pas encore d’objet avec cette clé dans la base de données.

Cependant, si vous créez manuellement un objet avec le ABC clé et exécutez à nouveau le code, il récupérera l’objet avec succès.

Pour créer un objet manuellement, vous pouvez cliquer sur le +Ajouter sur l’interface de la base de données. Il créera automatiquement un nouvel élément avec une clé prédéfinie. Vous pouvez le changer en ABC.

Effacer

Pour supprimer un objet de la base de données, utilisez la deleteObject() fonction. Cette fonction accepte comme argument la clé de l’objet que nous voulons supprimer. La sortie de cette fonction renvoie un code de niveau 200 qui indique le succès même s’il n’y a pas d’objet avec cette clé. Dans notre cas, il essaie de supprimer un objet avec le abc clé.

printResult(detaObj.deleteObject("abc"));

Cependant, s’il y avait un objet avec le abc clé, il serait supprimé.

Insérer

Pour insérer un nouvel élément dans la base de données, vous pouvez utiliser le insertObjet() fonction qui fera un Demande POST. Cela créera un nouvel élément uniquement si aucun élément avec la même clé n’existe. Il attend un JSON au format suivant :

{
  "item": {
    "key": {key}, // optional
    // rest of item
  }
}

Si vous ne fournissez pas de clé, Deta Base le fera automatiquement pour vous.

Dans l’exemple, la ligne suivante :

printResult(detaObj.insertObject("{\"item\":{\"key\":\"cba\",\"age\":4}}"));

Ajoute l’objet suivant à la base de données :

{
  "key": "cba",
  "age": 4
}

Si vous avez déjà un objet avec cette clé, vous obtiendrez un code de niveau 400 et une erreur dans le message de charge utile.

Mise à jour

La mettre à jourObjet() met à jour les entrées existantes. Il accepte comme arguments la clé d’un objet existant et un objet JSON au format suivant :

{
  "set"  :  {
    //set some attribute to some value like
    //age: 10
  },
  "increment"  :{
    //increment some attribute by some value like
    //age: 1
  },
  "append":  {
    //append some value to some list attribute like
    //names: ["John"]
  },
  "prepend": {
    //append some value to some list attribute like
    //names: ["Sam"]
  },
  "delete":  [//attributes to be deleted]
}

Tous ces sous-objets JSON (Positionner, incrément, ajouter, ajouteret effacer) sont facultatifs.

Vous pouvez en savoir plus sur ce type de demande sur le Documentation.

Dans notre exemple, la ligne suivante incrémentera l’âge de 1 dans l’entrée avec le abc clé.

 printResult(detaObj.updateObject("{\"increment\":{\"age\":1}}", "abc"));

Interroger les données

Deta Base prend également en charge les requêtes pour récupérer des données qui correspondent à certaines conditions. Vous pouvez en savoir plus sur Deta Base Queries sur le lien suivant :

Pour faire une requête, vous pouvez utiliser le requête() fonction qui accepte en argument la requête elle-même au format JSON (voir le lien vers la documentation ci-dessus).

La requête suivante renverra tous les objets dont la valeur de age est inférieure à 10, ce qui dans notre cas correspond à tous les objets de la base de données.

printResult(detaObj.query("{\"query\":[{\"age?lt\": 10}]}"));

Manifestation

Après avoir exécuté l’exemple, vous devriez obtenir ce qui suit sur le moniteur série.

ESP32 avec démonstration du moniteur série Deta Base
ESP32 avec démonstration du moniteur série Deta Base

Et votre base de données devrait ressembler à ceci.

base de données avec démonstration de l'interface utilisateur ESP32

Emballer

Dans ce didacticiel, vous avez appris à interagir avec Deta Base à l’aide de l’ESP32. Deta Base est une base de données NoSQL, elle est gratuite et illimitée. Cela signifie que vous n’aurez rien à payer pour l’utiliser et que vous pouvez ajouter autant d’entrées que nécessaire. La base de données nécessite une configuration minimale et vous pouvez l’utiliser immédiatement. Grace à bibliothèque detaBaseArduinoESP32il est encore plus simple d’envoyer des requêtes HTTP à la base de données et de gérer les réponses.

Dans cet exemple, vous avez appris à insérer des exemples de valeurs. Vous pouvez facilement modifier les exemples pour enregistrer les lectures des capteurs, par exemple, ou les états GPIO.

Le présent tutoriel était basé sur le tutoriel créé par Kushagra Goel.

Nous espérons que vous avez trouvé cet article utile.

Nous avons des guides pour d’autres bases de données populaires avec l’ESP32 :

En savoir plus sur l’ESP32 avec nos ressources :

Merci d’avoir lu.