diff --git a/docs/community/local-groups.mdx b/docs/community/local-groups.mdx index 7f9fca63..4fcf78b2 100644 --- a/docs/community/local-groups.mdx +++ b/docs/community/local-groups.mdx @@ -30,6 +30,12 @@ us on [Discord](https://discord.com/invite/ktMAKGBnBs) to add your group. - [Meshtastic User Group Tasmania](https://www.facebook.com/groups/1556630645195649) +## Bulgaria + +### Burgas + +- [Burgas Mesh](https://discord.gg/5RKeFDPw) + ## Canada ### Alberta diff --git a/docs/getting-started/flashing-firmware/esp32/index.mdx b/docs/getting-started/flashing-firmware/esp32/index.mdx index 5b85753a..efbe6e6b 100644 --- a/docs/getting-started/flashing-firmware/esp32/index.mdx +++ b/docs/getting-started/flashing-firmware/esp32/index.mdx @@ -7,12 +7,12 @@ description: Instructions to flash Meshtastic firmware to an ESP32 chipset devic --- :::info -The recommended method for firmware flashing is the [Web-Based Installer.](https://flasher.meshtastic.org) +The recommended method for firmware flashing is the [Web Flasher.](https://flasher.meshtastic.org) ::: ## Flashing Method for ESP32 Devices -1. The [Web-Based Installer](/docs/getting-started/flashing-firmware/esp32/web-flasher.mdx) requires either Chrome or Edge browsers but is an excellent choice for quickly flashing devices. **This method is highly recommended for firmware flashing, especially for new users of the project, as it is easy to use.** +1. The [Web Flasher](/docs/getting-started/flashing-firmware/esp32/web-flasher.mdx) requires either Chrome or Edge browsers but is an excellent choice for quickly flashing devices. **This method is highly recommended for firmware flashing, especially for new users of the project, as it is easy to use.** 2. The [CLI Script](/docs/getting-started/flashing-firmware/esp32/cli-script) is considered the "manual process" for flashing firmware. 3. Flashing your device using an [external serial adapter](/docs/getting-started/flashing-firmware/esp32/external-serial-adapter) should only be attempted as a last resort if no other method has been successful. diff --git a/docs/hardware/devices/heltec-automation/lora32/index.mdx b/docs/hardware/devices/heltec-automation/lora32/index.mdx index 9395c1ea..afa4f2a9 100644 --- a/docs/hardware/devices/heltec-automation/lora32/index.mdx +++ b/docs/hardware/devices/heltec-automation/lora32/index.mdx @@ -167,7 +167,7 @@ Image Source: [Heltec](https://resource.heltec.cn/download/Wireless_Stick_Lite_V - [Rokland](https://store.rokland.com/collections/heltec-products/products/heltec-wireless-stick-litev3-902-928-mhz) - International - [Heltec](https://heltec.org/project/wireless-stick-lite-v2/) - - [AliExpress](https://www.aliexpress.us/item/3256805256996507.html) + - [AliExpress](https://www.aliexpress.us/item/3256807466584635.html) diff --git a/docs/software/integrations/mqtt/home-assistant.mdx b/docs/software/integrations/mqtt/home-assistant.mdx index d3958684..1557b169 100644 --- a/docs/software/integrations/mqtt/home-assistant.mdx +++ b/docs/software/integrations/mqtt/home-assistant.mdx @@ -113,7 +113,7 @@ sensor: {{ this.state }} {% endif %} device_class: "temperature" - unit_of_measurement: "F" + unit_of_measurement: "°F" # With device_class: "temperature" set, make sure to use the configured unit for temperature in your HA instance. # If you don't, then non-temperature messages will change the value of this sensor by reinterpreting the current state with the wrong unit, unless you account for it. # For Celsius use: {{ (value_json.payload.temperature | float) | round(1) }} diff --git a/docs/software/integrations/mqtt/index.mdx b/docs/software/integrations/mqtt/index.mdx index 4f024fe8..1a928ccb 100644 --- a/docs/software/integrations/mqtt/index.mdx +++ b/docs/software/integrations/mqtt/index.mdx @@ -6,21 +6,43 @@ sidebar_position: 6 description: Bridging mesh networks over the internet and integrating Meshtastic protocols with popular technologies such as Home Assistant, Node Red, and Adafruit IO. --- -## Bridging networks +## Public MQTT Server ![Common MQTT Layout](/img/software/mqtt/mqtt.webp) -Meshtastic networks in different locations beyond the reach of LoRa can be easily bridged together using MQTT. The simplest option is to connect your mesh to the official Meshtastic MQTT broker. This makes your devices appear on the world map, and provides a copy of your mesh traffic, translated into JSON. All you have to do to join the public MQTT server is to Enable MQTT and set Uplink and Downlink on the channels that you want to share over MQTT. The default device configuration using the public MQTT Server is encrypted. +The Meshtastic project provides a public MQTT service that users can connect to, with certain restrictions in place to ensure network stability. This service allows Meshtastic devices to bridge over the internet, providing global connectivity for remote networks. -You can also specify your own private MQTT broker to bridge mesh networks together, via the internet (or just a local IP network). +For instructions on connecting to the public MQTT server, please refer to [Connect to the Default Public Server](/docs/configuration/module/mqtt/#connect-to-the-default-public-server). -You can find the settings available for MQTT [here](/docs/configuration/module/mqtt). +### Restrictions on the Public MQTT Server -:::important -When MQTT is turned on, you are potentially broadcasting your entire mesh's traffic onto the public internet. This includes messages and position information. +To maintain optimal performance and protect LoRa meshes, traffic restrictions are currently applied to the public MQTT server. -The default channel (LongFast) on the public MQTT server usually has a lot of traffic. Your device may get overloaded and may no longer function properly anymore. It is recommended to use a different channel or to use your own MQTT server if you experience issues. -::: +#### Zero-Hop Policy + +Traffic from the public MQTT server does not fully propagate through local mesh networks. Directly connected nodes will receive the data, but due to the zero-hop policy, it will not spread further to other nodes within the local mesh network. + +#### Optimized Traffic Filtering + +Only specific portnums are prioritized for transmission over the public MQTT server when using the default PSK: + +- NodeinfoApp +- TextMessageCompressedApp +- TextMessageApp +- PositionApp +- TelemetryApp +- MapReportApp +- RoutingApp + +#### Location Precision Filtering + +On the default PSK, the public server also limits the precision of location data to help protect user privacy. Only position packets containing imprecise location data (10-16 bits) are shared on the topic, ensuring that precise location details are not exposed. For more information on how location precision works, see the [Position Precision](https://meshtastic.org/docs/configuration/radio/channels/#position-precision) section. + +This filtering focuses network resources on critical traffic, improving overall performance and reducing unnecessary data flow. Since these restrictions are applied at the network level, no firmware updates are required. As Meshtastic networks continue to grow, further traffic reduction measures may become necessary to manage network load and maintain reliable performance across all channels. + +### Using Private Brokers + +It is not recommended to use the default key (PSK) on a private broker. Doing so potentially allows security vulnerabilities and can flood the mesh with traffic, as private brokers do not enforce the zero-hop policy needed for public channels. Private brokers are intended for use with private channels, where custom PSKs provide secure, isolated communication. ## Software Integrations @@ -35,6 +57,7 @@ If no specific [root topic](/docs/configuration/module/mqtt#root-topic) is confi For each channel where uplink and/or downlink is enabled, two topics might be used: #### Protobufs topic + A gateway node will uplink and/or downlink raw ([protobuf](https://developers.google.com/protocol-buffers)) MeshPackets to the topic: `msh/REGION/2/e/CHANNELNAME/USERID`, where `CHANNELNAME` is the name of the channel (firmware versions prior to 2.3.0 will publish to a topic with `/c/` in the place of `/e/`). @@ -52,6 +75,7 @@ The payload is a raw protobuf, whose definitions for Meshtastic can be found [he If [encryption_enabled](/docs/configuration/module/mqtt#encryption-enabled) is set to true, the payload of the MeshPacket will remain encrypted with the key for the specified channel. #### JSON topic + :::note JSON is not supported on the nRF52 platform. ::: @@ -82,7 +106,7 @@ An example of a received `NODEINFO_APP` message: The meaning of these fields is as follows: -- "`id`" is the unique ID for this message. +- "`id`" is the unique ID for this message. - "`channel`" is the channel index this message was received on. - "`from`" is the unique decimal-equivalent Node ID of the node on the mesh that sent this message. (The hexadecimal value `7efeee00` represented by an integer in decimal is `2130636288`). - "`id`" inside the payload of a `NODEINFO_APP` message is the hexadecimal Node ID (sometimes called User ID) of the node that sent it. @@ -91,15 +115,15 @@ The meaning of these fields is as follows: - "`shortname`" is the short name of the device that sent the `NODEINFO_APP` message. - "`sender`" is the hexadecimal Node ID of the gateway device, which is in this case the same node that sent the `NODEINFO_APP` message. - "`timestamp`" is the Unix Epoch when the message was received, represented as an integer in decimal. -- "`to`" is the decimal-equivalent Node ID of the destination of the message. In this case, "-1" means it was a broadcast message (this is the decimal integer representation of `0xFFFFFFFF`). +- "`to`" is the decimal-equivalent Node ID of the destination of the message. In this case, "-1" means it was a broadcast message (this is the decimal integer representation of `0xFFFFFFFF`). - "`type`" is the type of the message, in this case it was a `NODEINFO_APP` message. -The `from` field can thus be used as a stable identifier for a specific node. Note that in firmware prior to 2.2.0, this is a signed value in JSON, while in firmware 2.2.0 and higher, the JSON values are unsigned. +The `from` field can thus be used as a stable identifier for a specific node. Note that in firmware prior to 2.2.0, this is a signed value in JSON, while in firmware 2.2.0 and higher, the JSON values are unsigned. If the message received contains valid JSON in the payload, the JSON is deserialized and added as a JSON object rather than a string containing the serialized JSON. - #### JSON downlink to instruct a node to send a message + You can also send a JSON message to the topic `msh/US/2/json/mqtt/` to instruct a gateway node to send a message to the mesh. To make this work, ensure that your node has a Meshtastic channel configured called "mqtt". Enable Downlink. The PSK can be random and doesn't matter. This channel allows the node to listen to messages on the `msh/US/2/json/mqtt/` topic. @@ -147,12 +171,6 @@ Gateway nodes (via code running in the phone) will contain two tables to whiteli Since multiple gateway nodes might be connected to a single mesh, it is possible that duplicate messages will be published on any particular topic. Therefore, subscribers to these topics should deduplicate if needed by using the packet ID of each message. -### Optional web services - -#### Public MQTT broker service - -An existing public [MQTT broker](https://mosquitto.org) will be the default for this service, but clients can use any MQTT broker they choose. - ## Examples - [Using mosquitto on a mac](/docs/software/integrations/mqtt/mosquitto.mdx) diff --git a/src/pages/downloads/index.tsx b/src/pages/downloads/index.tsx index 4908c75d..95142b80 100644 --- a/src/pages/downloads/index.tsx +++ b/src/pages/downloads/index.tsx @@ -38,13 +38,12 @@ const Firmware = (): JSX.Element => {
-

ESP32 Web Flasher

+

Web Flasher

- Web based installer for easy flashing with Chrome and Edge - Browser. Works with T-Beam, T-Lora, Nano-G1 and similar - boards. + Web based flasher for easy device flashing with Chrome and + Edge Browser. Works with all major device architectures.

@@ -52,7 +51,7 @@ const Firmware = (): JSX.Element => { href="https://flasher.meshtastic.org/" className="m-auto flex rounded-lg border-4 border-transparent bg-accent p-1 font-semibold text-black shadow-md hover:text-black hover:brightness-110 active:border-green-200" > - Go to Flasher + Go to Web Flasher
diff --git a/src/pages/index.tsx b/src/pages/index.tsx index c928362b..792b1dc7 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -183,11 +183,7 @@ function Home() {
  • Radio
  • Battery
  • Case
  • -
  • - Antenna (most devices include an antenna, but the quality - can be a bit of a mixed bag from some suppliers on stock - antennas) -
  • +
  • Antenna
  • @@ -198,7 +194,7 @@ function Home() {

    - The Meshtastic Web-Based Flasher & Clients can assist you in + The Meshtastic Web Flasher & Clients can assist you in flashing the firmware and configuring settings.