Changeset - 590eff6f7ddc
[Not reviewed]
default
0 1 0
matthewreed - 9 years ago 2016-07-23 20:32:37

Added WaterSense data logging
1 file changed with 22 insertions and 0 deletions:
0 comments (0 inline, 0 general)
hydrobot.py
Show inline comments
 
@@ -38,96 +38,118 @@ class Database:
 
                {
 
                    "measurement": self.name + "_air_temp",
 
                    "fields": {
 
                        "value": (float)(message.Temperature.value)
 
                    }
 
                },
 
                {
 
                    "measurement": self.name + "_air_humidity",
 
                    "fields": {
 
                        "value": (float)(message.Humidity.value)
 
                    }
 
                },
 
                {
 
                    "measurement": self.name + "_air_pressure",
 
                    "fields": {
 
                        "value": (float)(message.Pressure.value)
 
                    }
 
                }
 
            ]
 
            self.client.write_points(json_body)
 
        if message == msgdb.RelayDriveIn:
 
            json_body = [
 
                {
 
                    "measurement": self.name + "_input_1",
 
                    "fields": {
 
                        "value": (float)(message.Input1.value)
 
                    }
 
                },
 
                {
 
                    "measurement": self.name + "_input_2",
 
                    "fields": {
 
                        "value": (float)(message.Input2.value)
 
                    }
 
                },
 
                {
 
                    "measurement": self.name + "_input_3",
 
                    "fields": {
 
                        "value": (float)(message.Input3.value)
 
                    }
 
                },
 
                {
 
                    "measurement": self.name + "_input_4",
 
                    "fields": {
 
                        "value": (float)(message.Input4.value)
 
                    }
 
                }
 
            ]
 
            self.client.write_points(json_body)
 
        if message == msgdb.WaterSense:
 
            json_body = [
 
                {
 
                    "measurement": self.name + "_water_level",
 
                    "fields": {
 
                        "value": (float)(message.PercentFull.value)
 
                    }
 
                },
 
                {
 
                    "measurement": self.name + "_water_temp",
 
                    "fields": {
 
                        "value": (float)(message.Temperature.value)
 
                    }
 
                },
 
                {
 
                    "measurement": self.name + "_water_raw_debug",
 
                    "fields": {
 
                        "value": (float)(message.RawDebug.value)
 
                    }
 
                }
 
            ]
 
            self.client.write_points(json_body)
 

	
 

	
 
class CanBus:
 
    
 
    def __init__(self, database):
 
        
 
        self.database = database
 

	
 
        self.dev = socketcan.SocketCanDev("can0")
 
        
 
        parser = jsondb.JsonDbParser()
 
        self.msgdb = parser.parse('hydrobot_can.json')
 
        
 
        self.temp_msg = self.msgdb.AirSense
 
        self.relay_msg = self.msgdb.RelayDriveIn
 
        self.relay_send_msg = self.msgdb.RelayDriveOut
 
        
 
    def start(self):
 
        self.dev.start()
 
        
 
    def start_receive(self):
 
        _thread.start_new_thread(self.process_can, ())
 

	
 
    def process_can(self):
 
        while True:
 
            frame = self.dev.recv()
 
            message = self.msgdb.decode(frame)
 
            if message:
 
                if DEBUG_CAN:
 
                    print("Received CAN message! ID: " + hex(message.id))
 
                for s in message._signals.values():
 
                    if DEBUG_CAN_DETAIL:
 
                        print(s)
 
                        print(s.value)
 
                    self.database.log_data(self.msgdb, message)
 
                
 
    def send_can(self):
 
        self.relay_send_msg.Nothing.value = 0
 
        if self.relay_send_msg.Output1.value == 0:
 
            self.relay_send_msg.Output1.value = 1
 
        else:
 
            self.relay_send_msg.Output1.value = 0
 
        self.relay_send_msg.Output2.value = 1
 
        self.relay_send_msg.Output3.value = 1
 
        self.relay_send_msg.Output4.value = 1
 
        if DEBUG_CAN:
 
            print("Send CAN message! ID: " + hex(self.relay_send_msg.id))
 
        if DEBUG_CAN_DETAIL:
0 comments (0 inline, 0 general)