Internet of Things Lighting python

From csn
Revision as of 03:41, 16 March 2021 by 20190234 (talk | contribs)
Jump to navigation Jump to search

In this lab, we will learn how to control the lab lighting using a computer. This should reveal some of the amazing possibilities of the IoT. We will learn about this while playing with a little python scripting on Windows.

Turning the lights on and off

The lab you are sitting in contains network-accessible lighting. Look directly above you and make a note of the FIXTURE NUMBER noted one your light. Note the command provided below.

import requests
url = 'http://10.50.41.230/api/override'
fixtureNo = FIXTURENUMBER
json = {"target": "fixture","num": fixtureNo,"intensity": 255,"red": 255,"green": 0,"blue": 0,"temperature": 255,"fade": 1.0,"path": "Default"}
requests.put(url=url,  data=json)
print("Check your LED!")

Copy the lines above into notepad++, and then change the FIXTURENUMBER to the light found on your computer overhead. save the file to your desktop named IOT-LED.py

open command prompt

cd Desktop
python IOT-LED.py

How do you think you could switch the light off? Play with the parameters and ask for help if you need some guidance.

Some Basic Python Programming

The internet of things is all about communicating with other devices and services, this section will continue with python requests and work with response data.

Your instructor will give you your APIKey.

import requests, json
APIkey = ''
CityName = 'Perth'
url = 'http://api.openweathermap.org/data/2.5/weather?q=' + CityName +'&appid=' + APIkey + '&units=metric'
print(url)
response = (requests.get(url=url).json())

print('allData: + response')
print('current:' + str(response['main']['temp']))
print('Temp Max:' + str(response['main']['temp_max']))

Save the file as weather.py

open command prompt

cd Desktop
python weather.py

Tasks

  • Can you modify the program to get the weather for Melbourne?
  • Can you modify the program to get the temp_min?
  • Can you modify the program to see if you can print the wind speed?

python IF statements

We are going to print out how warm it is base on the information we got.

import requests, json
APIkey = ''
CityName = 'Perth'
url = 'http://api.openweathermap.org/data/2.5/weather?q=' + CityName +'&appid=' + APIkey + '&units=metric'
print(url)
response = (requests.get(url=url).json())

print('allData: + response')
print('current:' + str(response['main']['temp']))
print('Temp Max:' + str(response['main']['temp_max']))

temp = int(response['main']['temp'])

if temp > 30:
   print('hot')
elif temp > 24:
   print('warm')
else:
   print('cool')

Tasks

  • Add an if statement to print 'Freezing!' when below 5 degrees
  • Test this out by changing city name to Antarctica

Change the LED base on the current temperature

Now we need to add the two scripts together, one to get the weather and another to change the colour, blue for cold, greed for good, red for hot


import requests, json
APIkey = ''
CityName = 'Antarctica'
url = 'http://api.openweathermap.org/data/2.5/weather?q=' + CityName +'&appid=' + APIkey + '&units=metric'
print(url)
response = (requests.get(url=url).json())

print('allData: + response')
print('current:' + str(response['main']['temp']))
print('Temp Max:' + str(response['main']['temp_max']))

temp = int(response['main']['temp'])
fixtureNo = 
url = 'http://10.50.41.230/api/override'

if temp > 30:
   json = {"target": "fixture","num": fixtureNo,"intensity": 255,"red": 255,"green": 0,"blue": 0,"temperature": 255,"fade": 1.0,"path": "Default"}
   requests.put(url=url,  data=json)
elif temp > 24:
   json = {"target": "fixture","num": fixtureNo,"intensity": 255,"red": 0,"green": 255,"blue": 0,"temperature": 255,"fade": 1.0,"path": "Default"}
   requests.put(url=url,  data=json)
else:
   print('cool')

Challenging Tasks

  • Can you modify the script to turn the LED blue if it is cold?
  • Can you modify the script to fade for a longer time if it is windy?
  • Can you modify the script so that if the sky is cloudy have the intensity (brightness) lower?