So dele, seit Anfang diesen Jahres bastle ich mehr oder weniger regelmäßig in meiner Freizeit an einem "Schloss" für ein Baumhaus.
Die Idee: Der Arduino bekommt vom Webserver einen Code als SMS gesendet, der ausgewertet wird. Die SMS enthält ein bisschen Text (geheimer Prefix! Aus Securitysicht natürlich ein Witz. ) und hinterher dann den Code. Dieser Code ist dann solange gültig, bis irgendwann eine Lösch SMS kommt. Der Code wird via Keypad eingegeben: Ist der Code richtig, öffnet sich ein Relais und damit das Schloss.
Sobald aber nun ein Code drin ist, ist der Arduino im "Code Eingabe" Modus und leider gibt es keinen Interrupt vom GSM Modul, der mir mitteilen würde, dass gerade eine SMS gekommen ist.
Deshalb hängt sich der Arduino regelmäßig auf und nach ein paar Mal testen kann das Modul keine SMS mehr empfangen. Sprich die Idee ist zwar eigentlich nicht schlecht, aber momentan viel zu unzuverlässig.
Das kann nun an mehreren Sachen liegen:
1. Die Hardware ist doof. (Würde ich aber fast mal ausschließen wollen, da es selbst mit einem Original Arduino nicht zuverlässig funktioniert!)
2. Ich hab einen Mist programmiert (dabei hab ich die logischen Dinge schon in Funktionen ausgelagert, damit sie nur dann aufgerufen werden, wenn es explizit erforderlich ist)
3. Das GSM macht generell zu viele Probleme.
Vermutlich eine Mischung aus allen 3 Punkten + X!
Irgendwann stelle ich vielleicht den Code nochmal online. Muss dazu aber noch ein paar Dinge wie PIN und Prefix entfernen!
Aber es gibt ja noch andere Ideen: Man nimmt statt einem GSM Modul ein RTC Modul, mit dem man immer ein aktuelles Datum hat. Anhand vom Datum kann man einen Code generieren (ein paar Mal multiplizieren, damit es nicht ganz so offensichtlich ist.) und einem Teil für die Anzahl der Tage. Hinterher kann dann der Besucher einmal den Code eingeben und er wird solange gültig sein, bis irgendwann die Anzahl der Tage überschritten wurde. Das sollte relativ einfach und zuverlässig funktionieren. Der Code Generierungsalgorithmus ist dann einmal auf dem Arduino und einmal auf dem Webserver. Beide sollten gegen Reverse Engineering einigermaßen sicher sein. Zumindest vom Arduino fällt mir gerade keine einfach Methode ein.
Alternative 2: Man generiert einen QR-Code und liest diesen dann per Kamera an einem Raspberry Pi aus. Das hätte auch Stil und wäre bequem. Wie zuverlässig es funktioniert bleibt mal dahin gestellt. Wenn ich ab und an mal ein Paket bekomme, dass in der Packstation gelagert wird war es oft mühselig den normalen Barcode erfolgreich einscannen zu lassen. Aber wahrscheinlich hab ich es nur nicht im richtigen Winkel hingehoben oder bin einfach zu doof. Nach Quadrilliarden Versuchen hat es aber dann doch immer geklappt.
Soviel mal zu diesem Thema. Näheres dann, wenn alles klappt. Den Code werde ich dann vermutlich mal einscannen. Den Algorithmus aus Gründen der nationalen Sicherheit natürlich nicht! Das dürfen findige Hacker selbst herausfinden! So schwer wird es aber nicht sein.
Ganz aufgeben möchte ich das GSM Modul noch nicht. Denn zumindest der SMS Versand funktioniert recht zuverlässig. Also könnte man diese Funktion in Form einer Alarmsicherung mit Reedkontakt noch gut verwenden! Jetzt muss aber erstmal ein funktionerendes Schloss her, danach sehen wir weiter! Der Rest ist eher nettes Beiwerk!
Als dritte Alternative kann man sich auch einfach "Android meets Arduino" ansehen. Die Smartphones sind nicht mehr teuer und haben schon einiges an Sensoren dabei, da wäre es ganz nett wenn man diese auch nutzen könnte.