Difference between revisions of "Internet of Things Lighting"

From csn
Jump to navigation Jump to search
(Created page with "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, as well as some of the potential...")
 
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
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, as well as some of the potential for misuse if security is not handled correctly. We will learn about this, while playing with a little bash scripting on Ubuntu Linux.
+
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, as well as some of the potential for misuse if security is not handled correctly. We will learn about this while playing with a little bash scripting on Ubuntu Linux.
  
 
== Turning the lights on and off ==
 
== Turning the lights on and off ==
  
The lab you are sitting in contains network accessable lighting. Look directly above you and make a note of the FIXTURE NUMBER noted one your light. Note the command provided below.
+
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.
  
 
  curl -i -X PUT -H 'Content-Type: application/json' -d '{"target": "fixture","num": '''FIXTURENUMBER''',"intensity": '''255''',"red": '''255''',"green": '''0''',"blue": '''0''',"temperature": '''255''',"fade": '''1.0''',"path": "Default"}' http://10.50.41.230/api/override
 
  curl -i -X PUT -H 'Content-Type: application/json' -d '{"target": "fixture","num": '''FIXTURENUMBER''',"intensity": '''255''',"red": '''255''',"green": '''0''',"blue": '''0''',"temperature": '''255''',"fade": '''1.0''',"path": "Default"}' http://10.50.41.230/api/override
  
Copy the line above into a text editor, and then change the '''FIXTURENUMBER''' to the light found on your computer overhead. Once you have edited this in a text editor, Open a terminal, the black box on the side of your Desktop. Copy and paste the edited command from your text editor into the terminal. Did your light turn on? What was the colour? Change the values to make the light your favourite colour.
+
Copy the line above into a text editor, and then change the '''FIXTURENUMBER''' to the light found on your computer overhead. Once you have edited this in a text editor, Open a terminal, the black box on the side of your Desktop. Copy and paste the edited command from your text editor into the terminal. Did your light turn on? What was the colour? Change the values to change the light to your favourite colour.
  
 
How do you think you could switch the light off? Play with the parameters and ask for help if you need some guidance.
 
How do you think you could switch the light off? Play with the parameters and ask for help if you need some guidance.
Line 42: Line 42:
 
*Can you modify the program to print ten Hello worlds?
 
*Can you modify the program to print ten Hello worlds?
 
*Can you modify the program to see if you can turn the light on and off every second?  
 
*Can you modify the program to see if you can turn the light on and off every second?  
*After you have done this, can you modify the program to change the color every second?
+
*After you have done this, can you modify the program to change the colour every second?
  
 
== Measuring the CPU temperature ==
 
== Measuring the CPU temperature ==
Line 48: Line 48:
 
We would like the operation of the fan to turn on to cool the CPU on your mini computer. The following command will show you the current temperature of your CPU
 
We would like the operation of the fan to turn on to cool the CPU on your mini computer. The following command will show you the current temperature of your CPU
  
  cat /sys/class/thermal/thermal_zone1/temp
+
  cat /sys/class/thermal/thermal_zone2/temp
  
 
Write down the CPU temperature at idle time.  
 
Write down the CPU temperature at idle time.  
Line 57: Line 57:
 
#!/bin/bash
 
#!/bin/bash
  
temp=$(cat /sys/class/thermal/thermal_zone1/temp)
+
temp=$(cat /sys/class/thermal/thermal_zone2/temp)
 
echo $temp
 
echo $temp
 
</pre>
 
</pre>
Line 82: Line 82:
 
#!/bin/bash
 
#!/bin/bash
  
temp=$(cat /sys/class/thermal/thermal_zone1/temp)
+
temp=$(cat /sys/class/thermal/thermal_zone2/temp)
 
n=1000
 
n=1000
 
temp=$((temp/n))
 
temp=$((temp/n))

Latest revision as of 04:51, 7 December 2020

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, as well as some of the potential for misuse if security is not handled correctly. We will learn about this while playing with a little bash scripting on Ubuntu Linux.

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.

curl -i -X PUT -H 'Content-Type: application/json' -d '{"target": "fixture","num": FIXTURENUMBER,"intensity": 255,"red": 255,"green": 0,"blue": 0,"temperature": 255,"fade": 1.0,"path": "Default"}' http://10.50.41.230/api/override

Copy the line above into a text editor, and then change the FIXTURENUMBER to the light found on your computer overhead. Once you have edited this in a text editor, Open a terminal, the black box on the side of your Desktop. Copy and paste the edited command from your text editor into the terminal. Did your light turn on? What was the colour? Change the values to change the light to your favourite colour.

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 Bash Programming

This section will introduce you to looping in bash. Open a new text editor window and paste in the following code.

#!/bin/bash

for i in {1..5}
do
  echo "Hello World!"
  sleep 1s
done

Save the file as:

lighting.sh 

Then ensure that the file has execute permissions by typing the following into your terminal window:

chmod 777 lighting.sh

Then run the program in the terminal with the following command:

./lighting.sh

Press Ctrl+C to stop the program when you have seen enough hello worlds.

Tasks

  • Can you modify the program to print ten Hello worlds?
  • Can you modify the program to see if you can turn the light on and off every second?
  • After you have done this, can you modify the program to change the colour every second?

Measuring the CPU temperature

We would like the operation of the fan to turn on to cool the CPU on your mini computer. The following command will show you the current temperature of your CPU

cat /sys/class/thermal/thermal_zone2/temp

Write down the CPU temperature at idle time.

Read the following code and see if you can work out what is going on. Open a new file, paste the code below and save it as temperature_visualisation.sh

#!/bin/bash

temp=$(cat /sys/class/thermal/thermal_zone2/temp)
echo $temp

Tasks

  • Use your knowledge of looping from the previous section to continually check and print the temperature for 2 minutes.
  • See if you can integrate the line below to print a more meaningful temperature:
n=1000
temp=$((temp/n))

Generating CPU load

Open a second terminal window, while your previous code is running and paste in the following command to generate some load on your CPU

stress --cpu 8

How hot does your CPU get? Hit ctrl+c to close this window.

If statements

Computer programs can take different actions/paths based on circumstances. Run the following code:

#!/bin/bash

temp=$(cat /sys/class/thermal/thermal_zone2/temp)
n=1000
temp=$((temp/n))
echo $temp

if [ $temp -gt 60 ]
then
 echo "Its really hot"
elif [ $temp -gt 50 ]
then
 echo "Its sorta hot"
elif [ $temp -gt 40 ]
then
 echo "Its coolish "
elif [ $temp -gt 30 ]
then
 echo "Its cool"
else
 echo "Dunno"
fi

You can change/test the temperature of the CPU using the load command used earlier.

Challenging Tasks

  • Can you modify the code to change to a different colour based on the temperature, you can also play with the fade?
  • Can you then loop over this code block for 10 minutes or 600 seconds, it may be helpful to use the sleep command again and retest the temperature every second?