MAM78 Posté(e) le 9 février 2017 Signaler Posté(e) le 9 février 2017 (modifié) Vacances Scolaires Je partage avec vous ma première adaptation de Virtual Device (VD) qui gère les vacances scolaires selon les différentes zones en France. Je suis parti (respect des sources) du code VD Jours Chômés de @HANSOLO et de l'initiative de @mprinfo (Vacances Scolaire De Monsieur Steven) : Source : https://www.domotique-fibaro.fr/topic/1420-jour-chã´mã©/ Source : https://www.domotique-fibaro.fr/topic/4050-vacances-scolaire-de-monsieur-steven/#comment-59240 Pour info, le code de Monsieur @Steven va traiter le fichier xml telecharge sur "http://telechargement.index-education.com/vacances.xml" et lit les données du fichier pour faire les calculs et afficher les 9 prochaines périodes de vacances scolaires en fonction de votre code département et sa zone scolaire. J'ai adapté le code pour : qu'il indique si aujourd'hui et demain sont des jours de vacances scolaires (voir variables ci-dessous) qu'il précise si le jour en cours est dans une période de vacances scalaires qu'il affiche la période en cours sur le module (la version de Steven n'affichait que les prochaines période) actualiser le VD et les variables en utilisant la scène GEA avec la commande suivante (qui simule un clic sur le bouton <Rafraichir>) Voici le tutorail, il convient : 1) de créer 3 variables globales (ou laisser le VD les créer automatiquement) : VacScolaire (contient le nombre de jours jusqu'au prochaines vacances scolaires) VacScolaireJ (contient OUI ou NON pour indiquer si aujourd'hui est un jour de vacances scolaires) VacScolaireJ1 (contient OUI ou NON pour indiquer si demain est un jour de vacances scolaires) Vous pouvez également modifier le nom de ces variables globale, notamment nécessaire si vous avez des enfants dans des zones scolaires différentes. Il convient dans ce cas de créer 2 VD avec chacun leurs variables globales. 2) Importer le module virtuel ci-dessous (Vacances_scolaires.vfib.json). 3) Indiquer dans le code du bouton "Rafraichir" votre code département pour déterminer automatiquement votre zone de vacances scolaire : departement = "78", varglobal = "VacScolaire", varglobalJ = "VacScolaireJ", varglobalJ1 = "VacScolaireJ", Dans mon cas, c'est le 78 (Yvelines) situé dans la zone C. Vous pouvez également modifier le nom des variables dans cette même partie de code. 4) Ajouter la commande ci-dessous dans les événements de votre scène GEA (sous le fonction function setEvents() et modifier l'id de votre VD. GEA.add(true, 30, "", {{"VirtualDevice", 130, 1},{"Time", "00:00", "00:01"}}) La valeur 130 ci-dessus correspond à l'id de mon VD qui est disponible dans le chemin de votre explorateur, exemple : http://192.168.0.30/fibaro/fr/devices/virtual_edit.html?id=128. 5) Modifier éventuellement l'icône fournie ci-dessous de votre VD par celle de votre choix. Depuis le bouton <Rafraichir>. Vous trouverez ci-joint le fichier module virtuel et l'icône de celui-ci. Bon usage pour les intéressés et à votre dispo. dans la limite de mes compétences en LUA. Merci aux sources pour ces partages. Sources : VD à importer : Vacances_Scolaires V1.4.vfib.json Code LUA du bouton rafraîchir : Vacances_scolaires V1.4.lua Change log : 08/01/2017 : version V1.4 (Création automatique des variables globales + Quelques petites améliorations cosmétiques) 08/01/2017 : version V1.3 (Correction de la mise à jour de la variable globale qui contient le nombre de jours jusqu'au prochaines vacances) 08/01/2017 : version V1.2 (Correction et optimisation du code, suite aux problèmes rencontrés par certaines personnes sur leur iPhone) 19/02/2017 : version V1.1 (Correction bug sur le calcul Jour de VacScolaireJ1 la veille du dernier jour des vacances scolaires) 09/02/2017 : version V1.0 (version initiale) Modifié le 9 janvier 2018 par MAM78 Correction bug sur le calcul Jour de Vacances Scolaires J+1 le dernier jour des vacances 1 5
pepite Posté(e) le 9 février 2017 Signaler Posté(e) le 9 février 2017 Bonsoir, @MAM78 Super pour ta 1ère :-), félicitations !!! 2 infos pour ton point 5 : - la ligne GEA, maintenant tu peux l'écrire comme ceci : GEA.add(true, 30, "", {{"VirtualDevice", 130, 1},{"Time", "00:00", "00:01"}}) - l'adresse que tu donnes est l'URL depuis la HC2 lorsqu'on clique sur le VD, pour avoir le json du MV : http://IPHC2/api/devices/130 dans l'exemple ;-) Allez je teste ;-) Encore MERCI
pepite Posté(e) le 9 février 2017 Signaler Posté(e) le 9 février 2017 (modifié) @MAM78, Petite question, pourquoi tous ces labels ? je fainéantise je n'ai pas regardé le code :-) OK, on oublie ma question ce sont les prochaines périodes de vacances ;-) si j'ai compris le code lol Modifié le 9 février 2017 par pepite
MAM78 Posté(e) le 9 février 2017 Auteur Signaler Posté(e) le 9 février 2017 Merci pepite, je vais intégrer ta suggestion pour GEA. Par-contre j'ai pas compris ton commentaire sur l'URL
pepite Posté(e) le 9 février 2017 Signaler Posté(e) le 9 février 2017 Pour l'URL : - celle que tu donnes est l'URL lorsqu'on clique depuis l'interface de la HC2 sur un module virtuel pour "l'ouvrir" L'URL que je donne est celle pour voir le json depuis l'API. Teste dans un navigateur ;-) tu vas voir Que fais tu avec les variables globales au fait ? tu ne mets que 0, OUI ou NON, ce que tu fais avec les labels deja. Je me trompe peut-être, mais je me demande si c'est nécessaire, juste une question, j'apprends le LUA alors je lis tous les codes pour ma culture.. Heuu parser c'est sur que c'est pas pour moi hihi
MAM78 Posté(e) le 9 février 2017 Auteur Signaler Posté(e) le 9 février 2017 J'obtiens un truc du genre (pas trop lisible) lorsque mets dans mon navigateur (http://192.168.0.30/api/devices/130) : {"id":130,"name":"Vacances scolaires","roomID":24,"type":"virtual_device","visible":true,"enabled":true,"properties":{"deviceIcon":1015,"ip":"","port":0,"currentIcon":"1015","log":"","logTemp":"","mainLoop":"","ui.Label0.value":"En vacances","ui.Label1.value":"04.02.2017 - 20.02.2017 | Vacances d'hiver","ui.Label10.value":"OUI","ui.Label11.value":"OUI","ui.Label2.value":"01.04.2017 - 18.04.2017 | Vacances de printemps","ui.Label3.value":"25.05.2017 - 28.05.2017 | Pont de l'Ascension","ui.Label4.value":"08.07.2017 - 04.09.2017 | Vacances d'été","ui.Label5.value":"21.10.2017 - 06.11.2017 | Vacances de la Toussaint","ui.Label6.value":"23.12.2017 - 08.01.2018 | Vacances de Noël","ui.Label7.value":"17.02.2018 - 05.03.2018 | Vacances d'hiver","ui.Label8.value":"14.04.2018 - 30.04.2018 | Vacances de printemps","ui.Label9.value":"07.07.2018 - 01.09.2018 | Vacances d'été","ui.LabelZone.value":"[C] Versailles","visible":"true","rows":[{"type":"button","elements":[{"id":1,"lua":true,"waitForResponse":false,"caption":"Rafraichir","name":"Button11","empty":false,"msg":"-- --------------------------------------------------------------------------------------------------------------\n-- Check that one and only one instance is in memory\n-- --------------------------------------------------------------------------------------------------------------\nif ((not Vacances) or (Vacances.errors >= 5)) then\n\n\tVacances = {\n\t\tdepartement = \"78\",\n\t\tvarglobal = \"VacScolaire\",\n \tvarglobalJ = \"VacScolaireJ\",\n \tvarglobalJ1 = \"VacScolaireJ1\",\n \t\terrors = 0\n\t}\n\n\t-- --------------------------------------------------------------------------------------------------------------\n\t-- URL\n\t-- --------------------------------------------------------------------------------------------------------------\n \tVacances.url = \"telechargement.index-education.com\"\n\n\t-- --------------------------------------------------------------------------------------------------------------\n\t-- Optenir le fichier XML\n\t-- --------------------------------------------------------------------------------------------------------------\n\tVacances.getXml = function()\n\t\tlocal URL = Net.FHttp(Vacances.url)\n\t\tresponse, status, errorCode = URL:GET(\"/vacances.xml\")\n\t\treturn Vacances.iif(response ~= nil, Vacances.newParser().ParseXmlText(response), \"\")\n\tend\n\n\t-- --------------------------------------------------------------------------------------------------------------\n\t-- Rerecher la zone par rapport au numéro de
MAM78 Posté(e) le 9 février 2017 Auteur Signaler Posté(e) le 9 février 2017 (modifié) Pour les variables. Elles me serviront pour faire des tests dans mes scènes ou dans du code LUA pour agir sur des actionneurs. Par exemple : faire varier le niveau de chauffage des chambres des enfants en fonction des jours de vacances de ces dernier. Modifié le 9 février 2017 par MAM78
pepite Posté(e) le 9 février 2017 Signaler Posté(e) le 9 février 2017 Oui tu as le json de ton MV 130, rajoute dans ton navigateur un jsonviewer ;-) ca sera lisible. Dans ce cas, tu n'as pas forcement besoin de variable globale, tu peux lire la valeur d'un label, ca evite d'avoir trop de variables globales ;-) avec l'id de ton VD et un label de ton VD local value = fibaro:getValue(130, "ui.Label0.value") fibaro:debug("Valeur de Label 0 : " ..value)
mprinfo Posté(e) le 9 février 2017 Signaler Posté(e) le 9 février 2017 Personnellement je préfère les variables globale pour plusieurs raisons elles peuvent servir de déclencheur on peut avoir la date et l'heure de la dernière modifications. Les étiquettes dans les vd pour moi servent à visualiser et parfois à stocker une valeur qui sera utilisé dans le même VDEnvoyé de mon SM-G901F en utilisant Tapatalk 1
MAM78 Posté(e) le 9 février 2017 Auteur Signaler Posté(e) le 9 février 2017 Effectivement avec un plugin c'est beaucoup plus lisible. Merci pour l'info. Faut-il encore connaitre le n° du VD !
pepite Posté(e) le 9 février 2017 Signaler Posté(e) le 9 février 2017 @mprinfo, Oui pour la dernière date de modification pour les Vas, c'est clair. Les labels peuvent aussi servir de déclencheur, cela fonctionne ;-) Pour ce qui est des valeurs stockées, les etiquettes ont la même portée que les variables globales, tu peux les récupérer de n'importe quelle scene ou VD.
mprinfo Posté(e) le 9 février 2017 Signaler Posté(e) le 9 février 2017 Oui je sais mais il faut retenir l ID du VD ou est l'étiquette trop compliqué pour moi lolEnvoyé de mon SM-G901F en utilisant Tapatalk
pepite Posté(e) le 11 février 2017 Signaler Posté(e) le 11 février 2017 Depuis que j'ai installé le VD j'ai plus de push hihi
MAM78 Posté(e) le 11 février 2017 Auteur Signaler Posté(e) le 11 février 2017 (modifié) @pepite je ne vois pas le lien avec le VD. Mais de ce que j'ai vu, ton problème est plus global Modifié le 11 février 2017 par MAM78
pepite Posté(e) le 17 février 2017 Signaler Posté(e) le 17 février 2017 Bon, ben moi toujours pas ;-) je ne comprends pas. Je vais re-essayer la version d'origine pour tester si je recois les pushs. Si oui, je ferai un diff pour diagnostic ;-)
MAM78 Posté(e) le 17 février 2017 Auteur Signaler Posté(e) le 17 février 2017 Chez-moi il fonctionne bien. Je pense qu'il doit s'agir d'un problème avec une combinaison avec un autre module virtuel ou une scène.
MAM78 Posté(e) le 19 février 2017 Auteur Signaler Posté(e) le 19 février 2017 (modifié) Vous trouverez une nouvelle version du module virtuel suite à la détection d'un bug sur le calcul de VacScolaireJ1 lorsque le jours en cours est le dernier jour des vacances scolaires en cours. Voici la nouvelle version V1.1 : Vacances_scolaires.vfib-V1.1.json Modifié le 19 février 2017 par MAM78
Sakkhho Posté(e) le 19 février 2017 Signaler Posté(e) le 19 février 2017 (modifié) tu peux poster le code, ca évite de reinclure tout le module et de rajouter une ID dans la BDD merci Modifié le 19 février 2017 par Sakkhho 1
MAM78 Posté(e) le 19 février 2017 Auteur Signaler Posté(e) le 19 février 2017 @Sakkhho c'est fait je l'ai ajouté en fin du 1er post
pepite Posté(e) le 27 février 2017 Signaler Posté(e) le 27 février 2017 Bonsoir, Mes tests du soir, je ne comprends pas. 1 - Import du VD originel de @Steven : push OK 2 - Import VD de @MAM78 (sans enlever le point 1) : push KO 3 - Copie code de MAM dans VD de Steven : push KO 4 - Suppression des VD :push OK A ne plus rien comprendre ;-)
MAM78 Posté(e) le 27 février 2017 Auteur Signaler Posté(e) le 27 février 2017 Décidément ta box n'en veux pas de mon VD. Il te faut aller bruler un siège ou aller voir un marabout
MAM78 Posté(e) le 27 février 2017 Auteur Signaler Posté(e) le 27 février 2017 (modifié) @pepite et si tu supprimes les 2 et que recrées le VD puis tu copies mon code dedans. (sans faire une importation) Modifié le 27 février 2017 par MAM78
fredokl Posté(e) le 3 janvier 2018 Signaler Posté(e) le 3 janvier 2018 Salut. Les enfants sont en vacances en ce moment mais la variable VacScolaireJ1 m'affiche toujours NON alors que ça devrait être OUI. Quelqu'un d'autre rencontre ce problème.
mprinfo Posté(e) le 3 janvier 2018 Signaler Posté(e) le 3 janvier 2018 aucun soucis chez moiEnvoyé de mon SM-G901F en utilisant Tapatalk
fredokl Posté(e) le 3 janvier 2018 Signaler Posté(e) le 3 janvier 2018 Ok. Mais voici ce que j'ai dans le debug. [DEBUG] 21:06:29: Lecture du fichier distant ... [DEBUG] 21:06:31: Recherche de la zone pour le département : 26 ... [DEBUG] 21:06:31: 26 ==> [A] Grenoble [DEBUG] 21:06:31: Index1 Deb:19.10.2013 Fin:04.11.2013 Date:03.01.2018 [DEBUG] 21:06:31: Pas en vacance demain [DEBUG] 21:06:32: Index1 Deb:21.12.2013 Fin:06.01.2014 Date:03.01.2018 [DEBUG] 21:06:32: Pas en vacance demain [DEBUG] 21:06:32: Index1 Deb:01.03.2014 Fin:17.03.2014 Date:03.01.2018 [DEBUG] 21:06:32: Pas en vacance demain [DEBUG] 21:06:32: Index1 Deb:26.04.2014 Fin:12.05.2014 Date:03.01.2018 [DEBUG] 21:06:32: Pas en vacance demain [DEBUG] 21:06:32: Index1 Deb:05.07.2014 Fin:02.09.2014 Date:03.01.2018 [DEBUG] 21:06:32: Pas en vacance demain [DEBUG] 21:06:32: Index1 Deb:18.10.2014 Fin:03.11.2014 Date:03.01.2018 [DEBUG] 21:06:32: Pas en vacance demain C'est bien pris en compte que nous sommes sur une période de vacances mais ça affiche quand que "Pas de vacance demain". Pourtant je n'ai rien touché.
Messages recommandés