Page 1 sur 8

LUA : Horoscope du jour pour un signe donné

Posté : 26 juin 2016, 15:53
par papoo
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 échéant selon le niveau de notification choisi

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 = 719	-- 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	

-- ======================================================================== 
-- 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://mon.astrocenter.fr/horoscope/quotidien/"..signe) 
				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()
--print_r(testHtml)
for instance in testHtml:gmatch("<body>(.-)</body>") do
div, horoscope=instance:match('horoscope du jour(.-)<p>(.-)</p>')
end	

	if horoscope ~= nil  and signe ~= nil then
		voir_les_logs("--- --- --- Horoscope pour le signe du ".. div,debugging)	
		voir_les_logs("--- --- --- ".. signe .." : ".. horoscope,debugging)
		
	commandArray[indexArray] = {['UpdateDevice'] = dz_horoscope_text..'|0|'.. horoscope}
	indexArray=indexArray+1
					if send_notification > 0 then
	commandArray[indexArray] = {['SendNotification'] = 'horoscope pour le signe du '.. signe ..'#'.. horoscope}
	indexArray=indexArray+1
					end
	end
	
end -- if time
return commandArray
Ce script a pour but de remonter les informations du site http://www.horoscope-gratuit.org/ dans un device texte
sur domoticz pour un signe donné et de nous alerter le cas échéant selon le niveau de notification choisi

Code : Tout sélectionner

--[[
name : script_time_horoscope.lua
auteur : papoo
version : 1.00
date : 26/06/2016
Principe :
 Ce script a pour but de remonter les informations du site http://www.horoscope-gratuit.org/ 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 = 719	-- 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	

-- ======================================================================== 
-- 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://www.horoscope-gratuit.org/horoscope-" ..signe..".php") 
				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
div, horoscope=instance:match('<strong>Horoscope(.-)</strong><br /><br />(.-)</div>')
end
	if horoscope ~= nil  and signe ~= nil then
		voir_les_logs("--- --- --- Horoscope pour le signe du ".. div,debugging)	
		voir_les_logs("--- --- --- ".. signe .." : ".. horoscope,debugging)
		
	commandArray[indexArray] = {['UpdateDevice'] = dz_horoscope_text..'|0|'.. horoscope}
	indexArray=indexArray+1
					if send_notification > 0 then
	commandArray[indexArray] = {['SendNotification'] = 'horoscope pour le signe du '.. signe ..'#'.. horoscope}
	indexArray=indexArray+1
					end
	end
	
end -- if time
return commandArray

Re: LUA : Horoscope du jour pour un signe donné

Posté : 26 juin 2016, 23:48
par Chris54220
j'aurais une petit questions

a quoi sert

local indexArray=0
indexArray=indexArray+1

dans tes scripts je vois pas le but peux tu m'expliqué

je suis pas un pro donc j'essaye de comprendre tout les scripts que je trouve

Merci d'avance

Re: LUA : Horoscope du jour pour un signe donné

Posté : 27 juin 2016, 13:16
par papoo
chaque script Lua contient un commandArray = tableau de commande, d'où les apostrophes commandArray = {}
ce tableau de commande est exécuté en fin de script (return commandArray)
si les entrées de ce tableau de commande sont identique, seule la dernière commande est exécutée.
il existe plusieurs façons de différencier les entrées de commande, j'ai personnellement fais le choix d'une variable indexArray (que je déclare à zéro avant la première commande) que j'incrémente à chaque occurrence d'un commandArray afin d'etre sûr de l’exécution de l'ensemble des commandes, sans risque de doublon. (chaque nouvelle commande ayant un indexArray augmenté de 1 )

Re: LUA : Horoscope du jour pour un signe donné

Posté : 27 juin 2016, 13:20
par Chris54220
oki merci pour cette info

Re: LUA : Horoscope du jour pour un signe donné

Posté : 28 juin 2016, 08:57
par totof60
Merci pour le script

Juste un petit detail ; les caractères accentués sont mal affichés dans Domoticz.

Ca viens de chez moi ou du site horoscope ?

Re: LUA : Horoscope du jour pour un signe donné

Posté : 28 juin 2016, 19:02
par Chrominator
Ca vient du site ; il utilise le jeu de caractères iso-8859-1 et il nous faut de l'utf-8. :ugeek:

Re: LUA : Horoscope du jour pour un signe donné

Posté : 28 juin 2016, 21:13
par papoo
Chrominator a écrit :Ca vient du site ; il utilise le jeu de caractères iso-8859-1 et il nous faut de l'utf-8. :ugeek:
c'est exact et je n'ai pas encore trouvé comment changer cela
si vous connaissez un site fournissant un horoscope un peu plus clean que celui la je suis preneur

Re: LUA : Horoscope du jour pour un signe donné

Posté : 28 juin 2016, 22:08
par papoo
Oublions le site précédent truffé de fautes
nouveau script avec le site http://mon.astrocenter.fr/

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 = 719	-- 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	

-- ======================================================================== 
-- 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://mon.astrocenter.fr/horoscope/quotidien/"..signe) 
				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()
--print_r(testHtml)
for instance in testHtml:gmatch("<body>(.-)</body>") do
div, horoscope=instance:match('horoscope du jour(.-)<p>(.-)</p>')
end	

	if horoscope ~= nil  and signe ~= nil then
		voir_les_logs("--- --- --- Horoscope pour le signe du ".. div,debugging)	
		voir_les_logs("--- --- --- ".. signe .." : ".. horoscope,debugging)
		
	commandArray[indexArray] = {['UpdateDevice'] = dz_horoscope_text..'|0|'.. horoscope}
	indexArray=indexArray+1
					if send_notification > 0 then
	commandArray[indexArray] = {['SendNotification'] = 'horoscope pour le signe du '.. signe ..'#'.. horoscope}
	indexArray=indexArray+1
					end
	end
	
end -- if time
return commandArray

Re: LUA : Horoscope du jour pour un signe donné

Posté : 04 sept. 2016, 10:23
par Doudy
Bonjour,
Pour info
J'ai une errreur GCM lorsque je mets "local send_notification = 1"

Image

;)

Re: LUA : Horoscope du jour pour un signe donné

Posté : 04 sept. 2016, 11:08
par papoo
Est -ce que tu utilise l'application Android Domoticz?
voila la seule chose que je trouve à propos de cette erreur GCM
https://www.domoticz.com/forum/viewtopic.php?t=10505