Prototype of a clock combined with meteo station.
|
🕑 Local Time
🌐 Word Time
🌦 Current Weather
🔭 Weather Forecast
💡 Adaptive Illumination
|
🛜︎ Configuration Over WiFi
🕹 Simple Controls
🦺 Failure Resistance
🔒 Data Safety
|
Project consists of two parts:
|
Embedded Application |
Weather Web Service |
|---|---|
|
Located in this repository
|
Located in: weather-data-aggregator
|
Everything built entirely in Rust! Including host-based simulator and development script ./dev.rs.
Hardware built from WEMOS S3 Mini, popular HD44780 display and some other parts.
- User Manual
- Hardware Guide
- Remaining docs
- Slides <- contain many technical details
- Video <- comments to the slides above
-
Install toolchains/targets as described in retro-clock-esp and retro-clock-webui.
-
Install the tools below. Some of them is used only be selected commands of
./dev.rsand can be skiped if not needed:General tools:
(possibly already in your system)For Web UI development:
For intertacting with ESP32:
-
Optionally install and start mDNS client, e.g. avahi. It is useful for resolving
retro-clock.localdomain. If you are under Ubuntu, it's probably done already. -
Setup environment (unless already done):
# Certificate for TLS for HTTP server in `retro-clock-esp/certs` ../dev.rs new cert # Set env vars in `.env`, this includes secrets ./dev.rs new env
.envfile is automatically loaded by./dev.rsscript whenever it is invoked..envdoesn't need to be sourced, unless you work in the individual sub-directories without./dev.rs.
-
Invoke one of the commands below:
# Host-based simulation limited to core functionality with Web UI served locally ./dev.rs run sim # Application run in ESP32 target with Web UI served from the device ./dev.rs run esp # Application run in ESP32 target with Web UI served from the host ./dev.rs run mix
-
Web browser will be opened at corresponding Web UI URL.
-
For more details on ESP32 usage refer to retro-clock-esp.
After each change:
-
Fix formating and linting issues:
./dev.rs fmt ./dev.rs cmd clippy
-
Run the application and check heap usage while interacting with the app:
./dev.rs run esp -s ./dev.rs plot heap
-
Use Bruno as an alternative to the Web UI for interacting with the device or simulator. For more details see Bruno Usage.
- Make sure that
.envdoesn't contain any temporary data. It's best to generate a new one:./dev.rs new env - Build the application in release mode and upload to ESP32 target:
./dev.rs run esp --release
- For more details on ESP32 usage refer to retro-clock-esp.

