ESPHome 2026.5.0b1
Loading...
Searching...
No Matches
gps.h
Go to the documentation of this file.
1#pragma once
2
6#include <TinyGPSPlus.h>
7
8#include <vector>
9
10namespace esphome::gps {
11
12class GPS;
13
15 public:
16 virtual void on_update(TinyGPSPlus &tiny_gps) = 0;
17 TinyGPSPlus &get_tiny_gps();
18
19 protected:
20 friend GPS;
21
23};
24
25class GPS : public PollingComponent, public uart::UARTDevice {
26 public:
27 void set_latitude_sensor(sensor::Sensor *latitude_sensor) { this->latitude_sensor_ = latitude_sensor; }
28 void set_longitude_sensor(sensor::Sensor *longitude_sensor) { this->longitude_sensor_ = longitude_sensor; }
29 void set_speed_sensor(sensor::Sensor *speed_sensor) { this->speed_sensor_ = speed_sensor; }
30 void set_course_sensor(sensor::Sensor *course_sensor) { this->course_sensor_ = course_sensor; }
31 void set_altitude_sensor(sensor::Sensor *altitude_sensor) { this->altitude_sensor_ = altitude_sensor; }
32 void set_satellites_sensor(sensor::Sensor *satellites_sensor) { this->satellites_sensor_ = satellites_sensor; }
33 void set_hdop_sensor(sensor::Sensor *hdop_sensor) { this->hdop_sensor_ = hdop_sensor; }
34
36 listener->parent_ = this;
37 this->listeners_.push_back(listener);
38 }
39 float get_setup_priority() const override { return setup_priority::HARDWARE; }
40
41 void dump_config() override;
42 void loop() override;
43 void update() override;
44
45 TinyGPSPlus &get_tiny_gps() { return this->tiny_gps_; }
46
47 protected:
48 float latitude_{NAN};
49 float longitude_{NAN};
50 float speed_{NAN};
51 float course_{NAN};
52 float altitude_{NAN};
53 float hdop_{NAN};
54 uint16_t satellites_{0};
55 bool has_time_{false};
56
64
65 TinyGPSPlus tiny_gps_;
66 std::vector<GPSListener *> listeners_{};
67};
68
69} // namespace esphome::gps
This class simplifies creating components that periodically check a state.
Definition component.h:602
void set_speed_sensor(sensor::Sensor *speed_sensor)
Definition gps.h:29
sensor::Sensor * altitude_sensor_
Definition gps.h:61
void register_listener(GPSListener *listener)
Definition gps.h:35
float speed_
Definition gps.h:50
sensor::Sensor * hdop_sensor_
Definition gps.h:63
sensor::Sensor * course_sensor_
Definition gps.h:60
void set_satellites_sensor(sensor::Sensor *satellites_sensor)
Definition gps.h:32
void update() override
Definition gps.cpp:21
float latitude_
Definition gps.h:48
std::vector< GPSListener * > listeners_
Definition gps.h:66
uint16_t satellites_
Definition gps.h:54
void dump_config() override
Definition gps.cpp:10
sensor::Sensor * speed_sensor_
Definition gps.h:59
sensor::Sensor * latitude_sensor_
Definition gps.h:57
float longitude_
Definition gps.h:49
void loop() override
Definition gps.cpp:51
bool has_time_
Definition gps.h:55
sensor::Sensor * satellites_sensor_
Definition gps.h:62
void set_longitude_sensor(sensor::Sensor *longitude_sensor)
Definition gps.h:28
sensor::Sensor * longitude_sensor_
Definition gps.h:58
float altitude_
Definition gps.h:52
void set_course_sensor(sensor::Sensor *course_sensor)
Definition gps.h:30
void set_hdop_sensor(sensor::Sensor *hdop_sensor)
Definition gps.h:33
float hdop_
Definition gps.h:53
void set_altitude_sensor(sensor::Sensor *altitude_sensor)
Definition gps.h:31
void set_latitude_sensor(sensor::Sensor *latitude_sensor)
Definition gps.h:27
TinyGPSPlus tiny_gps_
Definition gps.h:65
float get_setup_priority() const override
Definition gps.h:39
TinyGPSPlus & get_tiny_gps()
Definition gps.h:45
float course_
Definition gps.h:51
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:41