Skip to content
This repository was archived by the owner on May 7, 2025. It is now read-only.
This repository was archived by the owner on May 7, 2025. It is now read-only.

How can I read multiple sensor data with blynk app and python? #45

Description

@GabrieleAnsaldo

Hello,

I am trying to connect a bunch of sensors to my ESP32. I want to connect it to the Blynk app in order to get some data on my phone.

I am currently coding on python, however, I have an issue.

The code seems to always stop after it reads the light sensor. Basically, I only get the data from the light sensor and it loops from there.

Any clue what is wrong with the code?

import network
from time import sleep
import machine
import onewire, ds18x20
import dht
from machine import Pin
import blynklib_mp as blynklib
"""--- Connect to WiFi ---"""
WIFI_SSID = '******'
WIFI_PASS = '******'
BLYNK_AUTH = '*********'
print("Connecting to WiFi network '{}'".format(WIFI_SSID))
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(WIFI_SSID, WIFI_PASS)
while not wifi.isconnected():
sleep(0.1)
print('.', end="")
print('\nWiFi IP:', wifi.ifconfig()[0])
"""--- Connect to Blynk Server ---"""
print("Connecting to Blynk server...")
blynk = blynklib.Blynk(BLYNK_AUTH)
"""--- Settings ---""" #LIGHT
light_PIN = 35
blynk_VPIN_Light = 0
light_RAW = machine.ADC(machine.Pin(light_PIN))
light_RAW.atten(machine.ADC.ATTN_11DB)
#MOISTURE
moisture_PIN = 34
blynk_VPIN_Moisture = 1
moisture_RAW = machine.ADC(machine.Pin(moisture_PIN)) moisture_RAW.atten(machine.ADC.ATTN_11DB)
moisture_PWM_PIN = 25
moisture_RAW_MIN = 20
moisture_RAW_MAX = 3600
#SOIL TEMPERATURE
soil_temperature_PIN = 4
blynk_VPIN_Soil_Temp = 2
ds_pin = machine.Pin(soil_temperature_PIN)
soil_temperature_RAW = ds18x20.DS18X20(onewire.OneWire(ds_pin))
roms = soil_temperature_RAW.scan()
#AIR TEMPERATURE HUMIDITY
blynk_VPIN_Air_Temp = 3
blynk_VPIN_Air_Hum = 4
sensor = dht.DHT22(Pin(33))
@blynk.handle_event('read V{}'.format(blynk_VPIN_Light))
def read_handler(vpin):
"""--- Light Sensor ---""" #WHILE LOOP
print('Light RAW: ',light_RAW.read())
sleep(1)
blynk.virtual_write(blynk_VPIN_Light, light_RAW.read())
"""--- Moisture Sensor ---""" #WHILE LOOP
moisture_PWM = machine.PWM(machine.Pin(moisture_PWM_PIN), freq=600, duty=512) #Send a PWM signal of 600 kHz to pin 25 with a dutycycle of 50%
sleep(0.2) #Allow the circuit to stabilize moisture_Cumulative_RAW = 0
for _ in range(20):
moisture_Cumulative_RAW = moisture_Cumulative_RAW + moisture_RAW.read() #Read data from analog pin 34 and add it to MoistLevel variable
sleep(0.05)
if moisture_RAW.read() < moisture_RAW_MIN:
moisture_RAW_MIN = moisture_RAW.read()
if moisture_RAW.read() > moisture_RAW_MAX:
moisture_RAW_MAX = moisture_RAW.read()
moisture_Average_RAW = moisture_Cumulative_RAW / 20
moisture_PERC = (1 - (moisture_Average_RAW - moisture_RAW_MIN) / (moisture_RAW_MAX - moisture_RAW_MIN))*100
print('Soil Moisture: ' + str(moisture_PERC) + '%')
moisture_PWM.deinit()
blynk.virtual_write(blynk_VPIN_Moisture, moisture_PERC)
"""--- Soil Temperature Sensor ---""" #WHILE LOOP
soil_temperature_RAW.convert_temp()
sleep(0.750)
for rom in roms:
#print(rom)
print("Soil Temperarture: ", soil_temperature_RAW.read_temp(rom))
sleep(1)
blynk.virtual_write(blynk_VPIN_Soil_Temp, soil_temperature_RAW.read_temp(rom))
"""--- Air Temperature/Humidity Sensor ---""" try:
sleep(2)
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
print('Air Temperature: %3.1f C' %temp)
print('Air Humidity: %3.1f %%' %hum)
except OSError as e:
print('Failed to read sensor.')
print(" ")
blynk.virtual_write(blynk_VPIN_Air_Temp, temp)
blynk.virtual_write(blynk_VPIN_Air_Hum, hum)
while True:
blynk.run()
sleep(5)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions