61 lines
2.0 KiB
Python
Executable File
61 lines
2.0 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# -*- encoding: utf-8 -*-
|
|
|
|
"""
|
|
Example on getting the information about the EnOcean controller.
|
|
The sending is happening between the application and the EnOcean controller,
|
|
no wireless communication is taking place here.
|
|
|
|
The command used here is specified as 1.10.5 Code 03: CO_RD_VERSION
|
|
in the ESP3 document.
|
|
"""
|
|
|
|
from enocean.consolelogger import init_logging
|
|
from enocean.communicators.serialcommunicator import SerialCommunicator
|
|
from enocean.protocol.packet import Packet
|
|
from enocean.protocol.constants import PACKET
|
|
from enocean import utils
|
|
import traceback
|
|
import sys
|
|
|
|
try:
|
|
import queue
|
|
except ImportError:
|
|
import Queue as queue
|
|
|
|
init_logging()
|
|
"""
|
|
'/dev/ttyUSB0' might change depending on where your device is.
|
|
To prevent running the app as root, change the access permissions:
|
|
'sudo chmod 777 /dev/ttyUSB0'
|
|
"""
|
|
communicator = SerialCommunicator(port=u'/dev/ttyUSB0', callback=None)
|
|
packet = Packet(PACKET.COMMON_COMMAND, [0x03])
|
|
|
|
communicator.daemon = True
|
|
communicator.start()
|
|
communicator.send(packet)
|
|
|
|
while communicator.is_alive():
|
|
try:
|
|
receivedPacket = communicator.receive.get(block=True, timeout=1)
|
|
if receivedPacket.packet_type == PACKET.RESPONSE:
|
|
print('Return Code: %s' % utils.to_hex_string(receivedPacket.data[0]))
|
|
print('APP version: %s' % utils.to_hex_string(receivedPacket.data[1:5]))
|
|
print('API version: %s' % utils.to_hex_string(receivedPacket.data[5:9]))
|
|
print('Chip ID: %s' % utils.to_hex_string(receivedPacket.data[9:13]))
|
|
print('Chip Version: %s' % utils.to_hex_string(receivedPacket.data[13:17]))
|
|
print('App Description Version: %s' % utils.to_hex_string(receivedPacket.data[17:]))
|
|
print('App Description Version (ASCII): %s' % str(bytearray(receivedPacket.data[17:])))
|
|
|
|
except queue.Empty:
|
|
continue
|
|
except KeyboardInterrupt:
|
|
break
|
|
except Exception:
|
|
traceback.print_exc(file=sys.stdout)
|
|
break
|
|
|
|
if communicator.is_alive():
|
|
communicator.stop()
|