TitiXsi Posté(e) le 5 janvier Signaler Posté(e) le 5 janvier Hello, Question de noob sur une requête https Etant chez Urban Solar Energy (USE) avec la Batterie Virtuelle (BV), j'aimerai bien connaitre nativement la valeur de celle-ci (nativement = valeur calculée par USE). Depuis peu de temps, USE donne à la fin de chaque période mensuelle (si on est mensualisé) la valeur de BV sur une page html liée à notre compte accessible via l'adresse : https://espace-client.urbansolar.energy/pdl/<NUMERO DU POINT DE LIVRAISON (PDL)>/ma-conso pdl, login & password sont évidement nécessaire. Si j'enregistre cette page, j'obtient un html (css), et toutes les infos sont accessibles (ne pas préter attention au caractère NNBSP qui correspond à l'encodage d'un espace étroit) Est'il possible de récupérer ces 2 informations sur cette page ? Merci
Lazer Posté(e) le 5 janvier Signaler Posté(e) le 5 janvier Une page HTML, c'est du format XML. Avec string.match() et la bonne expression régulière tu peux extraire les informations désirées entre les balises. Tu trouveras des exemples sur le forum car ce sujet a déjà été traité dans le passé (même si le format XML est complètement tombé en désuétude, avantageusement remplacé par le JSON) Mais c'est un peu pénible à faire, surtout si la page Web change sans prévenir (nouvelle mise en forme, etc) Cela dit je pense que tu prends le problème à l'envers. Je suppose que USE ne propose pas d'API. Mais alors pourquoi ne pas aller prendre l'information à la source ? Idéalement sur ton compteur Linky, avec la télé-information, tu auras la mesure d'injection en temps-réel, et tu pourras faire tes statistiques par jour, moins, année. Ou bien sur ton compte Enedis, puisque les infos du Linky y remontent également. Ainsi, en prenant l'information à la source, depuis le compteur, tu pourras en plus vérifier que ce que tu vois dans ton dashboard USE correspond à ce que tu as réellement injecté.
TitiXsi Posté(e) le 5 janvier Auteur Signaler Posté(e) le 5 janvier Je fais déjà cette opération sur excel. Et je pourrais le faire via les datas enphase via la qa partagée. Néanmoins, la problématique de la batterie virtuelle est qu'elle ne peut jamais être négative. Hors sur une même période mensuelle, elle peut très bien passé plusieurs fois en positif et valeurs nulles. Ce que ne me donnera pas le linky, enedis ou enphase. Au final, la valeur retenue sera celle correspondante à la fin de période mensuelle. J'aimerais avoir cette information pour suivre ma BV de façon fiable et en lien avec ce qui fera foi pour le calcul final de consommation. Je t'avoue avoir déjà bien cherché sur le forum, mais j'ai sûrement très mal utilisé les mots clefs. Je n'ai pas cherché XML par exemple. Je suis totalement en ligne sur le fait que si USE change de structure, mon code sera à revoir... Et c'est bien le point très négatif du développement. USE m'ayant confirmé qu'ils ne proposaient pas d'api... Faut-il comprendre qu'il y en a une mais qu'ils ne veulent pas la soumettre pour éviter une saturation de leurs serveurs, c'est possible... Concernant la qa que j'ai partagée sur enphase, la partie extraction était déjà faite par tes soins, j'ai juste appelé un autre json et joué avec l'arborescence. (Pas très compliqué) Étant une quiche dev web et associé, j'ai préféré poser la question dès que j'ai vu qu'il ne s'agissait pas d'un Json.
Lazer Posté(e) le 5 janvier Signaler Posté(e) le 5 janvier Hum... Je pense que tu pourrais faire le calcul de la charge de la BV avec ta domotique, en faisant la somme de ce qui est injecté et de ce qui est soutiré (l'une des 2 valeurs étant négative), depuis que tu as activé ce contrat chez USE. Met ta ligne HTML au format texte (et pas image), j'essaierai d'écrire la regex correspondante.
TitiXsi Posté(e) le 5 janvier Auteur Signaler Posté(e) le 5 janvier il y a 13 minutes, Lazer a dit : Hum... Je pense que tu pourrais faire le calcul de la charge de la BV avec ta domotique, en faisant la somme de ce qui est injecté et de ce qui est soutiré (l'une des 2 valeurs étant négative), depuis que tu as activé ce contrat chez USE. Compliqué sans connaître précisément l'historique des passages à zéro sur la BV. Néanmoins, J'ai un palier au 28 déc. Donc je dois pouvoir faire le calcul depuis ce jour là. Même si celà ne m'aidera pas si ma BV est nulle lundi à 8h du matin et positive à 16h puis nulle à 23h59.. il y a 17 minutes, Lazer a dit : Met ta ligne HTML au format texte (et pas image), j'essaierai d'écrire la regex correspondante. La ligne contient pas mal d'info, j'essaie d'épurer les infos perso et poste. Merci.
TitiXsi Posté(e) le 5 janvier Auteur Signaler Posté(e) le 5 janvier Je t'ai envoyé les data. D'ailleurs j'aurias également besoin d'un coup de main pour les lignes de commande pour passer le login et le pass dans l'url Mais te prends pas le choux si c'est compliqué ou que tu as autre chose à faire
Lazer Posté(e) le 5 janvier Signaler Posté(e) le 5 janvier (modifié) Essaye avec ceci : string.match(string.gsub(TEXT, " ", ""), 'Chargeactuelle<spanclass="font%-boldtext%-primary"> (%d+)kWh</span>') Les astuces utilisées : On commence par un string.gsub afin de retirer tous les espaces, ce qui me simplifie l'extraction de la valeur numérique (à cause de l'espace des milliers) les caractères - sont préfixés avec un signe % pour les protéger afin qu'ils ne soient pas interprétés dans la regex La sélection de la valeur numérique se fait avec %d+ qui signifie 1 ou plusieurs chiffres numériques les parenthèses autour de la sélection numérique servent à l'extraction de la valeur EDIT : string.match() renvoie une chaine de caractères, donc il faudra faire un tonumber() pour obtenir un vrai nombre exploitable dans des calculs. Modifié le 5 janvier par Lazer 1
TitiXsi Posté(e) le 8 janvier Auteur Signaler Posté(e) le 8 janvier Bon, en fait, je crois que je me suis sentis un peu trop le newbie confiant Pour commencer, il faut la bonne requette mais là j'ai pondu un truc... qui dit donne un status OK pour n'importe quel login/password local Pwd_Base64 = 'toto' local PDL = '1935' local Auth = "Basic " .. Pwd_Base64 local URL = "https://espace-client.urbansolar.energy/pdl/" local API = PDL.."/ma-conso" local http = net.HTTPClient() function RequestHTTP() http:request(URL .. API, { options = { checkCertificate = false, method = 'GET', headers = { ['Accept'] = 'application/xml', ['Content-Type'] = 'application/xml' , ['Authorization'] = Auth }, timeout = 10000 }, success = function(response) local result = response.data; if response.status == 200 or response.status == 201 then -- réponse OK print("OK",response.status) else -- réponse Pas OK print("KO",response.status) end end, -- Erreur sur la fonction error = function(err) fibaro:debug('function(err) : ' .. err) end }) --setTimeout(RequestHTTP,1*1000) -- boucle toute les secondes end RequestHTTP() J'ai essayer de ne pas mettre le ['Authorization'] = Auth et j'ai toujours OK Bon j'avoue, que je ne sais même pas quel est le type de codage pour l'authentification car je n'y connais rien du tout ... J'ai pris un basic avec derrière un codage base 64 "Basic 'login:password'" Bref, je patauge
Lazer Posté(e) le 8 janvier Signaler Posté(e) le 8 janvier Dans ton navigateur tu fais F12 pour voir les outils de développement, puis tu observes la méthode de connexion : URL, en-têtes de la requête, type de méthode, données passées en paramètres, etc... c'est pas toujours simple.
mprinfo Posté(e) le 8 janvier Signaler Posté(e) le 8 janvier Pour le xml[mention=339]Steven[/mention] avait fais une fonction pour transformer le xml en table Je l'utilise dans le qa météo que j'avais fais il y a un petit moment Envoyé de mon BLA-L29 en utilisant Tapatalk
TitiXsi Posté(e) le 9 janvier Auteur Signaler Posté(e) le 9 janvier Il y a 18 heures, Lazer a dit : Dans ton navigateur tu fais F12 pour voir les outils de développement, puis tu observes la méthode de connexion : URL, en-têtes de la requête, type de méthode, données passées en paramètres, etc... c'est pas toujours simple. Effectivement avec Firefox, j'ai accès à certaines fonctionnalité, mais aucune ne m'offre la possibilité de catcher la requête. Il y a 17 heures, mprinfo a dit : Pour le xml[mention=339]Steven[/mention] avait fais une fonction pour transformer le xml en table Je l'utilise dans le qa météo que j'avais fais il y a un petit moment Envoyé de mon BLA-L29 en utilisant Tapatalk Merci à tous les 2, je vais laisser de côté pour le moment, c'est un poil trop time consumming pour une retour sur investissement assez faible à tous les 2,
Lazer Posté(e) le 9 janvier Signaler Posté(e) le 9 janvier Il y a 3 heures, TitiXsi a dit : Effectivement avec Firefox, j'ai accès à certaines fonctionnalité, mais aucune ne m'offre la possibilité de catcher la requête. C'est dans l'onglet "Réseau" Mais effectivement ça peut être consommateur de temps cette analyse... 1
TitiXsi Posté(e) le 9 janvier Auteur Signaler Posté(e) le 9 janvier Il y a 3 heures, Lazer a dit : C'est dans l'onglet "Réseau" Mais effectivement ça peut être consommateur de temps cette analyse... Merci ! J'ai trouvé un Bearer et un Basic, donc on a surement à faire à une connexion en 2 temps password et Token.
Lazer Posté(e) le 9 janvier Signaler Posté(e) le 9 janvier Surement, il faut que tu regardes les entêtes de la 1ère réponse, et de la 2nde requête, il doit y avoir un token, cookie, ou autre astuce dans le genre.
TitiXsi Posté(e) le 10 janvier Auteur Signaler Posté(e) le 10 janvier Yep. On est sur un token codé comme enphase.
Messages recommandés