Moves modbus functions to M1 driver
This commit is contained in:
@@ -3,11 +3,10 @@
|
||||
"file3": "persistence.py",
|
||||
"file2": "utilities.py",
|
||||
"file1": "prostarsolar.py",
|
||||
"file5": "Maps.py",
|
||||
"file4": "Channel.py"
|
||||
"file4": "modbusMap.p"
|
||||
},
|
||||
"deviceName": "prostarsolar",
|
||||
"driverId": "0170",
|
||||
"releaseVersion": "1",
|
||||
"releaseVersion": "2",
|
||||
"driverFileName": "prostarsolar.py"
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "prostarsolar",
|
||||
"driverFilename": "prostarsolar.py",
|
||||
"driverId": "0000",
|
||||
"name": "prostarsolar",
|
||||
"driverFilename": "prostarsolar.py",
|
||||
"driverId": "0000",
|
||||
"additionalDriverFiles": [
|
||||
"utilities.py",
|
||||
"persistence.py",
|
||||
"Channel.py"
|
||||
],
|
||||
"version": 1,
|
||||
"persistence.py",
|
||||
"modbusMap.p"
|
||||
],
|
||||
"version": 2,
|
||||
"s3BucketName": "prostarsolar"
|
||||
}
|
||||
}
|
||||
1414
python-driver/modbusMap.p
Normal file
1414
python-driver/modbusMap.p
Normal file
File diff suppressed because it is too large
Load Diff
@@ -4,13 +4,8 @@ import threading
|
||||
from device_base import deviceBase
|
||||
import persistence
|
||||
from utilities import get_public_ip_address
|
||||
import prostarsolar_utils
|
||||
import time
|
||||
import minimalmodbus
|
||||
import minimalmodbusM1
|
||||
|
||||
minimalmodbusM1.CLOSE_PORT_AFTER_EACH_CALL = True
|
||||
minimalmodbusM1.STOPBITS = 2
|
||||
|
||||
_ = None
|
||||
|
||||
@@ -18,7 +13,6 @@ _ = None
|
||||
# GLOBAL VARIABLES
|
||||
WATCHDOG_SEND_PERIOD = 3600 # Seconds, the longest amount of time before sending the watchdog status
|
||||
PLC_IP_ADDRESS = "192.168.1.10"
|
||||
CHANNELS = prostarsolar_utils.CHANNELS # Load the channels from the utils program
|
||||
|
||||
# PERSISTENCE FILE
|
||||
persist = persistence.load()
|
||||
@@ -58,8 +52,6 @@ class start(threading.Thread, deviceBase):
|
||||
public_ip_address = get_public_ip_address()
|
||||
self.sendtodbDev(1, 'public_ip_address', public_ip_address, 0, 'prostarsolar')
|
||||
|
||||
instrument_485 = self.connect_to_485(prostarsolar_utils.BAUDRATE, prostarsolar_utils.NODEADDRESS)
|
||||
|
||||
send_loops = 0
|
||||
watchdog_loops = 0
|
||||
watchdog_check_after = 5000
|
||||
@@ -67,19 +59,6 @@ class start(threading.Thread, deviceBase):
|
||||
if self.forceSend:
|
||||
print "FORCE SEND: TRUE"
|
||||
|
||||
for chan in CHANNELS:
|
||||
try:
|
||||
val = chan.read(instrument_485.read_registers(chan.register_number, chan.channel_size, functioncode=4))
|
||||
if chan.check(val, self.forceSend):
|
||||
self.sendtodbDev(1, chan.mesh_name, chan.value, 0, 'prostarsolar')
|
||||
time.sleep(0.1)
|
||||
except IOError as e:
|
||||
print("prostarsolar IO Error: {}".format(e))
|
||||
print("Attempting to reconnect to rs485 device")
|
||||
instrument_485 = self.connect_to_485(prostarsolar_utils.BAUDRATE, prostarsolar_utils.NODEADDRESS)
|
||||
except Exception as e:
|
||||
print("prostarsolar Non-IO Error: {}".format(e))
|
||||
|
||||
print("prostarsolar driver still alive...")
|
||||
if self.forceSend:
|
||||
if send_loops > 2:
|
||||
@@ -98,17 +77,6 @@ class start(threading.Thread, deviceBase):
|
||||
watchdog_loops = 0
|
||||
time.sleep(10)
|
||||
|
||||
def connect_to_485(self, baudrate, nodeaddress):
|
||||
"""Connect to the RS485 device."""
|
||||
connected_to_485 = False
|
||||
while connected_to_485 is False:
|
||||
connected_to_485 = self.mcu.set485Baud(baudrate)
|
||||
|
||||
serial_485 = self.mcu.rs485
|
||||
instrument_485 = minimalmodbusM1.Instrument(nodeaddress, serial_485)
|
||||
instrument_485.address = nodeaddress
|
||||
return instrument_485
|
||||
|
||||
def prostarsolar_sync(self, name, value):
|
||||
"""Sync all data from the driver."""
|
||||
self.forceSend = True
|
||||
|
||||
Reference in New Issue
Block a user