flacon030 Posté(e) hier à 05:57 Signaler Posté(e) hier à 05:57 (modifié) Bonjour a tous Je voudrais envoyer tous les nuit vers 4h du matin l'index de production de mes panneaux vers le site dbpv La requête est la suivante https://www.bdpv.fr/webservice/majProd/expeditionProd_v3.php?util=xxxx-jc&apiKey=xxxx&source=homeassistant&typeReleve=onduleur&index=7 562738 ?util (nom d'utilisateur sur le site) apikey (apikey pour mise a jour de la production) index de production (7562738) comment le faire selon vous ? L'id de mon compteur est le 600 sachant que la valeur qu'attend dbpv doit être en Wh sans virgule Modifié hier à 08:20 par flacon030
jojo Posté(e) hier à 11:24 Signaler Posté(e) hier à 11:24 via un QA classique qui compose ton url comme tu veux. Ensuite, tu utilises GEA comme trigger tous les jours à 4h00
flacon030 Posté(e) il y a 21 heures Auteur Signaler Posté(e) il y a 21 heures il serait possible d'avoir un exemple Merci
Lazer Posté(e) il y a 20 heures Signaler Posté(e) il y a 20 heures Le QA sera à écrire entièrement, mais tu peux t'inspirer de la documentation Fibaro officielle des nombreux exemples du forum. Pour la requête HTTP, voir :
flacon030 Posté(e) il y a 18 heures Auteur Signaler Posté(e) il y a 18 heures (modifié) Bon une fois de plus merci chatgpt pour son aide Je viens de faire un QA qui envoie mes données a 4:00 les index de production de mon installation -- QuickApp : BDPV Updater HC3 -- Version : 1.0 -- ================================ -- CONFIGURATION UTILISATEUR -- ================================ local DEVICE_ID = 600 -- ID du compteur de production de la HC3 local BDPV_USER = "xxxxx" --nom du user sur dbpv local BDPV_API_KEY = "xxxx" --apikey sur dbpv local BDPV_SOURCE = "homeassistant" -- ne pa toucher local BDPV_TYPE = "onduleur" -- ne pas toucher -- ================================ -- INITIALISATION -- ================================ function QuickApp:onInit() self:debug("QuickApp BDPV initialisé") -- Bouton : envoyer maintenant self:updateView("sendButton", "text", "Envoyer maintenant") -- Mise à jour automatique chaque jour à 4:00 (mettez l'heure que vous voulez) self:scheduleDailySend(4, 0) end -- ================================ -- ENVOI MANUEL PAR BOUTON -- ================================ function QuickApp:sendNow() self:sendBDPV() end -- ================================ -- ENVOI AUTO -- ================================ function QuickApp:scheduleDailySend(h, m) local now = os.time() local nextRun = os.time({ year = os.date("*t").year, month = os.date("*t").month, day = os.date("*t").day, hour = h, min = m, sec = 0 }) if nextRun <= now then nextRun = nextRun + 24*60*60 -- ajouter 24h si l'heure est passée end local delaySeconds = nextRun - now local delayMinutesTotal = math.floor(delaySeconds / 60) local hours = math.floor(delayMinutesTotal / 60) local minutes = delayMinutesTotal % 60 local countdownText = string.format("Envoi index dans %02dh %02dmin", hours, minutes) -- Mise à jour variable Dashboard et label UI self:setVariable("NEXT_SEND", countdownText) self:updateView("nextSendLabel", "text", countdownText) -- Debug : on affiche seulement le texte final, pas de répétition self:debug(countdownText) -- Planification de l'envoi setTimeout(function() self:sendBDPV() self:scheduleDailySend(h, m) end, delaySeconds * 1000) end -- ================================ -- ENVOI BDPV (fonction) -- ================================ function QuickApp:sendBDPV() -- Lecture du compteur en kWh (valeur en string) local raw = fibaro.getValue(DEVICE_ID, "value") raw = tostring(raw):gsub(",", ".") -- remplace virgule par point local index_kwh = tonumber(raw) if not index_kwh then self:error("Valeur compteur invalide : " .. tostring(raw)) self:setVariable("STATUS_BDPV", "Valeur compteur invalide") self:updateView("statusLabel", "text", "Valeur compteur invalide") return end -- Conversion kWh -> Wh et arrondi à l'entier le plus proche local index_wh = math.floor(index_kwh * 1000 + 0.5) -- arrondi correct self:debug("Index compteur (kWh) : " .. tostring(index_kwh)) self:debug("Index converti (Wh) : " .. tostring(index_wh)) -- VERIF: si index_wh est inférieur au dernier envoyé, log et sortie (prévention -11) -- (optionnel : tu peux stocker le dernier index dans un variable persistante) -- construction de l'URL : attention à la valeur de BDPV_SOURCE local url = "https://www.bdpv.fr/webservice/majProd/expeditionProd_v3.php" .. "?util=" .. tostring(BDPV_USER) .. "&apiKey=" .. tostring(BDPV_API_KEY) .. "&source=" .. tostring(BDPV_SOURCE) .. "&typeReleve=" .. tostring(BDPV_TYPE) .. "&index=" .. tostring(index_wh) -- Debug: montrer exactement ce qu'on envoie (utile pour logs) self:debug("URL envoyée à BDPV: " .. url) -- Requête HTTP GET local http = net.HTTPClient() http:request(url, { options = { method = "GET", timeout = 8000 }, success = function(response) local msg = "BDPV : " .. response.data self:debug(msg) -- Mise à jour label UI self:updateView("statusLabel", "text", msg) -- Mise à jour variable Dashboard self:setVariable("STATUS_BDPV", msg) end, error = function(err) local msg = "Erreur : " .. tostring(err) self:error(msg) self:updateView("statusLabel", "text", msg) self:setVariable("STATUS_BDPV", msg) end }) end Modifié il y a 1 heure par flacon030 2
Messages recommandés