Aller au contenu

Lazer

Administrateur
  • Compteur de contenus

    25 396
  • Inscription

  • Dernière visite

  • Jours gagnés

    1 181

Tout ce qui a été posté par Lazer

  1. Lazer

    NAS Synology - Base de données

    Tu as trouvé le problème avec ton module ? Sinon, j'ai enfin publié mes scripts dans un nouveau sujet : http://www.domotique-fibaro.fr/index.php/topic/466-graphiques-de-temp%C3%A9rature-humidit%C3%A9-consommation-batterie/ La suite là bas...
  2. Si ça intéresse quelqu'un, je tenterai peut-être de faire une procédure de migration pour ceux qui ont déjàmis en œuvre les scripts donnés sur le forum de Fibaro.
  3. DomoCharts Version 5.0 Pour Fibaro Home Center 2 Sommaire : 1. Présentation 2. Pré-requis 3. Installation 3.1 Pages Web 3.2 Base de données MySQL 3.3 Virtual Device 3.4 Scène 4. Mise à jour 5. Utilisation 6. Evolutions futures 1. Présentation Notre box est géniale, il y des beaux graphiques de consommation et de température, mais il manque la possibilité de grapher toutes les autres données, et l'historique des données conservées est purgé au bout d'un certain temps. Voici donc un ensemble de scripts permettant de générer des graphiques de température, humidité, consommation, batterie, etc... de tous les devices connus du Home Center 2. J'ai repris le travail initié par Byackee sur le forum officiel de Fibaro : make your graphics automatically Voici quelques unes des améliorations apportées : Nouvelle structure de base de données (nouvelles tables, modification des tables existantes, création d'index, ...) Meilleures performances Prise en compte des valeurs suivantes : température, humidité, luminosité, batterie, consommation électrique instantanée, électrique électrique cumulée, CO2, pression atmosphérique, niveau sonore, pluie, vent (certaines données sont disponibles grâce au plugin Netatmo) La zone de graphe s'adapte automatiquement en pleine page du navigateur web Gestion des pièces de la maison, afin de différencier les sondes portant le même nom (par exemple "Thermomètre salon" et "Thermomètre chambre") sur le graphique Purge des anciennes données après 21 jours (sinon les tables grossissent trop), avec consolidation les données par jour pour une conservation longue durée dans des tables séparées Utilisation de la dernière version des bibliothèques Highcharts, Highstock, Highslide, jQuery Support complet des HC2 v3 et v4. Energie électrique cumulée (en kWh) : support des tarifs BASE et HC/HP avec configuration statique des horaires Quelques nouveautés visuelles sur les graphiques (échelle de 0 à 100% pour les batteries et humidité en pourcentage), ainsi qu'un code couleur pour les valeurs hors-normes Installation de la base de données sans utiliser phpMyAdmin grâce à un simple script En attendant les plugins utilisateurs, support de "sondes virtuelles", en fait il s'agit de valeurs stockées dans des variables globales et mises à jour via l'API (particulièrement utiles pour les utilisateurs de FHEM, Zibase, etc... pour les protocoles tels que EnOcean et Oregon) Résolution de nombreux petits bugs remontés sur le forum ou non (UTF-8, quotes, pièce 'météo', utilisation des champs adresse IP et Port du VD, etc...). Bouton "Delete" dans le popup après clic sur un point permettant de supprimer une valeur aberrante, afin de conserver une courbe homogène Meilleure gestion des erreurs, avec remonté des message autant que possible (dans le debug du VD, et/ou sur le graph) Réécriture (presque) complète du code des boutons de VD et des pages PHP d'insertion des données, avec une API qui utilise le format de données JSON. C'est beaucoup plus propre, évolutif (je m'en sert pour mes graphs de consommation d'eau et d'énergie électrique, issues d'autres source), et un gain significatif de bande passante réseau. Disponible sur Github, donc plus facile de suivre les versions, et de forker le projet : https://github.com/cdriget/DomoCharts (attention sur Github il n'y a que le code source que j'ai développé, le package complet doit être téléchargé en bas de ce tuto sur le forum) ... 2. Pré-requis Un serveur Web supportant PHP (NAS Synology, hébergement mutualisé, ...) Une base de données MySQL (Idem) Une Fibaro Home Center 2 Le package DomoCharts_V5.0.zip (disponible en bas du tutoriel) Dans le package à télécharger, vous trouverez donc : graph : Répertoire à transférer (via FTP, montage de partage réseau, ...) sur votre serveur Web DomoCharts.vfib : Device virtuel à importer dans le HC2 Scene.lua : Code source à copier/coller dans une nouvelle scène graphique_128.png : Icône pouvant être utilisée sur le Virtual Device clap_graph.png : Icône pouvant être utilisée sur la scène 3. Installation 3.0 Synology Etapes facultatives pour les utilisateurs débutants d'un NAS Synology avec DSM. Ces étapes doivent être effectuées à l'aide du compte admin via l'interface Web (accessible par défaut sur le port 5000). 3.0.1 Installation de MariaDB (MySQL) Dans le Centre de paquets, rechercher et installer MariaDB : Dès que l'installation est terminée, cliquer sur l’icône de MariaDB afin d'accéder à l'écran de configuration, puis cliquer sur le bouton Changer le mot de passe MariaDB : Par défaut, le mot de passe MariaDB est vide, cliquer alors sur le bouton Réinitialiser le mot de passe MariaDB : Confirmer en cliquant sur le bouton Oui : Le seul compte existant est root, il faut donc créer un mot de passe (note : ce compte root est différent du compte root du Syno, il est donc tout à fait possible d'avoir des mots de passes différents) : 3.0.2 Activation du serveur Web Dans le panneau de configuration, aller dans la section Services Web, puis cocher la case Activer Web Station : Accéder à la page Web par défaut sur le port 80 du Syno : Le Syno est prêt. 3.1 Pages Web Transférer toute l'arborescence du répertoire /graph sur le serveur Web via FTP ou montage réseau. Ensuite, éditer le fichier config.inc.php afin d'y modifier les paramètres de connexion à la base de données MySQL : // MySQL Server hostname or IP address $server = 'server'; // MySQL User account $login = 'login'; // MySQL User password $password = 'password'; // MySQL Database name $database = 'database'; Note : si vous utilisez le mini-tuto Synology ci-dessus, les paramètres devraient ressemble à quelques chose comme cela (seul le mot de passe doit être personnalisé) : // MySQL Server hostname or IP address $server = 'localhost'; // MySQL User account $login = 'root'; // MySQL User password $password = 'password'; // MySQL Database name $database = 'domotique'; Pour des raisons de sécurité, si vous maitrisez MySQL et phpMyAdmin, vous devez créer un utilisateur dédié (différent de root). Je ne détaille pas cette procédure qui est hors du cadre de ce tutoriel. Energie Dans le fichier config.inc.php, une rubrique concerne la configuration des horaires de l'abonnement au fournisseur d'électricité (ERDF, ...). La variable $TimeSource doit avoir la valeur 'STATIC' : //*** Teleinfo time for energy // // Variable = 'Value' // Comment : Allowed values // -------- ------- // ------------------------------------------ : --------------- $TimeSource = 'STATIC'; // Source of information for date and time : TELEINFO|STATIC // ---------------------------- // Valid only if TELEINFO TimeSource is used : --------------- $teleinfoTable = 'teleinfo'; // MySQL table name : xxxxxxxx $teleinfoDelay = 60; // Teleinfo Delay in Seconds : ss // ---------------------------- // Valid only if STATIC TimeSource is used : --------------- $TimeHCHP = array( // HC/HP start times for each EDF rate : 'hh:mm' => '<BASE|HC|HP>' '00:00' => 'HC', '06:30' => 'HP', '22:30' => 'HC' ); Sont actuellement supportés les abonnements de type Normal ('BASE'), et Heures Pleines/Heures Creuses ('HP' et 'HC'). Dans l'exemple du dessus, j'ai configuré les horaires HP de 6:30 à 22:30, et des horaires HC de 22:30 à 6:30. Notez que la variable $TimeHCHP doit obligatoirement commencer à 00:00. Vous pouvez ensuite ajouter autant de tranches horaires que nécessaires, car certains abonnements proposent 2 tranches HC réparties dans la journée. Si vous avez un abonnement Normal, c'est plus simple, puisqu'il suffit d'indiquer 'BASE' à partir de 00:00 : $TimeHCHP = array( '00:00' => 'BASE' ); Avec ces informations, le bouton Energy du module virtuel sera ensuite capable d'interroger l'API de la HC2 afin de récupérer les consommations des différentes équipements pour chaque tranche horaire de chaque journée. A l'heure actuelle, le graphique d'énergie électrique affiche la somme des kWh pour chaque journée, mais les informations nécessaires sont stockées dès aujourd'hui dans la base de données afin d'effectuer les calculs de coà»ts financiers ultérieurement. 3.2 Base de données SQL Afin de créer ou migrer les tables dans la base de données MySQL/MariaDB, il faut appeler la page /graph/install.php sur le serveur Web. Si tout se passe bien, la page se contente d'afficher Finished : Sinon, vous pouvez demander du support sur le forum, en copiant/collant le texte des messages d'erreurs. 3.3 Virtual Device Ce Virtual Device est responsable de l'envoi des données vers la base de données SQL au travers de pages Web dédiées à l'insertion des données. Dans la HC2, aller dans Modules, puis Ajouter ou supprimer un dispositif, puis dans la zone Importer un dispositif virtuel, cliquer sur Parcourir, puis sélectionner le fichier DomoCharts.vfib. Dans les propriétés de ce Virtual Device, vous pouvez changer l’icône par défaut avec le fichier graphique_128.png (à répéter pour tous les boutons du VD). Entrer l'adresse IP du serveur Web et son port : On en profite pour relever l'ID du Virtual Device dans la barre d'adresse, qui nous sera utile plus loin lors de la création de la scène : Au final, on obtient un nouveau module dans l'interface : 3.4 Scène Cette scène est responsable du déclenchement régulier des appels au Virtual Device. Dans la HC2, aller dans Scènes, puis Ajouter une scène, puis Ajouter une scène en LUA. Appelez-là DomoCharts, bien s'assurer que les cases Scène Active et Ne laissez pas l'alarme arrêter une scène tandis que l'alarme est en marche sont cochées. Utiliser l'icône fournie clap_graph.png. Dans l'onglet Avancé, copier/coller le code LUA fourni dans le fichier Scene.lua. Ne pas oublier de remplacer la valeur de la variable VirtualDeviceID par l'ID de votre Virtual Device que vous avez obtenu dans la barre d'adresse lors de la création de celui-ci. local VirtualDeviceID = 82 Au final, on obtient une nouvelle scène dans l'interface : La particularité de cette scène est d'attendre le début d'une nouvelle minute avant de commencer à entrer dans la boucle infinie. Ainsi, si on modifie la scène en plein milieu d'une minute, lorsque le HC2 redémarre immédiatement la scène, on est certain que nos actions seront exécutées à la prochaine nouvelle minute, conservant bien toujours 1 minute d'intervalle entre 2 appels au Virtual Device. De plus, différents tests vous permettent d'exécuter certaines actions une fois par minute, par heure, ou par jour. Je m'en sert pas exemple pour mettre à jour les données de mon Eco-Devices et de mon compteur d'eau (pilotés par d'autres Virtual Devices). A noter que lors du changement de jour, on attend 1 minute de plus afin d'éviter tout décalage de temps entre la HC2 et le serveur Web (important pour la génération des données consolidées par jour, car on doit être certain que le jour précédent est complètement terminé). Par défaut, je propose donc : Mise à jour des valeurs des sondes (températures, humidité, etc... ) toutes les minutes Mise à jour des consommations instantanées toutes les minutes Mise à jour des batteries une fois par jour à 23h Mise à jour des devices une fois par jour (ce qui implique que si vous ajouter une nouvelle sonde de température en journée, celle-ci ne sera visible sur les graphes qu'à partir de 0h01, bien que les données commencent à être enregistrée à la minute près où le device est ajouté dans le HC2) Consolidation et purge des données une fois par jour 3.5 Variables Globales En option, il est possible de grapher des données issues de variables globales. Cela est utile pour les données issues de sources externes, telles que des sondes Oregon sur une Zibase, des sondes EnOcean sur FHEM, etc. Les valeurs de ces variables sont alors mises à jour en Push via l'API, ou en Pull via une scène. Je ne détaille pas ces étapes qui sont hors du cadre de ce tutoriel. Il y a 2 boutons à modifier : Bouton n°1 - Sensors Modifier la variable nommée variables située en début de script. Dans cet exemple, on peut voir 2 sondes de température, et une sonde d'humidité : -- User Global Variables local variables = { { ["type"] = "temperature", ["id"] = 2001, ["name"] = "TempCuisine" }, { ["type"] = "humidity", ["id"] = 2002, ["name"] = "HumCuisine" }, { ["type"] = "temperature", ["id"] = 2003, ["name"] = "TempSalleCinema" } } Pour chaque valeur, les champs suivants sont requis : - type : le type de capteur (temperature, humidity, light, power, co2, pressure, noise, rain, wind) - id : un ID "virtuel", c'est à dire qui ne correspond à aucun device connu par la HC2. N'hésitez pas à choisir une valeur très élevée que vous n'atteindrez jamais, sous peine de conflit d'ID. - name : le nom de la variable globale créée dans le panneau Bouton n°4 - Devices De façon similaire : -- User Global Variables local variables = { { ["type"] = "temperature", ["id"] = 2001, ["name"] = "Température", ["room"] = 7 -- Cuisine }, { ["type"] = "humidity", ["id"] = 2002, ["name"] = "Humidité", ["room"] = 7 -- Cuisine }, { ["type"] = "temperature", ["id"] = 2003, ["name"] = "Température", ["room"] = 5 -- Salle cinéma } } Pour chaque valeur, les champs suivants sont requis : - type : le type de capteur => identique au bouton n°1 - id : un ID "virtuel" => identique au bouton n°1 - name : le nom du capteur qui apparaitra dans le graph - room : l'ID de la pièce dans laquelle se situe le capteur, qui s'affichera dans le graph à la suite du nom du capteur. 4. Mise à jour Pour procéder à la mise à jour, il faut : Bloquer l'exécution de la scène Graphiques LUA Importer le nouveau VD (et mettre l’icône, l'IP et le port comme indiqué plus haut) Supprimer puis retransférer le contenu du répertoire /graph sur le serveur Web, comme expliqué au paragraphe 3.1. => Attention à ne pas perdre vos paramètres dans le fichier config.inc.php. Modifier le fichier config.inc.php avec les bonnes infos pour se connecter à la DB (comme expliqué ci-dessus) Dans un navigateur Web, ouvrir la page /graph/install.php afin de préparer la base de données aux changements (comme expliqué ci-dessus) Réactiver la scène LUA Regarder le Debug des boutons du VD pour vérifier qu'il n'y a pas d'erreur Vider le cache du navigateur Au bout de quelques minutes, les graphs doivent continuer comme avant, avec les nouveaux graphs 5. Utilisation Pour visualiser les graphes, il suffit d'aller chercher avec son navigateur l'adresse du serveur Web avec le chemin "/graph", par exemple : http://192.168.1.1/graph/ . Pour l'administration, aller sur la page admin.php : http://192.168.1.1/graph/admin.php Cette page permet d'ordonner les modules, de donner une couleur à chaque courbe, et d'en cacher certains : Si une valeur aberrante apparait, il zoomer suffisamment sur le graph, puis cliquer sur le point. Dans le popup qui apparait, un bouton Delete permet de supprimer la valeur, afin de conserver une courbe homogène : 6. Evolutions futures En cas de perte de communication entre la HC2 et le NAS/Serveur Web, stockage des données en local dans une Variable Globale, jusqu'à ce que leur envoi soit possible. Cela permettra de ne pas perdre de données en cas de mise à jour/reboot/plantage du NAS, ou de la connexion Internet. Permettre à l'utilisateur de créer autant de graphs qu'il veut, en lui permettant d'attribuer un certain nombre de modules à chaque graph, avec personnalisation du graph (échelle, couleurs, taille, police, etc). Ainsi on pourra avoir un graph de la température des pièces, un autre graph de la température du matos informatique, un graph de la température en fonction de la consommation électrique du chauffage, etc.... à vous d'imaginer vos besoins ... Je suis preneur de vos suggestions ! 7. Informations complémentaires Bug si station météo Netatmo => Voir patch des butons Sensors et Devices par @Steven en page 41. Tutoriel de @Sakkhho pour ajouter les relevés du compteur de gaz NorthQ en page 44. Charts_V4.1.zip DomoCharts_V5.0.zip
  4. Lazer

    NAS Synology - Base de données

    Je pense que certains modules peuvent avoir des problèmes avec les batteries. J'ai un module ST814 dont les 3 piles AA se vident en 1 mois... clairement pas normal, alors que pour les 2 autres modules identiques je n'ai aucun problème. Je vais surement devoir le renvoyer au SAV, en espérant que ce genre de problème passe en garantie. Tu as peut-être le même genre de problème avec le FGFS101. Je note pour la variable globale ! A suivre...
  5. Lazer

    NAS Synology - Base de données

    Vous me faites douter tous les deux... Dans le script LUA, c'est la fonction fibaro:getValue(i, "value") qui permet de récupérer la température des devices, et qui est donc exécutée toutes les minutes. Je pensais que cette fonction se contente d'interroger la HC2 sur la valeur de l'information qu'elle a en mémoire. Pour la lecture de la vraie valeur de température, il me semble que ça se règle dans les paramètres avancés de chaque module. Et lorsque qu'un device envoie sa nouvelle valeur de température ou humidité, on voit un message apparaitre dans le panneau d'événement. Donc entre 2 mesures réelles (avec réveil du device et transfert d'informations sur le réseau Zwave), il me semble que la fonction fibaro:getValue(i, "value") récupère seulement le dernier état connu. De plus, quand je regarde mes courbes (mises à jour toutes les secondes donc), je vois une nette différence entre les sondes alimentées par secteur (Fibaro Universel + sondes Dallas 1wire) et celles alimentées sur piles (Everspring ST814) : - Les premières envoient le moindre changement de température au 10ième de degré près à la HC2, ce qui se traduit par des courbes très fines. - Les secondes envoient les changement de températures une fois pas heure au mieux, ou alors sur changement de température supérieur à 1°C, ce qui se traduit par des courbes en escalier. Donc je ne pense pas que mes scripts usent les piles prématurément, mais peut-être que je me trompe ?!?
  6. Lazer

    NAS Synology - Base de données

    En fait, c'est la HC2 qui interroge les devices sur batterie. Mon script se contente de récupérer l'info une fois de temps en temps et de l'envoyer dans la base MySQL. En revanche, afin de ne pas surcharger inutilement la base, j'ai prévu d'avoir un intervalle différent selon ce qu'on veut monitorer (par exemple toutes les minutes pour les températures, et seulement une fois par jour pour les batteries, car les batteries ça varie heureusement moins vite que les températures).
  7. Lazer

    NAS Synology - Base de données

    Hello, J'avance doucement, mais j'avance quand même. Pour justifier mon retard : en voulant mettre en place le monitoring du niveau des batteries, je me suis rendu compte que les scripts existants ne géraient pas qu'un device puisse avoir 2 types d'entrées différentes dans la base de données : température_sensor et battery par exemple. Donc je suis en train de modifier tout ça, et d'y ajouter également le monitoring des températures de consigne des thermostats. Je fournirai un package complet avec les tables SQL, les pages Web, et le Virtual Device. J'espère que je pourrai fournir une première version dans la semaine. Question aux admins : est-ce que ce sujet à bien sa place dans le bistrot, ou ne vaut-il pas mieux que je crée un nouveau sujet dans une autre section plus adaptée ?
  8. Oui je me doute bien que ça doit être casse pied à implémenter. Je n'ai rien trouvé qui puisse générer ces 2 ordres, à part le gros boitier Delta Dore (qui ne rentre pas dans une boite de dérivation) et son protocole X2D. Mes souvenirs d'électronique sont trop loin, mais je pense qu'un microcontrôleur comme l'Arduino doit être capable de synchroniser sur les 50Hz de la phase pour envoyer les impulsions au bon moment. Reste à trouver comment synchroniser du 220V avec la tension utilisée par l'Arduino...
  9. Intéressant. Avec un Arduino, il serait peut-être possible de générer les 2 ordres supplémentaires correspondants aux températures de confort -1° et -2° ?
  10. Comme cette histoire de correcteur automatique m'a pas mal turlupiné, j'ai cherché un peu. Alors il s'agit d'un bug avec Firefox : http://support.mozilla.org/en-US/questions/960123 http://forum.avsim.net/topic/360787-ipboard-firefox-spellcheck-fix/ Pour faire simple : sous Firefox, la correction automatique est désactivée pour certains sites (dont les formulaires basés sur le forum IP Board). Donc dans la zone de saisie, il suffit de faire click droit, puis de sélectionner "Langues", puis "Français". Et voilà ça fonctionne Désolé d'avoir accusé le site d'avoir un problème.
  11. J'ai fait le test sur 2 PC différents (Windows 7). Dans les 2 cas, ça ne fonctionne pas avec Firefox (alors que ce navigateur corrige bien le texte sur tous les autres sites), tandis que ça fonctionne très bien avec Chrome. Etrange... Bon c'est pas bien grave après tout... ça va me forcer àmigrer vers Chrome
  12. Lazer

    NAS Synology - Base de données

    En fait j'ai déployé tel quel les scripts fournis par Byackee sur le forum Fibaro. Au début ça marchait bien, mais comme la table de données grossissait trop vite, j'ai décidé d'optimiser tout ça. Donc j'ai effectué toutes les modifications sur les tables qui contenaient les données (sans rien perdre). J'ai utilisé pour cela PhpMyAdmin qui permet de modifier la structure des tables très facilement (un package existe tout prêt à déployer pour ceux qui ont un Synology). Les extraits de code que j'ai présenté plus haut sont simplement les requêtes qui permettent de créer de nouvelles tables. Mais si comme moi vous avez déjà vos scripts qui tournent, alors il faut modifier manuellement la structure des tables en s'aidant des requête que j'ai donné. Pour les newbie, je vais essayer de préparer un package, qui sera en fait le package provenant du forum Fibaro, auquel je vais apporter toutes les modifications nécessaires pour que ça soit prêt à l'emploi. Je pense que durant la semaine prochaine j'aurai suffisamment de temps.
  13. Hello, Petite suggestion : lors de la saisie d'un message, le correcteur orthographique de mon navigateur (Firefox) ne fonctionne pas (il ne surligne pas les mots). Je n'ai pas testé avec un autre navigateur, mais comme le correcteur orthographique fonctionne normalement dans toutes les autres zones de textes sur les différents sites sur lesquels je vais, alors je me dis qu'il y a peut-être un problème ici. Voilà , et merci pour ce forum très intéressant
  14. Lazer

    NAS Synology - Base de données

    Alors voici quelques nouvelles. Comme je le disais, je n'ai pas terminé, mais ça fonctionne déjà mieux comme ça. J'ai modifié la table principale qui contient les données. La table prend moins de place dans la base, et les requêtes sont plus rapides : CREATE TABLE IF NOT EXISTS `domotique_data` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `device` mediumint(9) DEFAULT NULL, `value` decimal(10,2) NOT NULL, PRIMARY KEY (`id`), KEY `device` (`device`,`time`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; Maintenant la table qui contient les devices. On note l'ajout des champs active et room_id : CREATE TABLE IF NOT EXISTS `domotique_device` ( `id` mediumint(9) NOT NULL, `name` varchar(50) DEFAULT NULL, `type` varchar(50) DEFAULT NULL, `active` tinyint(1) NOT NULL DEFAULT '1', `room_id` mediumint(9) DEFAULT NULL, PRIMARY KEY (`id`), KEY `type` (`type`,`active`,`room_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; En effet, toutes mes sondes de températures se nomment "Thermomètre" dans la Home Center 2. Donc dans les graphs, la légende était illisible. Ce champs room_id pointe vers une nouvelle table domotique_room que j'ai créé : CREATE TABLE IF NOT EXISTS `domotique_room` ( `room_id` mediumint(9) NOT NULL, `name` varchar(32) DEFAULT NULL, `section_id` mediumint(9) DEFAULT NULL, PRIMARY KEY (`room_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; Pour remplir cette table, j'ai utilisé l'outil HC2 Toolkit App de Krikroff afin d'extraire les informations sur les pièces définies dans mon HC2. Ensuite, pour afficher les informations correctes sur les graphes, j'ai modifié la requête du fichier device_get.php comme suit : $reponse = $bdd->prepare('SELECT domotique_device.id, domotique_device.name AS device_name, domotique_room.name AS room_name FROM domotique_device, domotique_room WHERE domotique_device.room_id=domotique_room.room_id AND domotique_device.type = :type AND domotique_device.active=1'); On note la condition active=1 en lien avec le champs correspondant de la table domotique_device qui permet de masquer certains devices indésirables sur les graphes. Dans le même fichier, il faut aussi modifier la ligne qui crée le label qui sera affiché dans la légende du graph : $day_array = array($donnees['id'], $donnees['device_name'].' '.$donnees['room_name']); Ca donne des courbes du style "Thermomètre Salon", "Thermomètre Chambre", etc... Pour finir, une nouvelle table domotique_data_day qui permet de synthétiser les données par jour, pour une conservation longue durée : CREATE TABLE IF NOT EXISTS `domotique_data_day` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `date` date NOT NULL, `device_id` mediumint(9) NOT NULL, `min_value` decimal(10,2) DEFAULT NULL, `avg_value` decimal(10,2) DEFAULT NULL, `max_value` decimal(10,2) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; Pour remplir la table domotique_data_day à partir de la table domotique_data, on utilise la requête suivante : INSERT INTO domotique_data_day (date, device_id, min_value, avg_value, max_value) SELECT DATE(time) AS date, device as device_id, MIN(value) AS min_value, AVG(value) AS avg_value, MAX(value) AS max_value FROM domotique_data WHERE DATE(time) > ( SELECT COALESCE(MAX(`date`), '0001-01-01') FROM domotique_data_day ) AND DATE(time) < CURDATE() GROUP BY date, device Cette requête est à exécuter tous les jours, par exemple à 00:05, juste après le commencement d'une nouvelle journée. Si on a plusieurs jours de retard, ce n'est pas grave, la requête recalculera tous les jours manquants, donc rien n'est perdu. Pour le moment je stocke mes données chez OVH donc je n'ai pas de scheduleur à disposition, mais quand je migrerai vers mon NAS, je pourrai mettre ça dans la crontab. Puis on purge les anciennes données afin que la table domotique_data ne grossisse pas trop, par exemple après 21 jours : DELETE FROM domotique_data WHERE DATE(time) < SUBDATE(CURDATE(), 21) OPTIMIZE TABLE domotique_data Notez que sur des hébergeurs mutualisés, comme OVH avec un compte Perso, la requête Optimize Table ne passe pas bien, car elle consomme beaucoup de mémoire. La première fois ça m'a crashé par table ! Donc depuis je ne l'exécute plus. Mais sur un NAS dédié, il ne devrait pas y avoir de problème. Reste à faire : les graphes permettant d'exploiter les données à long terme de la table domotique_data_day. ajouter un champs color à la table domotique_device pour forcer des couleurs personnalisées à chaque courbe. d'autres optimisations du code existant ?!?
  15. Je suis intéressé également, mais plus dans l'optique de l'alimenter par un transformateur secteur.
  16. Lazer

    NAS Synology - Base de données

    OK, bien sûr je vais partager. Làj'ai pas trop le temps, mais je reviens donner des nouvelles dès que possible.
  17. Merci, mais j'ai dépassé depuis longtemps les 14 jours... Ca fait 3 mois en fait.
  18. Salut, Au sujet du ST814... J'en ai 3, au début je les ai laissé pendant 1 semaine cote à cote, avec 2 autres détecteurs autonomes de température + humidité. Mes 3 ST814 sont OK pour la température. Par contre pour l'humidité, ils sont tous les 3 au dessus de la valeur. Pour la cave et la salle de bain ça ne me dérange pas, mais pour le salon c'est juste galère de voir une valeur plus haute de 10 à 15%. J'aurais peut-être du les renvoyer durant les 7 premiers jours, mais là c'est trop tard...
  19. Lazer

    NAS Synology - Base de données

    Salut, J'utilise depuis mi-décembre les scripts donnés dans ce lien. Pour le moment c'est hébergé sur un serveur Web mutualisé (chez OVH), et comme je rafraichis toutes les 60 secondes, ça bouffe un peu de mon upload (ADSL 3500 mètres du DSLAM, donc pas terrible). Je viens d'investir dans un HP Proliant N54L, en cours d'install et de test (ESXi, Xpenology, et autres VM diverses). Lorsque ce sera bien prêt (je fais des tests de failover/crash/reprise avant de mettre en prod), je basculerai la base de données et les scripts depuis OVH vers mon NAS. Le soucis des scripts donnés sur le forum de Fibaro, c'est que ce n'est pas optimisé du tout. Surtout au niveau de la base de données qui grossi très vite, et n'a aucun index. J'ai déjà positionné des index pour améliorer un peu les requêtes. Et comme ça ne sert à rien de garder les courbes de températures à la minute près pendant des semaines/mois/années, je suis en train de mettre en place une nouvelle table et des requêtes afin de consolider les données : chaque jour, on ne conserve que les valeurs min/moyen/max de chaque capteur. Sur le long terme ça permettra de faire des courbes de tendance, et des comparaisons années après années (oui je prévoie large). Si ça intéresse du monde, j'essaierais de développer mon travail quand ça sera plus au point.
  20. Lazer

    Nouveau ici

    L'aquarium, quand il est bien stabilisé (ça m'a pris entre 6 mois et 1 an), l'entretien devient plus espacé, donc c'est déjà beaucoup plus simple. Mon volet solaire Velux est récent, il a moins d'1 an. J'étais déjà tombé sur les 2 solutions que tu proposes... on vera ce que je met en oeuvre. Mon objectif est que ça fonctionne avant les premières grosses chaleurs de l'été (ça me laisse encore pas mal de temps vu le dernier printemps qu'on a connu sur Paris).
  21. Lazer

    Nouveau ici

    Dans un premier temps, les 2 rampes de lumière, ainsi que la pompe àair (àla place des bons vieux programmateurs mécaniques). Avec des wall-plugs, ça ira assez vite. Le filtre je ne vois pas trop comment le domotiser puisqu'il tourne 24/24. Ensuite, sur le site de Fibaro, ils font la promo des entrées analogiques du module RGBW, couplées àdes capteurs de température, PH, etc.... les sondes dont ils donnent les références ont l'air difficile àtrouver, donc il faudrait que je trouve des équivalents. Mais je n'ai pas cherché plus loin pour le moment. Bon ça reste du basique, il va falloir attendre encore un paquet d'années avant d'avoir un robot qui entretienne l'aquarium ànotre place.
  22. Bonjour, Je viens de m'inscrire sur ce forum, même si ça fait quelques semaines que je le connais (tombé dessus au travers de recherches via Google). Je crée mon compte car je vois plein de sujets très intéressants, que je vais essayer d'approfondir. J'ai acquis ma box Fibaro HC2 en novembre 2013, donc ça fera bientôt 3 mois qu'elle fonctionne (très bien !). J'a plusieurs modules Fibaro pour piloter les chauffages électriques (anciens radiants, et nouveaux à inertie et fil pilote). Je me suis également essayé à quelques dimmers pour l'éclairage. Et un volet roulant. Tout ça fonctionne très bien. J'ai par ailleurs un module GCE Electronics Eco Devices pour suivre ma consommation électrique. En projet dans les mois (ou années) à venir : - piloter toutes les lumières - piloter un volet roulant solaire Velux - récupération de l'état et des alertes de l'alarme déjà en place. - domotiser l'aquarium - arosage automatique du jardin - détecteurs de mouvement et d'ouverture des portes/fenêtres pour créer des scénarios plus intelligents (actions sur la lumière et le chauffage) - rubants LED pilotés par le module RGBW. A bientôt sur le forum.
×
×
  • Créer...