Page 3 sur 3

Re: récupéer des données sur une page WEB simplement

Publié : 27 août 2018, 11:21
par marcus_54
j'ai fusionné les deux scripts, les puissances et celui-ci

Ça fonctionne bien.
J'ai juste "merdé" durant les essais ce qui fait sur l'histogramme, j'ai pour le lundi 647kW h générée à la place de 0.4 et je n'arrive pas à le remettre à la bonne valeur...

sinon le code :

Code : Tout sélectionner

--[[
name : script_time_Altenergy_u_t_P.lua
auteur : papoo
date : 26/08/2018
Principe :
26/08/2018
]]--
--------------------------------------------
------------ Variables à éditer ------------
--------------------------------------------
local nom_script = "Altenergy_u_t_P"
local debugging = true                     -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local script_actif = false                   -- active (true) ou désactive (false) ce script simplement
local delai = 5                             -- délai d'exécution de ce script en minutes de 1 à 59
local CapteurVirtuel_puissance = 722
local CapteurVirtuel_temp = 756
local CapteurVirtuel_tension = 757
local adresse1 = "http://192.168.0.6/index.php/home"
local adresse2 = "http://192.168.0.6/index.php/realtimedata"

--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
local nom_script = 'Altenergy_u_t_p'
local version = '1'
--------------------------------------------
---------------- Fonctions -----------------
--------------------------------------------
function voir_les_logs (s, debugging) -- nécessite la variable local debugging
    if (debugging) then
      if s ~= nil then
        print (s)
      else
      print ("aucune valeur affichable")
      end
    end
end   -- usage voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging)
--------------------------------------------
-------------- Fin Fonctions ---------------
--------------------------------------------

commandArray = {}
time = os.date("*t")
if script_actif == true then
    --if (time.hour == 00 and time.min == 20) then -- tout les matins à 00h20
    --if (time.min == 20 and ((time.hour == 7) or (time.hour == 13) or (time.hour == 18))) then -- 3 exécutions du script par jour à 7H20, 13h20 et 18H20
    --if time.hour % 2 == 0 then -- toutes les deux heures
    --if (time.hour%1 == 0 and time.min == 10)  then -- Toutes les heures et 10 minutes
    --if time.min% 2 == 0 then
    if ((time.min-1) % delai) == 0 then -- toutes les xx minutes en commençant par xx:01.  xx définissable via la variable delai
        voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging)

                if adresse1 ~= '' then voir_les_logs('--- --- --- Adresse : '..adresse1..'  --- --- --',debugging) end           
                local rid = assert(io.popen("/usr/bin/curl -m5 ".. adresse1))
                local testhtml = rid:read('*all')
                rid:close()
                for instance in testhtml:gmatch("<body>(.-)</body>") do
                    div, EnergieTotale=instance:match('Lifetime generation(.-)<td>(.-)kWh </td>') 
                    div1, Puissance=instance:match('Last System Power(.-)<td>(.-)W </td>')
                    div2, EnergieJour=instance:match('Generation of Current Day(.-)<td>(.-)kWh </td>')
                end   

                if EnergieTotale ~= nil then
                    voir_les_logs("--- --- --- Puissance Generee totale: ".. EnergieTotale.."kWh  --- --- --",debugging)
                else
                    voir_les_logs('--- --- --- Puissance Generee totale est vide  --- --- --',debugging)
                end
                
                if Puissance ~= nil then
                    voir_les_logs("--- --- --- Puissance : ".. Puissance.."W  --- --- --",debugging)
                else
                    voir_les_logs('--- --- --- Puissance est vide  --- --- --',debugging)
                end
               if EnergieJour ~= nil then
                    voir_les_logs("--- --- --- EnergieJour : ".. EnergieJour.."kW  --- --- --",debugging)
                else
                    voir_les_logs('--- --- --- EnergieJour est vide  --- --- --',debugging)
                end

                if adresse2 ~= '' then voir_les_logs('--- --- --- Adresse : '..adresse2..'  --- --- --',debugging) end           
                local rid = assert(io.popen("/usr/bin/curl -m5 ".. adresse2))
                local testhtml = rid:read('*all')
                rid:close()
                for instance in testhtml:gmatch("<tbody>(.-)</tbody>") do
                    tensionOnduleur=instance:match("404000251589%-A </td>.-Hz.-<td>(.-) V </td>")                   
                    tempOnduleur=instance:match("404000251589%-A </td>.-middle;'%>.-Hz </td>.-middle;'%>(.-) &#176;C </td>")
                end

                if tensionOnduleur ~= nil then
                    voir_les_logs("--- --- --- Tension reseau : ".. tensionOnduleur.." V--- --- --",debugging)
                else
                    voir_les_logs('--- --- --- tension reseau est vide  --- --- --',debugging)
                end
                if tempOnduleur ~= nil then
                    voir_les_logs("--- --- --- Temperature onduleur : ".. tempOnduleur.." degre --- --- --",debugging)
                else
                    voir_les_logs('--- --- --- Temperature onduleur  --- --- --',debugging)
                end  

                EnergieJour=EnergieJour*1000 --en W pas kW
                local CmdIdx=1
                commandArray[CmdIdx] = {['UpdateDevice'] = CapteurVirtuel_temp.."|0|"..tempOnduleur}
                CmdIdx=CmdIdx+1
                commandArray[CmdIdx] = {['UpdateDevice'] = CapteurVirtuel_tension.."|0|"..tensionOnduleur}
                CmdIdx=CmdIdx+1                
                commandArray[CmdIdx] = {['UpdateDevice'] = CapteurVirtuel_puissance.."|0|"..Puissance..";"..EnergieJour}
                CmdIdx=CmdIdx+1  
                
        voir_les_logs("--- --- --- Puissance Generee totale: ".. EnergieTotale.."kWh  --- --- --",debugging)
        voir_les_logs("========= Fin ".. nom_script .." (v".. version ..") =========",debugging)
    end -- if time
end
return commandArray

Re: récupéer des données sur une page WEB simplement

Publié : 27 août 2018, 12:41
par papoo
shift + clic sur la valeur à supprimer sur l'histogramme
ou
correction directement dans la base de données
https://sulek.fr/index.php?article73/co ... s-domoticz

Re: récupéer des données sur une page WEB simplement

Publié : 27 août 2018, 13:58
par marcus_54
shift + clic ne fonctionne pas sur l'histogramme de la semaine passée.
Pour l'édition de la base de données, j'ai essayé, les données enregistrées dans Meter s'arrêtent à hier 23h55...
Je vais attendre demain pour réessayer.

Re: récupéer des données sur une page WEB simplement

Publié : 27 août 2018, 18:05
par papoo
marcus_54 a écrit : Pour l'édition de la base de données, j'ai essayé, les données enregistrées dans Meter s'arrêtent à hier 23h55...
pour une donnée vieille de 7 jours c'est Meter_Calendar il me semble

bizarre que le shift + clic ne fonctionne pas
chez moi je peux effacer une données vieille de 7 jours
2018-08-27 18_03_30-Domoticz.png
2018-08-27 18_03_30-Domoticz.png (13.1 Kio) Consulté 5548 fois
2018-08-27 18_04_08-Domoticz.png
2018-08-27 18_04_08-Domoticz.png (6.07 Kio) Consulté 5548 fois

Re: récupéer des données sur une page WEB simplement

Publié : 27 août 2018, 19:36
par marcus_54
Oui sur les graphes, mais pas sur l'histogramme.

Image

Sur le graphe N°2 je ne peux rien faire, par contre je peux sur les 3 autres. (Encore que sur le 3 et 4) l'action est autorisée, mais ne change rien.
J'attends demain pour voir si le graphe se normalise sinon j'interviendrai sur la base de données.

Re: récupéer des données sur une page WEB simplement

Publié : 28 août 2018, 08:22
par marcus_54
C'est bon j'ai supprimé le pic sur la courbe N°3 du coup la barre sur l'histogramme à disparu.
Je préfère cela que d'aller bricoler dans la base de données.

Re: récupéer des données sur une page WEB simplement

Publié : 22 avr. 2020, 11:59
par peypin13
Bonjour
Je déterre ce fil car grâce a lui , j'ai pu l'adapter a mon installation solaire : 3 onduleurs triphasés YC1000 et un Ecu-C.
Je remercie papoo a l'origine du script et marcus 54 pour tout le reste.
C'est le premier script que je bidouille,alors il fonctionne , j'ai toutes les info sur Domoticz, mais je n'ai pas tout compris( en particulier time).
C'est la version 1.1

Code : Tout sélectionner

--[[
name : script_time_Altenergy_3u_3t_P.lua
auteur : papoo
date : 22/04/2020
Principe :
26/08/2018
]]--
--------------------------------------------
------------ Variables à éditer ------------
--------------------------------------------
local nom_script = "Altenergy_3u_3t_P"
local debugging = true                     -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local script_actif = true                   -- active (true) ou désactive (false) ce script simplement
local delai = 5                             -- délai d'exécution de ce script en minutes de 1 à 59
local CapteurVirtuel_puissance = 18        -- renseigner l'idx du device texte associé (dummy - electrique instantane+compteur)
local CapteurVirtuel_temp1 = 21
local CapteurVirtuel_temp2 = 22
local CapteurVirtuel_temp3 = 23
local CapteurVirtuel_tension1 = 20
local CapteurVirtuel_tension2 = 24
local CapteurVirtuel_tension3 = 25
local adresse1 = "http://192.168.1.11/index.php/home"
local adresse2 = "http://192.168.1.11/index.php/realtimedata"

--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
local nom_script = 'Altenergy_3u_3t_p'
local version = '1.1'
--------------------------------------------
---------------- Fonctions -----------------
--------------------------------------------
function voir_les_logs (s, debugging) -- nécessite la variable local debugging
    if (debugging) then
      if s ~= nil then
        print (s)
      else
      print ("aucune valeur affichable")
      end
    end
end   -- usage voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging)
--------------------------------------------
-------------- Fin Fonctions ---------------
--------------------------------------------

commandArray = {}
time = os.date("*t")
if script_actif == true then
    --if (time.hour == 00 and time.min == 20) then -- tout les matins à 00h20
    --if (time.min == 20 and ((time.hour == 7) or (time.hour == 13) or (time.hour == 18))) then -- 3 exécutions du script par jour à 7H20, 13h20 et 18H20
    --if time.hour % 2 == 0 then -- toutes les deux heures
    --if (time.hour%1 == 0 and time.min == 10)  then -- Toutes les heures et 10 minutes
    --if time.min% 2 == 0 then
    if ((time.min-1) % delai) == 0 then -- toutes les xx minutes en commençant par xx:01.  xx définissable via la variable delai
        voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging)

                if adresse1 ~= '' then voir_les_logs('--- --- --- Adresse : '..adresse1..'  --- --- --',debugging) end           
                local rid = assert(io.popen("/usr/bin/curl -m5 ".. adresse1))
                local testhtml = rid:read('*all')
                rid:close()
                for instance in testhtml:gmatch("<body>(.-)</body>") do
                    div, EnergieTotale=instance:match('Lifetime generation(.-)<td>(.-)kWh </td>') 
                    div1, Puissance=instance:match('Last System Power(.-)<td>(.-)W </td>')
                    div2, EnergieJour=instance:match('Generation of Current Day(.-)<td>(.-)kWh </td>')
                end   

                if EnergieTotale ~= nil then
                    voir_les_logs("--- --- --- Puissance Generee totale: ".. EnergieTotale.."kWh  --- --- --",debugging)
                else
                    voir_les_logs('--- --- --- Puissance Generee totale est vide  --- --- --',debugging)
                end
                
                if Puissance ~= nil then
                    voir_les_logs("--- --- --- Puissance : ".. Puissance.."W  --- --- --",debugging)
                else
                    voir_les_logs('--- --- --- Puissance est vide  --- --- --',debugging)
                end
               if EnergieJour ~= nil then
                    voir_les_logs("--- --- --- EnergieJour : ".. EnergieJour.."kW  --- --- --",debugging)
                else
                    voir_les_logs('--- --- --- EnergieJour est vide  --- --- --',debugging)
                end

                if adresse2 ~= '' then voir_les_logs('--- --- --- Adresse : '..adresse2..'  --- --- --',debugging) end           
                local rid = assert(io.popen("/usr/bin/curl -m5 ".. adresse2))
                local testhtml = rid:read('*all')
                rid:close()
                for instance in testhtml:gmatch("<tbody>(.-)</tbody>") do
                    tensionOnduleur1=instance:match("502000014029%-1 </td>.-Hz.-<td> A: (.-) V </td>")  
                    tensionOnduleur2=instance:match("502000013765%-1 </td>.-Hz.-<td> A: (.-) V </td>") 
                    tensionOnduleur3=instance:match("502000012907%-1 </td>.-Hz.-<td> A: (.-) V </td>")                  
                    tempOnduleur1=instance:match("502000014029%-1 </td>.-middle;'%>.-Hz </td>.-middle;'%>(.-) &#176;C </td>")
                    tempOnduleur2=instance:match("502000013765%-1 </td>.-middle;'%>.-Hz </td>.-middle;'%>(.-) &#176;C </td>")
                    tempOnduleur3=instance:match("502000012907%-1 </td>.-middle;'%>.-Hz </td>.-middle;'%>(.-) &#176;C </td>")
                end

                if tensionOnduleur1 ~= nil then
                    voir_les_logs("--- --- --- Tension reseau1 : ".. tensionOnduleur1.." V--- --- --",debugging)
                else
                    voir_les_logs('--- --- --- tension reseau est vide  --- --- --',debugging)
                end
                if tensionOnduleur2 ~= nil then
                    voir_les_logs("--- --- --- Tension reseau2 : ".. tensionOnduleur2.." V--- --- --",debugging)
                else
                    voir_les_logs('--- --- --- tension reseau est vide  --- --- --',debugging)
                end
                if tensionOnduleur3 ~= nil then
                    voir_les_logs("--- --- --- Tension reseau3 : ".. tensionOnduleur3.." V--- --- --",debugging)
                else
                    voir_les_logs('--- --- --- tension reseau est vide  --- --- --',debugging)
                end

                if tempOnduleur1 ~= nil then
                    voir_les_logs("--- --- --- Temperature onduleur1 : ".. tempOnduleur1.." degre --- --- --",debugging)
                else
                    voir_les_logs('--- --- --- Temperature onduleur1  --- --- --',debugging)
                end  
 		        if tempOnduleur2 ~= nil then
                    voir_les_logs("--- --- --- Temperature onduleur2 : ".. tempOnduleur2.." degre --- --- --",debugging)
                else
                    voir_les_logs('--- --- --- Temperature onduleur2  --- --- --',debugging)
                end  

 	        	if tempOnduleur3 ~= nil then
                    voir_les_logs("--- --- --- Temperature onduleur3 : ".. tempOnduleur3.." degre --- --- --",debugging)
                else
                    voir_les_logs('--- --- --- Temperature onduleur3  --- --- --',debugging)
                end  


                EnergieJour=EnergieJour*1000 --en W pas kW
                local CmdIdx=1
                commandArray[CmdIdx] = {['UpdateDevice'] = CapteurVirtuel_temp1.."|0|"..tempOnduleur1}
                CmdIdx=CmdIdx+1
                commandArray[CmdIdx] = {['UpdateDevice'] = CapteurVirtuel_temp2.."|0|"..tempOnduleur2}
                CmdIdx=CmdIdx+1
                commandArray[CmdIdx] = {['UpdateDevice'] = CapteurVirtuel_temp3.."|0|"..tempOnduleur3}
                CmdIdx=CmdIdx+1
                commandArray[CmdIdx] = {['UpdateDevice'] = CapteurVirtuel_tension1.."|0|"..tensionOnduleur1}
                CmdIdx=CmdIdx+1 
                commandArray[CmdIdx] = {['UpdateDevice'] = CapteurVirtuel_tension2.."|0|"..tensionOnduleur2}
                CmdIdx=CmdIdx+1 
                commandArray[CmdIdx] = {['UpdateDevice'] = CapteurVirtuel_tension3.."|0|"..tensionOnduleur3}
                CmdIdx=CmdIdx+1                
                commandArray[CmdIdx] = {['UpdateDevice'] = CapteurVirtuel_puissance.."|0|"..Puissance..";"..EnergieJour}
                CmdIdx=CmdIdx+1  
                
        voir_les_logs("--- --- --- Puissance Generee totale: ".. EnergieTotale.."kWh  --- --- --",debugging)
        voir_les_logs("========= Fin ".. nom_script .." (v".. version ..") =========",debugging)
    end -- if time
end
return commandArray
A+

Re: récupéer des données sur une page WEB simplement

Publié : 11 janv. 2021, 23:25
par linkiwearth
Bonjour,

Je suis tombé sur votre discutions en cherchant à faire une extraction de valeur d'une page web également, mais je n'arrive pas à adapter le code à mon cas ..

Quelqu'un pourrais m'aider svp ?

Voici un bout du code de la page contenant la valeur que je souhaite récupérer :

</div>
<div class="col-xs-6">
<div class="textfill">
<h4>
<span class="textfill-value" v-show="apiResponses.accounts" v-cloak>
{{ account['24hreward']
? (account['24hreward'] * getPaymentsMultiplier()).toFixed(5)
: 0 }}
</span>
<span class="text-placeholder text-large" v-show="!apiResponses.accounts">
0.00000
</span>
</h4>
</div>

Je cherche à extraire la valeur qui vaut 0.00000..

J'espère que c'est faisable ?

Merci à vous :)