Contadores definidos pelo utilizador

Nota: O cFos Charging Manager pode ler a maioria dos inversores solares usando SunSpec (tipo de dispositivo "SunSpec Solar Inverter / Medidor"). Neste caso, não precisa de criar a sua própria definição de contador.

O Gestor de Carregamento cFos permite-lhe criar as suas próprias definições de contadores para suportar contadores que não se encontram no repertório padrão. Existem actualmente dois tipos: Contadores Modbus e contadores HTTP/JSON. Os ficheiros de definições para estes contadores são muito semelhantes. Os contadores Modbus lêem os seus dados via Modbus a partir de registos específicos, enquanto os contadores HTTP/JSON vão buscar os seus dados via pedido HTTP e analisam JSON como resposta. O cFos Charging Manager utiliza uma pequena "linguagem de consulta" para a análise.

Além de um número de variáveis predefinidas, tais como corrente e tensão, os contadores definidos pelo utilizador também podem ler em variáveis desconhecidas definidas pelo utilizador, consultar entradas e definir saídas. A leitura em variáveis e a definição de outputs permite a avaliação de fórmulas. Em combinação com as variáveis do Gestor de Carregamento e os resultados globais do Gestor de Carregamento descritos abaixo, esta é uma característica poderosa e permite mesmo certas tarefas de domótica e o controlo de dispositivos externos, tais como o armazenamento de baterias. Se realizar tarefas de controlo com isto, por favor dê-nos o seu feedback. Estamos muito interessados no que as pessoas controlam com o Gestor de Carregamento cFos e isso ajuda-nos a desenvolver ainda mais o Gestor de Carregamento de acordo com as necessidades do cliente.

Aqui está uma definição de exemplo para Modbus e uma para HTTP/JSON:
Descarregar definição de amostra para o medidor Modbus
Descarregar definição de amostra para o medidor HTTP/JSON

O Gestor de Carregamento já vem com alguns destes ficheiros, mas pode carregar os seus próprios ficheiros em "Configuração do sistema" e também apagá-los novamente.
Aqui encontrará a maior parte das definições dos contadores que fornecemos:
Descarregar as definições dos contadores fornecidos

Se criou o seu próprio ficheiro de contador e este pode ser relevante para outros utilizadores, ficar-lhe-íamos muito gratos se o pudesse colocar à nossa disposição. Então entregá-lo-emos com futuras versões do Gestor de Carregamento.

Descarregar definições de contadores para contadores adicionais

Estrutura de um ficheiro de definição:

As definições dos contadores são ficheiros JSON com um objecto JSON global que tem propriedades e objectos infantis. rtype" determina o tipo de operação lida: 0 = Modbus, 1 = HTTP/JSON. Os números podem opcionalmente ser especificados em decimal ou hexadecimais com prefixo 0x. Além disso, são permitidos comentários de uma linha usando //. Recomendamos que execute os seus ficheiros de definição através de um validador JSON5, por exemplo, este validador JSON5

Deveria definitivamente ter lido o capítulo Fórmulas para compreender quais os valores que podem ser utilizados nas fórmulas na seguinte referência.

As definições de Modbus têm um objecto 'rtu' com as seguintes propriedades:

silence_period, em msec. determinado, a duração da pausa antes de um acesso Modbus RTU, para que o dispositivo reconheça o início de uma mensagem.
silence_same_slave, true: A pausa também é observada com vários acessos ao mesmo dispositivo.
retries: O número de retries se o dispositivo não responder.
rcv_timeout: em msec. o tempo máximo de espera por acesso até que o dispositivo responda.

Estas propriedades globais aplicam-se ao Modbus TCP e RTU:

modbus_read: O número de função do comando de leitura Modbus, normalmente 3 ou 4.
modbus_read_max_registers: O número máximo de registos que podem ser lidos de cada vez.
modbus_allow_gaps: true = áreas de registo não utilizadas podem ser lidas numa operação de leitura.

Para Modbus TCP e HTTP/JSON existe um objecto 'tcp' com as seguintes propriedades:

connect_timeout: é msec. o tempo máximo de espera para uma ligação TCP.
delay_after_connect: em msec. Pausa após a ligação ser estabelecida antes de enviar o primeiro comando.

Ambos os tipos de definição (Modbus e HTTP/JSON) têm as seguintes propriedades adicionais:

upd_delay: em msec. determina o intervalo em que um dispositivo pode ser lido. Alguns dispositivos são sobrecarregados se forem consultados com demasiada frequência.
fabricante: String, nome do fabricante. Isto é apresentado na informação alargada do azulejo.
delay_accumulated: true = Os valores acumulados (kWh) só são consultados a cada 3 segundos ou se houver energia suficiente. false = Estes valores são sempre consultados.
ui_addr: URL, se diferente do endereço do dispositivo para chamar a interface web.
reservado: Array com valores que são interpretados como 0 (útil se o dispositivo suportar certos valores, dependendo do modelo).

Se omitir as propriedades acima enumeradas, o cFos Charging Manager toma valores por defeito que funcionam bem na maioria dos casos.

Na definição do JSON, o passo seguinte é a definição das variáveis que o contador utiliza para ler ou calcular valores de corrente, tensão, etc. As seguintes variáveis são utilizadas pelo Gestor de Carregamento. O Gestor de Carregamento conhece as seguintes variáveis:
type_designation, version, firmware_version, serial: Estas formam o nome do modelo como mostrado na informação alargada do azulejo. Estes são consultados uma vez ao configurar ou reiniciar o contador.
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: O Gestor de Carregamento cFos tenta calcular valores para a tensão_l1..l3, corrente_l1..l3, power_w e power_va a partir destas. Não é necessário especificar todas as variáveis. O cFos Charging Manager tenta calcular os valores a partir das variáveis existentes.
import_wh, export_wh, import_wh_l1..import_wh_l3, export_wh_l1..export_wh_l3: O Gestor de Carregamento utiliza estas variáveis para calcular import_wh e export_wh. Não é necessário especificar todas as variáveis. O Gestor de Carregamento cFos tenta calcular os valores a partir das variáveis existentes.

Além disso, é possível definir outras variáveis com nomes diferentes que são lidas ou calculadas usando fórmulas com cada actualização.

Definição de uma variável:

O objecto tem o nome da variável listada acima e tem as seguintes propriedades:
fixo: String com valor fixo. Útil se, por exemplo, nenhum valor puder ser determinado, por exemplo, para type_designation ou tensão.
expr: String, a variável não é lida mas avaliada como uma fórmula.
type: Se não for fixa ou expr, o tipo da variável: int16, int32, float, int64, string. Isto é importante para o Modbus a fim de ler os registos no formato correcto. Para o JSON/HTTP pode normalmente tomar a flutuação.
resolução: flutuar, o valor lido é multiplicado por 'resolução'. Os valores de voltagem devem ser em volts, correntes em miliamperes, potência em watts, energia em watt-hora (Wh). A 'resolução' negativa permite inverter um valor se estiver em sinal inverso.
endereço: número (Modbus) ou string (HTTP/JSON), o número de registo do Modbus ou o URL HTTP do valor a ser lido.
consulta: String, para HTTP JSON a especificação no idioma de consulta do Gestor de Carregamento com o qual encontra o valor a ler na resposta JSON.
ordem: String, para Modbus a ordem de bytes, ou "hl" ou "lh", em que o valor está presente. comprimento: número, para Modbus o comprimento de uma string em registos. Com as variáveis 'versão' e 'firmware_version', usa-se 'comprimento' para transformar as versões numéricas em cordas com pontos. São permitidos valores de 2 ou 4 para 'comprimento', que depois resultam nos formatos de versão a.b, e a.b.c.d. Para 'comprimento' 2 e tipo 'int16' o Gestor de Carregamento separa byte baixo e alto por ponto, para int32 palavra baixo e alto, para 'int64' palavra baixo e alto dword. Para 'lenth' 4 e 'int32', o Gestor de Carregamento divide o valor em 4 bytes separados por um ponto. Para 'int64', as 4 palavras em conformidade.

Definição de inputs:

O Gestor de Carregamento pode consultar até 32 valores de entrada de diferentes registos ou elementos JSON por dispositivo. A propriedade "Inputs" é um conjunto JSON. Deve definir as seguintes propriedades para cada entrada:
endereço: Endereço: Endereço (registo Modbus ou URL).
contar: Número de bits de entrada que serão lidos com este pedido.
consulta: Para HTTP/JSON, consulte a linguagem de consulta para encontrar o valor na resposta.

O cFos Charging Manager lê todos os inputs definidos desta forma com cada actualização e coloca os bits internamente numa matriz, que pode então ser consultada em fórmulas, Input1...InputN...

Definição dos resultados:

O Gestor de Carregamento pode comutar até 32 saídas por unidade. Todas as saídas são trocadas no final de cada ciclo de actualização se o estado da respectiva saída tiver mudado.
É necessário definir as seguintes propriedades para cada entrada:
endereço: URL HTTP com método HTTP opcional, por exemplo, GET ${var1}. Para definir registos Modbus, pode utilizar a API HTTP do cFos Charging Manager. O Gestor de Carregamento detecta os acessos correspondentes no local de alojamento e redirecciona o pedido para o manipulador interno, pelo que não necessita de autorização como nos acessos API HTTP externos.
body: Opcional corpo HTTP para POST ou PUT.
No URL e no corpo, pode utilizar fórmulas ${expr} que fazem referência a variáveis globais do Gestor de Carregamento ou a partir do respectivo contador. A fórmula 'expr' é avaliada ao definir a saída e substituída no texto do URL ou do corpo. Se, no exemplo acima, http://www.example.com?output1=1 define a saída e http://www.example.com?output1=0 a elimina, pode definir uma variável 'var1' e defini-la para 1 ou 0 como desejado. Desta forma, pode também escrever valores numéricos para controlar o desempenho da memória em registos Modbus que tenha previamente armazenado numa variável utilizando uma fórmula.
Se, em vez de passar um valor numérico no URL, precisar de substituir um texto por outro, dependendo da fórmula, tal como com tomadas Shelly WLAN, pode escrevê-lo assim: ${se expr`text1`text2}. O 'apóstrofo' é um retrocesso (código ASCII 96). Se o 'expr' != 0, o texto1 é inserido, caso contrário o texto2. Para a tomada Shelly WLAN, o URL então é assim: http://<ip-addr>/relay/0?turn=${se expr`on`off}, isto é, se expr != 0, o Gestor de Carregamento então chama http://<ip-addr>/relay/0?turn=on, caso contrário http://<ip-addr>/relay/0?turn=off.

Se introduzir um caminho relativo como o URL, o Gestor de Carregamento toma o endereço configurado para o respectivo dispositivo. Se introduzir 'localhost' como o domínio, o Gestor de Carregamento toma o endereço do dispositivo em que está a funcionar. Se detectar um acesso à sua própria API, utiliza o manipulador interno em vez de executar um acesso HTTP completo, para que não tenha de armazenar um nome de utilizador e palavra-passe na definição do contador. Um URL que começa com um * faz com que o Gestor de Carregamento efectue sempre um acesso HTTP completo.

Definição de langage de consulta:

Actualmente, os nomes dos membros e dos operadores "." e "[]" podem ser utilizados nas expressões de pesquisa "consulta", exemplos:

testeElemento denominado "teste"
nome1.nome2Elemento chamado "nome2" no objecto infantil "nome1
nome[idx]Elemento "idx" do elemento objecto "nome". "idx" pode ser um número, por exemplo, para arrays ou um fio
nome["u2"]O elemento "u2" do elemento objecto "nome", corresponde a "name.u2"
nome[{"el1": "v1", "el2": 3}].valorSeleccionar o elemento da matriz que preenche a condição da notação do objecto e avaliar o elemento denominado 'valor'. Aqui, por exemplo, na matriz 'nome', é seleccionado o elemento que tem como elemento objecto 'el1' com valor 'v1' e 'el2' com valor 3 e depois o valor do elemento 'valor' é devolvido a partir deste objecto.

Variáveis do Gestor de Carregamento Global:

Pode criar variáveis na configuração do Gestor de Carregamento. Pode usar um valor fixo ou uma fórmula como valor. No final de cada ciclo de actualização, o Gestor de Carregamento recalcula o valor destas variáveis, se necessário. Pode então utilizá-los em (certos) parâmetros do Gestor de Carregamento, Regras de Carregamento ou para controlar as saídas. Também pode escrever Ex.member ou Mx.member como variáveis. Aqui, Exe Mxsão a identificação do dispositivo de uma caixa de parede ou contador configurado no Gestor de Carregamento. membro é uma variável "definida pelo utilizador" que é armazenada no dispositivo correspondente. Algumas das variáveis podem ter um significado especial: Para KEBA "out1" é uma saída de comutação, para ABB B23 metros "out1" e "out2" são saídas de comutação (para modelos que suportam isto). Um 1 desliga a saída, um 0 desliga-a novamente.

Saídas do Gestor de Carregamento Global:

Na configuração do Gestor de Carregamento, é possível configurar as saídas globais como descrito acima na definição do contador em 'Saídas'. Estes são definidos no final de cada ciclo de actualização, se o seu estado tiver mudado. Se quiser controlar as saídas de comutação em dispositivos definidos pelo utilizador, recomenda-se a convenção acima (ver Variáveis do Gestor de Carregamento): Definem-se variáveis com nomes "out1", "out2", etc. no contador definido pelo utilizador e configuram-se saídas no contador definido pelo utilizador que mudam a saída dependendo do valor destas variáveis.

Global Modbus API do Gestor de Carregamento:

O Modbus API do Gestor de Carregamento é utilizado para controlar dispositivos Modbus que tenham qualquer endereço Modbus RTU ou TCP (acessível através do Gestor de Carregamento). Para Modbus RTU, introduzir COMx,bd,8,p,s como endereço, onde x é o número da porta COM, bd é a taxa de baud, p é a paridade ('N', 'E' ou 'O') e s é o número de bits de paragem (1 ou 2), como na configuração dos dispositivos individuais. Para Modbus TCP, o destinatário é o endereço IP do dispositivo na rede do Gestor de Carregamento, incluindo o número da porta.
O URL (para HTTP GET) do Modbus API é:
/cnf?cmd=modbus_get ou /cnf?cmd=modbus_set
O cFos Charging Manager suporta os seguintes parâmetros de consulta adicionais:
address: O endereço do dispositivo Modbus RTU ou TCP acima mencionado.
func: Número da função Modbus, por exemplo para leitura 3 ou 4, para escrever 6 ou 16.
id: ID do dispositivo Modbus.
reg: O número de registo do Modbus. O valor pode ser dado em decimal ou hexagonal (com prefixo 0x).
val: número, valor a ser inscrito no registo. Omitir ao ler.
tipo: 'w' 16bit (por defeito), d = 32bit, f = float, q = 64bit, s = string.
cnt: número, o comprimento máximo da corda nos registos, omitir para outros tipos ou definir para 1.
ordem: corda, a ordem do byte, ou "hl" ou "lh".

Nota: Se o seu 'contador' tiver principalmente tarefas de controlo, pode assinalar a opção 'Ocultar dispositivo' nas definições deste azulejo para que este dispositivo não apareça na página inicial.

Nota: Alguns contadores que são lidos via HTTP requerem um nome de utilizador/palavra-passe como autorização. Pode especificá-lo no endereço para acesso HTTP, por exemplo com _COPY2@192.168.2.111. Se o seu nome de utilizador ou palavra-chave contiver um "@", deve substituí-lo por "%40".