Esempio n. 1
0
class Coup():
    relay_plate_id = 0
    light_names = [
        'Run Light 1', 'Run Light 2', 'Coup Light 1', 'Coup Light 2'
    ]

    coup_dict = {
        'Coup': {
            'Lights': {},
            'Doors': {},
            'Temperatures': {},
            'Plate Status': {},
            'LEDs': {
                'Relay Plate {} LED'.format(relay_plate_id): False
            }
        }
    }
    RELAY.clrLED(relay_plate_id)

    def get_status(self):
        relay_state = RELAY.relaySTATE(self.relay_plate_id)
        self.coup_dict['Coup']['Plate Status'] = relay_state
        i = 0
        status = {}
        for light_name in self.light_names:
            status[light_name] = pow(2, i) & relay_state > 0
            i += 1
        self.coup_dict['Coup']['Lights'] = status
        return json.dumps(self.coup_dict)

    # TODO: Invert state to only check passed in state--take away requirement to pass in fully built json state
    def set_state(self, desired_state_json):
        desired_state = json.loads(desired_state_json)
        current_state = json.loads(self.get_status())
        lights = current_state['Coup']['Lights']
        for light, state in lights.items():
            if state != desired_state['Coup']['Lights'][light]:
                self.set_light(light, desired_state['Coup']['Lights'][light])

    def set_light(self, name, value):
        light = self.light_names.index(name) + 1
        if value:
            RELAY.relayON(self.relay_plate_id, light)
        else:
            RELAY.relayOFF(self.relay_plate_id, light)

    def set_light_mode(self, mode):
        self.set_state(mode)


# c = Coup()
# c.set_state('{"Coup": {"Lights": {"Coup Light 2": true, "Run Light 2": true, "Coup Light 1": true, "Run Light 1": false}, "Doors": {}, "Temperatures": {}}}')
Esempio n. 2
0
while True:
    try:
        line = sys.stdin.readline()
        # TODO: add error handling for invalid JSON
        msg = json.loads(line)
        addr = msg['addr']
        plate_type = msg['plate_type']
        cmd = msg['cmd']
        args = msg['args']
        resp = {}
        if (plate_type == "RELAY"):
            if (cmd == "setLED"):
                RP.setLED(addr)
                resp['LED'] = 1
            elif (cmd == "clrLED"):
                RP.clrLED(addr)
                resp['LED'] = 0
            elif (cmd == "toggleLED"):
                RP.toggleLED(addr)
                resp['LED'] = "UNKNOWN"
            elif (cmd == "getID"):
                resp['ID'] = RP.getID(addr)
            elif (cmd == "getHWrev"):
                resp['HWrev'] = RP.getHWrev(addr)
            elif (cmd == "getFWrev"):
                resp['FWrev'] = RP.getFWrev(addr)
            elif (cmd == "getPMrev"):
                resp['PMrev'] = RP.getPMrev()
            elif (cmd == "getADDR"):
                resp['ADDR'] = RP.getADDR(addr)
            elif ("relay" in cmd):