Supervision de la serre (Web et Android)

Mon père a construit une serre il y a peu, et je me suis dit que ce serait intéressant d’analyser quelques données et pourquoi pas ensuite les exploiter ensuite afin de gérer l’ouverture automatique de celle-ci.

C’était aussi l’occasion de trouver une utilisation à mon Akeru (Arduino made in SnootLab qui utilise le réseau Sigfox) qui dormait depuis un moment.

Superviser ? Oui, mais quoi ?

Dans une serre, il y a deux choses importantes, la température et l’humidité. J’ai fouillé dans mon bazar et j’ai trouvé tout un tas de capteurs. Voilà ce que j’ai retenu :

  • Une sonde DS1820 étanche pour mesurer la température extérieure.
  • Une sonde DHT22 pour mesurer la température intérieure et l’humidité.
  • Un capteur RGB / Proximité / Lumière qui servira pour savoir s’il fait jour ou non et aussi pour déclencher l’affichage des valeurs en passant la main devant.
  • Une matrice de LED gérée par un MAX7219.
  • Et donc un Akeru (Arduino équipé d’un modem Sigfox).

La mise en place

Le câblage et l’utilisation de ce matériel est suffisamment simple, j’ai donc fait des programmes individuels afin de tester chaque capteur puis j’ai tout mis dans un sketch afin de récupérer toutes les données…. et ce fut un échec, pas assez de mémoire disponible sur l’atmega.

J’ai donc fait quelques tests et cherché comment réduire la taille de mon sketch. En premiers lieux j’ai mis toutes les chaînes constantes qui sont dans me « Serial.print » en progmem grâce à la fonction F mais ce n’était pas suffisant.

Je me suis alors penché sur les librairies. Par exemple pour la DHT22 j’utilisais la librairie de chez Adafruits qui est très bien mais qui occupe beaucoup de mémoire. 

Après avoir testé toutes les librairies pour les DHT j’ai choisi la TroykaDHT qui prend deux fois moins de place. J’ai fait de même pour la librairie du capteur RGB/Lumière (la Sparkfun est bien plus gourmande que celle d’Adafruit) et pour la gestion de la matrice de LED (je voulais utiliser la MD_Parola qui s’ajoute à la librairie MAX72XX pour proposer des fonctions de scrolling et d’autres dont je n’avais pas besoin j’ai donc codé le scrolling directement dans mon sketch).

Ces changements m’ont permis de diviser par 2 la taille de mon programme, il n’occupe donc que 60% de la mémoire ce qui me permettra d’ajouter des fonctionnalités plus tard comme un capteur de pluie, l’ouverture via un moteur …

Lecture des données

Le modem envoie des données sur le réseau Sigfox (un réseau bas débit disponible partout en France et dans beaucoup d’autres pays) qui les renvoie via un « callback » sur un serveur maison où je les stocke dans une base de données. J’ai ensuite fait une petite interface en utilisant chartJS afin de les visualiser.

Et sur ANDROID ?

Eh bien j’ai fait très simple; en utilisant l’objet « WebView » du SDK Android on peut encapsuler un site web dans une application.

package eu.rouanetnet.serreleminade;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;


public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

WebView myWebView = (WebView) findViewById(R.id.web1);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.loadUrl("https://rouanetnet.eu/tempMazamet/");
}
}

Attention à ne pas oublier d’ajouter cette ligne dans le manifest sans quoi votre application n’accèdera pas a internet et vous ne verrez rien dans votre appli.

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

Vous trouverez bientôt le code sur mon github.

Stripe.io le système de paiement au bon karma

Bonjour,

stripeJe vais vous parler de Stripe.io, un système de paiement qui existe depuis quelques années, mais qui n’est disponible que depuis le début de l’année sur le territoire français, dont l’avantage est de fournir une API afin de s’intégrer facilement dans votre site. J’ai pu l’expérimenter pour mettre en place le paiement de la cotisation du lab http://paiement.tetalab.org (design by Sack).

Pour faire quoi ?

C’est très pratique pour mettre en place un système de paiement pour une association (cotisations, dons, évènements, …) accessible depuis le web ou par mobile pour un coût à la transaction de 2.9% + 0.30$. 

Mais il y a Paypal ?

En effet il y a Paypal, mais Stripe est différent :

  • pas besoin d’avoir un compte sur Stripe pour pouvoir payer
  • vous intégrez le module de paiement directement dans votre site, le  client reste donc « chez vous »
  • Stripe propose des librairies et des exemples de code, de mise en œuvre pour pas mal de langages https://github.com/stripe
  • Stripe a un meilleur Karma 😀

La mise en œuvre

  1. créer un compte sur Stripe, on rempli les informations et on l’active
  2. (Optionnel mais très recommandé) prendre un certificat SSL (https://www.namecheap.com/ en propose a 6.56 euro pour l’année, testé et approuvé)
  3. intégrer le code dans son site (avec tous les exemples qu’il y a c’est facile)
  4. recevoir le pognon

Conclusion

Les plus :

  • Simple d’utilisation
  • Pas d’abonnement
  • Intégration directe dans le site
  • Interface de test très pratique pour éviter de tester avec sa CB
  • Possibilité de gérer un compte à plusieurs

Les moins :

  • Les transferts ne sont pas programmables (pour le moment)