diff --git a/WebRelay.py b/WebRelay.py index cb0dfac..f3aef64 100644 --- a/WebRelay.py +++ b/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) \ No newline at end of file + self.client.write_coil(relay_id, value) diff --git a/c2m.py b/c2m.py index 76e5c10..af45bc3 100644 --- a/c2m.py +++ b/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()