from common.models import * import abc import json from .Device import DeviceController ''' Device controller for PLC. This class must implement set, get and do functions (DeviceController is an abstract) ''' class PLCController(DeviceController): def __init__(self): super().__init__("PLC") def sendCommand(self, dict_list): command = { "command" : dict_list } return self.sendMessage(json.dumps(command)) # EP sert à rien #return "" def sendCommandWithAnswer(self, dict_list): # Send commmand TO plc status = self.sendCommand(dict_list) #EP added if not status: return "NOT_SET1" # Read result FROM plc return (self.blockAndReadBytes(4096)) def switch_lights(self, command) : command = command.split() if len(command) > 2: if command[2] == "ON": return self.sendCommandWithAnswer([{"name": "SWITCH LINES ON"}]) elif command[2] == "OFF": return self.sendCommandWithAnswer([{"name": "SWITCH LINES OFF"}]) else: return "Invalid command" def manage_shutters(self, command): command = command.split() if len(command) == 2: if command[0] == "CLOSE": return self.sendCommandWithAnswer([{"name": "CLOSE SHUTTERS"}]) elif command[0] == "OPEN": return self.sendCommandWithAnswer([{"name": "OPEN SHUTTERS"}]) else: return "Invalid command" return "Invalid command" def getList(self): return self.sendCommandWithAnswer([{"name":"LIST"}]) def getStatus(self, command=""): command = command.split() if (len(command) > 2): I = 0 #emplacement ou gérer la commande a envoyer pour le statut d'un capteur en particulier s = self.sendCommandWithAnswer([{"name":"STATUS"}]) return s ''' Value is a string ("on" or "off"), current is a decimal value ("0.231") ''' def setLampFlatCagire(self, value, current): return self.sendCommand([{"name":"LAMP_FLAT_CAGIRE", "value":value, "current":current}])