replace easymodbus with pymodbus
This commit is contained in:
parent
5883246a01
commit
0b506b2e3b
2 changed files with 22 additions and 20 deletions
16
WebRelay.py
16
WebRelay.py
|
|
@ -1,16 +1,16 @@
|
|||
import easymodbus.modbusClient
|
||||
from pymodbus.client.sync import ModbusTcpClient
|
||||
|
||||
|
||||
class WebRelay:
|
||||
def __init__(self, n_relay=10):
|
||||
self.n_relay = n_relay
|
||||
self.relay_status = [False for i in range(self.n_relay)]
|
||||
self.client = None
|
||||
self.client = None
|
||||
|
||||
def __del__(self):
|
||||
if self.client:
|
||||
if self.client.is_connected():
|
||||
self.client.close()
|
||||
self.client.close()
|
||||
|
||||
def apply_network_configs(self, nc_dict):
|
||||
self.ip_address = nc_dict["ipaddr"]
|
||||
|
|
@ -19,13 +19,8 @@ class WebRelay:
|
|||
|
||||
def connect_slave(self):
|
||||
if not self.client:
|
||||
self.client = easymodbus.modbusClient.ModbusClient(self.ip_address, self.port)
|
||||
self.client.unitidentifier = self.uid
|
||||
self.client = ModbusTcpClient(self.ip_address)
|
||||
self.client.connect()
|
||||
else:
|
||||
if not self.client.is_connected():
|
||||
self.client = None
|
||||
self.connect_slave()
|
||||
|
||||
def disconnect_slave(self):
|
||||
if self.client:
|
||||
|
|
@ -62,5 +57,4 @@ values: Coil Values [0..quantity-1] to be written
|
|||
|
||||
def check_write_single_coil(self, relay_id, value):
|
||||
if self.client:
|
||||
if self.client.is_connected():
|
||||
self.client.write_single_coil(relay_id, value)
|
||||
self.client.write_coil(relay_id, value)
|
||||
|
|
|
|||
26
c2m.py
26
c2m.py
|
|
@ -1,3 +1,5 @@
|
|||
import time
|
||||
|
||||
import can
|
||||
import cantools
|
||||
|
||||
|
|
@ -15,21 +17,26 @@ class BmsListener (can.Listener):
|
|||
relay_state = msg.data
|
||||
print (relay_id, relay_state)
|
||||
if relay_id < 10:
|
||||
if relay_state > 0:
|
||||
pub.sendMessage("turn_relay_on", relay_id=relay_id)
|
||||
if relay_state[-1] > 0:
|
||||
# pub.sendMessage("turn_relay_on", relay_id=relay_id)
|
||||
self.parent.turn_relay_on(relay_id)
|
||||
else:
|
||||
pub.sendMessage("turn_relay_off",relay_id=relay_id)
|
||||
# pub.sendMessage("turn_relay_off",relay_id=relay_id)
|
||||
self.parent.turn_relay_off(relay_id)
|
||||
|
||||
print ("message processed!")
|
||||
|
||||
|
||||
class Model:
|
||||
def __init__(self):
|
||||
def __init__(self, modbus):
|
||||
self.bus = None
|
||||
self.notifier = None
|
||||
self.printer = can.Printer()
|
||||
self.listen_bms = BmsListener(self)
|
||||
self.listen_bms = BmsListener(modbus)
|
||||
|
||||
def start_can(self):
|
||||
self.bus = can.Bus()
|
||||
#self.notifier = can.Notifier(self.bus, [self.printer])
|
||||
self.notifier = can.Notifier(self.bus, [self.printer, self.listen_bms])
|
||||
|
||||
def stop_can(self):
|
||||
|
|
@ -52,12 +59,13 @@ if __name__ == "__main__":
|
|||
modbus.apply_network_configs(nc_dict)
|
||||
modbus.connect_slave()
|
||||
|
||||
pub.subscribe(modbus.turn_relay_on, "turn_relay_on")
|
||||
pub.subscribe(modbus.turn_relay_off, "turn_relay_off")
|
||||
# pub.subscribe(modbus.turn_relay_on, "turn_relay_on")
|
||||
# pub.subscribe(modbus.turn_relay_off, "turn_relay_off")
|
||||
|
||||
canbus = Model()
|
||||
canbus = Model(modbus)
|
||||
|
||||
canbus.start_can()
|
||||
|
||||
while True:
|
||||
pass
|
||||
time.sleep(1)
|
||||
# modbus.client.is_connected()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue