Merge branch 'master' into patch-1

This commit is contained in:
pdxlocations 2024-02-12 22:09:27 -08:00 committed by GitHub
commit 83f5181270
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 255 additions and 143 deletions

View file

@ -1,10 +1,14 @@
--- ---
title: Community Guide title: Contributing to Meshtastic
sidebar_label: Contributing sidebar_label: Contributing
slug: /contributing slug: /contributing
sidebar_position: 3 sidebar_position: 3
--- ---
### Volunteer Based Development
import Link from "@docusaurus/Link"
## Volunteer Based Development
Meshtastic is a team of volunteers, and as such there are always plenty of ways to help. This project gets great contributions from people in their off hours. Those contributors work on the features they are interested in. It is a very open and welcoming developer community, and we are always looking for help to improve Meshtastic. Meshtastic is a team of volunteers, and as such there are always plenty of ways to help. This project gets great contributions from people in their off hours. Those contributors work on the features they are interested in. It is a very open and welcoming developer community, and we are always looking for help to improve Meshtastic.
@ -19,38 +23,62 @@ Meshtastic is a team of volunteers, and as such there are always plenty of ways
There are several developers, testers, and active users on [Discord](https://discord.gg/ktMAKGBnBs). There are several developers, testers, and active users on [Discord](https://discord.gg/ktMAKGBnBs).
## Meshtastic Ecosystem ### Meshtastic Ecosystem
There are many technologies (and repositories) used in creating the Meshtastic ecosystem. Below is a breakdown: The Meshtastic ecosystem leverages a variety of technologies and repositories to provide a robust decentralized communication platform. This ecosystem is continuously evolving, thanks to the collaborative effort of developers, contributors, and the community, aiming to enhance and expand Meshtastic's capabilities for decentralized off-grid communication.
### Protocol Buffers Key components include:
- **Protocol Buffers**: The backbone of communication and interactions, with changes and definitions managed in the [Meshtastic Protobuf Definitions repository](https://github.com/meshtastic/protobufs). For detailed information, see the [Protobuf API Reference](https://buf.build/meshtastic/protobufs/).
- **Device Firmware**: Development for ESP32, nRF52, and RP2040 based devices occurs in the [firmware repository](https://github.com/meshtastic/firmware), focusing on C and C++ code for hardware interaction and communication.
- **Firmware Modules**: Extend the core functionalities of devices and mesh networks, implemented mainly within the firmware repository. Modules are essential for adding new features and integrating devices within the ecosystem.
- **CLI Apps (Device Interface)**: The [Meshtastic Python CLI](https://github.com/meshtastic/Meshtastic-python) enables interaction with device settings and functionalities, serving both as a utility and a library for application development.
- **Web and JavaScript Apps**: Development for the hosted web server on ESP32 devices is done in [Meshtastic Web](https://github.com/meshtastic/web), with a JavaScript library for device interfaces available in [Meshtastic JS](https://github.com/meshtastic/meshtastic.js).
- **Mobile and Desktop Apps**: Android, iOS, iPadOS, and macOS applications provide user interfaces for interacting with Meshtastic devices. Development for Android is detailed in the [Meshtastic-Android repository](https://github.com/meshtastic/Meshtastic-Android), while Apple platforms are supported by the [Meshtastic-Apple repository](https://github.com/meshtastic/Meshtastic-Apple).
- **Documentation**: The source for the Meshtastic website and documentation resides in the [meshtastic/meshtastic repository](https://github.com/meshtastic/meshtastic). For guidelines on maintaining documentation, visit the [Maintaining Documentation](/docs/development/docs) page.
Most communication and interactions happen with protocol buffers. The [Meshtastic Protobuf Definitions](https://github.com/meshtastic/protobufs) repo is where all of the protocol buffer changes happen. See the [Protobuf API Reference](https://buf.build/meshtastic/protobufs/) for more details. This ecosystem is continuously evolving, thanks to the collaborative effort of developers, contributors and the community, aiming to enhance and expand Meshtastic's capabilities for decentralized off-grid communication.
### Device Firmware
The [firmware repo](https://github.com/meshtastic/firmware) is where all of the device firmware development happens. This is where the code for the ESP32, nRF52 and RP2040 based devices is developed. It is mainly C and C++ code. Think Arduino. It is where the first level of hardware interaction begins and ends. ## Supporting and Contributing to Meshtastic
### Firmware Modules The Meshtastic project benefits greatly from the contributions of our volunteers and the financial support from our community. As the project has evolved, the expansion of features and services has led to increased financial needs, including hardware for development, GitHub fees, hosting for public MQTT services, among others. This growth into a robust platform for decentralized off-grid mesh networking solutions showcases the dedication of our developers and the generosity of our financial supporters.
[Modules](/docs/configuration/module) extend device and mesh functionality beyond core functions. These are also implemented mainly in the firmware repo above. Typically, you would add functions in the protobufs repo and the device repo to implement module functionality. You probably also want to have some client or device, use or interact with the module. This is where Device Interface support comes into play. ### How You Can Support Meshtastic Financially
### CLI Apps (Device Interface) If direct development contribution is not feasible for you, financial support is another invaluable way to help Meshtastic grow and thrive. We offer two primary options for monetary donations:
- **Meshtastic Python CLI** - The [meshtastic/Meshtastic-python repository](https://github.com/meshtastic/Meshtastic-python) is a command line utility that allows you to interact with most of the device settings and functionality. This python library can also be consumed for other applications. See [Meshtastic Python Development](/docs/development/python/) for more details <div className="indexCtasBody">
<div className="split-container">
<div className="split-item">
<a
className="button button--outline button--lg cta--button"
href="https://opencollective.com/meshtastic"
target="_blank"
rel="noopener noreferrer"
>
Support on Open Collective
</a>
</div>
### Web Apps (Device Interface) <div className="split-item">
<a
className="button button--outline button--lg cta--button"
href="https://github.com/sponsors/meshtastic"
target="_blank"
rel="noopener noreferrer"
>
Sponsor on GitHub
</a>
</div>
</div>
</div>
- **Meshtastic Web** - The [meshtastic/web repository](https://github.com/meshtastic/web) is where the hosted web server on the ESP32 devices in Typescript is developed. See the [Web Development Overview](/docs/development/web/) for more details. ### Fiscal Sponsorships
- **Meshtastic JS** - The [meshtastic/meshtastic.js](https://github.com/meshtastic/meshtastic.js) repository is a JavaScript library that provides an interface for Meshtastic devices. See [Javascript Development](/docs/development/js) for more details
### Mobile and Desktop Apps (Device Interface) We're deeply thankful for the backing from the Open Collective, Open Source Collective, DigitalOcean, and Vercel, which has been instrumental in our project's sustainability and growth:
There are Android, iOS, iPadOS, and macOS apps that interact with Meshtastic devices: - **Open Collective & Open Source Collective**: Our collaboration with these organizations offers a robust fiscal management framework and banking solutions, supporting our project alongside over three thousand other open source initiatives. Open Collective's transparent framework lets everyone see our finances, including income, expenditures, and contributions on [Meshtastic's Open Collective page](https://opencollective.com/meshtastic). This transparency and support affirm that we're in excellent company.
- **Android App** - The [meshtastic/Meshtastic-Android](https://github.com/meshtastic/Meshtastic-Android) repository contains the Kotlin code for Android based interactions with Meshtastic devices. See the [Android development instructions](/docs/development/android) on how to create a development environment and build the Meshtastic Android App. - **DigitalOcean**: Champions of open source, DigitalOcean supports Meshtastic through credits, which significantly aid our development, infrastructure, and testing efforts. This contribution is part of their commitment to fostering innovation and collaboration within the open source ecosystem.
- **Apple Apps** - The [meshtastic/Meshtastic-Apple](https://github.com/meshtastic/Meshtastic-Apple) repository contains the SwiftUI client applications code for iPhone, iPad and Mac.
### Documentation - **Vercel**: By covering our hosting costs, Vercel directly contributes to Meshtastic's growth, enhancing our web scalability and presence. Their sponsorship is crucial for our continued development and focus on creating a robust platform for decentralized communication.
The Meshtastic website (the one you are looking at right now) is in the [meshtastic/Meshtastic](https://github.com/meshtastic/meshtastic) repository. See [Maintaining Documentation](/docs/development/docs) for more details.

View file

@ -19,7 +19,7 @@ The device config options are: Role, Serial Output, and Debug Log. Device config
| CLIENT_HIDDEN | Device that only broadcasts as needed for stealth or power savings. | Use in stealth/hidden deployments or to reduce airtime/power consumption while still participating in the network. | | CLIENT_HIDDEN | Device that only broadcasts as needed for stealth or power savings. | Use in stealth/hidden deployments or to reduce airtime/power consumption while still participating in the network. |
| TRACKER | Broadcasts GPS position packets as priority. | Tracking the location of individuals or assets, especially in scenarios where timely and efficient location updates are critical. | | TRACKER | Broadcasts GPS position packets as priority. | Tracking the location of individuals or assets, especially in scenarios where timely and efficient location updates are critical. |
| LOST_AND_FOUND | Broadcasts location as message to default channel regularly for to assist with device recovery. | Used for recovery efforts of a lost device. | | LOST_AND_FOUND | Broadcasts location as message to default channel regularly for to assist with device recovery. | Used for recovery efforts of a lost device. |
| SENSOR | Prioritizes broadcasting GPS position packets. | Deploying in scenarios where gathering environmental or other sensor data is crucial, with efficient power usage and frequent updates. | | SENSOR | Broadcasts telemetry packets as priority. | Deploying in scenarios where gathering environmental or other sensor data is crucial, with efficient power usage and frequent updates. |
| TAK | Optimized for ATAK system communication, reduces routine broadcasts. | Integration with ATAK systems for communication in tactical or coordinated operations. | | TAK | Optimized for ATAK system communication, reduces routine broadcasts. | Integration with ATAK systems for communication in tactical or coordinated operations. |
| REPEATER | Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list. | Best positioned in strategic locations to maximize the network's overall coverage. Device is not shown in topology. | | REPEATER | Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list. | Best positioned in strategic locations to maximize the network's overall coverage. Device is not shown in topology. |
| ROUTER | Infrastructure node for extending network coverage by relaying messages. Visible in Nodes list. | Best positioned in strategic locations to maximize the network's overall coverage. Device is shown in topology. | | ROUTER | Infrastructure node for extending network coverage by relaying messages. Visible in Nodes list. | Best positioned in strategic locations to maximize the network's overall coverage. Device is shown in topology. |

View file

@ -116,11 +116,11 @@ The RAK11200 does not contain a LoRa transceiver, and thus needs to be added sep
- Firmware file: `firmware-rak11200-X.X.X.xxxxxxx.bin` - Firmware file: `firmware-rak11200-X.X.X.xxxxxxx.bin`
- Further information on the RAK11200 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11200/Overview/#product-description). - Further information on the RAK11200 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11200/Overview/#product-description).
- Purchase Links: - Purchase Links:
- US
- [Rokland](https://store.rokland.com/products/rakwireless-rak11200-wifi-and-ble-espressif-esp32-wrover-pid-110023)
- International - International
- [RAK Wireless Store](https://store.rakwireless.com/products/wiscore-esp32-module-rak11200) - [RAK Wireless Store](https://store.rakwireless.com/products/wiscore-esp32-module-rak11200)
- [RAK Wireless Aliexpress](https://www.aliexpress.us/item/3256802312474717.html) - [RAK Wireless Aliexpress](https://www.aliexpress.us/item/3256802312474717.html)
- US
- [Rokland](https://store.rokland.com/products/rakwireless-rak11200-wifi-and-ble-espressif-esp32-wrover-pid-110023)
<img <img
alt="RAK4631 5005 11200" alt="RAK4631 5005 11200"
@ -163,6 +163,8 @@ The RAK11200 does not contain a LoRa transceiver, and thus needs to be added sep
- Firmware file: `firmware-rak11310-X.X.X.xxxxxxx.uf2` - Firmware file: `firmware-rak11310-X.X.X.xxxxxxx.uf2`
- Further information on the RAK11310 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11310/Overview/#product-description). - Further information on the RAK11310 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11310/Overview/#product-description).
- Purchase Links: - Purchase Links:
- US
- [Rokland](https://store.rokland.com/products/rak-raspberry-pi-rp2040-core-module-for-lorawan-with-lora-sx1262-us915-mhz-rak11310-pid-116003)
- International - International
- [RAK Wireless Store](https://store.rakwireless.com/products/rak11310-wisblock-lpwan-module) - [RAK Wireless Store](https://store.rakwireless.com/products/rak11310-wisblock-lpwan-module)
- [RAK Wireless Aliexpress](https://www.aliexpress.us/item/3256803225175784.html) - [RAK Wireless Aliexpress](https://www.aliexpress.us/item/3256803225175784.html)

View file

@ -4,6 +4,7 @@ sidebar_label: Legal
slug: /legal slug: /legal
sidebar_position: 9 sidebar_position: 9
--- ---
## Disclaimers ## Disclaimers
**Project Status:** Meshtastic is now at a stage where it offers a _mostly_ stable and reliable functionality, thanks to the dedicated efforts of our development team. While the core aspects of the project are well-established, we are still rapidly evolving and actively adding new features. As we continue to innovate and expand, some features in our current builds are in development, reflecting our commitment to continuous improvement and growth. We appreciate your engagement as we advance further in this exciting journey. **Project Status:** Meshtastic is now at a stage where it offers a _mostly_ stable and reliable functionality, thanks to the dedicated efforts of our development team. While the core aspects of the project are well-established, we are still rapidly evolving and actively adding new features. As we continue to innovate and expand, some features in our current builds are in development, reflecting our commitment to continuous improvement and growth. We appreciate your engagement as we advance further in this exciting journey.

View file

@ -268,7 +268,7 @@ First, create an input text helper entity. The preferred way to configure an inp
### Create a Send Message Automation ### Create a Send Message Automation
This automation will check the send box for changes. After typing a message, either hit enter or click off the box and the automation will send a text string in JSON to the mqtt broker. Make sure to call your channel "mqtt" and to update the device ID and `from` field in the example below. This automation will check the send box for changes. After typing a message, either hit enter or click off the box and the automation will send a text string in JSON to the mqtt broker. Make sure to publish to a channel called "mqtt" and to update the device ID and `from` field in the example below. A field `channel` can be added to transmit on a different channel index than the primary, or a `to` field can be added with a node number to send a DM.
```yaml ```yaml
- alias: Meshtastic - Send Automation - alias: Meshtastic - Send Automation

View file

@ -98,11 +98,13 @@ If the message received contains valid JSON in the payload, the JSON is deserial
#### JSON downlink to instruct a node to send a message #### JSON downlink to instruct a node to send a message
You can also send a JSON message to the topic `msh/2/json/mqtt/` to instruct a gateway node to send a message to the mesh. Note that the channel **must** be called "mqtt". The JSON message should contain the following fields: You can also send a JSON message to the topic `msh/2/json/mqtt/` to instruct a gateway node to send a message to the mesh. Note that the channel you publish it on **must** be called "mqtt". The JSON message should contain the following fields:
```json ```json
{ {
"from": <node number>, "from": <node number of MQTT node>,
"to": <node number of recipient for a DM (optional)>,
"channel": <channel index (optional)>,
"type": "type", "type": "type",
"payload": { "payload": {
"key":"value" "key":"value"
@ -111,7 +113,7 @@ You can also send a JSON message to the topic `msh/2/json/mqtt/` to instruct a g
} }
``` ```
`from` and `payload` fields are required for a valid envelope (note that in firmware &lt;2.2.20 a field `sender` was required, but this is no longer the case). The `from` field should be equal to the node number of the node that will transmit the message. Optionally, you can specify a destination by setting the `to` field to the node number of the destination. If the `to` field is not set, the message will be broadcast to all nodes on the mesh. `from` and `payload` fields are required for a valid envelope (note that in firmware &lt;2.2.20 a field `sender` was required, but this is no longer the case). The `from` field should be equal to the node number of the node that will transmit the message. Optionally, you can specify a different channel than the primary channel by setting the `channel` field to a channel index (0-7). Furthermore, you can send a direct message by setting the `to` field to the node number of the destination. If the `to` field is not set, the message will be broadcast to all nodes on the mesh.
Currently two types of messages are supported: `"sendtext"` and `"sendposition"`. Currently two types of messages are supported: `"sendtext"` and `"sendposition"`.
For the type `sendtext`, the `payload` should be a string containing the text to send. For the type `sendposition`, the payload should be an object with the fields `latitude_i`, `longitude_i`, `altitude` (optional) and `time` (optional). For the type `sendtext`, the `payload` should be a string containing the text to send. For the type `sendposition`, the payload should be an object with the fields `latitude_i`, `longitude_i`, `altitude` (optional) and `time` (optional).

View file

@ -54,13 +54,15 @@ The JSON output only publishes the following subset of the messages on a Meshtas
> Protobufs are mesh native. > Protobufs are mesh native.
#### 1. Using JSON-encoded messages #### 1. Using JSON-encoded messages
Make sure that option *JSON Output Enabled* is set in MQTT module options and your channel is called "mqtt". Make sure that option *JSON Output Enabled* is set in MQTT module options and you have a channel called "mqtt".
Below is a valid JSON envelope for information sent by MQTT to a device for broadcast onto the mesh. Below is a valid JSON envelope for information sent by MQTT to a device for broadcast onto the mesh. The `to` field is optional and can be omitted for broadcast. The `channel` field is also optional and can be omitted to send to the primary channel.
```json ```json
{ {
"from":<node number of the transmitter>, "from":<node number of the transmitter>,
"to": <node number of the receiver for a DM (optional)>,
"channel": <channel index (optional)>,
"type":"sendtext", "type":"sendtext",
"payload": text or a json object go here "payload": text or a json object go here
} }
@ -979,7 +981,7 @@ The flow is:
] ]
``` ```
Sending a position to a device for broadcast to the mesh is much easier with JSON. It requires a channel called "mqtt". This introduces a new MQTT Service Envelope type: "sendposition". A valid MQTT envelope and message to broadcast lat, lon, altitude (optional) and time (optional) looks like this: Sending a position to a device for broadcast to the mesh is much easier with JSON. It requires the message to be published to a channel called "mqtt". You can let the message send out to a different channel by setting the `channel` field to a channel index (0-7). Then use the MQTT Service Envelope type: "sendposition". A valid MQTT envelope and message to broadcast lat, lon, altitude (optional) and time (optional) looks like this:
```json ```json
{ {

113
docs/terms/index.mdx Normal file
View file

@ -0,0 +1,113 @@
---
id: glossary
title: Glossary of Terms
slug: /terms/
---
App / Application / Client Application
: An application that connects to a Meshtastic node, typically for the purpose of sending or receiving data through the mesh network.
Band
: A range of frequencies used for LoRa, dependent on region. Meshtastic further divides these bands into channels. Sometimes identified by the lower and upper bounds of the range (e.g. 902-928MHz), sometimes identified by a center frequency within the range (e.g. 915MHz), and sometimes only by the region they apply to (e.g. US).
Broadcast
: Sending a message or data from one device to all other devices within range in the Meshtastic network, rather than to a specific recipient.
Channel | [Configuration](/docs/configuration/radio/channels/) | [Frequency Calculator](/docs/overview/radio-settings/#channel-frequency-calculator)
: At least two definitions in Meshtastic usage: 1) One of 8 configurable channels in the firmware, each supporting a separate name and encryption, with one set as primary and the rest secondary. 2) A specific frequency within a LoRa band that a device can be configured to use.
CLI | [Guide](/docs/software/python/cli/)
: Command Line Interface, a text-based interface used for interacting with software or devices like Meshtastic.
Client
: A device or application that connects to a Meshtastic node, typically for the purpose of sending or receiving data through the mesh network.
Device
: A physical piece of hardware that utilizes the Meshtastic software and LoRa (Long Range) radio technology to create a decentralized, long-range mesh network.
DFU
: Device Firmware Update, a state which a device is placed into for it to receive a firmware update
ESP32 | [Drivers](/docs/getting-started/serial-drivers/esp32/) | [Firmware](/docs/getting-started/flashing-firmware/esp32/)
: A chipset of microcontroller made/designed by Espressif, used by a number of devices. Higher power usage than NRF52, but often cheaper and supports WiFi if desired.
Firmware | [Guide](https://meshtastic.org/docs/getting-started/flashing-firmware/)
: The low-level software programmed onto a Meshtastic device, controlling its hardware functions and enabling it to communicate within the mesh network using LoRa technology. Firmware
Flash/Flashing | [Guide](https://meshtastic.org/docs/getting-started/flashing-firmware/)
: The process of updating or installing firmware on a Meshtastic device. This is typically done using a computer to load new firmware versions or custom software to enhance or modify device functionality.
GPIO
: General Purpose Input/Output. An uncommitted digital signal pin on a device
LoRa
: A low-power, long-range wireless communication technology used by Meshtastic devices to enable communication over distances of several kilometers without the need for cellular, Wi-Fi, or other traditional network infrastructures.
LoS
: Line of Sight, a pathway through only air between two points.
Mesh | [Algorithm](/docs/overview/mesh-algo/)
: In the context of Meshtastic and networking, a mesh refers to a network topology where devices (nodes) are interconnected, allowing them to directly and dynamically communicate with each other. This setup enables data to be relayed across the network, improving coverage and reliability, especially in challenging environments.
Message
: A piece of data or text sent between Meshtastic devices over the mesh network, which can include text communications, GPS location updates, and other small data payloads.
MHz
: Megahertz, a unit of frequency equal to one million hertz (cycles per second), used to specify the operating frequency of LoRa devices in the Meshtastic network, affecting range and data rate.
Module | [Software Modules](/docs/configuration/module/) | [Hardware Modules](/docs/hardware/devices/)
: At least two definitions in Meshtastic usage: 1) A software plug-in to expand the capabilities of a Meshtastic device. 2) A hardware component or add-on for a Meshtastic device, such as a temperature sensor or GPS.
[MQTT](/docs/software/integrations/mqtt/)
: An acronym for Message Queuing Telemetry Transport, is a lightweight messaging protocol designed for small sensors and mobile devices, enabling efficient data transmission in the Meshtastic network for Internet connectivity and integration with IoT platforms. See https://en.wikipedia.org/wiki/MQTT. In Meshtastic, MQTT is used to connect a node to the internet, and can be used to connect multiple meshes to each other.
Node
: A unit within the Meshtastic network that can send, receive, and relay messages, helping to form and extend the mesh network's coverage.
NRF52 | [Drivers](/docs/getting-started/serial-drivers/nrf52/) | [Firmware](/docs/getting-started/flashing-firmware/nrf52/)
: A microcontroller chipset made by Nordic, used by a number of devices used by several devices such as the RAK Meshtastic Starter Kit and the Lilygo T-Echo. Lower power usage than ESP32.
Packet
: A formatted unit of data sent over the network. In Meshtastic, packets carry messages, GPS locations, and other information through the LoRa mesh network.
Protobuf | [Reference](/docs/development/reference/protobufs/)
: Protocol Buffers, a method developed by Google for serializing structured data, used in Meshtastic for efficient communication protocol between devices.
PSK | [Encryption](/docs/overview/encryption/)
: Pre-Shared Key, a secret code or passphrase used in Meshtastic channels for encryption, ensuring that only devices with the matching PSK can communicate within that specific channel.
Repeater | [Role Definitions](/docs/configuration/radio/device/#roles)
: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list.
Router | [Role Definitions](/docs/configuration/radio/device/#roles)
: Infrastructure node for extending network coverage by relaying messages. Visible in Nodes list.
rp2040
: A microcontroller chip developed by Raspberry Pi, featuring dual ARM Cortex-M0+ processors.
RX
: Abbreviation for Receive.
Sensor
: A device component that detects and responds to some type of input from the physical environment. In Meshtastic, sensors can be used to gather environmental data (e.g., temperature, humidity, GPS location) which can then be transmitted over the mesh network for monitoring or other applications.
Serial
: A communication protocol used for the transmission of data between the Meshtastic device and a computer or other devices. Typically over USB or UART.
SNR
: Signal-to-Noise Ratio, a measure used in communications to quantify the level of a desired signal to the level of background noise. In Meshtastic and other wireless systems, a higher SNR indicates a clearer signal that can enhance the reliability and quality of data transmission.
SWR
: Standing Wave Ratio, a measure of the efficiency of the radio frequency (RF) power transmission from a transmitter through a transmission line to an antenna in Meshtastic devices. It indicates the ratio of the amplitude of a standing wave at maximum to the amplitude at minimum, with an ideal SWR close to 1:1, signifying that most of the power is transmitted to the antenna with minimal reflections.
Telemetry
: The sending of sensor data or system metrics over the mesh network.
Tranceiver
: A device capable of both transmitting and receiving communications.
Transmit
: The act of sending data, such as messages or GPS locations, from one Meshtastic device to another over the LoRa network.
TX
: Abbreviation for Transmit.

View file

@ -1,6 +1,7 @@
// @ts-check // @ts-check
require("dotenv").config(); require("dotenv").config();
import remarkDefList from "remark-deflist";
/** @type {import('@docusaurus/types').Config} */ /** @type {import('@docusaurus/types').Config} */
const config = { const config = {
@ -121,6 +122,7 @@ const config = {
editUrl: "https://github.com/meshtastic/meshtastic/edit/master/", editUrl: "https://github.com/meshtastic/meshtastic/edit/master/",
breadcrumbs: false, breadcrumbs: false,
showLastUpdateAuthor: true, showLastUpdateAuthor: true,
remarkPlugins: [remarkDefList],
}, },
theme: { theme: {
customCss: require.resolve("./src/css/custom.css"), customCss: require.resolve("./src/css/custom.css"),

View file

@ -29,6 +29,7 @@
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-icons": "^4.12.0", "react-icons": "^4.12.0",
"remark-deflist": "^1.0.0",
"swr": "^2.2.4", "swr": "^2.2.4",
"tailwindcss": "^3.4.1" "tailwindcss": "^3.4.1"
}, },

View file

@ -56,6 +56,9 @@ dependencies:
react-icons: react-icons:
specifier: ^4.12.0 specifier: ^4.12.0
version: 4.12.0(react@18.2.0) version: 4.12.0(react@18.2.0)
remark-deflist:
specifier: ^1.0.0
version: 1.0.0
swr: swr:
specifier: ^2.2.4 specifier: ^2.2.4
version: 2.2.4(react@18.2.0) version: 2.2.4(react@18.2.0)
@ -6689,6 +6692,13 @@ packages:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
/mdast-util-phrasing@3.0.1:
resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==}
dependencies:
'@types/mdast': 3.0.15
unist-util-is: 5.2.1
dev: false
/mdast-util-phrasing@4.0.0: /mdast-util-phrasing@4.0.0:
resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==}
dependencies: dependencies:
@ -6707,6 +6717,19 @@ packages:
unist-util-position: 5.0.0 unist-util-position: 5.0.0
unist-util-visit: 5.0.0 unist-util-visit: 5.0.0
/mdast-util-to-markdown@1.5.0:
resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==}
dependencies:
'@types/mdast': 3.0.15
'@types/unist': 2.0.10
longest-streak: 3.1.0
mdast-util-phrasing: 3.0.1
mdast-util-to-string: 3.2.0
micromark-util-decode-string: 1.1.0
unist-util-visit: 4.1.2
zwitch: 2.0.4
dev: false
/mdast-util-to-markdown@2.1.0: /mdast-util-to-markdown@2.1.0:
resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==}
dependencies: dependencies:
@ -8671,6 +8694,17 @@ packages:
engines: {node: '>= 0.10'} engines: {node: '>= 0.10'}
dev: false dev: false
/remark-deflist@1.0.0:
resolution: {integrity: sha512-sDHM+ZbgWC6wwaxltMdH5x+XYMW8VpjyeHyC2ZCI106+iYgbPv8lBYKiNqdW0Cs0FVox/LysYhb3qIZe1b0cmg==}
dependencies:
mdast-util-from-markdown: 1.3.1
mdast-util-to-markdown: 1.5.0
mdast-util-to-string: 3.2.0
unist-util-visit: 4.1.2
transitivePeerDependencies:
- supports-color
dev: false
/remark-directive@3.0.0: /remark-directive@3.0.0:
resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==}
dependencies: dependencies:
@ -9598,6 +9632,12 @@ packages:
crypto-random-string: 4.0.0 crypto-random-string: 4.0.0
dev: false dev: false
/unist-util-is@5.2.1:
resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==}
dependencies:
'@types/unist': 2.0.10
dev: false
/unist-util-is@6.0.0: /unist-util-is@6.0.0:
resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
dependencies: dependencies:
@ -9630,12 +9670,27 @@ packages:
dependencies: dependencies:
'@types/unist': 3.0.2 '@types/unist': 3.0.2
/unist-util-visit-parents@5.1.3:
resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==}
dependencies:
'@types/unist': 2.0.10
unist-util-is: 5.2.1
dev: false
/unist-util-visit-parents@6.0.1: /unist-util-visit-parents@6.0.1:
resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
dependencies: dependencies:
'@types/unist': 3.0.2 '@types/unist': 3.0.2
unist-util-is: 6.0.0 unist-util-is: 6.0.0
/unist-util-visit@4.1.2:
resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==}
dependencies:
'@types/unist': 2.0.10
unist-util-is: 5.2.1
unist-util-visit-parents: 5.1.3
dev: false
/unist-util-visit@5.0.0: /unist-util-visit@5.0.0:
resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
dependencies: dependencies:

View file

@ -82,13 +82,30 @@ html[data-theme="dark"] .header-github-link:before {
color: var(--ifm-link-color); color: var(--ifm-link-color);
} }
.split-container { .split-container {
display: flex; display: flex;
justify-content: space-between;
} }
.split-item { .split-item {
flex: 1; flex: 1;
padding: 0 10px;
} }
/* mobile screens */
@media (max-width: 768px) {
.split-container {
flex-direction: column;
}
.split-item {
width: 100%;
padding: 10px 0;
}
}
.indexCtasBody { .indexCtasBody {
--ifm-button-size-multiplier: 1.6; --ifm-button-size-multiplier: 1.6;
display: flex; display: flex;

View file

@ -1,111 +0,0 @@
import Link from "@docusaurus/Link";
import Layout from "@theme/Layout";
const Credits = (): JSX.Element => {
return (
<Layout
title="Credits"
description="Meshtastic is made possible by the following people & organizations."
>
<main className="relative mt-20">
<div className="container mx-auto p-6 leading-normal space-y-4">
<h1>Credits</h1>
<p>
Meshtastic is community driven. Thousands of hours have been donated
by volunteers who want to develop this amazing project. Whether
you've submitted a pull request or triaged a bug in our
Discord/Forum. You've made Meshtastic possible. Thank you for your
contributions.
</p>
<p>
We would also like to recognize those who have donated financially
to the project. As Meshtastic has grown, we've aquired some ongoing
costs to keep the project running. Thank you for your generous
donations.
</p>
</div>
<div className="container mx-auto p-6 leading-normal space-y-4">
<h2>Fiscal Sponsors</h2>
<p>
We have partnered with both the{" "}
<a
className="underline"
href="https://opencollective.com"
rel="noreferrer"
target="_blank"
>
Open Collective
</a>{" "}
and the{" "}
<a
className="underline"
href="https://www.oscollective.org"
rel="noreferrer"
target="_blank"
>
Open Source Collective
</a>{" "}
to help us with a fiscal management framework and banking needs.
They help support over three thousand open source projects including
the PHP Foundation, F-Droid, Sonarr, LinuxServer and DarkReader. We
are in good hands and good company.
</p>
<p>
As with everything we do here, Open Collective provides a fully
transparent framework for our budget and expenses. You can see what
were bringing in, who is spending money and where that money is
going{" "}
<a
className="underline"
href="https://opencollective.com/meshtastic"
rel="noreferrer"
target="_blank"
>
here
</a>
.
</p>
<p>
In addition to our partnership with Open Collective and Open Source
Collective, we have also been approved into the{" "}
<a
className="underline"
href="https://github.com/sponsors"
rel="noreferrer"
target="_blank"
>
GitHub Sponsors
</a>{" "}
program where we can set fundraising goals with GitHub.
</p>
<p>
All donations made through GitHub will be deposited to our account
with the Open Source Collective and managed by the Open Collective.
This means we have a single place to monitor and maintain
transparency of our finances.
</p>
<p>If you are able, please contribute to this amazing project.</p>
<div className="indexCtasBody">
<Link
className={"button button--outline button--lg cta--button"}
to={"https://opencollective.com/meshtastic/donate"}
>
Sponsor Meshtastic
</Link>
</div>
</div>
<div className="container mx-auto p-6 leading-normal space-y-4">
<h2>Contributors</h2>
<p>
Literally thousands of hours have gone into creating, maintaining,
and improving Meshtastic. Without our contributors none of this
would be possible. Thank you for donating the time for each and
every commit, issue, and pull request.
</p>
</div>
</main>
</Layout>
);
};
export default Credits;