Skip to content

Commit a1d6cda

Browse files
authored
feat: Add scheduler to define force run
2 parents 37cb8b6 + 153d95e commit a1d6cda

11 files changed

Lines changed: 378 additions & 1 deletion

docs/en/firmware.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ Packages are :
1010
* **Engine** : design to determine how much of energy and when surplus of energy should be diverted to the load.
1111
* **Regulator** : design to channel the surplus of energy to a designated load.
1212
* **Energy counter** : design to report the amount of energy diverted to the load.
13-
* **Temperature limiter**: design to stop the system when a temperature limit is reached
13+
* **Temperature limiter**: design to stop the system when a temperature limit is reached.
14+
* **Scheduler** : design to schedule automatisation.
1415

1516
## Packages
1617

docs/en/installation.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ A **proxy** just need 1 **power meter** package
6262
* [Energy Counter Theorical](energy_counter_theorical.md)
6363
Calculate energy savec base on energy diverted and load power.
6464

65+
#### Step 2.5 : Add a Scheduler (*Optionnel*)
66+
67+
* [Scheduler Forced Run](scheduler_forced_run.md)
68+
Stop solar routing and force load power between begin and end hour.
69+
6570
### Step 3: Configure your solar router
6671

6772
Each package requires a configuration which is done in `vars` section of `packages`.

docs/en/scheduler.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Scheduler
2+
3+
A *scheduler* is designed to perform automation directly via EspHome, to be more robust in the event of loss of connection with HomeAssistant, for example.
4+
5+
Each *scheduler* exposes controls to customize the automation to your needs from the HomeAssistant interface.
6+
7+
The first example is to enable forced load operation during off-peak hours.

docs/en/scheduler_forced_run.md

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# Scheduler Forced Run
2+
3+
The *scheduler forced run* is designed to automate solar router shutdown and forced run at a certain load power.
4+
5+
Examples of use:
6+
7+
- Enable forced run of load during off-peak hours (Router Level=100%)
8+
- Deactivate the router and switch off the load to make room for other uses (Router Level=0%).
9+
10+
This *scheduler* exposes controls for customizing automation to your needs from the HomeAssistant interface.
11+
12+
![HA](images/SchedulerForcedRunInHomeAssistant.png){ align=left }
13+
!!! note ""
14+
**Controls**
15+
16+
* ***Activate scheduler***
17+
Controls whether the scheduler should be activated or not.
18+
This allows you to deactivate the scheduler according to your own criteria (e.g. if your water heater has already had enough power during the day, there's no need to force it to run at night).
19+
* ***Begin Hour***
20+
From 0:00 to 23:00. Time at which forced operation starts.
21+
* ***Begin Minute***
22+
From 0 minutes to 55 minutes, in 5-minute steps.
23+
If the start time is 1h and the minutes are 15 minutes, then forced operation starts at 1h15.
24+
* ***Checking End Threshold***
25+
From 0 minutes to 720 minutes, in 5-minute steps.
26+
This option lets you define a safety margin to check every 5 minutes between the end of the schedule + X minutes that the router has returned to operation.
27+
For example, if the end time is set to 2:00 and the verification threshold to 60 minutes, every 5 minutes between 2:00 and 3:00 (inclusive) the scheduler will restart the solar router if it is stopped.
28+
This ensures that the schedule ends even if the ESP crashes at the end time.
29+
* ***End Hour***
30+
From 0:00 to 23:00. Time at which forced operation stops.
31+
* ***End Minute***
32+
From 0 minutes to 55 minutes, in 5-minute steps.
33+
If the end time is 1h and the minutes are 15 minutes, then the forced walk schedule ends at 1h15.
34+
* ***Router level***
35+
From 0% to 100% in 1% steps.
36+
Defines the target level at which the router will be set while the scheduler is running between the start and end times.
37+
38+
39+
## Simple Configuration
40+
41+
To use more than one of these packages, add the following lines to your configuration file:
42+
43+
```yaml linenums="1"
44+
packages:
45+
scheduler_forced_run:
46+
url: https://github.com/XavierBerger/Solar-Router-for-ESPHome/
47+
files:
48+
- path: solar_router/scheduler_forced_run.yaml
49+
```
50+
51+
## Multiple Configuration
52+
53+
If you want to use several instances of this package, for example to program one forced operation during the day and another at night, add the following lines to your configuration file:
54+
55+
```yaml linenums="1"
56+
packages:
57+
scheduler_forced_run:
58+
url: https://github.com/XavierBerger/Solar-Router-for-ESPHome/
59+
files:
60+
- path: solar_router/scheduler_forced_run.yaml
61+
vars:
62+
scheduler_unique_id: "NightForced"
63+
- path: solar_router/scheduler_forced_run.yaml
64+
vars:
65+
scheduler_unique_id: "DayForced"
66+
```
67+
68+
It is necessary to define `scheduler_unique_id` in the `vars` section, as shown in the example above. This variable must not contain spaces or special characters, and must be unique for each *scheduler forced run*. It allows you to have as many instances as you need without any conflicts.
69+
70+
## Advanced Configuration (script)
71+
72+
73+
This package provides the option of calling a custom script every 5 minutes during schedule execution.
74+
75+
For example, to stop scheduling before the end time if a temperature sensor reaches a target value, add the following lines to your configuration file:
76+
77+
```yaml linenums="1"
78+
packages:
79+
scheduler_forced_run:
80+
url: https://github.com/XavierBerger/Solar-Router-for-ESPHome/
81+
files:
82+
- path: solar_router/scheduler_forced_run.yaml
83+
vars:
84+
scheduler_unique_id: "NightForced"
85+
custom_script: check_temperature_for_NightForcedScheduler
86+
87+
script:
88+
# ...
89+
- id: check_temperature_for_NightForcedScheduler
90+
mode: single
91+
then:
92+
-if:
93+
condition:
94+
- lambda: return id(myTemperatureSensor).state >= 80;
95+
then:
96+
# Name of the switch is different for every scheduler, it depend of the scheduler_unique_id (default value: forced) : "${scheduler_unique_id}_scheduler_activate"
97+
- switch.turn_off: NightForced_scheduler_activate
98+
```
99+
100+
It is necessary to define `custom_script` in the `vars` section, as shown in the example above. This variable is used to pass the name of the script that will be called every 5 minutes when the scheduler is run.

docs/fr/firmware.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Les *packages* sont :
1111
* **Regulator** : conçu pour canaliser le surplus d'énergie vers une charge désignée.
1212
* **Energy counter** : conçu pour rapporter la quantité d'énergie détournée vers la charge.
1313
* **Temperature limiter** : conçu pour arrêter le système lorsqu'une limite de température est atteinte.
14+
* **Scheduler** : conçu pour planifier des automatisations.
1415

1516
## Packages
1617

docs/fr/installation.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ Un **proxy** n'a besoin que d'un package **power meter**
6060
* [Compteur d'énergie théorique](energy_counter_theorical.md)
6161
Calculer l'énergie économisée basée sur l'énergie détournée et la puissance de charge.
6262

63+
#### Étape 2.5 : Ajouter un Planificateur (*Optionnel*)
64+
65+
* [Planificateur de marche forcée](scheduler_forced_run.md)
66+
Stop le routeur solaire et force la puissance de charge entre une heure de début et de fin.
67+
6368
### Étape 3 : Configurer votre routeur solaire
6469

6570
Chaque package nécessite une configuration qui se fait dans la section `substitution`.

docs/fr/scheduler.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Scheduler / Planificateur
2+
3+
Un *scheduler / planificateur* est conçu pour effectuer une automatisation directement via EspHome afin d'être plus robuste en cas de perte de liason avec HomeAssistant par exemple.
4+
5+
Chaque *scheduler / planificateur* expose des contrôles afin de personnaliser l'automatisation à vos besoins depuis l'interface HomeAssistant.
6+
7+
Le premier exemple d'utilisation est de permettre une marche forcée de la charge pendant les heures creuses.

docs/fr/scheduler_forced_run.md

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# Scheduler Forced Run / Planificateur marche forcée
2+
3+
Le *scheduler forced run / planificateur marche forcée* est conçu pour automatiser l'arrêt du routeur solaire et la marche forcée à une certainne puissance de la charge.
4+
5+
Exemples d'utilisation:
6+
7+
- Permettre une marche forcée de la charge pendant les heures creuses. (Router Level=100%)
8+
- Désactiver le routeur et éteindre la charge afin de laisser la place à d'autres usages (Router Level=0%)
9+
10+
Ce *scheduler / planificateur* expose des contrôles afin de personnaliser l'automatisation à vos besoins depuis l'interface HomeAssistant.
11+
12+
![HA](images/SchedulerForcedRunInHomeAssistant.png){ align=left }
13+
!!! note ""
14+
**Contrôles**
15+
16+
* ***Activer le planificateur***
17+
Contrôle si le planificateur doit être activé ou non.
18+
Ceci permet de désactiver la planification suivant vos propres critères (par exemple si votre chauffe-eau à eu déjà assez de puissance en journée, inutile de faire une marche forcée la nuit).
19+
* ***Heure de début du planifacteur***
20+
De 0h à 23h. Heure à laquelle la marche forcée commence.
21+
* ***Minute de début du planifacteur***
22+
De 0 minute à 55 minutes, avec un pas de 5 minutes.
23+
Si l'heure de début est à 1h et les minutes à 15 minutes, alors la planification de marche forcée débute à 1h15.
24+
* ***Seuil de vérification de l'arrêt du planificateur***
25+
De 0 minute à 720 minutes, avec un pas de 5 minutes.
26+
Cette option permet de définir une marge de sécurité afin de vérifier toutes les 5 minutes entre la fin de la planification + X minutes que le routeur à bien été remis en fonctionnement.
27+
Par exemple si l'heure de fin est définit à 2h00 et le seuil de vérification à 60 minutes, toutes les 5 minutes entre 2h et 3h (inclus) le planificateur relance le routeur solaire s'il est arrêté.
28+
Ceci permet de s'assurer que la planification prend fin même s'il y a un plantage de l'ESP lors de l'heure de fin.
29+
* ***Heure de fin du planifacteur***
30+
De 0h à 23h. Heure à laquelle la marche forcée s'arrête.
31+
* ***Minute de fin du planifacteur***
32+
De 0 minute à 55 minutes, avec un pas de 5 minutes.
33+
Si l'heure de fin est à 1h et les minutes à 15 minutes, alors la planification de marche forcée termine à 1h15.
34+
* ***Niveau du routeur***
35+
De 0% à 100% avec un pas de 1%.
36+
Définit le niveau cible où le routeur sera réglé pendant le fonctionnement du planificateur entre l'heure de début et de fin.
37+
38+
39+
40+
## Configuration basique
41+
42+
Pour utiliser plusieurs ce package, ajoutez les lignes suivantes à votre fichier de configuration :
43+
44+
```yaml linenums="1"
45+
packages:
46+
scheduler_forced_run:
47+
url: https://github.com/XavierBerger/Solar-Router-for-ESPHome/
48+
files:
49+
- path: solar_router/scheduler_forced_run.yaml
50+
```
51+
52+
## Configuration multiple
53+
54+
Pour utiliser plusieurs instances de ce package, par exemple pour programée une marche forcée en journée et une autre la nuit, ajoutez les lignes suivantes à votre fichier de configuration :
55+
56+
```yaml linenums="1"
57+
packages:
58+
scheduler_forced_run:
59+
url: https://github.com/XavierBerger/Solar-Router-for-ESPHome/
60+
files:
61+
- path: solar_router/scheduler_forced_run.yaml
62+
vars:
63+
scheduler_unique_id: "NightForced"
64+
- path: solar_router/scheduler_forced_run.yaml
65+
vars:
66+
scheduler_unique_id: "DayForced"
67+
```
68+
69+
Il est necessaire de définir `scheduler_unique_id` dans la section `vars` comme montré dans l'exemple ci-dessus. Cette variable ne doit pas contenir d'espace ou de caractères spéciaux, et doit être unique pour chaque *scheduler forced run / planificateur marche forcée*. Elle permet d'avoir autant d'instance que nécessaire sans aucun conflits.
70+
71+
72+
## Configuration avancée (script)
73+
74+
Ce package fournit la possibilité d'appeler un script personnalisé toutes les 5 minutes lors de l'éxécution de la planification.
75+
76+
Par exemple pour arrêter la planification avant l'heure de fin si un capteur de température atteint une valeur cible, ajoutez les lignes suivantes à votre fichier de configuration :
77+
78+
```yaml linenums="1"
79+
packages:
80+
scheduler_forced_run:
81+
url: https://github.com/XavierBerger/Solar-Router-for-ESPHome/
82+
files:
83+
- path: solar_router/scheduler_forced_run.yaml
84+
vars:
85+
scheduler_unique_id: "NightForced"
86+
custom_script: check_temperature_for_NightForcedScheduler
87+
88+
script:
89+
# ...
90+
- id: check_temperature_for_NightForcedScheduler
91+
mode: single
92+
then:
93+
-if:
94+
condition:
95+
- lambda: return id(myTemperatureSensor).state >= 80;
96+
then:
97+
# Name of the switch is different for every scheduler, it depend of the scheduler_unique_id (default value: forced) : "${scheduler_unique_id}_scheduler_activate"
98+
- switch.turn_off: NightForced_scheduler_activate
99+
```
100+
101+
Il est necessaire de définir `custom_script` dans la section `vars` comme montré dans l'exemple ci-dessus. Cette variable permet de transmettre le nom du script qui sera appellé toutes les 5 minutes lors de l'éxécution du planificateur.
102+
22.9 KB
Loading

mkdocs.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ nav:
3636
- Overview: temperature_limiter.md
3737
- Home Assistant: temperature_limiter_home_assistant.md
3838
- DS18B20: temperature_limiter_DS18B20.md
39+
- Scheduler:
40+
- Overview: scheduler.md
41+
- Forced Run: scheduler_forced_run.md
3942
- Home Assistant:
4043
- Recorder configuration: recorder_configuration.md
4144
- About:

0 commit comments

Comments
 (0)