Aller au contenu

Rem's

Membres confirmés
  • Compteur de contenus

    949
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Rem's

  1. Rem's

    Prévision Météo

    Mais en fait, c'est un VD pour les vacances scolaires que je cherche à faire fonctionner !!! Je ne sais pas pourquoi j'ai poster ici (je vais me faire engueuler par les admin) A toute fins utiles voici le code que j'ai : -- -------------------------------------------------------------------------------------------------------------- -- Check that one and only one instance is in memory -- -------------------------------------------------------------------------------------------------------------- local selfId = fibaro:getSelfId(); local icon = fibaro:get (selfId, "deviceIcon"); if ((not Vacances) or (Vacances.errors >= 5)) then Vacances = { departement = "13", varglobal = "VacScolaire", varglobalJ = "VacScolaireJ", varglobalJ1 = "VacScolaireJ1", errors = 0 } -- -------------------------------------------------------------------------------------------------------------- -- URL -- -------------------------------------------------------------------------------------------------------------- Vacances.url = "telechargement.index-education.com" -- -------------------------------------------------------------------------------------------------------------- -- Optenir le fichier XML -- -------------------------------------------------------------------------------------------------------------- Vacances.getXml = function() local URL = Net.FHttp(Vacances.url) response, status, errorCode = URL:GET("/vacances.xml") return Vacances.iif(response ~= nil, Vacances.newParser().ParseXmlText(response), "") end -- -------------------------------------------------------------------------------------------------------------- -- Rechercher la zone par rapport au numéro de département -- -------------------------------------------------------------------------------------------------------------- Vacances.getZone = function(xmlTable) if (xmlTable) then if (not xmlTable.root) then Vacances.errors = Vacances.errors+1 return "" end local academies = xmlTable.root.academies for i in pairs(academies:children()) do local academie = academies.academie local zone = academie["@zone"] local nom = academie["@libelle"] for j in pairs(academie:children()) do local dep = academie.departement[j] if (type(dep) ~= "nil") then if (academie.departement[j]["@numero"] == Vacances.departement) then fibaro:call(fibaro:getSelfId(), "setProperty", "ui.LabelZone.value", "["..zone.."] " .. nom) return zone, nom end else if (academie.departement["@numero"] == Vacances.departement) then fibaro:call(fibaro:getSelfId(), "setProperty", "ui.LabelZone.value", "["..zone.."] " .. nom) return zone, nom end end end end end return "" end -- -------------------------------------------------------------------------------------------------------------- -- Rechercher le libellé d'une période de vacances -- -------------------------------------------------------------------------------------------------------------- Vacances.getLibelle = function(xmlTable, num) if (xmlTable) then if (not xmlTable.root) then Vacances.errors = Vacances.errors+1 return "" end local libelles = xmlTable.root.libelles for i in pairs(libelles:children()) do if (libelles.libelle["@id"] == num) then local l = libelles.libelle:value() for k = 1, string.len(l)-1 do local c = string.sub(l, k, k) local d = string.byte(c) end return libelles.libelle:value():gsub(string.char(235), "ë"):gsub(string.char(233), "é") end end end return "" end -- -------------------------------------------------------------------------------------------------------------- -- Obtenir les dates futures des vacances par rapport à la zone -- -------------------------------------------------------------------------------------------------------------- Vacances.getDatesFuture = function(xmlTable, zone, dateparam) fibaro:debug("date="..dateparam) fibaro:debug("date claire="..os.date("%d.%m.%Y", dateparam)) fibaro:debug("date="..os.time()) if (xmlTable) then if (not xmlTable.root) then Vacances.errors = Vacances.errors+1 return "" end local calendrier = xmlTable.root.calendrier local index = 1 local envacance = false local envacanceJ1 = false for i in pairs(calendrier:children()) do local zonecal = calendrier.zone if (zonecal["@libelle"] == zone) then for j in pairs(zonecal:children()) do local datedeb = Vacances.getDateFormat(zonecal.vacances[j]["@debut"]) local datefin = Vacances.getDateFormat(zonecal.vacances[j]["@fin"]) if index < 9 then fibaro:debug("Index"..index.." Deb:"..os.date("%d.%m.%Y", datedeb).." Fin:"..os.date("%d.%m.%Y", datefin).." Date:"..os.date("%d.%m.%Y", dateparam)) if (dateparam > datedeb and dateparam < datefin) then local msg = os.date("%d.%m.%Y", datedeb) .. " - " .. os.date("%d.%m.%Y", datefin) .. " | " ..Vacances.getLibelle(xmlTable, zonecal.vacances[j]["@libelle"]) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label"..index..".value", msg) fibaro:debug("en période de vacance = oui") envacance = true if index == 1 then fibaro:log("Prochaines vacances : "..msg) end index = index + 1 elseif (datedeb > dateparam) then local msg = os.date("%d.%m.%Y", datedeb) .. " - " .. os.date("%d.%m.%Y", datefin) .. " | " ..Vacances.getLibelle(xmlTable, zonecal.vacances[j]["@libelle"]) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label"..index..".value", msg) if (not envacance and index == 1) then fibaro:log("Prochaines vacances : "..msg) savedatedeb=datedeb end index = index + 1 end if (dateparam+24*60*60 > datedeb and dateparam+24*60*60 < datefin) then envacanceJ1 = true end end end if envacance == true then fibaro:debug("En vacance aujour'hui") fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label0.value", "En vacances") fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label10.value", "OUI") VG:traiter(Vacances.varglobal, "0") VG:traiter(Vacances.varglobalJ, "OUI") else fibaro:debug("Pas en vacance aujourd'hui") fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label0.value", "Dans " .. Vacances.delai(savedatedeb, dateparam) .. " jours" ) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label10.value", "NON") VG:traiter(Vacances.varglobal, Vacances.delai(savedatedeb, dateparam).."") VG:traiter(Vacances.varglobalJ, "NON") end if envacanceJ1 == true then fibaro:debug("En vacance demain") fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label11.value", "OUI") VG:traiter(Vacances.varglobalJ1, "OUI") else fibaro:debug("Pas en vacance demain") fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label11.value", "NON") VG:traiter(Vacances.varglobalJ1, "NON") end for i = index, 9 do fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label"..i..".value", "") end return end end end end -- -------------------------------------------------------------------------------------------------------------- -- Transforme une date en string en date exploitable -- -------------------------------------------------------------------------------------------------------------- Vacances.getDateFormat = function(sdate) year,month,day = sdate:match("(%d+).(%d+).(%d+)") return os.time({day=day,month=month,year=year,hour=0,min=0,sec=0}) end -- -------------------------------------------------------------------------------------------------------------- -- Calcule le nombre de jours entre 2 dates -- -------------------------------------------------------------------------------------------------------------- Vacances.delai = function(dated, dateparam) diff = os.difftime(dated, dateparam) return math.floor(diff / (60*60*24)) end -- ------------------------------------------------------------------------------------------------------------- -- Test the condition and return true or false param depending of the result -- param : condition (condition to test) -- iftrue (result to return of condition if true) -- iftfalse (result to return of condition if false) -- ------------------------------------------------------------------------------------------------------------- Vacances.iif = function(condition, iftrue, iffalse) if (condition) then return iftrue end return iffalse end -- ------------------------------------------------------------------------------------------------------------- -- Variables Globales -- ------------------------------------------------------------------------------------------------------------- -- Description : -- Fonctions permettant la manipulation des -- variables globales -- ------------------------------------------------------------------------------------------------------------- -- Version du firmeware : 4.x -- Destination : Scénarios -- source : steven -- lien : https://gea.piccand.me/doku.php/vg -- ------------------------------------------------------------------------------------------------------------- VG={getValue=function(self,b)return fibaro:getGlobalValue(b)end,setValue=function(self,b,c)fibaro:setGlobal(b,c)end,getDateModification=function(self,b)return os.date("*t",fibaro:getGlobalModificationTime(b))end,supprimer=function(self,b)api.delete("/globalVariables/"..b)end,modifier=function(self,b,c,d)local e={}e.value=tostring(c)e.isEnum=false;if type(d)~="nil"then e.isEnum=true;e.enumValues=d end;api.put("/globalVariables/"..b,e)end,ajouter=function(self,b,c,d)local f=0;if type(d)~="nil"then f=1 end;api.post("/globalVariables",{name=b,isEnum=f})self:modifier(b,c,d)end,traiter=function(self,b,c,d)if fibaro:getGlobalValue(b)==nil then self:ajouter(b,c,d)elseif type(d)=="nil"then self:setValue(b,c)else self:modifier(b,c,d)end end,getInfo=function(self,b)return api.get("/globalVariables/"..b)end} -- ------------------------------------------------------------------------------------------------------------- -- This is a modified version of Corona-XML-Module by Jonathan Beebe which in turn -- is based on Alexander Makeev's Lua-only XML parser . -- see https://github.com/Cluain/Lua-Simple-XML-Parser -- ------------------------------------------------------------------------------------------------------------- Vacances.newParser = function() parseXml = {} parseXml.FromXmlString = function(value) value = string.gsub(value, "&#x([%x]+)%;", function(h) return string.char(tonumber(h, 16)) end); value = string.gsub(value, "&#([0-9]+)%;", function(h) return string.char(tonumber(h, 10)) end); value = string.gsub(value, "\"", "\""); value = string.gsub(value, "'", "'"); value = string.gsub(value, ">", ">"); value = string.gsub(value, "<", "<"); value = string.gsub(value, "&", "&"); return value; end parseXml.ParseArgs = function(node, s) string.gsub(s, "(%w+)=([\"'])(.-)%2", function(w, _, a) node:addProperty(w, parseXml.FromXmlString(a)) end) end parseXml.ParseXmlText = function(xmlText) local stack = {} local top = parseXml.newNode() table.insert(stack, top) local ni, c, label, xarg, empty local i, j = 1, 1 while true do ni, j, c, label, xarg, empty = string.find(xmlText, "<(%/?)([%w_:]+)(.-)(%/?)>", i) if not ni then break end local text = string.sub(xmlText, i, ni - 1); if not string.find(text, "^%s*$") then local lVal = (top:value() or "") .. parseXml.FromXmlString(text) stack[#stack]:setValue(lVal) end if empty == "/" then -- empty element tag local lNode = parseXml.newNode(label) parseXml.ParseArgs(lNode, xarg) top:addChild(lNode) elseif c == "" then -- start tag local lNode = parseXml.newNode(label) parseXml.ParseArgs(lNode, xarg) table.insert(stack, lNode) top = lNode else -- end tag local toclose = table.remove(stack) -- remove top top = stack[#stack] if #stack < 1 then error("XmlParser: nothing to close with " .. label) end if toclose:name() ~= label then error("XmlParser: trying to close " .. toclose.name .. " with " .. label) end top:addChild(toclose) end i = j + 1 end local text = string.sub(xmlText, i); if #stack > 1 then error("XmlParser: unclosed " .. stack[#stack]:name()) end return top end parseXml.newNode = function(name) local node = {} node.___value = nil node.___name = name node.___children = {} node.___props = {} function node:value() return self.___value end function node:setValue(val) self.___value = val end function node:name() return self.___name end function node:setName(name) self.___name = name end function node:children() return self.___children end function node:numChildren() return #self.___children end function node:addChild(child) if self[child:name()] ~= nil then if type(self[child:name()].name) == "function" then local tempTable = {} table.insert(tempTable, self[child:name()]) self[child:name()] = tempTable end table.insert(self[child:name()], child) else self[child:name()] = child end table.insert(self.___children, child) end function node:properties() return self.___props end function node:numProperties() return #self.___props end function node:addProperty(name, value) local lName = "@" .. name if self[lName] ~= nil then if type(self[lName]) == "string" then local tempTable = {} table.insert(tempTable, self[lName]) self[lName] = tempTable end table.insert(self[lName], value) else self[lName] = value end table.insert(self.___props, { name = name, value = self[name] }) end return node end return parseXml; end end -- ------------------------------------------------------------------------------------------------------------- -- RUN -- ------------------------------------------------------------------------------------------------------------- fibaro:debug("Lecture du fichier distant ...") local xmlTable = Vacances.getXml() if (Vacances.errors > 0) then time = "Erreur : " .. Vacances.errors fibaro:debug(time) else fibaro:debug("Recherche de la zone pour le département : " .. Vacances.departement .. " ...") local zone, nom = Vacances.getZone(xmlTable) fibaro:debug(Vacances.departement .. " ==> [" .. zone .. "] " .. nom) Vacances.getDatesFuture(xmlTable, zone, os.time()) end fibaro:call(selfId, "setProperty", "currentIcon", icon); fibaro:call(784, "setProperty", "ui.status.value", "");
  2. Rem's

    Prévision Météo

    Merci Franco268 pour ta réponse En fait je n'avais pas cette variable !!!! Je viens de la rajouter (variable simple, sans majuscule). [ERROR] 18:33:55: line 179: bad argument #1 to 'difftime' (number expected, got nil) Mais toujours pas Une idée ??
  3. Rem's

    Prévision Météo

    bonjour à tous, j'essaye de refaire cet ingénieur VD .... seulement j'ai une erreur line 179 : [DEBUG] 23:20:23: Index1 Deb:09.02.2019 Fin:25.02.2019 Date:23.09.2019[DEBUG] 23:20:23: Index1 Deb:06.04.2019 Fin:23.04.2019 Date:23.09.2019[DEBUG] 23:20:23: Index1 Deb:06.07.2019 Fin:02.09.2019 Date:23.09.2019[DEBUG] 23:20:23: Pas en vacance aujourd'hui[ERROR] 23:20:23: line 179: bad argument #1 to 'difftime' (number expected, got nil) auriez-vous une idée ?? d'avance merci du coup de main !!
  4. Rem's

    Wifi Freebox

    Ok, super, merci pour ta réponse. je suis en appart, je pense qu’en mettant une petite dans le couloir, cela devrait être mieux que la Freebox, dans la buanderie, avec le n’as, onduleur, hc2, ..... plein d’interférence !!
  5. Rem's

    Wifi Freebox

    C’est quoi des petites bornes?? merci des conseils
  6. Rem's

    Wifi Freebox

    Merci pour ta réponse je ne peux pas lui mettre un RM 45, et le tour est joué ??... je voudrais -un truc simple mais fiable !! t’aurais une idée pour moi ? d’avance merci
  7. Rem's

    Compatibilités DD Synology

    Bonjour à tous, J'ai actuellement disques de TO dans mon NAS DS 214+. Mon soucis est que le 2ème ne semble pas reconnu, et ne m'apporte aucune extension au groupe. Je joins 2 imp écran, car je comprends pas grand choses. Du coup, si c'est un problème de compatibilité, je pensais acheter celui là : https://www.amazon.fr/gp/product/B006KCX0UE/ref=ox_sc_act_title_1?smid=A3N37ENG76UUGB&psc=1 Merci d'avance de vos conseils avisés.
  8. Rem's

    Compatibilités DD Synology

    Coucou, je suis de retour !!! (Je l’ai échappé belle, voir maillas jaune !!!) je je vais essayer de faire un peu de tri, je pense que je vais partir sur le moins disant, je vais garder mon NAS. En revanche, j’ai un souci de débit qui m’empêche de regarder les films et vidéos correctement sur le Freebox mini. Mon switch est en doublon sur le switch de la Freebox. Je pense qu’il faudrait que j’active la DMZ Correctement vers ma machine. Je pense que le débit proposée par le DS 214 play est suffisant pour regarder des films. Dans le cas contraire je pars sur un nouveau nas, Mais avec le remplacement des disques durs, ça fait un peu cher. D’avance merci pour vos conseils, je manquerai pas de lui demander des explications complémentaires !
  9. Rem's

    Compatibilités DD Synology

    Jouons, merci pour tes explications entre temps, suite à un accident de travail (je me suis empalé sur un bambou), je reviens vers vous mes amis dès que je sors de l’hosto (j’ai failli y passer !!!) merci encore pour votre aide et les conseils de John. bonne soirée
  10. Rem's

    Compatibilités DD Synology

    J’en ai pas la moindre idée !! j’ai Aussi un DD externe de 3 go sur lequel une sauvegarde s’effectue a Priori le DS 214 play supporte j’u<squ’à 4 go et ne permet pas d’augmenter la ddr3 merci pour vos avis avisés !!!
  11. Rem's

    Compatibilités DD Synology

    a ce compte là, si cela doit me coûter 2disques de 6 to, je change de NAS !!! dites rien à ma banque !!
  12. Rem's

    Compatibilités DD Synology

    Bouhh ...! C’est pas rigolo, et puis c’est plus cher!! Je peux aller jusqu’a Quelle capacités ? mais alors, cela ne me sert à rien de sauvegarder sur un disque dur externe portable, si ce n’est pour la redondance ??
  13. Rem's

    Compatibilités DD Synology

    Donc si je comprends bien, il faut que je change les 2 Disques durs, par des 4, 5 ou 6 TO ...? Merci de ton aide, j'y vois un peu plus clair !
  14. Rem's

    Compatibilités DD Synology

    Beinh en fait j'ai un disque dur externe de 3TO WD qui me sert de sauvegarde de mes données. Donc en fait j'aurais bien voulu étendre ma capacité de stockage à 2 disques .... Merci pour ton aide !!
  15. Rem's

    Compatibilités DD Synology

    En fait j'en ai pas la moindre idée, j'ai peu d'option qui s'offre à moi, pour tant j'ai bien les 2 disques qui semblent être reconnus. J'ai refait les imp écran ...
  16. Rem's

    Domotiser sa VMC

    Question bête : à quoi ça sert un relais électronique ???
  17. Rem's

    Caméra HD ... Chinoise

    Bonjour à tous, J'ai été faible, et j'ai acheté 2 caméra sur un site Chinnois. Caméra HD, de la marque "360eyes", apparemment. https://images-na.ssl-images-amazon.com/images/I/A18TntD8BeL.pdf Je voudrai récupérer le flux vidéo pour l'intégrer à mon HC 2. Comment faire, le compte est créée sur un cloud, il me semble, et je n'arrive pas à trouver une bonne config. D'avance merci pour votre aide.
  18. Rem's

    Video surveillance

    Bonjour à tous, Mon beau-père a acheté une villa, et je souhaiterai lui installer un "kit de vidéo surveillance" de 4 caméra + enregistreur. De préférence 4k ou plus. Ma contrainte est que certaines caméra auront un fil en RJ 45, cat 6, d'une longueur de 70 m. Je suppose qu'il me faut un machin POE ... !! Auriez vous des conseils à me donner, le choix des caméras, .... D'avance merci pour votre aide.
  19. Rem's

    Caméra HD ... Chinoise

    Mince, je voulais tout centraliser, ne pa avoir plusieurs appli !!! Elles ont une adresse IP, mais après je ne sais pas quoi tenter. Merci pour ta réponse.
  20. Rem's

    Video surveillance

    Super, merci pour votre réponse (forum ou personne au top, va savoir ... !) Je pars donc sur Hikvision + Nvr, le tout en POE. Je pense mettre 4 à 6 caméra, j'en suis déjà à 200 m de câble Cat 6 !! Je pensais à ce modèle : https://www.camera-videosurveillance.fr/kits-a-composer-1-a-8-cameras-ip/1305-kit-videosurveillance-1-a-8-cameras-tubes-hiwatch-4-mp-ip-poe.html?search_query=poe&results=214#/297-nombre_de_cables_20_metres_rj45-0/47-capacite_disque_dur-3_to_18600/268-nombre_de_cameras_tubes-6/206-voies_de_l_enregistreur-8_voies Une question, le POE me permet de brancher un seul câble, celui du RJ 45, c'est bien ça ?? Je n'ai pas d'adaptateur à prévoir ni à la caméra, ni au niveau du NVR ?? D'avance merci de vos conseils avisés.
  21. Rem's

    Présentation MaDomotic

    Plein de nouveau joujoux en perspective !!
  22. Rem's

    Banque Icones Hcl, HC2 et HC3

    Un grand merci !!
  23. Rem's

    Banque Icones Hcl, HC2 et HC3

    Est ce que je peux abuser aussi avec celle ci .... Mille merci !!!
  24. Rem's

    Banque Icones Hcl, HC2 et HC3

    Bonjour les ami(e)s, pouvez vous me faire une icône On / Off avec cela .... D'avance merci
  25. Rem's

    HCL comme "slave"

    Ou alors un IPX 800 Pour piloter l’arrosage, Si tu as la possibilité d’avoir un Rj 45 à proximité
×