-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathexample_discover_devices_async.py
More file actions
50 lines (36 loc) · 1.51 KB
/
example_discover_devices_async.py
File metadata and controls
50 lines (36 loc) · 1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import asyncio
from dataclasses import asdict
import logging
import sys
from pystuderxcom import AsyncXcomApiTcp, XcomApiTcp, XcomApiTcpMode
from pystuderxcom import AsyncXcomDiscover, XcomDiscover
from pystuderxcom import AsyncXcomFactory, XcomFactory
from pystuderxcom import XcomDataset, XcomVoltage
from helper import RunHelper
# Setup logging to StdOut
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
logger = logging.getLogger(__name__)
async def main():
api = AsyncXcomApiTcp(mode=XcomApiTcpMode.SERVER, listen_port=4001) # port number configured in Xcom-LAN/Moxa NPort
dataset = await AsyncXcomFactory.create_dataset(XcomVoltage.AC240, XcomVoltage.DC48) # or use XcomVoltage.AC120, XcomVoltage.DC12 or XcomVoltagC.DC24
try:
if not await api.start():
logger.info(f"Did not connect to Xcom")
return
helper = AsyncXcomDiscover(api, dataset)
# Discover Xcom client info
client_info = await helper.discover_client_info()
logger.info(f"\n\n")
logger.info(f"Discovered {client_info}")
# Discover Xcom devices
devices = await helper.discover_devices(getExtendedInfo=True, verbose=False)
logger.info(f"\n\n")
for device in devices:
logger.info(f"Discovered {device}")
# Log diagnostic information
diag = await api.get_diagnostics()
logger.info(f"Diagnostics: {diag}")
finally:
await api.stop()
dataset = None
RunHelper.run(main) # main loop