-
Compteur de contenus
9 579 -
Inscription
-
Dernière visite
-
Jours gagnés
59
Tout ce qui a été posté par pepite
-
Salut @Plap3014, Pardon, je n'avais pas bien suivi ;-) J'ai aussi et fonctionnel --[[ %% properties %% events %% globals --]] --DELETE BACKUP -- Flag dryrun; Si true, la requete sur api pour effacer le backup n'est pas effectuée local dryrun = false -- Password admin encodé en base64 local password = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' function sortBackup(data) local backups = json.decode(data) -- Vérification de présence Backup if (backups and type(backups == 'table') and #backups > 0) then if #backups > 1 then print(#backups .. ' Backups présents') else print('1 Backup présent') end for i in ipairs(backups) do fibaro:debug('ID: '..backups[i]['id']..' | TIMESTAMP: '..backups[i]['timestamp']..' | DESCRIPTION: '..backups[i]['description']) end else print('Pas de backup ou erreur lors de la récupération de la liste') fibaro:abort() end -- Pour chaque Backup on stock le timestamp de la date de réalisation dans une table -- On classe ensuite les timestamps par ordre croissant local timestamp = {} for i in ipairs(backups) do table.insert(timestamp, backups[i]['timestamp']) end table.sort(timestamp) -- Le 1er timestamp de la table est le plus petit donc le plus ancien en epochtime -- Dans la table de backup on recherche le backup ayant ce timestamp local id = false for i in ipairs(backups) do if (tonumber(backups[i]['timestamp']) == tonumber(timestamp[1])) then id = backups[i]['id'] end end if id then print("ID du backup le plus ancien: "..id) deleteBackup(id) else print("Erreur lors de la récupération de l'ID") fibaro:abort() end end function deleteBackup(id) -- Requete via API pour effacer le backup le plus ancien if (not dryrun) and (id) then print('Effacement du backup '..id..' en cours. Cela peut prendre 30s') local url = 'http://127.0.0.1/api/service/backups/'..id local httpClient = net.HTTPClient() httpClient:request(url , { success = function(response) if tonumber(response.status) == 200 then print("Backup deleted at " .. os.date()) else print("Error " .. response.status) end end, error = function(err) print('error = ' .. err) end, options = { method = 'DELETE', headers = { ["content-type"] = 'application/x-www-form-urlencoded;', ["authorization"] = 'Basic '..password }, data = 'id='..id } }) end end -- Récupération de la list des backups local GETClient = net.HTTPClient() if dryrun then print('Mode DryRun -> La requète pour effacer ne sera pas éxécutée') end GETClient:request('http://127.0.0.1/api/service/backups', { success = function(response) if tonumber(response.status) == 200 then sortBackup(response.data) else print("Error " .. response.status) end end, error = function(err) print('error = ' .. err) end, headers = { ["content-type"] = 'application/x-www-form-urlencoded;', ["authorization"] = 'Basic '..password } });
-
Mieux vaut tard que jamais, on peut au moins leur reconnaitre cela, et ça va plutôt dans le bon sens ;-)
-
@razowski, je pense que cela a changé. En ce moment ils réagissent et répondent je trouve. Exemple : le panneau de chauffage, bug remonté par @MAM78..et d'autres exemples Ils font un vrai effort d'écoute des users.
-
Salut @Plap3014 Voila la scène de backup fonctionnelle pour moi, suite aux modifications de nikko, il faut que tu encode ton couple login@toto.fr:motdepasse en base 64, regarde dans un des posts, il y'a le code pour le faire --[[ %% properties %% events %% globals --]] -- BACKUP -- ID des mobiles,tablettes pour notification local portable = {} -- {XX, XX} -- Message Descriptif du Backup local descriptif = 'Backup HC2 du '..os.date("%d/%m/%y - %HH%M") -- Password admin encodé en base64 local password = 'xxxxxxxxxxxxxxxxxxxxxxxxx' function sendPush(message) if #portable > 0 then for _,v in ipairs(portable) do fibaro:call(v,'sendPush', message) end end end --[[function sendPush(message) if #portable > 0 then fibaro:setGlobal('FreeSms', message) end end]]-- local url = 'http://127.0.0.1/api/service/backups' local datas = '{"action":"create","params":{"name":"'..descriptif..'"}}' local httpClient = net.HTTPClient() httpClient:request(url , { success = function(response) if tonumber(response.status) == 201 or tonumber(response.status) == 202 then print("Backup Created at " .. os.date()) sendPush(descriptif .. ' effectué') else print("Error " .. response.status) sendPush('Erreur lors de la création du Backup') end end, error = function(err) print('error = ' .. err) end, options = { method = 'POST', headers = { ["content-type"] = 'application/json', ["Authorization"] = 'Basic '..password }, data = datas } });
-
Salut @MAM78, Je pensais plutôt à quelquechose comme ceci, non testé local panelHorsVacances = 194 local panelEnVacances = 234 local VarVacances = "Oui" local panelEV = api.get("/panels/heating/"..panelEnVacances) local panelHV = api.get("/panes/heating/"..panelHorsVacances) if VarVacances == "Oui" then SaveRooms = panelEV.properties.rooms panelEV.properties.rooms = panelHV.properties.rooms panelHV.properties.rooms = SaveRooms else SaveRooms = panelHV.properties.rooms panelHV.properties.rooms = panelEV.properties.rooms panelEV.properties.rooms = SaveRooms end api.put("/heating/panels/" ..panelHorsVacances, panelHV) api.put("/heating/panels/"..panelEnVacances, panelEV)
-
Ah si effectivement tu as le watchdog de @Lazer et que tu as une scene qui est rebootée par le watchdog tu vas avoir un paquet de lignes ;-) Bien vu Lazer, je n'y avais pas pensé a ton watchdog ;-)
-
On est bien d'accord que sur ce coup là, pas de pub possible :-) mais une grosse patience pour avoir la fibre :-) Envoyé de mon Nexus 5X en utilisant Tapatalk
-
Bonjour, moi non jamais eu cela :-( Envoyé de mon Nexus 5X en utilisant Tapatalk
-
Yeah merci master, c'est ce que je pensais mais pas assez expert pour le dire. Ca sent le function.. Envoyé de mon Nexus 5X en utilisant Tapatalk
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Excellent mam :-). Tu peux aussi simplifier le code avec des api.get et api.put :-) Et tu peux aller jusqu a properties avec le get je pense Envoyé de mon Nexus 5X en utilisant Tapatalk
-
Oops, je n'ai pas été clair :-). Je me demandais si le "repérage" de la présence ou absence était plutôt instantané ou avec un peu de latence :-).. Toujours aussi sympa ton histoire de fibre. Un vrai roman :-) Envoyé de mon Nexus 5X en utilisant Tapatalk
-
Bonjour, J'adore ce teaser :-) Et que penses tu des temps de reponse avec l ubiquiti ? Envoyé de mon Nexus 5X en utilisant Tapatalk
-
ah oui, j'avais lu cela. mais je ne crois pas que tu puisses supprime plus que cela. @samhuin tu as lu cela : @tibo789 a tout fait ;-) tu n'as plus qu'a importer ;-)
-
PAs possible sur le panneau de donner des droits à un user
-
Pour moi aussi, et je pense que la plus propre c'est le choix par le VD de @Steven, ça permet de choisir le panneau qui t'intéresse ;-)
-
Heu, @MAM78, on t' a donné plein de liens dans les messages précédents ;-) qui passent par le lua ;-)
-
Mais tu dois faire choisir la pour lier les modules qui vont déclencher et là tu auras les jours, la durée et l'heure d'allumage. Et là tu auras ta croix ;-) Amis en fait là ton panneau n'est pas complet, tu n'as fait que le début
-
Ah ok, j'avoue que la je n'en sais pas plus et j'avoue ne pas comprendre pourquoi cela reste à 13 mins par défaut.. Sinon, après faut passer par function. Si @Steven a un début d'explication ;-) à ces 13 mins
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Quoi ? quoi ?
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Salut, tu n'as pas de croix sur ton interface des panneaux ? Récupère ton ID. Sinon là http://IPHC2/docs tu dois avoir des infos : delete /panels/drenchers
-
en mode burnout ;-)
-
Merci master ;-). ah oui un api.get qui va directement chercher les properties du panneau. @Nico, il ne coupe pas, mais lis les infos à partir du panneau de chauffage souhaité en fonction des conditions souhaitées ;-) Faisable avec X panneaux et avec n'importe quel capteur de temperature ;-)