ESPHome 2026.8.0b4
Loading...
Searching...
No Matches
openthread_info_sensor.h
Go to the documentation of this file.
1#pragma once
2
4#if defined(USE_OPENTHREAD) && defined(USE_SENSOR)
5
8
9#include <openthread/link.h>
10#include <openthread/thread.h>
11
13
14// Parent RSSI (average) in dBm. Only valid when device is a child; skips publish otherwise.
16 public:
17 void update_instance(otInstance *instance) override {
18 int8_t rssi;
19 if (otThreadGetParentAverageRssi(instance, &rssi) != OT_ERROR_NONE) {
20 return;
21 }
22 this->publish_state(rssi);
23 }
24 void dump_config() override;
25};
26
27// Parent RSSI (last received frame) in dBm. Only valid when device is a child.
29 public:
30 void update_instance(otInstance *instance) override {
31 int8_t rssi;
32 if (otThreadGetParentLastRssi(instance, &rssi) != OT_ERROR_NONE) {
33 return;
34 }
35 this->publish_state(rssi);
36 }
37 void dump_config() override;
38};
39
40// Incoming link quality from parent (0-3). Only valid when device is a child.
42 public:
43 void update_instance(otInstance *instance) override {
44 otRouterInfo parent_info;
45 if (otThreadGetParentInfo(instance, &parent_info) != OT_ERROR_NONE) {
46 return;
47 }
48 this->publish_state(parent_info.mLinkQualityIn);
49 }
50 void dump_config() override;
51};
52
53// Outgoing link quality to parent (0-3). Only valid when device is a child.
55 public:
56 void update_instance(otInstance *instance) override {
57 otRouterInfo parent_info;
58 if (otThreadGetParentInfo(instance, &parent_info) != OT_ERROR_NONE) {
59 return;
60 }
61 this->publish_state(parent_info.mLinkQualityOut);
62 }
63 void dump_config() override;
64};
65
66// --- MAC counters (otLinkGetCounters) — cumulative since boot ---
67
69 public:
70 void update_instance(otInstance *instance) override { this->publish_state(otLinkGetCounters(instance)->mTxTotal); }
71 void dump_config() override;
72};
73
75 public:
76 void update_instance(otInstance *instance) override { this->publish_state(otLinkGetCounters(instance)->mTxRetry); }
77 void dump_config() override;
78};
79
81 public:
82 void update_instance(otInstance *instance) override { this->publish_state(otLinkGetCounters(instance)->mTxErrCca); }
83 void dump_config() override;
84};
85
87 public:
88 void update_instance(otInstance *instance) override { this->publish_state(otLinkGetCounters(instance)->mTxErrAbort); }
89 void dump_config() override;
90};
91
93 public:
94 void update_instance(otInstance *instance) override { this->publish_state(otLinkGetCounters(instance)->mRxTotal); }
95 void dump_config() override;
96};
97
99 public:
100 void update_instance(otInstance *instance) override { this->publish_state(otLinkGetCounters(instance)->mRxErrFcs); }
101 void dump_config() override;
102};
103
104// --- MLE stability counters (otThreadGetMleCounters) — cumulative since boot ---
105
107 public:
108 void update_instance(otInstance *instance) override {
109 this->publish_state(otThreadGetMleCounters(instance)->mAttachAttempts);
110 }
111 void dump_config() override;
112};
113
115 public:
116 void update_instance(otInstance *instance) override {
117 this->publish_state(otThreadGetMleCounters(instance)->mParentChanges);
118 }
119 void dump_config() override;
120};
121
123 public:
124 void update_instance(otInstance *instance) override {
125 this->publish_state(otThreadGetMleCounters(instance)->mPartitionIdChanges);
126 }
127 void dump_config() override;
128};
129
130} // namespace esphome::openthread_info
131#endif
void update_instance(otInstance *instance) override
void update_instance(otInstance *instance) override
void update_instance(otInstance *instance) override
void update_instance(otInstance *instance) override
void update_instance(otInstance *instance) override
Base-class for all sensors.
Definition sensor.h:47
void publish_state(float state)
Publish a new state to the front-end.
Definition sensor.cpp:68