YaSolR
YaSolR is an ESP32 firmware for Solar Router compatible with nearly any existing hardware components. It supports most hardware used in routers like:
If you already have a Solar Router at home based on ESP32, built by yourself or someone else, there is a good chance that YaSolR will be compatible.
YaSolR is the software and this website will help you build your router.
To know more about how Solar Router work, please go to the overview page.
![]() |
![]() |
YaSolR Benefits
YaSolR is the most optimized and powerful Open-Source Solar Router firmware available. There is simply no match in terms of features, performance, reactivity and precision. It is also a big Open-Source project following best development practices.
- β‘ Best reactivity with more than 3 adjustments per second
- Other routers: usually around 1 adjustment per second or 1 every 2 second (π)
- π Fast measurements: YaSolR can read about 20 measurements per second
- Other routers: usually around 5 measurement per second or less (π)
- π― PID algorithm with filtering: YaSolR uses an advanced PID to control the routing, which leads to:
- More precision
- Less overshoots
- Less oscillations
- Less over-consumptions
- Less over-excess
- ποΈ PID Tuning: YaSolR offers a PID tuning screen to adjust the PID parameters in real time, without recompiling the code and see the effect
- Other routers: no PID and no PID tuning screen (π)
- π 50 / 60 Hz Frequency Support:
- Supports 50 Hz and 60 Hz
- Supports auto-detection of the frequency
- Other routers: usually only support 50 Hz (π)
- π¬ 12-bits resolution: YaSolR is the only router able to precisely control at a Watt level a load of more than 4000W
- Other routers: usually have a precision of 100 steps only, meaning 30W for a load of 3000W, 40W for a load of 4000W (π)
- π‘ Zero-Cross Pulse Analysis: YaSolR is the only router using an advanced library to analyze ZC pulses to remove any spurious effects and find the correct 0V crossing point.
- Other routers: they simply trigger at the pulse, which can happen way before the actual 0V crossing point, leading to an inefficient routing (π)
-
π€ Wide compatibility: YaSolR includes mechanism to play nice with other routers or EV charging stations
-
π 3-Phase support (with JSY-333, Shelly or MQTT)
-
π MQTT, Home Assistant, REST API support
-
π Harmonics: YaSolR includes mechanisms to help you visualize and lower harmonics to comply with regulations
-
π Excess Sharing: YaSolR allows the first output to share the excess with the second output if you need to 2 outputs to work at the same time
- π οΈ Years of development experience: YaSolR is built on years of development experiences and uses the most advanced and efficient libraries available on ESP32 and Arduino:
- MycilaDimmer: the most advanced and efficient dimmer library for ESP32, with support for many dimmer types, phase control, cycle stealing control, etc
- MycilaPulseAnalyzer: an advanced library to analyze ZC pulses to remove any spurious effects and find the correct 0V crossing point
- MycilaJSY: a library to interface with JSY devices for measurement and control
- MycilaPZEM: a library to interface with PZEM devices for measurement and control
- MycilaUtilities: an advanced PID library with filtering
- π§ Huge Hardware support:
- DS18 Temperature Sensors
- SSD1307, SH1106, SH1107 I2C OLED Displays
- Dimmers:
- Synchronous (normal) Solid State Relays (Cycle Stealing)
- Random Solid State Relays (Phase Control and Cycle Stealing)
- RobotDyn 24A and 40A (Phase Control and Cycle Stealing)
- Voltage Regulators (Loncont LSA or LCTC) with DfRobot GP8211S, GP8403 or GP8413 DAC (Phase Control)
- Measurement devices for grid and output
- MQTT (grid only)
- Victron Modbus TCP (grid only)
- JSY-MK-163, JSY-MK-227, JSY-MK-229, JSY-MK-193, JSY-MK-194, JSY-MK-333 (grid only)
- PZEM-004T v3 and v4 (outputs only)
- Remote JSY through Mycila JSY App
- ESP32 boards:
- Denky D4
- ESP-32S
- ESP32-DevKitC (recommended)
- ESP32-S3-DevKitC-1 (recommended)
- Olimex ESP32-GATEWAY (ETH support)
- Olimex ESP32-POE (ETH support)
- T-ETH-Lite ESP32 S3 (recommended - ETH support)
- Waveshare ESP32-S3 ETH Board (recommended - ETH support)
- WIPI 3
- WT32-ETH01 (ETH support)
Detailed Features
- Grid Measurements
- Outputs
- Relays
- Monitoring and Management
- MQTT, REST API and Home Automation Systems
- Online / Offline modes
- PID Control and Tuning
- Virtual Excess and EV Charger Compatibility
Grid Measurements
Measuring the grid power and voltage is essential to know how much power is available to route. YaSolR supports many ways to measure the grid power and voltage:
MQTT(Home Assistant, Jeedom,Shelly EM, etc)- Victron Modbus TCP
JSY-MK-163,JSY-MK-227,JSY-MK-229,JSY-MK-193,JSY-MK-194,JSY-MK-333(3-Phase), all on TTL or RS485- Remote JSY through Mycila JSY App
Outputs
YaSolR supports up to 2 outputs, connected to a resistive load. Each output is composed of the following components:
- Dimmer
- Bypass Relay (optional)
- Temperature Sensor (optional)
- Measurement device (optional)
- Output Features
Dimmer
A dimmer controls the power sent to the load. Supported dimmers:
| Β | RobotDyn 24A![]() |
RobotDyn 40A![]() |
Random SSR![]() |
Zero-Cross SSR![]() |
Voltage Regulator with DAC![]() |
|---|---|---|---|---|---|
Phase Control |
β
|
β
|
β
(ZCD module required) |
β | β |
Cycle Stealing Control |
β
|
β
|
β
(ZCD module required) |
β | β |
TIP
ZCD module required means that the dimmer requires a Zero-Cross Detection module so that the ESP32 knows when the AC voltage crosses the zero point (0V). The build page helps you pick a ZCD module.
WARNING
The LSA / LCTC Voltage Regulators need to be controlled through a DAC (GP8211S, GP8403 or GP8413) or a PWM to Analog (0-10V) converter.
Bypass Relay (optional)
A bypass relay allows to force a heating at full power and bypass the dimmer at a given schedule or manually.
Keeping a dimmer on generates heat so a bypass relay can be installed to avoid using the dimmer.
If no bypass relay is installed, the dimmer will be used instead and will be set to 0-100% to simulate the relay.
Here are the supported bypass relays:
| Electromagnetic Relay | Zero-Cross SSR | Random SSR |
|---|---|---|
![]() |
![]() |
![]() |
TIP
The electromagnetic relay above is interesting because it has both a NO and NC contacts. The NC contact (closed when relay is in default open position) can be connected to the dimmer and used to prevent any power to go through the dimmer when the bypass relay is on.
Temperature Sensor (optional)
Measuring the temperature of the water tanker is important to be able to trigger automatic heating based on temperature thresholds, or stop the routing if the temperature i reached. YaSolR supports the following temperature measurement methods:
- MQTT topic that will be used to receive the temperature
- DS18B20 temperature sensor connected to the router
Measurement device (optional)
Each output supports an optional measurement device to measure the power routed to the load. Here is a list of all supported devices:
JSY-MK-163,JSY-MK-227,JSY-MK-229,JSY-MK-193,JSY-MK-194, all on TTL or RS485- Remote JSY through Mycila JSY App
PZEM-004T v3,PZEM-004T v4
Output Features
-
Automatic Resistance Calibration: if a JSY or PZEM is installed, automatically discover and save the resistance value of the connected load. - Power sharing between outputs:
Excess Ratio: Set the ratio of the excess to route to the load (e.g. 80% of the excess)Excess Power Limiter (W): Set a limit in watts of the excess to route to the load (e.g. route only up to 2000W even if more excess is available)
- Dimmer control:
Dimmer Automatic Control/Manual Control: Automatically send the grid excess to the resistive load through the dimmer (or manually control the dimmer yourself if disabled)Dimmer Range Remapping: Remap the dimmer duty to a different range (e.g. 10-80%).Dimmer Duty Limiter: Set a limit to the dimmer power to avoid routing too much powerTemperature Limiter: Set a temperature limit to stop the dimmer when a temperature is reached. This temperature can be different than the temperature used in auto bypass mode.
- Bypass control:
Bypass Automatic Control/Manual Control: Automatically force a heating as needed based on days, hours, temperature range, or control it manuallyBypass Schedule: Set a schedule to automatically trigger the bypass relay at given days and hoursBypass Temperature Control: Set a temperature range to automatically trigger the bypass relay when the temperature is in this rangeBypass Timeout: Set a timeout to automatically stop the bypass after a certain time (especially useful when activating the bypass manually)
Statistics: Harmonic information, power factor, energy, routed power, etc
Relays
YaSolR supports up to 2 NO / NC relays to control external resistive loads or contactors.
Automatic Control/Manual Control: You can specify the resistive load power in watts connected to the relay. If you do so, the relay will be automatically activated based on the excess power.
Monitoring and Management
- Display
- System temperature sensor
- Configuration Backup & Restore
- Debug Mode (ESP startup logs, Web Console, System information, etc)
- Energy Reset
- OTA Updates
- Live GPI assignment view
- Harmonics information and visualization
- Graphs (grid power, routed power, PID tuning, etc)
- Static IP, AP mode, Captive Portal, NTP, etc
- Admin password
MQTT, REST API and Home Automation Systems
The router exposes a lot of statistics and information through MQTT and REST API and provides a very good integration with Home Assistant or other home automation systems.
PID Control and Tuning
The router uses a PID controller to control the dimmers and you have full control over the PID parameters to tune it. Demo on Youtube:
Virtual Excess and EV Charger Compatibility
Thanks to power measurement, the router also provides these features:
Virtual Excess: Expose the virtual excess (MQTT, REST API, web) which is composed of the current excess plus the routing powerEV Charger Compatibility(i.e OpenEVSE): Donβt prevent an EV charge to start (router can have lower priority than an EV box to consume available production excess)
A measurement device is required to use these features.








