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