[LUA] Vacances scolaires
Re: LUA : vacances scolaires
Bonjour
Depuis plusieurs jours le script ne focntionneplus
J'ai bien mis a jour le script avec la nouvelle version du script
quand je lance a la main j'ai les erreurs suivantes:
./script_time_vacancesscolaire2.lua
./script_time_vacancesscolaire2.lua: ligne 1: --[[ : commande introuvable
./script_time_vacancesscolaire2.lua: ligne 2: auteur : commande introuvable
date: opérande supplémentaire « création »
Saisissez « date --help » pour plus d'informations.
./script_time_vacancesscolaire2.lua: ligne 4: Principe : commande introuvable
./script_time_vacancesscolaire2.lua: ligne 5: Le : commande introuvable
./script_time_vacancesscolaire2.lua: ligne 6: Le : commande introuvable
./script_time_vacancesscolaire2.lua: ligne 8: Le : commande introuvable
./script_time_vacancesscolaire2.lua: ligne 9: Necessite : commande introuvable
./script_time_vacancesscolaire2.lua: ligne 123: erreur de syntaxe près du symbole inattendu « 'Le fichier xml non présent' »
./script_time_vacancesscolaire2.lua: ligne 123: ` if ( debug ) then print('Le fichier xml non présent') end'
merci de votre aide
Depuis plusieurs jours le script ne focntionneplus
J'ai bien mis a jour le script avec la nouvelle version du script
quand je lance a la main j'ai les erreurs suivantes:
./script_time_vacancesscolaire2.lua
./script_time_vacancesscolaire2.lua: ligne 1: --[[ : commande introuvable
./script_time_vacancesscolaire2.lua: ligne 2: auteur : commande introuvable
date: opérande supplémentaire « création »
Saisissez « date --help » pour plus d'informations.
./script_time_vacancesscolaire2.lua: ligne 4: Principe : commande introuvable
./script_time_vacancesscolaire2.lua: ligne 5: Le : commande introuvable
./script_time_vacancesscolaire2.lua: ligne 6: Le : commande introuvable
./script_time_vacancesscolaire2.lua: ligne 8: Le : commande introuvable
./script_time_vacancesscolaire2.lua: ligne 9: Necessite : commande introuvable
./script_time_vacancesscolaire2.lua: ligne 123: erreur de syntaxe près du symbole inattendu « 'Le fichier xml non présent' »
./script_time_vacancesscolaire2.lua: ligne 123: ` if ( debug ) then print('Le fichier xml non présent') end'
merci de votre aide
Re: LUA : vacances scolaires
DreamL a écrit : 22 oct. 2019, 10:16 Bonjour
J'ai mis à jour le 1er post avec une nouvelle version du script.
J'espère juste que la source ne vas pas changer d'adresse.
Normalement la bibliothèque json.lua est incluse dans Domoticz. Il faut juste changer le chemin pour qu'il corresponde à voter installation.
Bonne journée
Bonsoir DreamL.
Impeccable, Fonctionne à priori sous windows avec les mêmes restrictions que la version précédente, il faut télécharger le fichier manuellement.
Merci
,cdt
Bertrand
2024.6 PC Windows10 ; 2ème DEBIAN 10;DANFOSS LC13, Topp; Senseurs univ FIBARO FGBS001, Flood Sensor, ZMNHBD1 Flush 2 Relays ; FIBARO FGS222-FGS212;RFXCOM-RFXtrx433 USB 433.92MHz , Prises Phénix, Prises et Eclairage DI-O, SOMFY RTS,Sonoff ..
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: LUA : vacances scolaires
Que veux tu dire par 'je lance à la main' ?vr6man a écrit : 23 oct. 2019, 22:31 Bonjour
Depuis plusieurs jours le script ne focntionne plus
J'ai bien mis a jour le script avec la nouvelle version du script
quand je lance a la main j'ai les erreurs suivantes:
Dernière modification par denis_brasseur le 24 oct. 2019, 06:46, modifié 2 fois.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Re: LUA : vacances scolaires
sau automatique comme mis dans le script a 00.03 ca ne fonctionne pas (pas de maj du device)
et en le lancant en tapant la commande (en étant dans le répertoire ou se trouve le script):
./script_time_vacancesscolaire2.lua
j'ai comme message :
pi@rasp_home:~/domoticz/scripts/lua $ ./script_time_vacancesscolaire2.lua
./script_time_vacancesscolaire2.lua: ligne 1: --Variables : commande introuvable
./script_time_vacancesscolaire2.lua: ligne 2 : local: utilisable seulement dans une fonction
./script_time_vacancesscolaire2.lua: ligne 15 : local: utilisable seulement dans une fonction
./script_time_vacancesscolaire2.lua: ligne 39: --Nom : commande introuvable
./script_time_vacancesscolaire2.lua: ligne 40 : local: utilisable seulement dans une fonction
./script_time_vacancesscolaire2.lua: ligne 41 : local: utilisable seulement dans une fonction
./script_time_vacancesscolaire2.lua: ligne 43: erreur de syntaxe près du symbole inattendu « ( »
./script_time_vacancesscolaire2.lua: ligne 43: `json = (loadfile "/home/cd/domoticz/scripts/lua/JSON.lua")() -- For Linux'
et en le lancant en tapant la commande (en étant dans le répertoire ou se trouve le script):
./script_time_vacancesscolaire2.lua
j'ai comme message :
pi@rasp_home:~/domoticz/scripts/lua $ ./script_time_vacancesscolaire2.lua
./script_time_vacancesscolaire2.lua: ligne 1: --Variables : commande introuvable
./script_time_vacancesscolaire2.lua: ligne 2 : local: utilisable seulement dans une fonction
./script_time_vacancesscolaire2.lua: ligne 15 : local: utilisable seulement dans une fonction
./script_time_vacancesscolaire2.lua: ligne 39: --Nom : commande introuvable
./script_time_vacancesscolaire2.lua: ligne 40 : local: utilisable seulement dans une fonction
./script_time_vacancesscolaire2.lua: ligne 41 : local: utilisable seulement dans une fonction
./script_time_vacancesscolaire2.lua: ligne 43: erreur de syntaxe près du symbole inattendu « ( »
./script_time_vacancesscolaire2.lua: ligne 43: `json = (loadfile "/home/cd/domoticz/scripts/lua/JSON.lua")() -- For Linux'
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: LUA : vacances scolaires
Tu peux forcer l'exécution du script toutes les minutes en modifiant la variable forceExecution à true.
Tu peux également forcer les log en modifiant la variable debug à true
Tu peux également forcer les log en modifiant la variable debug à true
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Re: LUA : vacances scolaires
c'est déja fait mais ca ne change rien
et vu que ces messages en le lancant a la main pour tester ca ne marchera pas en forcant
et vu que ces messages en le lancant a la main pour tester ca ne marchera pas en forcant
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: LUA : vacances scolaires
Les messages d'erreur portent sur des commentaires (--[[ ]]--).
Ton fichier est bien encodé en UTF-8 ?
Ton fichier est bien encodé en UTF-8 ?
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Re: LUA : vacances scolaires
voila le fichier de script
par contre je sais pas comment tu fais pour lui dire utf8
par contre je sais pas comment tu fais pour lui dire utf8
Code : Tout sélectionner
--Variables nécessaires au script
local tmpIdLibelle --Pour stocker temporairement l'id du libellé des vacances
local tmpFichierXml
local libelleVac --Libelle des vacances si vacances
local debutVac --Début des vacances scolaires
local finVac --Fin des vacances scolaires
local timenow = os.date("%H:%M")
local startClock = os.clock()
local flgdzVacancesScolaires = false
local flgdzVacancesScolairesDemain = false
--Variables a éditer
local debug = true --Permet d afficher des messages pour voir l'exécution du script
local forceExecution = false --Permet de forcer l'exécution sans tenir compte de l heure
-- Liste des jours pour récupérer le fichier xml
-- pour éviter de le télécharger tous les jours
--Mot clé possible :
-- /j = tous les jours
-- /m = toute les minutes
local listeJourTelechargementXml={}
listeJourTelechargementXml['30/03'] = '12:20'
listeJourTelechargementXml['30/06'] = '12:20'
listeJourTelechargementXml['30/09'] = '12:20'
listeJourTelechargementXml['30/12'] = '12:20'
--listeJourTelechargementXml['/j'] = '/m' --Pour test éventuel
local heureExecution = "00:03" --Format = HH:MM ex 02:04 ou 12:36, C'est l'heure à laquelle vous voulez que le switch domoticz soit mis a jour
local fname = "/home/pi/domoticz/scripts/lua/vacances.xml" --Renseigner ici le répertoire destination du téléchargement
local fichierSource = "https://www.data.gouv.fr/fr/datasets/r/000ae493-9fa8-4088-9f53-76d375204036"
local DateDuJour = os.date("%Y-%m-%d")
local DateDemain = os.date("%Y-%m-%d",tonumber(os.time(t))+24*60*60)
local academie = "B" --Indiquer ici l'académie
--Nom des dispositifs dans domoticz
local dzVacancesScolaires = "VacancesScolaires" --Renseigner ici le nom du switch a mettre a jour dans domoticz
local dzVacancesScolairesDemain = "VacancesScolaires+1" --Renseigner ici le nom du switch a mettre a jour dans domoticz
json = (loadfile "/home/cd/domoticz/scripts/lua/JSON.lua")() -- For Linux
--Télécharge le fichier json
function telechargeFile (url,dest)
retour=os.execute("wget -O "..dest.." "..url)
--Si erreur de téléchargement
if (debug) then print("Retour telechargement = "..tostring(retour)) end
if ( retour == false ) then
print("Impossible de télécharger le fichier "..url)
end
end
--Pour tester si le fichier est présent sur le disque
function ExisteFile (chemin)
if ( debug ) then print ('Fonction ExisteXML parametre = '..chemin) end
--Ouvre le fichier en lecture
local tmpExiste = false
local tmpFichier = io.open(chemin, "r")
--Verifie l'ouverture du fichier sur le disque
if ( tmpFichier == nil ) then
print("Erreur d'ouverture du fichier '" .. fname .. "'.")
else
tmpExiste = true
tmpFichier:close()
end
return tmpExiste
end
function rangeDate (Date,DateMin,DateMax)
--if ( debug ) then print('Appel fonction rangeDate '..Date..' '..DateMin..' '..DateMax) end
return ( Date >= DateMin and Date < DateMax)
end
commandArray = {}
if ( debug ) then print('Timenow = '..tostring(timenow) ) end
--Mise à jour du fichier vacances.xml
for jour, heure in pairs(listeJourTelechargementXml) do
tmpDate = os.date("%d/%m")
if ( debug ) then print('listeJourTelechargementXml = '..tostring(jour).." "..tostring(heure).." date du jour = "..tostring(tmpDate) ) end
if ( (tostring(jour) == tostring(tmpDate) or tostring(jour) == '/j') and
(tostring(heure) == timenow or tostring(heure) == '/m') ) then
if (debug) then print("C est le moment de telecharger = "..tostring(retour)) end
--Supprime le fichier apres le traitement
retour=os.execute("rm "..fname)
if ( retour == false ) then
print("Impossible de supprimer le fichier "..fname)
end
telechargeFile(fichierSource,fname)
end
end
if ( debug ) then print('heureExecution = '..tostring(heureExecution) ) end
if ( tostring(timenow) == tostring(heureExecution) or forceExecution) then
if ( debug ) then print(' DEBUT SCRIPT VACANCES SCOLAIRES') end
--Test si le fichier est présent sur le disque
if ( ExisteFile (fname ) ) then
if ( debug ) then print('Le fichier json est présent') end
else
--Si le fichier n'existe pas on le telecharge
if ( debug ) then print('Le fichier xml non présent') end
telechargeFile(fichierSource,fname)
end
local f = io.open(fname, "r")
--Verifie l'ouverture du fichier sur le disque
if ( f == nil ) then
print("Erreur d'ouverture du fichier '" .. fname .. "'.")
os.exit(1)
end
if ( debug ) then print('Ouverture du fichier json') end
local json_block = f:read('*all')
print('json_block = '..json_block)
local json_valeur = json:decode(json_block)
--Fermeture du fichier
f:close()
if ( debug ) then print("Date de mise a jour = ") end
if ( debug ) then print(tostring(DateDuJour)) end
if ( debug ) then print('Académie sélectionnée = '..academie) end
for i in pairs(json_valeur) do
if ( json_valeur[i].fields.location == academie and json_valeur[i].fields.end_date ~= nil ) then
--Test la date du jour
if ( rangeDate(DateDuJour,json_valeur[i].fields.start_date,json_valeur[i].fields.end_date) ) then
flgdzVacancesScolaires = true
if ( debug ) then print('i= '..tostring(i)..' '..json_valeur[i].fields.description) end
if ( debug ) then print('Début '..json_valeur[i].fields.start_date..' '..'Fin '..json_valeur[i].fields.end_date..' ') end
if ( debug ) then print('Date du jour : '..DateDuJour..' en vacances') end
end
--Test le lendemain
if ( rangeDate(DateDemain,json_valeur[i].fields.start_date,json_valeur[i].fields.end_date) ) then
flgdzVacancesScolairesDemain = true
if ( debug ) then print('i= '..tostring(i)..' '..json_valeur[i].fields.description) end
if ( debug ) then print('Début '..json_valeur[i].fields.start_date..' '..'Fin '..json_valeur[i].fields.end_date..' ') end
if ( debug ) then print('Date du jour : '..DateDemain..' en vacances') end
end
end
end
if ( flgdzVacancesScolaires ) then
print( tostring(DateDuJour)..' en vacances' )
commandArray[dzVacancesScolaires] = 'On'
else
print( tostring(DateDuJour)..' pas en vacances' )
commandArray[dzVacancesScolaires] = 'Off'
end
if ( flgdzVacancesScolairesDemain ) then
print( tostring(DateDemain)..' en vacances' )
commandArray[dzVacancesScolairesDemain] = 'On'
else
commandArray[dzVacancesScolairesDemain] = 'Off'
print( tostring(DateDemain)..' pas en vacances' )
end
end
if ( debug ) then print(' FIN SCRIPT VACANCES SCOLAIRES '..string.format('elapsed time: %.4f\n', os.clock() - startClock)..' seconde') end
return commandArray
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: LUA : vacances scolaires
Comment procèdes tu pour créer ton fichier lua ?
Si tu utilise notepad++, Encodage, Encoder en UTF-8
Si tu utilise notepad++, Encodage, Encoder en UTF-8
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Re: LUA : vacances scolaires
je suis sous mac donc pas de notepad ++
j'ai fait un fichier texte sous noteedit enregistré .lua
l'ancienne version fonctionnait sans soucis et mes autres fichiers lua pareil
j'ai fait un fichier texte sous noteedit enregistré .lua
l'ancienne version fonctionnait sans soucis et mes autres fichiers lua pareil