Erweiterungen
Standby (Suspend)
Diese Funktionalität dient dazu die Kamera bei Inaktivität in einen Zustand zu bringen, in dem sie nicht mehr die Personen im Raum filmt und dies für ebenjene Personen ersichtlich ist. Dazu wird gespeichert, wann der letzte Steuerbefehl gesendet wurde. Wird für 10 Minuten kein Steuerbefehl vorgenommen, bewegt sich die Kamera in eine Position, in der nur noch eine Ecke der Verkleidung auf dem Bild zu sehen ist. Somit wird gewährleistet, dass für im Raum befindliche Personen erkennbar ist, ob sie gefilmt werden, und dass der Wechsel zwischen Filmen und nicht-Filmen nicht so abrupt ist, da die Kamera nur recht langsam bewegt werden kann.
Dies wird im moveserver durch die folgende Subroutine abgedeckt:
1def suspend(move_lock,last_updated,q): 2 global curr4, curr17 3 suspendtime = 600 # time in seconds after that the raspi will "suspend" 4 while 1: 5 sleep(1) 6 while curr4.value > 1000: 7 if last_updated.value + suspendtime < time(): 8 move_lock.acquire() 9 curr4.value, curr17.value = move(curr4.value, curr17.value, "right") 10 move_lock.release() 11 else: 12 break 13 sleep(.25) 14 while curr17.value > 1000: 15 if last_updated.value + suspendtime < time(): 16 move_lock.acquire() 17 curr4.value, curr17.value = move(curr4.value, curr17.value, "down") 18 move_lock.release() 19 else: 20 break 21 sleep(.25)
Reboot
Da es gelegentlich zu Abstürzen des Ethernetcontrollers kam und damit folglich keine Zugriffe auf den Server mehr möglich waren, haben wir diese Funktion implementiert. Diese überprüft in regelmäßigen Abständen, ob die Internetverbindung noch besteht und startet den Raspberry gegebenenfalls neu, damit die Verbindung wiederhergestellt wird.
Das Skript, das von einem cronjob alle paar Minuten ausgeführt wird, findet sich hier.