Tutorial RevPiTimer

In diesem Tutorial wollen wir gemeinsam mit Dir einen virtuellen Timer für das RevPi Core konfigurieren.

In PiCtory findest Du das virtuelle Gerät „RevPi Timer“. Der „RevPi Timer ist eine Zeitschaltung, die minutengenau und auf wöchentlicher Basis ein- und ausschaltet. Pro RevPiTimer stehen Dir 16 Schaltzeiten zur Verfügung. Du kannst jedoch auch mehrere RevPi Timer nutzen falls dir 16 Schaltzeiten nicht genügen.

Wir stellen jetzt gemeinsam folgende Schaltzeiten ein:

#TimerEinschaltenAusschalten
TagUhrzeitTagUhrzeit
1Mo – Fr07:00Mo – Fr17:00
2Sa10:00Sa10:15

 

RevPiTimer Download
RevPiTimer Download
  • Entpacke die Datei und befolge die Anleitung zur Installation der readme.txt Datei

RevPiTimer Installationsanleitung
  • Gib die IP-Adresse Deines RevPi Cores in die Adresszeile Deines Browsers ein.

Das Anmelde-Fenster öffnet sich.

pictory-anmelden
  • Melde Dich mit dem Benutzernamen „admin“ an.
  • Gib Dein Passwort ein. Du findest es auf dem Aufkleber an der Seite Deines RevPi Cores.
  • Klicke auf „Login“

Du siehst jetzt den aktuellen Gerätestatus Deines RevPi Cores.

Apps Reiter Screenshot
  • Klicke auf das Register „Apps“.
  • Klicke auf den Start-Button hinter dem Eintrag „PiCtory“, um PiCtory zu öffnen.

PiCtory öffnet sich.

  • Wähle das virtuelles Gerät „RevPiTimer“ aus dem Gerätekatalog
  • Ziehe es per Drag & Drop auf das Configuration Board.

PiCtory Konfiguration
  • Klicke auf „File -> Save“. Damit speicherst Du die Konfiguration.

Konfiguration Speichern
  • Klicke auf „Tools -> Reset Driver“. Damit startest Du den Treiber neu.

Treiber Reset

Timer programmieren

Jeder Timer besteht aus einer Einschalt- und einer Ausschaltzeit.

TimerVariableBedeutung
1T1_ON_active_dayEinschalten Bitfeld: an Tagen und aktiv oder inaktiv
1T1_ON_hourEinschalten Stunden 00 bis 24
1T1_ON_minuteEinschalten Minuten 00 bis 59
1T1_OFF_active_dayAusschalten Bitfeld: an Tagen und aktiv oder inaktiv
1T1_OFF_hourAusschalten Stunden 00 bis 24
1T1_OFF_minuteAusschalten Minuten 00 bis 59
2T2_ON_active_dayEinschalten Bitfeld: an Tagen und aktiv oder inaktiv
2T1_ON_hourEinschalten Stunden 00 bis 24
2T1_ON_minuteEinschalten Minuten 00 bis 59
2T1_OFF_active_dayAusschalten Bitfeld: an Tagen und aktiv oder inaktiv
2T1_OFF_hourAusschalten Stunden 00 bis 24
2T1_OFF_minuteAusschalten Minuten 00 bis 59
16T16_ON_active_dayEinschalten Bitfeld: an Tagen und aktiv oder inaktiv

 

Das Bitfeld für die Tage und die Aktivschaltung ist folgendermaßen codiert

T1_ON_active_day und T1_OFF_active_day

Bit76543210
WertAktivSoSaFrDoMiDiMo

Für unser Beispiel müssen wir die folgenden Werte eintragen:

Timer1

Tage: Mo – Fr + Aktivschaltung, Uhrzeit Zeit: 7:00 bis 17:00 Uhr

Bit76543210
WertAktivSoSaFrDoMiDiMo
Mo-Fr10011111

Daraus ergibt sich der Binärwert „10011111“. Dieser entspricht dem Dezimalwert „159“. Diesen Wert müssen wir später ins Prozessabbild schreiben.

Für den Timer1 musst Du also die folgenden Werte ins Prozessabbild schreiben

VariableWert
T1_ON_active_day159
T1_ON_hour7
T1_ON_minute0
T1_OFF_active_day159
T1_OFF_hour17
T1_OFF_minute0

Das kannst du z.B. mit dem Tool „piTest“ machen. Öffne dazu die Kommandozeile.

Schreibe folgende Kommandos:

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

Tage: Samstag + Aktivschaltung, Uhrzeit Zeit: 10:00 bis 10:15 Uhr

Bit76543210
WertAktivSoSaFrDoMiDiMo
10100000

Daraus ergibt sich der Binärwert „10100000“. Dieser entspricht dem Dezimalwert „160“.

Für den Timer2 musst Du also die folgenden Werte ins Prozessabbild schreiben

VariableWert
T2_ON_active_day160
T2_ON_hour10
T2_ON_minute0
T2_OFF_active_day160
T2_OFF_hour10
T2_OFF_minute15

Gib in der Kommandozeile folgende Werte ein:

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

Timer Events abfragen

Ob ein Timer Event momentan aktiv ist, steht in der Variable „TimerStatus“. Das ist ein Bitfeld mit 16 Bits.

Ist das Bit gesetzt, ist der Timer an. Ist das Bit nicht gesetzt, ist der Timer aus.

TimerStatus

Bit76543210
TimerNrTimer8Timer7Timer6Timer5Timer4Timer3Timer2Timer1
Bit15141312111098
TimerNrTimer16Timer15Timer14Timer13Timer12Timer11Timer10Timer9

Um  ein Programm zu schreiben, das auf den Timer1 reagiert, kannst du z.B. folgendes tun:

Finde heraus, wo das Bit von Timer1 im Prozessabbild versteckt ist:

piTest -v TimerStatus

variable name: TimerStatus

offset: 11

length: 16

bit: 0

Aha! Also im Byte 11, im ersten Bit!

Frage dieses Bit ab:

piTest -g 11,0

Get bit 0 at offset 11. Value 0

Wenn du nur den Wert ohne Text ausgeben möchtest, damit du diesen z.B. in einem Skript verarbeiten kannst, dann kannst du diesen auch einfach so abfragen:

piTest –q -g 11,0

0

Timer inaktiv schalten

Timer Inaktiv schalten bedeutet, dass die Schaltzeiten nicht überschrieben werden, aber nicht ausgeführt werden.

Wenn du einen Timer inaktiv schalten möchtest dann kannst du das machen, indem du das jeweilige „Aktiv“ Bit in der Variable „T1_ON_active_day“ und „T1_OFF_active_day“ löschst. Das ist das Bit 7.

Finde heraus, wo sich unsere Variablen im Prozessabbild befinden:

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

Die Offsets sind also die Folgenden:

T1_ON_active_day: 13

T1_OFF_active_day: 16

Schalte den Ein- und Ausschaltzeitpunkt inaktiv:

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

Varianten

Du möchtest nur einen Einschaltzeitpunkt definieren aber keinen Ausschaltzeitpunkt? Kein Problem! Setze das „Aktiv-Bit“ nur beim Einschaltzeitpunkt und lasse es beim Ausschaltzeitpunkt weg.

Im Beispiel für Timer1 kannst du das z. B. so erledigen:

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