本文整理汇总了Python中MasterSql.update_room_device_option_write_long方法的典型用法代码示例。如果您正苦于以下问题:Python MasterSql.update_room_device_option_write_long方法的具体用法?Python MasterSql.update_room_device_option_write_long怎么用?Python MasterSql.update_room_device_option_write_long使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MasterSql
的用法示例。
在下文中一共展示了MasterSql.update_room_device_option_write_long方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: import MasterSql [as 别名]
# 或者: from MasterSql import update_room_device_option_write_long [as 别名]
class KNXManager:
"""
KNX management class
"""
def __init__(self, slave_keys):
self.knx_function = {
OPTION_ON_OFF : self.send_knx_write_short_to_slave,
OPTION_VAR : self.send_knx_write_long_to_slave,
OPTION_UP_DOWN : self.send_knx_write_short_to_slave,
OPTION_OPEN_CLOSE : self.send_knx_write_short_to_slave,
OPTION_STOP_UP_DOWN : self.send_knx_write_short_to_slave,
OPTION_TEMPERATURE_W: self.send_knx_write_temp
};
self.sql = MasterSql();
self._parser = DaemonConfigParser('/etc/greenleaf/master.conf');
self.aes_slave_keys = slave_keys;
def update_room_device_option(self, daemon_id, json_obj):
"""
Update room_device_option table in database to set new values of the device described by 'json_obj'
"""
if int(json_obj['type']) == KNX_RESPONSE:
self.sql.update_room_device_option_resp(json_obj, daemon_id);
elif int(json_obj['type']) == KNX_WRITE_SHORT:
self.sql.update_room_device_option_write_short(json_obj, daemon_id);
elif int(json_obj['type']) == KNX_WRITE_LONG:
self.sql.update_room_device_option_write_long(json_obj, daemon_id);
def protocol_knx(self, json_obj, dev, hostname):
"""
KNX protocol data treatment function
"""
new_obj = {
"data": {
"addr": str(dev['addr_dst']),
"value": str(json_obj['data']['value'])
}
};
self.knx_function[int(json_obj['data']['option_id'])](hostname, new_obj);
def send_json_obj_to_slave(self, json_str, sock, hostname, aes_key, close_flag = True):
"""
Send 'json_obj' to 'hostname' via 'sock'
"""
hostname_key = '';
if '.' in hostname:
hostname_key = hostname.split('.')[0];
else:
hostname_key = hostname;
AES.key_size = 32;
aes_IV = AESManager.get_IV();
encode_obj = AES.new(aes_key, AES.MODE_CBC, aes_IV);
data2 = encode_obj.encrypt(json_str + (176 - len(json_str)) * ' ');
sock.send(bytes(aes_IV, 'utf-8') + data2);
if close_flag == True:
sock.close();
def send_knx_write_temp(self, hostname, json_obj):
"""
Converts absolute value of temperature (Celsius) in 2 hexadecimal values for
sending to KNX device
"""
port = self._parser.getValueFromSection('connect', 'port');
if not port:
sys.exit(4);
sock = socket.create_connection((hostname, port));
val_str = json_obj['data']['value'];
if '.' in val_str:
val_str = val_str.split('.')[0];
value = utils.convert_temperature_reverse(int(val_str));
json_str = json.JSONEncoder().encode(
{
"packet_type": "knx_write_temp",
"addr_to_send": json_obj['data']['addr'],
"value": value[0] + ' ' + value[1]
}
);
self.send_json_obj_to_slave(json_str, sock, hostname, self.aes_slave_keys[hostname]);
def send_knx_write_long_to_slave(self, hostname, json_obj):
"""
Constructs long write request and sends it to 'hostname'
"""
port = self._parser.getValueFromSection('connect', 'port');
if not port:
sys.exit(4);
sock = socket.create_connection((hostname, port));
json_str = json.JSONEncoder().encode(
{
"packet_type": "knx_write_long",
"addr_to_send": json_obj['data']['addr'],
"value": hex(int(json_obj['data']['value']))
}
);
self.send_json_obj_to_slave(json_str, sock, hostname, self.aes_slave_keys[hostname]);
def send_knx_write_short_to_slave(self, hostname, json_obj):
"""
Constructs short write request and sends it to 'hostname'
"""
#.........这里部分代码省略.........
示例2: __init__
# 需要导入模块: import MasterSql [as 别名]
# 或者: from MasterSql import update_room_device_option_write_long [as 别名]
class KNXManager:
## The constructor.
#
# @param slave_keys Array containing the AES keys of all the slaves.
# @return None
def __init__(self, slave_keys):
## Logger object for formatting and printing logs
self.logger = Logger(DEBUG_MODE, LOG_FILE);
## SQL object for managing database
self.sql = MasterSql();
self._parser = DaemonConfigParser('/etc/domoleaf/master.conf');
## Object containing AES keys for encrypted communications
self.aes_slave_keys = slave_keys;
## Updates room_device_option table in database to set new values of the device described by json_obj.
#
# @param daemon_id The ID of a slave daemon.
# @param json_obj JSON object containing the values to update.
# @param db The database handler.
#
# @return The result of the query.
def update_room_device_option(self, daemon_id, json_obj, db):
if int(json_obj['type']) == KNX_RESPONSE:
return self.sql.update_room_device_option_resp(json_obj, daemon_id, db);
elif int(json_obj['type']) == KNX_WRITE_SHORT:
return self.sql.update_room_device_option_write_short(json_obj, daemon_id, db);
elif int(json_obj['type']) == KNX_WRITE_LONG:
return self.sql.update_room_device_option_write_long(json_obj, daemon_id, db);
## Sends a JSON object to a slave daemon.
#
# @param json_str The data to send.
# @param sock The socket used to send the data.
# @param hostname The hostname of the slave daemon.
# @param aes_key The AES key of the slave daemon to encrypt data.
# @return None
def send_json_obj_to_slave(self, json_str, sock, hostname, aes_key):
hostname_key = '';
if '.' in hostname:
hostname_key = hostname.split('.')[0];
else:
hostname_key = hostname;
AES.key_size = 32;
aes_IV = AESManager.get_IV();
encode_obj = AES.new(aes_key, AES.MODE_CBC, aes_IV);
spaces = 16 - len(json_str) % 16;
data2 = encode_obj.encrypt(json_str + (spaces * ' '));
sock.send(bytes(aes_IV, 'utf-8') + data2);
## Changes the speed value of a fan.
#
# @param json_obj JSON object containing the values to write.
# @param dev Object containing informations about the device.
# @param hostname The hostname of the slave to who send the packet.
# @return None
def send_knx_write_speed_fan(self, json_obj, dev, hostname):
port = self._parser.getValueFromSection('connect', 'port');
sock = socket.create_connection((hostname, port));
if not port:
sys.exit(4);
if json_obj['data']['value'] == '1':
query = ''.join(['SELECT option_id, addr, dpt_id FROM room_device_option WHERE room_device_id=',
str(dev['room_device_id']),
' AND option_id IN(400, 401, 402, 403, 404, 405, 406) AND status=1']);
res = self.sql.mysql_handler_personnal_query(query);
for line in res:
if str(line[2]) == "51" and str(line[0]) == str(json_obj['data']['option_id']):
val = str(line[0]).split('40')[1];
json_str = json.JSONEncoder().encode(
{
"packet_type": "knx_write_long",
"addr_to_send": line[1],
"value": val
}
);
self.send_json_obj_to_slave(json_str, sock, hostname, self.aes_slave_keys[hostname]);
return;
elif str(line[2]) == "2" and str(line[0]) != str(json_obj['data']['option_id']):
json_str = json.JSONEncoder().encode(
{
"packet_type": "knx_write_short",
"addr_to_send": line[1],
"value": "0"
}
);
self.send_json_obj_to_slave(json_str, sock, hostname, self.aes_slave_keys[hostname]);
json_str = json.JSONEncoder().encode(
{
"packet_type": "knx_write_short",
"addr_to_send": str(dev['addr_dst']),
"value": json_obj['data']['value']
}
);
self.send_json_obj_to_slave(json_str, sock, hostname, self.aes_slave_keys[hostname]);
sock.close();
## Converts absolute value of temperature (Celsius) in 2 hexadecimal values for sending to KNX device.
#
# @param json_obj JSON object containing the values to write.
#.........这里部分代码省略.........
示例3: __init__
# 需要导入模块: import MasterSql [as 别名]
# 或者: from MasterSql import update_room_device_option_write_long [as 别名]
class KNXManager:
"""
KNX management class
"""
def __init__(self, slave_keys):
self.knx_function = {
OPTION_ON_OFF : self.send_knx_write_short_to_slave,
OPTION_VAR : self.send_knx_write_long_to_slave,
OPTION_UP_DOWN : self.send_knx_write_short_to_slave,
OPTION_OPEN_CLOSE : self.send_knx_write_short_to_slave,
OPTION_STOP_UP_DOWN : self.send_knx_write_short_to_slave,
OPTION_SPEED_FAN_0 : self.send_knx_write_speed_fan,
OPTION_SPEED_FAN_1 : self.send_knx_write_speed_fan,
OPTION_SPEED_FAN_2 : self.send_knx_write_speed_fan,
OPTION_SPEED_FAN_3 : self.send_knx_write_speed_fan,
OPTION_SPEED_FAN_4 : self.send_knx_write_speed_fan,
OPTION_SPEED_FAN_5 : self.send_knx_write_speed_fan,
OPTION_SPEED_FAN_6 : self.send_knx_write_speed_fan,
OPTION_TEMPERATURE_W: self.send_knx_write_temp,
OPTION_COLOR_R : self.send_knx_write_long_to_slave,
OPTION_COLOR_G : self.send_knx_write_long_to_slave,
OPTION_COLOR_B : self.send_knx_write_long_to_slave,
OPTION_COLOR_W : self.send_knx_write_long_to_slave
};
self.logger = Logger(True, LOG_FILE);
self.sql = MasterSql();
self._parser = DaemonConfigParser('/etc/domoleaf/master.conf');
self.aes_slave_keys = slave_keys;
def update_room_device_option(self, daemon_id, json_obj):
"""
Update room_device_option table in database to set new values of the device described by 'json_obj'
"""
if int(json_obj['type']) == KNX_RESPONSE:
self.sql.update_room_device_option_resp(json_obj, daemon_id);
elif int(json_obj['type']) == KNX_WRITE_SHORT:
self.sql.update_room_device_option_write_short(json_obj, daemon_id);
elif int(json_obj['type']) == KNX_WRITE_LONG:
self.sql.update_room_device_option_write_long(json_obj, daemon_id);
def protocol_knx(self, json_obj, dev, hostname):
"""
KNX protocol data treatment function
"""
new_obj = {
"data": {
"addr": str(dev['addr_dst']),
"value": str(json_obj['data']['value']),
"option_id": str(json_obj['data']['option_id']),
"room_device_id": str(dev['room_device_id']),
}
};
self.knx_function[int(json_obj['data']['option_id'])](hostname, new_obj);
def send_json_obj_to_slave(self, json_str, sock, hostname, aes_key, close_flag = True):
"""
Send 'json_obj' to 'hostname' via 'sock'
"""
hostname_key = '';
if '.' in hostname:
hostname_key = hostname.split('.')[0];
else:
hostname_key = hostname;
AES.key_size = 32;
aes_IV = AESManager.get_IV();
encode_obj = AES.new(aes_key, AES.MODE_CBC, aes_IV);
spaces = 16 - len(json_str) % 16;
data2 = encode_obj.encrypt(json_str + (spaces * ' '));
sock.send(bytes(aes_IV, 'utf-8') + data2);
if close_flag == True:
sock.close();
def send_knx_write_speed_fan(self, hostname, json_obj):
"""
Ask to close all the speed fan before open another
"""
port = self._parser.getValueFromSection('connect', 'port');
if not port:
sys.exit(4);
if json_obj['data']['value'] == '1':
query = 'SELECT option_id, addr, dpt_id ';
query += 'FROM room_device_option ';
query += 'WHERE room_device_id=' + str(json_obj['data']['room_device_id']) + ' AND ';
query += 'option_id IN(400, 401, 402, 403, 404, 405, 406) AND status=1';
res = self.sql.mysql_handler_personnal_query(query);
for line in res:
if str(line[2]) == "51" and str(line[0]) == str(json_obj['data']['option_id']):
sock = socket.create_connection((hostname, port));
val = str(line[0]).split('40')[1];
json_str = json.JSONEncoder().encode(
{
"packet_type": "knx_write_long",
"addr_to_send": line[1],
"value": val
}
);
self.send_json_obj_to_slave(json_str, sock, hostname, self.aes_slave_keys[hostname]);
sock.close();
return;
if str(line[2]) == "2" and str(line[0]) != str(json_obj['data']['option_id']):
#.........这里部分代码省略.........
示例4: __init__
# 需要导入模块: import MasterSql [as 别名]
# 或者: from MasterSql import update_room_device_option_write_long [as 别名]
class KNXManager:
"""
KNX management class
"""
def __init__(self, slave_keys):
self.logger = Logger(True, LOG_FILE);
self.sql = MasterSql();
self._parser = DaemonConfigParser('/etc/domoleaf/master.conf');
self.aes_slave_keys = slave_keys;
def update_room_device_option(self, daemon_id, json_obj):
"""
Update room_device_option table in database to set new values of the device described by 'json_obj'
"""
if int(json_obj['type']) == KNX_RESPONSE:
return self.sql.update_room_device_option_resp(json_obj, daemon_id);
elif int(json_obj['type']) == KNX_WRITE_SHORT:
return self.sql.update_room_device_option_write_short(json_obj, daemon_id);
elif int(json_obj['type']) == KNX_WRITE_LONG:
return self.sql.update_room_device_option_write_long(json_obj, daemon_id);
def send_json_obj_to_slave(self, json_str, sock, hostname, aes_key, close_flag = True):
"""
Send 'json_obj' to 'hostname' via 'sock'
"""
hostname_key = '';
if '.' in hostname:
hostname_key = hostname.split('.')[0];
else:
hostname_key = hostname;
AES.key_size = 32;
aes_IV = AESManager.get_IV();
encode_obj = AES.new(aes_key, AES.MODE_CBC, aes_IV);
spaces = 16 - len(json_str) % 16;
data2 = encode_obj.encrypt(json_str + (spaces * ' '));
sock.send(bytes(aes_IV, 'utf-8') + data2);
if close_flag == True:
sock.close();
def send_knx_write_speed_fan(self, json_obj, dev, hostname):
"""
Ask to close all the speed fan before open another
"""
port = self._parser.getValueFromSection('connect', 'port');
if not port:
sys.exit(4);
if json_obj['data']['value'] == '1':
query = 'SELECT option_id, addr, dpt_id ';
query += 'FROM room_device_option ';
query += 'WHERE room_device_id=' + str(dev['room_device_id']) + ' AND ';
query += 'option_id IN(400, 401, 402, 403, 404, 405, 406) AND status=1';
res = self.sql.mysql_handler_personnal_query(query);
for line in res:
if str(line[2]) == "51" and str(line[0]) == str(json_obj['data']['option_id']):
sock = socket.create_connection((hostname, port));
val = str(line[0]).split('40')[1];
json_str = json.JSONEncoder().encode(
{
"packet_type": "knx_write_long",
"addr_to_send": line[1],
"value": val
}
);
self.send_json_obj_to_slave(json_str, sock, hostname, self.aes_slave_keys[hostname]);
sock.close();
return;
if str(line[2]) == "2" and str(line[0]) != str(json_obj['data']['option_id']):
sock = socket.create_connection((hostname, port));
json_str = json.JSONEncoder().encode(
{
"packet_type": "knx_write_short",
"addr_to_send": line[1],
"value": "0"
}
);
self.send_json_obj_to_slave(json_str, sock, hostname, self.aes_slave_keys[hostname]);
sock.close();
sock = socket.create_connection((hostname, port));
json_str = json.JSONEncoder().encode(
{
"packet_type": "knx_write_short",
"addr_to_send": str(dev['addr_dst']),
"value": json_obj['data']['value']
}
);
self.send_json_obj_to_slave(json_str, sock, hostname, self.aes_slave_keys[hostname]);
def send_knx_write_temp(self, json_obj, dev, hostname):
"""
Converts absolute value of temperature (Celsius) in 2 hexadecimal values for
sending to KNX device
"""
port = self._parser.getValueFromSection('connect', 'port');
if not port:
sys.exit(4);
sock = socket.create_connection((hostname, port));
val_str = json_obj['data']['value'];
if ',' in val_str:
val_str = val_str.replace(',', '.')
value = utils.convert_temperature_reverse(float(val_str));
#.........这里部分代码省略.........