Keros : Mon projet, mon matos & des infos

Décrivez votre installation de Domotique,ce que vous gérez, quels sont les points forts de votre config illustrez par des photos, partagez et faites nous envie !
Keros
Messages : 451
Enregistré le : 23 juil. 2019, 20:57

Keros : Mon projet, mon matos & des infos

Message par Keros »

Bonjour à tous,

Ça va faire bientôt faire un an que je me suis lancé dans la domotique et mon projet grossi au fur et à mesure.

Depuis longtemps, je voulais tester un Raspberry Pi. Me voilà donc dans l'aventure avec DomoticZ :D

Sommaire
Modifié en dernier par Keros le 19 juil. 2020, 22:32, modifié 19 fois.

Keros
Messages : 451
Enregistré le : 23 juil. 2019, 20:57

Keros : Ma domotique

Message par Keros »

Ma domotique

Chronologie de mon projet domotique (mise à jour au fur et à mesure).
  • Janvier 2019 - Définition du projet
Je ne me souviens plus très bien le moment où j'ai commencé à réfléchir sur mon projet mais l'idée me trottait dans la tête depuis l'été 2018 : je montais à l'étage pour ouvrir les fenêtres de toit mais ce n'était pas forcément le bon moment.
En début d'année, je ne suis lancé dans la recherche d'information : Quelle box ? Quels protocole(s) ? Quels capteurs ?
En parallèle : Qu'est ce que j'ai besoin ? Qu'est ce que je voudrais faire ? Qu'est ce que je pense vouloir faire plus tard ?

  • Mai 2019 - Lancement du projet
Finalement je suis tombé sur DomoticZ. Un petit Rapsberry Pi 3B+ et c'est parti !!

Pour démarrer mon besoin de relever de températures, je choisi de partir sur le protocole ZigBee avec l'interface Zigate en version wifi (afin d'optimiser son emplacement).

Au passage, un grand MERCI à Pipiche pour tout le travail qu'il réalise sur le plugin et sa disponibilité sur le forum.

  • Juin 2019 - Capteurs Xiaomi : Température, Inondation et Bouton
J'ai choisi de partir sur des capteurs de la marque Xiaomi Aqara pour le tarif (~10€) et leur esthétique. C'est parti avec 8 capteurs de température, 4 sondes d’inondations et 4 boutons :D

Mon premier script a été de basculer un interrupteur virtuel lorsque la température extérieur était inférieur à la température intérieurs > cela me permettait de savoir si c'était le bon moment pour ventiler.

  • Juillet 2019 - Carte relais sur GPIO
C'est bien d'avoir des infos dans DomoticZ, mais il faut aussi de pouvoir faire des actions : j'ai ajouté une carte relais sur mon Raspberry Pi. Je peux couper mon surpresseur en cas de fuite d'eau.
J'ai également domotisé la centrale de ma piscine : programmation depuis DomoticZ en fonction de la température et commande de Marche/Arret / Auto depuis un bouton Xiaomi.

  • Août 2019 - Relevé consommation électrique
J'ai ajouté un module USB pour récupérer les informations du compteur électrique. C'était sur l'ancien compteur. Depuis je suis passé au Linky et ça fonctionne toujours.

  • Septembre 2019 - Communication par SMS
J'ai mis SMS gateway ultimate sur un vieux téléphone qui reste à la maison pour avoir une action depuis l'extérieur si besoin. Plus d'infos

  • Octobre 2019 - Information météo
Ayant la possibilité de recevoir des infos par SMS, j'ai mis en place le script de papoo / deennoo pour être prévenu avant de rentrer du travail en cas de givre de lendemain. Plus d'infos
J'en ai profité pour m'envoyer la météo du jour au réveil et la météo du lendemain le soir. A l'époque c'était sur DarkSky

  • Novembre 2019 - Prises connectées
Entre temps, je me suis équipé de prise Ikéa qui sont compatible avec la Zigate. Pour une dizaine d'euros, cela fonctionne très bien.
Je me suis également lancé dans le "hacking" de Sonoff avec ESPEasy.

  • Novembre 2019 - Imprimante 3D
J'ai profité des promos du 11.11 sur AliExpress pour me lancer dans l'impression 3D : j'ai commandé une Creality Ender 3 Pro.
J'en suis super content :P

  • Décembre 2019 - RFlink
Je me suis lancé dans la fabrication d'un RFLink. Même s'il n'était pas mis à jour depuis plus de ans. Il semblait que cela allait avancer (voir ici)... Au moment où j'écris ces lignes (10 mois après) toujours pas de mises à jours depuis 2.5 ans ...
Le RFlink me sert à commander des relais achetés 3-4€ en chine.

  • Janvier 2020 - Migration sur ssd
Suite aux problèmes avec les cartes SD, j'ai migré mon raspberry pi 3 sur un disque dur M2 fixé sur un shield. Le montage est propre. Je me sers de la carte SD pour enregistrer tous les jours un backup de DomoticZ et de mon paramétrage. On ne sait jamais ...

Edit juin 2020 : J'ai bien fait d'avoir cette sauvegarde, elle m'a permis de remonter mon DomoticZ sur une nouvelle installation.
  • Mars 2020 - Fenêtre de toit FAKRO
Comme je l'ai écrit plus haut, mes sondes de température me permettent de connaitre le meilleur moment pour ouvrir mes fenêtres afin de ventiler. En été, tous les soirs, je reçois un sms me disant que je peux ouvrir mes velux.

Refaisant complètement l'isolation de mon étage, j'en ai profité pour remplacer les velux de 30 ans. Je cherchais une solution motorisée et il semblerait que le protocole de communication de Velux soit "légèrement" fermé. Plus d'infos
J'ai demandé à mon couvreur de m'installer du Fakro. Alors oui il m'a fait payer deux fois la main d’œuvre comme c'était la première fois qu'il en installait, mais ils sont commandables en Zwave. Et tant qu'a y être, j'ai pris fenêtre et volet motorisés.
Le seul problème que j'y vois est la conception du volet qui peut être détruit si il est fermé et qu'on ouvre la fenêtre. Je prévois de faire un tuto là dessus (il faut que je finalise le fonctionnement).

  • Mai 2020 - Suivi de débit internet
Suite à une baisse de débit internet, je monitore mon Ping, de download et mon upload. Au moins je pourrais voir s'il y a de nouveau une baisse de débit. J'ai fait cela avec un script sh et une tache cron alors qu'il y avait un plugin directement dans DomoticZ :? On en apprend tous les jours :D

  • Juin 2020 - Plantage complet du Rapsberry
Je faisais différents essais car ma connexion wifi n'était pas stable. J'ai passé ma Zigate en USB et pour cela, j'ai eu besoin d'un hub USB. J'en avais un vieux avec une alimentation externe (donc nickel pour le raspberry). Sauf que le Hub plantait et à générer des doucis au niveau du Raspberry.
Je me suis retrouver avec le Raspberry bloqué au boot :shock:
J'ai essayé de faire une sauvegarde complète du disque dur avant formatage, impossible :twisted:
Les données ? Pas les droits > impossible de tout récupérer :twisted:
Heureusement que j'ai Backintime qui tourne tous les jours et j'ai pu recollé le dossier domoticz et quelques config (GPIO en particulier).
En résumé : 20 heures d'enregistrements de perdu, beaucoup de temps passer.
Je vais prévoir un Raspberry avec une carte sd en secours et en plus de mon backup sur carte SD, il faut que colle ça sur mon NAS.

  • Juillet 2020 - Sécurisation des sauvegardes sur le NAS
Voilà, après avoir galérer pour avoir les droits en écriture sur le partage cifs, je suis en train de copier tout mon système sur le NAS. Il ne restera plus qu'à automatiser la tache toutes les weekend et ce sera bon :mrgreen:

  • A venir plus tard
- Continuer les travaux dans la maison :mrgreen:
- Sécurisation des backups sur le NAS Fait
- Préparer un Raspberry de secours (suite plantage juin 2020)
- Refaire mon installation domotique / informatique proprement dans une baie
- Pousser plus loin le rafraichissement / réchauffement de la maison
- Améliorer la gestion du remplissage de mes cuves
Modifié en dernier par Keros le 19 juil. 2020, 21:57, modifié 19 fois.

Keros
Messages : 451
Enregistré le : 23 juil. 2019, 20:57

Keros : Mon matériel

Message par Keros »

Mon matériel
  • DomoticZ
DomoticZ en version stable 2020.2

  • Box
Rapsberry PI 3B+ en version Buster
Montage sur SSD

  • Protocole Zigbee
Passerelle : Zigate Wifi

Équipement Xiaomi : capteurs de température, capteurs d'inondation, boutons
Équipement Ikéa : prises connectées

  • Protocole Zwave
Passerelle : Aeotec ZW090 "Z-Stick" GEN5

Équipement Fakro : Fenêtre de toit FTU-V ZWave, Volet ARM ZWave

  • Protocole 433 MHz
Passerelle : RFLink (monté complétement)

Équipement chinois : Relais sans fil 1 contact, Relais sans fil 2 contacts

  • Protocole Wifi
Équipement Sonoff : Prises flashées sous ESPEasy

  • Relaiboard
Passerelle : GPIO

  • Téléinfo compteur électrique
Passerelle : USB

  • Notification par SMS
Passerelle : SMS gateway ultimate

  • Données météo
API : Darksky et OpenWeatherMap

  • Et encore d'autre à venir :lol:
Modifié en dernier par Keros le 23 juin 2020, 01:02, modifié 7 fois.

Keros
Messages : 451
Enregistré le : 23 juil. 2019, 20:57

Keros : Ma philosophie sur le forum

Message par Keros »

Ma philosophie sur le forum

J'ai beaucoup appris sur ce forum. Je trouvais normal de passer du temps à mon tour pour partager mon expérience et essayer de guider les gens dans ce merveilleux monde de la domotique.

Ce monde est grand et complexe, en particulier quand on aborde la programmation.

Aider, ce n'est pas FAIRE à votre place !

Il serait possible de vous donner le script qui fonctionne mais quand ça ne veut pas, on peut y passer un moment voir ici

Je pense que c'est à vous de rechercher, analyser, comprendre. Je serai là pour vous aiguiller, vous pousser vers la solution mais je ne veux pas vous la donner : c'est à vous de la trouver. Et vous aurez la satisfaction d'avoir compris et d'y être arrivé ;)



Pourquoi j'écris ceci ? C'est surtout suite à ce sujet.
didi a écrit :
29 mai 2020, 11:57
Dommage que tu ne puisse daigner céder quelques lignes de code fonctionnel

Je comprends l'attente de la personne et sa "frustration" mais ça remarque fait mal. Quelques messages plus loin, Neutrino (un modérateur), est venu faire un petit rappel qui me conforte dans ma philosophie :
Neutrino a écrit :
31 mai 2020, 23:14
Juste un petit rappel.
Cela peut agacer certains, mais sur ce forum, le but est de s'entraider. Nous ne sommes pas un SAV.
Nous sommes plusieurs à participer activement, plus ou moins régulièrement, mais toujours dans une approche de faire apprendre.
Donc parfois (souvent :roll: ), comme Keros je préfère mettre sur une piste plutôt que donner la réponse directement.

On ne demande pas la Lune, surtout pas la reconnaissance, mais des efforts et du partage.
Nous seront très heureux de t'aider, mais il va falloir commencer ton script toi même et lire lire lire lire.
Il y a plein d'exemples et de documentation sur ce forum et le blog.
Tu pourras poster ton script final s'il fonctionne ou en cours de débogage pour qu'on t'aide.
Mais on ne le rédigera pas pour toi.

Les modos ici font très rarement la police car ce n'est pas nécessaire.
Ce genre de commentaire :
"Dommage que tu ne puisse daigner céder quelques lignes de code fonctionnel"
n'est pas utile.
Dispo en MP pour en discuter si besoin afin de ne pas polluer le sujet.

Soyez bienveillants envers les uns les autres ;)
D'ailleurs, il me semble que j'entends souvent cette dernière phrase ... Peut-être ?? :roll: :lol:
Modifié en dernier par Keros le 23 juin 2020, 01:02, modifié 6 fois.

Keros
Messages : 451
Enregistré le : 23 juil. 2019, 20:57

Keros : Mes tutoriels

Message par Keros »

Mes tutoriels

Liste de mes tutoriels :
Ce tutoriel explique comment récupérer les informations météo depuis l'API du site OpenWeatherMap.
  • Fenêtres et volets de toit FAKRO
En préparation ...
Modifié en dernier par Keros le 23 juin 2020, 01:02, modifié 7 fois.

Keros
Messages : 451
Enregistré le : 23 juil. 2019, 20:57

Keros : Débuter en programmation

Message par Keros »

Mes conseils pour débuter en programmation

Comme je l'ai écrit plus haut, le monde de la domotique est grand et la programmation permet de le rendre quasiment infini. Maintenant, comment commencer ?

  • En 1, il faut lire, lire et relire
Comme le disait mon prof de math en seconde :
M. Carry a écrit :"Ce n'est pas en regardant une cassette de karaté pendant 2 heures à la télé, que vous saurez faire du karaté après !
:lol:

Par où commencer alors :
C'est peut-être barbant mais beaucoup de vos questions pour débuter trouverons des réponses dans ces quatre liens.

Après, toute la documentation est dans le https://www.domoticz.com/wiki.

Il faut lire, lire et relire.

  • En 2, il faut se faire la main
Ton but est de fermer ton store quand il y a trop de vent ? (ou un autre exemple ...)

> Ne te lance pas dans le copier-coller d'un script que tu ne comprends pas. :arrow: Commence doucement :
  1. Affiche un texte "Hello world" (par exemple) dans les log de DomoticZ > tu pourras faire du débogage (petite aide : utilise la fonction Time)
  2. Créer un bouton virtuel et quand tu appuis dessus tu fais apparaitre ton texte "Hello world" dans les log > Tu auras compris comment fonctionne l’exécution ;) (petite aide : il faudra remplacer la fonction Time par D-----)
  3. Créer un deuxième bouton virtuel et commande le second à partir du premier > Tu auras fait ton premier script fonctionnel !
  4. Créer un troisième device virtuel mais du type Dimmer. Mets une condition que le second soit allumé seulement si la valeur du dimmer est supérieure à la moitié : tu auras compris la syntaxe pour faire des contritions. (petite aide : n'hésite pas à mettre des print() un peu partout pour comprendre ce qu'il se passe dans ton programme)
  5. Améliore ton dernier script pour prendre en compte le dimmer si et seulement si le premier bouton est activé.
Voilà, en 5 petites étapes, on peut commencer à avoir un programme complexe.

  • En 3, écrit ce que tu veux faire sur un papier
Ne te lance pas tout de suite à écrire ou copier du code. Ecrit d'abord avec des mots ce que tu souhaites faire : "si j’appuie sur le bouton et que la lumière est éteinte, alors j'allume la lumière sinon j'éteins la lumière".

  • En 4, regarde les exemples
La programmation est, pour moi, un ensemble de briques que l'on assemble pour arriver à construire ce dont nous avons besoin.

Je vais faire une analogie : Toutes les maisons sont différentes. Tu ne peux pas en copier une et la poser sur ton terrain : tu auras forcément des choses qui feront qu'elle sera différentes (une exposition différente, une arrivée d'eau dans une autre configuration, etc ...). Et si tu ne les adaptes pas, elle risque de ne pas fonctionner correctement.
Ces briques dont je parle, il faut comprendre ce dont elles ont besoin pour fonctionner, ce qu'elles font, et ce qu'elles donnent à la fin. Tu pourras les assembler en mettant le ciment qui va bien pour les lier entre elles.
  • En 5, trouves les briques dont tu as besoin
Cherche dans ce forum, sur le wiki, sur un moteur de recherche : quelqu'un d'autre à certainement déjà poser la question ou expliquer comment faire.
Si tu as du mal à trouver la fonction que tu as besoin, pose la question sur le forum.
Modifié en dernier par Keros le 01 août 2020, 23:21, modifié 10 fois.

Keros
Messages : 451
Enregistré le : 23 juil. 2019, 20:57

Keros : Pourquoi mon programme ne fonctionne pas ?

Message par Keros »

Mes conseils pour déboguer son programme

Le but ici est de vous donner des pistes pour que vous puissiez analyser et trouver où se trouve votre problème.

Il serait impossible de lister toutes les erreurs qu'il peut y avoir : pour donner un "a" ou un "A" peut avoir des résultats différents. Alors imaginez sur des scripts de 20, 50, 100 lignes :shock:

Je vais essayer de faire plusieurs parties :
  1. Le principe d'un programme
  2. Comment vérifier ce qu'il ce passe ?
  3. Déboguer votre programme
  4. Les pistes de recherche
  5. Résoudre le problème
Mes explications vont se baser sur le langage LUA appliqué à DomoticZ mais vous pouvez très bien les adapter pour le DZvents ou d'autres langages de programmation.


  • 1. Le principe d'un programme

Alors comment fonctionne les scripts ? Pour simplifier, il y a 4 étapes :

A - L’exécution du programme

Un programme doit être exécuter. Dans DomoticZ, il peut être lancer suite au changement d'un widget (Device), d'une variable (Variable) ou en fonction du temps (Time). (voir les différents type de script en lua sur le blog)


B - Les données d'entrées

Pour fonctionner, un programme a besoin d'avoir des informations. Cela peut-être sur quel bouton on a appuyé, quel est la valeur d'une sonde ou autre.

C - Les calculs

Avec les données d'entrées, le programme réalise des calculs. Ce n'est pas forcément des calculs au sens mathématique : cela peut-être des conditions (si la valeur de la sonde est supérieure à ...)

D - Les actions de sortie

C'est bien que le programme ait réalisé des calculs, mais encore faut il qu'il en fasse quelque chose : allumer une lampe, fermer un relai, mettre à jour une info, etc ...


  • 2. Comment vérifier ce qu'il ce passe ?

Vous l'aurez compris, un programme est une boite noire : il prend des choses en entrée, on secoue, et il en ressort quelque chose à la fin.

Sauf qu'est ce qu'il ce passe à l'intérieur ?

Pour le savoir, on réalise ce que l'on appelle le débogage. L'idée est remonté des informations au programmeur en cours d’exécution* du programme. Je mets un * car il y a une petite subtilité concernant la mise à jour des devices (j'y reviendrais plus loin).

Ces informations de débogage sont écrites dans les log de DomoticZ (Configuration / Log). Ce sont des petites lignes qui s'ajoute lorsqu'il y a une action dans DomoticZ. Et quand il y a une erreur dans un programme, il y a généralement une ou plusieurs lignes en rouge vous indiquant qu'il y a une erreur.

Le programme ne fonctionne pas ("On l'avait remarqué"), maintenant on sait qu'il y a une erreur ... Reste maintenant à comprendre pourquoi il y a une erreur.
En utilisant la commande Print("Hello world"), on peut afficher le texte Hello World dans les log. On peut également faire un print d'une variable > cela permet de savoir ce qu'elle contient. La puissance du débogage est là !!


  • 3. Déboguer votre programme

Alors pourquoi un programme ne fonctionnerait pas ?

Vous aurez compris qu'il y a quelque chose qui ne se passe pas correctement dans l'une des 4 étapes listées au dessus.

Le débogage va vous permettre de vérifier à chaque étape que votre programme contient les bonnes informations pour fonctionner.

Ma méthode pour déboguer est de partir de la fin et de remonter au début pour analyse ce qu'il se passe.

Je vais prendre l'exemple simple d'une ampoule que je cherche à allumer :

A l'endroit où j'ai mon code pour allumer la lumière, je mets un Print('Lumière allumée')

# Le texte "Lumière allumée" s'affiche dans les log > c'est la commande de mon allumage qui pose problème. Est ce que cela fonctionne manuellement depuis DomoticZ, est-ce que j'ai bien écrit ma commande ?

# Le texte "Lumière allumée" ne s'affiche pas dans les log > là le problème est au niveau du programme : la commande n'est pas atteinte. Pourquoi ? Généralement la condition n'est pas validée. Faites un Print des valeurs de la contrition et regarder avec quelles informations le programme travaille.

# Et ainsi de suite, on remonte pour analyser toutes les étapes du programme.


  • 4. Les pistes de recherche

Avec un débogage "complet", vous devrez pouvoir suivre toutes les étapes du programme dans les logs et connaitre (voir) toutes les variables.

Je vais essayer de lister les points à vérifier / contrôler :
  1. Vérifier que le programme s’exécute : un print au début et à la fin de votre script permettra de vérifier qu'il est bien exécuter dans sa totalité.
  2. Vérifier les conditions if xxxx then xxxxx else xxxx end : un print dans les conditions permet de savoir quelle partie de la condition est exécutée.
  3. La condition ne fonctionne pas correctement ? Il faut vérifier que les données de la condition sont bonnes. Un print avec la valeur de la variable avant la condition permet de savoir avec quelle information elle travaille.
  4. La valeur n'est pas bonne ? Vérifier que le nom de la variable est bonne : un espace de trop, une majuscule en plus ou en moins, un tiret différent ou maquant, etc ... Il faut exactement le même nom Quelque fois, il ne faut pas hésiter à revenir dans le device pour faire un copier/coller du nom.
  5. Vérifier que vous n'avez pas deux variables avec le même nom.
  6. Vérifier que la syntaxe des commandes est correct.
  7. Vérifier que vos conditions sont logiques (tester si X < 5 et X > 10 ne fonctionnera jamais).
  8. Vérifier que vos conditions correspondent bien aux infos retournées par les devices ("On" est différent de "Open", etc ...).
  9. Si le script est enregistré dans un fichier LUA, vérifier que le nom est du type script_device_XXX.lua ou script_time_XXX.lua ou autre en fonction du type de script (ne s'applique pas pour les scripts enregistrés dans les Évènements de DomoticZ).
  10. Si le script est enregistré dans un fichier LUA et que vous avez un problème d'exécution sur un script, essayer de dupliquer un script existant (et fonctionnel) et y mettre votre code.
Modifié en dernier par Keros le 25 juin 2020, 19:39, modifié 13 fois.

Keros
Messages : 451
Enregistré le : 23 juil. 2019, 20:57

Keros : Le blocky

Message par Keros »

Mon avis sur le Blocky

Le blocky est un langage de programmation dans Domoticz qui est ludique. Il permet de faire des choses simples sans avoir à écrire du code.

Maintenant, si votre programme commence un petit peu à ce compliqué, le blocky ressemble à ceci :

Image5.jpg
Image5.jpg (22.97 Kio) Vu 1110 fois
On perd très vite la simplicité du départ :? De plus, ce n'est pas forcément évident de déboguer le programme.

Mon avis sur le Blocky : c'est un langage très bien pour découvrir la programmation et comprendre le fonctionnement des conditions. Maintenant si votre programme sort du simple "If Then Else", commencer à regarder le LUA. Oui, c'est compliqué au début mais une fois que vous aurez compris l'idée de la syntaxe, vous pourrez faire des choses beaucoup plus poussées et complexes.

Regardez ma partie Débuter en programmation, je vous y donne quelques pistes pour commencer doucement ;)
Modifié en dernier par Keros le 23 juin 2020, 01:02, modifié 5 fois.

Keros
Messages : 451
Enregistré le : 23 juil. 2019, 20:57

Re: Keros : Mon projet et des infos

Message par Keros »

Je me réserve ce message pour y ajouter des infos.
Modifié en dernier par Keros le 18 juin 2020, 04:20, modifié 1 fois.

Keros
Messages : 451
Enregistré le : 23 juil. 2019, 20:57

Re: Keros : Mon projet et des infos

Message par Keros »

Mes sauvegardes

Mon système fonctionne sous un Raspberry Pi 3B+.

Après avoir parcouru le forum, j'ai lu qu'il y a avait des risques de défaillances des cartes SD. J'ai donc migré mon système sur un SSD. Maintenant, le SSD n'est pas infaillible et les plantages peuvent arriver :mrgreen:

Il faut donc Sauvegarder, Sauvegarder et ... Sauvegarder.

Pour cela, j'utilise le logiciel BackinTime : https://backintime.readthedocs.io Il fait des sauvegardes incrémentales et je le trouve simple d'utilisation.

Je fais deux sauvegardes :
  • Sur une carte SD - Quotidienne
Je sauvegarde tous les jours mon dossier DomoticZ sur ma carte SD.
  • Sur un NAS - Hebdomadaire
Je sauvegarde tout le contenu de mon système sur un partage CIFS de mon NAS.


Attention : je ne dis pas que c'est le meilleur moyen pour faire des sauvegardes. C'est celui que j'ai trouvé et qui me convient.
Modifié en dernier par Keros le 19 juil. 2020, 22:35, modifié 3 fois.

Répondre