esphome-api-client 0.5.0
Modern C++17 client for the ESPHome native API (plaintext + Noise)
Loading...
Searching...
No Matches
discovery.hpp
Go to the documentation of this file.
1#pragma once
2
6
8
9#include <chrono>
10#include <cstdint>
11#include <map>
12#include <string>
13#include <vector>
14
15namespace esphome::api {
16
20 std::string name;
22 std::string hostname;
24 std::string address;
26 std::uint16_t port = 6053;
27
28 // Common TXT metadata (also available verbatim in `properties`).
29 std::string mac;
30 std::string version;
31 std::string friendly_name;
32 std::string platform;
33 std::string board;
34 std::string network;
35 std::string project_name;
36 std::string project_version;
37
41 bool requires_encryption = false;
42 bool supports_encryption = false;
43
45 std::map<std::string, std::string> properties;
46
48 [[nodiscard]] std::string connect_host() const {
49 return address.empty() ? hostname : address;
50 }
51};
52
54class Discovery {
55public:
59 static std::vector<DiscoveredDevice>
60 scan(std::chrono::milliseconds timeout = std::chrono::milliseconds(2000));
61};
62
65std::vector<DiscoveredDevice> parse_mdns_packets(const std::vector<ByteBuffer>& packets);
66
67} // namespace esphome::api
Byte buffer / view aliases and protobuf base-128 varint codec.
Discovers ESPHome devices via multicast DNS.
Definition discovery.hpp:54
static std::vector< DiscoveredDevice > scan(std::chrono::milliseconds timeout=std::chrono::milliseconds(2000))
Blocking scan: multicasts a DNS-SD query and collects responses for timeout.
Definition bytes.hpp:10
std::vector< DiscoveredDevice > parse_mdns_packets(const std::vector< ByteBuffer > &packets)
Parse raw mDNS response packets into devices.
An ESPHome device found on the local network.
Definition discovery.hpp:18
std::string mac
Definition discovery.hpp:29
bool supports_encryption
Definition discovery.hpp:42
std::string friendly_name
Definition discovery.hpp:31
std::string name
Service instance name (the device's friendly/host name).
Definition discovery.hpp:20
bool requires_encryption
True when the device advertises that Noise encryption is required (TXT api_encryption).
Definition discovery.hpp:41
std::uint16_t port
API TCP port (default 6053).
Definition discovery.hpp:26
std::string platform
Definition discovery.hpp:32
std::string connect_host() const
Best host to connect to: the resolved IP if known, else the hostname.
Definition discovery.hpp:48
std::string version
Definition discovery.hpp:30
std::string hostname
SRV target host, e.g. "living-room.local".
Definition discovery.hpp:22
std::string project_version
Definition discovery.hpp:36
std::map< std::string, std::string > properties
Every TXT record, as key → value.
Definition discovery.hpp:45
std::string address
Resolved IP address (from the A/AAAA record); empty if not provided.
Definition discovery.hpp:24
std::string board
Definition discovery.hpp:33
std::string network
Definition discovery.hpp:34
std::string project_name
Definition discovery.hpp:35