Aller au contenu

Gestion Des Ids En Auto


Nico

Recommended Posts

Petite réflexion et voir ce que vous en pensez :

 

Vu que le node ID des modules ne change jamais dans la base Zwave, est ce qu'on ne pourrait pas créer un système simple qui permettent de gérer en auto les ID. Je m'explique :

-On créer une variable par module dans laquelle on stock l'ID HCx du module quand on le créer avec comme comme nom de variable "NDI_xxx" ou xxx est le Node ID du module

-Dans tous les scénarios, modules virtuels, main loop, etc, on utilise uniquement ces variables au lieu de l'ID HCx

-Ensuite on créer une petite scène qu'on pourrait relancer après chaque dés-inclusion/inclusion d'un module, qui irait mettre à  jour ces variables en y mettant le nouvel ID HCx que le module aura pris, en faisant le lien par rapport à  son node ID qui lui ne change jamais dans une même HCx

 

Qu'en pensez vous ?? Ce serait top, car du coup plus obligé de tout refaire après dés-inclusion/inclusion d'un module (Pour raison x).

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Marche pas :(

 

Le Node ID est le même pour les périphérique liés. Si tu prend le Motion Sensor, tu auras Détecteur, Luminosité et Température sur le même Node ID. 

 

Il devient donc impossible de retrouvé le bon ... impossible n'étant pas français, on connait l'ordre d'inclusion de ces modules qui est toujours le même 

1: Détecteur, 2: Température, 3 : Luminosité, ...

 

Néanmoins, cela devient super compliquer :(

 

De plus, dans les scénarios, tu seras toujours obliger de noter ID value à  la main dans l'entête de ton scénario.

 

Je comprends très très bien ta requête car c'est vraiment l'horreur cette gestion des ID mais, de mon côté, je ne vois pas de solution inintéressante.

Lien vers le commentaire
Partager sur d’autres sites

Non pas de code dans les entêtes :(

 

Une réalité

--[[
%% autostart
%% properties
91 value
%% globals
--]]

 

Une utopie :)

--[[
%% autostart
%% properties
fibaro:getGlobalValue("NID_39")
%% globals
--]]

 

C'est frustrant mais on a encore de la chance, sur la Zibase quand tu fait appel, par un API, à  un scénario, tu dois lui passer son ID en paramètre ...sauf que cet ID est en réalité la position de scénario dans la liste donc si tu supprimes un scénario, l'ID de tout les suivants changent. Super pratique comme truc.

 

Exemple, tu as un scénario ID #7. Tu supprime le scénario #6 et bien ton scénario #7 est devenu #6  ... et tu n'as plus qu'à  changer tout tes appels. Ou alors tu supprimes jamais rien et tu réutilises. Mais c'est vraiment nul.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Ha !  je crois que j'ai pris le problème dans l'autre sens  ;)

 

 

L'ID n'est important que quand tu l'utilises dans un autre VD ou une scène...donc j'ai pris comme hypothèse (surtout avec la V4 qui arrive) d'anticiper les changements d'ID des modules (et aussi les variables globales)

 

J'ai un truc du style ci-dessous que je recopie 


local id = {
		PORTE_ENTREE		= 14,
		PRESENCE_ENTREE		= 89,
		LAMPE_ENTREE		= 70,
		DETECTEUR_BAL		= 15,    
		PORTE_GARAGE		= 16,
		LAMPE_GARAGE		= 7,
		PRESENCE_ESCALIER	= 84,
		FORAGE			= 31,
		PUSH			= 24,			-- VD PUSH Live Notifier générique
                FREEBOX			= 39,			-- VD Test ADSL
                WIFI_DEVICE		= 45,			-- VD Plugin FREEBOX
		METEO			= 40,			-- VD Alerte météo
    	        ZWAVE			= 41,			-- VD Test Noeuds morts
		JOURS_FERIES		= 51,			-- VD Test jour chomé
		NETATMO			= 52,			-- VD Mise à  jour Netatmo
		SONOS			= 88,			-- VD SONOS pour TTS
    	        BATTERIES		= 81,			-- VD My Batteries
		PRESENCE_PIANO		= 65,    
		LAMPE_SALON_PRISE	= 17,
		LAMPE_SALON		= 21,
		LAMPE_SALON_SUD		= 70,
  		PRESENCE_SALON		= 65,
		TEMPERATURE_SALON	= 66  
}

dans GEA par exemple (ou les gros VD) et je limite les appels transverses autant que je peux ! Donc la modif est simple car je n'utilise que des variables locales et la modif est en tête du code.

 

MAIS tu as raison c'est quand même dommage...même pourquoi ne pas rêver...un jour... de ne pas pouvoir taper directement dans la base pour changer l'ID  ;)

 

 

Tiens, en plus, j'ai crée un VD qui ré-initialise les variables globales avec toutes les adresses IP des box avec leur ID et mot de passe, etc ...que j'ai appelé "En attendant la V4" :D

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Ha !  je crois que j'ai pris le problème dans l'autre sens  ;)

 

 

L'ID n'est important que quand tu l'utilises dans un autre VD ou une scène...donc j'ai pris comme hypothèse (surtout avec la V4 qui arrive) d'anticiper les changements d'ID des modules (et aussi les variables globales)

 

J'ai un truc du style ci-dessous que je recopie 


local id = {
		PORTE_ENTREE		= 14,
		PRESENCE_ENTREE		= 89,
		LAMPE_ENTREE		= 70,
		DETECTEUR_BAL		= 15,    
		PORTE_GARAGE		= 16,
		LAMPE_GARAGE		= 7,
		PRESENCE_ESCALIER	= 84,
		FORAGE			= 31,
		PUSH			= 24,			-- VD PUSH Live Notifier générique
                FREEBOX			= 39,			-- VD Test ADSL
                WIFI_DEVICE		= 45,			-- VD Plugin FREEBOX
		METEO			= 40,			-- VD Alerte météo
    	        ZWAVE			= 41,			-- VD Test Noeuds morts
		JOURS_FERIES		= 51,			-- VD Test jour chomé
		NETATMO			= 52,			-- VD Mise à  jour Netatmo
		SONOS			= 88,			-- VD SONOS pour TTS
    	        BATTERIES		= 81,			-- VD My Batteries
		PRESENCE_PIANO		= 65,    
		LAMPE_SALON_PRISE	= 17,
		LAMPE_SALON		= 21,
		LAMPE_SALON_SUD		= 70,
  		PRESENCE_SALON		= 65,
		TEMPERATURE_SALON	= 66  
}

dans GEA par exemple (ou les gros VD) et je limite les appels transverses autant que je peux ! Donc la modif est simple car je n'utilise que des variables locales et la modif est en tête du code.

 

C'est une bonne idée, mais pourquoi ne pas stocker ça dans une variable globale, ça ne fonctionnerait pas ?

Il suffirait de faire la modif à  un seul endroit et tout serait mis à  jour.

 

edit: je me réponds à  moi même après essai, les variables globales n'ont pas l'air d'aimer les tables :-/

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...