Extradoei

From RevSpace
Jump to navigation Jump to search

Wat

Extra plekken (bij de uitgangen) waar je je iButton kunt uitchecken. Niet bedraad via doorduino's, maar draadloos via een esp32 die op wifi zit.

Beveiliging

Geen. Minstens 1 van de extradoeis zit buiten het beveiligde domein en is makkelijk te manipuleren voor mensen die geen toegang hebben tot de space. We kiezen er daarom voor om de secret van de iButton niet te gebruiken, maar alleen de ID, als makkelijke manier om te voorkomen dat de secret ooit verwerkt hoeft te worden door de esp32. De challenge/response via wifi laten gaan zou een onhandige latency opleveren.

De ID gaat onversleuteld via het netwerk. De extradoei zelf heeft geen ACL, en dus ook geen namenlijst, en is afhankelijk van een extern script dat bepaalt of de iButton bekend is.

Hardware

  • iButton-reader
  • doosje
  • 7-segment-display met TM1637
  • esp32

Firmware

Software

Het scriptje dat iButton-ACL's naar de doorduino's pusht, "push.sh", maakt ook een kopie van de ACL voor gebruik door "doorduino-mqtt.pl". In deze kopie worden de secrets en comments weggelaten. Het script "doorduino-mqtt.pl" stuurt het resultaat van de ID-lookup terug naar de extradoei en maakt een doorduino-achtig MQTT-bericht voor de pseudodeur "extradoei" met de naam die bij de iButton geregistreerd is, wat daarna op de reguliere manier wordt verwerkt (ook door "doorduino-mqtt.pl").

iButtons met namen die beginnen met een $ zijn uitgezonderd van inchecken en worden dus voor dit doel hetzelfde behandeld als iButtons die niet in de ACL staan.

MQTT

  • extradoei stuurt hexadecimaal iButton ID naar revspace-local/doorduino/extradoei/123456/unlocked, waarbij 123456 het hardware-ID van de extradoei zelf is.
    • doorduino-mqtt.pl stuurt "ok" of "bad" naar revspace-local/doorduino/extradoei/123456/result
    • doorduino-mqtt.pl stuurt, als de iButton ok was, de bijbehorende naam naar revspace-local/doorduino/extradoei/unlocked
    • doorduino-mqtt.pl ontvangt het bericht van revspace-local/doorduino/extradoei/unlocked weer, en handelt het uitchecken af