ESPHome 2025.9.0-dev
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 {
11namespace gps {
12
13class GPS;
14
16 public:
17 virtual void on_update(TinyGPSPlus &tiny_gps) = 0;
18 TinyGPSPlus &get_tiny_gps();
19
20 protected:
21 friend GPS;
22
24};
25
26class GPS : public PollingComponent, public uart::UARTDevice {
27 public:
28 void set_latitude_sensor(sensor::Sensor *latitude_sensor) { this->latitude_sensor_ = latitude_sensor; }
29 void set_longitude_sensor(sensor::Sensor *longitude_sensor) { this->longitude_sensor_ = longitude_sensor; }
30 void set_speed_sensor(sensor::Sensor *speed_sensor) { this->speed_sensor_ = speed_sensor; }
31 void set_course_sensor(sensor::Sensor *course_sensor) { this->course_sensor_ = course_sensor; }
32 void set_altitude_sensor(sensor::Sensor *altitude_sensor) { this->altitude_sensor_ = altitude_sensor; }
33 void set_satellites_sensor(sensor::Sensor *satellites_sensor) { this->satellites_sensor_ = satellites_sensor; }
34 void set_hdop_sensor(sensor::Sensor *hdop_sensor) { this->hdop_sensor_ = hdop_sensor; }
35
37 listener->parent_ = this;
38 this->listeners_.push_back(listener);
39 }
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 std::vector<GPSListener *> listeners_{};
68};
69
70} // namespace gps
71} // namespace esphome
This class simplifies creating components that periodically check a state.
Definition component.h:425
void set_speed_sensor(sensor::Sensor *speed_sensor)
Definition gps.h:30
sensor::Sensor * altitude_sensor_
Definition gps.h:62
void register_listener(GPSListener *listener)
Definition gps.h:36
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:33
void update() override
Definition gps.cpp:22
float latitude_
Definition gps.h:49
std::vector< GPSListener * > listeners_
Definition gps.h:67
uint16_t satellites_
Definition gps.h:55
void dump_config() override
Definition gps.cpp:11
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:52
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:29
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:31
void set_hdop_sensor(sensor::Sensor *hdop_sensor)
Definition gps.h:34
float hdop_
Definition gps.h:54
void set_altitude_sensor(sensor::Sensor *altitude_sensor)
Definition gps.h:32
void set_latitude_sensor(sensor::Sensor *latitude_sensor)
Definition gps.h:28
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
TinyGPSPlus & get_tiny_gps()
Definition gps.cpp:9
virtual void on_update(TinyGPSPlus &tiny_gps)=0
Base-class for all sensors.
Definition sensor.h:59
const float HARDWARE
For components that deal with hardware and are very important like GPIO switch.
Definition component.cpp:49
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7