Gladys 4 - Développement du service Arduino

Bonjour,

J’ai vu passer vos différents échanges sur ce fil et cela m’a interrogé sur le besoin d’utiliser un Arduino alors que la Raspberry Pi est capable de gérer elle-même tous ces périphériques.

Du coup, je me dis que j’ai dû rater un truc. Pourriez-vous m’en dire plus ?

Une de mes idées (pour plus tard, quand j’aurai le temps), serait de créer un service python un peu générique qui permettrait d’adresser les entrées-sorties de la Raspberry et de communiquer avec Gladys via MQTT.
J’ai l’impression que ça rejoint un peu ce que vous êtes déjà en train de faire, non ?

2 Likes

Dans Gladys , on utilise des arduino au lieu des gpio du raspberry pour plusieurs raisons :

  • L’Arduino est en temps réel

  • Faire lire un état au raspberry toutes les secondes ça prend des ressources inutilement

  • L’arduino a des pins analogiques

  • Les programmes bas niveau sont plus simples a écrire en C sur l’aduino que en JS directement sur le RPI

  • :grin:

2 Likes

c’est intéressant ta remarque :

cela se défend je pense si l’on veux juste gérer un petit périphérique (un module 433 MHz, un bouton poussoir, une led, un capteur de température, …), cela évite de relier un arduino et d’avoir une autre carte + alim + code +…

par contre là où l’arduino devient intéressant c’est si il y a plusieurs périphériques et/ou si tu veux avoir des capteurs/actionneurs déportés avec de l’intelligence/gestion localement.

Je ne connais pas suffisamment le codage au niveau raspberry comme toi @joeypic (je suis sur que tu as raison et que cela est consommateur de ressources) mais je ne sais pas à quel moment cela devient intéressant de passer par un arduino.

je pense que cela pourrait être intéressant de faire ce comparatif, car en effet le Raspi a des entrées/sorties numérique dispo ainsi que des ports I²C et SPI et pour des besoins basiques, cela permettrait peut être à des utilisateurs de Gladys de se passer d’arduino. (j’y vois un intérêt de simplicité car si l’on donne le câblage à réaliser et que le reste puisse s’installer automatiquement), des utilisateurs sans aucune notion d’électronique, n’y même de programmation pourrait avoir simplement des boutons poussoirs, des leds, un capteurs de température, des capteurs 433 MHz pour quelques euros sur le net sans passer par des solutions constructeurs toutes faites mais plus chères!

Qu’en pensez vous ?

2 Likes

Pour tout vous dire, je suis plutôt développeur bas niveau (PIC, STM32, ATMEGA, …) donc en langage C et je me suis mis à Python il y a quelques mois pour le boulot et pouvoir mieux profiter de mes RPi…
Du coup, je me suis développé, pour tester, un conteneur Docker avec uniquement Python qui lit un capteur de température OneWire (DS1820) et qui communique les données vers un broket Mqtt sur lequel est abonnée une base de données InfluxDB. Ça marche bien et ce n’est pas très compliqué.

En lisant vos messages, je me suis dit que ça ressemblait un peu.
J’essaierai d’adapter ça à Gladys, un de ces 4, comme ça, on pourra faire ce comparatif qui m’intéresse aussi.
Je trouve que ce serait intéressant que l’utilisateur puisse se tourner vers la solution qu’il préfère en fonction de ces compétences.

2 Likes

100 % d’accord avec toi

N’hésites pas quand tu auras le temps de créer un sujet pour ton idée afin qu’elle ne soit pas noyée dans un autre sujet comme celui ci par exemple.

Tiens moi au courant, cela m’intéresse beaucoup et si tu veux un testeur je pourrais t’aider.

@+

Bonjour, je pense que vous avez déjà vu ça mais ça à l’air intéressant pour gérer complètement un arduino.

Pour ma part c’est important que l’arduino permettat de gérer le 433Mhz permette d’exploiter aussi les commandes infra-rouge, mettre un capteur de lumière et de mouvement etc… moi j’aimerais aussi commander un ruban LED RGB directement.

Autres impératifs, peut être déjà pris en compte: les arduino chinois ne s’appellent pas pareil et donc ca ne marchait pas dans la v3.

les plus avancés que j’utilisais étaient seria-isokar et sendradiocode pour prendre en charge le 433Mhz avec le pulselength, et tous les autres paramètres.

Enfin, mais j’imagine que c’est pris en compte dans gladysc’est son objet, un capteur de mouvement philips hue via doit être pris en compte comme un capteur 433Mhz passant par arduino, le protocole utilisé doit être transparent.

au cas où ca puisse faire avancer.

2 Likes

Salut BenPi,
très intéressant ton sujet, regarde celui ci qui parle de la même chose.

https://community.gladysassistant.com/t/gladys-4-developpement-du-service-arduino/5154

l’un des sujet est justement le protocole ainsi que la gestion du 433 MHz.

@+

@benPi et @camille j’ai fusionné le sujet

2 Likes

@Reno je suis d’accord avec toi, mais l’idée est aussi que Gladys ne tournera pas toujours sur Raspberry. Certaines personnes peuvent aussi vouloir installer Gladys sur un support qui n’aura pas de GPIO. C’est pour ça que l’Arduino est pratique :smile:

Autrement j’ai pas mal avancé sur le service, de nouvelles fonctionnalités sont implémentées.

Page Setup :

Page Device :

Je suis encore loin d’avoir fini, j’ai encore pas mal de travail et d’arrangement à faire. Mais si vous êtes partants pour tester mon code, c’est avec plaisir que j’écouterai vos retours :smile:

Bonjour @Reno,

je suis partant pour tester ton code.
Dis moi comment je dois m’y prendre ?

1 Like

@camille La question était-elle pour moi ? Ou il n’y a pas d’erreur ? ^^

Si c’était pour moi, voilà comment je m’y prends :

  • Je clone mon repo
  • Individuellement, je fais un npm install dans les dossiers back et front
  • Je corrige les problèmes potentielles via des npm audit et npm audit fix
  • Si tu as des soucis d’interactions entre le back et le front, il faut modifier le fichier front/config.js, et remplacer localhost par l’adresse IP qui va bien,
  • Une fois tout ça fait, je fais un npm run db-migrate:dev dans le dossier server
  • Je fais un npm start dans les dossiers back et front

A partir de là normalement tout est bon, tu as accès à l’instance, tu peux créer un compte temporaire, accéder à Gladys, et tester tout ce que tu veux.

Si tu as des soucis on peut se contacter directement par Discord ou MP, comme tu veux moi je suis dispo :wink:

En tout cas merci d’accepter de tester :smile:

je vais essayer de tester aussi. Mais j’ai rien compris à ce que tu as mis :smile:
J’ai déjà cloné le repo… après je me renseigne un peu et j’aurais peut être quelques questions.

J’ai débuté en java et en js et j’ai fait un arduino avec des sous-modules:

  • servomoteur
  • IR télécommande
  • 433Mhz, avec la gestion pulselength protocol et autre
  • Capteur de luminosité
  • capteur de mouvement
  • Gestion d’un ou plusieurs relais
  • Je me tate a mettre une fonction micropohne: commande quand je tape dans mes mains gladys pourrait le faire aussi via son micro…

Je fais parti des gens qui ont galéré lors de la V3 pour installer à cause de bugs:

  • Arduino nano clone Chinois non reconnu
  • La pin 2 de valeur 0, avec toutes les correspondances de numéo, pas simple
  • adaptation pour gérer le pulselength.

Bref si ça peut contribuer je peux mettre ça en ligne quelque part (ici, github,… je pense que tu sais mieux que moi le plus pertinent. )

1 Like

Merci beaucoup pour ta contribution :grin:

Il n’y a aucun problème, si tu veux me contacter en MP pour qu’on regarde ça en détail n’hésite pas :wink:

Avec grand plaisir, toute documentation est bonne à prendre pour pouvoir satisfaire tout le monde ^^

Je vais d’ailleurs bientôt mettre un place un Google Forms pour savoir ce que chacun attend à peu près de ce service, de manière à ce que ça oriente la suite du travail vers des méthodes qui conviennent au plus grand nombre.

Je poste ce message ici car cela suit le développement du service Arduino, mais peut-être cela mériterait peut-être son propre thread… Je ne sais pas :stuck_out_tongue:

Pour tout ceux qui sont intéressés par l’implémentation Arduino, j’ai créé un petit questionnaire afin que vous puissiez me faire parvenir vos retours d’expérience sur Arduino, ce que vous attendez du service, et, si vous en avez, de la doc que vous pourriez juger utile.

Merci beaucoup de prendre sur votre temps pour ce petit sondage, c’est l’affaire de 2 questions :smile:

Je voulais en parler justement, un sous-module parmis IR, RF433, capteur etc… serait un sous-service “arduino-to-arduino”. En wifi avec les l’ESP8266, gladys peut faire mais, s’il n’y a plus de wifi, parfois c’est pour ça que le 433 est utilisé, pour éviter de baigner dans le wifi H24 ou de se prémunir d’une coupure wifi.

Ce sous-service doit pouvoir renvoyer la commande JSON recue en USB à l’arduino collé à gladys, en 433, tel quel, à un autre Arduino, bien placé (au plafond!) pour mesurer un mouvement, envoyer une commande IR à l’aspirateur robot à l’opposé de la box TV (pour mon cas).

Bref pouvoir s’affranchir d’un arduino collé à gladys. Il doivent parler entreux: l’arduino USB devient alors une passerelle.

Bonjour, tout d’abord je suis content de voir que ce thread et le dévellopement reprend de l’activité.

J’avoue que je suis un peu partagé sur le fait d’avoir quelque chose de standard mais c’est probablement parce que mon arduino est un peu le 2ième cerveau de mon installation.
Pour détailler un peu à quoi il me sert :

  • 433Mhz emetteur : pour piloter de simples prises
  • 433Mhz récepteur : capteur de température/humité et niveau de batterie des sondes.
  • HC-11 Wireless Serial Port Module (du 433 aussi en fait) qui me sert à piloter mon roomba et à lire ses données.
  • Buzzer que j’active pour différent cas, par exemple lors que je reçois un certain code radio il est activé, ca me permet entre autre de tester la portée de mes sondes de t° (faites à base de DHT11 et ATtiny85).
  • DHT11 mesure de T° et humidité
  • Un capteur de mesure de qualité de l’air.

Quand je dis que c’est un peu un deuxième cerveau c’est parce que je traite/filtre ici toutes mes différentes informations recues avant d’éventuellement les transmettre à Gladys. Par exemple si une valeur ne change pas je ne la transmet pas ou si elle est en dehors de ses limites min/max.

Sous gladys j’ai aussi créé un faux périphérique qui me permet d’activé ou non le renvoi de à Gladys de tous ce qui est lu sur le 433Mhz. Ca permet pas exemple de lire les codes des télécommandes de prise (via putty). Etant désactivé par défaut ca permet aussi de ne pas surcharger Gladys d’envois d’informations n’appartenant pas à mon système.

Je gère aussi tout ce qui concerne mon Roomba (robot aspirateur) en effet il fonctionne par un système de requete, je peux donc cadenser les demandes.

Mon code arduino est donc loin d’etre standard et basique ce qui le rend forcement plus difficilement portable.
Voilà un peu ce que donne mes différents périphériques pour imager un peu mes propos

Bref pas bien sur de faire avancer le schmiblik mais au moins ca ajoute quelques exemples d’utilisations de l’arduino.

Pouet !

@Spouet je comprends ta réticence vis à vis de cette manière de faire.

Pour m’expliquer un peu, ma philosophie vis-à-vis de ce code générique, c’est que l’utilisateur aie à mettre le moins possible les mais dans le cambouis pour préparer son installation Arduino. Il téléverse le code, il branche ses modules à l’Arduino, relie l’Arduino à Gladys, et paramètre le tout dans Gladys.

Pourrais-tu m’envoyer le code Arduino que tu utilises sur Gladys 3 ? Plus j’aurai de doc sur ce que tout le monde utilise, plus le code pourra correspondre aux attentes des utilisateurs. :smile:

Mais moi aussi je comprend bien ta philosophie qui est bien en accord avec la V4 de Gladys. Cependant mais ca n’est qu’un avis perso, mettre un arduino et diffrents conposant dessus c’est selon moi déjà mettre les mains dans le cambouis.
J’ai l’impression que pour ceux qui veulent vraiment faire au plus simple sur principalement de la RF il y a le RFlink qui est en train d’être implémenté.

Je t’envoie le code même si c’est un poil fait à l’arrache ^^ (comme tout bidouilleur qui se respecte :wink: )

Je rejoins @Spouet, qui dit arduino dit diy et donc avoir les mains dans le cambouis . Il y’a un juste milieu qui va être compliqué à trouver pour converger vers la philosophie de Gladys 4.

Le principal c’est que tout le monde s’y retrouve, les expert qui exploiteront l’api directement ou le mqtt, et les non expert qui utiliseront le service arduino.

Je suis plutôt d’accord avec @billona sur le fait qu’il faut proposer quelque chose de plus simple possible et avec le minimum de modification à faire dans le code arduino.

Pour moi, ce n’est même pas une histoire de DIY, c’est une histoire de simplicité, même pour le développeur, même pour celui qui sait faire, si c’est plus simple à mettre en place c’est mieux !

Ce qui n’empêche pas aux experts de modifier le code arduino et de faire du custom, qui peut le plus peut le moins: on garde une « API USB » ouverte à mon avis :slight_smile:

Pour information @billona, le module qu’on avait dans Gladys 3 et qui représente ce que beaucoup d’utilisateurs ont dans la v3, c’est celui là =>

Avec ce code arduino: