Access Control System

Architecture Design

Current

Current

In short, I used Home Assistant to bind Raspberry Pi and HomeKit service, link rolling door with relay by GPIO.

To prevent error opening, lock operating in LAN by HomeKit  

Next

  • Android Support
  • Slack Message Integration
  • No VPN anymore

- Very easy

⇢ Decoupling HomeKit

⇢ Add more location awareness authorization

Location Awareness

GPS

GPS

Location Awareness

LAN / Mac Address

Use VPN / Mac Address is changable

Location Awareness

built in @ Raspberry Pi 3 / 4

Future

issue OTP

Request open with OTP

Generic Access Profile

Role

Peripheral

Central

mostly low power devices

mostly smart phone

Exchangable

Connection

https://learn.adafruit.com/introduction-to-bluetooth-low-energy?view=all#gatt

Advertising Message

  • Connectionless
  • Unreliable
  • Asynchronous
  • Broadcast
  • Unidirectional

Broadcast

One peripheral device can broadcast message to unlimited central devices

https://learn.adafruit.com/introduction-to-bluetooth-low-energy?view=all#gatt

Pairing / Connection

  • Reliable
  • Bidirectional
  • Unicast

Piconet

Each peripheral device connected to one central at same time. Up to 7 peripheral devices in a piconet, but each peripheral device can be another piconet central.

https://learn.adafruit.com/introduction-to-bluetooth-low-energy?view=all#gatt

GATT

Profile

Service

Characteristic 

https://www.bluetooth.com/zh-cn/specifications/gatt/

GATT Example

Web Bluetooth

挖個坑

https://github.com/WebBluetoothCG/web-bluetooth/blob/gh-pages/implementation-status.md

Support

Scan

navigator.bluetooth.requestLEScan({
  keepRepeatedDevices: true
}).then(() => {
  navigator.bluetooth.addEventListener('advertisementreceived', event => {
    const appleData = event.manufacturerData.get(0x004C);
    
    if (appleData.byteLength != 23) {
      // Isn’t an iBeacon.
      return;
    }
    
    const major = appleData.getUint16(18, false);
    const minor = appleData.getUint16(20, false);
    const txPowerAt1m = -appleData.getInt8(22);
    const pathLossVs1m = txPowerAt1m - event.rssi;

    recordNearbyBeacon(major, minor, pathLossVs1m);
  });
})

And more...

BLE / JS / gyro / temp / light / button

Спасибо

Access Control System

By Chia Yu Pai

Access Control System

  • 336