Aller au contenu

Recommended Posts

Voici ma modeste première contribution.

Je sais qu'il existe déjà  des scènes, modules Jour/Nuit mais j'ai voulu aller un peu plus loin en créant un module décomposant la journée en 6 phase (+ une en cas d'erreur).

 

0 - Erreur

1 - Aube

2 - Aurore

3 - Matin

4 - Apres-Midi

5 - Crepuscule

6 - Soir

7 - Nuit

 

 

J'ai créé pour cela un module virtuel délivrant 2 variables :

  • Day_Phase           : la Phase de la journée, explicite, en texte (Créée dans le panneau de variables, en tant que variable prédéfinie contenant les 7 états ci-dessus)
  • Day_Phase_Num : le numéro de la Phase, en entier, facilitant son utilisation dans des scènes (Créée dans le panneau de variables, en tant que variable recevant le numéro de la phase)

 

Pour fonctionner, une variable supplémentaire doit être créée :

  • Day_Phase_Nuit   : Permet de fixer l'heure de basculement de l'état '6 - Soir' à  l'état '7 - Nuit'. Format HHmm. Le code gère si cette heure est avant ou après minuit....

 

Il faut donc créer ces 3 variables dans un premier temps, puis importer le module virtuel

 

A l'intérieur de ce dernier, dans le code LUA, il faut corriger l'ID du module virtuel (48 dans la version proposée) et modifier l'ID du détecteur de luminosité de référence (43 ans la version proposée).

 

 

C'est un premier jet, et des améliorations vont venir (exemple, ID du module virtuel géré en interne du code, corriger le franglais..., ajout d'une icone par phase de la journée, etc...). Je voulais quelque chose de rapidement opérationnel...

 

 

Je l'utilise actuellement avec deux petites scènes 

  • Allumage des éclairages extérieurs si Day_Phase_Num = 6
  • Extinction dans le cas contraire

Day_Phase.vfib

post-155-0-79915000-1420413703_thumb.jpg

  • Upvote 3

Partager ce message


Lien à poster
Partager sur d’autres sites

Voici la version 2

 

Ajout d'une icone par phase 

Intégration du selfID, il n'est donc plus nécessaire de corriger le code LUA pour mettre à  jour l'ID du module virtuel.

Seul l'ID du capteur de luminosité est à  renseigner (dans la section de déclaration des variables du code).

Day_Phase V2.0.vfib

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello

J'arrive pas à  le faire fonctionner chez moi, je suis tjs en phase "erreur"

 

j'ai bien crée les variables prédéfinies avec les 7 états( Erreur, Aube ...)

Les variables 'simples' avec la date nuit (2300) par exemple et la variable DAY_PHASE_NUM en laissant la valeur par defaut

j'ai modifié l'ID du capteur (N° 13 dans mon cas)

 

Mais je reste en phase 0

Partager ce message


Lien à poster
Partager sur d’autres sites

si tu vas dans le module, onglet avancé, en bas du code lue, tu vas dans debug et tu click sur start..

que te donne la fenêtre?

 

day_phase_num est automatiquement renseigné par le module

 

et les phases de la variable pré-définie sont "0 - erreur", "1 - Aube", .. et non, "Erreur", "Aube", ...

Partager ce message


Lien à poster
Partager sur d’autres sites

bon j'ai bien renommé les phases correctement.

 

en mode debug j'ai toujours 

[ERROR] 18:10:34: line 48: attempt to compare number with nil

Partager ce message


Lien à poster
Partager sur d’autres sites

il y a un problème avec la valeur numérique "Nuit" saisie

 

as tu bien sauvegardé une fois la variable "Nuit" Configurée?

 

tu as bien saisie 2300 et non 23:00 ou 23.00?

Partager ce message


Lien à poster
Partager sur d’autres sites

oui la variable est bien à  2300

 

si je click sur le bouton, l'icone change bien, mais la variable day_phase_num reste à  0 bizarre

Partager ce message


Lien à poster
Partager sur d’autres sites

Je pense que tu as déjà  vérifié, mais une erreur est si vite arrivée.

Pas d'erreur dans le nom des variables?

 

Day_Phase_Nuit

 

Day_Phase_Num

 

Day_Phase

Partager ce message


Lien à poster
Partager sur d’autres sites

hummm...

 

Le LUA serait il sensible à  la casse? toutes tes variables sont en majuscule...

 

Si ce n'est pas cela, essaye de bypasser le code en défaut pour voir, de la ligne 47 à  60

Partager ce message


Lien à poster
Partager sur d’autres sites

bon, ne cherche pas, il faut respecter la casse du nom des variables, je viens de faire le test et j'obtiens la même erreur que toi

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai remis tout en miniscule  et c'est tout bon ...

donc bon à  savoir, c'est sensible à  la casse  :)

 

merci

 

c'est 400 le seuil de LUX c'est ca ? c'est elevé pour moi car le capteur en dans une piece pas en ext.

Partager ce message


Lien à poster
Partager sur d’autres sites

oui,  je peux éventuellement sortir le seuil dans une variable... pas sur que ce soit très utile, mais pourquoi pas, ou utiliser une variable interne à  configurer en début de code, afin d'éviter de rechercher les instances du seuil

Content que cela fonctionne

Partager ce message


Lien à poster
Partager sur d’autres sites

hello, j'ai vu que ton code tourne en permanence, pour quoi pas un petit fibaro:sleep(30*1000) àla fin ?

Partager ce message


Lien à poster
Partager sur d’autres sites

oui en effet, je l'avais bien mis initialement, et , l'ai supprimé pour faire des tests en temps réel mais pas encore remis...

Partager ce message


Lien à poster
Partager sur d’autres sites

un grand merci pour cette variable. Nickel chez moi !

mes volets s'ouvrent et ser ferment impec par rapport àl'aube et soir !

sabine

Partager ce message


Lien à poster
Partager sur d’autres sites

@Nvince76

 

je vois avec le module de steven sur l'état des variables que c'est toujours la variable day_phase qui est en tete 

est ce qu'il y a pas moyen d'optimiser et de pas mettre le code dans le main loop ?

 

http://www.domotique-fibaro.fr/index.php/topic/4205-virtual-device-variables-globales/?p=62555

Partager ce message


Lien à poster
Partager sur d’autres sites

oui, certainement.

Honnêtement ces dernières semaines (mois) ont été bien chargées et je n'ai pas remis le nez dans le code.

A savoir, qu'un de mes objectifs est de le faire tourner àla minute... pas en permanence...il faut que je remette le sleep comme zozotte l'a mentionné

Partager ce message


Lien à poster
Partager sur d’autres sites

Voici la version V3.0

 

Update les variables globales uniquement sur changement.

J'ai par contre du désactiver l'initialisation des variables sur le code 0 (erreur) en début du code car sinon un changement est détecté à  chaque cycle...donc n'apporterait rien de plus

Je réintégrerai la gestion du statut d'erreur ultérieurement

Day_Phase V3.0.vfib

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

pas de changement dans cette V3 si ?

la variable est tjs mis à  jour en boucle.. en tout cas meme résultat dans le module de steven

 

le problème est sur la variable ; Day_Phase 

Partager ce message


Lien à poster
Partager sur d’autres sites

×