-
Compteur de contenus
5 384 -
Inscription
-
Dernière visite
-
Jours gagnés
80
Tout ce qui a été posté par BenjyNet
-
tutoriel Eco-Devices Live & Day Reporter (Hp/hc)
BenjyNet a répondu à un(e) sujet de Gazous dans GCE Electronics
-------------------------------------------------------- -- Eco-Devices Live & Day Reporter v0.2 -- -------------------------------------------------------- -- Auteur : Brice Cassagnabère -- -------------------------------------------------------- -- Changelog : -- -- -- -- v0.1 : Version initiale -- -- v0.2 : Gestion des etiquettes vides -- -------------------------------------------------------- -- Plus d'infos : http://is.gd/tMgWdy -- -------------------------------------------------------- -- Renseignez ici le numéro de téléinfo à prendre en compte, T1 ou T2 teleInfoNB = "T1" -- Renseignez ici le numéro de la première icône de jauge (HC_0.png) baseIconId = 1043 -- Renseignez ici les id Utilistaurs à qui transmettre le rapport userIdsToNotify = {2} -- Si vous utilisez la scène associée pour la MAJ, passer cette variable à true useSceneToRefresh = true -- Heure à laquelle vous souhaitez générer le rapport journalier reportTime = "23:59" -- Tarifs des kWh 2020 HT hcCost = 0.0696 hpCost = 0.1022 -- ID fake device power PAPP FakedeviceId = 375 deviceId = fibaro:getSelfId() --- Usefull Functions --- function setFakeDevice(idDevice, Value) local HC2 = Net.FHttp("127.0.0.1", 11111) local response, status, errorCode = HC2:PUT("/api/devices/"..idDevice, '{"properties":{"power":' .. Value .. '}}') HC2 = nil end function debug(text, color) color = color or "white" fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, text, "span")) end function setDevicePropertyValue(id, label, value) fibaro:call(id, "setProperty", "ui."..label..".value", value) end function getDevicePropertyValue(vDeviceid, propertyName) return fibaro:getValue(vDeviceid, "ui."..propertyName..".value") end function createGlobalIfNotExists(varName, defaultValue) if fibaro:getGlobal(varName) == "" then debug("Création de la variable "..varName.." avec comme valeur par défaut "..defaultValue) newVar = {} newVar.name = varName newVar.value = defaultValue HC2 = Net.FHttp("127.0.0.1", 11111) HC2:POST("/api/globalVariables", json.encode(newVar)) end end function refreshEcoDevicesStats() if not useSceneToRefresh then fibaro:call(deviceId, "pressButton", 5) fibaro:sleep(1000) end jsonStats = fibaro:getGlobalValue("ecoDevicesStats") if not string.find(jsonStats, '{"product":"Eco-') then debug("An error occured -> "..jsonStats, "red") debug("No stats found, please check documentation and configuration", "orange") return false end ecoDevicesStats = json.decode(jsonStats) tarif = string.format("%.2s", ecoDevicesStats[teleInfoNB.."_PTEC"]) conso = ecoDevicesStats[teleInfoNB.."_PAPP"] hcIndex = ecoDevicesStats[teleInfoNB.."_HCHC"] hpIndex = ecoDevicesStats[teleInfoNB.."_HCHP"] -- Ajout du if pour les index vides if (hcIndex ~= nil or hpIndex ~= nil) then hcIndexStr = "HC : "..string.format("%.3f", hcIndex/1000) hpIndexStr = "HP : "..string.format("%.3f", hpIndex/1000) fibaro:log("Tarif : "..tarif.." - Conso : "..conso.." VA".." - "..hcIndexStr.." - "..hpIndexStr) iconId = baseIconId if tarif == "HP" then activeIndex = hpIndexStr inactiveIndex = hcIndexStr iconId = iconId + 9 else activeIndex = hcIndexStr inactiveIndex = hpIndexStr end -- Mise à jour des Labels setDevicePropertyValue(deviceId, "labelTarif", tarif) setDevicePropertyValue(deviceId, "labelConso", conso.." VA") setDevicePropertyValue(deviceId, "labelActiveIndex", activeIndex.." kW") setDevicePropertyValue(deviceId, "labelInactiveIndex", inactiveIndex.." kW") setFakeDevice(FakedeviceId, conso) -- Mise à jour de l'icône conso = ecoDevicesStats[teleInfoNB.."_PAPP"] if conso >= 1000 then if conso < 9000 then iconId = iconId + tonumber(string.format("%.1s", conso)) else iconId = iconId + 8 end end fibaro:call(deviceId, "setProperty", "currentIcon", iconId) else debug("index HP/HC vides - pas de MAJ", "red") end return true end function refreshDayStats() if (hcIndex ~= nil or hpIndex ~= nil) then day_HC_Conso = hcIndex - day_HC_Index day_HP_Conso = hpIndex - day_HP_Index else debug("Pas de calcul des stats", "orange") end day_HC_ConsoStr = "HC : "..day_HC_Conso.." W" day_HP_ConsoStr = "HP : "..day_HP_Conso.." W" if tarif == "HP" then activeDayIndex = day_HP_ConsoStr inactiveDayIndex = day_HC_ConsoStr else activeDayIndex = day_HC_ConsoStr inactiveDayIndex = day_HP_ConsoStr end -- Calcul du coût en € dayCost = ((day_HP_Conso * hpCost) + (day_HC_Conso * hcCost)) / 1000 dayCost = dayCost + (dayCost * 0.2) dayCostStr = "Coût : "..string.format("%.2f", dayCost).." €" setDevicePropertyValue(deviceId, "labelActiveDayIndex", activeDayIndex) setDevicePropertyValue(deviceId, "labelInactiveDayIndex", inactiveDayIndex) setDevicePropertyValue(deviceId, "labelToday", dayCostStr) end function reportDayStats() message = "HC : "..day_HC_Conso.." Watts\nHP : "..day_HP_Conso.." Watts\n"..dayCostStr for k,v in pairs(userIdsToNotify) do fibaro:call(v, "sendEmail", "Consommation électrique du "..os.date("%d/%m/%Y"), message) end end function checkCptRaz() -- Tous les jours à minuit, je stockera valeur de l'index en cours if tostring(os.date("%H:%M")) == reportTime or day_HC_Index == 0 or ecoDevicesStats.raz then debug("Initialisation du compteur journalier", "green") if tostring(os.date("%H:%M")) == reportTime then reportDayStats() end day_HC_Index = hcIndex day_HP_Index = hpIndex fibaro:setGlobal("day_HC_Index", day_HC_Index) fibaro:setGlobal("day_HP_Index", day_HP_Index) while tostring(os.date("%H:%M")) == reportTime do fibaro:sleep(1000) end end end -- Création automatique des variable globales createGlobalIfNotExists("ecoDevicesStats", "0") createGlobalIfNotExists("day_HC_Index", "0") createGlobalIfNotExists("day_HP_Index", "0") -- Je rafraichis les stats une première fois pour initialiser mes variables locales if not refreshEcoDevicesStats() then return end day_HC_Index = tonumber(fibaro:getGlobalValue("day_HC_Index")) day_HP_Index = tonumber(fibaro:getGlobalValue("day_HP_Index")) -- Boucle principale while true do -- ## Pensez à bien choisir votre méthode de mise à jour des stats -- ## Méthode 1 (useSceneToRefresh = true) ## : Vous utilisez la Scene de Mise à jour des stats qui évite -- le changement d'icône indésirable -- ## Méthode 2 (useSceneToRefresh = false) ## : Pas besoin de créer la scene mais entrainera un court changement -- de l'icône durant le reresh contrairement à la précédente if not refreshEcoDevicesStats() then return end refreshDayStats() checkCptRaz() fibaro:sleep(2000) end -
tutoriel Eco-Devices Live & Day Reporter (Hp/hc)
BenjyNet a répondu à un(e) sujet de Gazous dans GCE Electronics
Tiens voilà la partie modifiée, je te laisse faire la comparaison avec ton code, parce que je sais plus bien ce que j'ai fait ! -- Ajout du if pour les index vides if (hcIndex ~= nil or hpIndex ~= nil) then hcIndexStr = "HC : "..string.format("%.3f", hcIndex/1000) hpIndexStr = "HP : "..string.format("%.3f", hpIndex/1000) fibaro:log("Tarif : "..tarif.." - Conso : "..conso.." VA".." - "..hcIndexStr.." - "..hpIndexStr) iconId = baseIconId if tarif == "HP" then activeIndex = hpIndexStr inactiveIndex = hcIndexStr iconId = iconId + 9 else activeIndex = hcIndexStr inactiveIndex = hpIndexStr end -- Mise à jour des Labels setDevicePropertyValue(deviceId, "labelTarif", tarif) setDevicePropertyValue(deviceId, "labelConso", conso.." VA") setDevicePropertyValue(deviceId, "labelActiveIndex", activeIndex.." kW") setDevicePropertyValue(deviceId, "labelInactiveIndex", inactiveIndex.." kW") setFakeDevice(FakedeviceId, conso) -- Mise à jour de l'icône conso = ecoDevicesStats[teleInfoNB.."_PAPP"] if conso >= 1000 then if conso < 9000 then iconId = iconId + tonumber(string.format("%.1s", conso)) else iconId = iconId + 8 end end fibaro:call(deviceId, "setProperty", "currentIcon", iconId) else debug("index HP/HC vides - pas de MAJ", "red") end Et là aussi il me semble : function refreshDayStats() if (hcIndex ~= nil or hpIndex ~= nil) then day_HC_Conso = hcIndex - day_HC_Index day_HP_Conso = hpIndex - day_HP_Index else debug("Pas de calcul des stats", "orange") end day_HC_ConsoStr = "HC : "..day_HC_Conso.." W" day_HP_ConsoStr = "HP : "..day_HP_Conso.." W" if tarif == "HP" then activeDayIndex = day_HP_ConsoStr inactiveDayIndex = day_HC_ConsoStr else activeDayIndex = day_HC_ConsoStr inactiveDayIndex = day_HP_ConsoStr end -- Calcul du coût en € dayCost = ((day_HP_Conso * hpCost) + (day_HC_Conso * hcCost)) / 1000 dayCost = dayCost + (dayCost * 0.2) dayCostStr = "Coût : "..string.format("%.2f", dayCost).." €" setDevicePropertyValue(deviceId, "labelActiveDayIndex", activeDayIndex) setDevicePropertyValue(deviceId, "labelInactiveDayIndex", inactiveDayIndex) setDevicePropertyValue(deviceId, "labelToday", dayCostStr) end -
tutoriel Eco-Devices Live & Day Reporter (Hp/hc)
BenjyNet a répondu à un(e) sujet de Gazous dans GCE Electronics
Je te dirai demain, j'ai pas le code sous la main. -
tutoriel Eco-Devices Live & Day Reporter (Hp/hc)
BenjyNet a répondu à un(e) sujet de Gazous dans GCE Electronics
Oui 3s ça marche. Moi aussi ça plantait quand l'ecodevice remontait une chaine vide. J'ai donc un peu adapté le code pour éviter celà. -
Ah merde désolé, j'avais pas vu !
-
Hey Stef, je t'avais parlé un jour d'un dessin pour un chauffe eau allumé/éteint tu pourrais me faire un petit truc ? Moi j'ai fait ça mais peut être qu'on peut faire mieux.
-
Roh la vache c'est beau !!
-
script Script: custom "callAction"
BenjyNet a répondu à un(e) sujet de Krikroff dans Quick App Developpeur
Putain c'est nickel tes présentations de code comme ça @Krikroff ! Ça donne envie d'acheter, tu fais iech -
tutoriel Eco-Devices Live & Day Reporter (Hp/hc)
BenjyNet a répondu à un(e) sujet de Gazous dans GCE Electronics
Y'a pas à chier, graphiste c'est un métier -
Dans le même genre, le coup des visières : https://retrolabs.com/3d-prints/3d-printed-face-shield-with-10-mil-pvc et https://www.youmagine.com/designs/protective-visor-by-3dverkstan
-
Dis moi , tu te fais payer les matières premières ?
-
On doit être plusieurs, rien qu'ici, à pouvoir fabriquer je pense.
-
T'as vu que dans le nouveau slic3r ils ont amélioré la tour de changement de couleur pour moins en perdre justement :
-
Ok good
-
T'as des contraintes géométriques là, fais attention à bien les respecter.
-
Elle est orienté dans ce sens ? Je l'aurai peut être pas fait comme ça en voyant la pièce de loin.
-
Regarde si sur prusa t'as pas le fichier .m3f avec tous les paramètres.
-
Ouais parce que moi ça me gênait grave quand il fallait faire des pièces qui s'assemblent assez précisément. D'office c'est très bien ! Comme quoi prusa ça déchire !
-
2 trucs sympa dans le nouveau slic3r : https://help.prusa3d.com/fr/article/elephant-foot-compensation_114487 et https://help.prusa3d.com/en/article/variable-layer-height-function_1750
-
Oui mais qui dit prix officiel moins cher, dit prix d'achat moins cher.... donc prix artisan moins cher ! Faudra que je regarde à combien il est tombé en prix de gros tiens.
-
Putain en regardant l'image, je me disais..... "Mais comment il fait tenir ses bobines ???" ...Et ça a bien mis 5min avant de me dire "Merde la photo est tournée !!" ...Quel con je suis....
-
Moi j'achète les sachets de silicate sur Amazon en gros lot.
-
Moi les bobines elles sont toutes sous vide d'air avec sachet deshydratant quand je les utilise pas.
-
Oui Solidworks faut une licence. Moi je l'utilise parce que je l'enseigne Pour la marque de filament, j'ai exclusivement du Prusament. J'ai jamais rien testé d'autre.
-
Moi c'est du PETG souvent aussi, et j'imprime des pièces que je dessine sous Solidworks. Surtout des gabarits d'usinage, ou des pièces mécaniques utiles...quasi pas de déco.