Aller au contenu
Steven

Scénario Permettant De Contrôler Les Ids

Recommended Posts

@kioneoranga De rien.

 

@Berale24 et @sebcbien, J'y ai pensé mille fois et il y a une dizaine de moyen de faire cela, mais un problème persiste ... les entête. On devra toujours tapper le bon ID dans l'entête de nos scénario, perdant ainsi tout intérêt à  la centralisation des IDs.

 

@Nico Tout dépend du ° alcool que tu fourni   ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Aye aye sir :)

Pour les scènes oui, bien que certaines n'ont pas besoin de déclencheurs et idem pour les VD.

Et pour les entêtes, ton tool peut vérifier ça facilement.

Donc ça ne resouds pas tout mais une fameuse partie quand même.

Sent from my Note4

Partager ce message


Lien à poster
Partager sur d’autres sites

@Steven,

Félicitations, travail d'enfer. et ce qui m'impressionne encore plus, c'est que le code n'est pas kilométrique ...

 

Quelle est l'utilité de la variable "mostUseVariables" ? Dans mon GEA, j'utilise DeviceID (là  où beaucoup utilisent id), et le check se fait parfaitement.

Partager ce message


Lien à poster
Partager sur d’autres sites

 

 

Je pense à  une facilité comme en language C ou d'autres.

Créer un fichier unique qui contient tous les IDs des devices et on l'insert automatiquement dans les scènes.

 

Fichier du genre:

Lampe_salon = 25

VMC_cuisine = 124

 

etc ...

 

et dans les scènes il suffit d'utiliser les noms.

 

De plus, ce fichier peut être générés automatiquement, il y a déjà  des exemples sur le forum.

 

En cas de changement, on tourne la scène qui génère les Ids.

Reboot et hop !!! tout est à  jour.

 

Mais je rêve ... :6:

il faut être root pour cela....

c'est d'autant plus dommage que c'est très facile à  faire.

mais Fibaro ne souhaite pas nous simplifier la vie avec ces IDs

Partager ce message


Lien à poster
Partager sur d’autres sites

mostUseVariables regroupe une liste de variable généralement utilisé pour mapper un ID.

 

local id = X

local deviceId = X

...

 

Le script va donc toutes les analyser comme dans ton cas avec DeviceID. On peux en rajouter selon sont style de programmation. Si tu as l'habitude d'utiliser "local pureeDInvariableQuiChange = Y", tu peux l'ajouter à  la liste.

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Oh le belge !! La prochaine fois fait des icônes transparentes !! :D :D :D

Rah !! un si beau boulot de notre Steven national gâché par un mangeur de frite !!

 

:98:

Partager ce message


Lien à poster
Partager sur d’autres sites

BenjyNet,

tu n'es pas obligé de l'installer cette icône, la scène de Steven fonctionne très bien sans ...

Partager ce message


Lien à poster
Partager sur d’autres sites

Ouais mais c'est làoù l'on voit la différence entre les belges et les français... c'est que la perfectitude ne peut être autre que Française !!!

:2:

Partager ce message


Lien à poster
Partager sur d’autres sites

1) PROUT !  :P

2) Je l'ai faite sur un pc sans photoshop et en 2 minutes sur un paint un peu plus évolué, alors les transparents... 'fo pas rêver

3) SI j'ai le temps ET SI vous êtes sages, je pourrais EVENTUELLEMENT ENVISAGER de PENSER à  la POSSIBILITE de la refaire.  :2:

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Ouais mais c'est là  où l'on voit la différence entre les belges et les français... c'est que la perfectitude ne peut être autre que Française !!!

:2:

 

Perfectitude du crocodile, ça c sur  :2:

Partager ce message


Lien à poster
Partager sur d’autres sites

ça marche super bien, vu que je fait la chasse aux ID fantôme car j'ai pu constater les problèmes que cela peut apporter, je n'en ai pas mais cela m'a montré tous les ID qui n’existe plus en commentaire, c'est plus propre  ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

plus sérieusement, je ne reçois ni mail, ni notif. Pourtant ce sont les même ID que dans GEA où cela fonctionne parfaitement.

Je viens même de faire un restart de ma box (qui après 18 jours était à  34% de RAM :D )

Une idée ?

 

Voici ma config

--[[
%% autostart
--]]

-- ===========================================
-- ANALYSEUR DE CODE pour relevé les problèmes d'ID
-- ===========================================

local receivePush = true		-- true pour recevoir une notification en cas de problème éventuel
local receiveEmail = true	-- true pour recevoir le rapport d'exécution par email
local checkDisabled = false -- true pour vérifier aussi les scènes et VD désactivés

-- Tableau contenant les id des smartphones devant recevoir une notification en cas de problème
-- mettre en commentaire pour envoyer à  tous les smartphones
local portables_for_notification = {166}

-- Tableau contenant les id des utilisateurs devant recevoir un e-mail résumant
-- l'analyse
local users_for_mail = {99}

-- Va executer cette scène toutes les X heures
-- mettre cette ligne en commentaire pour désactiver
local run_every = 24

-- Tableau permettant d'ajuster les warnings à  ignorer
-- Exemple
-- {id=141}  -- tous les warning du VD ou de la scène 141 seront ignoré
-- {id=141, field="id"}  -- tous les warning du VD ou de la scène 141 seront ignoré s'il concerne une variable "id"
-- {id=141, field="id", value="2000"}  -- tous les warning du VD ou de la scène 141 seront ignoré s'il concerne une variable "id" et la valeur est 2000
local ignored = {
   {id=11, field="id_not_exist", value="100056"},
   {id=12, field="Lights_On_at_end_Simulation", value="0"},
   {id=12, field="Lights_On_if_Simulation_deactivated", value="0"},
}

-- Tableau contenant les noms de variables habituellement utilisés pour identifiant
-- un ID fibaro
local mostUseVariables = {"id", "deviceid", "device_id", "module", "identifiant", "DeviceID"}

-- Si vous avez un tableau d'ID a tester
local ids = {
	--LUA_SNIPPETS = 141, SEISMOMETRE = 8, LAMPE_CHAMBRE = 12,
-- ===========
-- Devices
-- ===========
-- SECTION : Etage
-- ROOM : Bibliothèque
FUME_BIBLIOTHEQUE = 201, LUM_BIBLIOTHEQUE = 58, PRISE_PS3 = 15, THERM_BIBLIOTHEQUE = 60, TMP_BIBLIOTHEQUE = 203, VANNE_BIBLIOTHEQUE = 219,
-- ROOM : Bureau
FUME_BUREAU = 193, LUM_BUREAU = 382, NETWORK_MONITOR = 165, PRISE_BUREAU = 5, SYNOLOGY_MONITORING = 167, THERM_BUREAU = 384, TMP_BRUEAU = 195, VANNE_BUREAU = 229,
-- ROOM : Ch Enfants
FUME_MAXIMILIEN = 209, FUME_PAULINE = 213, SONOS_MAXIMILIEN = 307, THERM_CHENFANTS = 112, TMP_MAXIMILIEN = 211, TMP_PAULINE = 215, VANNE_MAXIMILIEN = 223, VANNE_PAULINE = 217,
-- ROOM : Hall de nuit
FUME_HALLNUIT_SDB = 244, FUME_HALLNUIT_SDJ = 240, LUM_HALLNUIT_SDB = 9, LUM_HALLNUIT_SDJ = 7, MVT_HALLNUIT_SDB = 342, MVT_HALLNUIT_SDJ = 26, TMP_HALLNUIT_SDJ = 242,
-- ROOM : Salle de jeux
FUME_SDJ = 197, THERM_SDJ = 298, TMP_SDJ = 199, VANNE_SDJ = 231,
-- ROOM : SdB Etage
FUME_SDBETAGE = 205, LUM_SDBETAGE = 11, THERM_SDBETAGE = 108, TMP_SDBETAGE = 207, VMC_ETAGE = 13, VANNE_RADIATEUR = 227, VANNE_SECHESERVIETTE = 225,

-- SECTION : Extérieur
-- ROOM : Avant
BOUTON_BARRIERE = 189, BOUTON_GACHE = 191, COURRIER = 312, IN2_RGBW = 32, IN3_RGBW = 33, IN4_RGBW = 34, IPCAM_AVANT = 291, LUM_AVANT = 50, MVT_EST_AVANT = 39, MVT_OUEST_AVANT = 20, NIVEAU_EAU_PLUIE = 31, PRISE_AVANT = 64, SONNETTE = 46, STAT_BARRIERE = 290, SURVSTATION_AVANT = 292,
-- ROOM : Jardin
IPCAM_JARDIN = 288, LUM_JARDIN = 369, LUM_TERREST = 106, LUM_TERROUEST = 296, LUM_TERRPAR = 110, LUM_TERRSUD = 370, MVT_EST_JARDIN = 40, MVT_OUEST_JARDIN = 21, PISCCHAUF = 70, PISCPMP = 68, SURVSTATION_JARDIN = 289, TMP_EXTERIEURE = 129, TMP_PISCINE = 154,

-- SECTION : Rez de chaussée
-- ROOM : Ch Parents
SONOS_PARENTS = 343,
-- ROOM : Cuisine
LUM_CUISINE = 375, LUM_CUISINETABLE = 376, SONOS_CUISINE = 352,
-- ROOM : Garage
ALARME_ACTIVE = 128, ALARME_INTRUSION = 127, BOUTON_GA = 104, BOUTON_GV = 102, FUME_GARAGE = 283, PRISE_MODEM = 187, RESTART_MODEM = 371, STAT_GAR_ANNABELLE = 286, STAT_GAR_VINCENT = 287, TMP_FREZE = 353, TMP_GARAGE = 285,
-- ROOM : Hall d'entrée
FUME_HALLENTRE_C = 248, FUME_HALLENTRE_S = 252, LUM_HALLENTRE = 44, LUX_HALLENTRE_S = 184, MVT_HALLENTRE_C = 177, MVT_HALLENTRE_S = 182, TMP_HALLENTRE_S = 254,
-- ROOM : Salon
ARROSAGE_PLANTES = 118, IPCAM_LIVING = 120, LUM_PETITSALON = 264, LUM_SALLEMANGER = 262, LUM_SALONTV = 258, LUM_VITRINE = 260, NEST_HUMIDITY = 117, NEST_TEMPERATURE = 116, NEST_THERMOSTAT = 115, PORTE_COULISS = 256, PRISE_PETITSALON = 62, PRISE_TV = 48, SURVSTATION_SALON = 119, VAR_INCENDIE = 310,
-- ROOM : SdB Rez
HUM_SDBREZ = 238, LUM_SDBREZ_DOUCHE = 56, LUM_SDBREZ_LAVABO = 54, LUX_SDBREZ = 237, MVT_SDBREZ = 235, TMP_SDBREZ = 236, VANNE_SECHESERVIETTE_SDB_REZ = 233,

-- SECTION : Section virtuelle
-- ROOM : Backup
BACKUP_HEATPANEL = 294, BACKUP_VARIABLES = 293,
-- ROOM : Tehniques
CHECK_INTERNET = 327, CLOCK_SYNC = 332, DEADNODESANALYSIS = 330, EMONCMS = 334, HC2_DIAGNOSTICS = 337, MY_BATTERIES = 329, SONOS_MP3 = 331, SURVSTATION_ALL = 335, SURVSTATION_EXT = 336, TECHNICAL = 333, TOP_10_POWER = 328,
-- ROOM : Variables
PRESENCE_SIMULATOR = 325, VAR_AUTH_LUMINTERIEUR = 316, VAR_AUTH_PS3 = 314, VAR_AUTH_TV = 313, VAR_AUTH_VMCETAGE = 315, VAR_CHAUFFAGE = 321, VAR_DAYPART = 323, VAR_ECS = 317, VAR_NOEL = 322, VAR_PMC = 320, VAR_REMPL_PISCINE = 319, VAR_SAISON = 324, VAR_VACANCES = 318, VARIABLES_GLOBALES = 326,
-- ROOM : Z-Spare
Z121_R1 = 122, Z121_R2 = 124, Z149_IN2 = 152, Z344_IN1 = 346, Z344_IN2 = 347, Z377_R2 = 380, Z49_R2 = 52, Z89_IN2 = 92,
-- ROOM : Z_Fake
IN21_F = 135, IN22_F = 136, IN31_F = 143, IN32_F = 144, R11_F = 271, R12_F = 273, R21_F = 275, R22_F = 277, R31_F = 279, R32_F = 281, R41_F = 355, R42_F = 357, R51_F = 359, R52_F = 361, R61_F = 363, R62_F = 365, TMP12_F = 130, TMP13_F = 131, TMP14_F = 132, TMP21_F = 137, TMP22_F = 138, TMP23_F = 139, TMP24_F = 140, TMP31_F = 145, TMP32_F = 146, TMP33_F = 147, TMP34_F = 148,
-- ROOM : Z_Hidden device
BARRIERE_CLOSED = 163, BARRIERE_OPENED = 164, BOITELETTRES_FACTEUR = 87, BOITELETTRES_PORTE = 88, CONTACT_GACHE = 91, GA_MVT = 96, GA_OPEN = 95, GV_MVT = 160, GV_OPEN = 159, NEST_CONTROLER = 113, TELEC_CHPARENTS = 304, TELEC_CUISINE = 302,

-- SECTION : Sous-sol
-- ROOM : Cave à  vin
PORTE_CAVEAVIN = 349, PRISE_PMPEAUPLUIE = 169, TMP_CAVEAVIN = 351,
-- ROOM : Chaufferie
AUTH_PAC = 378, CHAUDIERE_CMD = 74, CHAUDIERE_OUTPUT = 72, CIRCULATEUR_ETAGE = 76, CIRCULATEUR_REZ = 78, FLOD_CHAUFFERIE = 171, HP_UPDATE = 311, SOLAIRE_OUTPUT = 151, TMPH_PANNEAUX = 156, TMPL_PANNEAUX = 155, TMP_CHAUFFERIE = 173, TMP_TISUN = 153,

-- ===========
-- Users
-- ===========
    Vincent = 99,
    Annabelle = 98,

-- ===========
-- Mobiles
-- ===========
    V_Nexus5 = 166,
    A_Nexus5 = 999,
}


--[[ ===========================================
NE PAS TOUCHER
--=========================================== ]]

Partager ce message


Lien à poster
Partager sur d’autres sites

@jojo,

 

Si tu ne recois rien, c'est que tu n'as pas de soucis, et qu'il a tout retrouve, donc pas d'ids fantomes, tout est OK.

 

Idem, j'ai rajoute ce que j'avais dans GEA et tout est OK.

 

Regarde ton debug, ni rouge, ni orange, panipwo ;-)

Tu recois push, mail, popup unqiuement si tu as un probleme ;-)

 

Pour tester, commente une de tes lignes "ignored" tu vas avoir un petit push ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

c'est ce que je me disais, mais dans les commentaires, il me semblait qu'on ne recevait un push qu'en cas de problème, mais un mail dans tous les cas.

 

De toute façon j'ai forcé une erreur dans mon tableau pour recevoir qqch

 [DEBUG] 19:51:26: ======================
[DEBUG] 19:51:26: Starting checker v.3.4
[DEBUG] 19:51:26: Cet outil ESSAIE de trouver des erreurs d'ID dans le code LUA
[DEBUG] 19:51:26: En aucun cas il est exaustif et peux indiquer des warning qui n'ont pas de raison d'être
[DEBUG] 19:51:26: A vous d'ajuster le tableau "ignored"
[DEBUG] 19:51:26: ======================
[DEBUG] 19:51:26: code couleur :
[DEBUG] 19:51:26: .....orange = a vérifier
[DEBUG] 19:51:26: .....rouge = erreur
[DEBUG] 19:51:26:
[DEBUG] 19:51:26: --------------------------------------------
[DEBUG] 19:51:26: Checking scenes ...
[DEBUG] 19:51:26: --------------------------------------------
[DEBUG] 19:51:26: checking scene : [1] Backup_Variables
[DEBUG] 19:51:27: checking scene : [2] Backup_HeatPanel
[DEBUG] 19:51:27: checking scene : [3] Generateur_ID
[DEBUG] 19:51:27: checking scene : [4] Clignote_Lampes
[DEBUG] 19:51:27: checking scene : [5] GA_Remote
[DEBUG] 19:51:27: checking scene : [6] Barr_Open_Remote
[DEBUG] 19:51:27: checking scene : [7] Barr_Close_Remote
[DEBUG] 19:51:27: checking scene : [8] Gache_Remote
[DEBUG] 19:51:27: checking scene : [9] EmonCMS
[DEBUG] 19:51:27: checking scene : [11] Performance_Analysis
[DEBUG] 19:51:27: checking scene : [12] Simulation
[DEBUG] 19:51:27: checking scene : [13] WatchDog
[DEBUG] 19:51:30: checking scene : [14] VariablesWhereUsed
[DEBUG] 19:51:31: checking scene : [15] GEA_5.4
[DEBUG] 19:51:32: checking scene : [16] EmonCMS_Counter
[DEBUG] 19:51:32: checking scene : [17] CheckAllIDs
[DEBUG] 19:51:32: ... done
[DEBUG] 19:51:32: --------------------------------------------
[DEBUG] 19:51:32: Checking virtual devices ...
[DEBUG] 19:51:32: --------------------------------------------
[DEBUG] 19:51:33: checking vd : [118] Arrosage_Plantes
[DEBUG] 19:51:34: checking vd : [119] SurvStation_Salon
[DEBUG] 19:51:34: checking vd : [165] Network_Monitor
[DEBUG] 19:51:34: checking vd : [167] Synology_Monitoring
[DEBUG] 19:51:34: checking vd : [286] Stat_Gar_Annabelle
[DEBUG] 19:51:34: checking vd : [287] Stat_Gar_Vincent
[DEBUG] 19:51:34: checking vd : [289] SurvStation_Jardin
[DEBUG] 19:51:34: checking vd : [290] Stat_Barriere
[DEBUG] 19:51:34: checking vd : [292] SurvStation_Avant
[DEBUG] 19:51:35: checking vd : [293] Backup_Variables
[DEBUG] 19:51:35: checking vd : [294] Backup_HeatPanel
[DEBUG] 19:51:35: checking vd : [307] SONOS_Maximilien
[DEBUG] 19:51:35: checking vd : [310] Var_Incendie
[DEBUG] 19:51:35: checking vd : [311] HP_Update
[DEBUG] 19:51:35: checking vd : [312] Courrier
[DEBUG] 19:51:35: checking vd : [313] Var_Auth_TV
[DEBUG] 19:51:35: checking vd : [314] Var_Auth_PS3
[DEBUG] 19:51:35: checking vd : [315] Var_Auth_VMCEtage
[DEBUG] 19:51:35: checking vd : [316] Var_Auth_LumInterieur
[DEBUG] 19:51:35: checking vd : [317] Var_ECS
[DEBUG] 19:51:35: checking vd : [318] Var_Vacances
[DEBUG] 19:51:35: checking vd : [319] Var_Rempl_Piscine
[DEBUG] 19:51:35: checking vd : [320] Var_PMC
[DEBUG] 19:51:35: checking vd : [321] Var_Chauffage
[DEBUG] 19:51:35: checking vd : [322] Var_Noel
[DEBUG] 19:51:35: checking vd : [323] Var_DayPart
[DEBUG] 19:51:35: checking vd : [324] Var_Saison
[DEBUG] 19:51:35: checking vd : [325] Presence_Simulator
[DEBUG] 19:51:35: checking vd : [326] Variables_Globales
[DEBUG] 19:51:35: checking vd : [327] Check Internet
[DEBUG] 19:51:35: checking vd : [328] Top_10_Power
[DEBUG] 19:51:35: checking vd : [329] My_Batteries
[DEBUG] 19:51:35: checking vd : [330] DeadNodesAnalysis
[DEBUG] 19:51:35: checking vd : [331] SONOS_MP3
[DEBUG] 19:51:36: checking vd : [332] Clock_Sync
[DEBUG] 19:51:36: checking vd : [333] Technical
[DEBUG] 19:51:36: checking vd : [334] EmonCMS
[DEBUG] 19:51:36: checking vd : [335] SurvStation_All
[DEBUG] 19:51:36: checking vd : [336] SurvStation_Ext
[DEBUG] 19:51:36: checking vd : [337] HC2_Diagnostics
[DEBUG] 19:51:36: checking vd : [343] SONOS_Parents
[DEBUG] 19:51:37: checking vd : [352] SONOS_Cuisine
[DEBUG] 19:51:37: checking vd : [371] Restart Modem
[DEBUG] 19:51:37: ... done
[DEBUG] 19:51:37: --------------------------------------------
[DEBUG] 19:51:37: Checking table [ids] ...
[DEBUG] 19:51:37: --------------------------------------------
[DEBUG] 19:51:38: --> A_Nexus5 contient une référence erronée le table : 999
[DEBUG] 19:51:45: ... done
[DEBUG] 19:51:45: Message d'avertissement envoyé à  "LGE Nexus 5"
[DEBUG] 19:51:45: --- Terminé ---

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, mais tu vois ligne 84, qu'il dit qu'il m'a envoyé un push, mais je n'ai rien reçu, ni mail

Partager ce message


Lien à poster
Partager sur d’autres sites

Pourrais-tu créer un scénario en y mettant juste ces 2 lignes stp .. pour tester.

local v = 166
local message = "Test"
fibaro:call(v, "sendPush", "["..v .. "] : " .. message)

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai mis ton petit scrip, et il fonctionne.

J'ai refait un save de la scène CheckAll, et j'ai reçu la notification sur mon Androïd :) , mais pas de mail :(

Cela correspond maintenant au debug de la scène : il me dit qu'il a envoyé une notif.

Etait-il supposé mettre une autre ligne avec l'information comme quoi il avait envoyé un mail ?

Reçoit-t-on le mail même si tout est ok, ou seulement si erreur ?

Partager ce message


Lien à poster
Partager sur d’autres sites

@jojo, 

 

Et si tu mettais ton user "admin : 2 " pour recevoir les mails pour tester et pas ton user 99 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

@pepite,

bonne idée, mais ça ne change rien.

Pour les mails, as-tu une ligne dans le debug qui t'informe qu'il a envoyé le mail ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Je n'ai pas mis de ligne informant l'envoi de mail.

Le mail part dans tous les cas (erreur ou pas)

 

Le code pour l'envoi de mail est :

local v = 2 -- id de l'utilisateur
local scene_name = "Nom de la scene"
local version = "0.0"
local mailmsg = "Le résumé complet du debug"
fibaro:call(v, "sendEmail", "HC2 Scénario " .. scene_name .. " v." .. version, mailmsg)

Qui correspond à  la doc de fibaro http://www.fibarouk.co.uk/support/lua/actions-use-fibarocall-api/actions-arguments-usage/#sendEmail

 

Par contre, chez moi, les push ET les mails ne fonctionne pas depuis ma HC2, je ne peux donc pas tester. Mais je suis 99,9% sà»r du code.

Partager ce message


Lien à poster
Partager sur d’autres sites

je confirme que ton code est ok car :

  1. je n'en ai jamais douté
  2. je l'ai mis dans une scène de test, et ça fonctionne.

Alors pourquoi ça ne fonctionne pas chez moi dans la scène du check des ID ????

Partager ce message


Lien à poster
Partager sur d’autres sites

Le message est peut-être trop long, trop de devices.

Partager ce message


Lien à poster
Partager sur d’autres sites

bonne piste, je réduit la taille du tableau àvérifer et te dis quoi

Partager ce message


Lien à poster
Partager sur d’autres sites

×