Beispiel #1
0
 def __init__(self, query_name):
     db = dbfnModbus.DbModbus()
     try:
         self.query = db.get_mb_query(query=query_name)
     except KeyError:
         logging.error("No data exist for query:" + query_name)
         raise KeyError
     self.reg = [0] * self.query.length
     self.var = dict()
     self.varNull = dict()
     self.devices = db.get_mb_devices(query=self.query.query)
     print(self.devices)
     self.varDictName = dict()
     self.regDictAddr = dict()
     self.dictVarAddr = dict()
     address = 0
     # print(self.query, self.devices)
     for d in self.devices:
         print(d)
         # get fields for block
         # print(" for:", d.name, "Size before  = ", len(self.var))
         fields = db.get_mb_fields(section=d.section)
         for f in fields:
             var_name = d.device + "_" + f.field
             var = ModbusVariable.MbVariable(var_name, f.fmt, f.encoding, f.scale, f.offset)
             self.var[var_name] = 0
             self.varNull[var_name] = 0
             self.varDictName[var_name] = var
             self.regDictAddr[address] = var
             self.dictVarAddr[var_name] = address
             address += var.size
Beispiel #2
0
def export():
    db = dbfnModbus.DbModbus()
    q_items = "SELECT name from sqlite_master where type = ?"
    q_sql = "SELECT sql from sqlite_master where name = ?"
    tables = db.get_list(q_items, ('table', ))
    print(tables)

    for t in tables:
        code = db.get_list(q_sql, (t, ))
        c_list = code[0].split(",")
        fo = open("tables/" + t + ".sql", "w")
        fo.write(",\n".join(c_list))
        fo.close()

    db.close()
    conn = sqlite3.connect("../edge.sqlite3")
    for t in tables:
        sql = '''SELECT * from {table}'''
        cur = conn.cursor()
        cur.execute(sql.format(table=t))
        head = list(map(lambda x: x[0], cur.description))
        rows = cur.fetchall()
        fo = open("data/" + t + ".csv", "w")
        fo.write(",".join(head) + "\n")
        for r in rows:
            fo.write(",".join([str(x) for x in r]) + "\n")
        fo.close()
    conn.close()
Beispiel #3
0
    def setupModbusUpdater(self):
        db = dbfnModbus.DbModbus()
        query_list = db.get_mb_query_for_slave_unit(self.config["slave"])
        db.close()
        mb_blocks = dict()
        # print("Query list", query_list)
        for q in query_list:
            mb_blocks[q] = ModbusBuffer.ModbusQueryBlock(q)

        db = dbfnModbus.DbModbus("../test.sqlite3")
        q_data = "select id, key, value, value_max, step, pattern from test_data where site = ? and test = ?"
        # print(q_data)
        test_start = db.get_recs(q_data, (self.config.slave, self.test_no))
        # print(test_start)
        for t in test_start:
            self.tests[t[0]] = TestGen(t[1], t[2], t[3], t[4], t[5])
            # print(self.tests[t[0]].var_name)
        self.test_list = list(self.tests.keys())
Beispiel #4
0
 def __init__(self):
     self.slave = os.getenv("SLAVE")
     db = dbfnModbus.DbModbus()
     self.config = db.get_slave_info(self.slave)
     self.config["modbus_address"] = os.getenv("MODBUS_ADDRESS")
     self.config["modbus_port"] = os.getenv("MODBUS_PORT")
     mb_q_int = os.getenv("QUERY_INTERVAL")
     if mb_q_int is not None:
         self.config["query_interval"] = mb_q_int
     logging.info("Started MODBUS process for" + self.slave)
     db.close()
Beispiel #5
0
 def __init__(self, config):
     self.config = config
     print(self.config)
     db = dbfnModbus.DbModbus()
     self.MbBlocks = dict()
     self.query_to_fetch = 0
     self.query_list = db.get_mb_query_for_slave_unit(self.config["slave"])
     db.close()
     print(self.query_list)
     for q in self.query_list:
         self.MbBlocks[q] = ModbusBuffer.ModbusQueryBlock(q)
     self.start_timer = 0
     self.client = None
Beispiel #6
0
 def __init__(self, slave, test_no, sleep_time=1):
     self.slave = slave
     self.test_no = test_no
     self.tests = dict()
     self.test_list = []
     self.cur_test = 0
     self.sleep_time = sleep_time
     db = dbfnModbus.DbModbus()
     self.config = db.get_slave_info(self.slave)
     logging.info("Started MODBUS process for" + slave)
     db.close()
     # load parameters for the variables
     self.mm = ModbusMaster.ModbusMaster(self.config)
     self.mm.connect_slave()
Beispiel #7
0
# FORMAT = ('%(asctime)-15s %(threadName)-15s'
#          ' %(levelname)-8s %(module)-15s:%(lineno)-8s %(message)s')

if __name__ == "__main__":
    slave = os.getenv("SLAVE")
    FORMAT = (
        '%(asctime)-15s %(threadName)-15s %(levelname)-8s %(module)-15s:%(lineno)-8s %(message)s'
    )
    logging.basicConfig(filename='../var/log/ems_slave_' + slave + ".log",
                        filemode='a',
                        format=FORMAT)
    # logging.basicConfig(format=FORMAT)
    LOG = logging.getLogger()
    LOG.setLevel(logging.INFO)

    db = dbfnModbus.DbModbus()
    config = db.get_slave_info(slave)
    db.close()
    config["modbus_address"] = "0.0.0.0"
    config["modbus_port"] = int(os.getenv("MODBUS_PORT"))
    print(config)
    p = ModbusSlave.ModbusSlave(config)
    p.start()

    while True:
        time.sleep(1)
    # main(args.site, args.test)
    # p.stop()
    # p.join()
    # p.terminate()
    # p.join()