Hi, I'm using a python script to receive the data from Thingy:52, but it's showing multiple values at each time.
# Write your code here :-)
from bluepy import btle, thingy52
import time
import binascii
from bluepy.btle import UUID, Peripheral, ADDR_TYPE_RANDOM, DefaultDelegate
import argparse
MAC_ADDRESS = "CC:53:EB:90:19:06" # This has to be changed to match your Thingy's MAC!
class MQTTDelegate(btle.DefaultDelegate):
def handleNotification(self, hnd, data):
#Debug print repr(data)
if (hnd == thingy52.e_temperature_handle):
teptep = binascii.b2a_hex(data)
Temp = self._str_to_int(teptep[:-2]) + int(teptep[-2:], 16) / 100.0
print('temperature', Temp, '°C')
if (hnd == thingy52.e_pressure_handle):
pressure_int, pressure_dec = self._extract_pressure_data(data)
value = pressure_int + pressure_dec / 100.0
print('pressure', value, 'hPa')
if (hnd == thingy52.e_humidity_handle):
teptep = binascii.b2a_hex(data)
value = self._str_to_int(teptep)
humidity = value
print('humidity', humidity, '%')
if (hnd == thingy52.e_gas_handle):
eco2, tvoc = self._extract_gas_data(data)
eco2 = eco2
tvoc = tvoc
print('eco2', eco2, 'bbm')
print('tvoc', tvoc, 'ppb')
def _str_to_int(self, s):
""" Transform hex str into int. """
i = int(s, 16)
if i >= 2**7:
i -= 2**8
return i
def _extract_pressure_data(self, data):
""" Extract pressure data from data string. """
teptep = binascii.b2a_hex(data)
pressure_int = 0
for i in range(0, 4):
pressure_int += (int(teptep[i*2:(i*2)+2], 16) << 8*i)
pressure_dec = int(teptep[-2:], 16)
return (pressure_int, pressure_dec)
def _extract_gas_data(self, data):
""" Extract gas data from data string. """
teptep = binascii.b2a_hex(data)
eco2 = int(teptep[:2], 16) + (int(teptep[2:4], 16) << 8)
tvoc = int(teptep[4:6], 16) + (int(teptep[6:8], 16) << 8)
return eco2, tvoc
def _extract_color_data(self, data):
""" Extract color data from data string. """
teptep = binascii.b2a_hex(data)
red = int(teptep[:2], 16)
green = int(teptep[2:4], 16)
blue = int(teptep[4:6], 16)
clear = int(teptep[6:8], 16)
return red, green, blue, clear
def _extract_tap_data(self, data):
""" Extract tap data from data string. """
teptep = binascii.b2a_hex(data)
direction = int(teptep[0:2])
count = int(teptep[2:4])
return (direction, count)
#print("# Setting notification handler to default handler...")
#thingy.setDelegate(thingy52.MyDelegate())
connected=False
while not connected:
print("###############################################")
thingy = thingy52.Thingy52(MAC_ADDRESS)
thingy.ui.enable()
thingy.ui.set_led_mode_breathe(0x02, 50, 500)
thingy.sound.enable()
#while True:
thingy.sound.configure(speaker_mode=0x03) # 0x03 means sample mode, ref FW doc
thingy.sound.play_speaker_sample(1)
thingy.setDelegate(MQTTDelegate())
thingy.environment.enable()
thingy.environment.configure(temp_int=1000)
thingy.environment.set_temperature_notification(True)
thingy.environment.enable()
thingy.environment.set_pressure_notification(True)
thingy.environment.set_humidity_notification(True)
thingy.environment.set_gas_notification(True)
thingy.environment.set_color_notification(True)
thingy.motion.set_tap_notification(True)
thingy.motion.set_orient_notification(True)
thingy.environment.configure(press_int=1000)
thingy.environment.enable()
thingy.environment.configure(humid_int=1000)
thingy.environment.enable()
thingy.environment.configure(gas_mode_int=1)
thingy.environment.enable()
thingy.environment.configure(color_int=1000)
thingy.environment.configure(color_sens_calib=[0,0,0])
thingy.motion.set_orient_notification(True)
thingy.ui.enable()
thingy.ui.set_btn_notification(True)
thingy.battery.enable()
count =0
thingy.ui.set_led_mode_breathe(0x01, 50, 500) # color 0x01 = RED, intensity, delay between breathes
# thingy.ui.set_led_mode_breathe(0x01, 50, 500) # color 0x01 = RED, intensity, delay between breathes
time.sleep(2)
thingy.disconnect()
connected=False
May I know how to resolve this issue.