This commit is contained in:
Nico Melone
2022-07-21 13:57:30 -05:00
parent 9b3296a04b
commit b042d41fc1
15 changed files with 209 additions and 54 deletions

View File

@@ -8,7 +8,7 @@
"file4": "Tags.py"
},
"deviceName": "dual_flowmeter",
"releaseVersion": "9",
"releaseVersion": "10",
"driverFileName": "dual_flowmeter.py",
"driverId": "0100"
}

View File

@@ -8,7 +8,7 @@ from random import randint
from device_base import deviceBase
from Channel import PLCChannel, ModbusChannel,read_tag, write_tag, TAG_DATAERROR_SLEEPTIME
import persistence
from utilities import get_public_ip_address
from utilities import get_public_ip_address, get_private_ip_address
from file_logger import filelogger as log
# PERSISTENCE FILE
@@ -52,10 +52,11 @@ class start(threading.Thread, deviceBase):
mqtt=mqtt, Nodes=Nodes)
self.daemon = True
self.version = "9"
self.version = "10"
self.finished = threading.Event()
self.force_send = False
self.public_ip_address = ""
self.private_ip_address = ""
self.public_ip_address_last_checked = 0
self.watchdog = False
self.watchdog_last_checked = 0
@@ -125,9 +126,13 @@ class start(threading.Thread, deviceBase):
"""Check the public IP address and send to Meshify if changed."""
self.public_ip_address_last_checked = time.time()
test_public_ip = get_public_ip_address()
test_private_ip = get_private_ip_address()
if not test_public_ip == self.public_ip_address:
self.sendtodbDev(1, 'public_ip_address', test_public_ip, 0, 'dual_flowmeter')
self.public_ip_address = test_public_ip
if not test_private_ip == self.private_ip_address:
self.sendtodbDev(1, 'private_ip_address', test_private_ip, 0, 'dual_flowmeter')
self.private_ip_address = test_private_ip
def dual_flowmeter_watchdog(self):
"""Write a random integer to the PLC and then 1 seconds later check that it has been decremented by 1."""

View File

@@ -1,19 +1,29 @@
"""Utility functions for the driver."""
import socket
import struct
import urllib
import contextlib
def get_public_ip_address():
"""Find the public IP Address of the host device."""
def get_private_ip_address():
"""Find the private IP Address of the host device."""
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.connect(("8.8.8.8", 80))
ip_address = sock.getsockname()[0]
sock.close()
except Exception as e:
return e
ip_address = sock.getsockname()[0]
sock.close()
return ip_address
def get_public_ip_address():
ip_address = "0.0.0.0"
try:
with contextlib.closing(urllib.urlopen("http://checkip.amazonaws.com")) as url:
ip_address = url.read()
except Exception as e:
print("could not resolve check IP: {}".format(e))
return ip_address
return ip_address[:-1]
def int_to_float16(int_to_convert):
"""Convert integer into float16 representation."""