Welcome to Domotique-fibaro

 

Inscrivez-vous maintenant pour accéder à toutes nos fonctionnalités. Une fois inscrit et connecté, vous serez en mesure de contribuer à ce site en soumettant votre propre contenu ou en répondant au contenu existant. Vous serez en mesure de personnaliser votre profil, de recevoir des points de réputation comme une récompense pour la soumission de contenu, tout en communiquant avec d'autres membres via votre boîte de réception privée, et bien plus encore! Ce message sera supprimé une fois que vous vous êtes connecté.

 

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

MAM78

Vacances Scolaire De Monsieur Steven Adapté

Bonjour,

 

Je partage avec vous ma première adaptation de Module Virtuel qui gère les vacances scolaires.


Je suis parti (respect des sources) du code MV Jours Chômés de HAnsolo et de l'initiative de mprinfo (Vacances Scolaire De Monsieur Steven) :

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 et affiche la période en cours sur le module (la version de Steven n'affichait que les prochaines période)
  • actualiser le MV 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 :

  • 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)

2) d'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.

3) Importer le module virtuel ci-dessous (Vacances_scolaires.vfib.json).

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 MV.

 

GEA.add(true, 30, "", {{"VirtualDevice", 130, 1},{"Time", "00:00", "00:01"}})

 

  • La valeur 130 ci-dessus correspond à l'id de mon MV 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 MV 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. Je suis encore un Newbi.

 

Merci aux sources pour ces partages.

Vacances Scolaires.png

 

Sources :

 

 

Change log :

  • 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é par MAM78
Correction bug sur le calcul Jour de Vacances Scolaires J+1 le dernier jour des vacances
4

Partager ce message


Lien à poster
Partager sur d’autres sites

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

0

Partager ce message


Lien à poster
Partager sur d’autres sites

@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é par pepite
0

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pepite, je vais intégrer ta suggestion pour GEA.

 

Par-contre j'ai pas compris ton commentaire sur l'URL

0

Partager ce message


Lien à poster
Partager sur d’autres sites

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

0

Partager ce message


Lien à poster
Partager sur d’autres sites

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 
0

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par MAM78
0

Partager ce message


Lien à poster
Partager sur d’autres sites

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)

 

0

Partager ce message


Lien à poster
Partager sur d’autres sites

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 VD

Envoyé de mon SM-G901F en utilisant Tapatalk

1

Partager ce message


Lien à poster
Partager sur d’autres sites

Effectivement avec un plugin c'est beaucoup plus lisible. Merci pour l'info.

 

Faut-il encore connaitre le n° du VD !

0

Partager ce message


Lien à poster
Partager sur d’autres sites

@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.

0

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui je sais mais il faut retenir l ID du VD ou est l'étiquette trop compliqué pour moi lol

Envoyé de mon SM-G901F en utilisant Tapatalk

0

Partager ce message


Lien à poster
Partager sur d’autres sites

Depuis que j'ai installé le VD j'ai plus de push hihi

0

Partager ce message


Lien à poster
Partager sur d’autres sites

@pepite je ne vois pas le lien avec le VD.

 

Mais de ce que j'ai vu, ton problème est plus global ;)

Modifié par MAM78
0

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ;-)

0

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

0

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par MAM78
0

Partager ce message


Lien à poster
Partager sur d’autres sites

tu peux poster le code, ca évite de reinclure tout le module et de rajouter une ID dans la BDD

merci

Modifié par Sakkhho
1

Partager ce message


Lien à poster
Partager sur d’autres sites

@Sakkhho c'est fait je l'ai ajouté en fin du 1er post

0

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ;-)

0

Partager ce message


Lien à poster
Partager sur d’autres sites

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 

 

0

Partager ce message


Lien à poster
Partager sur d’autres sites

@pepite et si tu supprimes les 2 et que recrées le VD puis tu copies mon code dedans. (sans faire une importation) 

Modifié par MAM78
0

Partager ce message


Lien à poster
Partager sur d’autres sites