In letzter Zeit haben wir einige IoT Showcases gebaut und dabei häufig den Raspberry Pi eingesetzt. Leider kam es da immer wieder zu Problemen und der Raspberry hat manchmal nicht mehr gebootet. Die Vermutung war, dass das möglicherweise durch ein Ausschalten ohne vorheriges Herunterfahren zusammenhängt. Um diesen Verdacht aber zu erhärten und vor allem herauszufinden, in welchen Konstellationen das Problem vermieden werden kann, stellte sich schnell heraus, dass ein manuelles Unterbrechen der Stromversorgung nicht wirklich praktikabel ist um statistisch belastbare Wiederholungsraten zu erzielen. Deshalb musste eine Automatisierung her.

Der Aufbau dazu ist recht einfach. Wir haben einen Raspberry (Power Switch), der über seinen GPIO ein Relais steuert. Das Relais wiederum schaltet einen Mehrfachstecker in dem nun unsere Testobjekte angesteckt werden können. So war es möglich, auch mehrere Devices mit unterschiedlichen Konfigurationen parallel zu testen. Der  Raspberry Power Switch kann über eine REST Schnittstelle mit den Test-Devices kommunizieren und so feststellen, ob diese hochgefahren sind. Nachdem die Test-Devices alle gebootet sind, wartet er eine zufällige Zeit zwischen 0 und 5 Minuten und schaltet dann den Strom ab. Danach wartet er wieder, bis alle Devices hochgefahren sind.

Ist ein Device nach einer gewissen Zeitspanne nicht verfügbar, dann wird das entsprechend in einem Log vermerkt. Tatsächlich haben wir zwei Fehlerszenarien festgestellt. Teilweise hat ein Reboot geholfen und das Device hat wieder funktioniert, teilweise hat nur ein erneutes Flashen der SD-Karte geholfen.

Office Lens_20160526_004153_processed

Mit Hilfe dieses Testaufbaus konnten wir nun verschiedene Testreihen mit verschiedenen Devices und Konfigurationen durchführen und haben ausreichend viele Wiederholungen erzielen können – etwas das ohne Automatisierung nicht möglich gewesen wäre. Für mich ein schönes Beispiel, wie wichtig Testautomatisierung tatsächlich ist, auch wenn es auf den ersten Blick nicht möglich erscheint.

Tatsächlich haben unsere Tests ergeben, dass der Raspberry Pi Probleme mit Stromunterbrechungen hat, bis hin zu einem Zustand, in dem er sich gar nicht mehr booten lässt. Die Probleme sind mit dem Raspberry Pi 2 und Raspberry Pi 3 mit verschiedenen SD Karten aufgetreten, zumindest mal in Verbindung mit Windows 10 IoT. Tests mit anderen Betriebssystemen laufen aktuell noch. Das Verhalten ist natürlich nicht wirklich ideal für ein IoT Device das ja irgendwo ohne Wartung zuverlässig seinen Dienst verrichten sollte. Deutlich robuster hat sich dagegen das Dragonboard 410C verhalten. Damit konnten wir diese Probleme aktuell nicht feststellen

WIN_20160604_14_58_51_Pro