Sensores e unidades
O RBgrid mede através de duas camadas:
- Sensores — os canais físicos que o hub consegue ver. Numa versão v1.1.x do hub, são os canais dos módulos I²C rbAmp: uma entrada de tensão e um ou mais canais de corrente por módulo. Não existe ADC integrado; os módulos medem e o hub lê-os por I²C.
- Unidades — os pontos de medição que cria ao associar um canal. Uma unidade tem a sua própria identidade, nome, função, estatísticas e histórico. Mover uma unidade para outro canal (rebind) mantém o seu id, nome, histórico e posição no histórico.
Não escreve código nenhum para acrescentar um sensor ou uma unidade. Os canais aparecem sozinhos quando um módulo é ligado; transforma um canal numa unidade a partir da aplicação web ou da API REST, em tempo de execução.
Sensores — os canais físicos
Cada canal de um módulo ligado aparece na lista, esteja ou não em uso. Um canal que não está associado a uma unidade está simplesmente free: não produz dados, não é somado e não gera alertas. Um módulo pode ser usado com qualquer subconjunto dos seus canais, por qualquer ordem.
Cada canal tem:
ch_label— o canal tal como impresso na caixa do módulo:I0,I1, … para canais de corrente (numerados a partir de 0),Vpara a entrada de tensão do módulo, eL1–L3num módulo sensível à fase.- Modelo do CT — para um canal de corrente, o modelo do transformador de corrente em uso (
ct_code/ct_namelegível, por exemploSCT-013-050, 50 A;ct_namefica de fora quando o modelo é desconhecido) e os limites do módulo para ele. Na aplicação, corresponde ao Current sensor do ponto. Num módulo que aceita um CT de pinça à sua escolha, define o modelo (veja Escolher o modelo do CT abaixo); num módulo cujo CT vem emparelhado com o canal de fábrica, o modelo é fixo. - Estado da correção — se o módulo aplicou a sua correção para o modelo de CT escolhido. Se não o fez (
readings not corrected), a interface mostra um aviso e o motivo (o canal não está calibrado · o seu ganho não corresponde ao modelo de CT · o módulo não conhece este modelo de CT). Enquanto a correção não for aplicada, as leituras podem diferir das reais.
Os próprios módulos vêm da configuração de módulos do hub; um módulo no endereço predefinido (0x50) é encontrado sem qualquer configuração (veja Get started). As famílias de módulos rbAmp, a sua composição de canais e a gama de CT estão documentadas com os módulos — veja a rbAmp module docs.
Unidades — os pontos de medição
Uma unidade é criada ao associar um canal a um ponto. Tem:
| Campo | O que é |
|---|---|
unit_id |
a identidade da unidade (um id hexadecimal de 4 dígitos, por exemplo 0006, 0100) |
point |
um slug estável usado por sistemas externos (MQTT, API) |
name / short_name |
nomes de apresentação |
role |
a função do circuito: DEVICE_LOAD, ZONE_LOAD, CIRCUIT_BREAKER, RENEWABLE_SOURCE, STORAGE_SYSTEM, EV_CHARGING, HEATING_COOLING, SMART_APPLIANCE, e as funções de alimentação MAIN_SUPPLY e ALTERNATIVE_SUPPLY |
location |
onde está o circuito |
stat_class |
mantido por compatibilidade; a aplicação envia sempre 1HOUR, e é o predefinido se o omitir. Não decide se uma unidade guarda histórico (veja Estatísticas). |
rated_power_w / max_current_a |
os valores nominais do circuito (para a alimentação principal: potência contratada e disjuntor principal) |
phase |
a que linha pertence o canal (veja Fase abaixo) |
Na aplicação, as funções têm os nomes Appliance, Load, Breaker, Generation, Storage, Charging station, Heating/cooling, Smart appliance, e, para as funções de alimentação, Grid input e Backup input.
Duas unidades são unidades de alimentação especiais — a alimentação principal (a ligação à rede) e uma alimentação alternativa opcional (geração interna). A aplicação nunca oferece as funções de alimentação ao associar e não permite alterá-las, e o hub bloqueia ambas: um patch que toque em qualquer função de alimentação é recusado (HTTP 409). Estas transportam o controlo económico do local. O barramento de tensão (a entrada V do módulo) e a entrada principal não podem ser eliminados.
Configurar em tempo de execução — aplicação web ou REST
Tudo é configurado no hub em funcionamento. Nada é definido em código C.
Aplicação web — Points → Free sensors → Bind transforma um canal livre numa unidade; os campos da unidade são editados nas suas definições.
REST — as mesmas operações estão disponíveis por HTTP:
| Operação | Endpoint |
|---|---|
| Listar os canais físicos | GET /api/v1/sensors (aberto, salvo se for definido um token de leitura) |
| Associar um canal → nova unidade | POST /api/v1/units |
| Alterar os parâmetros de uma unidade (em tempo real) | POST /api/v1/units/{id} |
| Mover uma unidade para outro canal | POST /api/v1/units/{id}/rebind |
| Alterar o slug de uma unidade | POST /api/v1/units/{id}/rename |
| Remover uma unidade | DELETE /api/v1/units/{id} |
As operações de escrita usam o admin token do hub quando existe um; defina-o com POST /api/system/token e envie-o nas escritas; é recomendado. Até definir um token, as escritas ficam abertas na rede local.
Associar um canal, por exemplo:
POST /api/v1/units
{
"sensor": { "iface": "i2c", "bus": 0, "module": 0, "ch": 1 },
"name": "Kitchen", "point": "kitchen",
"role": "ZONE_LOAD", "stat_class": "1HOUR", "location": "ground floor"
}
A resposta devolve o novo unit_id. Os novos ids são atribuídos a partir de 0100 para cima. Mudar o nome de um ponto retira o slug antigo, para que um sistema externo não passe a obter silenciosamente um ponto diferente com a mesma chave.
Eliminar (ou desassociar) uma unidade apaga o seu histórico guardado para sempre; o seu canal volta a ficar livre. O ID de um ponto removido pode ser reutilizado de propósito: a aplicação oferece-o ao associar (Bind with the previous ID). O hub começa então o histórico do zero, mas o Home Assistant e o MQTT continuam a série antiga como um único ponto.
Parâmetros como name, role, phase, rated_power_w, max_current_a e o modelo do CT são alterados em tempo real através do endpoint de patch e mantêm-se após um reinício. A referência completa dos campos está na units & sensors API.
Escolher o modelo do CT
Num canal cujo módulo aceita um CT de pinça à sua escolha (série SCT), defina o modelo do CT como a pinça realmente instalada: o Current sensor do ponto nas suas definições, ou ct_code através do endpoint de patch. O modelo é gravado no módulo juntamente com a sua calibração de tipo, e fica associado à identidade desse módulo, por isso outro módulo no mesmo slot mantém o seu próprio modelo guardado.
Altere-o apenas se estiver realmente instalada uma pinça diferente. Gravar o modelo substitui a calibração de fábrica do canal, e essa calibração não pode ser restaurada. Num canal emparelhado de fábrica (série CT), o modelo é fixo: o hub recusa a alteração. Num módulo não calibrado, o modelo não pode ser escolhido.
Fase
phase indica a que linha de alimentação pertence um canal. Numa alimentação monofásica, todos os canais usam o predefinido (1P / L1). Alimentações monofásicas e trifásicas são suportadas. A potência e a energia monofásicas são validadas em hardware. A potência e a energia trifásicas também são verificadas em hardware, com as três entradas de tensão numa mesma fase de bancada; a rede trifásica real a 120° não esteve na bancada. Uma entrada trifásica é um único STD-U3I3, e o cartão do módulo é onde escolhe se a entrada é medida como um ponto com as fases líquidas ou como um ponto por fase, cada fase com a sua própria importação e exportação. Os sistemas de alimentação validados no seu hub estão listados em GET /api/v1/schema → enums.grid_system_validated.
phase é apenas um rótulo. O hub nunca multiplica nem divide os valores de uma unidade pelo número de fases: uma unidade com um transformador de corrente reporta o que esse único condutor transporta, seja qual for o seu phase. Uma unidade definida como 3 phases numa carga trifásica é a energia medida de uma perna — não a divida nem a multiplique por três.
Estatísticas
Cada unidade mantém dados de 3 segundos e de 15 minutos apenas em RAM; não têm histórico guardado. O histórico guardado começa ao nível horário: o hub guarda registos horários na sua própria flash, que sobrevivem a um reinício, e constrói dias, semanas, meses e anos a partir deles. É igual para todas as unidades, seja qual for o seu stat_class. O histórico é mantido para até 12 unidades; as unidades além das doze mostram apenas valores em tempo real. Uma unidade acrescentada enquanto o hub está a correr começa o seu histórico após o reinício seguinte. Os totais de energia acumulada desde sempre são guardados separadamente do histórico.
Quando um canal está perto do limite
Um ponto assinala o seu estado no cartão da Overview, em Load lines, na tabela de pontos e em Needs attention; a página do ponto mostra um alerta:
clipping— a corrente atingiu o ponto de corte do sensor (a sua corrente de escala completa, que está acima do seu valor nominal). Acima dele, a leitura é subcontada, e o módulo não o consegue detetar por si. As definições do ponto também avisam antecipadamente quando o disjuntor da linha está acima do limite do sensor, e as linhas do History assinalam o clipping.sensor limit— a corrente está perto da corrente de corte do sensor: o hub assinala-a a cerca de 90 % dessa corrente. Para pinças SCT-013, a corrente de corte é cerca de 116 % do valor nominal (58 A num SCT-013-050), por isso o aviso surge a cerca de 104 % do valor nominal (52 A). Até à corrente de corte, as leituras estão corretas. Os sensores próprios dos módulos STD não têm estes avisos; leem corretamente até cerca de 130 % do seu valor nominal.- Um CT invertido num módulo BASIC: o ponto mostra sensor reversed — not metered. Um módulo BASIC mede apenas o fluxo no sentido direto, por isso a carga não é medida até rodar a pinça.
O registo de eventos recebe uma linha quando o estado muda: "near its limit", "clipping" ou "back within range". Apenas clipping marca o registo da hora (uma marca de qualidade para fora de gama); "near its limit" fica apenas no registo. Veja The Overview e Points para saber onde estes aparecem.