OK so I am trying to come up with a method, maybe somone can help. My terminoligy may be a bit off so please correct me as i am learning (by doing so its as i go)
I have an array which within holds each value found in ['locations'][0]['location_identifier']
I have another array which holds each value found in ['locations'][0]['plant_nickname'] (maybe irrelivent for what i want to do but was trying to spark and idea)
What i want to do is match the correct location_identifier to the coresponding plant_nickname so i can create 4 varibles in indigo for each plant_nickname.
The 4 varibles per plant being something like, plant_nickname+light,moisture,fertilizer,temp.
I then want to popultate each of the varbiles created with the coresponding values.
I cant think how to say location_identifier=plant_nickname reliably.
Once i have that I need to then somehow say, for each location_identifier, pluck the correct vlaue of ['locations'][0]['air_tempreture'][instruction_key] due to how the JSON is formated (see here:
https://flowerpowerdev.parrot.com/projects/flower-power-web-service-api/wiki/Obtain_garden_location_statuses)
Ill keep playing but if anyone can point me in the right direction it would be appriciated.
Oh, the code i have so far which prints both arrays to the log currently and updates 4 static variables (which is nowkind of redundant as i have more than 1 plant, i have 6 now)
- Code: Select all
import datetime
import urllib, urllib2
import simplejson as json
basename = "https://apiflowerpower.parrot.com"
client_id = "user"
client_secret = "secret"
username = "user"
password = "pass"
oauth_bearer = {}
def api_json(url, params, method='GET', headers={}):
request = URLRequest(basename+url, params, method, headers=headers)
request.add_header('Accept-Language', 'en_us')
result = urllib2.urlopen(request)
result_string = result.read()
return json.loads(result_string)
def URLRequest(url, params, method="GET", headers={}):
if method == "POST":
return urllib2.Request(url, headers=headers, data=urllib.urlencode(params))
else:
return urllib2.Request(url + "?" + urllib.urlencode(params),headers=headers)
def garden_summary(key, url):
json_data = api_json(url, {}, headers=oauth_bearer, method='GET')
dump = json.dumps(json_data, indent=4, sort_keys=True)
# Update Indigo Variables
indigo.variable.updateValue(1857995394,json_data['locations'][0]['air_temperature']['instruction_key'])
indigo.variable.updateValue(1539841434,json_data['locations'][0]['fertilizer']['instruction_key'])
indigo.variable.updateValue(202743283,json_data['locations'][0]['light']['instruction_key'])
indigo.variable.updateValue(1190192908,json_data['locations'][0]['soil_moisture']['instruction_key'])
def garden_images(key, url):
json_data = api_json(url, {}, headers=oauth_bearer, method='GET')
dump = json.dumps(json_data, indent=4, sort_keys=True)
# Update Indigo Variables
indigo.variable.updateValue(120879240,json_data['images'][0]['url'])
def create_plant_variable(key, url):
json_data = api_json(url, {}, headers=oauth_bearer, method='GET')
dump = json.dumps(json_data, indent=4, sort_keys=True)
locations = json_data['locations'][0]['location_identifier']
locations1 = [l['location_identifier'] for l in json_data['locations']]
nicename = json_data['locations'][0]['plant_nickname']
plant_nickname = [nickname['plant_nickname'] for nickname in json_data['locations']]
# Update Indigo Variables
for eachlocation in locations1:
indigo.server.log(eachlocation)
for eachnickname in plant_nickname:
indigo.server.log(eachnickname)
# first get OAuth token
result = api_json('/user/v1/authenticate', {'grant_type':'password','client_id':client_id,'client_secret':client_secret,'username':username, 'password':password}, method='POST')
access_token = result['access_token']
oauth_bearer = {'Authorization':'Bearer '+access_token}
# user data : status (garden_locations and sensors) and statuses.
for key,url in (
('api-1.28-status','/sensor_data/v1/garden_locations_status'),
):
garden_summary(key,url)
# user data : images (garden_locations and sensors) and statuses.
for key,url in (
('api-3.05-images','/image/v2/location/user_images'),
):
garden_images(key,url)
# user data : sync (garden_locations and sensors) and statuses.
for key,url in (
('api-1.25-sync','/sensor_data/v2/sync?include_s3_urls=1'),
):
create_plant_variable(key,url)
and prints:
- Code: Select all
Script TkZeaiwxsH1431033160579
Script 8ZVzsz17sx1431032791557
Script FztWqlz34H1431068956616
Script xfJ5A6ZjoC1431033867913
Script BO19Bad6Oj1430424822897
Script u9IG5iNi9m1431115442473
Script Blue Grass
Script Japanese Acer Red
Script Dianthus
Script Bamboo
Script Japanese Acer Green
Script Prunus