Blame view

src/devices/PLC.py 1.17 KB
ddf59dd4   haribo   Remaniement :
1
from common.models import *
605b65e5   Jeremy   Update simulators
2
import abc
6c2793c2   jeremy   Update
3
import json
ddf59dd4   haribo   Remaniement :
4
from .Device import DeviceController
21598bc6   haribo   Date: 01/08/2016
5

e8e6f017   Jeremy   Reworked devices ...
6
7
8
9
'''
    Device controller for PLC.
    This class must implement set, get and do functions (DeviceController is an abstract)
'''
ddf59dd4   haribo   Remaniement :
10
class PLCController(DeviceController):
21598bc6   haribo   Date: 01/08/2016
11
12

    def __init__(self):
bb0fbab1   haribo   Fini de mettre la...
13
        super().__init__("PLC")
e8e6f017   Jeremy   Reworked devices ...
14

6c2793c2   jeremy   Update
15
16
    def sendCommand(self, dict_list):
        command = { "command" : dict_list }
15e15006   Etienne Pallier   Nouvelles modifs ...
17
18
19
        return self.sendMessage(json.dumps(command))
        # EP sert à rien
        #return ""
e8e6f017   Jeremy   Reworked devices ...
20

6c2793c2   jeremy   Update
21
    def sendCommandWithAnswer(self, dict_list):
1a2dc19f   Etienne Pallier   nombreux bugfixes...
22
        # Send commmand TO plc
15e15006   Etienne Pallier   Nouvelles modifs ...
23
        status = self.sendCommand(dict_list)
f47ec727   Quentin Durand   hotfix monitoring
24

15e15006   Etienne Pallier   Nouvelles modifs ...
25
        #EP added
f47ec727   Quentin Durand   hotfix monitoring
26
27
        if not status:
            return "NOT_SET1"
1a2dc19f   Etienne Pallier   nombreux bugfixes...
28
        # Read result FROM plc
6c2793c2   jeremy   Update
29
        return (self.blockAndReadBytes(4096))
e8e6f017   Jeremy   Reworked devices ...
30

6c2793c2   jeremy   Update
31
32
    def getList(self):
        return self.sendCommandWithAnswer([{"name":"LIST"}])
ce470283   Jeremy   Plc simulator fin...
33
34

    def getStatus(self):
f47ec727   Quentin Durand   hotfix monitoring
35
36
        s = self.sendCommandWithAnswer([{"name":"STATUS"}])
        return s
6c2793c2   jeremy   Update
37
38
39
40
41
    '''
        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}])