"""Auslesen eines DHT22 Sensors
Date: 23.04.2024
Name: MAiL
"""
from neopixel import NeoPixel
from machine import Pin
import time
import dht
import math
import network # für WLAN Object
from umqtt.robust import MQTTClient #für den MQTT Client
import ujson #zum generieren eines JSON Strings
#setup
th_sens = dht.DHT22(Pin(15))
pixels =NeoPixel(Pin(13), 16)
blue=(0,0,255)
red = (255, 0, 0)
#WIFI connection
print("Connecting to WLAN ...")
sta_if = network.WLAN(network.STA_IF) #WLAN Object
sta_if.active(True) #activate Wlan
sta_if.connect('Wokwi-GUEST','')
while not sta_if.isconnected():
print(".", end = "")
time.sleep(0.1)
print("WIFI connected")
#MQTT Setup
SERVER = "industrial.api.ubidots.com"
port = 1883
client_name = "Wetterstation"
topic = b"/v1.6/devices/Wetterstation"
token = "BBUS-4BrQmCUCJ42jwe0UOC9goTfYD3QDld"
#MQTT client Object
client = MQTTClient(client_name, SERVER, port, user=token, password=token)
#publish location
#Publish location
lat=47.811195
lng=13.033229
msg = b'{"location": {"lat":%s, "lng":%s}}' % (lat,lng)
client.connect()
client.publish(topic,msg)
client.disconnect()
time.sleep(3)
#loop
while True:
th_sens.measure()
temp= th_sens.temperature()
hum = th_sens.humidity()
number_leds=int(hum*16/100)
number_leds_out=16-number_leds
#nachricht an den Server
msgt = ujson.dumps({"Temperature" :temp})
msgh = ujson.dumps({"Hummidity" :hum})
"""if temp<0:
a=int(-temp*6.375)
pixels.fill((255-a,0,a))
else:
b=int(temp*3.1875)
pixels.fill((b,0,255-b))
"""
a=int((temp+40)*2.125)
for x in range(number_leds):
pixels[x]=((a,0,255-a))
for x in range(number_leds_out):
pixels[x+number_leds]=((0,0,0))
pixels.write()
print("Temp:", temp , "Luftfeuchtigkeit:",hum)
#Daten an den MQTT Server senden
client.connect() #client verbinden
client.publish(topic, msgt) #Nachricht beim richtigen Topic publishen
client.publish(topic, msgh) #Nachricht beim richtigen Topic publishen
client.disconnect()#client disconnecten
time.sleep(5)#>1s warten