
PCB LAMPU
KevinAR-18/EcoLab-Dashboard
EcoLab Dashboard is a smart laboratory EcoLab desktop application for real-time monitoring and control of laboratory devices within the UGM network.

EcoLab Dashboard is a smart laboratory EcoLab desktop application for real-time monitoring and control of laboratory devices within the UGM network.
Smart Socket Final Version is an open-source printed circuit board by KevinAR-18, from the KevinAR-18/EcoLab-Dashboard repository on GitHub. It is a 2-layer board of 100 × 73.5 mm with 45 parts on 34 nets, routed with 185 tracks and 212 vias.
It is built around the ESP32-C3, BT136-600E and HLK-PM01, with the DS1302+, MOC3021 and SS8050 among its other parts. Its parts include 11 resistors, 2 switches and 1 diode. It belongs with the ESP32 and RISC-V boards of this library.
EcoLab Dashboard - DTEDI Electronics Laboratory Internship 2025 x Final Project
Author: Stephanus Kevin Andika Rata
Internship Hardware (Smart AC & Lamp): Ilham Purnomo
EcoLab Dashboard is a Smart Laboratory Management System desktop application built with PySide6 (Qt) and Firebase Authentication to monitor and control laboratory devices in real time.
The system currently supports:
paho-mqtt) for IoT device communicationPython 3.10 or higherpip install -r requirements.txtThe application needs four external setup areas:
.envcredentials/client_secret.jsoncredentials/ca.crt or credentials/ca2.crt.envSee credentials/README.md for the detailed credential guide.
.env file.credentials/firebase_service_account.json.Example Firebase web config values:
{
"apiKey": "YOUR_API_KEY",
"authDomain": "YOUR_PROJECT.firebaseapp.com",
"databaseURL": "https://YOUR_PROJECT.firebaseio.com",
"projectId": "YOUR_PROJECT_ID",
"storageBucket": "YOUR_PROJECT.appspot.com",
"messagingSenderId": "YOUR_SENDER_ID",
"appId": "YOUR_APP_ID"
}Required .env keys:
ECOLAB_FIREBASE_API_KEY=
ECOLAB_FIREBASE_AUTH_DOMAIN=
ECOLAB_FIREBASE_DATABASE_URL=
ECOLAB_FIREBASE_PROJECT_ID=
ECOLAB_FIREBASE_STORAGE_BUCKET=
ECOLAB_FIREBASE_MESSAGING_SENDER_ID=
ECOLAB_FIREBASE_APP_ID=
ECOLAB_FIREBASE_SERVICE_ACCOUNT=Notes:
ECOLAB_FIREBASE_SERVICE_ACCOUNT empty if you use credentials/firebase_service_account.json.ECOLAB_FIREBASE_SERVICE_ACCOUNT only if the service account file is stored somewhere else.Google Sign-In does not use only Firebase settings. It also needs a Google OAuth client JSON file.
Prepare:
credentials/client_secret.jsonSteps:
APIs & Services -> Credentials.client_secret.json.credentials/ folder.If Google Sign-In fails, the first thing to verify is whether credentials/client_secret.json matches the active Google Cloud project.
MQTT communication for the IoT devices uses TLS and requires a CA certificate file.
Prepare:
credentials/ca.crt as the default CA certificatecredentials/ca2.crt as an optional backup CA certificate for some simulator or broker setupsRequired .env keys:
ECOLAB_MQTT_BROKER=
ECOLAB_MQTT_PORT=8883
ECOLAB_MQTT_USERNAME=
ECOLAB_MQTT_PASSWORD=
ECOLAB_MQTT_CA_CERT=credentials/ca.crt
ECOLAB_MQTT_USE_TLS=trueWhat to prepare for MQTT TLS:
8883credentials/ca.crtca2.crtNotes:
main.py defaults to credentials/ca.crt when ECOLAB_MQTT_CA_CERT is not overridden.hardware_TA/ still point to ca2.crt, so keep both certificate files available unless you are standardizing them.Dashboard startup currently initializes the Growatt panel during MainWindow creation, so these .env keys are required when opening the dashboard:
ECOLAB_GROWATT_USERNAME=
ECOLAB_GROWATT_PASSWORD=Notes:
Before running the app, make sure these files exist:
.env
credentials/client_secret.json
credentials/firebase_service_account.json
credentials/ca.crtOptional but recommended:
credentials/ca2.crtMinimum required .env groups for a full dashboard launch:
python launcher.py| Role | Access |
|---|---|
| Guest | Monitoring only, without device control |
| User | Device control and main dashboard access |
| Admin | All user features plus the admin panel |
The current Smart Socket feature set includes:
Implementation notes:
smartsocket2.ino to smartsocket5.ino were derived from smartsocket.ino with adjusted MQTT topics.The current project structure after refactoring is:
Aplikasi EcoLab - New/
|-- launcher.py
|-- loginmain.py
|-- main.py
|-- create_admin.py
|-- README.md
|-- requirements.txt
|-- build.bat
|-- .env.example
|-- auth/
| |-- auth_service.py
| `-- session_manager.py
|-- config/
| |-- firebase_settings.py
| |-- login_settings.py
| `-- path_utils.py
|-- dialogs/
| |-- admin_window.py
| `-- smartsocket_popup.py
|-- services/
| |-- smartsocket_recorder.py
| |-- smartsocket_protection_store.py
| `-- smartsocket_settings_manager.py
|-- app/launcher.py is the main application entry point.auth/session_manager.py.loginmain.py.auth/auth_service.py handles Firebase authentication and user records.auth/session_manager.py stores the local session file used by remember-me behavior.create_admin.py is a helper script for manually creating the first admin account.main.py contains the main dashboard window and top-level application orchestration.loginmain.py handles login, sign-up, forgot password, guest mode, and the admin/dashboard selection flow.dialogs/admin_window.py contains the admin panel.dialogs/smartsocket_popup.py contains the detailed Smart Socket control and monitoring popup.services/smartsocket_protection_store.py stores Smart Socket power-off protection data in Firebase Realtime Database.The app/setup/ modules are thin UI wiring helpers:
lamp_setup.py creates and connects custom lamp buttonsswitch_setup.py creates and connects Smart Socket switch buttonsac_setup.py creates and connects the custom AC buttonarrow_setup.py creates and stores flow arrowssmartsocket_setup.py connects Smart Socket backend signals to the main windowThe backend/ folder contains service and integration modules:
mqtt_client.py manages the shared MQTT connectionmqtt_dht22_backend.py stores and filters DHT22 sensor messagesmcu_status_backend.py tracks MCU online/offline statesmartsocket_backend.py handles MQTT topics for all Smart Socket deviceslampbutton_backend.py and acbutton_backend.py send control commandsgrowatt_backend.py fetches inverter datagrowatt_worker.py runs Growatt fetches outside the UI threadweathercloud_backend.py fetches weather station dataui/ contains helper code and generated Python modules from Qt Designer .ui fileswidgets/ contains handwritten custom widgets used by the dashboardresources_rc.py contains the compiled Qt resource bindingsThe hardware_TA/ folder contains firmware and simulators used for development and device integration testing.
cd hardware_TA
python smartsocket_simulator.py| PCB | Designer | Location | Description |
|---|---|---|---|
| PCB Smart AC | Ilham Purnomo | hardware_TA/PCB Designs/Rangkaian Control AC/PCB AC/ | AC control relay, transformer, and XL6009 DC-DC converter |
| PCB Smart Lamp | Ilham Purnomo | hardware_TA/PCB Designs/Rangkaian Control Lampu/PCB_LAMPU/ | Lamp control relay, transformer, and XL6009 DC-DC converter |
Custom KiCad libraries are located under Libraries for Arduino IDE/ in each project folder.
launcher.py -> check session
|- valid session -> open dashboard
|- no session -> open login window
|- email/password -> Firebase -> save session -> dashboard
|- Google sign-in -> OAuth -> save session -> dashboard
|- guest mode -> temp session -> dashboard (limited)launcher.py as the main application entry point..ino files.Stephanus Kevin Andika Rata
Software Development & System Integration
DTEDI Electronics Laboratory Internship 2025
Final Project - EcoLab Smart Laboratory
DTEDI Electronics Laboratory
Universitas Gadjah Mada
Email: kevinandika18@gmail.com
Ilham Purnomo
Hardware PCB Design (Smart AC & Smart Lamp)
DTEDI Electronics Laboratory Internship 2025
DTEDI Electronics Laboratory
Universitas Gadjah Mada
Copyright (c) 2026 Stephanus Kevin Andika Rata
PCB Design (Smart AC & Lamp): Ilham Purnomo
| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | MountingHole | MountingHole:MountingHole_3mm_Pad_Via | H3, H4, H5, H6 |
| 3 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R10k, R10k, R10k |
| 3 | 120 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R120, R120, R120 |
| 3 | 220 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R220, R220, R220 |
| 1 | 100 | Resistor_THT:R_Axial_DIN0411_L9.9mm_D3.6mm_P12.70mm_Horizontal | R100 - 1 or 5 Watt |
| 1 | 100nF | Capacitor_THT:C_Rect_L7.2mm_W2.5mm_P5.00mm_FKS2_FKP2_MKS2_MKP2 | 100nF |
| 1 | 32.768 | Crystal:Crystal_C26-LF_D2.1mm_L6.5mm_Horizontal | CRYSTAL |
| 1 | 330uF | Capacitor_SMD:CP_Elec_8x10.5 | 330uF 16V |
| 1 | 33uH | Inductor_SMD:L_10.4x10.4_H4.8 | 22uH |
| 1 | 470 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R470 |
| 1 | 470uF | Capacitor_SMD:CP_Elec_10x10.5 | 470uF 25V |
| 1 | AC Socket Load | AC DC Converter:TerminalBlock_Ningbo-Kagnex_HB9500_1x02_P9.5mm | Load Terminal |
| 1 | BT136-600 | Package_TO_SOT_THT:TO-220-3_Horizontal_TabDown | BTA24 |
| 1 | Battery_Cell | Battery:Battery_Panasonic_CR2032-HFN_Horizontal_CircularHoles | CR2032 Batttery |
| 1 | DC SWITCH | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | Switch DC |
| 1 | DS1302+ | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | DS1302 |
| 1 | ESP32-C3 | ESP32-C3_SUPERMINI_TH:MODULE_ESP32-C3_SUPERMINI_TH | ESP32-C3 |
| 1 | Fuse | AC DC Converter:Fuse_1808 | Fuse |
| 1 | HLK-PM01 | Converter_ACDC:Converter_ACDC_Hi-Link_HLK-PMxx | HLK-PM01 |
| 1 | Input 220V | AC DC Converter:TerminalBlock_Ningbo-Kagnex_HB9500_1x02_P9.5mm | Input Terminal |
| 1 | LED | LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder | D1 |
| 1 | LOGO | silkscreen:spotifyplaylist | G*** |
| 1 | LOGO | silkscreen:logougm | G*** |
| 1 | LOGO | silkscreen:metalbloom | G*** |
| 1 | LOGO | silkscreen:image | G*** |
| 1 | LOGO | silkscreen:logoecolab | G*** |
| 1 | LOGO | silkscreen:solarbloom | G*** |
| 1 | MOC3021 | AC DC Converter:MOC3021 | MOC3021 |
| 1 | PZEM Sensor | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | PZEM Sensor |
| 1 | RGB LED | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | RGB LED |
| 1 | SS8050 | Package_TO_SOT_SMD:SOT-23 | SS8050 |
| 1 | SWITCH FASA IN | MountingHole:MountingHole_2.2mm_M2_DIN965_Pad | SW1 |
| 1 | SWITCH FASA to LOAD | MountingHole:MountingHole_2.2mm_M2_DIN965_Pad | SW2 |
The 42 most common of 45 parts.

KevinAR-18/EcoLab-Dashboard
EcoLab Dashboard is a smart laboratory EcoLab desktop application for real-time monitoring and control of laboratory devices within the UGM network.

KevinAR-18/EcoLab-Dashboard
EcoLab Dashboard is a smart laboratory EcoLab desktop application for real-time monitoring and control of laboratory devices within the UGM network.

Ajith-Anand-R/Smart-Home-Controller
Full-stack IoT home automation system with ESP32 firmware, Google Apps Script backend, web dashboard, and Flutter mobile app.


NguyenThanhHuy-debug/PCB-Liquid-Dispensing-Cabinet
PCB-Liquid-Dispensing-Cabinet — a software project built with modern tooling.

R-Mutura/DISHWASHER
Contains hardware and Software implementation of a dishwasher product




arunsaispk12/esp32-ac-dimmer-fan-controller
Professional ESP32-based AC phase-control dimmer for fan speed control with optical isolation and safety features
It measures 100 × 73.5 mm and has 2 copper layers, 1.6 mm thick.
45 parts, built around the ESP32-C3, BT136-600E, HLK-PM01 and DS1302+. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the KevinAR-18/EcoLab-Dashboard repository on GitHub, at the commit this page was made from: the board is hardware_TA/PCB Designs/Rangkaian Smart Socket Final Version/Smart Socket Final Version.kicad_pcb and its schematic hardware_TA/PCB Designs/Rangkaian Control AC/Libraries for Arduino IDE/d1_mini_kicad-master/d1_mini_kicad-master/template/d1_mini_shield.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask KevinAR-18 before reusing the design.