Contadores definidos por el usuario

Nota: El gestor de carga cFos puede leer la mayoría de los inversores de energía solar que utilizan SunSpec (tipo de dispositivo "Inversor de energía solar / Medidor SunSpec"). En este caso, no es necesario crear una definición de contador propia.

El gestor de carga de cFos permite crear sus propias definiciones de contadores para admitir los que no están en el repertorio estándar. Actualmente hay dos tipos: Contadores Modbus y contadores HTTP/JSON. Los archivos de definición para estos contadores son muy similares. Los contadores Modbus leen sus datos a través de Modbus desde registros específicos, mientras que los contadores HTTP/JSON obtienen sus datos a través de una petición HTTP y analizan JSON como respuesta. El Gestor de Carga cFos utiliza un pequeño "lenguaje de consulta" para el análisis sintáctico.

Además de una serie de variables predefinidas, como la corriente y la tensión, los contadores definidos por el usuario también pueden leer variables desconocidas definidas por el usuario, consultar entradas y establecer salidas. La lectura de las variables y la fijación de las salidas permiten la evaluación de las fórmulas. En combinación con las variables del Gestor de Carga y las salidas globales del Gestor de Carga que se describen a continuación, se trata de una función muy potente que permite incluso ciertas tareas de domótica y el control de dispositivos externos como el almacenamiento de baterías. Si se da cuenta de las tareas de control con esto, por favor dénos su opinión. Nos interesa mucho lo que la gente controla con el Charging Manager de cFos y nos ayuda a seguir desarrollando el Charging Manager según las necesidades de los clientes.

Aquí hay un ejemplo de definición para Modbus y otro para HTTP/JSON:
Descargue la definición de muestra para el contador Modbus
Descargue la definición de ejemplo para el medidor HTTP/JSON

El Charging Manager ya viene con algunos archivos de este tipo, pero usted puede cargar sus propios archivos en "Configuración del sistema" y también borrarlos de nuevo.
Aquí encontrará la mayoría de las definiciones de contadores que ofrecemos:
Descargar las definiciones de los contadores suministrados

Si has creado tu propio archivo de contadores y puede ser relevante para otros usuarios, te agradeceríamos que lo pusieras a nuestra disposición. Entonces lo entregaremos con futuras versiones del Charging Manager.

Descargue las definiciones de los contadores adicionales

Estructura de un archivo de definición:

Las definiciones de contadores son archivos JSON con un objeto JSON global que tiene propiedades y objetos hijos. 'rtype' determina el tipo de operación de lectura: 0 = Modbus, 1 = HTTP/JSON. Los números pueden especificarse opcionalmente en decimal o hexadecimal con el prefijo 0x. Además, se permiten los comentarios de una sola línea con //. Le recomendamos que pase sus archivos de definición por un validador de JSON5, por ejemplo, este validador de JSON5

. Definitivamente, debería haber leído el capítulo Fórmulas para entender qué valores se pueden utilizar en las fórmulas de la siguiente referencia.

Las definiciones de Modbus tienen un objeto 'rtu' con las siguientes propiedades:

silence_period, en mseg. determinado, la duración de la pausa antes de un acceso Modbus RTU, para que el dispositivo reconozca el inicio de un mensaje.
silence_same_slave, true: La pausa se observa también con varios accesos al mismo dispositivo.
retries: El número de reintentos si el dispositivo no responde.
rcv_timeout: en mseg. el tiempo máximo de espera por acceso hasta que el dispositivo responde.

Estas propiedades globales se aplican a Modbus TCP y RTU:

modbus_read: El número de función del comando de lectura de Modbus, normalmente 3 o 4.
modbus_read_max_registers: El número máximo de registros que se pueden leer a la vez.
modbus_allow_gaps: true = Se pueden leer áreas de registro no utilizadas en una operación de lectura.

Para Modbus TCP y HTTP/JSON hay un objeto 'tcp' con las siguientes propiedades:

connect_timeout: es mseg. el tiempo máximo de espera para una conexión TCP.
delay_after_connect: en mseg. Haga una pausa después de establecer la conexión antes de enviar el primer comando.

Ambos tipos de definición (Modbus y HTTP/JSON) tienen las siguientes propiedades adicionales:

upd_delay: en mseg. determina el intervalo en el que se puede leer un dispositivo. Algunos dispositivos se sobrecargan si se consultan con demasiada frecuencia.
manufacturer: Cadena, nombre del fabricante. Se muestra en la información ampliada de la baldosa.
delay_accumulated: true = Los valores acumulados (kWh) sólo se consultan cada 3 segundos o si hay suficiente energía. false = Estos valores se consultan siempre.
ui_addr: URL, si es diferente de la dirección del dispositivo para llamar a la interfaz web.
reserved: Array con valores que se interpretan como 0 (útil si el dispositivo admite ciertos valores según el modelo).

Si se omiten las propiedades enumeradas anteriormente, el Gestor de Carga cFos toma valores por defecto que funcionan bien en la mayoría de los casos.

En la definición JSON, el siguiente paso es la definición de las variables que el contador utiliza para leer o calcular los valores de corriente, tensión, etc. El Charging Manager conoce las siguientes variables:
designación_tipo, versión, versión_firmware, serie: Estas forman el nombre del modelo como se muestra en la información extendida de la ficha. Se consultan una vez al configurar o reiniciar el medidor.
voltage_l1..voltage_l3, current_l1..current_l3, power_w, power_var, power_va, power_w_l1..power_w_l3, power_w_l1_minus..power_w_l3_minus, power_w_import, power_w_export: El gestor de carga cFos intenta calcular los valores de voltage_l1..l3, signed current_l1..l3, power_w y power_va a partir de ellos. No es necesario especificar todas las variables. El gestor de carga cFos intenta calcular los valores a partir de las variables existentes.
import_wh, export_wh, import_wh_l1..import_wh_l3, export_wh_l1..export_wh_l3: El gestor de cargas utiliza estas variables para calcular import_wh y export_wh. No es necesario especificar todas las variables. El gestor de carga cFos intenta calcular los valores a partir de las variables existentes.

Además, puede definir otras variables con diferentes nombres que se leen o se calculan mediante fórmulas con cada actualización.

Definición de una variable:

El objeto recibe el nombre de la variable indicada anteriormente y tiene las siguientes propiedades:
fixed: Cadena con valor fijo. Útil si, por ejemplo, no se puede determinar ningún valor, por ejemplo para type_designation o voltage.
expr: Cadena, la variable no se lee sino que se evalúa como una fórmula.
type: Si no es fijo o expr, el tipo de la variable: int16, int32, float, int64, string. Esto es importante para Modbus para leer los registros en el formato correcto. Para JSON/HTTP se suele tomar float.
resolución: float, el valor leído se multiplica por 'resolución'. Los valores de la tensión deben estar en voltios, las corrientes en miliamperios, la potencia en vatios y la energía en vatios-hora (Wh). La "resolución" negativa permite invertir un valor si es de signo contrario.
dirección: número (Modbus) o cadena (HTTP/JSON), el número de registro Modbus o la URL HTTP del valor a leer.
consulta: String, para HTTP JSON la especificación en el lenguaje de consulta del Gestor de Carga con la que encuentra el valor a leer en la respuesta JSON.
order: String, para Modbus el orden de bytes, ya sea "hl" o "lh", en el que está presente el valor. length: number, para Modbus la longitud de una cadena en registros. Con las variables 'version' y 'firmware_version', se utiliza 'length' para convertir las versiones numéricas en cadenas con puntos. Se admiten valores de 2 ó 4 para "longitud", lo que da lugar a los formatos de versión a.b, y a.b.c.d. Para 'length' 2 y el tipo 'int16' el Charging Manager separa el byte bajo y alto por punto, para int32 palabra baja y alta, para 'int64' dword baja y alta. Para 'lenth' 4 e 'int32', el Gestor de Cargas divide el valor en 4 bytes separados por un punto. Para 'int64', las 4 palabras correspondientes.

Definición de las entradas:

El Gestor de Carga puede consultar hasta 32 valores de entrada de diferentes registros o elementos JSON por dispositivo. La propiedad "Inputs" es un array JSON. Debe definir las siguientes propiedades para cada entrada:
dirección: Dirección (registro Modbus o URL).
cuenta: Número de bits de entrada que se leerán con esta petición.
query: Para HTTP/JSON, lenguaje de consulta para encontrar el valor en la respuesta.

El Gestor de Carga cFos lee todas las entradas definidas de esta manera con cada actualización y coloca los bits internamente en una matriz, que luego puede ser consultada con en fórmulas, Input1..InputN..

Definición de salidas:

El Charging Manager puede conmutar hasta 32 salidas por unidad. Todas las salidas se conmutan al final de cada ciclo de actualización si el estado de la salida respectiva ha cambiado.
Debe definir las siguientes propiedades para cada entrada:
dirección: URL HTTP con método HTTP opcional, por ejemplo, GET http://www.example.com?output1=${var1}. Para configurar los registros Modbus, puede utilizar la API HTTP del Gestor de Carga cFos. El Charging Manager detecta los accesos que coinciden en localhost y redirige la petición al gestor interno, por lo que no necesita autorización como en el caso de los accesos externos a la API HTTP.
body: Cuerpo HTTP opcional para POST o PUT.
En la URL y en el cuerpo, puede utilizar fórmulas ${expr} que hagan referencia a variables globales del Gestor de Cargas o del contador respectivo. La fórmula 'expr' se evalúa al establecer la salida y se sustituye en el texto de la URL o el cuerpo. Si, en el ejemplo anterior, http://www.example.com?output1=1 establece la salida y http://www.example.com?output1=0 la borra, puede definir una variable 'var1' y establecerla en 1 o 0 según se desee. De este modo, también puede escribir valores numéricos para controlar el rendimiento de la memoria en los registros Modbus que previamente ha almacenado en una variable mediante una fórmula.
Si en lugar de pasar un valor numérico en la URL necesitas sustituir un texto por otro en función de la fórmula, como en el caso de las tomas WLAN de Shelly, puedes escribirlo así: ${if expr`text1`text2}. El "apóstrofe" es un signo de retroceso (código ASCII 96). Si el 'expr' != 0, se inserta el texto1, en caso contrario el texto2. En el caso de la toma WLAN de Shelly, la URL tiene el siguiente aspecto: http://<ip-addr>/relay/0?turn=${if expr`on`off}, es decir, si expr != 0, el Charging Manager llama a http://<ip-addr>/relay/0?turn=on, en caso contrario http://<ip-addr>/relay/0?turn=off.

Si se introduce una ruta relativa como URL, el Gestor de Carga toma la dirección configurada para el dispositivo correspondiente. Si introduce "localhost" como dominio, el Charging Manager toma la dirección del dispositivo en el que se está ejecutando. Si detecta un acceso a su propia API, utiliza el manejador interno en lugar de ejecutar un acceso HTTP completo, para no tener que almacenar un nombre de usuario y una contraseña en la definición del contador. Una URL que empiece por * hace que el Gestor de Cargas realice siempre un acceso HTTP completo.

Definición de lenguaje de consulta:

Actualmente, los nombres de los miembros y los operadores "." y "[]" pueden utilizarse en las expresiones de búsqueda "query", ejemplos:

pruebaElemento llamado "test"
nombre1.nombre2Elemento llamado "nombre2" en objeto hijo "nombre1"
nombre[idx]Elemento "idx" del elemento objeto "nombre". "idx" puede ser un número, por ejemplo, para matrices o una cadena
nombre["u2"]Elemento "u2" del elemento objeto "nombre", corresponde a "nombre.u2"
name[{"el1": "v1", "el2": 3}].valueSe selecciona el elemento del array que cumple la condición de la notación de objeto y se evalúa el elemento denominado 'valor'. Aquí, por ejemplo, en el array 'nombre', se selecciona el elemento que tiene como objeto los elementos 'el1' con valor 'v1' y 'el2' con valor 3 y luego se devuelve el valor del elemento 'valor' de este objeto.

Variables del Gestor Global de Cargas:

Puede crear variables en la configuración del Gestor de Carga. Puede utilizar un valor fijo o una fórmula como valor. Al final de cada ciclo de actualización, el Gestor de Carga recalcula el valor de estas variables si es necesario. A continuación, puede utilizarlos en (ciertos) parámetros del Gestor de Carga, Reglas de Carga o para controlar las salidas. También puedes escribir Ex.member o Mx.member como variables. Aquí, Exy Mxson el ID de dispositivo de una Wallbox o un contador configurado en el Charging Manager. member es una variable "definida por el usuario" que se almacena en el dispositivo correspondiente. Algunas de las variables pueden tener un significado especial: Para KEBA "out1" es una salida de conmutación, para los contadores ABB B23 "out1" y "out2" son salidas de conmutación (para los modelos que lo soportan). Un 1 activa la salida, un 0 la desactiva.

Salidas del Gestor Global de Cargas:

En la configuración del Gestor de Carga, se pueden configurar las salidas globales tal y como se ha descrito anteriormente en la definición del contador en "Salidas". Se establecen al final de cada ciclo de actualización si su estado ha cambiado. Si desea controlar las salidas de conmutación en los dispositivos definidos por el usuario, se recomienda la convención anterior (véase Variables del gestor de carga): Se establecen variables con nombres "out1", "out2", etc. en el contador definido por el usuario y se establecen salidas en el contador definido por el usuario que conmutan la salida en función del valor de estas variables.

API Modbus global del Gestor de Carga:

La API Modbus del Charging Manager se utiliza para controlar los dispositivos Modbus que tienen cualquier dirección Modbus RTU o TCP (accesible desde el Charging Manager). Para Modbus RTU, introduzca COMx,bd,8,p,s como dirección, donde x es el número de puerto COM, bd es la velocidad en baudios, p es la paridad ('N', 'E' u 'O') y s es el número de bits de parada (1 o 2), como en la configuración de los dispositivos individuales. En el caso de Modbus TCP, el destinatario es la dirección IP del dispositivo en la red del gestor de carga, incluido el número de puerto.
La URL (para HTTP GET) de la API Modbus es:
/cnf?cmd=modbus_get o /cnf?cmd=modbus_set
El gestor de carga cFos admite los siguientes parámetros de consulta adicionales:
addr: La dirección de dispositivo Modbus RTU o TCP mencionada anteriormente.
func: Número de función Modbus, por ejemplo, para la lectura 3 o 4, para la escritura 6 o 16.
id: ID del dispositivo Modbus.
reg: El número de registro Modbus. El valor puede darse en decimal o en hexadecimal (con el prefijo 0x).
val: número, valor a escribir en el registro. Omitir al leer.
tipo: 'w' 16bit (por defecto), d = 32bit, f = float, q = 64bit, s = string.
cnt: número, la longitud máxima de la cadena en registros, omitir para otros tipos o poner a 1.
order: Cadena, el orden de los bytes, ya sea "hl" o "lh".

Nota: Si su "contador" tiene principalmente tareas de control, puede marcar la opción "Ocultar dispositivo" en la configuración de este mosaico para que este dispositivo no aparezca en la página de inicio.

Nota: Algunos contadores que se leen vía HTTP requieren un nombre de usuario/contraseña como autorización. Puede especificarlo en la dirección para el acceso HTTP, por ejemplo, con http://username:password@192.168.2.111. Si su nombre de usuario o contraseña contiene una "@", debe sustituirla por "%40".