Changeset - b433eae633b8
[Not reviewed]
refactor
3 4 0
matthewreed - 8 years ago 2017-07-16 19:38:31

Added config sensor type and removed old files that are no longer needed.
7 files changed with 153 insertions and 151 deletions:
0 comments (0 inline, 0 general)
hydrobot.py
Show inline comments
 
@@ -57,18 +57,12 @@ def main(argv):
 
    module_network = network.Network(database, config)
 
    module_network.start_all_interfaces()
 
    
 
    scheduler = Scheduler(module_network, config)
 
    scheduler.start()
 
    
 
    #module = module_network.module_list.lookup_module_by_name("RelayDrive1")
 
    #message = HydroBotMessage(module.uuid, (0x80 | protocol.lookup_command_key_by_name("config")), protocol.lookup_data_key_by_name("can_id"), 0, 0x300)
 
    #module.send_message(message)
 
    #message = HydroBotMessage(module.uuid, (0x80 | protocol.lookup_command_key_by_name("config")), protocol.lookup_data_key_by_name("data_rate"), 0, 10)
 
    #module.send_message(message)
 

	
 
    while True:
 
        time.sleep(0.1)
 
        
 
def close_program(signum, frame):
 
    logger.info("Closing now!")
 
    sys.exit(0)
hydrobot_can.json
Show inline comments
 
deleted file
hydrobot_data_test.py
Show inline comments
 
deleted file
hydrobot_def.json
Show inline comments
 
@@ -7,20 +7,58 @@
 
            "class" : "None"
 
        },
 
        {
 
            "id" : "0x01",
 
            "name" : "airsense",
 
            "display" : "AirSense",
 
            "class" : "AirSenseModule"
 
            "class" : "AirSenseModule",
 
            "sensors" : [
 
                {
 
                    "name" : "temp",
 
                    "type" : "input",
 
                    "sensor_num" : "0",
 
                    "functions" : [
 
                        "air_temp"
 
                    ]
 
                    
 
                },
 
                {
 
                    "name" : "humidity",
 
                    "type" : "input",
 
                    "sensor_num" : "0",
 
                    "functions" : [
 
                        "air_humidity"
 
                    ]
 
                    
 
                },
 
                {
 
                    "name" : "pressure",
 
                    "type" : "input",
 
                    "sensor_num" : "0",
 
                    "functions" : [
 
                        "air_pressure"
 
                    ]
 
                    
 
                },
 
                {
 
                    "name" : "light",
 
                    "type" : "input",
 
                    "sensor_num" : "0",
 
                    "functions" : [
 
                        "ambient_light"
 
                    ]
 
                    
 
                }
 
            ]
 
        },
 
        {
 
            "id" : "0x02",
 
            "name" : "relaydrive",
 
            "display" : "RelayDrive",
 
            "class" : "RelayDriveModule",
 
            "io" : [
 
            "sensors" : [
 
                {
 
                    "name" : "input_1",
 
                    "type" : "input",
 
                    "sensor_num" : "1",
 
                    "functions" : [
 
                        "digital_in",
 
@@ -86,20 +124,112 @@
 
                    "type" : "input",
 
                    "sensor_num" : "8",
 
                    "functions" : [
 
                        "digital_in",
 
                        "freq_in"
 
                    ]
 
                },
 
                {
 
                    "name" : "output_1",
 
                    "type" : "output",
 
                    "sensor_num" : "1",
 
                    "functions" : [
 
                        "digital_out",
 
                        "pwm_out"
 
                    ]
 
                },
 
                {
 
                    "name" : "output_2",
 
                    "type" : "output",
 
                    "sensor_num" : "2",
 
                    "functions" : [
 
                        "digital_out",
 
                        "pwm_out"
 
                    ]
 
                },
 
                {
 
                    "name" : "output_3",
 
                    "type" : "output",
 
                    "sensor_num" : "3",
 
                    "functions" : [
 
                        "digital_out",
 
                        "pwm_out"
 
                    ]
 
                },
 
                {
 
                    "name" : "output_4",
 
                    "type" : "output",
 
                    "sensor_num" : "4",
 
                    "functions" : [
 
                        "digital_out",
 
                        "pwm_out"
 
                    ]
 
                },
 
                {
 
                    "name" : "output_5",
 
                    "type" : "output",
 
                    "sensor_num" : "5",
 
                    "functions" : [
 
                        "digital_out",
 
                        "pwm_out"
 
                    ]
 
                },
 
                {
 
                    "name" : "output_6",
 
                    "type" : "output",
 
                    "sensor_num" : "6",
 
                    "functions" : [
 
                        "digital_out",
 
                        "pwm_out"
 
                    ]
 
                },
 
                {
 
                    "name" : "output_7",
 
                    "type" : "output",
 
                    "sensor_num" : "7",
 
                    "functions" : [
 
                        "digital_out",
 
                        "pwm_out"
 
                    ]
 
                },
 
                {
 
                    "name" : "output_8",
 
                    "type" : "output",
 
                    "sensor_num" : "8",
 
                    "functions" : [
 
                        "digital_out",
 
                        "pwm_out"
 
                    ]
 
                }
 
            ]
 
        },
 
        {
 
            "id" : "0x03",
 
            "name" : "watersense",
 
            "display" : "WaterSense",
 
            "class" : "WaterSenseModule"
 
            "class" : "WaterSenseModule",
 
            "sensors" : [
 
                {
 
                    "name" : "temp",
 
                    "type" : "input",
 
                    "sensor_num" : "0",
 
                    "functions" : [
 
                        "water_temp"
 
                    ]
 
                    
 
                },
 
                {
 
                    "name" : "level",
 
                    "type" : "input",
 
                    "sensor_num" : "0",
 
                    "functions" : [
 
                        "water_level"
 
                    ]
 
                    
 
                }
 
            ]
 
        },
 
        {
 
            "id" : "0x04",
 
            "name" : "protomodule",
 
            "display" : "ProtoModule",
 
            "class" : "ProtoModule"
hydrobot_sensor_sim.py
Show inline comments
 
deleted file
module.py
Show inline comments
 
@@ -26,14 +26,20 @@ class ModuleList():
 
                
 
                module_id = protocol.lookup_device_id_by_name(module_type)
 
                new_module = self.new_module(module_id, module_address, network_interface, module_name)
 
                network_interface.address_lookup[module_address] = new_module.uuid
 
                network_interface.uuid_lookup[new_module.uuid] = module_address
 
                
 
                new_module.config("data_rate", int(self.config.get(section, "data_rate")))
 
                new_module.config("led_brightness", int(self.config.get(section, "led_brightness")))
 
                new_module.config("data_rate", 0, int(self.config.get(section, "data_rate")))
 
                new_module.config("led_brightness", 0, int(self.config.get(section, "led_brightness")))
 
                
 
                for sensor in protocol.lookup_sensors_by_device_name(module_type):
 
                    for item in self.config.items(section):
 
                        if item[0] == sensor.get('name'):
 
                            new_module.config(sensor.get('type'), int(sensor.get('sensor_num')), protocol.lookup_data_key_by_name(self.config.get(section, sensor.get('name'))))
 
                        
 
        
 
    def add_module(self, module):
 
        assert isinstance(module, Module), 'invalid module'
 
        if module in self._modules:
 
            raise ValueError('Module %s already in database' % module)
 
        else:
 
@@ -60,20 +66,12 @@ class ModuleList():
 
        
 
        if name == None or self.lookup_module_by_name(name) != None:
 
            name = self.auto_assign_name(device_id)
 
        
 
        device_class = eval(protocol.lookup_device_class_by_id(device_id))
 
        module = device_class(address, interface, name, self.database)
 
        
 
        #if device_type == "airsense":
 
            #module = AirSenseModule(address, interface, name, self.database)
 
        #elif device_type == "relaydrive":
 
            #module = RelayDriveModule(address, interface, name, self.database)
 
        #else:
 
            #module = UnknownModule(address, interface, name, self.database)
 
        
 
        self.add_module(module)
 
        
 
        return module
 
    
 
    def auto_assign_name(self, device_id):
 
        keep_going = True
 
@@ -132,14 +130,14 @@ class AirSenseModule(Module):
 
        self.logger.debug("Receive message! From: " + self.name)
 
        self.database.log_message(self.name, message)
 
        
 
    def update(self):
 
        pass
 
        
 
    def config(self, data_key, value):
 
        message = HydroBotMessage(self.uuid, (0x80 | protocol.lookup_command_key_by_name("config")), protocol.lookup_data_key_by_name(data_key), 0, value)
 
    def config(self, data_key, sensor_num, value):
 
        message = HydroBotMessage(self.uuid, (0x80 | protocol.lookup_command_key_by_name("config")), protocol.lookup_data_key_by_name(data_key), sensor_num, value)
 
        self.interface.send_message(message)
 

	
 
class RelayDriveModule(Module):
 
    
 
    def __init__(self, address, interface, name, database):
 
        super(RelayDriveModule, self).__init__(address, interface, name, database)
 
@@ -152,14 +150,14 @@ class RelayDriveModule(Module):
 
        self.logger.debug("Receive message! From: " + self.name)
 
        self.database.log_message(self.name, message)
 
        
 
    def update(self):
 
        pass
 
        
 
    def config(self, data_key, value):
 
        message = HydroBotMessage(self.uuid, (0x80 | protocol.lookup_command_key_by_name("config")), protocol.lookup_data_key_by_name(data_key), 0, value)
 
    def config(self, data_key, sensor_num, value):
 
        message = HydroBotMessage(self.uuid, (0x80 | protocol.lookup_command_key_by_name("config")), protocol.lookup_data_key_by_name(data_key), sensor_num, value)
 
        self.interface.send_message(message)
 
    
 
    def set_output(self, output, value):
 
        message = HydroBotMessage(self.uuid, (0x80 | protocol.lookup_command_key_by_name("set_output")), protocol.lookup_data_key_by_name("digital_out"), int(output), value)
 
        self.send_message(message)
 

	
 
@@ -174,10 +172,10 @@ class UnknownModule(Module):
 
    def receive_message(self, message):
 
        self.logger.debug("Receive message! From: " + self.name)
 
        
 
    def update(self):
 
        pass
 
        
 
    def config(self, data_key, value):
 
        message = HydroBotMessage(self.uuid, (0x80 | protocol.lookup_command_key_by_name("config")), protocol.lookup_data_key_by_name(data_key), 0, value)
 
    def config(self, data_key, sensor_num, value):
 
        message = HydroBotMessage(self.uuid, (0x80 | protocol.lookup_command_key_by_name("config")), protocol.lookup_data_key_by_name(data_key), sensor_num, value)
 
        self.interface.send_message(message)
 
        
protocol.py
Show inline comments
 
@@ -68,6 +68,12 @@ def lookup_command_key_by_name(name):
 
def lookup_command_display_by_key(key):
 
    commands = _protocol_def['command_keys']
 
    for command in commands:
 
        if command.get('key') == "{0:#0{1}x}".format(key, 6):
 
            return command.get('display')
 
            
 
def lookup_sensors_by_device_name(name):
 
    devices = _protocol_def['devices']
 
    for device in devices:
 
        if device.get('name') == name:
 
            return device.get('sensors')
 
    
0 comments (0 inline, 0 general)