Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zaxovaiko/rfid-card-reader
💳 RFID card reader simulator based on MQTT
https://github.com/zaxovaiko/rfid-card-reader
mqtt openssl python rfid rfid-reader
Last synced: 10 days ago
JSON representation
💳 RFID card reader simulator based on MQTT
- Host: GitHub
- URL: https://github.com/zaxovaiko/rfid-card-reader
- Owner: zaxovaiko
- Created: 2020-07-21T09:17:30.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-07-21T09:18:49.000Z (over 4 years ago)
- Last Synced: 2024-11-28T15:04:51.809Z (2 months ago)
- Topics: mqtt, openssl, python, rfid, rfid-reader
- Language: Python
- Homepage:
- Size: 20.5 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# RFID card reader z szyfrowanÄ… komunikacjÄ… i autoryzacjÄ…
## Instrukcja uruchomienia
Aby urochomić ten program, należy:
- Zainstalować `mosquitto` z [tej strony](https://mosquitto.org/download/).
- Utworzyć nowy folder `certs` w folderze mosquitto. (e.g. `C:\Program Files\mosquitto\certs`).
- Zainstalować OpenSSL na swój system.
- Utworzyć sertyfikaty po kolei uruchamiając:+ `openssl genrsa -des3 -out ca.key 2048` i wprowadzić hasło.
+ `openssl req -new -x509 -days 1826 -key ca.key -out ca.crt` pomijajÄ…c wszystkie opcji.
+ `openssl genrsa -out server.key 2048`
+ Sprawdź hostname urządzenia przez `hostname` w cmd.
`openssl req -new -out server.csr -key server.key` używając `hostname` z poprzedniego kroku w opcji `Common Name`.
+ `openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 360`
+ W rezultacie musze być 6 plików.- Do utworzonego folderu `certs` skopiować pliki `server.crt`, `server.key` i `ca.crt`.
- Skopiować `mosquitto.conf` i zamienić opcję `cafile, certfile, keyfile`, jeżeli mosquitto był zainstalowany w innym miejscu.
- Dodać plik `ca.crt` w folder projektu.
- Wstaw plik `aclfile.conf` do folderu mosquitto.
- Uruchomić `pip install -r requirements.txt`.
- Zresetować poprzednią bazę danych używając komendy `python create_database.py`.
- Urochomić brokera używając `mosquitto -c "C:\Program Files\mosquitto\mosquitto.conf" -v`.
- Uruchomić scrypt `client.py` na urządzeniu Raspberry Pi lub Virtual Machine (PC).
- Uruchomić scrypt `server.py` na serwerze (PC lub to samo urządzenie Raspberry Pi)
## Struktura```text
.
├── certs
│ ├── ca.crt
│ ├── server.crt
│ └── server.key
├── .env.example
├── mosquitto.conf
├── aclfile.conf
├── client.py
├── server.py
├── create_database.py
└── seeder.py
```## Opis składowych i działania aplikacji
**`.env`**
Plik z konfiguracją brokera i inną. Zmień hasło i nazwę użytkownika, żeby zalogować się do systemu.
```text
USER=admin
PASS=admin
```**`create_database.py`**
Tworzy nowÄ… bazÄ™ danych i usuwa poprzedniÄ….
**`seeder.py`**
Generuje 1000 fejków w tablicah `workers` i `cards` dla sprawdzenia działalności programu.
**`client.py`**
Podłączamy się do Brokera i odsyłujemy Card ID do brokera (topic=`worker/test`).
Sprawdzamy poprawność Card ID (ID może być tylko liczbą). Ten plik będzie używany na
urzÄ…dzeniu Raspberry Pi (lub na Virtual Machine).**`server.py`**
Podłączamy się do Brokera, otrzymujemy message w potrzebnym topiku. Używamy ten plik na serwerze, czyli na
PC lub innym urzÄ…dzeniu (w tym i Raspberry Pi). Przy uruchomieniu plika mamy utworzony GUI z
różnymi przyciskami (symulowany system urządzający - admin panel).**`aclfile.conf`**
Zapisz poniższy kod do pliku:
```text
user server
topic read card/id
topic read auth/login
topic write auth/resuser client
topic write card/id
topic write auth/login
topic read auth/res
```## Baza danych projektu
Dla tego projektu jest używana biblioteka `sqlite3`. SQLite jest bardzo wygodna i prosta w
tej sytuacji.##### Tablica `workers`
Przechowujemy tu wszystkich pracowników.
```text
workers
+- id INTEGER, AUTOINCREMENT
+- name TEXT, NOT NULL
+- card_id INTEGER, NULLABLE
+- hired_at DATETIME CURRENT_TIMESTAMP
```##### Tablica `cards`
Przechowujemy tu wszystkie karty elektroniczne.
```text
cards
+- id INTEGER, AUTOINCREMENT
+- name TEXT, NOT NULL
+- worker_id INTEGER, NULLABLE
+- created_at DATETIME CURRENT_TIMESTAMP
```##### Tablica `records`
Przechowujemy tu zapisy wszystkich wyjść/wejść pracowników.
```text
records
+- id INTEGER, AUTOINCREMENT
+- card_id INTEGER, NOT NULL
+- worker_id INTEGER, NULLABLE
+- timestamp DATETIME CURRENT_TIMESTAMP
```## Screenshots
![alt zero](https://imgur.com/H6sRVQY.png)
![alt first](https://imgur.com/vngDjtB.png)
![alt second](https://imgur.com/IY9fQ2z.png)
![alt third](https://imgur.com/9vnHAbh.png)