Aujourd’hui nous allons créer un petit Module Virtuel sur Fibaro Home Center 2, qui permettra d’interagir et de gérer facilement votre stock de granulés, ainsi que les dates d’entretien de votre poêle avec la GSG.
Pour ceux qui ne connaissent pas, la GSG est une interface écrite en PHP qui permet de gérer le stock de granulés et l’entretien de son poêle a bois. Elle peut être gérée directement par son interface web ou via différentes box domotiques ou tablettes / smartphones.
Pour une présentation détaillée et/ou l’installation de GSB, je vous invite à regarder ici.
Nous allons procéder maintenant à la création de notre module.
Je voudrais que mon module m’informe de :
- Mon stock actuel
- Mon stock initial
- Cout de mon stock initial
- Cout de stock actuel
- Date de prochain nettoyage
- Date d’entretien mensuel
- Date d’entretien annuel
– Je veux également que ma HC2 m’envoie une notification Push des dates de nettoyage et d’entretiens.
– Je veux également pouvoir indiquer que j’ai consommer un sac de granulé et modifier les dates dans GSG via la HC2.
En effet, à chaque fois que j’ajoute un sac dans mon poêle j’actionne un dispositif qui lui, indique au système qu’un sac a été consommé.
Voilà à quoi ça doit ressembler :
L’avantage de la GSG c’est qu’elle utilise les API Http pour l’enregistrement des données et JSON pour le retour d’informations.
Pour indiquer au systeme que nous avons consommé un sac de granulé :
http://adresse_de_votre _hebergement /gsg/data_granulee.php?value=1
Pour modifier la date d’entretien / nettoyage régulier:
Incrémente de 4 jours
http://adresse_de_votre _hebergement /gsg/data_granulee.php?value=2
Incrémente de X jours
http://adresse_de_votre _hebergement /gsg/data_granulee.php?value=2&dmy=X
Pour modifier la date d’entretien / nettoyage mensuel:
Incrémente de 1 mois
http://adresse_de_votre _hebergement /gsg/data_granulee.php?value=3
Incrémente de X mois
http://adresse_de_votre _hebergement /gsg/data_granulee.php?value=3&dmy=X
Pour modifier la date d’entretien / nettoyage annuel:
Incrémente de 1 an
http://adresse_de_votre _hebergement /gsg/data_granulee.php?value=4
Incrémente de X an(s)
http://adresse_de_votre _hebergement /gsg/data_granulee.php?value=4&dmy=X
Pour extraire les données:
http://adresse_de_votre _hebergement /gsg/config/json.php?json=1
Explication:
{
« Soft »: »Gestion Granul\u00e9s », -> Titre de Soft
« Auteur »: »R.Syrek », -> Auteur
« Site »: »Domotique-Home.fr », -> Site
« date »:1420394173, -> Date de création de Json
« StockIni »: »255?, -> Stock Initial
« PrixSac »: »3.45?, -> Prix de sac
« NbrSacConso »:70, -> Nombre Total de sac consommés
« NbrMoisPariode »:4, -> Nombre de mois dans la période utilisation
« Janvier »:3, -> Nombre de sac consommés en Janvier
« Fevrier »:0, -> Nombre de sac consommés en Février etc…
« Mars »:0,
« Avril »:0,
« Mai »:0,
« Juin »:0,
« Jullet »:0,
« Aout »:0,
« Septembre »:0,
« Octobre »:9,
« Novembre »:22,
« Decembre »:36,
« er »: »2015-01-07?, -> Date d’entretien régulier
« em »: »2015-01-07?, -> Date d’entretien mensuel
« ea »: »2015-09-01? -> Date d’entretien annuel
}
Pour la consommation d’un sac ajouter un bouton
Puis insérer le code suivant :
1 2 3 4 5 | local updatechart = Net.FHttp(‘adresse_de_votre _hebergement’) payload = "/gsg/data_granulee.php?value=1"; fibaro:debug(payload) response, status, errorCode = updatechart:GET(payload); fibaro:log('Pelets uploaded'); |
Pour la modification des dates de nettoyage et d’entretien ajouter 3 boutons :
Puis insérer le code suivant pour l’incrémentation de la date d’entretien de 4 jours :
1 2 3 4 5 | local updatechart = Net.FHttp(‘adresse_de_votre _hebergement’) payload = "/gsg/data_granulee.php?value=2"; fibaro:debug(payload) response, status, errorCode = updatechart:GET(payload); fibaro:log('Pelets uploaded'); |
Pour l’incrémentation de la date d’entretien mensuel d’un mois :
1 2 3 4 5 | local updatechart = Net.FHttp(‘adresse_de_votre _hebergement’) payload = "/gsg/data_granulee.php?value=3"; fibaro:debug(payload) response, status, errorCode = updatechart:GET(payload); fibaro:log('Pelets uploaded'); |
Pour l’incrémentation de la date d’entretien annuel d’un an :
1 2 3 4 5 | local updatechart = Net.FHttp(‘adresse_de_votre _hebergement’) payload = "/gsg/data_granulee.php?value=4"; fibaro:debug(payload) response, status, errorCode = updatechart:GET(payload); fibaro:log('Pelets uploaded'); |
Maintenant pour afficher les informations désirées créer 7 champs étiquettes et nommer lès comme suit :
stockIni pour le Stock Initial
stockActuel pour Stock Actuel
coutTot pour le cout Initial
coutAct pour le cout actuel
er pour entretien régulier
em pour entretien mensuel
ea pour entretien annuel
Il faut insérer le code suivant dans la Boucle principale :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | ------------------------------------------------------ -- Gestion de stock granulés -- -- version 1.0 - novembre 2014 -- -- Auteur: R.SYREK - Rem'S -- -- Mail: rems99@gmail.com -- -- http://www.domotique-home.fr -- ------------------------------------------------------ HC2 = Net.FHttp(' adresse_de_votre _hebergement '); response ,status, errorCode = HC2:GET("/gsg/config/json.php?json=1"); local now = (os.date("%Y").."-"..os.date("%m").."-"..os.date("%d")); local resultat = json.decode(response); local PrixSac = resultat.PrixSac; local StockIni = resultat.StockIni; local NbrSacConso = resultat.NbrSacConso; local er = resultat.er; local em = resultat.em; local ea = resultat.ea; fibaro:call(fibaro:getSelfId(), "setProperty", "ui.stockIni.value", StockIni .. ' sacs'); fibaro:call(fibaro:getSelfId(), "setProperty", "ui.coutTot.value", PrixSac*StockIni .. ' €');< fibaro:call(fibaro:getSelfId(), "setProperty", "ui.stockActuel.value", StockIni-NbrSacConso .. ' sacs');< fibaro:call(fibaro:getSelfId(), "setProperty", "ui.coutAct.value", PrixSac*(StockIni-(StockIni-NbrSacConso)) .. ' €'); fibaro:call(fibaro:getSelfId(), "setProperty", "ui.er.value", er); fibaro:call(fibaro:getSelfId(), "setProperty", "ui.em.value", em); fibaro:call(fibaro:getSelfId(), "setProperty", "ui.ea.value", ea); if(er == now) then fibaro:debug('Nettoyage a prévoir'); fibaro:call(175, "sendPush", "Nettoyage Chaudière a prévoir "); end if(em == now) then fibaro:debug('Nettoyage a prévoir'); <fibaro:call(175, "sendPush", "Entretien Chaudière a prévoir "); end if(ea == now) then fibaro:debug('Nettoyage a prévoir'); fibaro:call(175, "sendPush", "Entretien Chaudière a prévoir"); end fibaro:sleep(1*60*60*1000); |
Attention, il faudra penser a changer les paramètres.
Remplacer le 175 par ID de votre appareil qui doit recevoir le Push.
Remplacer adresse_de_votre _hebergement par IP ou adresse web de votre dossier ou est installé GSG.
Vous pouvez également télécharger le Module ici.
Voila, j’espère que ce petit module virtuel vous aura plu et que vous en ferez bon usage… A bientôt sur Domotique-info.fr
18 Comments
nanne2185
Article génial et vraiment bien détaillée….
Il va surement intéresser fortement les possesseurs de poêle à granulés.
R. Syrek
Mci Anne 😉
Pascal STEPHANY
Vraiment super, un grand merci à toi de la part des utilisateurs 🙂
echlon
Merci pour cet super article très clair, j’espère pouvoir l’adapter à ma chaudière Ungaro CTU 34 avec la Zibase 2 et un module Fibaro FGS221.
R. Syrek
ça m’intéresse de développer quelque chose pour la Zibase, 😉
Pascal tu n’aurais pas une Zibase pour que je fasse mumuse 😉
si non +echelon ta chaudière se comporte comment avec le FGS221.
Tu la gères avec start/stop ?
ce n’est vraiment pas conseillé de faire arrêt/démarrage avec un granulé.
Tu peux nous donner un retour d’expériences ?
Merci
echlon
Bonjour, je ne gère pas le start/stop mais je pensais le faire au début c’est pour cela que j’avais choisi le module FGS221
par contre je gère la fonction marche et modulation plus d’explication ici : https://plus.google.com/108672858036182074062/posts/JS9ypMShjbg
Je pense utiliser xampp en attendant que tu puisses développer le module pour la Zibase. Merci encore je chercher une alternative à mon fichier Excel.
echlon
Bonjour R. Syrek suite à l’installation d’un serveur PHP (EasyPHP-DevServer-14.1VC11) j’ai une erreur dans le fichier json.php : Notice: Use of undefined constant sur tous les mois de l’année. Avez-vous une idée ? Merci
echlon
J’ai fais un test avec un tag NFC et ça marche, j’ai mis l’URL et voilà. Seule problème l’ordinateur doit-être allumé.
J’ai plus qu’a changer ma Zibase contre un Home Center !!! C’est dommage qu’on ne puisse pas héberger un script php avec une base de données sur Google Drive où sur ma Freebox. Merci encore pour ce super script.
RSyrek
Alors tu as trouvé ?
et oui il faut un serveur qui tourne, personnellement j’utilise un hébergement mutu pour le GSG et collecte de température, énergie, humidité et niveau de batterie 😉
echlon
Bonjour, toujours la même erreur : Notice: Use of undefined constant sur tous les mois de l’année, mais ça marche quand même avec un tag NFC en wifi
RSyrek
Bonsoir echlon,
Peut tu publier le message d’erreur complet
maerci
echlon
Bonsoir R. Syrek voici le message d’erreur suite à ta demande :
Notice: Undefined index: json in C:\Program Files (x86)\EasyPHP\data\localweb\gsg\config\json.php on line 9
Deprecated: mysql_pconnect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\Program Files (x86)\EasyPHP\data\localweb\gsg\config\json.php on line 11
Notice: Use of undefined constant Janvier – assumed ‘Janvier’ in C:\Program Files (x86)\EasyPHP\data\localweb\gsg\config\json.php on line 59
Notice: Use of undefined constant Fevrier – assumed ‘Fevrier’ in C:\Program Files (x86)\EasyPHP\data\localweb\gsg\config\json.php on line 60
Notice: Use of undefined constant Mars – assumed ‘Mars’ in C:\Program Files (x86)\EasyPHP\data\localweb\gsg\config\json.php on line 61
Notice: Use of undefined constant Avril – assumed ‘Avril’ in C:\Program Files (x86)\EasyPHP\data\localweb\gsg\config\json.php on line 62
Notice: Use of undefined constant Mai – assumed ‘Mai’ in C:\Program Files (x86)\EasyPHP\data\localweb\gsg\config\json.php on line 63
Notice: Use of undefined constant Juin – assumed ‘Juin’ in C:\Program Files (x86)\EasyPHP\data\localweb\gsg\config\json.php on line 64
Notice: Use of undefined constant Jullet – assumed ‘Jullet’ in C:\Program Files (x86)\EasyPHP\data\localweb\gsg\config\json.php on line 65
Notice: Use of undefined constant Aout – assumed ‘Aout’ in C:\Program Files (x86)\EasyPHP\data\localweb\gsg\config\json.php on line 66
Notice: Use of undefined constant Septembre – assumed ‘Septembre’ in C:\Program Files (x86)\EasyPHP\data\localweb\gsg\config\json.php on line 67
Notice: Use of undefined constant Octobre – assumed ‘Octobre’ in C:\Program Files (x86)\EasyPHP\data\localweb\gsg\config\json.php on line 68
Notice: Use of undefined constant Novembre – assumed ‘Novembre’ in C:\Program Files (x86)\EasyPHP\data\localweb\gsg\config\json.php on line 69
Notice: Use of undefined constant Decembre – assumed ‘Decembre’ in C:\Program Files (x86)\EasyPHP\data\localweb\gsg\config\json.php on line 70
@+
RSyrek
C’est fréquent avec EasyPHP,
Pour enlever ces Notices, trouve le fichier php.ini [quelque part dans le répertoire d’EasyPHP],
repère les lignes :
[…]
error_reporting = E_ALL
AutoStartServers=Y
AutoStartEasyPhp=N
[…]
et remplacez par :
[…]
error_reporting = E_ALL & ~E_NOTICE
AutoStartServers=Y
AutoStartEasyPhp=N
[…]
echlon
Bonjour R. Syrek c’est beaucoup mieux 12 lignes d’erreur en moins et l’apparition du camembert. Il me reste une erreur :
Deprecated: mysql_pconnect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\Program Files (x86)\EasyPHP\data\localweb\gsg\config\json.php on line 11.
Si tu connais la solution, je suis preneur.
Merci pour la réactivité.
RSyrek
Bonsoir echlon,
tu as deux possiblilitées
1 – tu désactive l’affichage des erreurs dans ton php.ini (ligne display_errors = Off)
2 – tu modifie le fichier json.php
ligne 11
$Conn = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
remplace par
$Conn = mysqli_connect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
dans la prochaine MAJ j’ai tous réécrit en PDO
echlon
Merci de ton aide mais ce soir EasyPhp ne veut plus rien savoir. Heureusement que j’ai une sauvegarde de la table ‘domotique’ car j’ai eu du mal à mettre des sacs pour le mois d’octobre, novembre et décembre.
J’ai réinstallé Xampp mais là c’est mysql qui ne démarre pas. Vive l’informatique, demain sera un autre jour.
Merci quand même et bonne soirée.
echlon
Bonsoir R. Syrek enfin réussi à faire fonctionner un serveur « WAMP » et j’ai fais les modifications que tu m’as conseillés et ça fonctionne à présent.
C’est très beau et simple d’utilisation.
Merci beaucoup.
@+
rems02R
Merci A toi 😉