From 5a46cf0a7ba1b023d1df80a81750179ca513a04b Mon Sep 17 00:00:00 2001 From: rcarteraz Date: Wed, 20 Nov 2024 13:36:36 -0700 Subject: [PATCH] move videos to react player mesh-alg video canned messaged video external notifications video serial video telemetry videos traceroute videos --- docs/about/overview/mesh-alg.mdx | 41 +++++++------ docs/configuration/module/canned-message.mdx | 54 +++++++++++------- .../module/external-notification.mdx | 10 +++- docs/configuration/module/serial.mdx | 14 +++-- docs/configuration/module/telemetry.mdx | 57 ++++++++++--------- docs/configuration/module/traceroute.mdx | 16 ++++-- docs/software/integrations/caltopo.mdx | 19 +++++-- 7 files changed, 130 insertions(+), 81 deletions(-) diff --git a/docs/about/overview/mesh-alg.mdx b/docs/about/overview/mesh-alg.mdx index 5d2fc6c5..d4de8c35 100644 --- a/docs/about/overview/mesh-alg.mdx +++ b/docs/about/overview/mesh-alg.mdx @@ -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. - +
+ +
### 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 diff --git a/docs/configuration/module/canned-message.mdx b/docs/configuration/module/canned-message.mdx index 2e3d567c..9f697b48 100644 --- a/docs/configuration/module/canned-message.mdx +++ b/docs/configuration/module/canned-message.mdx @@ -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. - +
+ +
## Canned Message Module Config Values @@ -34,13 +42,13 @@ The list of pre-set messages as configured by the user. Messages should be separ ### Input Source Input event sources accepted by the canned message module. - + | Value | Description | | :-------------: | :------------------------------------------------------------------: | | `_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 diff --git a/docs/configuration/module/external-notification.mdx b/docs/configuration/module/external-notification.mdx index a7be9ae0..198063ee 100644 --- a/docs/configuration/module/external-notification.mdx +++ b/docs/configuration/module/external-notification.mdx @@ -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. - +
+ +
## External Notification Module Config Values diff --git a/docs/configuration/module/serial.mdx b/docs/configuration/module/serial.mdx index 2319a689..8d9a3d3a 100644 --- a/docs/configuration/module/serial.mdx +++ b/docs/configuration/module/serial.mdx @@ -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) - +
+ +
## Serial Module Config Values diff --git a/docs/configuration/module/telemetry.mdx b/docs/configuration/module/telemetry.mdx index 83efeb35..e1a81e4d 100644 --- a/docs/configuration/module/telemetry.mdx +++ b/docs/configuration/module/telemetry.mdx @@ -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. - +
+ +
### Currently Supported Sensor Types -| Sensor | I2C 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 | I2C 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 diff --git a/docs/configuration/module/traceroute.mdx b/docs/configuration/module/traceroute.mdx index 342f1d97..2efa80cd 100644 --- a/docs/configuration/module/traceroute.mdx +++ b/docs/configuration/module/traceroute.mdx @@ -7,8 +7,9 @@ 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 +## Overview Due to the limited bandwidth of LoRa, Meshtastic does not keep track of the nodes a message used to hop to the destination. However, from firmware 2.0.8 on, there is a Traceroute Module that can show you this. @@ -18,11 +19,18 @@ 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. - +
+ +
## Repeater Behavior -Repeater nodes will appear in the traceroute log if they have the encryption key, but if they are not in the node list they might appear as "Unknown" depending on the app. +Repeater nodes will appear in the traceroute log if they have the encryption key, but if they are not in the node list they might appear as "Unknown" depending on the app. ## Traceroute Module Client Availability @@ -38,7 +46,7 @@ values={[ #### Android - + Within the node list, long hold a destination node and select 'Traceroute' to send the request. Depending on the amount of hops that is needed, this might take a while. The result will be shown using a pop-up. diff --git a/docs/software/integrations/caltopo.mdx b/docs/software/integrations/caltopo.mdx index ec5d123f..13fa6aea 100644 --- a/docs/software/integrations/caltopo.mdx +++ b/docs/software/integrations/caltopo.mdx @@ -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. - - +
+ +
### 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.