Пример #1
0
def test_decode():
    d = b'\xdc\x80\x0a\x0e\x07\x0d\x3d\x05\x19\x00\x0d\xf6\x46\x0e'
    f = ElcobusFrame.from_bytes(d)
    assert d == f.to_bytes()
    assert f.data.temperature == 55.84375
Пример #2
0
def test_decode():
    d = b'\xdc\x86\x00\x0e\x02\x3d\x2d\x02\x15\x05\x78\x00\x93\xef'
    f = ElcobusFrame.from_bytes(d)
    assert d == f.to_bytes()
    assert f.message_type == ElcobusMessage.MessageType.Info
    assert f.data.temperature == 21.875
Пример #3
0
def test_decode_unkn_type():
    d = b'\xdc\x80\x01\x0e\x0a\x31\x3d\x07\x4b\x00\x0d\xc0\x6a\x4d'
    f = ElcobusFrame.from_bytes(d)
    assert isinstance(f, UnknownFrame)
    assert d == f.to_bytes()
Пример #4
0
def test_decode():
    d = b'\xdc\x80\x01\x0e\x07\x31\x3d\x07\x4b\x00\x0d\xc0\x3c\x29'
    f = ElcobusFrame.from_bytes(d)
    assert isinstance(f, ElcobusMessage)
    assert d == f.to_bytes()
Пример #5
0
def test_decode_way_too_short():
    d = b'\xdc'
    with pytest.raises(BufferError):
        f = ElcobusFrame.from_bytes(d)
Пример #6
0
def test_decode_data_too_short():
    d = b'\xdc\x80\x01\x05\x3c\x29'
    with pytest.raises(ValueError):
        f = ElcobusFrame.from_bytes(d)
Пример #7
0
def test_decode_too_short():
    d = b'\xdc\x80\x01\x0e\x07\x31\x3d\x07\x4b\x00\x0d\xc0\x3c'
    with pytest.raises(BufferError):
        f = ElcobusFrame.from_bytes(d)
Пример #8
0
def test_decode_invalid_crc():
    d = b'\xdc\x80\x01\x0e\x07\x31\x3d\x07\x4b\x00\x0d\xc0\x3c\x28'
    with pytest.raises(ValueError):
        f = ElcobusFrame.from_bytes(d)
Пример #9
0
def test_decode_too_long():
    d = b'\xdc\x80\x01\x0e\x07\x31\x3d\x07\x4b\x00\x0d\xc0\x3c\x29'
    f = ElcobusFrame.from_bytes(d)
    d2 = b'\xdc\x80\x01\x0e\x07\x31\x3d\x07\x4b\x00\x0d\xc0\x3c\x29\x00\x00'
    f2 = ElcobusFrame.from_bytes(d2)
    assert f == f2
Пример #10
0
def test_decode():
    d = b'\xdc\x80\x01\x0e\x07\x11\x3d\x30\x63\x00\x00\x0a\x85\x32'
    f = ElcobusFrame.from_bytes(d)
    assert d == f.to_bytes()
    assert isinstance(f.data, Pressure)
    assert f.data.pressure == 1.0
Пример #11
0
#!/usr/bin/env python3
import re
import sys
import binascii

from elcobus.ElcobusMessage.ElcobusFrame import ElcobusFrame

__import__('elcobus.ElcobusMessage', globals(), level=0, fromlist=['*'])
# ^^^ equivalent of `from elcobus.ElcobusMessage import *`, but without polluting the namespace

for line in sys.stdin:
    match = re.match('^(.*)EBM: \[([0-9A-Fa-f]{2}(?: [0-9A-Fa-f]{2})*)\](.*)$',
                     line)
    if not match:
        continue

    hexdump = match.group(2)
    binary = binascii.unhexlify(hexdump.replace(' ', ''))
    ebm = ElcobusFrame.from_bytes(binary)

    # optionally filter here?

    print("{}EBM: {}{}".format(match.group(1), ebm, match.group(3)))