Aller au contenu

Messages recommandés

Posté(e)

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
Posté(e)

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
  • 4 semaines après...
Posté(e)

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

Posté(e)

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", ...

Posté(e)

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
Posté(e)

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?

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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.

Posté(e)

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

Posté(e)

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

  • 2 semaines après...
  • 1 mois après...
Posté(e)

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é

Posté(e)

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
Posté(e)

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 

×
×
  • Créer...