mirror of
https://github.com/meshtastic/meshtastic.git
synced 2024-12-25 05:34:11 -08:00
move videos to react player
mesh-alg video canned messaged video external notifications video serial video telemetry videos traceroute videos
This commit is contained in:
parent
52497c3a8f
commit
5a46cf0a7b
|
@ -7,11 +7,20 @@ sidebar_position: 2
|
|||
description: "Discover the Meshtastic Mesh Broadcast Algorithm: a simple, yet effective routing protocol designed for off-grid communication using LoRa technology."
|
||||
---
|
||||
|
||||
import ReactPlayer from "react-player";
|
||||
|
||||
## Current Algorithm
|
||||
|
||||
The routing protocol for Meshtastic is really quite simple (and sub-optimal). If you want to test its theoretical performance, you can have a look at the [simulator](https://github.com/GUVWAF/Meshtasticator). The protocol is heavily influenced by the mesh routing algorithm used in [RadioHead](https://www.airspayce.com/mikem/arduino/RadioHead) (which was used in very early versions of this project). It has four conceptual layers.
|
||||
|
||||
<object data="https://www.youtube.com/embed/7v6UbC5blJU?autohide=1&autoplay=0" width="100%" height="400"></object>
|
||||
<div style={{ maxWidth: "800px", margin: "auto" }}>
|
||||
<ReactPlayer
|
||||
url="https://youtu.be/7v6UbC5blJU"
|
||||
controls
|
||||
width="100%"
|
||||
height="400px"
|
||||
/>
|
||||
</div>
|
||||
|
||||
### A Note About Protocol Buffers
|
||||
|
||||
|
@ -30,24 +39,24 @@ After the preamble comes the LoRa Physical Header, which contains information ab
|
|||
|
||||
This layer is conventional non-reliable LoRa packet transmission. A packet generated by a Meshtastic device has the following representation before encoding for transmission:
|
||||
|
||||
| Offset | Length | Type | Usage |
|
||||
| :----: | :--------------------------------------: | :-----: | :--------------------------------------------------------------------------------------- |
|
||||
| Offset | Length | Type | Usage |
|
||||
| :----: | :--------------------------------------: | :-----: | :------------------------------------------------------------------------------------------------------ |
|
||||
| 0x00 | 4 bytes | Integer | Packet Header: Destination. The destination's unique NodeID. `0xFFFFFFFF` for broadcast. Little Endian. |
|
||||
| 0x04 | 4 bytes | Integer | Packet Header: Sender. The sender's unique NodeID. Little Endian. |
|
||||
| 0x08 | 4 bytes | Integer | Packet Header: The sending node's unique packet ID for this packet. Little Endian. |
|
||||
| 0x0C | 1 byte | Bits | Packet Header: Flags. See the [header flags](#packet-header-flags) for usage. |
|
||||
| 0x0D | 1 byte | Bits | Packet Header: Channel hash. Used as hint for decryption for the receiver. |
|
||||
| 0x0E | 2 bytes | Bytes | Packet Header: Reserved for future use. |
|
||||
| 0x10 | Max. 237 bytes (excl. protobuf overhead) | Bytes | Actual packet data. Unused bytes are not transmitted. |
|
||||
| 0x04 | 4 bytes | Integer | Packet Header: Sender. The sender's unique NodeID. Little Endian. |
|
||||
| 0x08 | 4 bytes | Integer | Packet Header: The sending node's unique packet ID for this packet. Little Endian. |
|
||||
| 0x0C | 1 byte | Bits | Packet Header: Flags. See the [header flags](#packet-header-flags) for usage. |
|
||||
| 0x0D | 1 byte | Bits | Packet Header: Channel hash. Used as hint for decryption for the receiver. |
|
||||
| 0x0E | 2 bytes | Bytes | Packet Header: Reserved for future use. |
|
||||
| 0x10 | Max. 237 bytes (excl. protobuf overhead) | Bytes | Actual packet data. Unused bytes are not transmitted. |
|
||||
|
||||
#### Packet Header Flags
|
||||
|
||||
| Index | # of Bits | Usage |
|
||||
| :----: | :-------: | :----------------------------- |
|
||||
| 0 | 3 | HopLimit (see note in Layer 3) |
|
||||
| 3 | 1 | WantAck |
|
||||
| 4 | 1 | ViaMQTT (packet came via MQTT) |
|
||||
| 5 | 3 | HopStart (original HopLimit) |
|
||||
| Index | # of Bits | Usage |
|
||||
| :---: | :-------: | :----------------------------- |
|
||||
| 0 | 3 | HopLimit (see note in Layer 3) |
|
||||
| 3 | 1 | WantAck |
|
||||
| 4 | 1 | ViaMQTT (packet came via MQTT) |
|
||||
| 5 | 3 | HopStart (original HopLimit) |
|
||||
|
||||
#### Usage Details
|
||||
|
||||
|
@ -101,7 +110,7 @@ Without additional modules configured, nodes will produce three different types
|
|||
- Default: 30 minutes
|
||||
2. Position
|
||||
- Controlled by `position.position_broadcast_secs`
|
||||
- Default: 15 minutes* (with [smart broadcast](/docs/configuration/radio/position/#smart-broadcast) enabled)
|
||||
- Default: 15 minutes\* (with [smart broadcast](/docs/configuration/radio/position/#smart-broadcast) enabled)
|
||||
3. NodeInfo user
|
||||
- Controlled by `device.node_info_broadcast_secs`
|
||||
- Default: 3 hours
|
||||
|
|
|
@ -7,12 +7,20 @@ description: Configuration details for canned (predefined) messages on your Mesh
|
|||
|
||||
import Tabs from "@theme/Tabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import ReactPlayer from "react-player";
|
||||
|
||||
The Canned Message Module will allow you to send messages to the mesh network from the device without using the phone app. You can predefine text messages to choose from.
|
||||
|
||||
The canned message module config options are: Enabled, Send Bell, Messages, Input Source, Rotary Encoder Enabled, Up Down Encoder Enabled, Input Broker Pin A, Input Broker Pin B, Input Broker Pin Press, Input Broker Event Clockwise, Input Broker Event Counter Clockwise, and Input Broker Event Press. Canned Message config uses an admin message sending a `ConfigModule.CannedMessage` protobuf.
|
||||
|
||||
<object data="https://www.youtube.com/embed/qKQVYUbLLkg?autohide=1&autoplay=0" width="100%" height="400"></object>
|
||||
<div style={{ maxWidth: "800px", margin: "auto" }}>
|
||||
<ReactPlayer
|
||||
url="https://youtu.be/qKQVYUbLLkg"
|
||||
controls
|
||||
width="100%"
|
||||
height="400px"
|
||||
/>
|
||||
</div>
|
||||
|
||||
## Canned Message Module Config Values
|
||||
|
||||
|
@ -40,7 +48,7 @@ Input event sources accepted by the canned message module.
|
|||
| `_any` | Default. Allows any peripheral input device connected to the device. |
|
||||
| `rotEnc1` | Basic Rotary Encoder |
|
||||
| `upDownEnc1` | Up Down Encoder (use this also for RAK14006 Rotary Encoder) |
|
||||
| `scanAndSelect` | Single push-button (short and long press) |
|
||||
| `scanAndSelect` | Single push-button (short and long press) |
|
||||
| `cardkb` | M5 Stack CardKB (this covers RAK14004 Keymatrix) |
|
||||
| `serialkb` | Chatter serial keypad |
|
||||
|
||||
|
@ -122,18 +130,18 @@ All canned message module config options are available in the python CLI.
|
|||
|
||||
Example commands are below:
|
||||
|
||||
| Setting | Acceptable Values | Default |
|
||||
| :------------------------------------: | :---------------------------------------: | :-----------: |
|
||||
| canned_message.enabled | `true`, `false` | `false` |
|
||||
| canned_message.send_bell | `true`, `false` | `false` |
|
||||
| canned_message.allow_input_source | `rotEnc1`, `_any`, `upDownEnc1`, `cardkb` | `_any` |
|
||||
| --set-canned-message | `string` | `""` (separate using pipes) |
|
||||
| canned_message.inputbroker_event_cw | `InputEventChar` | (not defined) |
|
||||
| canned_message.inputbroker_event_ccw | `InputEventChar` | (not defined) |
|
||||
| canned_message.inputbroker_event_press | `InputEventChar` | (not defined) |
|
||||
| canned_message.inputbroker_pin_a | `integer` | (not defined) |
|
||||
| canned_message.inputbroker_pin_b | `integer` | (not defined) |
|
||||
| canned_message.inputbroker_pin_press | `integer` | (not defined) |
|
||||
| Setting | Acceptable Values | Default |
|
||||
| :------------------------------------: | :---------------------------------------: | :-------------------------: |
|
||||
| canned_message.enabled | `true`, `false` | `false` |
|
||||
| canned_message.send_bell | `true`, `false` | `false` |
|
||||
| canned_message.allow_input_source | `rotEnc1`, `_any`, `upDownEnc1`, `cardkb` | `_any` |
|
||||
| --set-canned-message | `string` | `""` (separate using pipes) |
|
||||
| canned_message.inputbroker_event_cw | `InputEventChar` | (not defined) |
|
||||
| canned_message.inputbroker_event_ccw | `InputEventChar` | (not defined) |
|
||||
| canned_message.inputbroker_event_press | `InputEventChar` | (not defined) |
|
||||
| canned_message.inputbroker_pin_a | `integer` | (not defined) |
|
||||
| canned_message.inputbroker_pin_b | `integer` | (not defined) |
|
||||
| canned_message.inputbroker_pin_press | `integer` | (not defined) |
|
||||
|
||||
:::tip
|
||||
|
||||
|
@ -242,15 +250,17 @@ Just use UP/DOWN/ENTER to select a predefined message and send it.
|
|||
Use a single push-button to select and send predefined messages.
|
||||
|
||||
#### Setup
|
||||
* Connect a normally-open push-button between ground and a GPIO pin of your choice
|
||||
* Configure the canned messages module
|
||||
- Set [Input Source](#input-source) to `scanAndSelect`
|
||||
- Set [Input Broker Pin Press](#input-broker-pin-press) to your chosen GPIO
|
||||
- Define a [list of pre-set messages](#messages)
|
||||
|
||||
- Connect a normally-open push-button between ground and a GPIO pin of your choice
|
||||
- Configure the canned messages module
|
||||
- Set [Input Source](#input-source) to `scanAndSelect`
|
||||
- Set [Input Broker Pin Press](#input-broker-pin-press) to your chosen GPIO
|
||||
- Define a [list of pre-set messages](#messages)
|
||||
|
||||
#### Usage
|
||||
* Short press: scroll through messages
|
||||
* Long press: send the currently highlighted message to your primary channel
|
||||
|
||||
- Short press: scroll through messages
|
||||
- Long press: send the currently highlighted message to your primary channel
|
||||
|
||||
### Rotary encoder
|
||||
|
||||
|
|
|
@ -7,12 +7,20 @@ description: This module will allow you to connect a buzzer, speaker, LED, or ot
|
|||
|
||||
import Tabs from "@theme/Tabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import ReactPlayer from "react-player";
|
||||
|
||||
The External Notification Module will allow you to connect a buzzer, speaker, LED, or other device to notify you when a message has been received from the mesh network. You can enable up to 3 pins independently from each other.
|
||||
|
||||
The External Notification Module config options are: Enabled, Active, Alert Bell (General),Alert Bell Vibra, Alert Bell Buzzer, Alert Message (General), Alert Message Vibra, Alert Message Buzzer, Output (General), Output Vibra, Output Buzzer, Output Milliseconds, Use PWM, and Nag Timeout. External Notification config uses an admin message sending a `ConfigModule.ExternalNotificationConfig` protobuf.
|
||||
|
||||
<object data="https://www.youtube.com/embed/MWt3RHMpifo?autohide=1&autoplay=0" width="100%" height="400"></object>
|
||||
<div style={{ maxWidth: "800px", margin: "auto" }}>
|
||||
<ReactPlayer
|
||||
url="https://youtu.be/MWt3RHMpifo"
|
||||
controls
|
||||
width="100%"
|
||||
height="400px"
|
||||
/>
|
||||
</div>
|
||||
|
||||
## External Notification Module Config Values
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ description: This module is an interface to talk to and control your Meshtastic
|
|||
|
||||
import Tabs from "@theme/Tabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import ReactPlayer from "react-player";
|
||||
|
||||
The serial module config options are: Enabled, Echo, Mode, Receive GPIO, Transmit GPIO, Baud Rate, Timeout, and Override Console Serial Port. Serial Module config uses an admin message sending a `ConfigModule.Serial` protobuf.
|
||||
|
||||
|
@ -14,11 +15,14 @@ This is an interface to talk to and control your Meshtastic device over a serial
|
|||
|
||||
![image](/img/modules/Serial/jet.webp)
|
||||
|
||||
<object
|
||||
data="https://www.youtube.com/embed/HdOiGKBtapw?autohide=1&autoplay=0"
|
||||
width="100%"
|
||||
height="400"
|
||||
></object>
|
||||
<div style={{ maxWidth: "800px", margin: "auto" }}>
|
||||
<ReactPlayer
|
||||
url="https://youtu.be/HdOiGKBtapw"
|
||||
controls
|
||||
width="100%"
|
||||
height="400px"
|
||||
/>
|
||||
</div>
|
||||
|
||||
## Serial Module Config Values
|
||||
|
||||
|
|
|
@ -7,37 +7,41 @@ description: This module allows sharing of Device, Environment, Health, and Air
|
|||
|
||||
import Tabs from "@theme/Tabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import ReactPlayer from "react-player";
|
||||
|
||||
The Telemetry Module provides four types of data over the mesh: Device metrics (Battery Level, Voltage, Channel Utilization and Airtime) from your Meshtastic device, Environment Metrics, Air Quality Metrics, and Health metrics (Heart rate, Oxygen Saturation and body temperature).
|
||||
|
||||
Supported sensors connected to the I2C bus of the device will be automatically detected at startup. The Environment Telemetry, Air Quality, and Health Telemetry modules must be enabled for them to be instrumented and their readings sent over the mesh.
|
||||
|
||||
<object
|
||||
data="https://www.youtube.com/embed/6jj1s-fsPlc?autohide=1&autoplay=0"
|
||||
width="100%"
|
||||
height="400"
|
||||
></object>
|
||||
<div style={{ maxWidth: "800px", margin: "auto" }}>
|
||||
<ReactPlayer
|
||||
url="https://youtu.be/6jj1s-fsPlc"
|
||||
controls
|
||||
width="100%"
|
||||
height="400px"
|
||||
/>
|
||||
</div>
|
||||
|
||||
### Currently Supported Sensor Types
|
||||
|
||||
| Sensor | I<sup>2</sup>C Address | Data Points |
|
||||
| :-----: | :--------------------: | :-----------------------------------------------------------: |
|
||||
| BMP085 | 0x76, 0x77 | Temperature and barometric pressure |
|
||||
| BMP180 | 0x76, 0x77 | Temperature and barometric pressure |
|
||||
| BMP280 | 0x76, 0x77 | Temperature and barometric pressure |
|
||||
| BME280 | 0x76, 0x77 | Temperature, barometric pressure and humidity |
|
||||
| BME68x | 0x76, 0x77 | Temperature, barometric pressure, humidity and air resistance |
|
||||
| MCP9808 | 0x18 | Temperature |
|
||||
| INA260 | 0x40, 0x41, 0x43 | Current and Voltage |
|
||||
| INA219 | 0x40, 0x41, 0x43 | Current and Voltage |
|
||||
| INA3221 | 0x42 | 3-channel Current and Voltage |
|
||||
| LPS22 | 0x5D, 0x5C | Barometric pressure |
|
||||
| SHTC3 | 0x70 | Temperature and humidity |
|
||||
| SHT31 | 0x44 | Temperature and humidity |
|
||||
| PMSA003I| 0x12 | Concentration units by size and particle counts by size |
|
||||
| DFROBOT_LARK | 0x42 | Temperature, barometric pressure, humidity, wind direction, wind speed |
|
||||
| MAX30102 | 0x57 | Heart Rate, Oxygen Saturation, and body temperature |
|
||||
| MLX90614 | 0x5A | Body temperature |
|
||||
| Sensor | I<sup>2</sup>C Address | Data Points |
|
||||
| :----------: | :--------------------: | :--------------------------------------------------------------------: |
|
||||
| BMP085 | 0x76, 0x77 | Temperature and barometric pressure |
|
||||
| BMP180 | 0x76, 0x77 | Temperature and barometric pressure |
|
||||
| BMP280 | 0x76, 0x77 | Temperature and barometric pressure |
|
||||
| BME280 | 0x76, 0x77 | Temperature, barometric pressure and humidity |
|
||||
| BME68x | 0x76, 0x77 | Temperature, barometric pressure, humidity and air resistance |
|
||||
| MCP9808 | 0x18 | Temperature |
|
||||
| INA260 | 0x40, 0x41, 0x43 | Current and Voltage |
|
||||
| INA219 | 0x40, 0x41, 0x43 | Current and Voltage |
|
||||
| INA3221 | 0x42 | 3-channel Current and Voltage |
|
||||
| LPS22 | 0x5D, 0x5C | Barometric pressure |
|
||||
| SHTC3 | 0x70 | Temperature and humidity |
|
||||
| SHT31 | 0x44 | Temperature and humidity |
|
||||
| PMSA003I | 0x12 | Concentration units by size and particle counts by size |
|
||||
| DFROBOT_LARK | 0x42 | Temperature, barometric pressure, humidity, wind direction, wind speed |
|
||||
| MAX30102 | 0x57 | Heart Rate, Oxygen Saturation, and body temperature |
|
||||
| MLX90614 | 0x5A | Body temperature |
|
||||
|
||||
## Module Config Values
|
||||
|
||||
|
@ -163,10 +167,9 @@ All telemetry module config options are available in the python CLI. Example com
|
|||
| telemetry.air_quality_interval | `integer` (seconds) | Default `0` is 30 minutes(`1800` seconds). |
|
||||
| telemetry.power_measurement_enabled | `true`, `false` | `false` |
|
||||
| telemetry.power_update_interval | `integer` (seconds) | Default `0` is 30 minutes(`1800` seconds). |
|
||||
| telemetry.health_measurement_enabled | `true`, `false` | `false` |
|
||||
| telemetry.health_update_interval | `integer` (seconds) | Default `0` is 30 minutes(`1800` seconds). |
|
||||
| telemetry.health_screen_enabled | `true`, `false` | `false` |
|
||||
|
||||
| telemetry.health_measurement_enabled | `true`, `false` | `false` |
|
||||
| telemetry.health_update_interval | `integer` (seconds) | Default `0` is 30 minutes(`1800` seconds). |
|
||||
| telemetry.health_screen_enabled | `true`, `false` | `false` |
|
||||
|
||||
:::tip
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ description: The traceroute module allows you to understand the path a message t
|
|||
|
||||
import Tabs from "@theme/Tabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
import ReactPlayer from "react-player";
|
||||
|
||||
## Overview
|
||||
|
||||
|
@ -18,7 +19,14 @@ In order to use it, make sure your devices use firmware version 2.0.8 or higher.
|
|||
|
||||
From firmware version ≥ 2.5, the route back to the origin is recorded, along with the Signal-to-Noise Ratio (SNR) for each link. Nodes with older firmware or those unable to decrypt the traceroute will be shown as "Unknown" (represented by an ID equal to 4294967295 or 0xFFFFFFFF in hexadecimal) if all nodes in the route are using at least firmware version 2.3.12.
|
||||
|
||||
<object data="https://www.youtube.com/embed/PKUmaELKaUo?autohide=1&autoplay=0" width="100%" height="400"></object>
|
||||
<div style={{ maxWidth: "800px", margin: "auto" }}>
|
||||
<ReactPlayer
|
||||
url="https://youtu.be/PKUmaELKaUo"
|
||||
controls
|
||||
width="100%"
|
||||
height="400px"
|
||||
/>
|
||||
</div>
|
||||
|
||||
## Repeater Behavior
|
||||
|
||||
|
|
|
@ -5,24 +5,33 @@ sidebar_label: CalTopo / SARTopo
|
|||
sidebar_position: 1
|
||||
---
|
||||
|
||||
import ReactPlayer from "react-player";
|
||||
|
||||
## CalTopo / SARTopo
|
||||
|
||||
Meshtastic can integrate with [CalTopo](https://caltopo.com/) Desktop edition quite easily through the product's APRS over serial support functionality.
|
||||
|
||||
<object data="https://www.youtube.com/embed/z_51FAPPl34
|
||||
?autohide=1&autoplay=0" width="100%" height="400"></object>
|
||||
|
||||
<div style={{ maxWidth: "800px", margin: "auto" }}>
|
||||
<ReactPlayer
|
||||
url="https://youtu.be/z_51FAPPl34"
|
||||
controls
|
||||
width="100%"
|
||||
height="400px"
|
||||
/>
|
||||
</div>
|
||||
|
||||
### Configuring the Meshtastic device
|
||||
|
||||
To configure our Meshtastic device for this integration, we have a couple of different options, both of which utilize the [Serial module](/docs/configuration/module/serial):
|
||||
|
||||
#### Enabling serial over the device's USB port
|
||||
|
||||
```shell title="Serial over USB"
|
||||
meshtastic --set serial.enabled true --set serial.baud BAUD_9600 --set serial.mode CALTOPO --set serial.override_console_serial_port true
|
||||
```
|
||||
|
||||
#### Enabling serial over an external USB to Serial adapter
|
||||
|
||||
```shell title="External serial adapter"
|
||||
meshtastic --set serial.enabled true --set serial.baud BAUD_9600 --set serial.mode CALTOPO --set serial.txd = 13 --set serial.rxd = 14
|
||||
```
|
||||
|
@ -31,7 +40,6 @@ meshtastic --set serial.enabled true --set serial.baud BAUD_9600 --set serial.mo
|
|||
Ensure that serial baud rate is set to `9600` on both the Meshtastic device and the CalTopo / SARTopo `topo.properties` configuration
|
||||
:::
|
||||
|
||||
|
||||
### Setting up CalTopo / SARTopo
|
||||
|
||||
To setup CalTopo for Meshtastic integration using the Live Tracking via APRS, refer to the official [documentation](https://training.caltopo.com/all_users/share/live-tracking#aprs).
|
||||
|
@ -44,7 +52,7 @@ After starting CalTopo Desktop, NMEA waypoint location sentences should be strea
|
|||
|
||||
![CalTopo Logs](/img/software/integrations/caltopo/logs.webp)
|
||||
|
||||
In the desktop's web UI for your CalTopo map, scroll down and check the **Shared Locations** checkbox under **Realtime Data**. Your nodes should appear on the map as points if they are connected correctly.
|
||||
In the desktop's web UI for your CalTopo map, scroll down and check the **Shared Locations** checkbox under **Realtime Data**. Your nodes should appear on the map as points if they are connected correctly.
|
||||
|
||||
![shared-locations](/img/software/integrations/caltopo/local-stations.webp)
|
||||
|
||||
|
@ -54,7 +62,6 @@ You can click on one or more of the node points and in the resulting tooltip, cl
|
|||
|
||||
In the resulting dialog, you can assign attributes such as a label or color to the live track created by the node.
|
||||
|
||||
|
||||
![track](/img/software/integrations/caltopo/track.webp)
|
||||
|
||||
When you view the shared map on another device or mobile, the nodes should appear there as well now, if both the desktop and mobile device have internet connectivity.
|
||||
|
|
Loading…
Reference in a new issue