From 1a64ff40381638ad1475dc2e48443a1a36642e0f Mon Sep 17 00:00:00 2001 From: UpstreamData Date: Tue, 4 Oct 2022 08:28:24 -0600 Subject: [PATCH] add support for whatsminer in miner listener, and fix space in `MinerData.as_csv()` --- pyasic/data/__init__.py | 2 +- pyasic/miners/miner_listener.py | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/pyasic/data/__init__.py b/pyasic/data/__init__.py index f7e870de..299bf882 100644 --- a/pyasic/data/__init__.py +++ b/pyasic/data/__init__.py @@ -239,7 +239,7 @@ class MinerData: errs.append(error["error_message"]) data["errors"] = "; ".join(errs) data_list = [str(data[item]) for item in data] - return ", ".join(data_list) + return ",".join(data_list) def as_influxdb(self, measurement_name: str = "miner_data") -> str: """Get this dataclass as [influxdb line protocol](https://docs.influxdata.com/influxdb/v2.4/reference/syntax/line-protocol/). diff --git a/pyasic/miners/miner_listener.py b/pyasic/miners/miner_listener.py index 3a414b39..8a84d98f 100644 --- a/pyasic/miners/miner_listener.py +++ b/pyasic/miners/miner_listener.py @@ -27,7 +27,13 @@ class _MinerListener: def datagram_received(self, data, _addr): m = data.decode() - ip, mac = m.split(",") + if "," in m: + ip, mac = m.split(",") + else: + d = m[:-1].split("MAC") + ip = d[0][3:] + mac = d[1][1:] + new_miner = {"IP": ip, "MAC": mac.upper()} MinerListener().new_miner = new_miner @@ -46,9 +52,12 @@ class MinerListener(metaclass=Singleton): loop = asyncio.get_running_loop() - transport, protocol = await loop.create_datagram_endpoint( + transport_14235, protocol_14235 = await loop.create_datagram_endpoint( lambda: _MinerListener(), local_addr=("0.0.0.0", 14235) # noqa ) + transport_8888, protocol_8888 = await loop.create_datagram_endpoint( + lambda: _MinerListener(), local_addr=("0.0.0.0", 8888) # noqa + ) while True: if self.new_miner: @@ -56,7 +65,8 @@ class MinerListener(metaclass=Singleton): self.found_miners.append(self.new_miner) self.new_miner = None if self.stop: - transport.close() + transport_14235.close() + transport_8888.close() break await asyncio.sleep(0)