SmartThermo is an IoT web dashboard for monitoring room temperature and humidity and industrial-machine temperature. It receives sensor and actuator data from an ATmega328P/ESP32 hardware path, presents current readings and historical trends, and lets an administrator configure remote temperature set points. The application includes a backend API and frontend intended for deployment to Cloud Panel environments such as cPanel, AaPanel, CyberPanel, VPS, or PaaS.
The intended users are a SmartThermo dashboard operator who monitors readings and logs, and a SmartThermo administrator who configures thresholds. The interface is named SmartThermo and uses the slogan “Smart Industrial Temperature & Humidity Monitoring System.”
SmartThermo comprises a login-protected web interface, backend API, and persistent storage for sensor history and the admin login account. The ATmega328P reads the DHT22 and PT100 sensors and controls the relays/fans and buzzer automatically. The ESP32 receives ATmega328P data over RS485 Modbus RTU and sends it to the cloud server over Wi-Fi/HTTP REST API. The web application accepts periodic ESP32 submissions at POST /api/update-data.
The current interface covers room and machine readings, actuator and connection status, sensor trends, remote threshold settings, and historical logs with search, date filtering, pagination, and CSV/Excel export. The dashboard is protected by login and session/token handling. The accepted active human personas are the SmartThermo dashboard operator and SmartThermo administrator.
The requested visual identity includes a dark glassmorphism interface, the supplied industrial background image, two supplied logo assets, responsive layout, and smooth widget animations. The application is intended to be organized for Cloud Panel deployment and accompanied by a short upload-and-run guide.
SmartThermo is a first-party web application with an anonymous entry and login surface, followed by protected monitoring and administration destinations. First-use enrollment establishes an account before returning username/password verification; the source specifies an admin account but does not establish an invitation or provisioning boundary. The application must not expose protected dashboard state before a valid session or token is established.
The hardware performs sensor acquisition and automatic actuator control. The web application receives the reported readings and statuses, persists sensor history, displays the data, and stores the administrator’s threshold settings. The source does not specify how stored remote thresholds are delivered to or applied by the hardware; this document does not assume an additional control protocol or claim that saving a threshold changes hardware behavior.
The current scope does not add user-management functions, additional roles, manual actuator controls, or other adjacent IoT capabilities. No future requirements were specified.
OK is shown as a connection problem; the signal-flow segment reflects that status.As a SmartThermo dashboard operator, I should be able to reach the anonymous SmartThermo entry and continue to login.
Provenance: required_inference for the Landing page; product name and purpose are explicit.
Lifecycle and acceptance: The operator opens Landing without an authenticated session, sees the SmartThermo name and slogan, and can continue to Halaman Login. If the entry surface fails to load, the operator can retry or navigate to login. The next step is account verification.
As a SmartThermo administrator, I should be able to establish the initial admin login account and verify my username and password on return.
Provenance: Initial account establishment is required_inference; username/password login and admin account persistence are explicit.
Lifecycle and acceptance: On first use, the administrator establishes the account before returning verification is available. On return, the administrator submits username and password on Halaman Login. Valid credentials establish a session/token; invalid or incomplete credentials produce feedback and allow correction and retry. Successful verification continues to protected destinations. The account is persisted using the selected lightweight storage approach.
As a SmartThermo dashboard operator, I should be able to access the dashboard only after login and see current room, machine, actuator, and connection status.
Provenance: Dashboard content and login protection are explicit; session continuity is required_inference.
Lifecycle and acceptance: With a valid session/token, the operator opens Dashboard Utama and sees DHT22 room temperature and humidity, PT100 machine temperature, Kipas 1 and Kipas 2 ON/OFF, Buzzer Active/Mute, RS485/ATmega328P–ESP32–cloud status, and the last-data timestamp. Without a valid session/token, direct URL access to protected state is denied and the operator is directed to Halaman Login. If data is unavailable or stale, the dashboard communicates that state and allows retry/refresh; after recovery, the operator can continue monitoring or navigate to another destination.
As a SmartThermo dashboard operator, I should be able to interpret the machine temperature using a gauge with Normal, Warning, and Danger zones.
Provenance: explicit.
Lifecycle and acceptance: On Dashboard Utama, the operator views the PT100 reading on an interactive gauge with the three named zones. The gauge transitions smoothly as readings change. If the reading is unavailable, the gauge communicates unavailable data rather than presenting a false current value; the operator can retry or continue to other available dashboard information.
As a SmartThermo dashboard operator, I should be able to see the reported automatic actuator states and overheat alarm state.
Provenance: Hardware behavior and dashboard indicators are explicit.
Lifecycle and acceptance: The ATmega328P automatically turns Kipas 1 on when DHT22 room temperature exceeds the safe room-temperature limit, turns Kipas 2 on when PT100 machine temperature exceeds the safe machine-temperature limit, and activates the buzzer when machine or room temperature reaches the critical danger limit. The operator sees reported fan ON/OFF and buzzer Active/Mute states. The buzzer indicator uses a red overheat animation when overheat is reported. If status data is unavailable, the interface indicates that it is unavailable rather than implying a current state; the operator can retry or continue monitoring other readings.
As a SmartThermo dashboard operator, I should be able to see the specified hardware data path and its reported connection health.
Provenance: Hardware path and status indicator are explicit; backend acceptance and persistence of periodic submissions are required_inference.
Lifecycle and acceptance: The ATmega328P reads DHT22 room temperature/humidity and PT100 machine temperature and controls the fans and buzzer automatically. The ESP32 receives ATmega328P data over RS485 Modbus RTU and sends it to the cloud server over Wi-Fi/HTTP REST API. Dashboard Utama shows RS485/Modbus and network status and the last-data timestamp. A non-OK Modbus status or stale data is visibly distinguishable; after data resumes, the displayed status and timestamp update.
As a SmartThermo dashboard operator, I should be able to review real-time trends for machine temperature, room temperature, and room humidity over a selected duration.
Provenance: explicit.
Lifecycle and acceptance: On Trends, the operator selects Live, 1 Jam, 12 Jam, or Hari Ini. The multi-axis line chart displays the three requested series for the selected duration. If no records exist, the page shows an empty state; if retrieval fails, it shows an error and retry path. The operator can select another duration or continue to another destination.
As a SmartThermo administrator, I should be able to configure and save the three remote temperature set points.
Provenance: explicit.
Lifecycle and acceptance: On Thresholds, the administrator enters set points for Kipas 1, Kipas 2, and Buzzer Alarm and saves them to the database/server. Invalid input is identified for correction; a successful save is confirmed; a failed save is reported with a retry path. The administrator can revisit the page to review stored settings. The source does not specify threshold values, ranges, or how settings are applied by hardware.
As a SmartThermo dashboard operator, I should be able to search, date-filter, paginate, and export historical sensor logs.
Provenance: explicit.
Lifecycle and acceptance: On History, the operator views historical temperature, humidity, and fan-status records, searches, filters by date, and navigates pages. The operator can export data to CSV or Excel. No matching records produce an empty state; retrieval or export failure is reported with a retry path. The operator can revise the search/filter or continue to another destination.
As an ESP32 device, I should be able to submit periodic sensor data to the specified REST endpoint.
Provenance: Endpoint and payload fields are explicit; backend acceptance and persistence are required_inference.
Lifecycle and acceptance: The ESP32 sends JSON to POST /api/update-data. The backend accepts valid submissions and persists sensor history for dashboard, trend, and history use. Invalid or unavailable submissions do not appear as successful current data; the sender can retry. The example payload is:
{
"temp_mesin": 45.2,
"temp_ruangan": 28.5,
"hum_ruangan": 65.0,
"kipas_ruangan": 1,
"kipas_mesin": 0,
"buzzer": 0,
"modbus_status": "OK"
}
As a SmartThermo project deployer, I should be able to deploy the organized application to a supported Cloud Panel environment.
Provenance: explicit.
Lifecycle and acceptance: The deliverable includes complete backend server code, organized frontend files, separate configuration variables URL_BG_PABRIK, URL_LOGO_SEKOLAH, and URL_LOGO_JURUSAN, and a short step-by-step upload-and-run guide for Cloud Panel/cPanel/VPS. The application includes a lightweight SQLite/MySQL database or JSON storage handler for sensor history and the admin login account. Deployment failure must be diagnosable through the guide and deployment/runtime feedback; the deployer can correct configuration and retry.
Provenance: required_inference from Planning Scope.
The operator uses the protected dashboard to monitor DHT22 room temperature and humidity, PT100 machine temperature, fan and buzzer states, connection health, and the last-data timestamp. The operator also reviews the three sensor trends and historical logs, including search, date filtering, pagination, and CSV/Excel export. Their work is focused on observing and reviewing system data rather than changing thresholds. Success is observable when current readings and status are available, selected trends and historical records can be reviewed, and requested log data can be exported. The operator interacts with the hardware data path through the reported data and status; no direct hardware control action is specified for this persona.
Provenance: explicit for the admin account and threshold configuration.
The administrator establishes the initial admin login account, returns to verify with username and password, and configures the room-fan, machine-fan, and buzzer alarm temperature set points. The administrator’s distinct responsibility is changing and saving server-stored threshold settings, unlike the operator’s monitoring and log-review work. Success is observable when the administrator can authenticate and the three settings are confirmed as stored. The source does not specify additional account-management or permission functions.
POST /api/update-data over Wi-Fi/HTTP REST API.The visual direction is “Data made physical: the plant's own heat signature as a living, generative instrument panel.” The muse is Refik Anadol. The interface should balance instrument-grade seriousness and calibrated trustworthiness with the requested modern, animated glassmorphism showcase quality. The supplied industrial factory photograph is the only background photograph; the two supplied logos occupy their requested top-navigation positions.
| Role | Token |
|---|---|
| Near-black background | #08090C |
| Glass surface | #141821 at 55% opacity |
| Primary text | #F2F5F8 |
| Heat / temperature | #FF8A3D |
| Humidity / healthy signal | #38E0C8 |
| Danger / overheat only | #FF3B47 |
| Warning | #FFC24B |
| Muted labels and timestamps | #8A94A6 |
| Glass top-edge highlight | rgba(255,255,255,0.14) |
Use approximately 70% dark ground, 20% glass surfaces, and 10% amber/teal signal. Do not use blue/indigo as primary or accent, amber on white, or rainbow/violet washes. Danger red is reserved for buzzer-overheat and the Danger gauge zone.
-0.02em tracking, sentence case.+0.14em tracking, muted color.clamp(44px, 9vw, 88px), line-height 1.05.clamp(26px, 4.2vw, 40px).Use soft-edged glass slabs with 20px radii, a luminous 1px top-left edge, and 24px backdrop blur. Buttons and inputs use 12px-radius rectangles, not pills. The factory photo is darkened to approximately 22% brightness, blurred 22px, and given a radial vignette so it remains a faint industrial texture rather than readable content. Place the school and department logos on glass chips.
The dashboard uses a sticky 72px top bar with school logo at left, SmartThermo wordmark and slogan centered, and department logo at right. Below it, use an asymmetric 12-column composition: machine gauge in a 5-column hero area; room DHT22 readouts and actuator/status row in a 4-column area; threshold form in a 3-column rail. Trends and History occupy the full width below. At 768px, the gauge becomes full-width above two stacked columns. At 375px, use one column, wrap the actuator strip into two rows, and make the history table horizontally scrollable with the timestamp column pinned. Keep all readable text and controls fully within their viewport and containers at 375px, 768px, and 1280px.
Use the supplied industrial background image as the darkened, blurred ground layer. Use the supplied school and department logo images in their respective top-navigation slots. Do not add unrelated photographs. Generate the gauge, trend chart, heat-haze field, and signal-flow strip as interface graphics. Chart axes, gridlines, and series must be styled to the palette rather than left at library defaults.
The first protected screen is a live instrument rather than a conventional headline hero. The PT100 machine-temperature dial is the dominant visual: a large circular gauge with a 14px arc, 10°C tick marks, and three concentric Normal/Warning/Danger zones that remain dim until entered by the needle. The current value sits inside the dial in large IBM Plex Mono numerals, with the micro-label “PT100 · SUHU MESIN” beneath it.
The room temperature and humidity readouts sit alongside the gauge as oversized amber and teal figures. Beneath them, the actuator and connection indicators form a ruled instrument row. A signal-flow strip shows the accepted hardware path—ATmega328P → RS485 Modbus → ESP32 → Cloud—with small data packets moving along the line and the relevant segment turning red when modbus_status is not OK.
Behind the glass, a restrained heat-haze particle field is driven by the actual PT100 reading: it visibly warms and quickens as the machine heats. The factory photo remains a subdued background texture, never competing with the readings or controls. The login screen uses the same ground and particle field behind a centered glass card. This concept recomposes only accepted readings, statuses, and controls.
Interaction Model: Animated
Motion Tempo: cinematic
Hero Dimensionality: flat
cubic-bezier(.22,1,.36,1); cards fade upward 12px with 60ms stagger on first paint and scroll-in. Fresh Modbus/network status uses a 2s teal ping ring and greys after 30 seconds of silence. The buzzer-overheat state alone uses a 1.1s red glow pulse on its badge and the machine-gauge card border.explicit: Organize the backend and frontend for deployment to Cloud Panel environments including cPanel, AaPanel, CyberPanel, VPS, or PaaS, and provide the requested short upload-and-run guide.explicit / required_inference: Dashboard access requires login and must be protected against direct URL access without login. Session/token continuity is required for protected destinations.explicit: Persist sensor history and the admin login account using a lightweight SQLite/MySQL database or JSON storage handler.explicit: The interface is responsive and readable at the specified 375px, 768px, and 1280px widths; text and controls remain whole and unobscured.prefers-reduced-motion as specified in the motion brief.public/, views/, and config/.URL_BG_PABRIK, URL_LOGO_SEKOLAH, and URL_LOGO_JURUSAN.5897aef5_backround.jpg is the industrial background, 8b197763_logo_sekolahh.jpg is the school logo, and 933f1938_logo_jurusann.jpg is the department logo.No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!