[LUA] Horoscope du jour pour un signe donné

Vous avez créé 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.
Merci d'utiliser la balise correspondante à votre sujet : [Tuto], [Plugin], [DzVents], [LUA], [Python], [Bash] ...
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
Répondre
papoo
Messages : 2029
Inscription : 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
Dernière modification par papoo le 29 juin 2016, 21:26, modifié 2 fois.
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
Chris54220
Messages : 124
Inscription : 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
papoo
Messages : 2029
Inscription : 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
Inscription : 20 mars 2016, 20:54
Localisation : Nancy

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

Message par Chris54220 »

oki merci pour cette info
totof60
Messages : 372
Inscription : 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 V2022.2
sous Buster, 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 : 890
Inscription : 19 déc. 2015, 07:29
Localisation : France

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:
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 22.04.1 LTS - Domoticz v2022.2
sur Pentium G3220T 2.60GHz - 4Go DDR3
rfxcom RFXtrx433 USB Version: Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
papoo
Messages : 2029
Inscription : 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 : 2029
Inscription : 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 : 433
Inscription : 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

;)
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : 3.9.3 | dzvents : 3.0.2 | Python : 3.7.3
papoo
Messages : 2029
Inscription : 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