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