Déclarations dans le fichier luup de démarrage de la Vera

Il est possible de déclarer des variables et des fonctions dans un fichier luup que la Vera lance lorsqu’elle démarre. Il est ensuite possible d’utiliser ces déclarations dans l’ensemble des scripts luup de la Vera ce qui peut être très pratique.

Le principe :

Dans l’onglet « APPS/Développer des applications », partie « Editer le démarrage Lua », vous pouvez écrire du code luup qui sera exécuté lors du lancement de la Vera (pour la prise en compte du code, appuyer sur « GO » puis « Sauver »…).

Pour ma part, j’utilise un code de ce type :

-- Definitions des Devices
--
	id_teleco = 41 --Remotec URC550
-- Ciné
	id_ecran = 5
	id_estrade = 3
	id_plafond_cine = 6
	id_porte_cine = 4
-- Cuisine
	id_led_cuisine = 44
	id_placard_cuisine = 12
-- Extérieur
	id_prise_veranda = 35
	id_veranda = 34
-- Salle de gym
	id_volet_gym = 7
-- Salle de jeux
	id_escalier_jeux = 16
	id_jeux = 29
	id_prise_escalier_jeux = 19
-- Salon
	id_salle_a_manger = 20
	id_salon = 8
	id_sam_cuisine = 38
	id_television = 11
	id_volet_jardin = 48
	id_volet_veranda = 49
-----------------------
-- Autre
	id_reveilchambreparents = 26
-- Scènes
	id_eteindre_salon= 8
	id_fermer_volets= 11
	id_ouvrir_volets= 10
-----------------------
-- Déclarations pour les types de device
	SID_SwitchPower1="urn:upnp-org:serviceId:SwitchPower1"

-----------------------
-- Fonctions
-- Fonction pour allumer id_device si éteint et inversement
function Switch_Device(id_device)
	local result = "1"
	if luup.variable_get(SID_SwitchPower1, "Status", id_device) == "1" then result="0" end
	luup.call_action(SID_SwitchPower1, "SetTarget", {newTargetValue = result}, id_device)
	return result
end

Différentes variables et fonctions y sont déclarées. Quelques explications…

Pourquoi faire ces déclarations :

Les modules :

Pour utiliser les modules en luup, il faut souvent les appeler par leur ID.

C’est le numéro après le # dans l’onglet « Paramètres » du module (6 dans l’exemple ci-dessous)

Ceci a selon moi des inconvénients ; le code est très peu lisible et si l’on remplace le module, celui-ci ayant changé d’identité, il faudra modifier toutes les scènes qui l’utilisent.

Avec une déclaration du type :

id_plafond_cine = 6

nous aurons du code luup correspondant à ceci :

luup.call_action(« urn:upnp-org:serviceId:SwitchPower1 », « SetTarget », {newTargetValue = « 1 »},id_plafond_cine)

Il est plus aisé de voir que je demande l’allumage du plafonnier de ma salle home-cinéma. Si je change de module et que celui-ci à l’ID « 208 », il suffira que je change dans ma déclaration le 6 en 208 et toutes les scènes le prendront en compte.

Les variables de la Vera :

Les déclarations peuvent servir à alléger le code car les variables de la Vera sont assez longues.

Par exemple la ligne :

SID_SwitchPower1= »urn:upnp-org:serviceId:SwitchPower1″

permet de raccourcir la commande précédente qui devient :

luup.call_action(SID_SwitchPower1, « SetTarget », {newTargetValue = « 1 »},id_plafond_cine)

Les fonctions :

L’objectif est simple. En mettant des fonctions dans le démarrage, vous pouvez les utiliser dans l’ensemble de vos scènes. La fonction Switch_Device me sert par exemple à faire changer d’état un module (qui s’allume ou s’éteint suivant le cas). J’ai aussi une fonction Push_Automator qui me permet d’envoyer un message en push à mon iphone/ipad grâce à Automator (mais j’y reviendrais dans un autre article…).

4 réflexions sur “Déclarations dans le fichier luup de démarrage de la Vera

  1. Bonsoir,

    Pensant que le script de démarrage de la vera ne s’exécute qu’a l’allumage. J’ai ajouté une fonction qui envoie un mail indiquant le retour du courant électrique. En fait je reçois plusieurs mails par jour alors que la vera est alimentée. Une idée ? Sinon comment connaitre à coup sûr le retour du courant après une coupure ?

    D’avance merci
    Jamel

    • Bonjour,
      Effectivement, le script de démarrage peut se lancer à différents moments. Par exemple, lorsque le moteur luup est redémarré. Il peut donc servir à réinitialiser une variable ou un module du moment que ce n’est pas génant de le faire plusieurs fois mais pas pour indiquer une coupure de courant.
      Certains utilisateurs ont imaginés plusieurs méthodes : Par exemple, mettre la Vera sur onduleur et lui faire surveiller une prise qui indique une consommation, demander à un NAS de lui dire s’il redémarre ou s’il est passé sur onduleur…

      • Bonjour,

        Pour la partie « coupure secteur » j’ai publié un article en septembre dans ce sens : http://www.lamaisonentique.com/?p=1425 . Je reçois bien un mail lorsqu’il y a une coupure.

        Par contre sans rien toucher sur la vera qui est en production je reçois de temps à autre un message « retour secteur » (Fonction implémentée dans le script de démarrage) sans qu’il y ait bien-sûr un message « coupure secteur » assuré par la Vera et l’onduleur.

        La Vera « rebooterait » toute seule ?

        Merci en tout cas de ta réponse.

        @+
        Jamel

      • Ton article est intéressant. (Je rajoute ton site dans mes favoris…)
        Effectivement, j’aimerais bien savoir pourquoi et quand la Vera refait des initialisations. J’ai vu sur des forums que certains se sont posé la question mais Micasaverde ne semble pas vraiment communiquer à ce sujet. Ce serait peut-être lié à un manque de mémoire et des fichiers log trop long (certains le déplacent sur usb). Il y aurait aussi la fonction de réparation du réseau (« Healing ») qui est programmé lorsque la Vera pense qu’il pourrait y avoir un problème (mais ce serait plutôt lancé pendant la nuit)…

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s