Re: LUA: vigilance météoFrance V2
Publié : 13 déc. 2017, 22:44
Oui, impeccable 
Reprenez le contrôle de votre domotique
https://easydomoticz.com/forum/
Code : Tout sélectionner
2017-12-13 22:55:00.340 LUA: =========== vigilance meteofrance V2 (v1.04) ===========
2017-12-13 22:55:00.602 LUA: --- --- --- Conseils : Vent/Orange- Limitez vos déplacements et renseignez vous avant de les entreprendre.- Prenez garde aux chutes d'arbres ou d'objets.- N'intervenez pas sur les toitures.
2017-12-13 22:55:00.602 LUA: --- --- --- Commentaire : Fort coup de vent hivernal accompagné de grains orageux marqués, prévu cette nuit sur les régions proche de la Manche, puis gagnant les régions du nord-est. Réactons marquées des cours d'eau sur le bassin artois-picardie.
2017-12-13 22:55:00.604 LUA: --- --- --- Couleur Vigilance : 3 pour le departement : 80
2017-12-13 22:55:00.604 LUA: --- --- --- risque trouvée : 1
2017-12-13 22:55:00.604 LUA: --- --- --- Couleur Vigilance : 3 pour le departement : 80
2017-12-13 22:55:00.604 LUA: --- --- --- risque trouvée : 3
2017-12-13 22:55:00.604 LUA: --- --- --- risque trouvée : 2
2017-12-13 22:55:00.604 LUA: --- --- --- Couleur Vigilance Vague submersion : 3 pour le departement : 80
2017-12-13 22:55:00.604 LUA: --- --- --- vigilance : pluie-inondation
2017-12-13 22:55:00.604 LUA: --- --- --- vigilance : orages
2017-12-13 22:55:00.604 LUA: --- --- --- vigilances : pluie-inondation, orages
2017-12-13 22:55:00.605 LUA: --- --- --- CouleurVigilance : 3
2017-12-13 22:55:00.605 LUA: --- --- --- vigilance Forte pluie-inondation, orages --- --- ---
2017-12-13 22:55:00.605 LUA: ========= Fin vigilance meteofrance V2 (v1.04) =========
2017-12-13 22:55:00.607 Error: SQL Query("UPDATE DeviceStatus SET nValue='0',sValue='Vent/Orange- Limitez vos déplacements et renseignez vous avant de les entreprendre.- Prenez garde aux chutes d'arbres ou d'objets.- N'intervenez pas sur les toitures.',LastUpdate='2017-12-13 22:55:00' WHERE (ID = '625')") : near "arbres": syntax error
2017-12-13 22:55:00.609 Error: SQL Query("UPDATE DeviceStatus SET nValue='0',sValue='Fort coup de vent hivernal accompagné de grains orageux marqués, prévu cette nuit sur les régions proche de la Manche, puis gagnant les régions du nord-est. Réactons marquées des cours d'eau sur le bassin artois-picardie.',LastUpdate='2017-12-13 22:55:00' WHERE (ID = '626')") : near "eau": syntax errorCode : Tout sélectionner
--[[
~/domoticz/scripts/lua/script_time_Prevision_Pluie_jml.lua
OBJET :
Annonce dans combien de minutes il va pleuvoir, basé sur l'API de prévision pluie dans l'heure de météofrance :
- sur un device Alert : "Pluie forte dans 15 minutes"
- par mail
- par pushNotification
- par annonce Vocale : Je vous dérange pour vous prévenir qu'une pluie 'forte' est annoncée par météo france dans '35' minutes.
REQUIS :
device type : Alert , Nom :"Alerte Pluie dans l'heure"
ORIGIN :
https://easydomoticz.com/prvision-pluie/
https://easydomoticz.com/forum/viewtopic.php?f=10&t=1991
API :
http://www.meteofrance.com/mf3-rpc-portlet/rest/pluie/920630
http://www.meteofrance.com/mf3-rpc-portlet/rest/lieu/facet/pluie/search/rueil-malmaison
FONCTIONNEMENT :
Toutes les 5 minutes , interroge l'API meteoFrance de prévision de pluie dans l'heure
Parcours les 12 cadrans :
Trouve l'heure de la 1er pluie
Trouve l'intensité la plus forte de l'heure
Avec jsonPrevision.dataCadran[n].niveauPluie
1 = Pas de précipitation
2=faible
3=modéré
4=forte
met à jour le device : "Alerte Pluie dans l'heure"
alerte par : mail, push notif, synthese vocale
Annonce vocale : seulement une annonce vocale , toutes les 3heures.
]]--
-- --------------------------------
------ Paramètres à éditer ------
--------------------------------
local CITY_CODE = xxx -- Le code de votre ville est l'ID retourné par cette URL : http://www.meteofrance.com/mf3-rpc-portlet/rest/lieu/facet/pluie/search/nom de votre ville
local RAIN_ALERT_IDX = 1028 -- renseigner l'id du device alert associé si souhaité, sinon nil
local NOTIFICATION_PUSH = true
local NOTIFICATION_MAIL = true
local NOTIFICATION_VOCAL = false
local EMAIL = 'xx@gmail.com' -- adresse mail, séparées par ; si plusieurs
---------------------------------------------------------------------------
--Fonctions
---------------------------------------------------------------------------
package.path = package.path .. ';' .. '/home/pi/domoticz/scripts/lua/?.lua'
My = require('My_Library')
---------------------------------------------------------------------------
commandArray = {}
now = os.date("*t")
if now.min % 5 == 0 then
print('--- script_time_meteofrance_pluie_JML.lua --- ')
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()
local config = assert(io.popen('curl http://www.meteofrance.com/mf3-rpc-portlet/rest/pluie/' .. CITY_CODE .. '.json'))
local fileContent = config:read('*all')
config:close()
local jsonPrevision = json:decode(fileContent)
rainLevel = 0
when = 0
data = jsonPrevision.dataCadran
for i = 1, 12 do
if data[i].niveauPluie > 1 and when == 0 then
-- Find the first time that the rain is announced
when = i
end
if data[i].niveauPluie > rainLevel then
-- Find the maximum level of rain announced
rainLevel = data[i].niveauPluie
end
end
if rainLevel == 0 then
commandArray[#commandArray + 1] = { ['SendEmail'] = 'Domoticz Anomalie#' .. os.date("%H:%M") .. ' -- Anomalie dans le script : script_time_PrevisionPluie_JML.lua<br> L\'Api de meteoFrance renvoie un JSON inattendu. niveauPluie n\'est pas correct (devrait être de 1 à 4)<br>Contenu du Json : -------------<br>' .. fileContent .. '#' .. EMAIL }
elseif rainLevel == 1 then
if otherdevices_svalues["Alerte Pluie dans l'heure"] ~= "Pas de pluie dans l'heure" then
-- Don't update the device if there is no change. (so that don't change the timestamp of the devie)
commandArray[#commandArray + 1] = { ['UpdateDevice'] = RAIN_ALERT_IDX .. "|1|Pas de pluie dans l'heure" }
end
else
if when == 1 then
whenText = " maintenant"
else
whenText = " dans " .. tostring(when * 5) .. " minutes"
end
if rainLevel == 2 then
rainLevelText = "légère"
elseif rainLevel == 3 then
rainLevelText = "modérée"
elseif rainLevel == 4 then
rainLevelText = "forte"
end
commandArray[#commandArray + 1] = { ['UpdateDevice'] = RAIN_ALERT_IDX .. '|' .. rainLevel .. '|Pluie ' .. rainLevelText .. whenText }
if My.Time_Difference(otherdevices_lastupdate["Alerte Pluie dans l'heure"]) > 3 * 60 * 60 then
if NOTIFICATION_VOCAL == true and now.hour > 8 and now.hour <= 20 then
My.Speak("Je vous dérange pour vous prévenir qu\'une pluie " .. rainLevelText .. " est annoncée par méteo france" .. whenText, "normal")
end
if NOTIFICATION_PUSH == true then
commandArray[#commandArray + 1] = { ['SendNotification'] = 'Alerte Pluie#Pluie ' .. rainLevelText .. whenText }
end
if (DEBUG_MODE) then
commandArray[#commandArray + 1] = { ['SendEmail'] = 'JSON Alerte Pluie#' .. os.date("%H:%M") .. ' -- Api de meteoFrance <br>Contenu du Json : -------------<br>' .. fileContent .. '#' .. EMAIL }
end
end
end
end --if now.min
return commandArray
Code : Tout sélectionner
2017-12-13 22:40:00.582 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_Prevision_Pluie_jml.lua: /home/pi/domoticz/scripts/lua/My_Library.lua:42: attempt to index local 'timestamp' (a nil value)
2017-12-13 22:44:00.690 Error: SQL Query("UPDATE DeviceStatus SET nValue='0',sValue='Vent/Orange- Limitez vos déplacements et renseignez vous avant de les entreprendre.- Prenez garde aux chutes d'arbres ou d'objets.- N'intervenez pas sur les toitures.',LastUpdate='2017-12-13 22:44:00' WHERE (ID = '625')") : near "arbres": syntax error
2017-12-13 22:44:00.692 Error: SQL Query("UPDATE DeviceStatus SET nValue='0',sValue='Fort coup de vent hivernal accompagné de grains orageux marqués, prévu cette nuit sur les régions proche de la Manche, puis gagnant les régions du nord-est. Réactons marquées des cours d'eau sur le bassin artois-picardie.',LastUpdate='2017-12-13 22:44:00' WHERE (ID = '1059')") : near "eau": syntax error
2017-12-13 22:45:00.695 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_Prevision_Pluie_jml.lua: /home/pi/domoticz/scripts/lua/My_Library.lua:42: attempt to index local 'timestamp' (a nil value)
2017-12-13 22:50:00.636 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_Prevision_Pluie_jml.lua: /home/pi/domoticz/scripts/lua/My_Library.lua:42: attempt to index local 'timestamp' (a nil value)tu l'as pas mal customisécalouis a écrit :Merci pour ton soutien.
J'ai le même pb, semble-t-il, pour ce script :
l'erreur provient de ton fichier My_Library.lua, de la fonction contenant local timestampcalouis a écrit :Code : Tout sélectionner
2017-12-13 22:40:00.582 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_Prevision_Pluie_jml.lua: /home/pi/domoticz/scripts/lua/My_Library.lua:42: attempt to index local 'timestamp' (a nil value)
ton domoticz ne supporte apparemment pas lescalouis a écrit :Code : Tout sélectionner
2017-12-13 22:44:00.690 Error: SQL Query("UPDATE DeviceStatus SET nValue='0',sValue='Vent/Orange- Limitez vos déplacements et renseignez vous avant de les entreprendre.- Prenez garde aux chutes d'arbres ou d'objets.- N'intervenez pas sur les toitures.',LastUpdate='2017-12-13 22:44:00' WHERE (ID = '625')") : near "arbres": syntax error
Code : Tout sélectionner
'Code : Tout sélectionner
"Code : Tout sélectionner
-- ====================================================================================================================
-- Conseil météo
-- ====================================================================================================================
if ( dz_conseil_meteo ~= nil and conseil ~= nil and CouleurVigilance > 1 ) or ( dz_conseil_meteo ~= nil and conseil ~= nil and display_conseils == true ) then -- Mise à jour du devise texte conseil météo si il existe
commandArray[#commandArray+1] = {['UpdateDevice'] = dz_conseil_meteo.."|0|".. TronquerTexte(conseil,240)}
elseif (dz_conseil_meteo ~= nil and conseil == nil) or ( dz_conseil_meteo ~= nil and conseil ~= nil and display_conseils == false ) then -- Mise à jour du devise texte conseil météo si il existe même s'il n'y a pas de conseil disponible
commandArray[#commandArray+1] = {['UpdateDevice'] = dz_conseil_meteo.."|0|Aucun conseil disponible"}
end
-- ====================================================================================================================
-- Commentaire météo
-- ====================================================================================================================
if ( dz_commentaire_meteo ~= nil and commentaire ~= nil and CouleurVigilance > 1 ) or ( dz_commentaire_meteo ~= nil and commentaire ~= nil and display_commentaire == true ) then -- Mise à jour du devise texte commentaire météo si il existe
commandArray[#commandArray+1] = {['UpdateDevice'] = dz_commentaire_meteo.."|0|".. commentaire}
elseif (dz_commentaire_meteo ~= nil and commentaire == nil ) or ( dz_commentaire_meteo ~= nil and commentaire ~= nil and display_commentaire == false ) then -- Mise à jour du devise texte commentaire météo si il existe même s'il n'y a pas de commentaire disponible
commandArray[#commandArray+1] = {['UpdateDevice'] = dz_commentaire_meteo.."|0|Aucun commentaire disponible"}
end
-- ==================================================================================================================== Code : Tout sélectionner
-- download curl : https://bintray.com/vszakats/generic/download_file?file_path=curl-7.54.0-win32-mingw.7z
curl = 'c:\\Programs\\Curl\\curl.exe ' -- ne pas oublier l'espace à la finCode : Tout sélectionner
local curl = 'C:/curl-7.50.3-win32-mingw/bin/curl.exe '
Code : Tout sélectionner
2017-12-15 18:17:00.267 dzVents: =========== vigilance meteofrance V2 (v1.04) ===========
2017-12-15 18:17:00.274 Error: EventSystem: in script_time_vigilance_meteofrance_V2.lua: [string "--[[ ..."]:246: attempt to index global 'rid' (a nil value)