[Résolu] Monitor - Une Data étrange

Forum dédié aux interfaces personnalisables : Custom Pages, Reacticz, Domoboard...
minicupi
Messages : 34
Inscription : 27 janv. 2017, 03:52

[Résolu] Monitor - Une Data étrange

Message par minicupi »

Bonjour,
recemment j'ai ajouté un code d'horoscope, trouvable ci dessous :

Code : Tout sélectionner

--[[
name : script_time_horoscope.lua
auteur : papoo
version : 1.10
Mise à jour : 27/06/2016 Changement de site
date : 26/06/2016
Principe :
 Ce script a pour but de remonter les informations du site http://mon.astrocenter.fr/ dans un device texte 
 sur domoticz pour un signe donné et de nous alerter le cas écheant selon le niveau de notification choisi
]]--
-- ========================================================================
-- Variables à éditer
-- ========================================================================
local signe = "cancer" --[[ renseigner le signe choisi en minuscule sans accent : belier, taureau, gemeaux, cancer, lion, vierge, 
balance, scorpion, sagittaire, capricorne, verseau, poissons ]]--
local dz_horoscope_text = 178   -- renseigner l'id du device texte associé (dummy - text)
local send_notification = 0 -- 0: notifications désactivées, 1: notifications actives
local debugging = false     -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
-- ========================================================================
-- Fin Variables à éditer
-- ========================================================================
local indexArray=0   
-- ======================================================================== 
-- Fonctions
-- ========================================================================
function voir_les_logs (s)
    if (debugging) then 
        print ("<font color='#f3031d'>".. s .."</font>");
    end
end   




function string:split( inSplitPattern, outResults )
  if not outResults then
    outResults = { }
  end
  local theStart = 1
  local theSplitStart, theSplitEnd = string.find( self, inSplitPattern, theStart )
  while theSplitStart do
    table.insert( outResults, string.sub( self, theStart, theSplitStart-1 ) )
    theStart = theSplitEnd + 1
    theSplitStart, theSplitEnd = string.find( self, inSplitPattern, theStart )
  end
  table.insert( outResults, string.sub( self, theStart ) )
  return outResults
end







-- ======================================================================== 
-- Fin Fonctions
-- ========================================================================

commandArray = {}
time = os.date("*t")

--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 éxecutions 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 
print('script_time_horoscope.lua')

      local fname ="horoscope.xml"
      os.execute("wget -q -O " .. fname .. " http://astro.idf1.fr/horoscope/horoscope-du-jour/horoscope-cancer/horoscope.html") 
            local f = io.open(fname, "r")

          if f == nil then
          print("Error opening file '" .. fname .. "'.")
          os.exit(1)
          end
 
      local testHtml = f:read("*all")
               f:close()

for instance in testHtml:gmatch("<body>(.-)</body>") do
horoscope=instance:match('<p>(.-)</p>')
horoscope=string.gsub(horoscope, "%'", " ")
horoscope=string.gsub(horoscope, "&eacute;", "e")
horoscope=string.gsub(horoscope, "&ecirc;", "e")
horoscope=string.gsub(horoscope, "&agrave;", "a")
horoscope=string.gsub(horoscope, "&nbsp;", " ")
horoscope=string.gsub(horoscope, ",", " ")
end   

  if horoscope ~= nil  and signe ~= nil then
   
      voir_les_logs("--- --- --- ".. signe .." : ".. horoscope,debugging)
   commandArray[indexArray] = {['UpdateDevice'] = dz_horoscope_text..'|0|'..'mouarffe'..horoscope}
   indexArray=indexArray+1
             
   end
--end -- if time
return commandArray
la valeur $horoscope se retrouve dans mon exemple sur l'idx 178

et je la retrouve bien dans domoticz

Code : Tout sélectionner

{
   "ActTime" : 1487468507,
   "ServerTime" : "2017-02-19 02:41:47",
   "Sunrise" : "07:51",
   "Sunset" : "18:16",
   "result" : [
      {
         "AddjMulti" : 1.0,
         "AddjMulti2" : 1.0,
         "AddjValue" : 0.0,
         "AddjValue2" : 0.0,
         "BatteryLevel" : 255,
         "CustomImage" : 0,
         "Data" : "mouarffeVous auriez interet a examiner une proposition sous toutes ses coutures  a etablir un programme d actions precises et a vous structurer globalement davantage.",
         "Description" : "",
         "Favorite" : 0,
         "HardwareID" : 5,
         "HardwareName" : "DD-WMDS",
         "HardwareType" : "Dummy (Does nothing, use for virtual switches only)",
         "HardwareTypeVal" : 15,
         "HaveTimeout" : false,
         "ID" : "00082178",
         "LastUpdate" : "2017-02-19 02:41:10",
         "Name" : "Horoscope",
         "Notifications" : "false",
         "PlanID" : "0",
         "PlanIDs" : [ 0 ],
         "Protected" : false,
         "ShowNotifications" : false,
         "SignalLevel" : "-",
         "SubType" : "Text",
         "Timers" : "false",
         "Type" : "General",
         "TypeImg" : "text",
         "Unit" : 1,
         "Used" : 1,
         "XOffset" : "0",
         "YOffset" : "0",
         "idx" : "178"
      }
   ],
   "status" : "OK",
   "title" : "Devices"
}
Mon probleme est le suivant, lorsque j'essaye d'afficher cette valeur Data dans Monitor, il ne l'affiche pas.
Dans le doute j'ai essayé sur d'autre cellule, pareil, puis essayé une autre valeur data sur cette cellule, elle s'affiche.Donc j'ai supposé que le probleme etait dans le code.

Dans le doute j'ai fait mon barbare et j'ai ajouté un texte supplementaire dans l'update data 'mouarf"

on passe donc de

Code : Tout sélectionner

commandArray[indexArray] = {['UpdateDevice'] = dz_horoscope_text..'|0|'..horoscope}
a

Code : Tout sélectionner

commandArray[indexArray] = {['UpdateDevice'] = dz_horoscope_text..'|0|'..'mouarffe'..horoscope}
Lorsque je retourne dans monitor seul mon "mouarffe" s'affiche mais pas la suite et honnetement je ne vois pas pourquoi. Si ma valeur entrée a la main passe, que la valeur horoscope se retrouve bien apres, pourquoi n'affiche t-il pas la totalité et seulement ce que je rentre a la main? C'est un mystere total pour moi, j ene vois rien qui l'expliquerais, pas de balise pas de caractere bizarre(j'ai tout enlevé dans le doute) j'ai meme supposé qu'il n'aimait pas les texte long et j'ai coupé le texte pour n'avoir qu'un mot au lieu d'une phrase mais le mot ne s'affiche pas non plus. si vous avez une supposition je suis preneur.

valeur rentrée dans le JS :

['178','Data', 'cell4_3', '','','','',''],

resultat :

[edit] image supprimée [/edit]

P.S : on notera l'ironie du message de l'horoscopie qui me provoque quand meme la ;p
'Vous auriez intérêt à examiner une proposition sous toutes ses coutures, à établir un programme d actions précises et à vous structurer globalement davantage'
Dernière modification par minicupi le 19 févr. 2017, 15:17, modifié 2 fois.
minicupi
Messages : 34
Inscription : 27 janv. 2017, 03:52

Re: Monitor - Une Data étrange

Message par minicupi »

Ok Résolu, désolé.

En cherchant de nouveau trucs a bidouillé dans le forum j'ai vu le message de némésis sur la saint valentin.
Le V majuscule semble posé probleme j'ai donc remplacé les V majuscules par des V minuscule et ca passe.

par contre je ne sais pas si c'est moi qui doit passer le poste en résolu ou pas.

pour ceux que le code interesserait :

Horoscope avec correction des V et modification des accents unicode.
(99% du code vient de némésis pour info)

Code : Tout sélectionner

--[[
name : script_time_horoscope.lua
auteur : papoo
version : 1.10
Mise à jour : 27/06/2016 Changement de site
date : 26/06/2016
Principe :
 Ce script a pour but de remonter les informations du site http://mon.astrocenter.fr/ dans un device texte 
 sur domoticz pour un signe donné et de nous alerter le cas écheant selon le niveau de notification choisi
]]--
-- ========================================================================
-- Variables à éditer
-- ========================================================================
local signe = "cancer" --[[ renseigner le signe choisi en minuscule sans accent : belier, taureau, gemeaux, cancer, lion, vierge, 
balance, scorpion, sagittaire, capricorne, verseau, poissons ]]--
local dz_horoscope_text = 178   -- renseigner l'id du device texte associé (dummy - text)
local send_notification = 0 -- 0: notifications désactivées, 1: notifications actives
local debugging = false     -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
-- ========================================================================
-- Fin Variables à éditer
-- ========================================================================
local indexArray=0   
-- ======================================================================== 
-- Fonctions
-- ========================================================================
function voir_les_logs (s)
    if (debugging) then 
        print ("<font color='#f3031d'>".. s .."</font>");
    end
end   




function string:split( inSplitPattern, outResults )
  if not outResults then
    outResults = { }
  end
  local theStart = 1
  local theSplitStart, theSplitEnd = string.find( self, inSplitPattern, theStart )
  while theSplitStart do
    table.insert( outResults, string.sub( self, theStart, theSplitStart-1 ) )
    theStart = theSplitEnd + 1
    theSplitStart, theSplitEnd = string.find( self, inSplitPattern, theStart )
  end
  table.insert( outResults, string.sub( self, theStart ) )
  return outResults
end







-- ======================================================================== 
-- Fin Fonctions
-- ========================================================================

commandArray = {}
time = os.date("*t")

--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 éxecutions 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 
print('script_time_horoscope.lua')

      local fname ="horoscope.xml"
      os.execute("wget -q -O " .. fname .. " http://astro.idf1.fr/horoscope/horoscope-du-jour/horoscope-cancer/horoscope.html") 
            local f = io.open(fname, "r")

          if f == nil then
          print("Error opening file '" .. fname .. "'.")
          os.exit(1)
          end
 
      local testHtml = f:read("*all")
               f:close()

for instance in testHtml:gmatch("<body>(.-)</body>") do
horoscope=instance:match('<p>(.-)</p>')
horoscope=string.gsub(horoscope, "%'", " ")
horoscope=string.gsub(horoscope, "&eacute;", "é")
horoscope=string.gsub(horoscope, "&ecirc;", "ê")
horoscope=string.gsub(horoscope, "&agrave;", "à")
horoscope=string.gsub(horoscope, "&nbsp;", " ")
horoscope=string.gsub(horoscope, "V", "v")
end   

  if horoscope ~= nil  and signe ~= nil then
   
      voir_les_logs("--- --- --- ".. signe .." : ".. horoscope,debugging)
   commandArray[indexArray] = {['UpdateDevice'] = dz_horoscope_text..'|0|'..'mouarffe'..horoscope}
   indexArray=indexArray+1
             
   end
--end -- if time
return commandArray
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Monitor - Une Data étrange

Message par vil1driver »

;)

C'est à toi de modifier le titre de ton message pour ajouter résolu ;)

Le problème du V est corrigé

/! \ attention j'accède sans problème à ton monitor et domoticz via l'url de ta capture d'écran !
Je l'ai donc supprimée de ton message..

Au passage très chouette ce que tu fais :D
Gaffe à bien sauvegarder tes pages et css avant de mettre à jour
Je suis désolé mais la prochaine maj va tout casser :?
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
minicupi
Messages : 34
Inscription : 27 janv. 2017, 03:52

Re: Monitor - Une Data étrange

Message par minicupi »

^^ merci pour la protection j'avoue pas avoir trop fait gaffe ;p
ouaip j'ai vu qu'il allait y'avoir un ajout d'onglet sur le coté :) pas grave j'avais pas fini de bosser dessus de toutes facons.
Nemesis24
Messages : 125
Inscription : 14 févr. 2017, 16:10

Re: [Résolu]Monitor - Une Data étrange

Message par Nemesis24 »

Bonjour,

% devrait subir la même sanction, en effet, si dans ma Data, j'ai

" Utilisation: 10%,......"

Peut être préférer exclure les idx "Texte" de ces requêtes, serait la bonne solution

je n'ai pas fait un essai mais je suppose que si j'ai:

" Vous avez fait 10 km aujourd'hui"

le problème doit revenir.

Merci.
Nemesis: déesse de la vengeance, de l'équilibre, de la juste colère et de la rétribution céleste, messager de mort envoyé par les dieux comme punition...
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: [Résolu]Monitor - Une Data étrange

Message par vil1driver »

Merci, effectivement, très bonne idée

correction apportée
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Nemesis24
Messages : 125
Inscription : 14 févr. 2017, 16:10

Re: [Résolu] Monitor - Une Data étrange

Message par Nemesis24 »

C'est tout bon maintenant !!
Nemesis: déesse de la vengeance, de l'équilibre, de la juste colère et de la rétribution céleste, messager de mort envoyé par les dieux comme punition...
Répondre