Le cFos Charging Manager permet l'évaluation dynamique des formules. Cette fonctionnalité est disponible pour un compteur de type "Expression" et pour les règles de tarification de type "Formule".
Vous pouvez donc mettre en place des compteurs qui calculent des valeurs provenant d'autres compteurs ou EVSE, les tenir à disposition et les afficher. Les règles de charge peuvent également utiliser des formules pour calculer dynamiquement le courant de charge et accéder aux compteurs et aux EVSE (y compris les compteurs de type "Expression").
Les opérations suivantes sont possibles avec les formules :
+ - * / % | Addition, soustraction, multiplication, division, modulus |
& | | bit par bit AND et OR |
^ | Calcul de la puissance, par exemple 10^2 = 100 |
min(x,y) | Minimum de x et y, plus de 2 arguments possibles |
max(x,y) | Maximum de x et y, plus de 2 arguments possibles |
abs(x) | Valeur absolue de x, par exemple abs(-2) = 2 |
clamp(x,min,max) | Valeur x = min (si x < min), x = max (si x > max), sinon conserver x |
round(x) | Arrondir x à un nombre entier. Exemple : Arrondir à 1 chiffre après la virgule : round(10*x)/10. |
sqrt(x) | Racine carrée de x |
exists(x) | true si la variable x existe, false sinon |
En outre, les expressions logiques suivantes sont possibles :==
(égal), !=
(inégal), <
(moins), <=
(moins égal), >
(plus grand), >=
(plus grand-égal), !
(pas), ||
(logique Or), &&
(logique And), ?
(opérateur conditionnel, par exemple x ? y : z
, renvoie y si x est vrai, sinon z
)
Cela permet, par exemple, de couper le courant en fonction des conditions : M1.current >= 6500 ? M1.current : 0
renvoie le courant de M1 s'il est supérieur à 6,5A et 0 sinon, ce qui met en pause la charge. Pour ces conditions, il est également possible d'interroger les entrées (voir ci-dessous)
Les noms suivants sont possibles :
Mx | Compteur avec ID d'unité x, par exemple M1 |
Ex | EVSE avec ID de dispositif x, par exemple E1 |
Il est également possible d'accéder à des compteurs virtuels, comme le surplus solaire, l'abonnement au réseau ou "Power avail. for EVSEs" (puissance disponible pour les wallbox), en configurant le compteur et en utilisant ensuite l'ID de l'appareil correspondant dans la formule.
Vous pouvez ensuite accéder aux valeurs individuelles des unités au moyen du point. Ceux-ci sont appelés comme suit :
current_l1 | Courant de la phase 1 en mA |
current_l2 | Courant de la phase 2 en mA |
current_l3 | Courant de la phase 3 en mA |
current | Courant de la phase actuelle en mA (pour les règles de charge, le Charging Manager interroge toutes les phases l'une après l'autre ; pour les compteurs de type " Expression ", la phase respective à laquelle la formule se réfère s'applique. Si vous avez spécifié une formule pour le "courant L1", vous pouvez omettre les champs pour le courant L2 et L3. C'est alors la formule pour le courant L1 qui est utilisée) |
power_w | Puissance active actuelle en watts |
offered | Boîte murale (Wallbox) : Courant actuel proposé en mA |
import_wh | Energie tirée en Wh |
export_wh | Énergie injectée en Wh |
dt | Le temps écoulé depuis la dernière mise à jour passée (en secondes), uniquement pour le compteur "Expression", voir aussi CM._dt. |
inputN | Numéro d'entrée N de l'appareil, 1 = actif, 0 = inactif, N est le numéro de l'entrée, commençant par 1. |
soc | SOC, pourcentage de charge (compteur/mémoire) - si supporté par l'appareil |
id | Id de l'appareil, ID Modbus |
txn_duration | Durée de la transaction en cours en secondes (EVSE) |
charging_dur | Temps de charge effectif de la transaction en cours en secondes (Wallbox) |
txn_energy | Énergie chargée de la transaction actuelle en Wh (EVSE) |
min_current | Courant de charge minimal en mA (EVSE) |
max_current | Courant de charge maximal en mA (EVSE) |
state | Statut : 1 attente, 2 branché, 3 en charge, 4 en charge avec ventilation, 5 erreur, 6 hors ligne (EVSE) |
cphases | Nombre de phases en charge (0-3) |
pphases | Nombre de phases de chargement prédites (0-3) |
lb_cur_l1 | Courant actuel calculé de la phase 1 en mA (Wallbox). Uniquement pendant le calcul des règles de charge de la Wallbox, sinon 0 |
lb_cur_l2 | Courant actuel calculé de la phase 2 en mA (Wallbox). Uniquement pendant le calcul des règles de charge de la Wallbox, sinon 0 |
lb_cur_l3 | Courant actuel calculé de la phase 3 en mA (Wallbox). Uniquement pendant le calcul des règles de charge de la Wallbox, sinon 0 |
lb_cur | Courant actuel calculé de la phase actuelle en mA (Wallbox). Uniquement pendant le calcul des règles de charge de la Wallbox, sinon 0. Le Charging Manager interroge toutes les phases les unes après les autres. |
surplus_pcur | Courant PV excédentaire par phase (prédite) en mA |
surplus_wanted | 1, si une règle d'excédent PV a déjà été appliquée, sinon 0 |
budget | KWh ou minutes sur le budget actuel |
budget_amount | Sur le budget actuel kWh ou minutes maximum |
budget_used | KWh ou minutes utilisés sur le budget actuel |
com_err | 1, s'il y a une erreur COM, sinon 0 |
com_err2 | 1, si une erreur COM est présente pendant plus de 12 sec, sinon 0 |
reactive_power | Puissance réactive prédéfinie en watts (si l'appareil le supporte), valeurs positives : Inductif, valeurs négatives : Capacitif |
switch_phases | Pour les wallboxes avec changement de phase : changement de phase manuel, 1 = monophasé, 3 = triphasé, -1 = changement de phase automatique |
departure | ISO 15118 Heure de départ comme Unit timestamp (pour les Wallbox qui le supportent, sinon 0) |
req_energy | ISO 15118 Énergie nécessaire en Wh (pour les Wallboxes qui le supportent, sinon 0) |
plugin_start | Unix timestamp, heure à laquelle le câble a été branché |
plugin_energy | Énergie chargée jusqu'à présent en Wh à partir du moment où le câble est branché |
M1.current_l1 | Courant du compteur M1, phase 1 |
E2.import_wh | Wh consommé de l'EVSE E2 |
E3.power_w | Puissance de charge actuelle de E3 en watts |
Si l'on utilise les formules pour un compteur de type "Expression", on peut aussi omettre l'ID de l'appareil. Les noms de champs se réfèrent alors à ce compteur, par exemple 'power_w' est alors la puissance de ce compteur en watts. Avec 'dt', on peut réaliser quelques fonctions étendues, par ex. dans un compteur de type "Expression" :
import_wh + M1.power_w * dt / 3600
actualise l'énergie prélevée en fonction de la puissance pendant le temps de mise à jour écoulé(power_w * (20 - dt) + M1.power_w * dt) / 20
lisse la puissance sur les 20 dernières secondes.date
date.year | Année en cours |
date.month | Mois de 0 à 11 |
date.day | Jour de 1..31 |
date.weekday | Jour de la semaine SO=0, LUN=1, MARD=2, ... Sa=6 |
date.yearday | Jour de l'année de 0..366 |
date.hour | Heure de 0 à 23 |
date.minute | Minute de 0 à 60 |
date.second | Secondes de 0 à 60 |
date.daysecond | Seconde de ce jour de 0..86399 |
date.dayminute | Minute de ce jour de 0..1439 |
date.dst | 0 = heure d'hiver, 1 = heure d'été |
date.timestamp | Unix timespamp, secs since 1.1.1970 |
PB (nur cFos Power Brain)
PB.input1 | S0 Input 1, 1 = actif, 0 = inactif |
PB.input2 | S0 Input 2, 1 = actif, 0 = inactif |
CM Variables du gestionnaire de charge
Ces variables peuvent être définies par l'admin sous "Configuration". Par exemple, si l'admin définit la variable 'var_x' à 1.5, CM.var_x renvoie la valeur 1.5.
Variables prédéfinies :
_num_charging : Nombre de wallboxes actuellement en charge
num_charging1 : nombre de wallboxes actuellement en charge, 1 si aucune ne charge
_max_total_current : courant maximal du raccordement domestique en mA par phase
_max_total_evse_current : courant maximal pour les Wallbox en mA par phase
_price : prix actuel de l'électricité
_price_level : niveau actuel du prix de l'électricité, -2=très cher, -3=chaud, -4=normal, -5=bon marché, -6=très bon marché
surplus solaire : excédent actuel en watts
org_surplus : excédent solaire tel que le gestionnaire de charge l'aurait calculé indépendamment de ses propres formules
_storage_home_max_capacity : capacité totale de stockage, Home, si indiqué dans la configuration du compteur, en Wh
_storage_home_capacity : capacité actuelle du stockage, Home, si indiqué dans la configuration du compteur, en Wh
_storage_all_max_capacity : capacité totale de stockage, All, si spécifié dans la configuration du compteur, en Wh
_storage_all_capacity : capacité actuelle de la mémoire, All, si indiqué dans la configuration du compteur, en Wh
_max_total_current_prc : pourcentage du courant de charge total maximal disponible. Cette variable peut également être écrite (par des définitions de compteurs et des variables du Charging Manager)
dt : le temps écoulé depuis la dernière mise à jour passée (en secondes).
Utilisation des objets globaux:
charge 8A starting at 8:00am: date.dayminute >= 480 ? 8000 : 0
charge 16A on Saturday and Sunday: date.weekday == 5 || date.weekday == 6 ? 16000 : 0
charge 6A if input 2 active: PB.input2 ? 6000 : 0
charge 6A if CM variable non-zero: cm.var1 ? 6000 : 0
Remarque:
Sous Compteurs personnalisés, vous trouverez également des instructions sur la manière d'utiliser des formules avec des variables et des sorties globales Charging Manager.
GM Compteurs globaux
GM.grid_demand | Housse filet |
GM.consumed | Consommation |
GM.produced | Génération |
GM.consumed_evse | Consommation des voitures électriques |
GM.available_evse | Puissance disponible |
GM.surplus | Excédent PV |
GM.storage_home | Mémoire Accueil |
GM.storage_all | Mémoire Tout |
GM.error | La performance par l'erreur |
Utilisation des compteurs globaux
Jeder Zähler hat die Felder power_w, current, current_l1, current_l2, current_l3, import_wh und export_wh,
z.B. GM.prod_pwr.current_l1 oder GM.cons_pwr.power_w
. Bei 'current' wird der Strom der gerade betrachteten Phase ausgewertet. Ströme werden in mA geliefert, Leistung in W, Energie in Wh.
Vous souhaitez limiter davantage le courant de charge par rapport à un compteur de consommation d'un appartement. Pour ce faire, vous pouvez établir une règle de charge avec la formule 16000 - M1.current
.
M1 est le compteur qui mesure la consommation de l'appartement. La gestion de la charge du cFos Charging Manager essaie d'abord de fournir à l'EVSE le courant maximum par rapport à la puissance de connexion de la maison, mais le limite ensuite à 16A moins la consommation de l'appartement.
Au moyen de min_price(s), max_price(s), vous pouvez déterminer le prix le plus avantageux de votre fournisseur d'énergie en euros, en recherchant les prix depuis l'heure actuelle jusqu'à max s secondes du jour ou du jour suivant, par ex. min_price(25200) fournit le prix le plus avantageux jusqu'à 7h00 du matin. Ainsi, vous pouvez par exemple créer une règle de chargement avec la condition CM._price <= min_price(25200), afin de charger au moment le plus avantageux, mais avec la condition que vous voulez par exemple partir à partir de 8:00 (en supposant 1 heure de chargement). De la même manière, il existe encore les deux fonctions min_price_secs(s) et max_price_secs(s) qui renvoient l'heure de début du prix le plus avantageux en secondes du jour entamé. Vous pouvez ensuite les comparer avec date.daysecond, par exemple.