diff --git a/README-fr.md b/README-fr.md index d9959a5..406d148 100644 --- a/README-fr.md +++ b/README-fr.md @@ -24,6 +24,8 @@ > ![Nouveau](https://github.com/jmcollin78/solar_optimizer/blob/main/images/new-icon.png?raw=true) _*Nouveautés*_ +> * **release 2.1.0** : +> - ajout d'une durée minimale d'allumage en heure creuses. Permet de gérer les équipements qui doivent avoir un minimum d'allumage par jour comme les chauffes-eau ou les chargeurs (voitures, batteries, ……). Si l'ensoleillement n'a pas durée d'atteindre la durée requise, alors l'équipement s'allumera pendant les heures creuses. Vous pouvez en plus définir à quelle heure les compteurs d'allumage sont remis à zéro ce qui permet de profiter des toutes les heures creuses > * **release 2.0.0** : > - ajout d'un appareil (device) par équipement piloté pour regrouper les entités, > - ajout d'un compteur de temps d'allumage pour chaque appareil. Lorsque le switch commandé passe à 'Off', le compteur de temps est incrémenté du temps passé à 'On', en secondes. Ce compteur est remis à zéro tous les jours à minuit. @@ -70,7 +72,9 @@ Si une batterie est spécifiée lors du paramétrage de l'intégration et si le Un temps d'utilisation maximal journalier est paramétrable en facultatif. Si il est valorisé et si la durée d'utilisation de l'équipement est dépasée, alors l'équipement ne sera pas utilisable par l'algorithme et laisse donc de la puissance pour les autres équipements. -Ces 4 règles permettent à l'algorithme de ne commander que ce qui est réellement utile à un instant t. Ces règles sont ré-évaluées à chaque cycle. +Un temps d'utilisation minimal journalier est aussi paramétrable en facultatif. Ce paramètre permet d'assurer que l'équipement sera allumé pendant une certaine durée minimale. Vous spécifiez à quelle heure commence les heures creuses, (`offpeak_time`) et la durée minimale en minutes (`min_on_time_per_day_min`). Si à l'heure indiquée par `offpeak_time`, la durée minimale d'activation n'a pas été atteinte, alors l'équipement est activé jusqu'au changement de jour (paramètrable dans l'intégration et 05:00 par défaut) ou jusqu'à ce que le maximum d'utilisation soit atteint (`max_on_time_per_day_min`). Vous assurez ainsi que le chauffe-eau ou la voiture sera chargée le lendemain matin même si la production solaire n'a pas permise de recharger l'appareil. A vous d'inventer les usages de cette fonction. + +Ces 5 règles permettent à l'algorithme de ne commander que ce qui est réellement utile à un instant t. Ces règles sont ré-évaluées à chaque cycle. # Comment on l'installe ? ## HACS installation (recommendé) @@ -92,8 +96,10 @@ Vous devez spécifier : 1. le sensor qui donne la consommation nette instantanée du logement (elle doit être négative si la production dépasse la consommation). Ce chiffre est indiqué en Watt, 2. le sensor qui donne la production photovoltaïque instantanée en Watt aussi, 3. un sensor ou input_number qui donne le cout du kwh importée, -3. un sensor ou input_number qui donne le prix du kwh exortée (dépend de votre contrat), -3. un sensor ou input_number qui donne la taxe applicable sur les kwh exortée (dépend de votre contrat) +4. un sensor ou input_number qui donne le prix du kwh exortée (dépend de votre contrat), +5. un sensor ou input_number qui donne la taxe applicable sur les kwh exortée (dépend de votre contrat) +6. l'heure de début de journée. A cette heure les compteurs d'uitlisation des équipements sont remis à zéro. La valeur par défaut est 05:00. Elle doit être avant la première production et le plus tard possible pour les activations en heures creuses. Cf. ci-dessus. + Ces 5 informations sont nécessaires à l'algorithme pour fonctionner, elles sont donc toutes obligatoires. Le fait que ce soit des sensor ou input_number permet d'avoir des valeurs qui sont réévaluées à chaque cycle. En conséquence le passage en heure creuse peut modifier le calcul et donc les états des équipements puisque l'import devient moins cher. Donc tout est dynamique et recalculé à chaque cycle. @@ -121,6 +127,8 @@ devices: deactivation_service: "switch/turn_off" battery_soc_threshold: max_on_time_per_day_min: + offpeak_time: + min_on_day_per_day_min: ``` Note: les paramètres sous `algorithm` ne doivent pas être touchés sauf si vous savez exactement ce que vous faites. @@ -140,6 +148,8 @@ Sous `devices` il faut déclarer tous les équipements qui seront commandés par | `deactivation_service` | uniquement si action_mode="service_call" | le service a appeler pour désactiver l'équipement sous la forme "domain/service" | "switch/turn_off" | la désactivation déclenchera le service "switch/turn_off" sur l'entité "entity_id" | | `battery_soc_threshold` | tous | le pourcentage minimal de charge de la batterie pour que l'équipement soit utilisable | 30 | | | `max_on_time_per_day_min` | tous | le nombre de minutes maximal en position allumé pour cet équipement. Au delà, l'équipement n'est plus utilisable par l'algorithme | 10 | L'équipement est sera allumé au maximum 10 minutes par jour | +| `offpeak_time` | tous | L'heure de début des heures creuses au format hh:mm | 22:00 | L'équipement pourra être allumé à 22h00 si la production de la journeé n'a pas été suffisante | +| `min_on_time_per_day_min` | tous | le nombre de minutes minimale en position allumé pour cet équipement. Si lors du démarrage des heures creuses, ce minimum n'est pas atteint alors l'équipement sera allumé à concurrence du début de journée ou du `max_on_time_per_day_min` | 5 | L'équipement est sera allumé au minimum 5 minutes par jour | Pour les équipements à puissance variable, les attributs suivants doivent être valorisés : @@ -175,6 +185,10 @@ devices: battery_soc_threshold: 10 # Une heure par jour maximum max_on_time_per_day_min: 60 + # 1/2h par jour minimum ... + min_on_time_per_day_min: 30 + # ... à partir de 22:30 + offpeak_time: "22:30" - name: "Recharge Tesla" entity_id: "switch.testla_charger" @@ -204,6 +218,10 @@ devices: convert_power_divide_factor: 660 # On ne démarre pas une charge si la batterie de l'installation solaire n'est pas chargée à au moins 50% battery_soc_threshold: 50 + # 4h par jour minimum ... + min_on_time_per_day_min: 240 + # ... à partir de 23:00 + offpeak_time: "22:00" ... ``` Tout changement dans la configuration nécessite un arrêt / relance de l'intégration (ou de Home Assistant) pour être pris en compte. diff --git a/README.md b/README.md index 87a6cd1..4b961a3 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,8 @@ >![New](https://github.com/jmcollin78/solar_optimizer/blob/main/images/new-icon.png?raw=true) _*News*_ -> * **release 2.0.0** : +> * **release 2.1.0** : +> - added a minimum duration of ignition during off-peak hours. Allows you to manage equipment that must have a minimum of ignition per day such as water heaters or chargers (cars, battery, ...). If the sunshine has not reached the required duration, then the equipment will turn on during off-peak hours. You can also define at what time the ignition counters are reset to zero, which allows you to take advantage of all off-peak hours> * **release 2.0.0** : > - added a device per controlled equipment to group the entities, > - added an ignition time counter for each device. When the controlled switch goes to 'Off', the time counter is incremented by the time spent 'On', in seconds. This counter is reset to zero every day at midnight. > - added a maximum time to 'On' in the configuration (in minutes). When this duration is exceeded, the equipment is no longer usable by the algorithm (is_usable = off) until the next reset. This offers the possibility of not exceeding a maximum ignition time per day, even when solar power is available. @@ -70,7 +71,9 @@ If a battery is specified when configuring the integration and if the threshold A maximum daily usage time is optionally configurable. If it is valued and if the duration of use of the equipment is exceeded, then the equipment will not be usable by the algorithm and therefore leaves power for other equipment. -These 4 rules allow the algorithm to only order what is really useful at a time t. These rules are re-evaluated at each cycle. +A minimum daily usage time is also optionally configurable. This parameter ensures that the equipment will be on for a certain minimum duration. You specify at what time the off-peak hours start (`offpeak_time`) and the minimum duration in minutes (`min_on_time_per_day_min`). If at the time indicated by `offpeak_time`, the minimum activation duration has not been reached, then the equipment is activated until the change of day (configurable in the integration and 05:00 by default) or until the maximum usage is reached (`max_on_time_per_day_min`). This ensures that the water heater or the car will be charged the next morning even if the solar production has not allowed the device to be recharged. It is up to you to invent the uses of this function. + +These 5 rules allow the algorithm to only order what is really useful at a time t. These rules are re-evaluated at each cycle. # How do we install it? ## HACS installation (recommended) @@ -92,8 +95,9 @@ You must specify: 1. the sensor which gives the instantaneous net consumption of the dwelling (it must be negative if production exceeds consumption). This figure is indicated in Watt, 2. the sensor which gives the instantaneous photovoltaic production in Watt too, 3. a sensor or input_number which gives the cost of the imported kwh, -3. a sensor or input_number which gives the price of the exported kwh (depends on your contract), -3. a sensor or input_number which gives the applicable tax on the exported kwh (depends on your contract) +4. a sensor or input_number which gives the price of the exported kwh (depends on your contract), +5. a sensor or input_number which gives the applicable tax on the exported kwh (depends on your contract) +6. the start time of the day. At this time the equipment usage counters are reset to zero. The default value is 05:00. It must be before the first production and as late as possible for activations during off-peak hours. See above. These 5 pieces of information are necessary for the algorithm to work, so they are all mandatory. The fact that they are sensors or input_number allows to have values that are re-evaluated at each cycle. Consequently, switching to off-peak hours can modify the calculation and therefore the states of the equipment since the import becomes less expensive. So everything is dynamic and recalculated at each cycle. @@ -121,6 +125,8 @@ devices: deactivation_service: "" battery_soc_threshold: max_on_time_per_day_min: + offpeak_time: + min_on_day_per_day_min: ``` Note: parameters under `algorithm` should not be touched unless you know exactly what you are doing. @@ -140,6 +146,8 @@ Under `devices` you must declare all the equipment that will be controlled by So | `deactivation_service` | only if action_mode="service_call" | the service to call to deactivate the equipment in the form "domain/service" | "switch/turn_off" | deactivation will trigger the "switch/turn_off" service on the entity "entity_id" | | `battery_soc_threshold` | tous | minimal percentage of charge of the solar battery to enable this device | 30 | | | `max_on_time_per_day_min` | all | the maximum number of minutes in the on position for this equipment. Beyond that, the equipment is no longer usable by the algorithm | 10 | The equipment will be on for a maximum of 10 minutes per day | +| `offpeak_time` | all | The start time of off-peak hours in hh:mm format | 22:00 | The equipment can be switched on at 22:00 if the production of the day has not been sufficient | +| `min_on_time_per_day_min` | all | the minimum number of minutes in the on position for this equipment. If at the start of off-peak hours, this minimum is not reached then the equipment will be switched on up to the start of the day or the `max_on_time_per_day_min` | 5 | The equipment will be switched on for a minimum of 5 minutes per day | For variable power equipment, the following attributes must be valued: @@ -174,7 +182,11 @@ devices: # We authorize the pump to start if there is 10% battery in the solar installation battery_soc_threshold: 10 # One hour per day maximum - max_on_time_per_day_min: 60 + max_on_time_per_day_min: 60 + # 1/2h per day minimum ... + min_on_time_per_day_min: 30 + # ... starting at 22:30 + offpeak_time: "22:30" - name: "Tesla Recharge" entity_id: "switch.cloucloute_charger" @@ -204,6 +216,10 @@ devices: convert_power_divide_factor: 660 # We do not start a charge if the battery of the solar installation is not at least 50% charged battery_soc_threshold: 50 + # 4h par day minimum ... + min_on_time_per_day_min: 240 + # ... starting at 23:00 + offpeak_time: "22:00" ... ``` Any change in the configuration requires a stop / restart of the integration (or of Home Assistant) to be taken into account. diff --git a/custom_components/solar_optimizer/manifest.json b/custom_components/solar_optimizer/manifest.json index b8cf85e..da41c54 100644 --- a/custom_components/solar_optimizer/manifest.json +++ b/custom_components/solar_optimizer/manifest.json @@ -10,5 +10,5 @@ "iot_class": "local_polling", "issue_tracker": "https://github.com/jmcollin78/solar_optimizer/issues", "quality_scale": "silver", - "version": "2.0.0" + "version": "2.1.0" } \ No newline at end of file diff --git a/hacs.json b/hacs.json index 1966d24..e6ed078 100644 --- a/hacs.json +++ b/hacs.json @@ -3,5 +3,5 @@ "content_in_root": false, "render_readme": true, "hide_default_branch": false, - "homeassistant": "2024.9.3" + "homeassistant": "2024.11.1" } \ No newline at end of file diff --git a/images/lovelace-eqts.png b/images/lovelace-eqts.png index 199739b..ae025f4 100644 Binary files a/images/lovelace-eqts.png and b/images/lovelace-eqts.png differ