mirror of
https://github.com/LukeSpad/BeoGateway.git
synced 2024-12-23 21:51:51 +00:00
Add files via upload
This commit is contained in:
parent
cc056bca34
commit
82af7d348c
1 changed files with 33 additions and 27 deletions
60
main.py
60
main.py
|
@ -13,27 +13,27 @@ import Resources.MLtn_CLIENT as MLtn
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
||||||
#Define callback function for JSON data dump from B&O Gateway
|
# Define callback function for JSON data dump from B&O Gateway
|
||||||
def cb(name, header, payload, message):
|
def cb(name, header, payload, message):
|
||||||
#Pretty formatting - convert to JSON format then remove braces
|
# Pretty formatting - convert to JSON format then remove braces
|
||||||
message = json.dumps(message, indent=4)
|
message = json.dumps(message, indent=4)
|
||||||
for r in (('"', ''), (',', ''), ('{', ''), ('}', '')):
|
for r in (('"', ''), (',', ''), ('{', ''), ('}', '')):
|
||||||
message = str(message).replace(*r)
|
message = str(message).replace(*r)
|
||||||
|
|
||||||
#Print message data
|
# Print message data
|
||||||
if len(payload) + 9 <73:
|
if len(payload) + 9 < 73:
|
||||||
logging.info("\n\t----------------------------------------------------------------------------" +
|
logging.info("\n\t----------------------------------------------------------------------------" +
|
||||||
"\n\t" + name + ": <--Data-received!-<< " +
|
"\n\t" + name + ": <--Data-received!-<< " +
|
||||||
datetime.now().strftime("on %D at %H:%M:%S") +
|
datetime.now().strftime("on %d/%m/%y at %H:%M:%S") +
|
||||||
"\n\t----------------------------------------------------------------------------" +
|
"\n\t----------------------------------------------------------------------------" +
|
||||||
"\n\tHeader: " + header +
|
"\n\tHeader: " + header +
|
||||||
"\n\tPayload: " + payload +
|
"\n\tPayload: " + payload +
|
||||||
"\n\t============================================================================" +
|
"\n\t============================================================================" +
|
||||||
message)
|
message)
|
||||||
elif len(payload) + 9 > 73 and len(payload) + 9 < 132:
|
elif 73 < len(payload) + 9 < 132:
|
||||||
logging.info("\n\t----------------------------------------------------------------------------" +
|
logging.info("\n\t----------------------------------------------------------------------------" +
|
||||||
"\n\t" + name + ": <--Data-received!-<< " +
|
"\n\t" + name + ": <--Data-received!-<< " +
|
||||||
datetime.now().strftime("on %D at %H:%M:%S") +
|
datetime.now().strftime("on %d/%m/%y at %H:%M:%S") +
|
||||||
"\n\t----------------------------------------------------------------------------" +
|
"\n\t----------------------------------------------------------------------------" +
|
||||||
"\n\tHeader: " + header +
|
"\n\tHeader: " + header +
|
||||||
"\n\tPayload: " + payload[:66] + "\n\t\t" + payload[66:132] +
|
"\n\tPayload: " + payload[:66] + "\n\t\t" + payload[66:132] +
|
||||||
|
@ -42,7 +42,7 @@ if __name__ == '__main__':
|
||||||
else:
|
else:
|
||||||
logging.info("\n\t----------------------------------------------------------------------------" +
|
logging.info("\n\t----------------------------------------------------------------------------" +
|
||||||
"\n\t" + name + ": <--Data-received!-<< " +
|
"\n\t" + name + ": <--Data-received!-<< " +
|
||||||
datetime.now().strftime("on %D at %H:%M:%S") +
|
datetime.now().strftime("on %d/%m/%y at %H:%M:%S") +
|
||||||
"\n\t----------------------------------------------------------------------------" +
|
"\n\t----------------------------------------------------------------------------" +
|
||||||
"\n\tHeader: " + header +
|
"\n\tHeader: " + header +
|
||||||
"\n\tPayload: " + payload[:66] + "\n\t\t" + payload[66:132] + "\n\t\t" + payload[132:] +
|
"\n\tPayload: " + payload[:66] + "\n\t\t" + payload[66:132] + "\n\t\t" + payload[132:] +
|
||||||
|
@ -52,9 +52,9 @@ if __name__ == '__main__':
|
||||||
def check_connection(self):
|
def check_connection(self):
|
||||||
last = round(time.time() - self.last_received_at, 2)
|
last = round(time.time() - self.last_received_at, 2)
|
||||||
logging.debug(self.name + " Protocol Client last received " + str(last) + " seconds ago")
|
logging.debug(self.name + " Protocol Client last received " + str(last) + " seconds ago")
|
||||||
#Recconect if socket has disconnected, or if no response received to last ping
|
# Recconect if socket has disconnected, or if no response received to last ping
|
||||||
if not self.is_connected or last > 60:
|
if not self.is_connected or last > 60:
|
||||||
logging.info("\t" + self.name + ": Reconnecting\n")
|
logging.info("\t" + self.name + ": Reconnecting!")
|
||||||
self.handle_close()
|
self.handle_close()
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
self.client_connect()
|
self.client_connect()
|
||||||
|
@ -62,46 +62,52 @@ if __name__ == '__main__':
|
||||||
# ########################################################################################
|
# ########################################################################################
|
||||||
# Main program loop
|
# Main program loop
|
||||||
host = 'blgw.local'
|
host = 'blgw.local'
|
||||||
port = [9000,9100,23]
|
port = [9000, 9100, 23]
|
||||||
user = 'admin'
|
user = 'admin'
|
||||||
pwd = 's0198247'
|
pwd = 's0198247'
|
||||||
|
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
config = MLCONFIG.MLConfig(host, user, pwd)
|
config = MLCONFIG.MLConfig(host, user, pwd)
|
||||||
|
|
||||||
#Create MLGW Protocol and ML_CLI Protocol clients (basic command listening)
|
# Create MLGW Protocol and ML_CLI Protocol clients (basic command listening)
|
||||||
logging.info('Creating MLGW Protocol Client...')
|
logging.info('Creating MLGW Protocol Client...')
|
||||||
mlgw = MLGW.MLGWClient(host, port[0], user, pwd, 'MLGW protocol',cb)
|
mlgw = MLGW.MLGWClient(host, port[0], user, pwd, 'MLGW protocol', cb)
|
||||||
asyncore.loop(count=10, timeout=0.2)
|
asyncore.loop(count=10, timeout=0.2)
|
||||||
|
|
||||||
logging.info('Creating ML Command Line Protocol Client...')
|
logging.info('Creating ML Command Line Protocol Client...')
|
||||||
mlcli = MLCLI.MLCLIClient(host, port[2], user, pwd, 'ML command line interface',cb)
|
mlcli = MLCLI.MLCLIClient(host, port[2], user, pwd, 'ML command line interface', cb)
|
||||||
#Log onto the MLCLI client and ascertain the gateway model
|
# Log onto the MLCLI client and ascertain the gateway model
|
||||||
asyncore.loop(count=10, timeout=0.2)
|
asyncore.loop(count=10, timeout=0.2)
|
||||||
|
|
||||||
#Now MLGW and MasterLink Command Line Client are set up, retrieve MasterLink IDs of products
|
# Now MLGW and MasterLink Command Line Client are set up, retrieve MasterLink IDs of products
|
||||||
config.get_masterlink_id(mlgw, mlcli)
|
config.get_masterlink_id(mlgw, mlcli)
|
||||||
|
|
||||||
# If the gateway is a BLGW use the BLHIP protocol, else use the legacy MLHIP protocol
|
# If the gateway is a BLGW use the BLHIP protocol, else use the legacy MLHIP protocol
|
||||||
if mlcli.isBLGW:
|
if mlcli.isBLGW:
|
||||||
logging.info('Creating BLGW Home Integration Protocol Client...')
|
logging.info('Creating BLGW Home Integration Protocol Client...')
|
||||||
blgw = BLHIP.BLHIPClient(host, port[1], user, pwd, 'BLGW Home Integration Protocol',cb)
|
blgw = BLHIP.BLHIPClient(host, port[1], user, pwd, 'BLGW Home Integration Protocol', cb)
|
||||||
|
mltn = None
|
||||||
else:
|
else:
|
||||||
logging.info('Creating MLGW Home Integration Protocol Client...')
|
logging.info('Creating MLGW Home Integration Protocol Client...')
|
||||||
mltn = MLtn.MLtnClient(host, port[2], user, pwd, 'ML telnet client',cb)
|
mltn = MLtn.MLtnClient(host, port[2], user, pwd, 'ML telnet client', cb)
|
||||||
|
blgw = None
|
||||||
|
|
||||||
#Main program loop
|
# Main program loop
|
||||||
while True:
|
while True:
|
||||||
#Ping all connections every 10 minutes to prompt messages on the network
|
# Ping all connections every 10 minutes to prompt messages on the network
|
||||||
asyncore.loop(count=595, timeout=1)
|
asyncore.loop(count=595, timeout=1)
|
||||||
if mlgw.is_connected: mlgw.ping()
|
if mlgw.is_connected:
|
||||||
if mlcli.is_connected: mlcli.ping()
|
mlgw.ping()
|
||||||
|
if mlcli.is_connected:
|
||||||
|
mlcli.ping()
|
||||||
if mlcli.isBLGW:
|
if mlcli.isBLGW:
|
||||||
if blgw.is_connected: blgw.ping()
|
if blgw.is_connected:
|
||||||
|
blgw.ping()
|
||||||
else:
|
else:
|
||||||
if mltn.is_connected: mltn.ping()
|
if mltn.is_connected:
|
||||||
|
mltn.ping()
|
||||||
|
|
||||||
#Check the connections approximately every 10 minutes to keep sockets open
|
# Check the connections approximately every 10 minutes to keep sockets open
|
||||||
asyncore.loop(count=5, timeout=1)
|
asyncore.loop(count=5, timeout=1)
|
||||||
logging.debug("LOOP: %d enqueued, waiting to finish!" % len(asyncore.socket_map))
|
logging.debug("LOOP: %d enqueued, waiting to finish!" % len(asyncore.socket_map))
|
||||||
check_connection(mlgw)
|
check_connection(mlgw)
|
||||||
|
|
Loading…
Reference in a new issue