Repozytorium te zawiera kod do oświetlenia do szafy z dzwiami przesuwnymi. Ideą jest uruchomienie paska led po wystarczającym odsunięciu drzwii. Dodatkowo w celu zbierania logów i bezpieczeństwa wprowadzone zostało połączenie z bazą danych, do której przekazywane są informacje o czasie otwarcie i zamknięcia szafy.
Mimo, iż głowna funkcjonalność projektu została już zaimplementowana projekt ciągle jest rozwijany i planowane jest stworzenie alarmu i prostego REST API.
Na ten moment, elementy i moduły, które zostały użyte to:
- Raspberry Pi Zero W
- Pasek LED 💡
- Czujnik odległości 📐 (HC-SR04)
- Czunik dotyku 👆 (TTP223)
- Przekaźnik ⚡ (FTR-C1CA003G)
Prócz fizycznych elementów opcjonalne są poniższe pliki w katalogu projektu:
- adres.txt - jeżeli jest obecny wysyła informacje na temat otwarcia i zamknięcia szafy do bazy danych. Musi zawierać trzy linie:
- Adres IP i port serwera z bazą danych
- Login użytkownika
- Hasło użytkownika
- auth.txt - jeżeli jest obecny wymaga przed wejściem na stronę (czy API) autoryzację za pomocą nagłówka Autorization basic. Musi zawierać dwie linie:
- Login użytkownika
- Hasło
- sinricpro_login.txt - jeżeli jest obecny pozwala na dodanie szafy jako urządzenia w aplikacji SinricPro. Musi mieć trzy linie:
- APP_KEY
- APP_SECRET
- DEVICE_ID
- smtp.txt - jeżeli jest obecny, wysyła informację na gmail o otwarciu, zamknięciu szafy oraz czasie trwania. Wymagane 4 linie:
- Email działający jako serwer SMTP (sender)
- Hasło na email (sender)
- Email (receiver)
- Minimalny czas trwania (w sekundach) statusu, po którym zostanie wysłana wiadomość na mail.
W przypadku wykorzystania gmail-a należy włączyć logowanie dwu-etapowe i ustawić hasło aplikacji. Więcej informacji można znaleźć tutaj.
Aby zainstalować na Raspberry Pi Zero:
wget https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tar.xz
cd Python-3.9.7
./configure --enable-optimizations
make -j4
sudo make altinstall
ID | Data | Stan | Dlugosc | CzyStartowe | CzyOffline |
---|---|---|---|---|---|
int | datetime2 | bit | float | bit | bit |
- Mierzenie odległości
- Włączanie i wyłączanie przekaźnika zapalającego pasek LED
- Zapisywanie informacji o godzinie otworzenia i zamknięcia szafy
- Asynchroniczne łączenie z bazą danych
- Zapisywanie do pliku temp.txt w przypadku braku połączenia
- Przekazywanie informacji z pliku do bazy po ponownym połączeniu
- Wyłączenie łączenia z bazą, jeżeli nie wykryto pliku adres.txt
- Wyłączenie światła po dotknięciu czujnika do czasu zamknięcia szafy lub ponownego dotknięcia (funkcja nadpisu)
- Mechanizm przypominający o zamknięciu szafy
- Uruchamianie funkcji po określonym czasie
- Alarm dźwiękowy przez buzzer 🔈
- Edytowanie głośności alarmu poprzez potencjometr 10kΩ ⚙
- Stworzenie API
- Uruchomienie serwera za pomocą socketa
- Edytowanie konfiguracji programu za pomocą przeglądarki (czas do alarmu, wyłączenie alarmu, głośność)
- Stworzenie aplikacji mobilnej do wyświetlania danych i edytowania konfuguracji
- Możliwość wyłączenia i włączenia
- Połączenie z aplikacjami typu smart home (Google Home, SinricPro)