Table des matières:
- Étape 1: chargement d'un stub de plugin
- Étape 2: Recherche de données sur le capteur
- Étape 3: Touches finales
- Étape 4: l'utiliser dans un contexte plus large
- Étape 5: Mots de clôture
Vidéo: FlowerCare et Nymea pour sauver mes plantes : 5 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
Se salir les mains en connectant des capteurs d'entretien des plantes à ma maison intelligente open source existante. Une procédure pas à pas sur le développement de plugins pour nymea.
L'histoire
Comme beaucoup d'autres bricoleurs et hackers, je souffre aussi du fait que le piratage informatique me prend tellement de temps que j'oublie parfois d'arroser mes plantes. Après que mon Monstera Deliciosa ait à nouveau souffert d'un sol sec, j'ai décidé de voir si je pouvais faire quelque chose pour me rappeler quand j'avais soif.
Une recherche rapide sur le Web a attiré mon attention sur le Xiaomi FlowerCare, également connu sous le nom de MiCare ou PlantCare. Il s'agit d'un appareil Bluetooth Low Energy et certaines recherches fondamentales ont révélé que son protocole semble assez facile à comprendre. Bien que Xiaomi ne semble pas fournir de spécifications publiques, il y a encore eu pas mal d'ingénierie inverse sur Internet pour cet appareil. J'ai donc décidé d'en commander un.
Quelques jours plus tard, il a été livré et, bien sûr, j'ai tout de suite commencé à jouer avec. J'ai brièvement vérifié l'application qui l'accompagne, mais comme vous pouvez probablement le deviner, son utilisation dans sa configuration par défaut n'a jamais été mon plan. Bien sûr, cela doit être intégré à ma configuration de maison intelligente existante. Comme également décrit ici, j'utilise nymea comme solution de maison intelligente (oui, vous pouvez même repérer le Monstera sur l'une des images:)). Malheureusement, nymea ne prenait pas encore en charge ce capteur, il était donc nécessaire de lancer un IDE.
Étape 1: chargement d'un stub de plugin
Donc, la première chose que j'ai faite a été de copier le plugin Texas Instruments Sensor Tag existant, il semblait assez similaire à ce que je supposais devrait également fonctionner pour l'appareil FlowerCare. Après le renommage de base des éléments dans plugininfo.json et la suppression de la plupart du code du plug-in sensortag, j'étais prêt à charger le nouveau stub du plug-in.
Comme prévu, la découverte montrerait déjà le capteur tout de suite et me permettrait de l'ajouter au système. Bien sûr, cela ne produirait aucune donnée significative à ce stade.
Étape 2: Recherche de données sur le capteur
Comme pour tout appareil Bluetooth LE, la première chose à faire est de vous renseigner sur les services qu'il propose et leurs caractéristiques. Quelque part là-dedans, les données réelles sont cachées. Avec une impression de débogage rapide en boucle sur tous les services découverts et en imprimant leurs caractéristiques, j'étais au point où je pouvais comparer les informations que j'ai trouvées sur Internet avec ce que l'appareil rapporte réellement.
void FlowerCare::onServiceDiscoveryFinished(){ BluetoothLowEnergyDevice *btDev = static_cast(sender()); qCDebug(dcFlowerCare()) << "avoir des uuids de service"
La version du firmware et le niveau de la batterie étaient faciles. Je pouvais déjà voir les valeurs correspondantes imprimées dans cette toute première tentative de liste des données. Les valeurs réelles des capteurs y sont cachées un peu plus profondément, mais leur combinaison avec les données d'Internet a immédiatement indiqué où les trouver et surtout comment les lire.
void FlowerCare::onSensorServiceCharacteristicRead(const QLowEnergyCharacteristic &characteristic, const QByteArray &value){ qCDebug(dcFlowerCare()) << "Characteristic read" << QString::number(characteristic.handle(), 16) temp; qint8 sauter; flux >> sauter; quint32 lux; flux >> lux; qint8 humidité; ruisseau >> humidité; qint16 fertilité; ruisseau >> fertilité; émettre fini (m_batteryLevel, 1.0 * temp / 10, lux, humidité, fertilité); }
En mettant tout cela ensemble, le plugin a déjà commencé à produire des données significatives.
Étape 3: Touches finales
Donc, cela fonctionnait essentiellement maintenant, cependant, un problème restait là. Le capteur FlowerCare, contrairement au Texas Instruments SensorTag, interromprait la connexion Bluetooth au bout de quelques secondes. Compte tenu du cas d'utilisation, cela ne semble pas être un problème car il est assez fiable pour répondre aux tentatives de connexion. Etant donné que normalement une plante n'aspire pas un litre d'eau en quelques minutes, mais en quelques jours, il ne semble pas nécessaire de rester connecté tout le temps. De plus, cela déchargerait beaucoup la batterie. J'ai donc décidé d'ajouter un PluginTimer qui reconnecterait le capteur toutes les 20 minutes et en récupérerait les données. Si, pour une raison quelconque, le capteur ne répondait pas à la tentative de connexion, le code lancera une autre minuterie qui essaiera de se reconnecter toutes les minutes à partir de ce moment jusqu'à ce qu'il parvienne à obtenir les données. Ensuite, il récupèrerait à nouveau les données sur l'intervalle de 20 minutes. Si l'appareil ne parvient pas à se connecter deux fois de suite (c'est-à-dire après 20 + 1 minutes), il sera marqué hors ligne dans le système et l'utilisateur pourra en être alerté.
void DevicePluginFlowercare::onPluginTimer(){ foreach (FlowerCare *flowerCare, m_list) { if (--m_refreshMinutes[flowerCare] <= 0) { qCDebug(dcFlowerCare()) << "Refreshing" address(); flowerCare->refreshData(); } else { qCDebug(dcFlowerCare()) << "Pas d'actualisation" adresse() << " Prochaine actualisation dans" << m_refreshMinutes[flowerCare] << "minutes"; } // Si nous avons eu 2 tentatives de connexion infructueuses ou plus, marquez-le comme déconnecté if (m_refreshMinutes[flowerCare] < -2) { qCDebug(dcFlowerCare()) << "Échec de l'actualisation pour"<< (m_refreshMinutes[flowerCare] * -1) <setStateValue(flowerCareConnectedStateTypeId, false); } } }
Avec cette stratégie, Nymea semblait désormais fournir des données parfaitement fiables à partir de ce capteur.
Étape 4: l'utiliser dans un contexte plus large
Obtenir les valeurs du capteur n'est pas très utile cependant, j'aurais également pu utiliser l'application d'origine pour cela. Faisons maintenant des choses intelligentes avec.
Nymea prend en charge l'envoi de notifications push, soit vers des téléphones sur lesquels nymea:app est installée, soit via PushBullet. Donc, la chose évidente à faire est de m'envoyer des notifications push chaque fois que l'humidité du sol tombe en dessous de 15%. C'est assez facile à configurer dans l'application. Comme condition préalable, vous avez besoin d'un compte dans nymea:cloud ou sur PushBullet. Pour les notifications push basées sur nymea:cloud, il suffit d'activer nymea:cloud sur nymea:core et dans nymea:app. Dès que les deux sont connectés, une notification apparaîtra automatiquement. Pour PushBullet, ajoutez une nouvelle chose dans le système, vous y trouverez PushBullet dans la liste. Il vous demandera la clé API que vous obtenez lors de votre inscription avec PushBullet. Une fois que vous avez une notification push dans Nymea, vous pouvez créer une règle.
Bien sûr, vous pouvez faire ce que vous voulez d'autre… Vous pouvez également allumer de la lumière afin de refléter les valeurs des capteurs, ou utiliser le plugin HTTP Commander pour publier les valeurs des capteurs sur un serveur sur Internet par exemple. Je n'ai pas de vanne d'eau qui peut être contrôlé numériquement (encore) mais bien sûr, si vous avez une telle chose et qu'elle n'est pas encore prise en charge par nymea, l'ajout d'un plugin pour cela serait plutôt similaire à celui-ci.
Étape 5: Mots de clôture
Le plugin flowercare a déjà été accepté en amont et si vous en avez un, il est prêt à être utilisé avec nymea maintenant. Cependant, j'espère que cet article pourrait être intéressant si quelqu'un souhaite ajouter la prise en charge d'autres appareils. Cela devrait être une procédure pas à pas sur la façon de créer votre propre plugin pour nymea.
Si vous souhaitez simplement créer cette configuration chez vous, tout ce dont vous avez besoin est le capteur FlowerCare, un Raspberry Pi, l'image de la communauté nymea (elle inclut désormais le plug-in Flower Care) et nymea:app qui est disponible dans les magasins d'applications. De plus, jusqu'à présent, mon Monstera Deliciosa est à nouveau heureux et, comme vous l'avez peut-être vu dans les captures d'écran, je me suis procuré un deuxième de ces capteurs pour suivre la santé de mon citronnier également. Pour celui-là, je m'envoie une notification push chaque fois qu'il gèle dehors afin que je puisse le faire passer l'hiver en toute sécurité.
Conseillé:
Avertissement d'eau - un dispositif pour sauver votre bateau : 5 étapes (avec photos)
Avertissement d'eau -- un dispositif pour sauver votre bateau : Si vous êtes propriétaire d'un bateau, il est très confortable de mettre enfin le bateau sur la terre ferme. Il ne peut pas couler là-bas. Partout ailleurs, il fait face à une bataille constante pour vaincre la tendance à glisser sous les vagues et à disparaître. Pendant l'hiver ici à Hélas
POUBELLE OU BAC AUTOMATIQUE. POUR SAUVER LA PLANÈTE. : 19 étapes (avec photos)
POUBELLE OU BAC AUTOMATIQUE. POUR SAUVER LA PLANÈTE. : Avant de commencer, je vous recommande de regarder la première vidéo avant de lire celle-ci car elle est très utile. Bonjour, je m'appelle Jacob et je vis au Royaume-Uni. Le recyclage est un gros problème là où j'habite. Je vois beaucoup de déchets dans les champs et cela pourrait être nocif. E
Sauver un chargeur de voiture ? : 6 étapes
Sauver un chargeur de voiture ? : C'est le chargeur de voiture pour mon iPhone. Les tourbillons jaunes s'allument lorsqu'il fonctionne. Cela n'arrive que par intermittence. J'ai décidé de voir ce qui pouvait être fait
Distributeur automatique de plantes WiFi avec réservoir - Configuration de la culture intérieure/extérieure - Arrosez automatiquement les plantes avec surveillance à distance : 21 étapes
Distributeur automatique de plantes WiFi avec réservoir - Configuration de la culture intérieure/extérieure - Arrosez automatiquement les plantes avec surveillance à distance : dans ce didacticiel, nous montrerons comment configurer un système d'alimentation pour plantes intérieur/extérieur personnalisé qui arrose automatiquement les plantes et peut être surveillé à distance à l'aide de la plate-forme Adosia
Créer mes propres graphiques pour mes données IOT sur un Raspberry PI : 3 étapes
Créer mes propres graphiques pour mes données IOT sur un Raspberry PI : Veuillez lire la suite si vous souhaitez pouvoir créer vos propres graphiques IOT en utilisant 7 lignes de code. Je voulais créer des graphiques pour afficher les données dans un format graphique à partir de mes capteurs IOT. sur une page Internet. Auparavant, pour cela, j'avais utilisé des services tiers (certains pa