Présentation de la saga DomoMG
Liste des épisodes publiés :
EPISODE 1 - L’atelier de développement
EPISODE 2 - Installation - la class ‹ mg › - TABULATOR
EPISODE 3 - Le suivi des consommations électriques
EPISODE 4 - Le chauffage
tous les codes de DomoMG sont sur le GitHub
Bonjour à tous,
Je me propose de publier ici l’ensemble des codes PHP, JS, SQL et HTML de ma domotique.
L’idée est de faire partager mon expérience (plus de 5 ans), mes méthodes et mes outils pour permettre à ceux qui découvrent ce hobby que l’on peut monter un projet ultra complet en ne s’appuyant QUE sur un minimum de plugin (essentiellement les protocoles de comm’) et bien sur le core de Jeedom et … pas mal d’heure de travail !!! L’avantage étant de d’être le plus autonome possible et d’avoir un système le plus résilient possible.
Par exemple, le passage à la V4 / Debian10 ne m’a pris que quelques heures pour adapter quelques routines.
Tous mes codes sont documentés (à minima) et ne devraient pas poser de problème à toute personnes ayant quelques connaissances en informatique et … une certaine pugnacité !!!
Voici la liste des « épisodes » que je compte publier si vous êtes interessés :
-
Présentation des outils de développement indispensable, des méthode et des prérequis.
-
Le code de la ‹ class › d’utilitaires que j’utilise comportant une centaine d’outils : centre de messagerie centralisée (log, sms, vocal, tel, telegramme, etc…), système d’alerte, pilotage compet de de JPI, sonos, fulyKiosk, lecture d’agenda .ics (google), éphéméride solaire, etc (voir la liste ci-après).
Toutes ces fonction documente les logs automatiquement pour les rendre plus lisibles :
-
La problématique majeure de la maintenance de nos installation étant, à mon sens, le paramétrage (on manipule des centaines de paramètres, souvent commun à plusieurs programmes) il est vital d’avoir un outils permettant de les regrouper et les manipuler facilement, pour cela j’utilise un système de tableau permettant de visualiser, maintenir et modéliser facilement tous ces paramètres sans aucune programmation spécifique.
-
Avec ces prérequis on passera au vif du sujet avec un système de suivi des consommations électriques de tous vos appareillages détaillés sur les 12 derniers mois, moyenne mensuelle, coût et autres plus l’accès direct au graph de consommation et de puissance ainsi qu’un ON/OFF sur chaque équipement. Cela s’accompagnera d’un outil de suivi des HC/HP et d’une routine permettant de gérer facilement la puissance et la consommation des équipements qui ne fournissent pas ces commandes.
-
Nous passerons ensuite à la gestion des chauffages qui permet : l’autoApprentissage des caractéristiques des pièces pour avoir la température désirée à une certaine heure, la gestion de l’ouverture des portes pour économiser le chauffage/climatisation ET pour encourager à l’aération lorsque il est arrêté.
-
Un programme de gestion des « users », aussi bien présence d’humain que d’appareillage informatique sur le réseau (via téléphone, IP, MAC, routeur, Bluetooth, geofence). Dans la foulée il y aura aussi des programmes pour gérer un système d’alarme complet.
-
La gestion des lumières avec essentiellement une gestion centralisée des lumières par pièces (avec réglages proportionnel global, type d’ambiance paramétrable, extinction automatique ou baisse progressive si peu/pas d’activité, etc) et une ‹ minuterie › totalement paramétrable pour les lieux de passages ou l’extérieur.
-
Un programme de reconnaissance vocale et de pilotage de l’ENSEMBLE de votre domotique avec un MINIMUM de paramétrage (donc un minimum de galère
) qui travaille directement sur la base SQL pour interpréter vos demandes.
Reconnaissance vocale sans paramétrages … Retour d’expérience -
Pour les sportifs, un programme permettant de visualiser en temps réels vos sorties rando, jogging, vélo. Pratique pour rassurer les conjoints
-
Divers outils comme une gestion de boite aux lettres, du portier Doorbird, de la machine à laver (pour vous avertir quand elle à finie), des frigos et congélateur, etc
-
Un programme centralisant les informations météo locales (vos capteurs), de l’aéroport le plus proche (via METAR), et de météo France avec vocalisation éventuelle de la synthèse des résultats.
-
Une gestion complète du compresseur de la piscine (nombre de cycles paramétrable, durée selon la température, prévention du gel et des vents violent).
-
Une gestion complète des volets : ouverture/fermeture individualisée et proportionnelle selon la position du soleil, la saison, l’heure, le vent, la présence, etc.
Les widget visualisent en temps réel la position des volets AINSI que l’état de l’ouverture des ouvrants …
-
Enfin quelques outils de maintenance : surveillance des logs, de la machine Jeedom, de TOUS les équipements (dernière communication, batterie, etc), utilitaire de gestion ZWave, utilitaire d’export des scénarios Jeedom, gestion des snapshots VMware, sauvegarde paramètrable des tables SQL, etc …
Sans oublier une log de timeLine centralisée :
[2021-01-09 23:00:01][INFO] : Volets - Fermeture générale, time > 23:00 | Alarme | Aube.
[2021-01-09 23:00:01][INFO] : Volets - Fermeture générale des volets - groupe : Salon, Chambre, Etage.
[2021-01-10 00:00:03][INFO] : Reveil - Programmé pour 10/01/2021 08:30
[2021-01-10 00:56:52][INFO] : NuitSalon - Passage à NuitSalon (2).
[2021-01-10 01:10:35][INFO] : Informatique - Arrèt.
[2021-01-10 02:45:04][INFO] : Piscine - Arrêtée le 10/01/2021 à 02h45mn
[2021-01-10 03:30:04][INFO] : Daily - Repose des droits et maintenance OS OK.
[2021-01-10 05:01:18][INFO] : Daily - Repose des droits et maintenance OS OK.
[2021-01-10 05:01:21][INFO] : Daily - Sav tables BdD.
[2021-01-10 05:02:14][INFO] : Daily - Backup Jeedom OK.
[2021-01-10 05:15:03][INFO] : Export des Scénarios terminé.
[2021-01-10 07:08:02][INFO] : NuitExt - Passage à l'AubeExt (2).
[2021-01-10 08:19:21][INFO] : NuitExt - Passage au JourExt (0).
[2021-01-10 08:30:02][INFO] : Reveil - Lancement.
[2021-01-10 08:31:36][INFO] : Volets - Ouverture générale du matin.
[2021-01-10 08:31:36][INFO] : Volets - Ouverture générale des volets - groupe : Salon.
[2021-01-10 08:31:37][INFO] : NuitSalon - Passage à SoirSalon (1).
[2021-01-10 08:31:37][INFO] : Informatique - Remise en route.
[2021-01-10 08:45:02][INFO] : Volets - Ouverture générale des volets - groupe : Chambre.
[2021-01-10 08:45:25][INFO] : Volets - Ouverture générale des volets - groupe : Salon.
[2021-01-10 09:00:01][INFO] : Reveil - Annonce vocale.
[2021-01-10 09:06:01][INFO] : Salon : RATIO ==> Delta température : 2.4 - Durée : 02h41mn ==> RatioJour : 0.89 - NewratioMoyen : 0.64 (sur les 3 derniers jours)
[2021-01-10 09:54:01][INFO] : RdCSdB : RATIO ==> Delta température : 0.2 - Durée : 01h29mn ==> RatioJour : 0.13 - NewratioMoyen : 0.5 (sur les 3 derniers jours)
[2021-01-10 10:00:01][INFO] : Reveil - Arrêt radio SdB et Sonos.
Exemple d’export de scénario « bloc code » :
/***********************************************************************************************************************/
function VO_Volets_Jour_Nuit__29()
/***********************************************************************************************************************/
Sheduler : */5 * * * * *
Trigger (0) : #[Maison][Général][NbMvmt]# > 1
Trigger (1) : #[Maison][Général][NbPortes]# >0
Trigger (2) : #variable(NuitSalon)#
Trigger (3) : #variable(NuitExt)#
Trigger (4) : #variable(Alarme)#
Trigger (5) : #[Extérieur][Températures][VentFort]# >0
/************************************************************************************************************************
Volets Jour_Nuit - 29
************************************************************************************************************************/
include_once getRootPath() . '/mg/mg.class.php'; mg::init();
$InfLumExt = '#[Extérieur][Eclairages][Luminosité]#';
$InfLumInt = '#[Salon][Eclairages][Luminosité]#';
$infMvmtEtg = '#[Etage][Mouvements][NbMvmt]#';
$equipGeneralMaison = '#[Maison][Général]#';
$equipMvmtSalon = '#[Salon][Mouvements]#';
$EquipReveil = '#[Chambre][*Reveil chambre]#';
$equipMeteoFrance = '#[Extérieur][Températures]#';
// ******************************************** Suite du code du scénario ***********************************************
include_once getRootPath() . '/mg/VO_Volets_Jour_Nuit.php';
15 Un .js et un .css UNIQUE centralisant les codes de TOUS mes widgets (une centaine) permettant unemaintenance/évolutivité grandement facilitées. Tous ces widgets supportent une vingtaine de paramètres facultatifs, sont « multiState » c’est à dire capable d’afficher aussi si ils sont désactivés (grisé) ou hors ligne (barré).
Soit en tout une quarantaine de script PHP / 11000 lignes / 600 kO.
Tous ces programmes sont fournis EN L’ETAT, il tournent chez moi depuis des années sans soucis mais si vous désirez les utiliser il vous faudra vous en rendre maître !!!
Seuls les points 1 à 3 sont incontournables pour utiliser ces programmes (ce sont les « fondations »), les points 4 à 15 peuvent être ou ne pas être exploités sans soucis.
Dites moi ce que vous pensez du projet et si vous êtes intéressé …