jack! Posté(e) le 21 juillet 2018 Signaler Partager Posté(e) le 21 juillet 2018 Bonjour à tous, N’étant pas un pro du dev quel que soit le langage de programmation, je sollicite vos lumières !! J'essaie de faire fonctionner ce code pour, en fonction de l'heure, passer ma variable globale en ROUGE ou BLEU. Ce qui déclenchera d'autres événements en fonction de cette globale (trigger) Le problème que je rencontre est que cette fonction marche uniquement sur le bloc BLEU je n'arrive a passer au Bloc ROUGE et donc tester ma fonction jusqu'au bout. Voici mon debug pourant il devrait être en Rouge ... Merci Jack! --[[ %% autostart %% properties %% weather %% events %% globals --]] ---------------------- local sourceTrigger = fibaro:getSourceTrigger(); function tempFunc() local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); setTimeout(tempFunc, 60*1000) end ----------------------- if (sourceTrigger["type"] == "autostart") then tempFunc() else end ----------------------------------------------- local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); if ( startSource["type"] == "other" ) then fibaro:getGlobal("TARIF_EDF"); fibaro:debug("on est ici get global EDF"); end ------------------------------------------------ if ( ( (tonumber(os.date("%H%M")) >= tonumber(string.format("%02d%02d", "07", "00")) or tonumber(os.date("%H%M")) <= tonumber(string.format("%02d%02d", "22", "59"))) and (math.floor(os.time()/60)-math.floor(1530738000/60))%1 == 0 ) ) then fibaro:setGlobal("TARIF_EDF", "BLEU"); fibaro:debug('on est en tarif bleu'); end --------------------------affiche l'icone BLEU------------------ local url = 'http://127.0.0.1:11111/api/scenes' local function putMethod(requestUrl, successCallback, errorCallback) local http = net.HTTPClient() http:request(requestUrl, { options = { method = 'PUT', data = message }, success = successCallback, error = errorCallback }) end message = '{"id": 443, "iconID": 1009}' -- this scene id = 443 and new icon id = 1009 BLEU putMethod(url, function(resp) print('Status de la fonction HTTP PUT BLEU: ' .. resp.status) end, function(err) print('error' .. err) end ) --------------------------------------------------------------------- if ( ( (tonumber(os.date("%H%M")) >= tonumber(string.format("%02d%02d", "23", "00")) or tonumber(os.date("%H%M")) <= tonumber(string.format("%02d%02d", "06", "59"))) and (math.floor(os.time()/60)-math.floor(1530738000/60))%1 == 0 ) ) then fibaro:setGlobal("TARIF_EDF", "ROUGE"); fibaro:debug("la on est en tarif rouge"); fibaro:setGlobal("TARIF_EDF", "ROUGE"); --------------------------affiche l'icone EDF ROUGE------------------ local url = 'http://127.0.0.1:11111/api/scenes' local function putMethod(requestUrl, successCallback, errorCallback) local http = net.HTTPClient() http:request(requestUrl, { options = { method = 'PUT', data = message }, success = successCallback, error = errorCallback }) end message = '{"id": 441, "iconID": 1003}' -- this scene id = 441 and new icon id = 1003 ROUGE putMethod(url, function(resp) print('Status de la fonction HTTP PUT ROUGE: ' .. resp.status) end, function(err) print('error' .. err) end ) ------------------------------------------------------------- end Lien vers le commentaire Partager sur d’autres sites More sharing options...
Barelle Posté(e) le 21 juillet 2018 Signaler Partager Posté(e) le 21 juillet 2018 Dans ma compréhension de ton code, ce que tu appelles BLEU correspond au tarif heures pleines d'EDF, et ROUGE au tarif heures creuses... Ton debug est effectué à 13h48, et tu définis ta période ROUGE de 23h01 à 06h58, aussi tu n'as que du BLEU... CQFD Ton code pourrait être grandement simplifié, par exemple puisque tu n'as que deux périodes, si ce n'est pas l'une, alors c'est l'autre... Enfin, avec une meilleure indentation, je crois que tu maîtriserais la logique de ta scène. Lien vers le commentaire Partager sur d’autres sites More sharing options...
jack! Posté(e) le 21 juillet 2018 Auteur Signaler Partager Posté(e) le 21 juillet 2018 (modifié) Oui effectivement j'ai dû inverser, BLEU/ROUGE et les horaires à force de changer dans tous les sens. Du coup j'ai simplifié mon code avec if...then...else..then par mieux pour autant. (même en changeant les horaires) Effectivement, je vais m'y mettre à l'indentation, ça sera plus lisible, mais mon problème se situe peut-être dans la compréhension des blocs. (et oui je suis pas un pro du dev) Ca n'a pas changé mise à part qu'il m'affiche bien ROUGE alors que je devrait être bleu vu qu'il est plus de 19H00. Merci de votre aide,,,, au pire je vais me pallucher la doc compléte... --[[ %% autostart %% properties %% weather %% events %% globals --]] ---------------------- local sourceTrigger = fibaro:getSourceTrigger(); function tempFunc() local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); setTimeout(tempFunc, 60*1000) end if (sourceTrigger["type"] == "autostart") then tempFunc() else end local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); if ( startSource["type"] == "other") then fibaro:getGlobal("TARIF_EDF"); fibaro:debug("on est ici get global EDF"); end if ( ( (tonumber(os.date("%H%M")) >= tonumber(string.format("%02d%02d", "07", "00")) or tonumber(os.date("%H%M")) <= tonumber(string.format("%02d%02d", "19", "00"))) and (math.floor(os.time()/60)-math.floor(1530738000/60))%1 == 0 ) ) then fibaro:setGlobal("TARIF_EDF", "BLEU"); fibaro:debug('on est bleu'); local url = 'http://127.0.0.1:11111/api/scenes' local function putMethod(requestUrl, successCallback, errorCallback) local http = net.HTTPClient() http:request(requestUrl, { options = { method = 'PUT', data = message }, success = successCallback, error = errorCallback }) end message = '{"id": 443, "iconID": 1009}' -- this scene id = 443 and new icon id = 1009 BLEU putMethod(url, function(resp) print('Status de la fonction HTTP PUT BLEU: ' .. resp.status) end, function(err) print('error' .. err) end ) else fibaro:setGlobal("TARIF_EDF", "ROUGE"); fibaro:debug("la on est rouge"); fibaro:setGlobal("TARIF_EDF", "ROUGE"); local url = 'http://127.0.0.1:11111/api/scenes' local function putMethod(requestUrl, successCallback, errorCallback) local http = net.HTTPClient() http:request(requestUrl, { options = { method = 'PUT', data = message }, success = successCallback, error = errorCallback }) end message = '{"id": 441, "iconID": 1003}' -- this scene id = 441 and new icon id = 1003 ROUGE putMethod(url, function(resp) print('Status de la fonction HTTP PUT ROUGE: ' .. resp.status) end, function(err) print('error' .. err) end ) end Modifié le 23 juillet 2018 par jack! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés