New initial version
This commit is contained in:
Executable
+67
@@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- encoding: utf-8 -*-
|
||||
from enocean.consolelogger import init_logging
|
||||
import enocean.utils
|
||||
from enocean.communicators.serialcommunicator import SerialCommunicator
|
||||
from enocean.protocol.packet import RadioPacket
|
||||
from enocean.protocol.constants import PACKET, RORG
|
||||
import sys
|
||||
import traceback
|
||||
|
||||
try:
|
||||
import queue
|
||||
except ImportError:
|
||||
import Queue as queue
|
||||
|
||||
|
||||
def assemble_radio_packet(transmitter_id):
|
||||
return RadioPacket.create(rorg=RORG.BS4, rorg_func=0x20, rorg_type=0x01,
|
||||
sender=transmitter_id,
|
||||
CV=50,
|
||||
TMP=21.5,
|
||||
ES='true')
|
||||
|
||||
|
||||
init_logging()
|
||||
communicator = SerialCommunicator()
|
||||
communicator.start()
|
||||
print('The Base ID of your module is %s.' % enocean.utils.to_hex_string(communicator.base_id))
|
||||
|
||||
if communicator.base_id is not None:
|
||||
print('Sending example package.')
|
||||
communicator.send(assemble_radio_packet(communicator.base_id))
|
||||
|
||||
# endless loop receiving radio packets
|
||||
while communicator.is_alive():
|
||||
try:
|
||||
# Loop to empty the queue...
|
||||
packet = communicator.receive.get(block=True, timeout=1)
|
||||
if packet.packet_type == PACKET.RADIO_ERP1 and packet.rorg == RORG.VLD:
|
||||
packet.select_eep(0x05, 0x00)
|
||||
packet.parse_eep()
|
||||
for k in packet.parsed:
|
||||
print('%s: %s' % (k, packet.parsed[k]))
|
||||
if packet.packet_type == PACKET.RADIO_ERP1 and packet.rorg == RORG.BS4:
|
||||
# parse packet with given FUNC and TYPE
|
||||
for k in packet.parse_eep(0x02, 0x05):
|
||||
print('%s: %s' % (k, packet.parsed[k]))
|
||||
if packet.packet_type == PACKET.RADIO_ERP1 and packet.rorg == RORG.BS1:
|
||||
# alternatively you can select FUNC and TYPE explicitely
|
||||
packet.select_eep(0x00, 0x01)
|
||||
# parse it
|
||||
packet.parse_eep()
|
||||
for k in packet.parsed:
|
||||
print('%s: %s' % (k, packet.parsed[k]))
|
||||
if packet.packet_type == PACKET.RADIO_ERP1 and packet.rorg == RORG.RPS:
|
||||
for k in packet.parse_eep(0x02, 0x02):
|
||||
print('%s: %s' % (k, packet.parsed[k]))
|
||||
except queue.Empty:
|
||||
continue
|
||||
except KeyboardInterrupt:
|
||||
break
|
||||
except Exception:
|
||||
traceback.print_exc(file=sys.stdout)
|
||||
break
|
||||
|
||||
if communicator.is_alive():
|
||||
communicator.stop()
|
||||
Reference in New Issue
Block a user