SmartHomeApp β ΡΡΠΎ Android-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠΌΠ°ΡΠΎΠΌ ΠΈ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ°. ΠΡΠΎΠ΅ΠΊΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ:
- ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Android-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°ΠΌΠΈ,
- ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Bluetooth-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ,
- ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ IoT-ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π½Π° Π±Π°Π·Π΅ Atmega328p Ρ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΎΠΉ Π½Π° C/C++,
- ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ (JSON).
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ IoT-ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ΅ΡΠ΅Π· Bluetooth
- Π§ΠΈΡΡΠ°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°: Clean Architecture + MVVM
- Π‘Π²ΠΎΡ Bluetooth-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°: ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ, ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, JSON
- Π£ΠΌΠ½ΠΎΠ΅ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (Palette API)
- Π Π°Π±ΠΎΡΠ° Ρ ΡΠ΅Π½ΡΠΎΡΠ°ΠΌΠΈ: ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ°, Π²Π»Π°ΠΆΠ½ΠΎΡΡΡ, Π΄Π°Π²Π»Π΅Π½ΠΈΠ΅
- Π Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΈ Π΄Π²ΡΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ (Coroutines + SharedFlow)
- Single Activity + Jetpack Navigation Component
- ΠΠ½ΠΎΠ³ΠΎΠΌΠΎΠ΄ΡΠ»ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ°
- MVVM + Clean Architecture (Presentation / Domain / Data)
- Dependency Injection Ρ Koin
- ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΡ ΡΠ΅ΡΠ΅Π· Kotlin Coroutines ΠΈ Flow
- SharedFlow Π΄Π»Ρ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ UI
Π―Π·ΡΠΊΠΈ:
- Kotlin β Android-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
- C/C++ β ΠΏΡΠΎΡΠΈΠ²ΠΊΠ° Atmega328p Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ:
- Room / SharedPreferences β Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅
- Bluetooth SPP (Serial Port Profile) β ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ
- Sockets & Streams β ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π΄Π°Π½Π½ΡΡ
- Palette API β Π°Π½Π°Π»ΠΈΠ· ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
- FlexboxLayout, ViewPager2 (ΠΊΠ°ΡΡΠΎΠΌ), Glide β UI
- Gradle + Proguard β ΡΠ±ΠΎΡΠΊΠ°, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ
ΠΠΎΠ΄ΡΠ»ΡΠ½Π°Ρ Bluetooth-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π²ΠΊΠ»ΡΡΠ°Π΅Ρ:
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ
- ΠΠΎΡΠΎΠΊΠΎΠ²ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΡ
- Π Π΅Π°ΠΊΡΠΈΠ²Π½ΡΡ Π΄ΠΎΡΡΠ°Π²ΠΊΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π² UI ΡΠ΅ΡΠ΅Π· Coroutines ΠΈ Flow
- Π Π°Π±ΠΎΡΠ° Ρ JSON-ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ Π΄Π»Ρ Π΄Π²ΡΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ
Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°:
- Π§ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Ρ ΡΠ΅Π½ΡΠΎΡΠΎΠ²: ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ°, Π²Π»Π°ΠΆΠ½ΠΎΡΡΡ, Π΄Π°Π²Π»Π΅Π½ΠΈΠ΅
- RGB-ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠ΅ΠΆΠΈΠΌΠΎΠ²:
- ΠΠΎΠ½ΠΎΡΠ²Π΅Ρ
- ΠΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
- Π Π΅Π³ΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° ΡΡΠΊΠΎΡΡΠΈ
- ΠΠΊΡΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠ²ΡΠ·Ρ
- LED-Π΄ΠΈΡΠΏΠ»Π΅ΠΉ
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠΈΠ²Π΅ΡΠ° ΠΏΡΠΈ ΠΏΡΠΎΡΡΠΎΠ΅
Π‘ΠΊΠ΅ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°: sketch_smart_home_ru.ino
{
"type": "SMART_HOME_DATA",
"temperature": "A",
"humidity": "B",
"pressure": "C",
"led_m": "D",
"led_a": "E",
"led_r": "F",
"led_g": "G",
"led_b": "I"
}Π Π΅Π³ΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° ΡΡΠΊΠΎΡΡΠΈ
{ "type": "LED_ALPHA", "a": "N" }ΠΠΎΠ½ΠΎΡΠ²Π΅Ρ
{
"type": "LED_MONO",
"m": "A",
"a": "B",
"r": "C",
"g": "D",
"b": "E"
}Π¦Π²Π΅ΡΠΎΠ²Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ (5 ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ²Π΅ΡΠΎΠ²)
{ "type": "LED_FLOW_A", "a": "A", "r0": "B", "g0": "C", "b0": "D", "r1": "E" }
{ "type": "LED_FLOW_B", "g1": "F", "b1": "G", "r2": "H", "g2": "J", "b2": "K" }
{ "type": "LED_FLOW_C", "r3": "L", "g3": "M", "b3": "N", "r4": "O", "g4": "P" }
{ "type": "LED_FLOW_FIN", "g4": "Q", "m": "R" }ΠΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠΈΠ΅ΠΉ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΡΡ Π±ΡΡΠ΅Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°. ΠΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
{ "type": "TIME_UPDATE", "epoch": "N" }Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠΈΠ²Π΅ΡΠΎΠΌ
{ "type": "COM_ENABLED", "state_com": "N" }-
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π°Π½ΠΈΠΌΠ°ΡΠΈΡΠΌΠΈ ΠΈ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΠΎΠΉ Π²Π΅ΡΡΡΠΊΠΎΠΉ
-
ΠΡΠΎΡΡΠΎΠ΅ ΠΈ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ°ΠΌΠΈ
-
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠΌΠ½ΠΎΠΉ ΠΈ ΡΠ²Π΅ΡΠ»ΠΎΠΉ ΡΠ΅ΠΌ, ΡΡΡΡ ΡΠ·ΡΠΊΠΎΠ² (Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ, ΡΡΡΡΠΊΠΈΠΉ ΠΈ ΠΊΠΈΡΠ°ΠΉΡΠΊΠΈΠΉ) ΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠΎΠ² ΡΠΊΡΠ°Π½Π° ΡΠΌΠ°ΡΡΡΠΎΠ½Π°
-
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ Ρ LED-ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ ΠΈ Π·Π²ΡΠΊΠΎΠΌ
-
Π‘ΠΊΡΠΈΠ½ΡΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
- ΡΡΠΈΡΡ Geologica ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΈ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ (https://fonts.google.com/specimen/Geologica/license) (Π΄Π°ΡΠ° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ 28 Π°ΠΏΡΠ΅Π»Ρ 2025 Π³ΠΎΠ΄Π°)
- ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΈ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ Unsplash (Π΄Π°ΡΠ° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ 28 Π°ΠΏΡΠ΅Π»Ρ 2025 Π³ΠΎΠ΄Π°), Π°Π²ΡΠΎΡΡ:
- Spacejoy ΡΠΎΡΠΎ (https://unsplash.com/photos/green-and-white-throw-pillows-on-green-sofa-ml2RSaDME-k)
- roam in color ΡΠΎΡΠΎ (https://unsplash.com/photos/electric-stove-with-cooking-pots-4VKQgWgn0Xo)
- Point3D Commercial Imaging Ltd. ΡΠΎΡΠΎ (https://unsplash.com/photos/white-bed-linen-with-2-white-pillows-xON7AlJZemw)
- Shifaaz shamoon ΡΠΎΡΠΎ (https://unsplash.com/photos/aerial-photo-of-seashore-sLAk1guBG90)
- Ryan Loughlin ΡΠΎΡΠΎ (https://unsplash.com/photos/a-flock-of-birds-standing-on-top-of-a-sandy-beach-p3ocWhESo50)
- Kartabya Aryal ΡΠΎΡΠΎ (https://unsplash.com/photos/blue-body-of-water-during-daytime-iM1XCCd1LqY)
- Clint Patterson ΡΠΎΡΠΎ (https://unsplash.com/photos/sunrise-VdfeYvJSKs0)
- Paul Pastourmatzis ΡΠΎΡΠΎ (https://unsplash.com/photos/silhouette-of-trees-near-body-of-water-painting-xAMZ67ZWIgY)
- Nastia Petruk ΡΠΎΡΠΎ (https://unsplash.com/photos/the-sun-is-setting-over-the-water-on-the-beach-tO4WQR5hlcc)
- Franco Gancis ΡΠΎΡΠΎ (https://unsplash.com/photos/a-number-of-lights-hanging-from-a-ceiling-j5vIonkG-UI)
- Oleksii Holovachko ΡΠΎΡΠΎ (https://unsplash.com/fr/photos/une-rue-de-la-ville-la-nuit-avec-des-voitures-garees-sur-le-bord-de-la-route-UNeOqldSFmo)
- Daniil Silantev ΡΠΎΡΠΎ (https://unsplash.com/photos/a-large-storm-moving-across-a-large-body-of-water-dzBo4NIQdIw)








