38 lines
1.4 KiB
Python
Executable file
38 lines
1.4 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
import asyncio
|
|
import json
|
|
import yaml
|
|
import time
|
|
from meshcore import MeshCore, EventType
|
|
from prometheus_client import CollectorRegistry, Gauge, push_to_gateway
|
|
|
|
async def main():
|
|
with open("config.yaml", "r") as file:
|
|
config = yaml.safe_load(file)
|
|
|
|
meshcore = await MeshCore.create_serial(config["serial_device_path"])
|
|
await meshcore.commands.set_time(int(time.time()))
|
|
|
|
#await meshcore.commands.change_contact_path("4a629a62e51f0ec770afc47bb22010df0ac1c47475499b6b5e47b3487a4f71e6", [])
|
|
|
|
#await meshcore.ensure_contacts()
|
|
#contact = meshcore.get_contact_by_key_prefix("4a629a62e51f0ec770afc47bb22010df0ac1c47475499b6b5e47b3487a4f71e6")
|
|
#print(contact)
|
|
for repeater in config["repeaters"]:
|
|
result = await meshcore.commands.send_telemetry_req(repeater["public_key"])
|
|
if result.type == EventType.ERROR:
|
|
pass
|
|
|
|
result = await meshcore.wait_for_event(EventType.TELEMETRY_RESPONSE, timeout=10.0)
|
|
if result is None:
|
|
print(json.dumps({"error" : "Timeout waiting for telemetry"}))
|
|
else:
|
|
print(json.dumps(result.payload, indent=4))
|
|
|
|
registry = CollectorRegistry()
|
|
test = Gauge("voltage", "Battery Voltage", registry=registry)
|
|
test.set(result.payload["lpp"][0]["value"])
|
|
push_to_gateway("localhost:9091", job="batchA", registry=registry)
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|