Add get_system call.

This commit is contained in:
Andrius Štikonas 2020-11-20 21:41:06 +00:00
parent 0fb1805f80
commit 688995ba82
2 changed files with 36 additions and 26 deletions

View File

@ -13,37 +13,32 @@ class NeoHub:
async def connect(self, host='Neo-Hub', port='4242'): async def connect(self, host='Neo-Hub', port='4242'):
self._reader, self._writer = await asyncio.open_connection(host, port) self._host = host
self._firmware_version = await self._firmware() self._port = port
async def _send(self, message, expect_return = True): async def _send(self, message):
reader, writer = await asyncio.open_connection(self._host, self._port)
encoded_message = bytearray(json.dumps(message) + "\0\r", "utf-8") encoded_message = bytearray(json.dumps(message) + "\0\r", "utf-8")
self._logger.debug(f"Sending message: {encoded_message}") self._logger.debug(f"Sending message: {encoded_message}")
self._writer.write(encoded_message) writer.write(encoded_message)
await self._writer.drain() await writer.drain()
if expect_return: data = await reader.read(4096)
data = await self._reader.read(4096) json_string = data.decode('utf-8')
json_string = data.decode('utf-8') self._logger.debug(f"Received message: {json_string}")
self._logger.debug(f"Received message: {json_string}") writer.close()
return json.loads(json_string) await writer.wait_closed()
print(json_string)
return json.loads(json_string)
def firmware(self):
return self._firmware_version
async def firmware(self): async def firmware(self):
return self._firmware_version
async def _firmware(self):
""" """
NeoHub firmware version NeoHub firmware version
""" """
message = {"FIRMWARE": 0} message = {"FIRMWARE": 0}
result = await self._send(message) result = await self._send(message)
firmware_version = int(result['firmware version']) firmware_version = int(result['firmware version'])
return firmware_version return firmware_version
@ -52,11 +47,25 @@ class NeoHub:
async def reset(self): async def reset(self):
""" """
Reboot neohub Reboot neohub
Returns True if Restart is initiated
""" """
message = {"RESET": 0} message = {"RESET": 0}
if self._firmware_version >= 2027: firmware_version = await self.firmware()
await self._send(message, expect_return = False) result = ""
return True if firmware_version >= 2027:
result = await self._send(message)
return result['Restarting'] == 1
else: else:
return False return False
async def get_system(self):
"""
Get system wide variables
"""
message = {"GET_SYSTEM": 0}
data = await self._send(message)
return data

View File

@ -11,9 +11,10 @@ import logging
async def run(): async def run():
hub = neohub.NeoHub() hub = neohub.NeoHub()
connection = await hub.connect() await hub.connect()
result = await hub.firmware() print(await hub.firmware())
print(f"Firmware: {result}") result = await hub.get_system()
print(result)
logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG)