From 738337c5f82015e7478a391074859eee60161a1f Mon Sep 17 00:00:00 2001 From: Yeongdo Park Date: Tue, 11 Aug 2020 16:08:47 -0700 Subject: [PATCH] Clean up easymodbus, rename variables and decouple modbus and can --- WebRelay.py | 16 ---------------- c2m.py | 31 +++++++++++-------------------- 2 files changed, 11 insertions(+), 36 deletions(-) diff --git a/WebRelay.py b/WebRelay.py index f3aef64..d070d74 100644 --- a/WebRelay.py +++ b/WebRelay.py @@ -1,7 +1,5 @@ -import easymodbus.modbusClient from pymodbus.client.sync import ModbusTcpClient - class WebRelay: def __init__(self, n_relay=10): self.n_relay = n_relay @@ -27,20 +25,6 @@ class WebRelay: self.client.close() self.client = None - ''' -def WriteSingleCoil(self, startingAddress, value) - -Write single Coil to Server device (Function code 5) -startingAddress: Coil to be written -value: Coil Value to be written - -def WriteMultipleCoils(self, startingAddress, values) - -Write multiple coils to Server device (Function code 15) -startingAddress : First coil to be written -values: Coil Values [0..quantity-1] to be written - ''' - def turn_relay_on(self, relay_id): ''' :param relay_id: id of relay to turn on diff --git a/c2m.py b/c2m.py index af45bc3..b7297de 100644 --- a/c2m.py +++ b/c2m.py @@ -8,9 +8,9 @@ from pubsub import pub from WebRelay import WebRelay -class BmsListener (can.Listener): - def __init__(self, parent): - self.parent = parent +class CanToModbus (can.Listener): + def __init__(self, modbus_client): + self.modbus_client = modbus_client def on_message_received(self, msg): relay_id = msg.arbitration_id @@ -18,26 +18,20 @@ class BmsListener (can.Listener): print (relay_id, relay_state) if relay_id < 10: if relay_state[-1] > 0: - # pub.sendMessage("turn_relay_on", relay_id=relay_id) - self.parent.turn_relay_on(relay_id) + self.modbus_client.turn_relay_on(relay_id) else: - # pub.sendMessage("turn_relay_off",relay_id=relay_id) - self.parent.turn_relay_off(relay_id) - - print ("message processed!") + self.modbus_client.turn_relay_off(relay_id) -class Model: - def __init__(self, modbus): +class PmgrowBms: + def __init__(self, add_printer=True): self.bus = None self.notifier = None - self.printer = can.Printer() - self.listen_bms = BmsListener(modbus) + self.listeners = [can.Printer()] if add_printer else [] 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]) + self.notifier = can.Notifier(self.bus, self.listeners) def stop_can(self): self.notifier.stop() @@ -59,13 +53,10 @@ 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") - - canbus = Model(modbus) + canbus = PmgrowBms(modbus) + canbus.listeners.append(CanToModbus(modbus)) canbus.start_can() while True: time.sleep(1) - # modbus.client.is_connected()