Faikin Ninja P1P2 — Manuel MQTT

Faikin Australia

Commande et surveillance d'un Faikin Ninja P1P2 via MQTT, de la première configuration jusqu'à la référence complète des topics, commandes et capteurs.

Toute la commande est locale · sans cloud, sans compte · fonctionne avec Home Assistant, openHAB, Node-RED et tout ce qui parle MQTT.

Un guide complet pour commander et surveiller un Faikin Ninja P1P2 via MQTT, de la première configuration jusqu'à la référence complète des topics, commandes et capteurs.

Ceci concerne le module Faikin Ninja installé sur un bus de commande Daikin P1/P2 : VRV et VRF, Sky Air, la série F commerciale et les systèmes gainables avec un contrôleur Airbase ou de zones. Dans tout ce document, le topic de base d'exemple est ac/livingroom et l'IP du broker d'exemple est 192.168.1.10. Remplacez les deux par les vôtres.

Il ne s'agit pas de la même interface MQTT que celle du Faikin Faikout. Le Ninja utilise un firmware différent avec une organisation des topics différente, si bien que les automatisations écrites pour un Faikout ne sont pas transposables. Si vous avez un Faikout, consultez plutôt le Manuel MQTT Faikin Faikout à la place. La section 5 propose une comparaison côte à côte.

1. Ce que MQTT vous apporte

La page web intégrée du Ninja suffit pour un usage quotidien. MQTT devient utile lorsque le climatiseur doit s'intégrer à un ensemble plus vaste.

  • Automatisation. Déclenchez l'unité à partir de n'importe quoi : présence, planning, flux de prix de l'électricité, capteur de porte, température d'une autre pièce.
  • Une vraie instrumentation. Le bus P1/P2 transporte bien plus que la marche, l'arrêt et la température. Le Ninja publie les thermistances des unités intérieure et extérieure, les pressions de fluide frigorigène, la position du détendeur, l'état du compresseur et du ventilateur, les heures de fonctionnement et les codes d'erreur propres à l'unité. La plupart de ces données sont invisibles depuis la télécommande murale.
  • Zones des systèmes gainables. Si vous disposez d'un contrôleur de zones Daikin, chaque registre devient un interrupteur commandable individuellement.
  • Tout au même endroit. Home Assistant, Node-RED, openHAB et tout autre système qui parle MQTT voient le même appareil en même temps.
  • Tout reste local. MQTT fonctionne sur votre propre broker, sur votre propre réseau. Rien ne quitte la maison et il n'y a aucun compte à créer.

2. Avant de commencer

Il vous faut trois choses.

  1. Le Ninja sur votre WiFi, accessible via sa propre page web. Si ce n'est pas le cas, consultez d'abord le guide d'installation.
  2. Un broker MQTT sur votre réseau. Si vous utilisez Home Assistant, installez le module complémentaire Mosquitto broker ; cela prend quelques minutes et vous fournit un broker ainsi qu'un nom d'utilisateur et un mot de passe. Sinon, n'importe quel broker Mosquitto ou compatible sur une machine qui reste allumée fera l'affaire.
  3. L'adresse IP, le nom d'utilisateur et le mot de passe du broker.

Vous n'avez pas besoin de Home Assistant pour utiliser MQTT, et vous n'avez pas besoin de MQTT pour utiliser Home Assistant. Ce sont deux choix distincts qui se marient simplement bien.

3. Étape 1 : diriger le Ninja vers votre broker MQTT

Ouvrez la page web du Ninja et accédez aux MQTT settings.

Champ Que saisir
Host IP ou nom d'hôte du broker, p. ex. 192.168.1.10.
Port Le port du broker. 1883 sauf si vous l'avez modifié.
User Nom d'utilisateur du broker, si le vôtre en utilise un.
Password Mot de passe du broker, si le vôtre en utilise un.
Topic La première moitié du topic de base, p. ex. ac.
Friendly Name La seconde moitié, p. ex. livingroom.

Les deux derniers comptent plus qu'il n'y paraît. Le Ninja construit tous ses topics à partir d'eux :

topic de base = <Topic> / <Friendly Name>

Ainsi, Topic = ac et Friendly Name = livingroom donne un topic de base ac/livingroom, et le topic d'état devient ac/livingroom/state.

Choisissez les deux avant de construire la moindre automatisation. Les modifier par la suite renomme tous les topics et casse silencieusement tout ce qui référence les anciens. Une convention utile consiste à utiliser un préfixe commun à toutes vos unités (ac) plus un nom de pièce qui ne changera pas (livingroom, masterbed, office).

Enregistrez : le module se reconnecte et commence à publier.

4. Étape 2 : confirmer la connexion

Vous n'avez pas besoin d'un terminal pour cela. Deux endroits vous le disent immédiatement.

Sur la page du Ninja lui-même

Accédez au module. En haut de la page, à côté du nom de l'appareil, son état de connexion au broker est affiché. MQTT connected signifie que le module a atteint votre broker et qu'il publie.

Si cette mention est absente, c'est que l'hôte, le port, le nom d'utilisateur ou le mot de passe est incorrect, ou que le broker n'est pas joignable depuis le réseau du module. Revérifiez les réglages MQTT, puis consultez le dépannage.

Dans Home Assistant

Rien à ajouter à la main. Le Ninja publie les messages de découverte MQTT de Home Assistant : dès qu'il atteint le broker, Home Assistant le détecte tout seul. À condition que l'intégration MQTT soit déjà configurée et pointée vers le même broker :

  1. Allez dans Paramètres > Appareils & services > MQTT, puis ouvrez la liste des appareils.
  2. Votre appareil apparaît en quelques secondes, portant le Friendly Name que vous avez défini.
  3. Ouvrez-le et tout y est déjà : une entité climate avec mode, température de consigne, vitesse de ventilation et volet ; une longue liste de capteurs de diagnostic ; et, si vous avez un contrôleur de zones, un interrupteur pour chaque zone de registre.

Vous ne devriez jamais avoir à écrire à la main une entité climate en YAML pour un Ninja. Si vous en arrivez là, c'est qu'un problème existe en amont.

Si vous préférez vérifier depuis un terminal

Facultatif, et utile uniquement si vous avez déjà installé les outils client mosquitto :

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

Vous devriez voir ac/livingroom/availability indiquant online, et un payload JSON complet sur ac/livingroom/state.

Si rien n'arrive, passez au dépannage.

5. La structure des topics

Tout dépend du topic de base construit à la section 3. Avec le topic de base ac/livingroom:

Climatisation et commande

Topic Sens Rôle
ac/livingroom/power/set vous publiez Marche ou arrêt.
ac/livingroom/mode/set vous publiez Mode de fonctionnement.
ac/livingroom/temp/set vous publiez Température de consigne.
ac/livingroom/fan/set vous publiez Vitesse de ventilation.
ac/livingroom/vane/set vous publiez Position du volet ou oscillation.
ac/livingroom/zone/<1..8>/set vous publiez Ouvrir ou fermer une zone de registre.
ac/livingroom/state le module publie État complet sous forme d'un seul objet JSON.
ac/livingroom/availability le module publie online ou offline.

Système et gestion

Topic Sens Rôle
ac/livingroom/system/set vous publiez restart, upgrade ou factory.
ac/livingroom/system/set_safemode vous publiez Safe Mode on ou off.
ac/livingroom/system/set_min_temp vous publiez Limite minimale de consigne.
ac/livingroom/system/set_max_temp vous publiez Limite maximale de consigne.
ac/livingroom/system/set_modbus_rtu_id vous publiez ID d'esclave Modbus RTU.
ac/livingroom/system/opt/rqt vous publiez Requête d'options en JSON.
ac/livingroom/system/opt/rps le module publie Écho des options acceptées.
ac/livingroom/system/info le module publie JSON de télémétrie du bridge.

Pour la plupart des automatisations, trois suffisent : publiez sur les topics .../set, et abonnez-vous à state et availability.

Si vous avez également un Faikout

Les deux produits adoptent des approches opposées, il est donc utile de les comparer.

Faikin Faikout Faikin Ninja P1P2
Forme du topic command/<host>/..., state/<host> <topic>/<name>/...
Régler une commande Un message JSON control avec de nombreux champs Un petit topic par commande
Lecture de l'état JSON sur state/<host> JSON sur <base>/state
Présence state/<host> payload false <base>/availability payload offline
Réglages setting/<host> JSON <base>/system/... topics
Profondeur des données Pièce, batterie, température extérieure, puissance En plus : thermistances extérieures, pressions, impulsions EV, heures de fonctionnement, codes d'erreur
Zones Non pris en charge Jusqu'à 8 zones de registre

6. Envoyer des commandes

Publiez une chaîne de caractères simple sur le topic .../set correspondant. Il n'y a pas d'enveloppe JSON : le payload est la valeur brute.

power/set

Payload Effet
ON Mise en marche, en restaurant le dernier mode, la température, la ventilation et le volet.
OFF Arrêt.

mode/set

Payload Effet
heat Chauffage.
cool Refroidissement.
dry Déshumidification.
fan_only Ventilation seule, sans chauffage ni refroidissement.
off Arrêt.

temp/set

La température de consigne sous forme de nombre, p. ex. 24. Plage 16 à 32 °C, par pas de 1.0 °C. Vous pouvez restreindre cette plage avec system/set_min_temp et system/set_max_temp (section 11).

fan/set

Les vitesses disponibles dépendent de l'unité intérieure. Le module signale celles que votre unité prend réellement en charge ; envoyer une vitesse inexistante est ignoré.

Payload Description
low Basse.
medium Moyenne.
high Haute.
auto Automatique.
low_auto Basse automatique (systèmes à zones et Airbase).
medium_auto Moyenne automatique (systèmes à zones et Airbase).
high_auto Haute automatique (systèmes à zones et Airbase).

Les regroupements courants sont :

  • 3 vitesses avec automatique : low, medium, high, auto
  • 2 vitesses : low, high
  • 4 vitesses zone/Airbase : low, medium, low_auto, medium_auto
  • 6 vitesses zone/Airbase : low, medium, high, low_auto, medium_auto, high_auto

vane/set

Payload Description
1 Position 1, en haut.
2 à 4 Positions intermédiaires.
5 Position 5, en bas.
swing Oscillation verticale continue.

Exemples

# On, cooling, 24 C, auto fan, swinging
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'

Chaque commande ayant son propre topic, l'ordre n'a pas d'importance et vous pouvez n'envoyer que celles qui vous intéressent.

7. Zones des systèmes gainables

Si un contrôleur de zones Daikin est présent sur le bus P1/P2, le Ninja peut ouvrir et fermer chaque registre.

Publiez ON ou OFF sur ac/livingroom/zone/<n>/set, où <n> vaut de 1 à 8 :

# Open zone 1, close zone 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'

Le payload d'état renvoie :

Clé Type Signification
zone_count number Nombre de zones détectées, de 1 à 8.
zone_1zone_8 boolean true signifie ouverte, false signifie fermée.
zone_name_1zone_name_8 string Les noms configurés sur le contrôleur de zones, p. ex. "Master Bed".

Dans Home Assistant, chaque zone active est détectée automatiquement comme un interrupteur distinct, aucune configuration n'est donc nécessaire.

Deux remarques pratiques. Les zones n'apparaissent que si un contrôleur de zones est présent : sur un simple split, il n'y aura donc aucune clé de zone. Et fermer toutes les zones en même temps est un bon moyen de mettre à mal un système gainable : laissez-en au moins une ouverte, ou éteignez plutôt l'unité.

8. Lire l'état

Le module publie un objet JSON complet sur <base>/state dès que quelque chose change.

Seuls les capteurs que votre unité signale réellement apparaissent. Le Ninja détecte ce que publient les unités intérieure et extérieure raccordées et masque le reste : votre payload sera donc plus court que l'exemple ci-dessous, et deux Daikin différents produiront des clés différentes. C'est normal. Écrivez vos automatisations à partir des clés visibles sur votre propre unité.

{
  "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
}

Les clés à connaître en priorité :

Clé Signification
power on ou off. Ce que vous avez demandé.
mode Le mode que vous avez demandé.
action Ce que l'unité fait réellement en ce moment : cooling, heating, idle et ainsi de suite. C'est celle-ci qu'il faut surveiller, pas power.
temperature Votre consigne, pas la pièce.
room_temperature La pièce, telle que l'unité la mesure.
operating Si le système fonctionne activement.
f_error_present / f_error_code L'indicateur de défaut et le code propres à Daikin, p. ex. "A9-01".

Une unité peut être en "power": "on" avec "action": "idle", et c'est parfaitement normal : elle a atteint la température. Pour savoir si elle travaille réellement, regardez action, operating ou f_comp_operating.

Abonnez-vous également à <base>/availability. offline à cet endroit signifie que le module s'est déconnecté, ce qui est différent d'un climatiseur éteint.

9. Home Assistant via MQTT

Ajoutez l'intégration MQTT et pointez-la vers le même broker. C'est toute la configuration : le Ninja s'annonce et Home Assistant construit le reste.

Ce que vous obtenez :

  • Une entité climate avec les modes heat, cool, dry, fan_only et off, les modes de ventilation de votre unité, les positions d'oscillation 1 à 5 et swing, et un pas de 1.0 °C.
  • Capteurs et capteurs binaires pour chaque thermistance, pression, actionneur, compteur d'heures, code d'erreur et référence de modèle signalés par votre unité. La plupart se retrouvent sous Diagnostic.
  • Interrupteurs pour chaque zone de registre active.

Les identifiants d'entité suivent le Friendly Name : avec livingroom vous obtiendrez climate.livingroom, sensor.livingroom_outside_temperature, switch.livingroom_zone_1 et ainsi de suite. Vérifiez les noms exacts dans Outils de développement > États avant d'écrire du YAML.

Une carte de tableau de bord

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

Une automatisation

Éteindre l'unité une fois la maison confortable, en utilisant action plutôt que power afin qu'elle ne se déclenche pas pendant que l'unité travaille encore :

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

Surveiller les défauts

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

Cela vaut la peine d'être mis en place. Le code d'erreur est celui qu'un technicien lirait sur la télécommande murale, et le connaître avant d'appeler évite un déplacement.

10. Autres plateformes

Les mêmes topics fonctionnent partout. Publiez des chaînes sur <base>/…/set, abonnez-vous à <base>/state.

Ligne de commande mosquitto

# Watch everything for this device
mosquitto_sub -h 192.168.1.10 -u USER -P PASS -t 'ac/livingroom/#' -v

# Turn on and cool to 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'

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

Node-RED

Utilisez un nœud MQTT in sur ac/livingroom/state avec la sortie réglée sur un objet JSON analysé, puis lisez msg.payload.power, msg.payload.room_temperature et ainsi de suite.

Pour envoyer, utilisez MQTT out en laissant le topic et le payload vides pour qu'ils proviennent du message. Les payloads doivent être des chaînes de caractères, convertissez donc les nombres au préalable.

Régler toute l'unité en une seule fois :

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" }
];

Un curseur de tableau de bord pilotant la température de consigne :

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

Allumer uniquement si l'appareil est actuellement éteint :

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;

S'abonner à ac/livingroom/availability est un moyen simple de griser votre tableau de bord lorsque le module se déconnecte.

openHAB

Ajoutez un Thing broker MQTT, puis un Generic MQTT Thing avec des canaux pointant vers les topics. Un canal switch sur ac/livingroom/power/set avec ON/OFF, un canal number sur ac/livingroom/temp/set, et des canaux d'état lisant ac/livingroom/state avec une transformation JSONPATH telle que $.room_temperature.

11. Gestion du système et options

Ils se trouvent sous <base>/system/. La plupart d'entre eux redémarrent le module, ne les reliez donc à rien qui se déclenche souvent.

system/set

Payload Effet
restart Redémarre le module au bout d'environ trois secondes.
upgrade Recherche immédiatement une mise à jour du firmware par voie radio.
factory Efface tous les réglages enregistrés, effectue une réinitialisation d'usine et redémarre.

factory efface également vos réglages WiFi et MQTT : le module revient sur son propre réseau de configuration et doit être reconfiguré de zéro. À réserver en dernier recours.

Limites de température

Topic Payload Effet
system/set_min_temp 16 à 32 Définit la consigne la plus basse sélectionnable. Redémarre.
system/set_max_temp 16 à 32 Définit la consigne la plus haute sélectionnable. Redémarre.

Utile dans une location ou un bureau : limitez la plage et personne ne pourra régler 16 °C en juillet.

Safe Mode

system/set_safemode avec on ou off. Redémarre.

Modbus RTU ID

system/set_modbus_rtu_id avec un nombre de 1 à 254, pour les installations de gestion technique de bâtiment utilisant la version RS485. Redémarre.

Options via MQTT

system/opt/rqt accepte un objet JSON et permet de modifier plusieurs réglages à la fois sans passer par la page web :

{
  "options": {
    "homekit": "On",
    "mode": "All",
    "safemode": "Off",
    "webpanel": "On"
  }
}
Clé Valeurs Signification
homekit On, Off Prise en charge d'Apple Home.
mode All, NoHeat, NoAuto Quels modes exposer. NoHeat convient à une installation en froid seul.
safemode On, Off Safe Mode.
webpanel On, Off La page web intégrée.

Tout ce qui est accepté est renvoyé en écho sur system/opt/rps, abonnez-vous donc à ce topic pour confirmer plutôt que de le supposer.

Désactiver webpanel vous prive de votre propre moyen d'accès. Ne le faites que si vous êtes certain que MQTT fonctionne.

system/info

Publié périodiquement :

{
  "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 est la valeur à surveiller. Au-delà d'environ -80 dBm, sortez le module du boîtier métallique avant d'incriminer quoi que ce soit d'autre.

12. Référence des capteurs

Tout ce qui suit est détecté automatiquement. Si votre unité ne le signale pas, la clé est absente du payload d'état et aucune entité n'est créée dans Home Assistant. Une liste courte n'est pas un défaut.

Les principaux

Clé Nom Unité Description
room_temperature Room Temperature °C Température ambiante intérieure.
outside_temperature Outside Temperature °C Ambiance extérieure, depuis la thermistance extérieure 1.
f_intake_temp Intake Temperature °C Température de l'air de reprise à l'unité intérieure.

Thermistances intérieures

Clé Nom Description
f_indoor_th1 Indoor TH1 Conduite liquide.
f_indoor_th2 Indoor TH2 Conduite gaz.
f_indoor_th3 Indoor TH3 Échangeur de chaleur.
f_indoor_th4f_indoor_th6 Indoor TH4 to TH6 Spécifique au modèle.
f_return_air_temp_1f Return Air Temp 1F Température d'air de reprise décodée, lorsque prise en charge.
f_coil_temp_1f Coil Temp 1F Température décodée de la batterie intérieure, lorsque prise en charge.

Thermistances et pressions extérieures

Clé Nom Unité Description
f_outdoor_th1 Outdoor TH1 °C Air ambiant extérieur.
f_outdoor_th2 Outdoor TH2 °C Échangeur de chaleur extérieur.
f_outdoor_th3 Outdoor TH3 °C Conduite de refoulement.
f_outdoor_th4 Outdoor TH4 °C Conduite d'aspiration.
f_outdoor_th5, f_outdoor_th6 Outdoor TH5, TH6 °C Spécifique au modèle.
f_pe_pressure OD Pe Pressure MPa Pression côté basse pression.
f_pc_pressure OD Pc Pressure MPa Pression côté haute pression.

La température de refoulement et les deux pressions constituent ce qui se rapproche le plus d'un contrôle de santé en direct de l'unité extérieure. Tracez-les sur une saison et une valeur anormale ressortira bien avant qu'une sécurité ne se déclenche.

Actionneurs et état de fonctionnement

Clé Nom Type Description
f_comp_operating Compressor Operating boolean Compresseur extérieur en marche.
f_drain_pump ID Drain Pump boolean Pompe de relevage des condensats intérieure.
f_electric_heater ID Electric Heater boolean Résistance électrique d'appoint.
f_humidifier ID Humidifier boolean Humidificateur intérieur.
f_anti_freezing ID Anti Freezing boolean Protection antigel active.
f_solenoid_valve OD Solenoid Valve boolean Électrovanne extérieure.
f_active_1f Loop Active 1F boolean Indicateur de boucle active.
f_fan_step OD Fan Step step Niveau de palier du ventilateur extérieur.
f_ev_pulses ID EV Pulses pulse Ouverture du détendeur intérieur.
f_ev1_pulses OD EV1 Pulses pulse Ouverture du détendeur extérieur.

Heures et défauts

Clé Nom Unité Description
f_id_op_hours ID Op Hours h Heures de fonctionnement de l'unité intérieure.
f_id_fan_hours ID Fan Hours h Heures du ventilateur intérieur.
f_id_pwr_hours ID Pwr Hours h Heures sous tension de l'unité intérieure.
f_error_present AC Error Present Indicateur de défaut actif.
f_error_code AC Error Code Code d'erreur Daikin, p. ex. "A9-01", "E7-57". Vide lorsque tout va bien.
f_has_error_history Has Error History Si l'unité conserve un historique des défauts.
f_indoor_model Indoor Model Référence de modèle de l'unité intérieure.
f_outdoor_model Outdoor Model Référence de modèle de l'unité extérieure.

Lorsque l'unité conserve un historique des défauts, chaque événement enregistré porte un numéro de ligne, le code, la date et le numéro d'unité :

[
  {"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}
]

Télémétrie du module

Clé Nom Unité Description
up_time Up Time s Depuis le dernier redémarrage.
free_heap Free Heap % RAM libre.
rssi RSSI dBm Force du signal WiFi.
bssi BSSI BSSID du point d'accès auquel il est connecté.
reset_reason Reset Reason Raison du dernier redémarrage.
protocol_ver Protocol Version Protocole actif, P1P2.
min_temp, max_temp Target limits °C Limites de consigne configurées.
modbus_rtu_id Modbus RTU ID ID d'esclave configuré.

13. Dépannage

Pas de mention MQTT connected sur la page web. Vérifiez l'hôte et le port, puis le nom d'utilisateur et le mot de passe. Si le broker se trouve sur un VLAN ou un sous-réseau différent de celui du module, c'est généralement là qu'est le vrai problème.

La mention indique connecté, mais rien n'apparaît dans Home Assistant. Vérifiez que l'intégration MQTT de Home Assistant pointe vers le même broker. Deux brokers sur un même réseau est une erreur fréquente et déroutante. Vérifiez ensuite que la découverte est activée dans les réglages du module.

Certains capteurs sont absents. C'est normal. Seul ce que signalent les unités raccordées est publié, et un petit split affichera bien moins qu'un VRV. Ce n'est pas un défaut.

Aucun interrupteur de zone. Les zones nécessitent un contrôleur de zones Daikin sur le bus P1/P2. Sans lui, il n'y a rien à commander.

Les commandes sont ignorées. Les payloads sont des chaînes simples et respectent la casse telle qu'elle est documentée : ON et OFF en majuscules pour la marche/arrêt et les zones, noms de mode en minuscules. Envoyer un nombre plutôt qu'une chaîne pour la température échouera dans certains clients, Node-RED compris.

La température ne va pas où vous voulez. Vérifiez min_temp et max_temp dans system/info. Quelqu'un a peut-être restreint la plage.

La connexion se coupe sans cesse. Regardez rssi dans system/info. Autour de -80 dBm ou pire, c'est limite. Sortez le module du boîtier métallique.

L'unité est allumée mais rien ne se passe. Regardez action et f_comp_operating. Si action vaut idle, c'est que la température est atteinte. Si le compresseur ne démarre jamais et que f_error_present est vrai, lisez f_error_code et communiquez-le à votre installateur.

Tout s'est arrêté après une modification des réglages. Renommer le Topic ou le Friendly Name renomme tous les topics. Vos automatisations pointent encore vers les anciens.

14. Aide-mémoire de référence rapide

Topic de base ac/livingroom. Remplacez-le par le vôtre.

Lecture (abonnement)

Topic Contenu
ac/livingroom/state État JSON complet
ac/livingroom/availability online / offline
ac/livingroom/system/info JSON de télémétrie du module
ac/livingroom/system/opt/rps Écho des options acceptées

Commande (publication)

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

Système (publication)

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

Clés à surveiller

Clé Pourquoi
action Ce qu'elle fait réellement, pas ce que vous avez demandé
room_temperature La pièce réelle
f_comp_operating Si le compresseur fonctionne
f_error_present, f_error_code Défauts, dans les codes propres à Daikin
rssi Marge WiFi, en system/info

Sources : la documentation du protocole MQTT du Faikin Ninja P1P2. Le comportement décrit correspond au firmware d'août 2026 ; la page web de votre module et les system/info publiés font foi pour la version que vous avez installée. La disponibilité des capteurs varie selon l'unité intérieure et extérieure.