From d7902dc72605eea8c629edf2be13821e34e9fb07 Mon Sep 17 00:00:00 2001
From: Andreas Gattringer <andreas.gattringer@univie.ac.at>
Date: Mon, 18 Mar 2024 21:41:50 +0100
Subject: [PATCH] new umnp program prototype for rHtp sensors

---
 programs/umnp-rhtp.py | 53 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)
 create mode 100644 programs/umnp-rhtp.py

diff --git a/programs/umnp-rhtp.py b/programs/umnp-rhtp.py
new file mode 100644
index 0000000..68c8c80
--- /dev/null
+++ b/programs/umnp-rhtp.py
@@ -0,0 +1,53 @@
+import sys
+
+from umnp.microcontroller.devices.network.ethernet_w5500 import EthernetW5500
+from umnp.microcontroller.measurementdevice import MeasurementDevice
+from umnp.microcontroller.sensors.lps28dfw import LPS28DFW
+from umnp.microcontroller.sensors.sht45 import SHT45
+from umnp.microcontroller.tasks.periodictask import PeriodicTask
+
+if sys.implementation.name == "micropython":
+    # noinspection PyUnresolvedReferences
+    import machine
+
+    # noinspection PyUnresolvedReferences
+    import uasyncio as asyncio
+else:
+    from umnp.microcontroller.umock import machine
+
+
+async def aggregate_and_send(
+    device: MeasurementDevice, sht45: SHT45, p_sensor: LPS28DFW
+):
+    comm = device.communicator
+    t, rh = await sht45.measure()
+    p, p_t = await p_sensor.measure()
+    data = f"{t},{rh},{p},{p_t}"
+    await comm.send_data_message(data)
+
+
+async def main():
+    # configure network
+    device = MeasurementDevice()
+    spi = machine.SPI(
+        0, 2_000_000, mosi=machine.Pin(19), miso=machine.Pin(16), sck=machine.Pin(18)
+    )
+
+    i2c = machine.I2C(id=1, scl=machine.Pin(27), sda=machine.Pin(26))
+    ether = EthernetW5500(
+        spi, machine.Pin(17), machine.Pin(20), mac=device.generated_mac_raw(), dhcp=True
+    )
+    device.add_network_adapter(ether)
+    comm = device.create_communicator()
+
+    sht45 = SHT45(i2c)
+    p_sensor = LPS28DFW(i2c)
+
+    task = PeriodicTask(aggregate_and_send, None, 1000, device, sht45, p_sensor)
+    comm.add_task(task, "aggregate_and_send")
+    # start
+    asyncio.run(comm.start())
+
+
+if __name__ == "__main__":
+    asyncio.run(main())
-- 
GitLab