#!micropython print('Start main.py') import socket from micropython import const, schedule import network import machine w = network.WLAN() print("Waiting for WLAN") while not w.isconnected(): machine.idle() print("WLAN found") HOST = config['CONFIG_INFLUXDB_HOST'] PORT = config['CONFIG_INFLUXDB_PORT'] PATH = config['CONFIG_INFLUXDB_PATH'] UTF_8 = 'utf8' HTTP_REQUEST = bytes('POST /%s HTTP/1.1\r\n' % PATH, UTF_8) HTTP_HOST = bytes('Host: %s\r\n' % HOST, UTF_8) HTTP_CONTENT_TYPE = bytes('Content-Type: application/x-www-urlencoded\r\n', UTF_8) HTTP_CONTENT_LENGTH = bytes('Content-Length: %s\r\n', UTF_8) HTTP_CONNECTION = bytes('Connection: close\r\n', UTF_8) HTTP_NL = bytes('\r\n', UTF_8) def post(data): print('Send HTTP POST: %s' % data) addr = socket.getaddrinfo(HOST, PORT)[0][-1] data = bytes(data, UTF_8) s = socket.socket() s.connect(addr) s.send(HTTP_REQUEST) s.send(HTTP_HOST) s.send(HTTP_CONTENT_TYPE) s.send(HTTP_CONTENT_LENGTH % len(data)) s.send(HTTP_CONNECTION) s.send(HTTP_NL) s.send(data) first_data = s.recv(100) if first_data: line, *_ = first_data.split(HTTP_NL) print(line) while data: data = s.recv(100) s.close() from machine import Timer, ADC CONVERT = ( 1024.0 * 3.3 ) / 1000.0 # convert to decibel values = [] def update(args): (v_max, v_min, v_mean) = args post('laermsensor0 max=%s,min=%s,mean=%s' % (v_max, v_min, v_mean)) def process_adc(t): global adc global values if len(values) == 50: v_max = max(values) / CONVERT v_min = min(values) / CONVERT v_mean = (sum(values) / 50.0) / CONVERT schedule(update, (v_max, v_min, v_mean)) values = [] else: values.append(adc.read()) adc = ADC(0) timer = Timer(-1) timer.init(period=100, mode=Timer.PERIODIC, callback=process_adc) def disable(): global timer timer.deinit() print('main.py finished')