Aller au contenu

flacon030

Membres confirmés
  • Compteur de contenus

    1 431
  • Inscription

  • Dernière visite

  • Jours gagnés

    44

Tout ce qui a été posté par flacon030

  1. curieux, je suis toujours en 5.2, la box ne m'a pas signalé de mise a jour
  2. flacon030

    QuickApps - Nuki

    merci pour ces retour d'experience c'est pour quel version de serrure? Mezrci
  3. Encore une petite modification de mon installation électrique Je viens de placer un inverseur de source entre l'onduleur et le disjoncteur abonné En cas de coupure EDF l'onduleur reprend automatiquement la charge de la maison, si bien sur il y a de la production solaire et ou de l’énergie dans les batteries J'en ai profité pour faire une refonte de l’armoire informatique et du tableau électrique
  4. Bonjour Je vous propose un QA qui permet d'envoyer vos index de production vers le site dbpv Il faut bien évidement avoir un compte sur leur site https://www.bdpv.fr/fr/ il faudra modifier le code du QA pour que cela puisse fonctionner tel que: l'id du compteur de production photovoltaïque, le user, et l'api key J'ai mis en place un bouton pour envoyer manuellement les index, si non ils partent automatiquement a 4h00 du matin (possible de le modifier dans le code) Il y a un compte a rebours pour savoir quant partira le prochain index Et j'ai mis un status quant les données sont bien reçue par le site DBPV (visible aussi dans le debug) Mise a jour du QA en version 1.4 du 03/01/26 J'ai ajouté un compte a rebours dynamique qui s'actualise toutes les minutes J'ai aussi ajouter les variables globale pour que vous puissiez mettre vos données dans les variables sans toucher au code Je ne suis pas sur qu'elles se crées seul, si besoin les mettre manuellement Petit ajout du tag du QuickApp, et du debug pour savoir si le QA a bien été initialisé Modification de la réponse dans le status qui est a présent correctement formaté du type "BDPV : OK - Mise à jour de la production 5.234 kWh " DEVICE_ID Variable de texte ID du compteur de production en KW (le Qa fait la conversion pour avoir des Wh comme le demande le site dbpv) BDPV_USER Variable de texte nom du user BDPV_API_KEY Variable de texte APIKEY du compte dbpv BDPV_SOURCE Variable de texte homeassistant (texte a mettre) BDPV_TYPE Variable de texte onduleur (texte a mettre) NEXT_SEND Variable de texte valeur du compte a rebourgs (ne rien mettre dans cette variable) STATUS_BDPV Variable de texte retour json de dbpv si tous se passe comme il faut (ne rien mettre dans cette variable) Si tous se passe bien, vous devriez voir dans le debug le code suivant si vous faite un envoie manuel [03.01.2026] [17:31:45] [DEBUG] [QA_DBPV_1169]: ------------------------ [03.01.2026] [17:31:45] [DEBUG] [QA_DBPV_1169]: QuickApp BDPV initialisé [03.01.2026] [17:31:45] [DEBUG] [QA_DBPV_1169]: ------------------------ [03.01.2026] [17:31:46] [DEBUG] [QA_DBPV_1169]: Envoi index dans 10h 28min [03.01.2026] [17:31:58] [TRACE] [QA_DBPV_1169]: onAction: {"manual":true,"actionName":"UIAction","deviceId":1169,"args":["onReleased","button_ID_0_1"]} [03.01.2026] [17:31:58] [TRACE] [QA_DBPV_1169]: UIEvent: {"elementName":"button_ID_0_1","eventType":"onReleased","deviceId":1169,"values":[]}[03.01.2026] [17:31:58] [DEBUG] [QA_DBPV_1169]: Index compteur (kWh) : 7834.8344922222 [03.01.2026] [17:31:58] [DEBUG] [QA_DBPV_1169]: Index converti (Wh) : 7834834 [03.01.2026] [17:31:58] [DEBUG] [QA_DBPV_1169]: URL envoyée à BDPV : https://www.bdpv.fr/webservice/majProd/expeditionProd_v3.php?util=BDPV_USER&apiKey=BDPV_API_KEY&source=homeassistant&typeReleve=onduleur&index=7834834 [03.01.2026] [17:31:58] [DEBUG] [QA_DBPV_1169]: BDPV : OK - Mise à jour de la production -0.001 kWh Ci joint l’icône du QA DBPV_V1.4.fqa
      • 2
      • Like
  5. 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.3 avec compte a rebourg dynamique et ajout des variables -- ================================ -- INITIALISATION -- ================================ function QuickApp:onInit() self:debug("QuickApp BDPV initialisé") -- Lecture des variables éditables self.DEVICE_ID = tonumber(self:getVariable("DEVICE_ID")) self.BDPV_USER = self:getVariable("BDPV_USER") self.BDPV_API_KEY = self:getVariable("BDPV_API_KEY") self.BDPV_SOURCE = self:getVariable("BDPV_SOURCE") or "homeassistant" self.BDPV_TYPE = self:getVariable("BDPV_TYPE") or "onduleur" if not self.DEVICE_ID then self:error("ERREUR : DEVICE_ID invalide dans les variables !") end -- Bouton "Envoyer maintenant" self:updateView("sendButton", "text", "Envoyer maintenant") -- Planification automatique à 4h00 self:scheduleDailySend(4, 0) end -- ================================ -- BOUTON MANUEL -- ================================ function QuickApp:sendNow() self:sendBDPV() end -- ================================ -- RAFRAICHISSEMENT COMPTE À REBOURS -- ================================ function QuickApp:startCountdownUpdater(nextRun) -- Stoppe l'ancien timer si présent if self.countdownTimer then clearInterval(self.countdownTimer) end -- Mise à jour chaque minute self.countdownTimer = setInterval(function() local now = os.time() local remaining = nextRun - now if remaining < 0 then remaining = 0 end local minutesTotal = math.floor(remaining / 60) local hours = math.floor(minutesTotal / 60) local minutes = minutesTotal % 60 local text = string.format("Envoi index dans %02dh %02dmin", hours, minutes) -- Mise à jour dans l’UI self:updateView("nextSendLabel", "text", text) -- Mise à jour dans une variable self:setVariable("NEXT_SEND", text) -- >>> NOUVEAU : DEBUG DU COMPTE À REBOURDS <<< self:debug(text) end, 60 * 1000) -- Forcer une première mise à jour immédiate (pour éviter d’attendre 1 min) local minutesTotal = math.floor((nextRun - os.time()) / 60) local hours = math.floor(minutesTotal / 60) local minutes = minutesTotal % 60 local text = string.format("Envoi index dans %02dh %02dmin", hours, minutes) self:updateView("nextSendLabel", "text", text) self:setVariable("NEXT_SEND", text) -- DEBUG immédiat self:debug(text) end -- ================================ -- PLANIFICATION QUOTIDIENNE -- ================================ function QuickApp:scheduleDailySend(h, m) local now = os.time() local t = os.date("*t") local nextRun = os.time({ year = t.year, month = t.month, day = t.day, hour = h, min = m, sec = 0 }) -- Si l'heure est déjà passée → lendemain if nextRun <= now then nextRun = nextRun + 24 * 60 * 60 end local delaySeconds = nextRun - now -- Démarre la mise à jour dynamique du compte à rebours self:startCountdownUpdater(nextRun) -- (Première mise à jour immédiate) self:updateView("nextSendLabel", "text", string.format("Envoi index dans %02dh %02dmin", math.floor(delaySeconds / 3600), math.floor((delaySeconds % 3600) / 60) ) ) -- Planification de l'envoi réel setTimeout(function() self:sendBDPV() self:scheduleDailySend(h, m) end, delaySeconds * 1000) end -- ================================ -- ENVOI VERS BDPV -- ================================ function QuickApp:sendBDPV() -- Lecture compteur HC3 (kWh) local raw = fibaro.getValue(self.DEVICE_ID, "value") raw = tostring(raw):gsub(",", ".") local index_kwh = tonumber(raw) if not index_kwh then local msg = "Valeur compteur invalide" self:error(msg) self:updateView("statusLabel", "text", msg) self:setVariable("STATUS_BDPV", msg) return end -- Conversion en Wh local index_wh = math.floor(index_kwh * 1000 + 0.5) self:debug("Index compteur (kWh) : " .. index_kwh) self:debug("Index converti (Wh) : " .. index_wh) -- Construction URL local url = "https://www.bdpv.fr/webservice/majProd/expeditionProd_v3.php" .. "?util=" .. tostring(self.BDPV_USER) .. "&apiKey=" .. tostring(self.BDPV_API_KEY) .. "&source=" .. tostring(self.BDPV_SOURCE) .. "&typeReleve=" .. tostring(self.BDPV_TYPE) .. "&index=" .. tostring(index_wh) self:debug("URL envoyée à BDPV : " .. url) -- Envoi HTTP GET local http = net.HTTPClient() http:request(url, { options = { method = "GET", timeout = 8000 }, success = function(response) local cleaned = response.data:gsub('{"codeRetour" ?: ?"[^"]*",?"texteRetour" ?:?"?', "") cleaned = cleaned:gsub('"}$', "") local msg = "BDPV : " .. cleaned self:debug(msg) self:updateView("statusLabel", "text", msg) 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
  6. il serait possible d'avoir un exemple Merci
  7. 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
  8. flacon030

    QuickApps - Nuki

    Merci pour ces infos du coup quant est t'il du QA sur les nouvelles versions?
  9. flacon030

    Serrure Danalock V3

    Bonjour a tous Pour ceux d'entre vous qui on des danalock, ces dernières fonctionnent toujours? Car j'en avais deux et les deux sont tombé en panne La première en juin de cet année que j'ai remplacé, et la 2eme il y a quelques jours Elles avait environ 6 ans Pour mon cas pour les deux les symptômes ont été les mêmes A savoir un décalage de la position des butées d'ouverture au bout des quelques cycles la serrure ne bouge plus et reste fermé Après une re calibration cela fonctionne a nouveau et se décale a nouveau dans le temps après quelques utilisations Et je voie qu'il est de plus en plus difficile de se procurer de nouvelles serrure en z-wave Du coup je me pose la question de la remplacé par une nuki ou autre en z-wave Quel solution avez vous? Merci
  10. flacon030

    QuickApps - Nuki

    Bonjour a tous J'ai une de mes deux danalock qui ne fonctionne plus comme il faut La question se pose de savoir si je la remplace par une danalock ou une nuki Les dernières version sont compatible Z-Wave chez nuki ou il faut un bridge? Pour ceux d'entre vous qui ont des nuki cela vous convient t'il? quels sont ses points faibles? que donne son autonomie? Ou en trouver une? Merci
  11. Bonjour En principe cela ne pose pas de problème, il faudra juste plus de temps pour recharger la batterie
  12. je commence a maitrisé et a obtenir les résultats que je veux, c'est plutôt plaisant
  13. Mise a jour des graphes de précipitation mensuel et annuel qui fonctionne a présent Sur ce coup merci chat GPT, sans cette solution je n'aurais pas trouvé Voici le code pour le cumul mensuel import "date" // --- 1️⃣ Max journalier --- dailyMax = from(bucket: "HC3") |> range(start: -365d) |> filter(fn: (r) => r["_measurement"] == "climate") |> filter(fn: (r) => r["_field"] == "value") |> filter(fn: (r) => r["deviceID"] == "1114") |> filter(fn: (r) => r["deviceName"] == "🌧 Jardin Pluie 24h") |> aggregateWindow(every: 1d, fn: max, createEmpty: false) |> keep(columns: ["_time", "_value"]) // --- 2️⃣ Ajouter un identifiant AAAA-MM avec mois sur 2 chiffres --- dailyWithMonth = dailyMax |> map(fn: (r) => ({ _time: r._time, _value: r._value, year: string(v: date.year(t: r._time)), month: date.month(t: r._time) })) |> map(fn: (r) => ({ _time: r._time, _value: r._value, monthID: r.year + "-" + (if r.month < 10 then "0" + string(v: r.month) else string(v: r.month)) })) // --- 3️⃣ Regrouper par mois et cumuler --- monthly = dailyWithMonth |> group(columns: ["monthID"]) |> reduce( identity: { total: 0.0 }, fn: (r, accumulator) => ({ total: accumulator.total + r._value }) ) |> map(fn: (r) => ({ _time: r.monthID, _value: r.total })) |> sort(columns: ["_time"]) monthly Et voici le code pour un cumul annuel sur une période de 5 ans import "date" // --- 1️⃣ Max journalier sur 5 ans --- dailyMax = from(bucket: "HC3") |> range(start: -5y) // les 5 dernières années |> filter(fn: (r) => r["_measurement"] == "climate") |> filter(fn: (r) => r["_field"] == "value") |> filter(fn: (r) => r["deviceID"] == "1114") |> filter(fn: (r) => r["deviceName"] == "🌧 Jardin Pluie 24h") |> aggregateWindow(every: 1d, fn: max, createEmpty: false) |> keep(columns: ["_time", "_value"]) // --- 2️⃣ Ajouter l'année --- dailyWithYear = dailyMax |> map(fn: (r) => ({ _time: r._time, _value: r._value, year: string(v: date.year(t: r._time)) })) // --- 3️⃣ Grouper par année et cumuler les max journaliers --- yearly = dailyWithYear |> group(columns: ["year"]) |> reduce( identity: { total: 0.0 }, fn: (r, accumulator) => ({ total: accumulator.total + r._value }) ) |> map(fn: (r) => ({ _time: r.year, _value: r.total })) |> sort(columns: ["_time"]) yearly
  14. Une fois de plus en hiver les serveur netatmo sont tombés Voila pourquoi je fais tous pour supprimé ces capteurs, heureusement il n'en reste plus qu'un pour ma part a être remplacé La capteur devrait arrivé dans un mois, car en rupture de stock
  15. Bonjour Il est possible d'envoyer une requête http sur une HC3 pour qu'une scène puisse s’exécute de ce type par exemple http://192.168.1.92/api/scenes/140/execute mais comment y mettre le user et le password de la HC3? Merci
  16. flacon030

    Support Gea

    bonjour je voudrais ajouter un intervalle periodique a cette commande Je voudrais qu'elle ne soit fonctionnel que du 1er juin au 30 septembre Merci GEA.add(true, 30, "ouverture volets Ch1 16H35", {{"Time", "16:35", "16:36"}, {"Open", id["ROLLER_CH1"], 92}})
  17. flacon030

    QA telecommande

    Bonjour Je viens aussi de m’apercevoir que deux nouveaux onglets sont apparue "onLongPressDown" et onLongPressReleased" Cela correspond a quoi?
  18. Bonjour Ce post date un peut J'ai un problème avec le QA de pilotage de la TV sony https://marketplace.fibaro.com/items/sony-bravia-remote-control Ce dernier fonctionne, mais si,l'on veut faire une scenarios en mode bloc quant on sélectionne le QA et que l'on choisi "appuyer sur le bouton" puis "choisir" les champs sont vide se qui n’était pas le cas dans les versions précédente de la HC3
  19. Petite mise a jour avec l'ajout du facteur de puissance QA disponible sur la première page
  20. Je viens de trouver la solution pour le problème des graph mensuel il faut remplacer les 30d par 1mo (mois)
  21. Bon je progresse encore un peu sous grafana a présent se sont les précipitation que je viens de récupérer Par heure / par jour / par mois Et je viens de résoudre le problème des graph mensuel il faut remplacer 30d par 1mo (pour mois)
  22. flacon030

    telecommande virtuel

    Ha oui c'est beau coups mieux Merci
  23. flacon030

    QA telecommande

    Personne ne peut donner une piste pour s'avoir comment associer un bouton d'un Quick app a une télécommande virtuel de ce même Quick app? Je voudrais associer un bouton de ce type a cela En partant de "paramètres" "ajouter un appareil" "autre appareil" "quick app" télécommande" Le but étant de créer une télécommande virtuel pour lancer des "scénarios" Mais si vous avez d'autres solution je suis preneur Merci
  24. flacon030

    telecommande virtuel

    Bon ce n'ai pas propre comme code je ne sais pas simplifier les chose mais voici Un QA pour la gestion d'un player multimedia R_Volution https://rvolution.store/fr/160-lecteurs-multimedias Perso j'ai pris ce modèle https://rvolution.store/fr/lecteurs-multimedias/6272-rvolution-player-one-8k.html C'est un player multimédia qui tourne sous android, se qui permet d'installer d'autres applications Pour ma par j'y est ajouté une App IPTV, un smarttube (un youtube sans publicité), plex, ect.. L'avantage de ce player c'est qu'il lit tous formats vidéo et audio, le tous en très haute qualité (Les formats DTSX, dolby atmos, dolby vision, HDR, HDR10, HDR10+ sont tous fonctionnel) Je rippe mes DVD 4K avec make MKV et les place sur mon NAS Qnap 855x, et cela me permet de lire mes médias sans compression en qualité optimum a la façon d'un netflix, mais avec mes propres sources en 4K natif Cet équipement sera une des pièces principal de ma futur salle de cinéma, qui sera bien évidement piloté par la HC3 pour tous les scenarios d'ambiance lumineuse et qui permettra de remplacer toutes les télécommande par l’intermédiaire de scenarios J'ai mis les principales commandes de la télécommande Ci joint les doc pour les API pour ceux qui voudraient faire plus R_Volution.fqa IP Control for R_volution Amlogic based media players.pdf
  25. flacon030

    QA telecommande

    Bonjour Comment attribuer un bouton a un QA télécommande -- Remote controller type have no actions to handle -- Method for emitting central scene events. Default value for keyAttribute is "Pressed" -- Sample usage: self:emitCentralSceneEvent(1, "Pressed") function QuickApp:emitCentralSceneEvent(keyId, keyAttribute) if keyAttribute == nil then keyAttribute = "Pressed" end local eventData = { type = "centralSceneEvent", source = self.id, data = { keyAttribute = keyAttribute, keyId = keyId } } api.post("/plugins/publishEvent", eventData) end -- To update controls you can use method self:updateView(<component ID>, <component property>, <desired value>). Eg: -- self:updateView("slider", "value", "55") -- self:updateView("button1", "text", "MUTE") -- self:updateView("label", "text", "TURNED ON") -- This is QuickApp inital method. It is called right after your QuickApp starts (after each save or on gateway startup). -- Here you can set some default values, setup http connection or get QuickApp variables. -- To learn more, please visit: -- * https://manuals.fibaro.com/home-center-3/ -- * https://manuals.fibaro.com/home-center-3-quick-apps/ function QuickApp:onInit() self:debug("onInit") -- Setup supported keys and attributes of the device -- Scenes will display possible triggers according to these values self:updateProperty("centralSceneSupport", { { keyAttributes = { "Pressed","Released","HeldDown","Pressed2","Pressed3" }, keyId = 1 }, { keyAttributes = { "Pressed","Released","HeldDown","Pressed2","Pressed3" }, keyId = 2 }, { keyAttributes = { "Pressed","Released","HeldDown","Pressed2","Pressed3" }, keyId = 3 }, { keyAttributes = { "Pressed","Released","HeldDown","Pressed2","Pressed3" }, keyId = 4 }, { keyAttributes = { "Pressed","Released","HeldDown","Pressed2","Pressed3" }, keyId = 5 }, }) end ??? function QuickApp:onClickButton() self:Btn("") end
×
×
  • Créer...