Tematy MQTT dla Home Assistant#

Tematy używane do komunikacji między GbbOptimizer a Home Assistant / GbbConnect.

Dane z Home Assistant do GbbOptimizer#

Wymagane pola:

PoleTypOpis
soc_percdecimalSOC baterii (%). Użyj V jeśli zaznaczono „Steruj poprzez V”
loads_total_kWhdecimalZużycie — licznik narastający
fromgrid_total_kWhdecimalImport z sieci — licznik narastający
togrid_total_kWhdecimalEksport do sieci — licznik narastający
pv_total_kWhdecimalProdukcja PV — licznik narastający

Opcjonalne pola:

PoleTypOpis
ev_charge_total_kWhdecimalŁadowanie EV
hp_total_kWhdecimalPompa ciepła
other1_total_kWhother6_total_kWhdecimalInne 1–6

Wiele źródeł PV:

1
2
3
4
5
6
7
{
  "pv_total_kWh": 123.4,
  "more": [
    {"number": 2, "pv_total_kWh": 56.7},
    {"number": 3, "pv_total_kWh": 89.0}
  ]
}
  • Liczniki mogą się zerować — można przesyłać np. liczniki dzienne
  • Wartości < 0 są traktowane jako brak danych
  • Można wysyłać tylko dane opcjonalne, jeśli główne dane importowane są z falownika. W takim przypadku dodaj system HomeAssistant w menu IoT
  • pv_total_kWh to to samo co "more" z number=1 — nie używaj obu jednocześnie
  • Solarman/DeyeCloud: poszczególne pola (soc_perc, fromgrid_total_kWh, togrid_total_kWh, loads_total_kWh) mogą być wysyłane oddzielnie, jeśli zaznaczono odpowiednie opcje w parametrach instalacji

Komendy z GbbOptimizer do Home Assistant#

GbbOptimizer wysyła komendy sterujące na dedykowane tematy:

PUB {PlantId}/ha_gbb/Start_Charge

Rozpocznij ładowanie baterii do SOC z Payload

PUB {PlantId}/ha_gbb/Start_Discharge

Rozpocznij rozładowanie baterii do sieci (do SOC z Payload)

PUB {PlantId}/ha_gbb/Start_DisableCharge

Nie ładuj baterii — PV do domu i sieci

PUB {PlantId}/ha_gbb/Start_Normal

Powrót do normalnej pracy

Równolegle te same dane wysyłane są na:

PUB {PlantId}/ha_gbb/EMS

Zbiorcza komenda EMS z pełnym payloadem JSON

Payload JSON:

PoleTypOpis
HourintGodzina
FromMinuteintMinuta rozpoczęcia
ToMinuteintMinuta zakończenia
DischargeLimitWintLimit rozładowania (W)
ChargeLimitWintLimit ładowania (W)
InputLimitWintLimit importu (W)
PriceLessZeroint0 = normalna cena, 1 = cena < 0
Operationstring"Normal", "Discharge", "DisableCharge" lub "Charge"
SOCintDocelowy SOC
VdecimalSOC skonwertowany na V (jeśli sterowanie przez V)

Przykład:

1
2
3
4
5
6
7
8
{
  "Hour": 22,
  "FromMinute": 0,
  "ToMinute": 59,
  "PriceLessZero": 0,
  "Operation": "Normal",
  "SOC": 90
}

Przykład automatyzacji HA#

1
2
3
4
5
6
7
8
alias: mqtt output_source_priority_battery
trigger:
  - platform: mqtt
    topic: ha_gbb/Start_Charge
action:
  - service: switch.turn_on
    target:
      entity_id: switch.bms_1_output_source_priority_battery

Przykład publikowania danych do MQTT#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
alias: mqtt_publikacja
trigger:
  - platform: time_pattern
    minutes: /5
action:
  - service: mqtt.publish
    data:
      qos: "0"
      retain: false
      topic: ha_gbb/sensor
      payload: >
        {
          "loads_total_kWh": {{ states.sensor.inverter_out_daily_energy.state | float(-1) }},
          "fromgrid_total_kWh": {{ states.sensor.inverter_in_daily_energy.state | float(-1) }},
          "pv_total_kWh": {{ states.sensor.total_daily_energy.state | float(-1) }},
          "soc_perc": {{ states.sensor.battery_soc.state | float(-1) }},
          "togrid_total_kWh": 0
        }