@entropie: Da hängt sich nichts auf und der Fehler kommt auch nicht am Ende, denn das Programm läuft erst gar nicht. Der `IndentationError` kommt nämlich schon vom Compiler und liegt daran, dass die Einrückung falsch ist.
Du machst da *so* viel falsch oder zumindest sehr gruselig, dass ich schon fast geneigt bin an einen Troll zu glauben.
Bitte arbeite ein Grundlagentutorial durch, zum Beispiel das in der Python-Dokumentation. Danach oder parallel dazu ist der
Style Guide for Python Code einen Blick wert.
Dann entwickle Programme nicht, in dem Du erst *alles* runterschreibst und dann erst versuchst ob es läuft, sondern unterteile die Entwicklung in einzelne Abschnitte und teste jeweils ob das Programm bis dahin läuft. Wie gesagt, sind da so viele komische Sachen drin, das hätte sich gar nicht erst unbemerkt soweit anhäufen dürfen.
Vergiss das `goto`-Modul. Das war ein Aprilscherz. Es ”funktioniert” zwar, aber das viele moderne Programmiersprachen kein GOTO haben ist *Absicht*.
Die ``while``-Schleife in `countdown()` könnte man einfacher mit einer ``for``-Schleife ausdrücken.
Python hat einen eigenen Typ für Wahrheitswerte. Endlosschleifen schreibt man verständlicher als ``while True:``.
``try`` kann nicht für sich alleine stehen, da gehört mindestens ein ``except`` dazu. Wenn Du das nicht weisst, wie bist Du dann überhaupt darauf gekommen das dort hinzuschreiben? ``except:`` sollte übrigens nie ohne eine konkrete Ausnahme verwendet werden, denn dann werden *alle* ”behandelt”, also auch solche mit denen man überhaupt nicht rechnet und die bekommt man dann nicht zu Gesicht. Da macht die Fehlersuche dann keinen Spass.
Um einen Daemon aus dem Prozess zu machen würde ich das `daemonize`-Modul verwenden, statt sich selber um diese Details kümmern zu müssen. Debian-Paketname ist `python-daemonize`.
Das ``if __name__ == '__main__':``-Idiom hast Du anscheinend nicht verstanden beziehungsweise wie der Programmablauf aussehen würde, wenn das anders eingerückt wäre. Denn entweder käme das *nach* einer leeren `main()`-Funktion oder *in* der `main()`-Funktion, was entweder ein Syntaxfehler oder nicht sinnvoll ist. Das ist auch etwas was Dir aufgefallen wäre, wenn Du das Programm während der Entwicklung schon einmal ausprobiert hättest.
`os.system()` sollte man nicht verwenden. Alle möglichen Low-Level-Arten externe Programme zu starten sind durch das `subprocess`-Modul abgedeckt. Und da bitte *nicht* ``shell=True`` beim Aufruf benutzen, denn dan handelt man sich die gleichen Probleme wie bei `os.system()` ein. Aus dem ``fbset``-Aufruf müsste man dann zwei separate Aufrufe machen.
Das `msvcrt`-Modul stellt Funktionen aus der Windows-Systembibliothek ``msvcrt.dll`` zur Verfügung. Das gibt es auf Deinem Raspberry Pi also nicht. Das würde so sowieso nicht funktionieren, denn ein Daemon ist ja nicht mehr mit dem Terminal verbunden aus dem er gestartet wurde, also kann man mit dem auch nicht mehr einfach so Tastatureingaben lesen.
Importe stehen übrigens üblicherweise oben im Modul, damit man leichter sieht wovon es abhängt, und man nicht das selbe Modul unnötigerweise mehrfach importiert.