Aller au contenu

BenjyNet

Membres confirmés
  • Compteur de contenus

    5 380
  • Inscription

  • Dernière visite

Tout ce qui a été posté par BenjyNet

  1. BenjyNet

    Caméras Réseau IP Hikvision

    Ouais elle est très bien ! Un peu imposante mais ça marche très bien. Faut que je m'en prenne 2 autres, une pour mettre dans le garage et une autre à son entrée...Comme ça je verrai le livreur du début à la fin quand je suis pas là. Héhéhé
  2. Ouais c'est annoncé mais pas encore dispo je crois. Tout du moins pour le 24 ports.
  3. BenjyNet

    Eco-Devices Live & Day Reporter (Hp/hc)

    Oui t'as bien fait, c'est inutile pour toi.
  4. BenjyNet

    Eco-Devices Live & Day Reporter (Hp/hc)

    -------------------------------------------------------- -- 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
  5. BenjyNet

    Eco-Devices Live & Day Reporter (Hp/hc)

    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
  6. BenjyNet

    Eco-Devices Live & Day Reporter (Hp/hc)

    Je te dirai demain, j'ai pas le code sous la main.
  7. BenjyNet

    Eco-Devices Live & Day Reporter (Hp/hc)

    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à.
  8. BenjyNet

    Banque Icones Hcl, HC2 et HC3

    Ah merde désolé, j'avais pas vu !
  9. BenjyNet

    Banque Icones Hcl, HC2 et HC3

    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.
  10. BenjyNet

    Banque Icones Hcl, HC2 et HC3

    Roh la vache c'est beau !!
  11. BenjyNet

    Script: custom "callAction"

    Putain c'est nickel tes présentations de code comme ça @Krikroff ! Ça donne envie d'acheter, tu fais iech
  12. BenjyNet

    Eco-Devices Live & Day Reporter (Hp/hc)

    Y'a pas à chier, graphiste c'est un métier
  13. BenjyNet

    Ventilation - Impression 3D

    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
  14. BenjyNet

    Ventilation - Impression 3D

    Dis moi , tu te fais payer les matières premières ?
  15. BenjyNet

    Ventilation - Impression 3D

    On doit être plusieurs, rien qu'ici, à pouvoir fabriquer je pense.
  16. BenjyNet

    Ventilation - Impression 3D

    T'as vu que dans le nouveau slic3r ils ont amélioré la tour de changement de couleur pour moins en perdre justement :
  17. BenjyNet

    Ventilation - Impression 3D

    Ok good
  18. BenjyNet

    Ventilation - Impression 3D

    T'as des contraintes géométriques là, fais attention à bien les respecter.
  19. BenjyNet

    Ventilation - Impression 3D

    Elle est orienté dans ce sens ? Je l'aurai peut être pas fait comme ça en voyant la pièce de loin.
  20. BenjyNet

    Ventilation - Impression 3D

    Regarde si sur prusa t'as pas le fichier .m3f avec tous les paramètres.
  21. BenjyNet

    Ventilation - Impression 3D

    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 !
  22. BenjyNet

    Ventilation - Impression 3D

    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
  23. BenjyNet

    Fibaro Intercom

    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.
  24. BenjyNet

    Ventilation - Impression 3D

    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....
  25. BenjyNet

    Ventilation - Impression 3D

    Moi j'achète les sachets de silicate sur Amazon en gros lot.
×