async def main(): # 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("tls://192.168.1.9:27015") await velbus.connect() for mod in (velbus.get_modules()).values(): print(mod) print("") await asyncio.sleep(6000000000)
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Establish connection with velbus.""" hass.data.setdefault(DOMAIN, {}) controller = Velbus( entry.data[CONF_PORT], cache_dir=hass.config.path(".storage/velbuscache/"), ) hass.data[DOMAIN][entry.entry_id] = {} hass.data[DOMAIN][entry.entry_id]["cntrl"] = controller hass.data[DOMAIN][entry.entry_id]["tsk"] = hass.async_create_task( velbus_connect_task(controller, hass, entry.entry_id)) _migrate_device_identifiers(hass, entry.entry_id) hass.config_entries.async_setup_platforms(entry, PLATFORMS) if hass.services.has_service(DOMAIN, SERVICE_SCAN): return True def check_entry_id(interface: str) -> str: for entry in hass.config_entries.async_entries(DOMAIN): if "port" in entry.data and entry.data["port"] == interface: return entry.entry_id raise vol.Invalid( "The interface provided is not defined as a port in a Velbus integration" ) async def scan(call: ServiceCall) -> None: await hass.data[DOMAIN][call.data[CONF_INTERFACE]]["cntrl"].scan() hass.services.async_register( DOMAIN, SERVICE_SCAN, scan, vol.Schema( {vol.Required(CONF_INTERFACE): vol.All(cv.string, check_entry_id)}), ) async def syn_clock(call: ServiceCall) -> None: await hass.data[DOMAIN][call.data[CONF_INTERFACE] ]["cntrl"].sync_clock() hass.services.async_register( DOMAIN, SERVICE_SYNC, syn_clock, vol.Schema( {vol.Required(CONF_INTERFACE): vol.All(cv.string, check_entry_id)}), ) async def set_memo_text(call: ServiceCall) -> None: """Handle Memo Text service call.""" memo_text = call.data[CONF_MEMO_TEXT] memo_text.hass = hass await hass.data[DOMAIN][call.data[CONF_INTERFACE]]["cntrl"].get_module( call.data[CONF_ADDRESS]).set_memo_text(memo_text.async_render()) hass.services.async_register( DOMAIN, SERVICE_SET_MEMO_TEXT, set_memo_text, vol.Schema({ vol.Required(CONF_INTERFACE): vol.All(cv.string, check_entry_id), vol.Required(CONF_ADDRESS): vol.All(vol.Coerce(int), vol.Range(min=0, max=255)), vol.Optional(CONF_MEMO_TEXT, default=""): cv.template, }), ) return True