{"id":16994802,"url":"https://github.com/zaxovaiko/rfid-card-reader","last_synced_at":"2026-04-16T03:31:28.121Z","repository":{"id":140445389,"uuid":"281351609","full_name":"zaxovaiko/RFID-card-reader","owner":"zaxovaiko","description":"💳 RFID card reader simulator based on MQTT","archived":false,"fork":false,"pushed_at":"2020-07-21T09:18:49.000Z","size":21,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-03-22T05:43:51.455Z","etag":null,"topics":["mqtt","openssl","python","rfid","rfid-reader"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zaxovaiko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-21T09:17:30.000Z","updated_at":"2020-07-21T09:21:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"f3c32606-52b1-4bce-b51a-1c91ca86f38e","html_url":"https://github.com/zaxovaiko/RFID-card-reader","commit_stats":null,"previous_names":["zaxovaiko/rfid-card-reader"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zaxovaiko/RFID-card-reader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaxovaiko%2FRFID-card-reader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaxovaiko%2FRFID-card-reader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaxovaiko%2FRFID-card-reader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaxovaiko%2FRFID-card-reader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zaxovaiko","download_url":"https://codeload.github.com/zaxovaiko/RFID-card-reader/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaxovaiko%2FRFID-card-reader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31870506,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"online","status_checked_at":"2026-04-16T02:00:06.042Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mqtt","openssl","python","rfid","rfid-reader"],"created_at":"2024-10-14T03:46:39.466Z","updated_at":"2026-04-16T03:31:28.093Z","avatar_url":"https://github.com/zaxovaiko.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RFID card reader z szyfrowaną komunikacją i autoryzacją\n\n## Instrukcja uruchomienia\n\nAby urochomić ten program, należy:\n  - Zainstalować `mosquitto` z [tej strony](https://mosquitto.org/download/).\n  - Utworzyć nowy folder `certs` w folderze mosquitto. (e.g. `C:\\Program Files\\mosquitto\\certs`).\n  - Zainstalować OpenSSL na swój system.\n  - Utworzyć sertyfikaty po kolei uruchamiając:\n\n    + `openssl genrsa -des3 -out ca.key 2048` i wprowadzić hasło.\n    + `openssl req -new -x509 -days 1826 -key ca.key -out ca.crt` pomijając wszystkie opcji.\n    + `openssl genrsa -out server.key 2048`\n    + Sprawdź hostname urządzenia przez `hostname` w cmd.\n    `openssl req -new -out server.csr -key server.key` używając `hostname` z poprzedniego kroku w opcji `Common Name`.\n    + `openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 360`\n    + W rezultacie musze być 6 plików.\n\n  - Do utworzonego folderu `certs` skopiować pliki `server.crt`, `server.key` i `ca.crt`.\n  - Skopiować `mosquitto.conf` i zamienić opcję `cafile, certfile, keyfile`, jeżeli mosquitto był zainstalowany w innym miejscu.\n  - Dodać plik `ca.crt` w folder projektu.\n  - Wstaw plik `aclfile.conf` do folderu mosquitto.\n  - Uruchomić `pip install -r requirements.txt`.\n  - Zresetować poprzednią bazę danych używając komendy `python create_database.py`.\n  - Urochomić brokera używając `mosquitto -c \"C:\\Program Files\\mosquitto\\mosquitto.conf\" -v`.\n  - Uruchomić scrypt `client.py` na urządzeniu Raspberry Pi lub Virtual Machine (PC).\n  - Uruchomić scrypt `server.py` na serwerze (PC lub to samo urządzenie Raspberry Pi)\n  \n## Struktura\n\n```text\n.\n├── certs\n│   ├── ca.crt\n│   ├── server.crt\n│   └── server.key\n├── .env.example\n├── mosquitto.conf\n├── aclfile.conf\n├── client.py\n├── server.py\n├── create_database.py\n└── seeder.py\n```\n\n## Opis składowych i działania aplikacji\n\n**`.env`**\n\nPlik z konfiguracją brokera i inną. Zmień hasło i nazwę użytkownika, żeby zalogować się do systemu.\n\n```text\nUSER=admin\nPASS=admin\n```\n\n**`create_database.py`**\n\nTworzy nową bazę danych i usuwa poprzednią.\n\n**`seeder.py`** \n\nGeneruje 1000 fejków w tablicah `workers` i `cards` dla sprawdzenia działalności programu.\n\n**`client.py`**\n\nPodłączamy się do Brokera i odsyłujemy Card ID do brokera (topic=`worker/test`).\nSprawdzamy poprawność Card ID (ID może być tylko liczbą). Ten plik będzie używany na\nurządzeniu Raspberry Pi (lub na Virtual Machine).\n\n**`server.py`**\n\nPodłączamy się do Brokera, otrzymujemy message w potrzebnym topiku. Używamy ten plik na serwerze, czyli na \nPC lub innym urządzeniu (w tym i Raspberry Pi). Przy uruchomieniu plika mamy utworzony GUI z \nróżnymi przyciskami (symulowany system urządzający - admin panel).\n\n**`aclfile.conf`**\n\nZapisz poniższy kod do pliku:\n```text\nuser server\ntopic read card/id\ntopic read auth/login\ntopic write auth/res\n\nuser client\ntopic write card/id\ntopic write auth/login\ntopic read auth/res\n```\n\n## Baza danych projektu\n\nDla tego projektu jest używana biblioteka `sqlite3`. SQLite jest bardzo wygodna i prosta w \ntej sytuacji.\n\n##### Tablica `workers`\n\nPrzechowujemy tu wszystkich pracowników.\n```text\nworkers\n+- id           INTEGER, AUTOINCREMENT\n+- name         TEXT, NOT NULL\n+- card_id      INTEGER, NULLABLE\n+- hired_at     DATETIME CURRENT_TIMESTAMP\n```\n\n##### Tablica `cards`\nPrzechowujemy tu wszystkie karty elektroniczne.\n```text\ncards\n+- id           INTEGER, AUTOINCREMENT\n+- name         TEXT, NOT NULL\n+- worker_id    INTEGER, NULLABLE\n+- created_at   DATETIME CURRENT_TIMESTAMP\n```\n\n##### Tablica `records`\nPrzechowujemy tu zapisy wszystkich wyjść/wejść pracowników.\n```text\nrecords\n+- id           INTEGER, AUTOINCREMENT\n+- card_id      INTEGER, NOT NULL\n+- worker_id    INTEGER, NULLABLE\n+- timestamp    DATETIME CURRENT_TIMESTAMP\n```\n\n## Screenshots\n\n![alt zero](https://imgur.com/H6sRVQY.png)\n\n![alt first](https://imgur.com/vngDjtB.png)\n\n![alt second](https://imgur.com/IY9fQ2z.png)\n\n![alt third](https://imgur.com/9vnHAbh.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzaxovaiko%2Frfid-card-reader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzaxovaiko%2Frfid-card-reader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzaxovaiko%2Frfid-card-reader/lists"}