ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
gps.h
Go to the documentation of this file.
1#pragma once
2
7#include <TinyGPSPlus.h>
8
9namespace esphome::gps {
10
11class GPS;
12
14 public:
15 virtual void on_update(TinyGPSPlus &tiny_gps) = 0;
16 TinyGPSPlus &get_tiny_gps();
17
18 protected:
19 friend GPS;
20
22};
23
24class GPS final : public PollingComponent, public uart::UARTDevice {
25 public:
26 void set_latitude_sensor(sensor::Sensor *latitude_sensor) { this->latitude_sensor_ = latitude_sensor; }
27 void set_longitude_sensor(sensor::Sensor *longitude_sensor) { this->longitude_sensor_ = longitude_sensor; }
28 void set_speed_sensor(sensor::Sensor *speed_sensor) { this->speed_sensor_ = speed_sensor; }
29 void set_course_sensor(sensor::Sensor *course_sensor) { this->course_sensor_ = course_sensor; }
30 void set_altitude_sensor(sensor::Sensor *altitude_sensor) { this->altitude_sensor_ = altitude_sensor; }
31 void set_satellites_sensor(sensor::Sensor *satellites_sensor) { this->satellites_sensor_ = satellites_sensor; }
32 void set_hdop_sensor(sensor::Sensor *hdop_sensor) { this->hdop_sensor_ = hdop_sensor; }
33
34#ifdef GPS_LISTENER_COUNT
36 listener->parent_ = this;
37 this->listeners_.push_back(listener);
38 }
39#endif
40 float get_setup_priority() const override { return setup_priority::HARDWARE; }
41
42 void dump_config() override;
43 void loop() override;
44 void update() override;
45
46 TinyGPSPlus &get_tiny_gps() { return this->tiny_gps_; }
47
48 protected:
49 float latitude_{NAN};
50 float longitude_{NAN};
51 float speed_{NAN};
52 float course_{NAN};
53 float altitude_{NAN};
54 float hdop_{NAN};
55 uint16_t satellites_{0};
56 bool has_time_{false};
57
65
66 TinyGPSPlus tiny_gps_;
67#ifdef GPS_LISTENER_COUNT
69#endif
70};
71
72} // namespace esphome::gps
This class simplifies creating components that periodically check a state.
Definition component.h:519
Minimal static vector - saves memory by avoiding std::vector overhead.
Definition helpers.h:286
void set_speed_sensor(sensor::Sensor *speed_sensor)
Definition gps.h:28
sensor::Sensor * altitude_sensor_
Definition gps.h:62
void register_listener(GPSListener *listener)
Definition gps.h:35
float speed_
Definition gps.h:51
sensor::Sensor * hdop_sensor_
Definition gps.h:64
sensor::Sensor * course_sensor_
Definition gps.h:61
void set_satellites_sensor(sensor::Sensor *satellites_sensor)
Definition gps.h:31
void update() override
Definition gps.cpp:21
float latitude_
Definition gps.h:49
uint16_t satellites_
Definition gps.h:55
void dump_config() override
Definition gps.cpp:10
sensor::Sensor * speed_sensor_
Definition gps.h:60
sensor::Sensor * latitude_sensor_
Definition gps.h:58
float longitude_
Definition gps.h:50
void loop() override
Definition gps.cpp:51
bool has_time_
Definition gps.h:56
sensor::Sensor * satellites_sensor_
Definition gps.h:63
void set_longitude_sensor(sensor::Sensor *longitude_sensor)
Definition gps.h:27
sensor::Sensor * longitude_sensor_
Definition gps.h:59
float altitude_
Definition gps.h:53
void set_course_sensor(sensor::Sensor *course_sensor)
Definition gps.h:29
void set_hdop_sensor(sensor::Sensor *hdop_sensor)
Definition gps.h:32
float hdop_
Definition gps.h:54
void set_altitude_sensor(sensor::Sensor *altitude_sensor)
Definition gps.h:30
void set_latitude_sensor(sensor::Sensor *latitude_sensor)
Definition gps.h:26
TinyGPSPlus tiny_gps_
Definition gps.h:66
float get_setup_priority() const override
Definition gps.h:40
TinyGPSPlus & get_tiny_gps()
Definition gps.h:46
float course_
Definition gps.h:52
StaticVector< GPSListener *, GPS_LISTENER_COUNT > listeners_
Definition gps.h:68
TinyGPSPlus & get_tiny_gps()
Definition gps.cpp:8
virtual void on_update(TinyGPSPlus &tiny_gps)=0
Base-class for all sensors.
Definition sensor.h:47
constexpr float HARDWARE
For components that deal with hardware and are very important like GPIO switch.
Definition component.h:43