Table des matières:

Puissant système domotique autonome - Pi, Sonoff, ESP8266 et Node-Red : 9 étapes (avec photos)
Puissant système domotique autonome - Pi, Sonoff, ESP8266 et Node-Red : 9 étapes (avec photos)

Vidéo: Puissant système domotique autonome - Pi, Sonoff, ESP8266 et Node-Red : 9 étapes (avec photos)

Vidéo: Puissant système domotique autonome - Pi, Sonoff, ESP8266 et Node-Red : 9 étapes (avec photos)
Vidéo: Home Assistant - DIY - ESPHome - NodeMCU - ESP8266 - Station Multi-Capteur - Domotique 2024, Novembre
Anonim
Puissant système domotique autonome - Pi, Sonoff, ESP8266 et Node-Red
Puissant système domotique autonome - Pi, Sonoff, ESP8266 et Node-Red

Ce guide devrait vous amener à la première base où vous pouvez allumer/éteindre une lumière ou un appareil via n'importe quel appareil pouvant se connecter à votre réseau local, et avec une excellente interface Web personnalisable. Les possibilités d'extension/d'ajout de fonctionnalités sont vastes, notamment l'envoi d'e-mails, de messages Twitter, la lecture de capteurs (par exemple, la température). Vous pouvez facilement définir des règles, par ex. – si la température est inférieure à 15C à 23h, allumez la couverture chauffante pendant 30 min. Le système utilise le protocole MQTT avec TCP qui est considérablement plus fiable que UDP - qui est étonnamment utilisé par certains appareils domotiques commerciaux. Une fois que le dur travail de configuration du système, décrit ici, est terminé, le plaisir peut commencer. Node Red fournit une interface utilisateur fantastique qui est intuitive, rapide et facile à configurer, et offre des capacités incroyables.

Le résultat est un système domotique puissant, entièrement sous votre propre contrôle et entièrement sur un réseau local. De nombreux systèmes présentés sur Instructables fonctionnent avec des serveurs basés sur le cloud et constituent donc un risque de sécurité et peuvent nécessiter un abonnement. Ceux-ci sont plus faciles à mettre en place mais présentent un risque de sécurité plus élevé et un coût potentiellement plus élevé. Je dois ajouter que l'on peut configurer un VPN (réseau privé virtuel) sur le Pi pour permettre une connexion sécurisée au réseau/système domestique si un accès depuis l'extérieur serait utile (Google Pi OpenVPN pour les instructions).

Ce système nécessite la reprogrammation des appareils Sonoff avec un excellent système open source appelé Sonoff-Tasmoda. Cela peut être fait en utilisant une configuration spéciale Arduino et un convertisseur USB vers série. Les appareils Sonoff utilisent la puce Wi-Fi ESP8266 afin que vous puissiez également créer vos propres appareils à l'aide de modules ESP8266 ou les adapter à d'autres éléments pour offrir une connectivité sans fil.

La tâche la plus importante consiste à configurer un Raspberry Pi en tant que hub. Cela exécute le courtier MQTT (ou serveur) qui gère la communication avec les appareils connectés. Le Pi exécute également un système appelé Node-Red qui peut intercepter des messages, des données et des commandes de sortie, par exemple quand allumer la couverture chauffante. Node-Red fournit également une interface pour servir la page Web à laquelle vous pouvez vous connecter via un smartphone/tablette/PC/ordinateur portable, pour voir ce qui se passe et activer la commutation manuelle des lumières, etc.

Mon objectif avec cette instructable est de donner à chaque étape suffisamment de détails pour qu'un novice puisse faire fonctionner le système.

Les étapes sont:

  • Charger un Pi avec Rasbian Stretch
  • Mettre à jour et ajouter des fonctionnalités à Node-Red
  • Installer le courtier Mosquitto MQTT
  • Configurer l'environnement Arduino pour télécharger le firmware Sonoff-Tasmota
  • Reprogrammer un interrupteur Sonoff
  • Configurer l'interface Node-Red
  • Testez tout fonctionne.

Matériel dont vous aurez besoin:

  • Raspberry Pi et alimentation (et clavier et moniteur pour la configuration initiale) (modèle B utilisé ici)
  • Interrupteur Sonoff
  • Convertisseur série USB
  • Facultatif – Carte de développement ESP telle que NodeMCU.

Mon expérience avec le Raspberry Pi est que la configuration de quoi que ce soit semble impliquer beaucoup plus de douleur qu'on ne pourrait jamais imaginer possible avec des choses qui ne fonctionnent pas ou qui restent bloquées sur une étape triviale où l'explication aurait pu être meilleure. Les forums ne reçoivent pas toujours des conseils qui fonctionnent ! J'ai trouvé plusieurs itinéraires qui ne fonctionnaient tout simplement pas pour une raison ou une autre. Cela a coûté 3 jours ! J'ai ensuite tout essuyé et j'ai recommencé et terminé en moins d'une (longue) journée. Cela a cependant utilisé l'ancienne Raspian Jessie. Après cela, j'ai trouvé un moyen d'utiliser la version actuelle et récemment publiée (Stretch) et j'ai tout recommencé. Ce guide permet de copier et coller des instructions dans le Pi. Vous devriez donc avoir terminé en quelques heures. Quoi qu'il en soit, j'espère que cela vous permettra d'apprendre plus rapidement et avec beaucoup moins de douleur. Croyez-moi, cela en vaut la peine pour le résultat final.

Étape 1: Chargez un Pi avec Rasbian Stretch

Cela devrait être assez simple. Commencez avec une carte SD de 8 Go ou 16 Go. Téléchargez la dernière version sur:

www.raspberrypi.org/downloads/

Le thread principal suppose ici que la version complète est chargée. Cependant, vous pouvez utiliser la version allégée pour économiser de l'espace. Si vous utilisez Raspbian Stretch Lite, suivez cette étape, puis passez à l'étape 9 à la fin.

Décompresser le fichier téléchargé donne un dossier avec le fichier.img. 7Zip est recommandé pour Windows (et The Unarchiver Mac). L'image doit être gravée sur la carte SD - mais un programme spécial doit être utilisé car le système de fichiers n'est pas compatible avec Windows. Le logiciel recommandé s'appelle Etcher et peut être téléchargé à partir de:

etcher.io/

Les instructions pour Etcher sont sur leur site Web et pourraient difficilement être plus simples. Sélectionnez l'image et le lecteur et cliquez sur Flash.

Maintenant, avec notre carte SD flashée, vous pouvez faire fonctionner le Pi.

Si vous connaissez l'adresse IP que votre Pi utilise ou êtes heureux de la trouver en vous connectant à votre routeur, vous pouvez éviter d'avoir besoin d'un clavier et d'un moniteur et utiliser SSH immédiatement. Ajoutez simplement un fichier vierge nommé SSH sur la carte SD, insérez, connectez-vous à Ethernet et allumez. Sinon, suivez le guide ci-dessous.

Connectez le Pi à Internet, à l'écran, à la souris et au clavier et connectez-vous à l'alimentation. La première chose que nous allons faire est d'activer SSH afin que nous puissions effectuer la majorité de la configuration confortablement sur un PC. Cela peut bien sûr être fait directement mais cela aide beaucoup de pouvoir suivre ce guide sur le même appareil que celui qui conduit le Pi et d'utiliser le copier-coller pour la plupart des instructions. De plus, dans mon cas, mon poste de travail PC est agréable et confortable, mais pas assez grand pour un pi non plus.

Il existe un guide pour une bonne partie du travail sur une vidéo YouTube. C'est là que j'ai commencé. Vous pouvez exécuter la vidéo en suivant ces instructions. Cependant, lorsque j'ai repris le processus en écrivant ceci, j'ai trouvé plus facile de suivre les instructions ici. Il y a des écarts importants. Il y a aussi certaines sections où j'ai conseillé de suivre la vidéo plutôt que d'énumérer les étapes ici. Je recommanderais cependant de le regarder pour comprendre MQTT, Node-Red et le processus de configuration général. La vidéo dure 38 minutes, alors installez-vous confortablement. La vidéo commence par montrer ce que Node Red peut faire, puis couvre l'installation et la configuration de Pi, suivie de la mise à niveau de Node Red et enfin de l'installation de Mosquitto. Horaires clés au cas où vous souhaiteriez revenir à une section:

00:00 Introduction à la vidéo

03:00 Démonstration de Node Red

14:14 Importation d'éléments de tableau de bord dans Node Red

21:05 Configuration initiale de Pi, y compris SSH

23:35 Installation du code de support Node Red

27:00 Introduction à MQTT

29:12 Installation de Mosquitto (MQTT) (la remarque ne fonctionne que pour Raspian Jessie)

33:00 Exemples de nœud rouge

Je vais lister les commandes en italique gras (plutôt que d'utiliser ""). Cette mise en forme est ignorée lorsque vous les copiez et collez-les dans le Pi.

L'introduction à Node Red vous donnera une idée de ce que le système peut faire et vous donnera une image de l'endroit où nous allons nous retrouver.

La vidéo YouTube est à:

Suivez la procédure d'installation de 21h05 à 23h35. Notez que le login par défaut est l'utilisateur: pi et le mot de passe: raspberry. Avant de redémarrer, recherchez l'adresse IP du pi. Cliquez sur l'icône « flèche haut+bas » dans la barre supérieure du bureau ou entrez l'instruction suivante dans la fenêtre du terminal/terminal:

adresse sudo ifconfig

Notez ensuite l'adresse IP après: inet addr:. Ce sera sous la forme 192.168.x.y

Notez cette adresse et redémarrez (entrez: sudo shutdown –r now)

La clé à ce stade est que SSH a été activé et que l'on peut configurer un lien vers le Pi à partir d'un PC (Mac et Linux incluent des interfaces SSH). Un bon programme pour le faire est un téléchargement gratuit appelé PuTTY qui peut également être utilisé comme interface série et peut faire Telnet. Putty est disponible à partir de:

www.chiark.greenend.org.uk/~sgtatham/putty…

Téléchargez et installez PuTTY.

Maintenant, avec le Pi redémarré, démarrez PuTTY et entrez l'adresse IP notée précédemment. Voir exemple ci-dessous:

Cliquez maintenant sur Ouvrir

Après la connexion en tant que: entrez pi

Entrez ensuite votre mot de passe.

Suivez maintenant les instructions ici et démarrez éventuellement la vidéo à partir de 23h35. Vous pouvez dans la plupart des cas copier et coller. Mettez le texte en surbrillance et utilisez ctrl+C pour copier. Puis faites un clic droit dans PuTTY pour coller. Parfois, le texte n'apparaît pas immédiatement, alors attendez quelques secondes. Si vous entrez deux fois, utilisez le retour arrière pour supprimer la deuxième entrée. Appuyez sur Entrée pour exécuter chaque instruction.

sudo raspi-mise à jour

J'ai reçu une commande introuvable et j'ai ignoré ceci et l'instruction d'arrêt/redémarrage suivante:

sudo shutdown -r maintenant

sudo apt-get -y update

sudo apt-get -y upgrade

Cela prend du temps…..

sudo apt-get suppression automatique

sudo apt-get -y update

sudo shutdown -r maintenant

À ce stade, le système d'exploitation Pi est chargé et mis à jour, prêt pour la prochaine étape.

Étape 2: Mettre à jour et ajouter des fonctionnalités à Node-Red

La connexion PuTTY aura été perdue par le redémarrage à la fin de l'étape précédente. Fermez donc PuTTY et après avoir attendu que le Pi démarre, reconnectez-vous comme avant.

Je suis passé à une méthode plus simple et plus fiable pour charger Node-Red - en suivant l'approche de https://nodered.org/docs/hardware/raspberrypi. Cela utilise un script et installera ou mettra à niveau Node-Red - l'approche est donc la même à partir des versions complètes ou allégées de Raspbian Stretch. Entrez donc:

bash <(curl -sL

Entrez Y lorsque vous y êtes invité (deux fois). Ce script charge également les fichiers nécessaires pour activer le démarrage automatique de Node-Red.

Donc, à ce stade, notre pi est chargé et mis à jour et avec les mises à jour nécessaires pour Node Red. Il n'y a aucun mal à faire un redémarrage avant l'étape suivante.

sudo shutdown -r maintenant

Étape 3: Installation de Mosquitto MQTT

Si vous ne l'avez pas déjà fait, cela vaut la peine de visionner la vidéo d'introduction à MQTT sur la vidéo à partir de 27h00.

C'est là que nous devons prendre un chemin différent. La procédure décrite dans la vidéo ne fonctionne que pour l'ancienne version Jessie de Raspian. Il y a une discussion sur le site des moustiques mais aucun résultat clair n'est affiché et par conséquent, nous nous en tiendrons à un itinéraire plus simple et plus sûr.

Connectez-vous donc à l'aide de PuTTY et entrez ce qui suit:

sudo apt-get mise à jour

sudo apt-get install mosquitto mosquitto-clients

Oui

sudo /etc/init.d/mosquitto stop

sudo /etc/init.d/mosquitpour démarrer

Les deux dernières instructions arrêtent et démarrent mosquitto et montrent que notre courtier MQTT fonctionne.

Pour un test rapide, ouvrez deux autres sessions PuTTY et connectez-vous à chacune.

Vous saurez maintenant que MQTT fonctionne par l'appareil qui a besoin de données pour s'abonner à un "sujet". Le courtier enverra toutes les données avec le même «sujet». Ensuite, l'appareil souhaitant envoyer des données/instructions les publie au courtier en utilisant le même «sujet».

Donc, dans une session PuTTY, entrez:

mosquitto_sub -d -t bonjour/monde

Ceci est une instruction pour s'abonner au sujet: hello/world.

Dans l'autre entrez:

mosquitto_pub -d -t hello/world -m "Bonjour depuis la fenêtre du terminal 2 !"

Il s'agit d'une instruction de publication avec le même sujet avec un message. Le texte: « Bonjour depuis la fenêtre du terminal 2 ! » devrait maintenant apparaître dans l'autre terminal.

Bravo d'être arrivé jusqu'ici. Nous avons maintenant le Pi chargé et mis à jour avec les mises à jour nécessaires pour Node-Red et avec le courtier moustique MQTT installé et testé. A partir de maintenant la vie devient plus facile un peu plus amusante. Fermez les deux sessions PuTTY utilisées pour le test MQTT.

Étape 4: Configuration de l'interface Node Red

Nous devons d'abord démarrer Node Red. Saisissez les instructions:

node-red-pi --max-old-space-size=256

Attendez qu'il s'exécute et vous voyez le texte « Flux démarrés ».

Maintenant, ouvrez un navigateur, j'utilise Chrome et entrez l'adresse IP pi notée précédemment suivie de:1880, c'est-à-dire quelque chose comme 192.168.0.8:1880

Vous devriez maintenant avoir la page de programmation Node Red en vue comme ci-dessous:

Vous pouvez maintenant suivre les exemples de Node Red à partir de 33h00 ou passer directement à une toute petite configuration supplémentaire et charger le premier flux qui affichera le lien vers MQTT et sera prêt à piloter notre commutateur.

La configuration supplémentaire nécessaire consiste à ajouter les éléments du tableau de bord qui activent une interface Web.

Ceux-ci sont montrés sur la vidéo à 14h14.

Suivez les instructions pour charger node-red-dashboard.

Maintenant, nous pouvons jouer un peu et montrer que MQTT fonctionne et est piloté par Node-Red. Ce n'est pas sur la vidéo mais c'est la clé de ce projet. Vous pouvez soit suivre mes instructions et/ou importer les flux depuis le fichier NRtest1.txt joint.

Ajoutez d'abord un nœud d'entrée d'injection et un nœud de sortie mqtt et reliez-les ensemble.

Double-cliquez sur le nœud d'injection (qui est initialement étiqueté horodatage). Dans la section Charge utile, utilisez le twiddly pour changer en chaîne et entrez: Hello from me. Laissez le sujet vide car nous pouvons le saisir dans le nœud MQTT. Cliquez sur Terminé

Maintenant, double-cliquez sur le nœud MQTT. Cliquez sur l'icône en forme de crayon à droite de la section Serveur. Cela ouvre une nouvelle boîte de dialogue. Entrez: localhost dans la section Serveur. Cliquez sur Ajouter. Maintenant, de retour dans le nœud Edit mqtt out, entrez notre sujet dans la section Sujet: hello/world. Définissez QoS sur 1. Cliquez sur Terminé. Cliquez maintenant sur Déployer. Vous devriez voir un blob vert et « connecté » sous le nœud mqtt.

Ajoutez maintenant deux autres nœuds – input mqtt et output debug, et connectez-les ensemble. Maintenant, double-cliquez sur le nœud d'entrée mqtt et entrez hello/world dans la section topic. Le serveur devrait déjà afficher localhost:1883. Définissez QoS sur 1. Cliquez sur Terminé. Cliquez ensuite sur Déployer et cliquez sur l'onglet de débogage dans le volet de droite. Cliquez maintenant sur le carré gris à gauche du nœud d'injection "Bonjour de moi". Cela envoie la charge utile de texte au courtier MQTT avec le sujet hello/world. Le courtier sait que le nœud d'entrée mqtt s'est abonné au même sujet et transmet ainsi la charge utile. Le nœud d'entrée mqtt l'envoie ensuite à l'onglet de débogage (RHS) et le texte "Bonjour de moi" devrait apparaître.

Cela coche une autre case car Node Red parle à notre courtier MQTT. Notez que Node Red n'est qu'un client pour le courtier - comme les appareils Sonoff que nous connecterons plus tard. Il permet cependant une automatisation sophistiquée et fournit une excellente interface utilisateur.

Nous pouvons maintenant apporter quelques petits changements et configurer les flux pour notre commutateur Sonoff.

Supprimez donc le nœud d'injection d'entrée (cliquez pour mettre en surbrillance et appuyez sur la touche Suppr). Ajoutez maintenant un commutateur de la section tableau de bord et connectez-le à la sortie mqtt. Double-cliquez sur le commutateur. Cliquez sur le crayon à droite de Groupe. Entrez dans Nom: Lumière. Cliquez ensuite sur le crayon à droite de Tab et entrez dans la section Nom: Lounge. Cliquez à nouveau sur Ajouter/Mettre à jour et Ajouter/Mettre à jour. Maintenant, de retour dans le nœud de commutateur d'édition, activez et désactivez les charges utiles. Utilisez les twidlys pour sélectionner la chaîne et entrez ON pour la charge utile On et OFF pour la charge utile OFF. Cliquez sur Terminé

Allez maintenant sur chacun des nœuds mqtt et changez le sujet en cmnd/sonoff/POWER. Si vous effectuez un copier-coller, vérifiez que vous n'avez pas inclus d'espace à la fin. Ceci est un sujet différent et ne fonctionnera pas avec le Sonoff. Trouver un espace perdu peut prendre environ une heure – croyez-moi ! Je suis aussi allé dans le tableau de bord>Thème et j'ai sélectionné: Sombre. Cliquez sur Déployer et sélectionnez l'onglet de débogage.

Ouvrez maintenant une nouvelle session de navigateur dans une nouvelle fenêtre et dimensionnez-la comme un téléphone mobile sur la session Node Red. Entrez l'adresse: votre adresse IP Pi:1880/ui/#/0 c'est-à-dire quelque chose comme 192.168.0.8:1880/ui/#/0. Vous devriez voir un écran avec Lounge and Light et un interrupteur. Cliquez sur l'interrupteur marche puis arrêt. La fenêtre de débogage doit afficher les charges utiles ON et OFF. Maintenant, si vous le souhaitez, connectez-vous également via un mobile. Notez que la position du commutateur est synchronisée. Peu importe que notre Sonoff ne soit pas encore connecté. Quand c'est le cas, en s'abonnant au sujet, il récupère le message/la charge utile et agit en conséquence.

Une dernière petite étape consiste à faire démarrer Node Red automatiquement après le démarrage du Pi.

Node Red a un guide sur:

Cependant, les fichiers nécessaires sont déjà chargés, aucune installation n'est donc requise.

Pour permettre ensuite à Node-RED de s'exécuter automatiquement à chaque démarrage et en cas de plantage, entrez (ouvrez la session PuTTY):

sudo systemctl activer nodered.service

Si jamais vous devez désactiver cette entrée:

sudo systemctl désactiver nodered.service

Maintenant, éteignez le pi avec sudo shutdown maintenant et coupez l'alimentation.

Cela a maintenant notre Pi verrouillé et chargé prêt à l'action. Notre PC/téléphone portable se connecte à Node Red et cela parle à notre serveur MQTT. Cela a été long et mérite une grosse tape dans le dos. Bien fait. J'ai trouvé le suivant, le bit Arduino, beaucoup plus facile!

Étape 5: Configuration du système Arduino pour la reprogrammation des appareils Sonoff

Toutes les informations pour ce faire sont sur le Sonoff-Tasmota GitHub. La seule partie avec laquelle j'ai eu des difficultés était le texte du sujet - mais je vous ai astucieusement fait entrer cela déjà !

Allez sur

Vous trouverez les instructions de configuration sur l'onglet Wiki dans la section Outils de téléchargement:

Plutôt que de passer par chaque étape, je noterai simplement les aspects clés qui me paraissaient importants ou sur lesquels je me suis coincé.

Les instructions sont bonnes mais nécessitent une attention particulière aux détails. J'ai été surpris par le besoin d'un dossier ESP8266 dans un dossier qui se trouvait dans un autre dossier nommé ESP8266 et donc raté deux niveaux.

J'ai suivi la recommandation pour une configuration Arduino entièrement séparée. J'ai créé un nouveau dossier appelé "ArduinoSonoff" qui est séparé de mon dossier Arduino existant. La configuration est assez avancée et donc la garder séparée est une très bonne idée. S'il s'agit de votre première configuration Arduino, assurez-vous de l'installer une deuxième fois dans un "Arduino" ou un autre dossier pour tout autre travail Arduino, y compris le travail sur ESP8266.

Téléchargez le dernier Arduino IDE à partir de https://www.arduino.cc/en/Main/Software. Décompressez le fichier dans votre nouveau dossier.

Les instructions incluent le téléchargement du système Sonoff-Tasmoda à partir de la page principale https://github.com/arendst/Sonoff-Tasmota via: Clone ou Download>Download ZIP. Décompressez le fichier dans votre nouveau dossier.

Suivez attentivement les instructions. Je n'ai pas fait la section Facultatif: Préparer le téléchargement OTA. Nous laisserons cela pour un autre jour.

Démarrez maintenant l'IDE Arduino (double-cliquez sur arduino.exe). Chargez le sketch Sonoff-Tasmota via File>Sketchbook>sonoff. Il n'est pas nécessaire de faire des modifications. Tous les réglages sont effectués via une connexion série après le chargement du firmware. Ceux-ci sont stockés dans l'EEPROM. Ainsi, le firmware peut être mis à jour et tous les paramètres conservés. C'est un truc assez intelligent. Cependant, vous pouvez éviter quelques étapes ici en accédant au fichier user-config.h et en entrant votre SSID et mot de passe wifi et MQTT_HOST (remplacez « domus1 » – deuxième référence, par votre adresse IP Pi). Plus tard, vous souhaiterez peut-être également saisir un utilisateur et un mot de passe MQTT. Avant de télécharger, vérifiez les paramètres de la carte sous Outils. Ceux-ci auront besoin de quelques modifications pour correspondre aux exigences énoncées dans le Wiki. Cliquez maintenant sur compiler (icône de coche). Il devrait compiler OK. Si ce n'est pas le cas ou si les paramètres de carte requis ne sont pas disponibles, revenez en arrière et vérifiez chaque étape de la configuration.

Étape 6: Reprogrammation d'un commutateur Sonoff

Nous sommes maintenant prêts à télécharger. À ce stade, on peut soit aller tout droit et flasher un interrupteur Sonoff, soit d'abord flasher un module ESP8266. J'ai fait ce dernier, en partie parce que mes commutateurs n'étaient pas encore arrivés (je viens juste d'arriver au moment où je tape ceci!) Je suis conscient. J'ai quelques cartes NodeMCU. Ils sont faciles à connecter grâce à leur convertisseur USB vers série intégré. Cependant, la méthode de réinitialisation nodemcu ne fonctionne pas avec ce système. Laissez donc la méthode Outils>Réinitialiser sur "ck". Effectuez la configuration manuelle normale du flash en maintenant enfoncé le bouton Flash (GPIO 0 à la masse) tout en appuyant et en relâchant Reset (Reset à la masse). Je ne sais pas si cela a un délai d'attente ou peut-être que je n'ai pas maintenu GPIO 0 assez longtemps, mais j'ai eu besoin de plusieurs essais, y compris pendant la compilation de l'IDE Arduino!

Si vous souhaitez vérifier les réponses, la sortie relais est D6 sur les cartes NodeMCU. Sur les ESP12, il s'agit de GPIO 12. La sortie LED est D7 (NodeMCU) ou GPIO 13 (ESP12).

Interrupteur Sonoff.

ATTENTION: je dois dire « ne pas brancher sur secteur en aucun cas lorsque le boîtier est ouvert ». Notez que le PCB (au moins sur le Sonoff Basic (commutateur en ligne) n'a que des distances d'isolement simple entre la section basse tension et le secteur. Il faut donc traiter n'importe quelle partie du circuit Sonoff comme une tension secteur. Le Sonoff- Tasmota GitHub montre la connexion d'un capteur de température et d'humidité à un Sonoff S20. Je ne le ferais pas en raison de problèmes d'isolement. - donc si vous voulez faire cela, procurez-vous un module ESP12 ou NodeMCU et configurez-le séparément avec un double isolé approprié ou alimentation mise à la terre.

L'interrupteur enfichable Sonoff S20 est un bon point de départ car il ne nécessite aucun câblage secteur. Cela peut être ouvert en retirant une vis (sous le sceau de sécurité) et en soulevant le boîtier pour l'ouvrir. La photo ci-dessous montre où se trouvent les balises. Serrer le boîtier à ces points aide.

Convertisseur série USB

Mon convertisseur préféré est la version FTDI. Cependant, cela n'a pas la capacité suffisante pour répondre aux besoins de Sonoff 3.3v. La spécification FTDI indique un maximum de 50 mA. La prochaine meilleure alternative est celle utilisant la puce CP2102. Cela a cependant une limite de 100 mA qui n'est toujours pas suffisante. De toute évidence, beaucoup utilisent ce convertisseur directement, mais il existe également des rapports d'échec du chargement. Je limiterais le temps de connexion car il se réchauffera sous la charge. A vos risques et périls. La solution idéale est d'avoir également un régulateur de 3,3 V, par ex. un AMS1117 3.3. J'ai fait un petit PCB pour permettre cela. Voir Programmeur pour les appareils Sonoff.

Ma séquence de programmation est la suivante:

Ouvrez l'IDE Arduino.

Sous Outils, vérifiez que les paramètres sont comme sur le Wiki.

Apportez les modifications requises à user_config.h. J'ai défini le SSID et le mot de passe Wifi et l'adresse du courtier MQTT et les détails du fuseau horaire/heure d'été.

Cliquez sur « vérifier » pour vérifier qu'il compile correctement.

Branchez le convertisseur série USB (seul) au PC. Notez le numéro de port.

Déconnectez maintenant le câble série USB du PC et connectez-le au commutateur Sonoff. Vérifiez que la masse et les connexions 3v3 sont dans le bon sens (la masse est connectée au plan de masse sur le PCB Sonoff).

Tenez le programmateur de manière à ce que les contacts soient sécurisés tout en appuyant sur le bouton.

Branchez maintenant le câble USB sur le PC, vérifiez que le numéro de port est correct (dans Outils), puis cliquez sur Télécharger.

Je continue à maintenir le bouton enfoncé tout au long de la programmation car je ne veux pas perturber les connexions.

Une fois terminé, vous devriez voir un écran comme ci-dessous:

Image
Image

Le Sonoff a besoin de quelques informations pour se connecter à notre système: le SSID et le mot de passe wifi du réseau local, et l'adresse IP Pi. Il existe plusieurs façons de le faire, dont l'une consiste à modifier le fichier config.ino comme indiqué précédemment. Si vous avez un smartphone vous pouvez (après avoir remonté le switch) appuyer 4 fois assez rapidement sur le bouton Sonoff pour le mettre en mode serveur web. La LED clignotera. J'ai dû essayer plusieurs fois pour que cela fonctionne. Ensuite, sur votre smartphone, recherchez le nouveau réseau Sonoff et connectez-vous. Une page Web apparaîtra où vous pourrez définir les données requises. L'adresse IP Pi entre dans le nom d'hôte. J'ai également changé le deuxième SSID et le mot de passe en quelque chose de long et fondamentalement inutilisable.

Alternativement, il peut être configuré via la connexion série juste après le chargement. Ouvrez le moniteur série Arduino (sous Outils).

Commandes à saisir:

SSid votreWiFiSSID

Mot de passe votreWiFiPassword

MqttHost 192.168.x.y (adresse IP PI)

Vous pouvez également entrer SSId1 et Password1 suivis de quelque chose de long et inutilisable pour le désactiver efficacement.

Vous pouvez maintenant emballer le commutateur Sonoff, ouvrir le tableau de bord Node-Red et Node-red, cliquer sur le bouton de commutation et regarder l'onglet de débogage qui devrait maintenant inclure les réponses du Sonoff. Nous avons donc franchi une autre étape majeure - notre premier commutateur étant piloté à partir d'un PC/smartphone.

Jusqu'à présent, nous n'avons pas parlé de sécurité. Il est possible d'utiliser des communications cryptées. C'est assez complexe à mettre en place et probablement plus approprié lorsqu'un courtier basé sur le cloud est utilisé. Il existe également la possibilité d'ajouter des noms d'utilisateur et des mots de passe pour tous les appareils connectés et d'interdire les utilisateurs anonymes. C'est assez simple à mettre en place. Et donc maintenant à la sécurité.

Étape 7: Sécurité

MQTT autorise les noms d'utilisateur et les mots de passe pour chaque client. Ceci est facile à configurer. Il est probablement plus facile de renommer d'abord chaque appareil, puis de définir ses noms d'utilisateur et mots de passe. Cela peut être fait via les commandes MQTT, et Node-Red est probablement le moyen le plus simple de les envoyer. Décidez d'abord d'une convention de nommage. Une option consiste à baser les noms sur l'emplacement et la fonction. Ensuite, vous voudrez enregistrer le nom d'utilisateur (sujet) et le mot de passe avec le sujet de secours. Notez qu'il existe également une "option de réinitialisation" pour réinitialiser les paramètres de Sonoff au téléchargement d'origine (voir Utilisation du Wiki> Fonctionnalité des boutons).

Allumez le pi et après quelques secondes, ouvrez un navigateur vers Node-Red (adresse IP: 1880).

Dans Node-Red, configurez un nœud d'injection et liez-le à une sortie mqtt et définissez le serveur mqtt sur localhost. Laissez le sujet, l'utilisateur et le mot de passe vides car nous les définirons dans le nœud d'injection. Configurez également un nœud d'entrée mqtt et connectez-le à un nœud de débogage afin que nous puissions voir les réponses. Définissez la note d'entrée mqtt sur localhost (doit déjà être défini) et entrez +/+/+ pour le sujet afin qu'il capture tout le trafic.

Entrez la séquence de paramètres suivante dans le nœud d'injection.

Vérifiez d'abord la connectivité avec

Sujet: cmnd/sonoff/Statut

Message: 6

cliquez sur « Injecter une fois au démarrage ». Déployer. Nous devrions voir le débogage comprenant 7 lignes de données de stat/sonoff/STATUS6

Entrez le sujet: cmnd/sonoff/sujet et message: loungelight. Déployer. Cela change le nom du commutateur de sonoff à loungelight

L'onglet de débogage doit afficher l'appareil en train de redémarrer avec son nouveau nom/sujet

Sujet: cmnd/loungelight/MqttUser

Message: lampe de salon

Cliquez sur déployer. Un débogage devrait être vu à partir de stat/loungelight/RESULT avec {"MtqqUser":"loungelight"}

Sujet: cmnd/loungelight/MqttPassword

Message: loungelightPW (attention, soyez plus imaginatif que ça !)

Effacez l'onglet de débogage et déployez.

Une réponse devrait être vue de stat/loungelight/RESULT avec {"MqttPassword":"loungelightPW"}

Saisissez maintenant NodeRed et NodeRedPW comme nom d'utilisateur et mot de passe dans le nœud de sortie mqtt. Cela se fait via l'icône en forme de crayon du serveur et l'onglet de sécurité dans la fenêtre qui s'ouvre. Cela est automatiquement copié sur les autres nœuds MQTT.

Vérifiez à nouveau avec

Sujet: cmnd/loungelight/Status et Message: 6. Déployer.

Et que la réponse soit envoyée.

Donc, à ce stade, nous avons renommé notre appareil Sonof afin qu'il écoute les sujets cmnd/loungelight/…… et se connecte au serveur MQTT avec le nom d'utilisateur loungelight et le mot de passe loungelightPW. Nous avons également défini un nom d'utilisateur et un mot de passe pour Node-Red.

Ensuite, nous devons dire au serveur MQTT de moustique d'accepter uniquement les clients avec des noms d'utilisateur et de répertorier les noms d'utilisateur et les mots de passe à accepter.

La procédure est:

  • Arrêtez les moustiques
  • Créer son propre fichier de configuration
  • Modifier le fichier de configuration
  • Créer un fichier de mot de passe
  • Ajouter des utilisateurs/mots de passe.

Connectez-vous donc avec une nouvelle session PuTTY et exécutez les commandes suivantes:

sudo /etc/init.d/mosquitto stop

cd /etc/mosquitto/conf.d/

sudo nano mosquitto.conf Cela démarre l'éditeur.

Ajouter des lignes:

allow_anonymous faux

fichier_mot_de_passe /etc/mosquitto/conf.d/passwd

exiger_certificat faux

Enregistrez et quittez (Ctrl+X), Y, entrez.

sudo touch passwd Cela crée un fichier de mot de passe et les instructions suivantes ajoutent des noms et des mots de passe.

sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd loungelight loungelightPW

sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd NodeRed NodeRedPW

sudo /etc/init.d/mosquitpour redémarrer

Notez que lors de l'ajout d'un nouvel appareil, vous devrez soit entrer l'utilisateur et le mot de passe via le port série et les ajouter au fichier de mot de passe, soit modifier temporairement le fichier de configuration mosquitto et commenter (ajouter # au début de la ligne) les lignes "allow_anonymous false " et "password_file /etc/mosquitto/conf.d/passwd", puis réinitialisez-les lorsque les détails ont été envoyés à l'appareil et ajoutés au fichier de mot de passe comme ci-dessus.

Nous avons changé le nom de sonoff en loungelight et avons donc mis à jour le nœud de sortie mqtt (connecté au commutateur) pour utiliser le sujet cmnd/loungelight/POWER.

Cliquez sur Déployer et vérifiez que les nœuds mqtt affichent « connecté ».

Ensuite, essayez le bouton de commutation et recherchez le débogage montrant le commutateur Sonoff répondant. Vous remarquerez que l'appareil affiche le changement avec un sujet: stat/loungelight/POWER. Alors maintenant, changez le nœud d'entrée qui a été défini sur cmnd/sonoff/POWER en stat/loungelight/POWER. Nous pouvons utiliser cela pour combler une lacune dans nos fonctionnalités. Le système tel qu'il a été initialement configuré sera synchronisé avec tous les utilisateurs connectés, mais ne se synchronisera pas avec les changements de commutateur effectués en appuyant sur le bouton du commutateur Sonoff. Connectez donc maintenant la sortie du nœud d'entrée stat/loungelight/POWER mqtt à l'entrée du commutateur (LHS). Maintenant, double-cliquez sur le commutateur et décochez la case "si le message arrive en entrée, passez à la sortie". Cela fait apparaître de nouvelles options - sélectionnez « l'icône du commutateur affiche l'état de l'entrée ». Déployer. Nous avons donc maintenant une bonne boucle de rétroaction. La position de l'interrupteur du tableau de bord changera toujours lorsque l'interrupteur Sonoff change, quel que soit l'endroit où le changement a été initié.

Nous avons donc maintenant un système domotique autonome et sécurisé, opérationnel et prêt à être étendu à tout ce que vous voulez qu'il fasse. Dans la section suivante, je couvrirai certaines de mes expérimentations jusqu'à présent et les défis que je prévois de relever.

Étape 8: Étapes initiales pour l'expansion

J'ai une autre carte de développement de LED pour capteurs Sonoff-Tasmota Instructable Home Automation qui montre certaines des autres capacités du micrologiciel Sonoff-Tasmota:

Mesure de la température et de l'humidité

Détection d'intrusion (entrée de commutation)

Télécommande IR (pour les téléviseurs, etc.)

Chaînes de LED - RVB et NeoPixel (adressables individuellement)

Capteurs I2C

Pour ce qui précède, j'utilise un ESP12F et un PCB personnalisé. Un NodeMCU et une maquette pourraient également être utilisés. Cela permet ces fonctions supplémentaires sans câblage dans un appareil Sonoff, et constitue donc une approche beaucoup plus sûre. Avec l'entrée de température, j'ai pu compléter mon automatisation de couverture chauffante.

La musique et la radio Internet peuvent facilement être ajoutées. Cela ouvre des options pour que des stations ou des albums spécifiques s'allument à des heures définies ou peut-être en réponse à la détection d'un visiteur (téléphone). Cette instructable associée est à Lecteur de musique de haute qualité et Radio Internet avec contrôle de Smartphone. Étant donné que cela est également piloté par Node-RED, il devrait même être possible d'avoir plus d'un système audio et d'utiliser la communication MQTT pour les piloter.

J'ai également exploré Node-Red, y compris l'envoi d'e-mails et la création d'alertes vocales. Il est également possible que le système détecte lorsque vous entrez/sortez - en cinglant l'adresse IP de votre téléphone portable. Node-Red peut également accéder à la météo et aux actualités - on peut donc ajouter des informations ainsi que faire de l'automatisation.

Il y a quelques astuces à apprendre - mais celles-ci deviennent très faciles la deuxième fois.

Une autre possibilité consiste à ajouter un affichage au pi pour afficher le tableau de bord. C'est un "travail en cours" - ou en d'autres termes, je ne suis pas trop content. L'affichage que j'ai obtenu est difficile à faire pivoter en mode portrait et le navigateur Chromium est douloureusement lent. Une alternative serait de récupérer une vieille tablette sur ebay et de l'utiliser. Je peux essayer avec un Pi 2 et voir si cela apporte une amélioration suffisante (modèle B utilisé pour ce développement).

J'espère que cela vous aidera à démarrer et à faire vibrer votre imagination. La portée potentielle est énorme. On pourrait même modifier le code Sonoff pour d'autres capteurs si nécessaire.

Dans l'ensemble, j'ai été étonné de ce que ce système peut faire. Mon objectif initial était de simplement piloter un commutateur depuis un smartphone de manière fiable via un système autonome. J'avais eu des visions d'avoir besoin de gérer des serveurs et des clients et d'écrire du HTML pour une interface utilisateur. Là où cela a abouti, c'est bien en avance, avec une plus grande sécurité, une excellente fiabilité, une interface utilisateur fantastique, une programmation par glisser-déposer et un énorme potentiel d'expansion. Et tout cela avec beaucoup moins d'efforts.

Mike

Étape 9: Addendum - Chargement à partir de Raspbian Stretch Lite

Cette option évite le bloatware fourni avec la version complète de Raspbian Stretch. La plupart de ces éléments ne seront pas nécessaires lors de l'utilisation d'un Pi pour la domotique. Cependant, Node-Red doit être installé.

Procédez comme à l'étape 1, mais en utilisant Raspbian Stretch Lite plutôt que Raspbian Stretch.

Au lieu de l'étape 2, procédez comme suit:

sudo apt -y installer npm

npm -v devrait renvoyer: 1.4.21 ou version ultérieure

sudo npm install -g n

sudo n 8.9.0

Nous pouvons maintenant utiliser le gestionnaire de paquets de nœuds pour installer Node-Red:

sudo npm install node-red --global --unsafe-perm

Cela donnera quelques messages d'erreur en raison d'une adresse incorrecte. Le système effectue cependant une « compilation source » pour corriger ce problème. Si vous répétez les instructions ci-dessus (pas nécessaire), les erreurs ne se produisent pas.

Nous avons maintenant installé Node-Red et ses packages de support et pouvons passer à l'étape 3, en chargeant mosquitto.

Concours sans fil
Concours sans fil
Concours sans fil
Concours sans fil

Finaliste du concours sans fil

Conseillé: