Commit Graph
55 Commits
Author SHA1 Message Date
Eric SeveranceandGitHub 9f7cbf1b4f MQTT unit test can inject WiFiClient (#5716) 2025-01-02 19:32:39 +08:00
Eric SeveranceandGitHub a7d9e8107a More accurately determine if MQTT uses the default server (#5663)
* More accurately determine if MQTT uses the default server

* Channels::anyMqttEnabled() uses same logic

* Remove previous static bool
2024-12-25 08:33:53 -06:00
Ben MeadorsandGitHub f39a9c5083 Clean up some straggler NRF52 json (#5628) 2024-12-21 14:42:54 +11:00
Eric SeveranceandGitHub 58d80b8557 Use IPAddress.fromString for parsing private IPs (#5621) 2024-12-21 11:21:27 +11:00
Eric SeveranceandGitHub 658459aaf3 Use encoded ServiceEnvelope in mqttQueue (#5619) 2024-12-20 14:59:23 -06:00
8c6eec52f2 Refactor MQTT::onReceive to reduce if/else nesting (#5592)
* Refactor MQTT::onReceive to reduce if/else nesting

* Fix missing #include <functional>

* const DecodedServiceEnvelope e

* Combine validDecode if statement.

* Only call pb_release when validDecode.

* s/ptr/channelName/

* Use reference type for deleter

* Use lambda instead of bind

* Document deleter

* Reorder 'if's to avoid object creation

* Remove unnecessary comment

* Remove 'else'; simpifies #5516

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2024-12-19 05:47:46 -06:00
7c2b6778cb enable MQTT with TLS on RPi picow (#5442)
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2024-11-25 06:12:19 -06:00
Johnathon MohrandGitHub 3e5f129fce Ensure the MQTT address is an IPv4 before determining it's private (#5081)
* Ensure the mqtt address is an IPv4 (or at least not a domain) before determining it's private.

* check address length
2024-10-16 05:19:00 -05:00
Johnathon MohrandGitHub ad214ea42a Add MQTT exception for private IP address server (#5072)
Determines if the given IP address is a private address, i.e. not routable on the public internet.
These are the ranges: 127.0.0.1, 10.0.0.0-10.255.255.255, 172.16.0.0-172.31.255.255, 192.168.0.0-192.168.255.255.

If so, allow MQTT publication the same as existing localhost support.
2024-10-16 11:08:49 +11:00
GUVWAFandGitHub d55c08d5cd Uplink DMs not to us if MQTT encryption enabled (#5025)
* Uplink DMs not to us if MQTT encryption enabled

* Only really need to try uplinking encrypted packet if MQTT encryption is enabled

* Add log about publishing nothing when packet is not decrypted and encryption_enabled is false

* Improve comment
2024-10-10 15:11:58 -05:00
Thomas Göttgens 9527874815 First stab at ESP32-C6 support for TLora-C6 2024-09-12 22:42:10 +02:00
Ben MeadorsandGitHub f645ae943d JSON serialization refactor (#4331) 2024-07-25 20:50:42 -05:00
Ben MeadorsandGitHub dadf9234e5 Remove status topic (#4305) 2024-07-21 07:09:10 -05:00
8785adf6e4 minor cleanup proposal (#4169)
* MESHTASTIC_EXCLUDE_WIFI and HAS_WIFI cleanup...
Our code was checking HAS_WIFI and the new MESHTASTIC_EXCLUDE_WIFI
flags in various places (even though EXCLUDE_WIFI forces HAS_WIFI
to 0).  Instead just check HAS_WIFI, only use EXCLUDE_WIFI inside
configuration.h

* cleanup: use HAS_NETWORKING instead of HAS_WIFI || HAS_ETHERNET
We already had HAS_NETWORKING as flag in MQTT to mean 'we have
tcpip'.  Generallize that and move it into configuration.h so that
we can use it elsewhere.

* Use #pragma once, because supported by gcc and all modern compilers
instead of #ifdef DOTHFILE_H etc...

---------

Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
2024-07-03 17:39:09 -05:00
GUVWAFandGitHub 155df45d92 Add sanity check for map report interval and position precision (#3459)
* Add sanity check for map report interval and position precision

* Use new `Default::` methods
2024-03-21 16:20:20 -05:00
GUVWAFandGitHub 4debcd5ccd Set default position precision of mapReport to 14 (#3456) 2024-03-21 14:35:17 -05:00
Ben MeadorsandGitHub 52cfec29fc More comprehensive client proxy queue guards (#3414)
* More comprehensive MQTT thread and queue guards

* Consolidate logic

* Remove channel check

* Check for map_reporting_enabled as well

* Update message

* Remove channel check from here as well

* One liner

* Start the mqtt thread back up when channels change and we want mqtt
2024-03-15 16:17:47 -05:00
GUVWAF b45a912409 Use dedicated map topic 2024-03-10 15:56:00 +01:00
GUVWAF 084b01715e Merge remote-tracking branch 'origin/master' into mapReport 2024-03-10 14:54:41 +01:00
GUVWAF af9d14c370 Periodic reporting of device information to a map via MQTT 2024-03-10 14:52:37 +01:00
Ben MeadorsandGitHub 0f1bc98305 Update MQTT topic to match (#3353) 2024-03-08 20:15:00 -06:00
eb8a12e5a2 Refactor MQTT: only publish on LoRa Tx if packet is from us and on Rx if not (#3245)
Such that direct message to MQTT node gets published and we get rid of always rebroadcasting when MQTT is enabled

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2024-02-21 13:00:14 -06:00
af52dcecdf Restrict MQTT JSON downlink messages (#3141)
Channel needs to be named "mqtt"
"from" field should be set to the node number of the transmitter

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2024-01-29 06:13:56 -06:00
d6fa190025 fix: allow MQTT encryption_enabled with json_enabled (#3126)
* fix: allow MQTT `encryption_enabled` with `json_enabled`

* fix: copy decoded MeshPacket and release memory after use

* fix: use `packetPool` allocCopy and release methods

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2024-01-25 08:42:34 -06:00
003047baaf Fix various typos (#2607)
* Fix various typos

Found via `codespell -q 3 -L acount,clen,dout`

* Trunk reformatting

---------

Co-authored-by: code8buster <communismisgreat@national.shitposting.agency>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2023-07-14 16:25:20 -05:00
Ben MeadorsandGitHub 6e96216ba3 MQTT client proxying (#2587)
* WIP on MQTT proxy message queue

* Fix copy paste goof

* Progress on uplink

* Has packets

* Avoid trying to connect if we're proxying

* Pointer correctly

* Remove wifi guards

* Client proxy subscribe

* Fixed method that got bababababorked somehow... personally I blame CoPilot

* Short circuit logic

* Remove canned settings

* Missed some stuff in the move

* Guard pubsub client for non-networked variants

* Has networking guard

* else

* Return statement for fall-thru

* More gaurd removals

* Removed source filters. No wonder I was confused

* Bounding

* Scope guard around else and fix return

* Portduino

* Defs instead

* Move macro up to actually fix portduino

* Size_t

* Unsigned int

* Thread interval

* Protos

* Protobufs ref
2023-07-08 20:37:04 -05:00
Thomas Göttgens b43a5bc4f8 Fix missing msh default topic. 2023-04-13 23:17:05 +02:00
990d418dc8 Add MQTT TLS Support for WIFI-Enabled Devices (#2410)
* Testing TLS MQTT Support

* Working TLS connections

* Testing TLS MQTT Support

* Working TLS connections

* Added protobuf support for mqtt.tls_enabled

* fix 'em up good

* don't commit this stuff, jeeez

* there i fixed it

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
2023-04-04 08:14:47 -05:00
Thomas Göttgens 5044169e8d fixes #2330 2023-03-06 14:12:24 +01:00
Thomas Göttgens 6fdb93cd16 re-add namespacing in protobufs. Let's see what i missed. Portduino likely ...
Checking in generated on purpose.
2023-01-21 21:23:24 +01:00
Ben Meadors 9046dacec8 I don't like this formatting but I need trunk to STFU 2023-01-18 14:51:48 -06:00
Ben Meadors 4d4af7de59 generated paths experiment 2023-01-18 08:56:47 -06:00
Thomas Göttgens 867e55b9e7 sync mqtt with develop 2023-01-12 16:09:03 +01:00
Thomas GöttgensandGitHub 42122f3d0f Merge branch 'master' into develop 2023-01-12 15:01:56 +01:00
Thomas Göttgens 1fc5d70221 let the library handle the reconnect, manually do it after 5 seconds 2023-01-09 23:26:47 +01:00
Thomas Göttgens d9f0dc7ea4 add MQTT outqueue back in (still broken) 2023-01-04 14:41:58 +01:00
30ae4c2a38 Add QueueStatus sending to the firmware (#1820)
* Yank mqtt service envelope queue

* trybuildfix mqtt system

* removed too much

* no excessive heap debugging on release builds

* send QueueStatus messages

The QueueStatus message is sent as a response to the attempt to queue
an outgoing MeshPacket and contains statuses of the last queue
attempt, TX Queue space and capacity and MeshPacket.id that was
queued.

When TX Queue changes status from completely full to at least
a single slot free a QueueStatus message is also sent to notify
that user can queue more messages.

Signed-off-by: Pavel Boldin <pavel.b@techspark.engineering>

* WIP: update protobufs

Signed-off-by: Pavel Boldin <pavel.b@techspark.engineering>

* update protobufs

* regen protos

Signed-off-by: Pavel Boldin <pavel.b@techspark.engineering>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: Sacha Weatherstone <sachaw100@hotmail.com>
2023-01-04 23:56:52 +11:00
Thomas Göttgens cad5c9b70c removed too much 2023-01-03 22:17:04 +01:00
Thomas Göttgens 5867038abf trybuildfix mqtt system 2023-01-03 22:09:35 +01:00
Thomas Göttgens 68f6cfde0c Improve Wifi Reconnect handling and add outgoing queue for MQTT packets to bridge short connection issues. 2022-12-16 20:28:28 +01:00
Thomas Göttgens b7ebe03ca8 API Server and DHCP Lease Management 2022-10-26 11:09:59 +02:00
Thomas Göttgens a66538fe55 MQTT is working over ethernet 2022-10-26 00:07:02 +02:00
Thomas Göttgens ea87193c8f possible fix for stuck MQTT handler. 2022-10-18 21:51:40 +02:00
d4e6dd32c5 JSON MQTT Integration (#1283)
* Added downstream JSON MQTT handling.

* Added uplink JSON messaging

* Fixed shadow variable.

* Added missing dependency.

* Fixes Environment -> Telemetry.

* Fixed native issue.

* Added json11 pio reg dependency.

* Fixed json11 library dependency.

Co-authored-by: Sacha Weatherstone <sachaw100@hotmail.com>
2022-03-12 08:08:57 -06:00
Mike Kinney caaa235c5d more cppcheck warnings fixes 2022-01-24 17:24:40 +00:00
Kevin Hester 52d7a6b8e4 immediately reconnect to mqtt server on wifi reconnect 2021-08-17 19:59:56 -07:00
Kevin Hester 28af18389b If MQTT connected don't let the board enter LS state 2021-08-02 21:34:14 -07:00
Kevin Hester 99d529be51 While connected to MQTT server, veto light-sleep (to keep wifi working) 2021-08-02 17:42:44 -07:00
Kevin Hester 50a69d77e6 mqtt: begin subscription support 2021-04-05 08:42:52 +08:00
Kevin Hester e84edc676f mqtt: automatically start or stop as neede & attempt reconnect 2021-04-05 07:53:07 +08:00