LUA : Horoscope du jour pour un signe donné

Vous avez crée un script lua dont vous êtes fier, un .sh génial, un programme python hors du commun, un tuto , c'est ici que vous pouvez les partager.
Soyez précis quant aux prérequis, les manips à faire pour que votre bijou fonctionne (des chmod ?, un apt-get à faire ...)
Décrivez précisément son fonctionnement
Placez votre code entre [Quote] et {/Quote]
Répondre
papoo
Messages : 2025
Enregistré le : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

LUA : Horoscope du jour pour un signe donné

Message 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
Modifié en dernier par papoo le 29 juin 2016, 21:26, modifié 2 fois.
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github

Chris54220
Messages : 124
Enregistré le : 20 mars 2016, 20:54
Localisation : Nancy

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

Message 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
Christopher

papoo
Messages : 2025
Enregistré le : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

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

Message 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 )
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github

Chris54220
Messages : 124
Enregistré le : 20 mars 2016, 20:54
Localisation : Nancy

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

Message par Chris54220 »

oki merci pour cette info
Christopher

totof60
Messages : 346
Enregistré le : 29 avr. 2016, 09:31

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

Message 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 ?
Domoticz V4.10717
sous raspbian-Stretch, Homebridge,RfLink
Raspberry pi3, Google home mini
plein de truc wifi !! de l'esp-01 jusque le nodemcu en passant par le wemos et même du DIY

Chrominator
Messages : 522
Enregistré le : 19 déc. 2015, 07:29

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

Message 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:

papoo
Messages : 2025
Enregistré le : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

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

Message 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
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github

papoo
Messages : 2025
Enregistré le : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

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

Message 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
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github

Doudy
Messages : 259
Enregistré le : 07 mai 2016, 17:23

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

Message par Doudy »

Bonjour,
Pour info
J'ai une errreur GCM lorsque je mets "local send_notification = 1"

Image

;)
PI 3 = RFXCOM
PI 3 + Touchscreen 7" affichage Domoticz
RFXCOM 433
Domoticz Version: 2020.2 - Python Version: 3.7.3 - dzVents Version: 3.0.2

papoo
Messages : 2025
Enregistré le : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

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

Message 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
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github

Répondre