Je vous propose un petit script lua qui lors d'un changement de votre adresse IP publique :
° Envoie une notification via telegram.
° Modifie le DynHost d'OVH.
° Mets à jour une variable globale.
Pour l'installation :
Il faut créer un nouveau script lua "Réglages" "Plus d'options" "Evènements" "+" "LUA" "TIME" et y coller le code en supprimant le code de l'exemple proposé.
Il faudra ensuite créer une variable de type string dans "Réglages" "Plus d'options" "Variables utilisateur". Choisir un nom "WAN_IP" par exemple, en type de variable choisir "Chaîne" et une valeur "0.0.0.0" puis faire ajouter.
Dans le code à la ligne :
Code : Tout sélectionner
local uservar = "" -- Indiquer le nom de la variable utilisateurA ce stade le script ne fera que renseigner la variable utilisateur toutes les quinze minutes en cas de changement d'IP publique.
Pour recevoir une notification via telegram deux lignes sont à renseigner :
Code : Tout sélectionner
local token = "" -- Indiquez le token telegram sinon ""
local chat_id =0 -- Indiquez le chat_id telegram sinon Laisser à 0Code : Tout sélectionner
local host = "" -- Indiquer le sous-domaine OVH sinon laisser à ""
local cnx = "LOGIN:MDP" -- Indiquer le login:mdp d'OVH sinon laisser à "LOGIN:MDP"Code : Tout sélectionner
--[[
Script de type "Time" : Renseigne une variable globale si changement d'adresse IP publique.
Peut envoyer un message telegram et/ou modifier un DynHost OVH
Prérequis : Créer une user variable de type Chaine valeur initiale : 1.0.0.0 par exemple
Auteur : lmet
url: http://www.lamaisonentique.com/domoticz-dynhost-ovh/
lmet [v :0.2] : Modification function GetHTTPResult et délai paramétrable
lmet [v :0.1] : version initiale
--]]
------------------------------------------------------- VARIABLES A EDITER -------------------------------------------------------
local uservar = "" -- Indiquer le nom de la variable utilisateur /!\ ne pas laisser vide
local token = "" -- Indiquer le token telegram sinon ""
local chat_id = 0 -- Indiquer le chat_id telegram sinon Laisser à 0
local host = "" -- Indiquer le sous-domaine OVH sinon laisser à ""
local cnx = "LOGIN:MDP" -- Indiquer le login:mdp d'OVH sinon laisser à "LOGIN:MDP"
local mrequest = 15 -- Délai entre deux requètes => 15 mn par défaut
local log = false -- (true/false) => Envoi ou pas de messages dans les logs
------------------------------------------------------ FIN VARIABLES A EDITER ----------------------------------------------------
local cmd = "curl -s http://whatismyip.akamai.com/" -- Adresse requête IP publique
function GetHTTPResult(cmd)
local url = assert(io.popen(cmd))
local blocjson = url:read('*all')
url:close()
wan_ip = blocjson
return wan_ip
end
commandArray = {}
-- Suivant le délai défini (quinze minutes par défaut) => Vérifier l'IP publique
local m = os.date('%M')
if (m % mrequest == 0) then
wan_ip = GetHTTPResult(cmd)
-- L'IP a changé!
if wan_ip ~= uservariables[uservar] then
if log == true then
print ("[WAN_IP] --- Changement de l'IP publique valeur : " .. wan_ip)
end
-- Modifier l'entrée IP du DynHost OVH
if cnx ~= "" then
cmd = 'curl "https://www.ovh.com/nic/update?system=dyndns&hostname=' .. host .. '&myip=' .. wan_ip .. '"' .. ' -u "' .. cnx .. '"'
os.execute (cmd)
if log == true then
print ("[WAN_IP] --- Modification du DynHost effectuée")
end
end
if token ~= "" and chat_id ~= 0 then
local msg = "L'adresse IP a changé. Nouvelle IP : " .. wan_ip
cmd = 'curl --data chat_id='.. chat_id ..' --data-urlencode "text='.. msg ..'" "https://api.telegram.org/bot'.. token ..'/sendMessage" '
os.execute (cmd)
if log == true then
print ("[WAN_IP] --- Notification telegram effectuée")
end
end
-- Dans tous les cas renseigner la nouvelle IP
commandArray["Variable:" .. uservar] = wan_ip
if log == true then
print ("[WAN_IP] --- Modification de la variable utilisateur : " .. uservar .. " effectuée" )
end
else
if log == true then
print ("[WAN_IP] --- Pas de changement IP publique actuelle : " .. wan_ip)
end
end
end
return commandArray