Faikin Ninja P1P2 — instrukcja MQTT

Faikin Australia

Sterowanie modułem Faikin Ninja P1P2 i jego monitorowanie przez MQTT, od pierwszej konfiguracji po pełny wykaz tematów, poleceń i czujników.

Całe sterowanie odbywa się lokalnie · bez chmury, bez konta · współpracuje z Home Assistant, openHAB, Node-RED i dowolnym systemem obsługującym MQTT.

Kompletny przewodnik po sterowaniu modułem Faikin Ninja P1P2 i jego monitorowaniu przez MQTT, od pierwszej konfiguracji po pełny wykaz tematów, poleceń i czujników.

Dotyczy to modułu Faikin Ninja podłączonego do magistrali sterującej Daikin P1/P2: VRV i VRF, Sky Air, urządzenia komercyjne serii F oraz systemy kanałowe ze sterownikiem Airbase lub sterownikiem stref. W całym dokumencie przykładowy temat bazowy to ac/livingroom, a przykładowy adres IP brokera to 192.168.1.10. Oba należy zastąpić własnymi wartościami.

To nie jest ten sam interfejs MQTT co w module Faikin Faikout. Ninja działa na innym oprogramowaniu układowym i ma inny układ tematów, więc automatyzacje napisane dla modułu Faikout nie będą działać. Jeżeli posiadają Państwo moduł Faikout, prosimy zapoznać się z dokumentem Instrukcja MQTT modułu Faikin Faikout. Rozdział 5 zawiera porównanie obu rozwiązań.

1. Co daje MQTT

Wbudowana strona modułu Ninja w zupełności wystarcza do codziennej obsługi. MQTT przydaje się wtedy, gdy klimatyzator ma stać się częścią większej całości.

  • Automatyzacja. Urządzenie można wyzwolić dowolnym zdarzeniem: obecnością, harmonogramem, danymi o cenie energii, czujnikiem otwarcia drzwi czy temperaturą w innym pomieszczeniu.
  • Rzetelna telemetria. Magistrala P1/P2 przenosi znacznie więcej niż samo włączenie, wyłączenie i temperaturę. Ninja publikuje odczyty termistorów jednostki wewnętrznej i zewnętrznej, ciśnienia czynnika chłodniczego, położenie zaworu rozprężnego, stan sprężarki i wentylatora, liczniki godzin pracy oraz własne kody błędów urządzenia. Większości z tych danych nie widać na sterowniku ściennym.
  • Strefy w systemach kanałowych. Jeżeli w instalacji pracuje sterownik stref Daikin, każda przepustnica staje się osobno sterowanym przełącznikiem.
  • Wszystko w jednym miejscu. Home Assistant, Node-RED, openHAB i każde inne oprogramowanie obsługujące MQTT widzą to samo urządzenie jednocześnie.
  • Działa lokalnie. MQTT działa na Państwa własnym brokerze, w Państwa własnej sieci. Żadne dane nie opuszczają domu i nie trzeba zakładać konta.

2. Przed rozpoczęciem

Potrzebne są trzy rzeczy.

  1. Moduł Ninja podłączony do sieci WiFi, dostępny pod własną stroną internetową. Jeżeli tak nie jest, należy najpierw wykonać kroki opisane w dokumencie przewodnik instalacji.
  2. Broker MQTT w Państwa sieci. W przypadku korzystania z Home Assistant należy zainstalować dodatek Mosquitto broker; zajmuje to kilka minut i zapewnia broker wraz z nazwą użytkownika i hasłem. W pozostałych przypadkach wystarczy dowolny broker Mosquitto lub zgodny, działający na stale włączonym komputerze.
  3. Adres IP brokera, nazwa użytkownika i hasło.

Do korzystania z MQTT Home Assistant nie jest potrzebny, a do korzystania z Home Assistant nie jest potrzebny MQTT. To dwie niezależne decyzje, które po prostu dobrze się uzupełniają.

3. Krok 1: Wskazanie modułowi Ninja brokera MQTT

Należy otworzyć stronę modułu Ninja i przejść do sekcji MQTT settings.

Pole Co wpisać
Host Adres IP lub nazwa hosta brokera, np. 192.168.1.10.
Port Port brokera. 1883, o ile nie został zmieniony.
User Nazwa użytkownika brokera, jeżeli jest używana.
Password Hasło brokera, jeżeli jest używane.
Topic Pierwsza połowa tematu bazowego, np. ac.
Friendly Name Druga połowa, np. livingroom.

Te dwa pola mają większe znaczenie, niż się wydaje. Ninja buduje z nich wszystkie swoje tematy:

temat bazowy = <Topic> / <Friendly Name>

Zatem Topic = ac oraz Friendly Name = livingroom dają temat bazowy ac/livingroom, a temat stanu przyjmuje postać ac/livingroom/state.

Oba należy wybrać przed zbudowaniem jakiejkolwiek automatyzacji. Późniejsza zmiana powoduje zmianę nazw wszystkich tematów i po cichu psuje wszystko, co odwołuje się do starych. Dobrą praktyką jest jeden wspólny przedrostek dla wszystkich urządzeń (ac) oraz nazwa pomieszczenia, która się nie zmieni (livingroom, masterbed, office).

Po zapisaniu moduł ponownie się łączy i zaczyna publikować dane.

4. Krok 2: Potwierdzenie połączenia

Nie jest do tego potrzebny terminal. Odpowiedź dają od razu dwa miejsca.

Na stronie samego modułu Ninja

Należy otworzyć stronę modułu. U góry strony, obok nazwy urządzenia, wyświetlany jest stan połączenia z brokerem. MQTT connected oznacza, że moduł nawiązał połączenie z brokerem i publikuje dane.

Jeżeli tego napisu nie ma, błędny jest host, port, nazwa użytkownika lub hasło, albo broker jest nieosiągalny z sieci, w której pracuje moduł. Należy ponownie sprawdzić ustawienia MQTT, a następnie przejść do rozdziału o rozwiązywaniu problemów.

W Home Assistant

Nie trzeba niczego dodawać ręcznie. Ninja publikuje komunikaty wykrywania MQTT dla Home Assistant, więc po nawiązaniu połączenia z brokerem Home Assistant znajdzie go samodzielnie. Warunkiem jest wcześniejsze skonfigurowanie integracji MQTT i wskazanie jej tego samego brokera:

  1. Należy przejść do Settings > Devices & services > MQTT, a następnie otworzyć listę urządzeń.
  2. Urządzenie pojawi się w ciągu kilku sekund, pod nazwą ustawioną w polu Friendly Name.
  3. Po jego otwarciu wszystko jest już na miejscu: encja climate z trybem pracy, temperaturą zadaną, prędkością wentylatora i pozycją żaluzji, długa lista czujników diagnostycznych, a przy sterowniku stref także przełącznik dla każdej strefy przepustnicy.

W przypadku modułu Ninja nigdy nie powinno być potrzeby ręcznego pisania encji climate w YAML. Jeżeli okazuje się to konieczne, coś wcześniej zostało źle skonfigurowane.

Sprawdzenie z poziomu terminala

Opcjonalnie, i warto tylko wtedy, gdy narzędzia klienckie mosquitto są już zainstalowane:

mosquitto_sub -h 192.168.1.10 -u USER -P PASS -t 'ac/livingroom/#' -v

Temat ac/livingroom/availability powinien zgłaszać online, a na temacie ac/livingroom/state powinien pojawić się pełny ładunek JSON.

Jeżeli nic nie przychodzi, należy przejść do rozdziału o rozwiązywaniu problemów.

5. Struktura tematów

Wszystko opiera się na temacie bazowym zbudowanym w rozdziale 3. Dla tematu bazowego ac/livingroom:

Klimatyzacja i sterowanie

Temat Kierunek Działanie
ac/livingroom/power/set publikuje użytkownik Włączenie lub wyłączenie zasilania.
ac/livingroom/mode/set publikuje użytkownik Tryb pracy.
ac/livingroom/temp/set publikuje użytkownik Temperatura zadana.
ac/livingroom/fan/set publikuje użytkownik Prędkość wentylatora.
ac/livingroom/vane/set publikuje użytkownik Pozycja żaluzji lub oscylacja.
ac/livingroom/zone/<1..8>/set publikuje użytkownik Otwarcie lub zamknięcie jednej strefy przepustnicy.
ac/livingroom/state publikuje moduł Pełny stan w postaci jednego obiektu JSON.
ac/livingroom/availability publikuje moduł online lub offline.

System i zarządzanie

Temat Kierunek Działanie
ac/livingroom/system/set publikuje użytkownik restart, upgrade lub factory.
ac/livingroom/system/set_safemode publikuje użytkownik Tryb bezpieczny: on lub off.
ac/livingroom/system/set_min_temp publikuje użytkownik Dolny limit temperatury zadanej.
ac/livingroom/system/set_max_temp publikuje użytkownik Górny limit temperatury zadanej.
ac/livingroom/system/set_modbus_rtu_id publikuje użytkownik Identyfikator urządzenia podrzędnego Modbus RTU.
ac/livingroom/system/opt/rqt publikuje użytkownik Żądanie opcji w formacie JSON.
ac/livingroom/system/opt/rps publikuje moduł Echo przyjętych opcji.
ac/livingroom/system/info publikuje moduł Telemetria mostka w formacie JSON.

W większości automatyzacji potrzebne są tylko trzy rzeczy: publikowanie w tematach .../set oraz subskrypcja tematów state i availability.

Jeżeli posiadają Państwo także moduł Faikout

Oba produkty przyjmują przeciwne podejście, warto więc zobaczyć je obok siebie.

Faikin Faikout Faikin Ninja P1P2
Postać tematu command/<host>/..., state/<host> <topic>/<name>/...
Ustawienie jednej funkcji Jeden komunikat JSON control z wieloma polami Jeden krótki temat na każdą funkcję
Odczyt stanu JSON w temacie state/<host> JSON w temacie <base>/state
Obecność state/<host> z ładunkiem false <base>/availability z ładunkiem offline
Ustawienia setting/<host> w formacie JSON <base>/system/... tematy
Zakres danych Temperatura pomieszczenia, wymiennika, zewnętrzna, zasilanie Dodatkowo termistory jednostki zewnętrznej, ciśnienia, impulsy zaworu rozprężnego, godziny pracy, kody błędów
Strefy Nieobsługiwane Do 8 stref przepustnic

6. Wysyłanie poleceń

Należy opublikować zwykły ciąg znaków w odpowiednim temacie .../set. Nie ma opakowania JSON: ładunkiem jest sama wartość.

power/set

Ładunek Efekt
ON Włącza urządzenie, przywracając ostatni tryb, temperaturę, prędkość wentylatora i pozycję żaluzji.
OFF Wyłącza urządzenie.

mode/set

Ładunek Efekt
heat Ogrzewanie.
cool Chłodzenie.
dry Osuszanie.
fan_only Sam wentylator, bez ogrzewania i chłodzenia.
off Wyłączenie zasilania.

temp/set

Temperatura zadana jako liczba, np. 24. Zakres od 16 do 32 °C, w krokach co 1,0 °C. Zakres ten można zawęzić za pomocą system/set_min_temp i system/set_max_temp (rozdział 11).

fan/set

Dostępne prędkości zależą od jednostki wewnętrznej. Moduł zgłasza te, które dane urządzenie faktycznie obsługuje; wysłanie nieobsługiwanej wartości zostanie zignorowane.

Ładunek Opis
low Niska.
medium Średnia.
high Wysoka.
auto Automatyczna.
low_auto Niska automatyczna (systemy strefowe i Airbase).
medium_auto Średnia automatyczna (systemy strefowe i Airbase).
high_auto Wysoka automatyczna (systemy strefowe i Airbase).

Najczęstsze zestawy to:

  • 3 prędkości z trybem automatycznym: low, medium, high, auto
  • 2 prędkości: low, high
  • 4 prędkości, strefy/Airbase: low, medium, low_auto, medium_auto
  • 6 prędkości, strefy/Airbase: low, medium, high, low_auto, medium_auto, high_auto

vane/set

Ładunek Opis
1 Pozycja 1, najwyższa.
2 do 4 Pozycje pośrednie.
5 Pozycja 5, najniższa.
swing Ciągła oscylacja w pionie.

Przykłady

# Włączenie, chłodzenie, 24 C, wentylator automatyczny, oscylacja
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/power/set' -m 'ON'
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/mode/set'  -m 'cool'
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/temp/set'  -m '24'
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/fan/set'   -m 'auto'
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/vane/set'  -m 'swing'

Ponieważ każda funkcja ma własny temat, kolejność nie ma znaczenia i można wysyłać tylko to, co jest potrzebne.

7. Strefy w systemach kanałowych

Jeżeli na magistrali P1/P2 pracuje sterownik stref Daikin, moduł Ninja może otwierać i zamykać każdą przepustnicę.

Należy opublikować ON lub OFF w temacie ac/livingroom/zone/<n>/set, gdzie <n> przyjmuje wartości od 1 do 8:

# Otwarcie strefy 1, zamknięcie strefy 3
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/zone/1/set' -m 'ON'
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/zone/3/set' -m 'OFF'

Ładunek stanu zwraca:

Klucz Typ Znaczenie
zone_count number Liczba wykrytych stref, od 1 do 8.
zone_1zone_8 boolean true oznacza otwartą, false oznacza zamkniętą.
zone_name_1zone_name_8 string Nazwy skonfigurowane na sterowniku stref, np. "Master Bed".

W Home Assistant każda aktywna strefa jest wykrywana automatycznie jako osobny przełącznik, więc konfiguracja nie jest potrzebna.

Dwie uwagi praktyczne. Strefy pojawiają się wyłącznie wtedy, gdy obecny jest sterownik stref, więc w zwykłym systemie split nie będzie żadnych kluczy stref. Ponadto zamknięcie wszystkich stref naraz to prosta droga do kłopotów z systemem kanałowym: należy zostawić otwartą co najmniej jedną strefę albo po prostu wyłączyć urządzenie.

8. Odczyt stanu

Moduł publikuje jeden kompletny obiekt JSON w temacie <base>/state przy każdej zmianie.

Pojawiają się wyłącznie te czujniki, które dane urządzenie faktycznie zgłasza. Ninja wykrywa, co publikują podłączone jednostki wewnętrzna i zewnętrzna, a resztę pomija, więc Państwa ładunek będzie krótszy niż poniższy przykład, a dwa różne urządzenia Daikin dadzą różne klucze. Jest to normalne. Automatyzacje należy pisać w oparciu o klucze widoczne we własnym urządzeniu.

{
  "power": "on",
  "mode": "cool",
  "action": "cooling",
  "temperature": 24,
  "fan": "auto",
  "vane": "swing",
  "room_temperature": 25.5,
  "outside_temperature": 32.0,
  "f_intake_temp": 25.0,
  "f_indoor_th1": 18.2,
  "f_indoor_th2": 24.8,
  "f_outdoor_th1": 32.0,
  "f_outdoor_th3": 75.4,
  "f_pe_pressure": 0.83,
  "f_pc_pressure": 2.40,
  "f_drain_pump": false,
  "f_electric_heater": false,
  "f_comp_operating": true,
  "operating": true,
  "f_fan_step": 3,
  "f_ev_pulses": 240,
  "f_id_op_hours": 1250,
  "f_error_present": false,
  "f_error_code": "",
  "f_indoor_model": "FBA100BVMA",
  "f_outdoor_model": "RZA100DV1",
  "zone_count": 4,
  "zone_1": true,
  "zone_2": true,
  "zone_3": false,
  "zone_4": false
}

Klucze, które warto poznać w pierwszej kolejności:

Klucz Znaczenie
power on lub off. Stan, o który Państwo poprosili.
mode Tryb, o który Państwo poprosili.
action To, co urządzenie faktycznie robi w danej chwili: cooling, heating, idle i tak dalej. To właśnie ten klucz należy obserwować, a nie power.
temperature Państwa wartość zadana, nie temperatura pomieszczenia.
room_temperature Temperatura pomieszczenia zmierzona przez urządzenie.
operating Czy system faktycznie pracuje.
f_error_present / f_error_code Własna flaga i kod usterki Daikin, np. "A9-01".

Urządzenie może mieć "power": "on" przy "action": "idle" i jest to całkowicie normalne: osiągnęło temperaturę zadaną. Aby sprawdzić, czy rzeczywiście pracuje, należy spojrzeć na action, operating lub f_comp_operating.

Warto subskrybować także temat <base>/availability. Wartość offline oznacza, że rozłączył się moduł, co jest czymś innym niż wyłączony klimatyzator.

9. Home Assistant przez MQTT

Należy dodać integrację MQTT i wskazać jej ten sam broker. To cała konfiguracja: Ninja sam się zgłasza, a Home Assistant buduje resztę.

Co Państwo otrzymują:

  • Encję climate z trybami heat, cool, dry, fan_only i off, prędkościami wentylatora obsługiwanymi przez dane urządzenie, pozycjami żaluzji od 1 do 5 oraz swing, a także krokiem 1,0 °C.
  • Czujniki i czujniki binarne dla każdego termistora, ciśnienia, elementu wykonawczego, licznika godzin, kodu błędu i oznaczenia modelu zgłaszanego przez urządzenie. Większość trafia do kategorii Diagnostic.
  • Przełączniki dla każdej aktywnej strefy przepustnicy.

Identyfikatory encji wynikają z pola Friendly Name, więc przy wartości livingroom otrzymają Państwo climate.livingroom, sensor.livingroom_outside_temperature, switch.livingroom_zone_1 i tak dalej. Dokładne nazwy należy sprawdzić w Developer tools > States przed pisaniem kodu YAML.

Karta na pulpicie

type: vertical-stack
cards:
  - type: thermostat
    entity: climate.livingroom

  - type: entities
    title: Zones
    entities:
      - entity: switch.livingroom_zone_1
        name: Living
      - entity: switch.livingroom_zone_2
        name: Master bed
      - entity: switch.livingroom_zone_3
        name: Study
      - entity: switch.livingroom_zone_4
        name: Kids

  - type: glance
    title: Right now
    columns: 3
    entities:
      - entity: sensor.livingroom_room_temperature
        name: Room
      - entity: sensor.livingroom_outside_temperature
        name: Outside
      - entity: binary_sensor.livingroom_compressor_operating
        name: Compressor

  - type: history-graph
    hours_to_show: 24
    entities:
      - sensor.livingroom_room_temperature
      - sensor.livingroom_outside_temperature
      - sensor.livingroom_od_pc_pressure

Automatyzacja

Wyłączenie urządzenia, gdy w domu zrobi się komfortowo. Wykorzystano klucz action, a nie power, aby automatyzacja nie zadziałała w chwili, gdy urządzenie nadal pracuje:

alias: Living room off when settled
triggers:
  - trigger: state
    entity_id: climate.livingroom
    attribute: hvac_action
    to: idle
    for: "00:20:00"
conditions:
  - condition: numeric_state
    entity_id: sensor.livingroom_room_temperature
    below: 25
actions:
  - action: climate.turn_off
    target:
      entity_id: climate.livingroom
mode: single

Nadzór nad usterkami

alias: Air conditioner fault
triggers:
  - trigger: state
    entity_id: binary_sensor.livingroom_ac_error_present
    to: "on"
actions:
  - action: notify.mobile_app_phone
    data:
      title: Air conditioner fault
      message: >-
        Error {{ states('sensor.livingroom_ac_error_code') }} on
        {{ state_attr('climate.livingroom','friendly_name') }}.
mode: single

Tę automatyzację warto skonfigurować. Kod błędu jest tym samym kodem, który serwisant odczytałby ze sterownika ściennego, a znajomość tego kodu przed zgłoszeniem oszczędza jedną wizytę.

10. Inne platformy

Te same tematy działają wszędzie. Ciągi znaków należy publikować w <base>/…/set, a subskrybować <base>/state.

Wiersz poleceń mosquitto

# Podgląd wszystkiego dla tego urządzenia
mosquitto_sub -h 192.168.1.10 -u USER -P PASS -t 'ac/livingroom/#' -v

# Włączenie i chłodzenie do 23
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/power/set' -m 'ON'
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/mode/set'  -m 'cool'
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/temp/set'  -m '23'

# Otwarcie strefy 1
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/zone/1/set' -m 'ON'

Node-RED

Należy użyć węzła MQTT in na temacie ac/livingroom/state z wyjściem ustawionym na sparsowany obiekt JSON, a następnie odczytywać msg.payload.power, msg.payload.room_temperature i tak dalej.

Do wysyłania należy użyć węzła MQTT out z pustym polem tematu i ładunku, aby pochodziły z komunikatu. Ładunki muszą być ciągami znaków, więc liczby trzeba wcześniej przekonwertować.

Ustawienie całego urządzenia za jednym razem:

const base = "ac/livingroom";
return [
    { topic: base + "/power/set", payload: "ON" },
    { topic: base + "/mode/set",  payload: "cool" },
    { topic: base + "/temp/set",  payload: "24" },
    { topic: base + "/fan/set",   payload: "auto" }
];

Suwak na pulpicie sterujący temperaturą zadaną:

msg.topic = "ac/livingroom/temp/set";
msg.payload = String(msg.payload);
return msg;

Włączenie tylko wtedy, gdy urządzenie jest wyłączone:

const p = typeof msg.payload === 'string'
    ? JSON.parse(msg.payload)
    : msg.payload;
if (p.power !== "on") {
    return [{ topic: "ac/livingroom/power/set", payload: "ON" }];
}
return null;

Subskrypcja tematu ac/livingroom/availability to tani sposób na wygaszenie pulpitu, gdy moduł się rozłączy.

openHAB

Należy dodać obiekt MQTT Broker Thing, a następnie Generic MQTT Thing z kanałami wskazującymi tematy. Kanał typu switch na temacie ac/livingroom/power/set z wartościami ON/OFF, kanał liczbowy na temacie ac/livingroom/temp/set oraz kanały stanu odczytujące ac/livingroom/state z przekształceniem JSONPATH, na przykład $.room_temperature.

11. Zarządzanie systemem i opcje

Znajdują się one pod <base>/system/. Większość z nich powoduje ponowne uruchomienie modułu, nie należy więc wpinać ich w mechanizmy wyzwalane często.

system/set

Ładunek Efekt
restart Ponownie uruchamia moduł po około trzech sekundach.
upgrade Natychmiast sprawdza dostępność aktualizacji oprogramowania układowego przez sieć bezprzewodową.
factory Kasuje wszystkie zapisane ustawienia, przywraca ustawienia fabryczne i uruchamia moduł ponownie.

factory kasuje również ustawienia WiFi i MQTT, więc moduł wraca do własnej sieci konfiguracyjnej i trzeba go skonfigurować od zera. Należy traktować to jako ostateczność.

Limity temperatury

Temat Ładunek Efekt
system/set_min_temp 16 do 32 Ustala najniższą wartość zadaną możliwą do wybrania. Powoduje restart.
system/set_max_temp 16 to do Ustala najwyższą wartość zadaną możliwą do wybrania. Powoduje restart.

Przydatne w wynajmowanym lokalu lub biurze: po ograniczeniu zakresu nikt nie ustawi 16 °C w lipcu.

Tryb bezpieczny

system/set_safemode z wartością on lub off. Powoduje restart.

Modbus RTU ID

system/set_modbus_rtu_id z liczbą od 1 do 254, dla instalacji zarządzania budynkiem korzystających z wersji RS485. Powoduje restart.

Opcje przez MQTT

system/opt/rqt przyjmuje obiekt JSON i pozwala zmienić kilka ustawień naraz, bez korzystania ze strony internetowej:

{
  "options": {
    "homekit": "On",
    "mode": "All",
    "safemode": "Off",
    "webpanel": "On"
  }
}
Klucz Wartości Znaczenie
homekit On, Off Obsługa Apple Home.
mode All, NoHeat, NoAuto Które tryby mają być udostępniane. NoHeat odpowiada instalacji wyłącznie chłodzącej.
safemode On, Off Tryb bezpieczny.
webpanel On, Off Wbudowana strona internetowa.

Wszystko, co zostanie przyjęte, jest odsyłane w temacie system/opt/rps, warto więc go subskrybować i potwierdzać zamiast zakładać.

Wyłączenie webpanel odbiera Państwu drogę powrotną. Należy to robić tylko wtedy, gdy mają Państwo pewność, że MQTT działa.

system/info

Publikowane okresowo:

{
  "connection_state": "online",
  "safe_mode": "Off",
  "reset_reason": "Software reset via ESP_RESTART",
  "web_panel": "On",
  "free_heap": "68.45",
  "rssi": "-62",
  "bssid": "AA:BB:CC:DD:EE:FF",
  "up_time": 172800,
  "min_temp": 16,
  "max_temp": 32,
  "protocol_ver": "P1P2"
}

rssi to wartość, którą warto obserwować. Przy wyniku gorszym niż mniej więcej -80 dBm należy przenieść moduł poza metalową obudowę, zanim zacznie się szukać innych przyczyn.

12. Wykaz czujników

Wszystko poniżej jest wykrywane automatycznie. Jeżeli urządzenie danej wartości nie zgłasza, klucz nie pojawia się w ładunku stanu i w Home Assistant nie powstaje żadna encja. Krótka lista nie oznacza usterki.

Najważniejsze

Klucz Nazwa Jednostka Opis
room_temperature Room Temperature °C Temperatura otoczenia wewnątrz.
outside_temperature Outside Temperature °C Temperatura otoczenia na zewnątrz, z termistora zewnętrznego 1.
f_intake_temp Intake Temperature °C Temperatura powietrza powrotnego przy jednostce wewnętrznej.

Termistory jednostki wewnętrznej

Klucz Nazwa Opis
f_indoor_th1 Indoor TH1 Rura cieczowa.
f_indoor_th2 Indoor TH2 Rura gazowa.
f_indoor_th3 Indoor TH3 Wymiennik ciepła.
f_indoor_th4f_indoor_th6 Indoor TH4 to TH6 Zależnie od modelu.
f_return_air_temp_1f Return Air Temp 1F Zdekodowana temperatura powietrza powrotnego, tam gdzie jest obsługiwana.
f_coil_temp_1f Coil Temp 1F Zdekodowana temperatura wymiennika jednostki wewnętrznej, tam gdzie jest obsługiwana.

Termistory i ciśnienia jednostki zewnętrznej

Klucz Nazwa Jednostka Opis
f_outdoor_th1 Outdoor TH1 °C Powietrze zewnętrzne.
f_outdoor_th2 Outdoor TH2 °C Wymiennik ciepła jednostki zewnętrznej.
f_outdoor_th3 Outdoor TH3 °C Rura tłoczna.
f_outdoor_th4 Outdoor TH4 °C Rura ssawna.
f_outdoor_th5, f_outdoor_th6 Outdoor TH5, TH6 °C Zależnie od modelu.
f_pe_pressure OD Pe Pressure MPa Ciśnienie po stronie niskiej.
f_pc_pressure OD Pc Pressure MPa Ciśnienie po stronie wysokiej.

Temperatura tłoczenia razem z obydwoma ciśnieniami to najbliższy odpowiednik bieżącej kontroli stanu jednostki zewnętrznej. Wystarczy zestawić je na wykresie przez cały sezon, a nietypowy odczyt rzuci się w oczy na długo przed zadziałaniem zabezpieczeń.

Elementy wykonawcze i stan pracy

Klucz Nazwa Typ Opis
f_comp_operating Compressor Operating boolean Praca sprężarki jednostki zewnętrznej.
f_drain_pump ID Drain Pump boolean Pompka skroplin jednostki wewnętrznej.
f_electric_heater ID Electric Heater boolean Pomocnicza nagrzewnica elektryczna.
f_humidifier ID Humidifier boolean Nawilżacz jednostki wewnętrznej.
f_anti_freezing ID Anti Freezing boolean Aktywna ochrona przed zamarzaniem.
f_solenoid_valve OD Solenoid Valve boolean Zawór elektromagnetyczny jednostki zewnętrznej.
f_active_1f Loop Active 1F boolean Wskaźnik aktywności obiegu.
f_fan_step OD Fan Step step Stopień pracy wentylatora jednostki zewnętrznej.
f_ev_pulses ID EV Pulses pulse Otwarcie zaworu rozprężnego jednostki wewnętrznej.
f_ev1_pulses OD EV1 Pulses pulse Otwarcie zaworu rozprężnego jednostki zewnętrznej.

Godziny pracy i usterki

Klucz Nazwa Jednostka Opis
f_id_op_hours ID Op Hours h Godziny pracy jednostki wewnętrznej.
f_id_fan_hours ID Fan Hours h Godziny pracy wentylatora wewnętrznego.
f_id_pwr_hours ID Pwr Hours h Godziny zasilania jednostki wewnętrznej.
f_error_present AC Error Present Flaga aktywnej usterki.
f_error_code AC Error Code Kod błędu Daikin, np. "A9-01", "E7-57". Pusty, gdy nie ma usterki.
f_has_error_history Has Error History Czy urządzenie przechowuje historię usterek.
f_indoor_model Indoor Model Oznaczenie modelu jednostki wewnętrznej.
f_outdoor_model Outdoor Model Oznaczenie modelu jednostki zewnętrznej.

Jeżeli urządzenie przechowuje historię usterek, każde zapisane zdarzenie zawiera numer wiersza, kod, datę i numer jednostki:

[
  {"row": 1, "code": "A9-01", "date": "17/01/24", "unit": 0},
  {"row": 2, "code": "E7-57", "date": "10/11/23", "unit": 0},
  {"row": 3, "code": "C2-04", "date": "05/08/23", "unit": 0}
]

Telemetria modułu

Klucz Nazwa Jednostka Opis
up_time Up Time s Od ostatniego restartu.
free_heap Free Heap % Wolna pamięć RAM.
rssi RSSI dBm Siła sygnału WiFi.
bssi BSSI BSSID punktu dostępowego, z którym moduł jest połączony.
reset_reason Reset Reason Przyczyna ostatniego restartu.
protocol_ver Protocol Version Aktywny protokół: P1P2.
min_temp, max_temp Target limits °C Skonfigurowane limity wartości zadanej.
modbus_rtu_id Modbus RTU ID Skonfigurowany identyfikator urządzenia podrzędnego.

13. Rozwiązywanie problemów

Na stronie internetowej nie ma plakietki MQTT connected. Należy sprawdzić host i port, a następnie nazwę użytkownika i hasło. Jeżeli broker znajduje się w innej sieci VLAN lub podsieci niż moduł, zwykle to jest właściwa przyczyna.

Plakietka pokazuje połączenie, ale w Home Assistant nic się nie pojawia. Należy potwierdzić, że integracja MQTT w Home Assistant wskazuje ten sam broker. Dwa brokery w jednej sieci to częsty i mylący błąd. Następnie należy sprawdzić, czy w ustawieniach modułu włączone jest wykrywanie.

Brakuje niektórych czujników. Tak ma być. Publikowane jest wyłącznie to, co zgłaszają podłączone jednostki, a mały system split pokaże znacznie mniej niż VRV. To nie jest usterka.

Brak przełączników stref. Strefy wymagają sterownika stref Daikin na magistrali P1/P2. Bez niego nie ma czym sterować.

Polecenia są ignorowane. Ładunki to zwykłe ciągi znaków i rozróżniają wielkość liter zgodnie z dokumentacją: ON i OFF wielkimi literami dla zasilania i stref, nazwy trybów małymi literami. Wysłanie liczby zamiast ciągu znaków dla temperatury zakończy się niepowodzeniem w części klientów, w tym w Node-RED.

Temperatura nie osiąga oczekiwanej wartości. Należy sprawdzić min_temp i max_temp w system/info. Ktoś mógł zawęzić zakres.

Połączenie ciągle się zrywa. Należy sprawdzić rssi w system/info. Około -80 dBm lub gorzej to wartość graniczna. Moduł należy przenieść poza metalową obudowę.

Urządzenie jest włączone, ale nic się nie dzieje. Należy sprawdzić action i f_comp_operating. Jeżeli action ma wartość idle, temperatura zadana została osiągnięta. Jeżeli sprężarka w ogóle nie pracuje, a f_error_present ma wartość true, należy odczytać f_error_code i podać go instalatorowi.

Wszystko przestało działać po zmianie ustawień. Zmiana pola Topic lub Friendly Name zmienia nazwy wszystkich tematów. Automatyzacje nadal wskazują stare.

14. Skrócony wykaz

Temat bazowy ac/livingroom. Należy zastąpić własnym.

Odczyt (subskrypcja)

Temat Zawartość
ac/livingroom/state Pełny stan w formacie JSON
ac/livingroom/availability online / offline
ac/livingroom/system/info Telemetria modułu w formacie JSON
ac/livingroom/system/opt/rps Echo przyjętych opcji

Sterowanie (publikacja)

Temat Ładunek
ac/livingroom/power/set ON, OFF
ac/livingroom/mode/set heat, cool, dry, fan_only, off
ac/livingroom/temp/set 16 do 32
ac/livingroom/fan/set low, medium, high, auto, low_auto, medium_auto, high_auto
ac/livingroom/vane/set 1 do 5, swing
ac/livingroom/zone/1/setzone/8/set ON, OFF

System (publikacja)

Temat Ładunek
ac/livingroom/system/set restart, upgrade, factory
ac/livingroom/system/set_safemode on, off
ac/livingroom/system/set_min_temp 16 do 32
ac/livingroom/system/set_max_temp 16 do 32
ac/livingroom/system/set_modbus_rtu_id 1 do 254
ac/livingroom/system/opt/rqt {"options":{"homekit":"On","mode":"All"}}

Klucze warte obserwacji

Klucz Dlaczego
action Co urządzenie faktycznie robi, a nie o co Państwo poprosili
room_temperature Rzeczywista temperatura pomieszczenia
f_comp_operating Czy sprężarka pracuje
f_error_present, f_error_code Usterki, we własnych kodach Daikin
rssi Zapas sygnału WiFi, w system/info

Źródła: dokumentacja protokołu MQTT dla Faikin Ninja P1P2. Opisane zachowanie odpowiada oprogramowaniu układowemu według stanu na sierpień 2026; dla zainstalowanej u Państwa wersji rozstrzygające są własna strona modułu oraz publikowany temat system/info. Dostępność czujników zależy od jednostki wewnętrznej i zewnętrznej.