I have two Blynk script created using Python and blynklib version 0.2.6 on Raspberry Pi 2B.
First script will control some RF Plug, second script will report temperature and humidity using a DHT22 sensor.
Every python script will connect to my local Blynk Server on same subnet, using different Token.
Eech script will init the Blynk server using same function. A Init script sample is the following:
def initBlynk(self):
# blynk main object
blynk = Blynk(
token=self.cfg.get("blynk", "token"),
server=self.cfg.get("blynk", "server"),
port=self.cfg.get("blynk", "port"))
# Blynk timer
timer = BlynkTimer()
"""
Assign switch write and read events:
- write events triggered to set value
- read event sent sensor value
"""
def readEventHandler(pin):
self.log.debug("READ EVENT FOR VPIN {}".format(pin))
self.sendSensorValue(pin)
def writeEventHandler(pin, value):
# we does not set anythings
self.log.debug("WRITE EVENT VPIN {} VALUE {}".format(pin, value))
self.sendSensorValue(pin)
# decorating
for vpin in self.cfg["sensor"]["vpins"].split(','):
self.log.debug("BLYNK Decorating READ/WRITE FOR VPIN {}".format(vpin))
# Read Event
Blynk.handle_event(blynk, "read v{}".format(vpin))(readEventHandler)
# Write Event
Blynk.handle_event(blynk, "write v{}".format(vpin))(writeEventHandler)
# Timer Event
BlynkTimer.register(
timer, pin=vpin, interval=BLYNK_UPDATE_INTERVAL, run_once=False)(
readEventHandler)
#On connect Event
Blynk.handle_event(blynk, "connect")(self.onConnectHandler)
#On Disconnect Event
Blynk.handle_event(blynk, "disconnect")(self.onDisconnectHandler)
# Globally saving the handlers
self._handlers.append(writeEventHandler)
self._handlers.append(readEventHandler)
# Saving blynk and timer object
self._blynk = blynk
self._timer = timer
return self.isConneted()
The first script will control some RF Plug, the second script will read DHT22 Sensor (blynk_dht.py).
The main loop of blynk_dht.py
is the following:
def run(self):
self.sensor = self.getSensor()
self.db = self.getInflux()
self._isConnected = self.initBlynk()
def run(self):
self.sensor = self.getSensor()
self.db = self.getInflux()
self._isConnected = self.initBlynk()
while True:
if self._isConnected:
self._blynk.run()
self._timer.run()
else:
self.log.warning("BLYNK OR DATABASE DISCONNECTED")
self.updateSensorValue()
self.db = self.getInflux()
self._blynk.disconnect()
self._isConnected = self._blynk.connect(timeout=CONN_TIMEOUT)
After a while the Blynk Server reports that DHT Sensor is offiline, but READ funcition in Timer will continue to update Blynk Server. No Disconnection handler is called.
Someone can help me?