Skip to content

Commit

Permalink
more work
Browse files Browse the repository at this point in the history
  • Loading branch information
cereal2nd committed Jun 28, 2024
1 parent ac557be commit 21bd92b
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 28 deletions.
9 changes: 1 addition & 8 deletions examples/read_bus.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,6 @@


async def main(connect_str: str):
# SET THE connection params below
# example via signum:
# velbus = Velbus("tls://192.168.1.9:27015")
# example via plain IP
# velbus = Velbus("192.168.1.9:27015")
# example via serial device
# velbus = Velbus("/dev/ttyAMA0")
velbus = Velbus(connect_str)
await velbus.connect()
for mod in (velbus.get_modules()).values():
Expand All @@ -32,4 +25,4 @@ async def main(connect_str: str):

logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
logging.getLogger("asyncio").setLevel(logging.DEBUG)
asyncio.run(main(args.connect), debug=False)
asyncio.run(main(args.connect), debug=True)
2 changes: 1 addition & 1 deletion velbusaio/controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def __init__(
self._auto_reconnect = True

self._dsn = dsn
self._handler = PacketHandler(self.send, self)
self._handler = PacketHandler(self)
self._modules: dict[int, Module] = {}
self._submodules: list[int] = []
self._send_queue: asyncio.Queue = asyncio.Queue()
Expand Down
39 changes: 20 additions & 19 deletions velbusaio/handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,10 @@ class PacketHandler:

def __init__(
self,
writer: Callable[[Message], Awaitable[None]],
velbus: Velbus,
) -> None:
self._log = logging.getLogger("velbus-packet")
self._writer = writer
self._log = logging.getLogger("velbus-handler")
self._log.setLevel(logging.DEBUG)
self._velbus = velbus
self._typeResponseReceived = asyncio.Event()
self._scanLock = threading.Lock()
Expand Down Expand Up @@ -101,9 +100,9 @@ async def scan(self) -> None:
)
self._scan_delay_msec = SCAN_MODULEINFO_TIMEOUT_INITIAL
while self._scan_delay_msec > 50 and not module.is_loaded():
self._log.debug(
f"\t... waiting {self._scan_delay_msec} is_loaded={module.is_loaded()}"
)
# self._log.debug(
# f"\t... waiting {self._scan_delay_msec} is_loaded={module.is_loaded()}"
# )
self._scan_delay_msec = self._scan_delay_msec - 50
await asyncio.sleep(0.05)
self._log.info(
Expand All @@ -113,7 +112,6 @@ async def scan(self) -> None:
self._log.error(
f"Module {address} did not respond to info requests after successful type request"
)

self._scan_complete = True
self._log.info("Module scan completed")

Expand Down Expand Up @@ -181,6 +179,8 @@ async def handle(self, rawmsg: RawMessage) -> None:
module_type = module.get_type()
if commandRegistry.has_command(int(command_value), module_type):
command = commandRegistry.get_command(command_value, module_type)
if not command:
return
msg = command()
msg.populate(priority, address, rtr, data)
# restart the info completion time when info message received
Expand Down Expand Up @@ -238,15 +238,16 @@ def _handle_module_subtype(self, msg: ModuleSubTypeMessage) -> None:
}
self._velbus.add_submodules(module, addrList)

def _channel_convert(self, module: str, channel: str, ctype: str) -> None | int:
data = keys_exists(
self.pdata, "ModuleTypes", h2(module), "ChannelNumbers", ctype
)
if data and "Map" in data and h2(channel) in data["Map"]:
return data["Map"][h2(channel)]
if data and "Convert" in data:
return int(channel)
for offset in range(0, 8):
if channel & (1 << offset):
return offset + 1
return None

# def _channel_convert(self, module: str, channel: str, ctype: str) -> None | int:
# data = keys_exists(
# self.pdata, "ModuleTypes", h2(module), "ChannelNumbers", ctype
# )
# if data and "Map" in data and h2(channel) in data["Map"]:
# return data["Map"][h2(channel)]
# if data and "Convert" in data:
# return int(channel)
# for offset in range(0, 8):
# if channel & (1 << offset):
# return offset + 1
# return None
1 change: 1 addition & 0 deletions velbusaio/module.py
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,7 @@ async def on_message(self, message: Message) -> None:
"""
Process received message
"""
self._log.debug(f"RX: {message}")
_channel_offset = self.calc_channel_offset(message.address)

if isinstance(
Expand Down
68 changes: 68 additions & 0 deletions velbusaio/protocol.json
Original file line number Diff line number Diff line change
Expand Up @@ -9045,6 +9045,74 @@
"Type": "SelectedProgram"
}
},
"Memory": {
"Address": {
"049C": { "ModuleName": "0:Start" },
"049D": { "ModuleName": "1" },
"049E": { "ModuleName": "2" },
"049F": { "ModuleName": "3" },
"04A0": { "ModuleName": "4" },
"04A1": { "ModuleName": "5" },
"04A2": { "ModuleName": "6" },
"04A3": { "ModuleName": "7" },
"04A4": { "ModuleName": "8" },
"04A5": { "ModuleName": "9" },
"04A6": { "ModuleName": "10" },
"04A7": { "ModuleName": "11" },
"04A8": { "ModuleName": "12" },
"04A9": { "ModuleName": "13" },
"04AA": { "ModuleName": "14" },
"04AB": { "ModuleName": "15" },
"04AC": { "ModuleName": "16" },
"04AD": { "ModuleName": "17" },
"04AE": { "ModuleName": "18" },
"04AF": { "ModuleName": "19" },
"04B0": { "ModuleName": "20" },
"04B1": { "ModuleName": "21" },
"04B2": { "ModuleName": "22" },
"04B3": { "ModuleName": "23" },
"04B4": { "ModuleName": "24" },
"04B5": { "ModuleName": "25" },
"04B6": { "ModuleName": "26" },
"04B7": { "ModuleName": "27" },
"04B8": { "ModuleName": "28" },
"04B9": { "ModuleName": "29" },
"04BA": { "ModuleName": "30" },
"04BB": { "ModuleName": "31" },
"04BC": { "ModuleName": "32" },
"04BD": { "ModuleName": "33" },
"04BE": { "ModuleName": "34" },
"04BF": { "ModuleName": "35" },
"04C0": { "ModuleName": "36" },
"04C1": { "ModuleName": "37" },
"04C2": { "ModuleName": "38" },
"04C3": { "ModuleName": "39" },
"04C4": { "ModuleName": "40" },
"04C5": { "ModuleName": "41" },
"04C6": { "ModuleName": "42" },
"04C7": { "ModuleName": "43" },
"04C8": { "ModuleName": "44" },
"04C9": { "ModuleName": "45" },
"04CA": { "ModuleName": "46" },
"04CB": { "ModuleName": "47" },
"04CC": { "ModuleName": "48" },
"04CD": { "ModuleName": "49" },
"04CE": { "ModuleName": "50" },
"04CF": { "ModuleName": "51" },
"04D0": { "ModuleName": "52" },
"04D1": { "ModuleName": "53" },
"04D2": { "ModuleName": "54" },
"04D3": { "ModuleName": "55" },
"04D4": { "ModuleName": "56" },
"04D5": { "ModuleName": "57" },
"04D6": { "ModuleName": "58" },
"04D7": { "ModuleName": "59" },
"04D8": { "ModuleName": "60" },
"04D9": { "ModuleName": "61" },
"04DA": { "ModuleName": "62" },
"04DB": { "ModuleName": "64:Save" }
}
},
"Info": "8 channel 0 to 10 V dimmer control module",
"Type": "VMB8DC-20"
},
Expand Down

0 comments on commit 21bd92b

Please sign in to comment.