WAN IP Checker: Difference between revisions

From Domoticz
Jump to navigation Jump to search
Walter vl (talk | contribs)
Walter vl (talk | contribs)
mNo edit summary
 
Line 11: Line 11:
There is a simple way to solve this: Install a small dzVents script on your system, that will automatically run periodically.   
There is a simple way to solve this: Install a small dzVents script on your system, that will automatically run periodically.   


It will retrieve the external IP address and compare that to the address that was stored in the previous run. If they differ. it will notify you and give you the new IP address.
It will retrieve the external IP address and compare that to the address that was stored in the previous run. If they differ it will put the new IP address in the text device.  
 
The script below was tested on Raspberry Pi, running Jesse.  


'''Instructions'''  
'''Instructions'''  


[[Dummy for virtual Switches|Create a Dummy text device]] named ' Wan IP' and copy  and paste the dzvents script in the internal [[EventSystem|event editor]] as a dzvents script.
[[Dummy for virtual Switches|Create a Dummy text device]] named ' Wan IP' and copy  and paste the dzvents script in the internal [[EventSystem|event editor]] as a dzvents script.


'''The Script'''<syntaxhighlight lang="lua" line="1">
'''The Script'''<syntaxhighlight lang="lua" line="1">

Latest revision as of 19:53, 12 December 2025

Why do you need one?

Lots of people have experienced this: you are away from home, on a business trip or holidays, and your IP provider has given you a new external IP address. Lots of providers use dynamic IP, a static address is hard to come by. Unfortunately they don't tell you this in any way, but you find out the hard way: you can't get into your systems from remote.

There are ways around this, for instance by using a DynDNS service. But if the only thing you want is to VPN into your network, this is overkill.

There is a simple way to solve this: Install a small dzVents script on your system, that will automatically run periodically.

It will retrieve the external IP address and compare that to the address that was stored in the previous run. If they differ it will put the new IP address in the text device.

Instructions

Create a Dummy text device named ' Wan IP' and copy and paste the dzvents script in the internal event editor as a dzvents script.

The Script

local getIp    = 'https://api.ipify.org/?format=json'
return {
  on = {
     timer = { 'every 6 hours' },
     httpResponses = { 'wanIP' }
},
logging = {
     level = domoticz.LOG_FORCE,
     marker = '[WAN IP]'
       },
  execute = function(dz, devNil)
     local actIP = dz.devices('Wan IP').text 
     local newIP = 'Unable to retrieve IP'
   
     if (devNil.isTimer)  then
        dz.log("Send WanIP request")
        dz.openURL({
           url = getIp,
           method = 'GET',
           callback = 'wanIP'
           })
     elseif (devNil.isHTTPResponse) then
        dz.log("WanIP response")
        if (devNil.ok) then -- statusCode == 2xx
           newIP = devNil.json.ip
        end 
        if newIP ~= actIP then 
           dz.devices('Wan IP').updateText(newIP)
        end 
     end
  end
}