Tutorial RevPiTimer

In this tutorial we want to configure a virtual timer for the RevPi Flat.

The virtual device “RevPiTimer” is available in PiCtory . RevPiTimer is a timer clock that switches on and off to the minute and on a weekly basis. There are 16 switching times available for each RevPiTimer. However, you can also use several RevPiTimer if 16 switching times are not sufficient.

We set the following switching times:

#Timer

Switch on

Switch off

Day

Time

Day

Time

1

Mon – Fri

7:00 AM

Mon – Fri

5:00 PM

2

Sat

10:00 AM

Sat

10:15 AM

  • Open your web browser.
  • Go to https://revolutionpi.de/tutorials/downloads
  • Unzip the file and follow the instructions in the readme.txt file for installation.
  • Enter the IP address of your RevPi Flat in the address bar of your browser.

The logon window opens.

  • Log on with the username “admin”.
  • Enter your password. You can find it on the sticker on the side of your RevPi Flat.
  • Click on “Login”.

You can now see the current device status of your RevPi Flat.

  • Click on the “Apps” tab.
  • Click on the start button behind the entry “PiCtory” to open PiCtory.
  • PiCtory opens.
  • Select the virtual device “RevPiTimer” from the device catalog.
  • Drag and drop it onto the configuration board.
  • Click on “File -> Save as”. This saves the configuration.
  • Click on “Tools -> Reset Driver”. This restarts the driver.

Programming the Timer

Each timer consists of a switch-on time and a switch-off time.

Timer

Variable

Function

1

T1_ON_active_day

Switch on bit field: on days and active or inactive

1

T1_ON_hour

Switch on hours 00 to 24

1

T1_ON_minute

Switch on minutes 00 to 59

1

T1_OFF_active_day

Switch off bit field: on days and active or inactive

1

T1_OFF_hour

Switch off hours 00 to 24

1

T1_OFF_minute

Switch off minutes 00 to 59

2

T2_ON_active_day

Switch on bit field: on days and active or inactive

2

T1_ON_hour

Switch on hours 00 to 24

2

T1_ON_minute

Switch on minutes 00 to 59

2

T1_OFF_active_day

Switch off bit field: on days and active or inactive

2

T1_OFF_hour T1_OFF_hour

Switch off hours 00 to 24

2

T1_OFF_minute

Switch off minutes 00 to 59

16

T16_ON_active_day

Switch on bit field: on days and active or inactive

The bit field for days and activation is coded as follows:

T1_ON_active_day und T1_OFF_active_day

Bit

7

6

5

4

3

2

1

0

Value

Active

Sun

Sat

Fri

Thu

Wed

Tue

Mon

In our example we need to enter the following values:

Timer1

Days: Mon – Fri + activation, time: 7:00 AM till 5:00 PM

Bit

7

6

5

4

3

2

1

0

Value

Active

Sun

Sat

Fri

Thu

Wed

Tue

Mon

Mon – Fri

1

0

0

1

1

1

1

1

This results in the binary value “10011111”. This corresponds to the decimal value “159”. This value must be written to the process image later on.

Therefore, following values have to be written into the process image for Timer1:

Variable

Value

T1_ON_active_day

159

T1_ON_hour

7

T1_ON_minute

0

T1_OFF_active_day

159

T1_OFF_hour

17

T1_OFF_minute

0

You can do this for example using the tool “piTest”. Open the command line.

  • Enter the following commands:

piTest –w T1_ON_active_day,159

piTest –w T1_ON_hour,7

piTest –w T1_ON_minute,0

piTest –w T1_OFF_active_day,159

piTest –w T1_OFF_hour,17

piTest –w T1_OFF_minute,0

Timer2

Days: Saturday + activation, time: 10:00 AM till 10:15 AM

Bit

7

6

5

4

3

2

1

0

Value

Active

Sun

Sat

Fri

Thu

Wed

Tue

Mon

Mon – Fri

1

0

1

0

0

0

0

0

This results in the binary value “10100000”. This corresponds to the decimal value “160”.

Therefore, following values have to be written into the process image for Timer2:

Variable

Value

T1_ON_active_day

160

T1_ON_hour

10

T1_ON_minute

0

T1_OFF_active_day

160

T1_OFF_hour

10

T1_OFF_minute

15

  • Enter the following values in the command line:

piTest –w T2_ON_active_day,160

piTest –w T2_ON_hour,10

piTest –w T2_ON_minute,0

piTest –w T2_OFF_active_day,160

piTest –w T2_OFF_hour,10

piTest –w T2_OFF_minute,15

Query Timer Events

The variable “TimerStatus” indicates whether a timer event is currently active. This is a bit field with 16 bits.

If the bit is set, the timer is on. If the bit is not set, the timer is off.

TimerStatus

Bit

7

6

5

4

3

2

1

0

Timer No.

Timer 8

Timer 7

Timer 6

Timer 5

Timer 4

Timer 3

Timer 2

Timer 1

Mon – Fri

15

14

13

12

11

10

9

8

Timer No.

Timer 16

Timer 15

Timer 14

Timer 13

Timer 12

Timer 11

Timer 10

Timer 9

To write a program that responds to Timer1, you can do the following, for example:

Find out where the bit of Timer1 is located in the process image:

piTest -v TimerStatus

variable name: TimerStatus

offset: 11

length: 16

bit: 0

There you go! It is in byte 11, in the first bit!

  • Query this bit:

piTest -g 11,0

Get bit 0 at offset 11. Value 0

If you only want to output the value without text for processing it in a script, you can simply query it like this:

piTest –q -g 11,0

0

Set Timer Inactive

Switching the timer inactive means that the switching times are not overwritten but also not executed.

If you want to disable a timer you can do this by deleting the respective “Active” bit in the variable “T1_ON_active_day” and “T1_OFF_active_day”. It is bit 7.

Find the variables in the process image:

piTest -v T1_ON_active_day

variable name: T1_ON_active_day

offset: 13

length: 8

bit: 0

piTest -v T1_OFF_active_day

variable name: T1_OFF_active_day

offset: 16

length: 8

bit: 0

The offsets are therefore as follows:

  • T1_ON_active_day: 13
  • T1_OFF_active_day: 16
  • Set switch-on and switch-off time inactive:

piTest -s 16,7,0

Set bit 7 on byte at offset 16. Value 0

piTest -s 13,7,0

Set bit 7 on byte at offset 13. Value 0

Variants

You only want to define a switch-on time, but no switch-off time? No problem! Set the “active bit” only at the switch-on time and omit it at the switch-off time.

In the example for Timer1 you can change it like this:

piTest -s 16,7,1

Set bit 7 on byte at offset 16. Value 1

piTest -s 13,7,0

Set bit 7 on byte at offset 13. Value 0