Integromat Project

Not able to send requests to integromat.
I am uploading my code and output image.
What are the mistakes ??
Please let me know.

My Code -

import conf, json, time, math, statistics,requests
from boltiot import Sms, Bolt

def compute_bounds(history_data,frame_size,factor):
if len(history_data)<frame_size :
return None

if len(history_data)>frame_size :
    del history_data[0:len(history_data)-frame_size]

Mn=statistics.mean(history_data)
Variance=0
for data in history_data :
    Variance += math.pow((data-Mn),2)
Zn = factor * math.sqrt(Variance / frame_size)
High_bound = history_data[frame_size-1]+Zn
Low_bound = history_data[frame_size-1]-Zn
return [High_bound,Low_bound]

mybolt = Bolt(conf.API_KEY, conf.DEVICE_ID)
sms = Sms(conf.SSID, conf.AUTH_TOKEN, conf.TO_NUMBER, conf.FROM_NUMBER)
history_data=[]

def trigger_integromat_webhook():
URL = “https://hook.integromat.com/sl8vc7wec4nmv5k1qm9s4lzxrf82jekb”
response = requests.request(“GET”, URL)
print(response.text)

while True:
response = mybolt.analogRead(‘A0’)
data = json.loads(response)
if data[‘success’] != 1:
print(“There was an error while retrieving the data.”)
print(“This is the error:”+data[‘value’])
time.sleep(10)
continue
print ("This is the value "+data[‘value’])
sensor_value=0
try:
sensor_value = int(data[‘value’])
except e:
print("There was an error while parsing the response: ",e)
continue

bound = compute_bounds(history_data,conf.FRAME_SIZE,conf.MUL_FACTOR)
if not bound:
    required_data_count=conf.FRAME_SIZE-len(history_data)
    print("Not enough data to compute Z-score. Need ",required_data_count,"$
    history_data.append(int(data['value']))
    time.sleep(10)
    continue

try:
    if sensor_value > bound[0] :
        print ("The light level increased suddenly. Sending an SMS.")
        response = sms.send_sms("Someone turned on the lights")
        trigger_integromat_webhook()
        print("This is the response ",response)
    elif sensor_value < bound[1]:
        print ("The light level decreased suddenly. Sending an SMS.")
        response = sms.send_sms("Someone turned off the lights")
        trigger_integromat_webhook()
        print("This is the response ",response)
    history_data.append(sensor_value);
except Exception as e:
    print ("Error",e)
time.sleep(10)

Hi @koushikdhar08,

requests packages is not installed on your system. Please use the below command to install it on your system.

sudo apt-get update
sudo pip3 install requests

Do let me know in case you need further assistance.

All the packages are installed.
Still same problem.

Your code, as it appears here, has too many indentation errors. Can you re-post the code with correct syntax?

import conf, json, time, math, statistics
from boltiot import Sms, Bolt

def compute_bounds(history_data,frame_size,factor):
    if len(history_data)<frame_size :
        return None

    if len(history_data)>frame_size :
        del history_data[0:len(history_data)-frame_size]
    Mn=statistics.mean(history_data)
    Variance=0
    for data in history_data :
        Variance += math.pow((data-Mn),2)
    Zn = factor * math.sqrt(Variance / frame_size)
    High_bound = history_data[frame_size-1]+Zn
    Low_bound = history_data[frame_size-1]-Zn
    return [High_bound,Low_bound]

def trigger_integromat_webhook():
    URL = “https://hook.integromat.com/xoyq792yg27glh88fcspy8venm3otwyq”
    response = requests.request(“GET”, URL)
    print(response.text)

mybolt = Bolt(conf.API_KEY, conf.DEVICE_ID)
sms = Sms(conf.SID, conf.AUTH_TOKEN, conf.TO_NUMBER, conf.FROM_NUMBER)
history_data=[]

while True:
    response = mybolt.analogRead('A0')
    data = json.loads(response)
    if data['success'] != 1:
        print("There was an error while retriving the data.")
        print("This is the error:"+data['value'])
        time.sleep(10)
        continue

    print ("This is the value "+data['value'])
    sensor_value=0
    try:
        sensor_value = int(data['value'])
    except e:
        print("There was an error while parsing the response: ",e)
        continue

    bound = compute_bounds(history_data,conf.FRAME_SIZE,conf.MUL_FACTOR)
    if not bound:
        required_data_count=conf.FRAME_SIZE-len(history_data)
        print("Not enough data to compute Z-score. Need ",required_data_count," more data points")
        history_data.append(int(data['value']))
        time.sleep(10)
        continue

    try:
        if sensor_value > bound[0] :
            print ("The light level increased suddenly. Sending an SMS.")
            response = sms.send_sms("Someone turned on the lights")
            print("This is the response ",response)
        elif sensor_value < bound[1]:
            print ("The light level decreased suddenly. Sending an SMS.")
            response = sms.send_sms("Someone turned off the lights")
            print("This is the response ",response)
        history_data.append(sensor_value);
    except Exception as e:
        print ("Error",e)
    time.sleep(10)

Hi @koushikdhar08,

To check if the requests library is correctly installed. Please run the below command.

sudo python3

Then it will open the python terminal and inside the python terminal, type the below command and check it it is showing any error.

import requests
requests.request("GET", "http://google.com")

Also in your code, you have not imported the requests library. Please check the below line and comapre it with your code.

import conf, json, time, math, statistics, requests
1 Like