diff --git a/.github/ISSUE_TEMPLATE/documentation-change-request.md b/.github/ISSUE_TEMPLATE/documentation-change-request.md index c717229e..e46ead72 100644 --- a/.github/ISSUE_TEMPLATE/documentation-change-request.md +++ b/.github/ISSUE_TEMPLATE/documentation-change-request.md @@ -6,7 +6,7 @@ labels: "" assignees: "" --- -Please - if you just have a question, post in our [forum](https://meshtastic.discourse.group) instead. Please reserve this system for requesting changes to the Meshtastic documentation. +If you have a question, please post it on our [Meshtastic Discussions page](https://github.com/orgs/meshtastic/discussions) instead. This system is reserved specifically for requesting changes to the Meshtastic documentation. **Describe what section of the docs is outdated or otherwise in need of change** Be as clear and concise as possible. Provide a URL or GitHub path to the doc you are referencing. diff --git a/a0a26e4d40a5b9ccba9185eb70e2eaf66f0b0587_2_1380x888.jpeg b/a0a26e4d40a5b9ccba9185eb70e2eaf66f0b0587_2_1380x888.jpeg new file mode 100644 index 00000000..9f6ab18f Binary files /dev/null and b/a0a26e4d40a5b9ccba9185eb70e2eaf66f0b0587_2_1380x888.jpeg differ diff --git a/docs/about/introduction.mdx b/docs/about/introduction.mdx index 077960ae..a1bc5935 100644 --- a/docs/about/introduction.mdx +++ b/docs/about/introduction.mdx @@ -44,7 +44,7 @@ If you are interested in a more technical overview of how Meshtastic works, visi ## Contributors -Meshtastic is an open source project available on GitHub. Our generous volunteers donate their personal time to write and maintain this codebase. If you would like to contribute see our [GitHub](https://github.com/meshtastic), join our [Discord server](https://discord.gg/ktMAKGBnBs), and read up on our [forum](https://meshtastic.discourse.group). +Meshtastic is an open source project available on GitHub. Our generous volunteers donate their personal time to write and maintain this codebase. If you would like to contribute see our [GitHub](https://github.com/meshtastic), join our [Discord server](https://discord.gg/ktMAKGBnBs), and read up on our [Meshtastic Discussions](https://github.com/orgs/meshtastic/discussions).
- #### Previous Ground Record: 254km - **Range:** 254km (158 miles) @@ -117,11 +116,11 @@ Default Long_Fast - **Firmware Version:** 1.2 - **Antenna:** [868MHz Vertical 6dBi](https://ivent.co.nz/product/category/1000/868mhz%20vertical%206dbi%20antenna/38606) -![Topographical Map](https://canada1.discourse-cdn.com/free1/uploads/meshtastic/optimized/2X/a/a0a26e4d40a5b9ccba9185eb70e2eaf66f0b0587_2_1380x888.jpeg) +![Topographical Map](/img/records/topographical_map.webp) -![Node A](https://canada1.discourse-cdn.com/free1/uploads/meshtastic/optimized/2X/9/99ec4bcc18b21f4e95ac1bcc0592b608c9c4f567_2_1332x1000.jpeg) +![Node A](/img/records/node_a.webp) -![Node B](https://canada1.discourse-cdn.com/free1/uploads/meshtastic/optimized/2X/1/1c8bd5fc41f7bab925404b657a9c481882de9313_2_1332x1000.jpeg) +![Node B](/img/records/node_b.webp)
Resources Used
- http://www.heywhatsthat.com diff --git a/docs/community/local-groups.mdx b/docs/community/local-groups.mdx index 94d1c261..7f9fca63 100644 --- a/docs/community/local-groups.mdx +++ b/docs/community/local-groups.mdx @@ -124,6 +124,10 @@ us on [Discord](https://discord.com/invite/ktMAKGBnBs) to add your group. - [LithMesh Signal Group](https://signal.group/#CjQKIBScbOkXSG2bkFh_omdxjOM-XqYIU4eERDmGEDrm3jjmEhDyZhh-EeCLSfjfV-DoPvEQ) +## Mexico + +- [Meshtastic Mexico Community](https://radioaficionados.mx/meshtastic) + ## Netherlands, The - [Meshtastic Netherlands Telegram](https://t.me/meshtastic_nl) @@ -254,6 +258,14 @@ us on [Discord](https://discord.com/invite/ktMAKGBnBs) to add your group. - [Cypress, Texas Meshtastic Club](https://discord.gg/KzuwNRwE6q) - [DFW / North Texas Mesh](https://discord.gg/jyzYRTtyMD) +### Virginia + +- [MadisonMesh](https://madisonmesh.com/) + ### Wisconsin - [Meshconsin](https://meshconsin.org) + +### Washington + +- [Puget Mesh](https://PugetMesh.org) diff --git a/docs/configuration/module/serial.mdx b/docs/configuration/module/serial.mdx index a0ca91c0..2319a689 100644 --- a/docs/configuration/module/serial.mdx +++ b/docs/configuration/module/serial.mdx @@ -12,7 +12,7 @@ The serial module config options are: Enabled, Echo, Mode, Receive GPIO, Transmi This is an interface to talk to and control your Meshtastic device over a serial port. The module can be set to different [modes](#mode), each fulfilling a different use-case. -![image](https://user-images.githubusercontent.com/9000580/205529843-962c3187-8411-452c-b729-42c58b1571f5.png) +![image](/img/modules/Serial/jet.webp) + ### Currently Supported Sensor Types @@ -35,7 +39,6 @@ Supported sensors connected to the I2C bus of the device will be automatically d | MAX30102 | 0x57 | Heart Rate, Oxygen Saturation, and body temperature | | MLX90614 | 0x5A | Body temperature | - ## Module Config Values ### Environment Telemetry Enabled @@ -52,7 +55,7 @@ Default is `1800` seconds (30 minutes). How often we should send Device Metrics over the mesh. -Default is `1800` seconds (30 minutes). +Default is `1800` seconds (30 minutes). Device Metrics to a connected client app will always be sent once per minute, regardless of this setting. @@ -80,6 +83,16 @@ This option is used to configure the interval (in seconds) that should be used t Default is `1800` seconds (30 minutes). +### Power Metrics Enabled + +This option is used to enable/disable the sending of power telemetry as gathered by an attached supported voltage/current sensor. Note that this does not need to be enabled to monitor the voltage of the battery. + +Default is `false`. + +### Power Metrics Interval + +This option is used to configure the interval (in seconds) that should be used to send power metrics from an attached supported sensor over the mesh network. + ### Health Telemetry Enabled This option is used to enable/disable the sending of health data from an attached supported sensor over the mesh network. @@ -139,15 +152,17 @@ All telemetry module config options are available in the python CLI. Example com ## Settings -| Setting | Acceptable Values | Default | -| :---------------------------------------: | :-----------------: | :---------------------------------------: | +| Setting | Acceptable Values | Default | +| :---------------------------------------: | :-----------------: | :----------------------------------------: | | telemetry.device_update_interval | `integer` (seconds) | Default `0` is 30 minutes(`1800` seconds). | -| telemetry.environment_display_fahrenheit | `true`, `false` | `false` | -| telemetry.environment_measurement_enabled | `true`, `false` | `false` | -| telemetry.environment_screen_enabled | `true`, `false` | `false` | +| telemetry.environment_display_fahrenheit | `true`, `false` | `false` | +| telemetry.environment_measurement_enabled | `true`, `false` | `false` | +| telemetry.environment_screen_enabled | `true`, `false` | `false` | | telemetry.environment_update_interval | `integer` (seconds) | Default `0` is 30 minutes(`1800` seconds). | -| telemetry.air_quality_enabled | `true`, `false` | `false` | -| telemetry.air_quality_interval | `integer` (seconds) | Default `0` is 30 minutes(`1800` seconds). | +| telemetry.air_quality_enabled | `true`, `false` | `false` | +| 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` | diff --git a/docs/configuration/radio/lora.mdx b/docs/configuration/radio/lora.mdx index d08d2a97..abd908aa 100644 --- a/docs/configuration/radio/lora.mdx +++ b/docs/configuration/radio/lora.mdx @@ -119,7 +119,7 @@ Setting this to option to 'true' means the device will ignore any messages it re Acceptable values: `true`, `false` -Default is `false`. When set to `true`, this configuration indicates that the user approves their packets to be uploaded to MQTT. If set to `false`, nodes receiving your packets are requested not to forward packets to MQTT. +Default is `false`. When set to `true`, this configuration indicates that the user approves their packets to be uploaded to MQTT. If set to `false`, nodes receiving your packets are requested not to forward packets to MQTT. This configuration only applies to Channels configured with the `defaultpsk` and `eventpsk` keys set in the Meshtastic Firmware; Channels with custom keys ignore this setting. **Important:** This is not a cryptographic solution but a polite request that is enforced in the official firmware. diff --git a/docs/development/android.mdx b/docs/development/android.mdx index a594cd8d..b3b78dcd 100644 --- a/docs/development/android.mdx +++ b/docs/development/android.mdx @@ -10,15 +10,22 @@ sidebar_position: 1 If you would like to develop this application we'd love your help! These build instructions are brief and should be improved, please send a PR if you can. 1. Use Android Studio to build/debug -2. Use `git submodule update --init --recursive` to pull in the various sub-modules we depend on. -3. There are a few config files which you'll need to copy from templates included in the project. Run the following commands to do so: +2. Clone the repository and after successful cloning, change the working directory to Meshtastic-Android/ + ```shell + git clone https://github.com/meshtastic/Meshtastic-Android.git && cd Meshtastic-Android/ + ``` +3. Pull in the various sub-modules we depend on. + ```shell + git submodule update --init --recursive + ``` +4. There are a few config files which you'll need to copy from templates included in the project. Run the following commands to do so: ```shell rm ./app/google-services.json cp ./app/google-services-example.json ./app/google-services.json rm ./app/src/main/res/values/curfirmwareversion.xml cp ./app/special/curfirmwareversion.xml ./app/src/main/res/values/ ``` -4. Now you should be able to select "Run / Run" in the IDE and it will happily start running on your phone or the emulator. +5. Now you should be able to select "Run / Run" in the IDE and it will happily start running on your phone or the emulator. :::note The emulators don't support Bluetooth, so some features can not be used in that environment. diff --git a/docs/development/reference/encryption-technical.mdx b/docs/development/reference/encryption-technical.mdx index 5790fec1..48b50e59 100644 --- a/docs/development/reference/encryption-technical.mdx +++ b/docs/development/reference/encryption-technical.mdx @@ -6,31 +6,31 @@ sidebar_position: 5 description: Technical Overview of Encryption Employed with Meshtastic from Firmware 2.5.0 Onwards --- -## PSK for Channels, PKC for Direct Messages (DMs) and Admin Messages +## PSK for Channels, PKC for Direct Messages and Admin Messages -Starting with firmware version 2.5.0, which introduces Public Key Cryptography (PKC) for Direct Messages (DMs) and additionally incorporating the use of Session IDs for Admin Messages, the security architecture of Meshtastic has reached a new level of robustness. +Up to version 2.4.x of the firmware, Meshtastic relied entirely on Pre-Shared Key (PSK) cryptography for all messaging. Starting with firmware version 2.5.0, Meshtastic introduced Public Key Cryptography (PKC) for Direct Messages (DMs) and added Session IDs for Admin Messages. Together, these enhancements bring the security architecture of Meshtastic to a new level of robustness. Below is a detailed overview of how PSK, PKC, and Session IDs are integrated into your system to secure Channels, Direct Messages, and Admin Messages. -### 1. Chat Channels Using Pre-Shared Key (PSK) +### 1. Chat Channels Using PSK - **PSK Overview:** - - Chat Channels continue to utilize a Pre-Shared Key (PSK) for encrypting communications. + - Chat Channels continue to utilize a PSK for encrypting communications. - All participants share the same PSK for their Channels, which is used for both encryption and decryption within the channel. - **Security Considerations:** - **Confidentiality:** Only participants with the correct PSK can access messages within the Chat Channel. - **Key Management:** Secure distribution and regular rotation of the PSK are essential to maintaining the channel's security. -### 2. Direct Messages (DMs) Now Using PKC +### 2. DMs Now Using PKC - **PKC Implementation for DMs:** - **Public/Private Key Pairs:** Each node is equipped with a unique public/private key pair. The private key is securely stored on the node, and the public key is shared with other nodes, allowing for secure, authenticated communication. - **Encryption and Signature:** - **Encryption:** DMs are encrypted using the recipient’s public key, ensuring only the recipient with the corresponding private key can decrypt the message. - - **Digital Signatures:** Messages are signed with the sender’s private key before encryption, allowing the recipient to verify the sender’s identity and the message’s integrity using the sender’s public key. + - **Digital Signatures:** DMs are signed with the sender’s private key before encryption, allowing the recipient to verify the sender’s identity and the message’s integrity using the sender’s public key. - **Security Enhancements with PKC:** - **Message Confidentiality and Integrity:** With PKC, each DM is encrypted and signed, ensuring that only the intended recipient can read the message, and verifying that it has not been tampered with. diff --git a/docs/hardware/antennas/testing.mdx b/docs/hardware/antennas/testing.mdx index 12e8d97d..a21874ec 100644 --- a/docs/hardware/antennas/testing.mdx +++ b/docs/hardware/antennas/testing.mdx @@ -88,6 +88,4 @@ In summary - wavelengths in Europe fair well in plain sight, curve over not-so-t ## Discussion -To comment on / join in antenna range [Meshtastic discourse](https://meshtastic.discourse.group/t/antenna-improved-range/227/35?u=sens8tion) - -There, you will also find reference to Meshtastic range achievements and aerial recommendations. (Note we've stopped short of making specific supplier aerial recommendations in this wiki.) +For further insights, join the conversation on antenna range and performance at [Meshtastic Discussions on GitHub.](https://github.com/orgs/meshtastic/discussions) diff --git a/docs/hardware/devices/heltec-automation/lora32/index.mdx b/docs/hardware/devices/heltec-automation/lora32/index.mdx index f131bc58..9395c1ea 100644 --- a/docs/hardware/devices/heltec-automation/lora32/index.mdx +++ b/docs/hardware/devices/heltec-automation/lora32/index.mdx @@ -114,7 +114,7 @@ Image Source: [Heltec]( diff --git a/docs/hardware/devices/lilygo/tbeam/buttons.mdx b/docs/hardware/devices/lilygo/tbeam/buttons.mdx index 9f3ed3b1..27106d02 100644 --- a/docs/hardware/devices/lilygo/tbeam/buttons.mdx +++ b/docs/hardware/devices/lilygo/tbeam/buttons.mdx @@ -5,6 +5,19 @@ sidebar_label: Buttons sidebar_position: 1 --- +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + + + + ## Functionality - **Power Button (left):** @@ -23,3 +36,32 @@ sidebar_position: 1 width="200" align="center-right" /> + + + + +:::info +Be aware that the button layout differs on the T-Beam Supreme model. +::: + +## Functionality + +- **Power Button (middle):** + - **Long press:** Powers the device on or off. +- **Reset Button (right):** + - **Single press:** Resets the device. +- **User/Program Button (left):** + - **Long press:** Will signal the device to shutdown after 5 seconds. + - **Single press:** Changes the information page displayed on the device's screen. + - **Double press:** Sends an adhoc ping of the device's position to the network. + - **Triple press:** Disables the device's GPS. Repeat to re-enable. (_This will be indicated on both information screen pages on the device's display as shown below_) + + + + + + diff --git a/docs/hardware/devices/rak-wireless/wisblock/base-boards.mdx b/docs/hardware/devices/rak-wireless/wisblock/base-boards.mdx index 2b289321..5aa9802b 100644 --- a/docs/hardware/devices/rak-wireless/wisblock/base-boards.mdx +++ b/docs/hardware/devices/rak-wireless/wisblock/base-boards.mdx @@ -37,17 +37,33 @@ The RAK5005-O is no longer in production. It is recommended to use the RAK19007 - (x1) Reset Button - It may be possible to add a user button using the [13002 IO module](https://store.rakwireless.com/collections/wisblock-interface/products/adapter-module-rak13002). - **Connectors** -- Connector for 3.7v LiPo battery (with charge controller) -- Connector for 5v solar panel (max 5.5v) -- I2C, UART, GPIOs and analog input accessible with solder contacts -- Micro USB port for debugging and power + - JST PHR-2 connector for 3.7v LiPo battery (with charge controller) + - JST-ZHR-2 connector for 5v solar panel (max 5.5v) + - I2C, UART, GPIOs and analog input accessible with solder contacts + - Micro USB port for debugging and power - **Screen Support** -- OLED screen support (OLED screen sold separately) + - OLED screen support (OLED screen sold separately) :::note The RAK5005 (without the -O) is not compatible. ::: +### Connectors Diagram + +RAK19001-O Connectors + +### Voltages + +- JST PHR-2 connector for 3.7v LiPo battery. + - Charge controller max charge rate is 500mAh. + - Minimum input voltage for charging is 3.3v, maximum 4.3v. +- JST ZHR-2 connector for 5v solar panel. + - Minimum input voltage to charge is 4.4v, maximum 5.5v. + Further information on the RAK5005-O can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK5005-O/Overview/#product-description). 2C, UART, BOOT and GPIOs accessible with solder contacts - - USB-C port for debugging and power - - **Screen Support** - - OLED screen support (OLED screen sold separately) +- **Slots** + - (x1) Core Module slot + - (x1) WisBlock IO Module slot + - (x4) WisBlock Sensor Module slots +- **Buttons** + - (x1) Reset Button + - To add a user button, you can utilize the AIN1 pin, which is exposed as pin 31 in the firmware. +- **Connectors** + - JST PHR-2 connector for 3.7v LiPo battery. + - JST ZHR-2 connector for 5v solar panel. + - I2C, UART, BOOT and GPIOs accessible with solder contacts + - USB-C port for debugging and power +- **Screen Support** + - OLED screen support (OLED screen sold separately) Further information on the RAK19007 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19007/Overview/#product-description). +### Connectors Diagram + +RAK19007 Connectors + +### Voltages + +- JST PHR-2 connector for 3.7v LiPo battery. + - Charge controller max charge rate is 350mAh. + - Minimum input voltage for charging is 3.3v, maximum 4.3v. +- JST ZHR-2 connector for 5v solar panel. + - Minimum input voltage to charge is 4.4v, maximum 5.5v. + ### Resources - Purchase Links: @@ -96,22 +128,38 @@ Further information on the RAK19007 can be found on the [RAK Documentation Cente ## RAK19003 - [RAK19003](https://store.rakwireless.com/products/wisblock-base-board-rak19003) - WisBlock's Mini Base Board. - - **Slots** - - (x1) Core Module slot - - (x2) WisBlock Sensor Module slots - - **Buttons** - - (x1) Reset Button - - There is a 3rd party sensor module that breaks out the user button, available [here](https://www.etsy.com/de/listing/1254963521/mini-io-expansion-board-for-rak-wireless). - - **Connectors** - - Connector for 3.7v LiPo battery (with charge controller) - - Connector for 5v solar panel (max 5.5v) - - I2C, UART and BOOT headers accessible with solder contacts - - USB-C port for debugging and power - - **Screen Support** - - OLED screen support (OLED screen sold separately) +- **Slots** + - (x1) Core Module slot + - (x2) WisBlock Sensor Module slots +- **Buttons** + - (x1) Reset Button + - There is a 3rd party sensor module that breaks out the user button, available [here](https://www.etsy.com/de/listing/1254963521/mini-io-expansion-board-for-rak-wireless). +- **Connectors** + - JST PHR-2 connector for 3.7v LiPo battery. + - JST ZHR-2 connector for 5v solar panel. + - I2C, UART and BOOT headers accessible with solder contacts + - USB-C port for debugging and power +- **Screen Support** + - OLED screen support (OLED screen sold separately) Further information on the RAK19003 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19003/Overview/#product-description) +### Connectors Diagram + +RAK19003 Connectors + +### Voltages + +- JST PHR-2 connector for 3.7v LiPo battery. + - Charge controller max charge rate is 350mAh. + - Minimum input voltage for charging is 3.3v, maximum 4.3v. +- JST ZHR-2 connector for 5v solar panel. + - Minimum input voltage to charge is 4.4v, maximum 5.5v. + ### Resources - Purchase Links: @@ -132,26 +180,45 @@ Further information on the RAK19003 can be found on the [RAK Documentation Cente ## RAK19001 - [RAK19001](https://store.rakwireless.com/products/rak19001-wisblock-dual-io-base-board) - WisBlock's Dual IO Base Board. - - **Slots** - - (x1) Core Module slot - - (x2) WisBlock IO Module slot - - (x6) WisBlock Sensor Module slots - - **Buttons** - - (x1) Reset Button - - (x1) User-defined push button switch - - (x1) Battery selector switch - - On this board the PIN for user button (IO5) is available as a solder contact on the upper header row. - - **Connectors** - - Connector for 3.7v LiPo battery (with charge controller) - - Connector for 5v solar panel (max 5.5v) - - Separate connector for non-rechargeable batteries - - I2C, SPI, UART, BOOT and GPIOs accessible with solder contacts - - USB-C port for debugging and power - - **Screen Support** - - OLED screen support (OLED screen sold separately) +- **Slots** + - (x1) Core Module slot + - (x2) WisBlock IO Module slot + - (x6) WisBlock Sensor Module slots +- **Buttons** + - (x1) Reset Button + - (x1) User-defined push button switch + - (x1) Battery selector switch + - On this board the PIN for user button (IO5) is available as a solder contact on the upper header row. +- **Connectors** + - JST PHR-2 connector for 3.7v LiPo battery (with charge controller) + - JST ZHR-2 connector for 5v solar panel (max 5.5v) + - Separate FGH20005-S02M2W1B connector for non-rechargeable batteries + - I2C, SPI, UART, BOOT and GPIOs accessible with solder contacts + - USB-C port for debugging and power +- **Screen Support** + - OLED screen support (OLED screen sold separately) Further information on the RAK19001 can be found on the [RAK Documentation Center](https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19001/Overview/#product-description). +### Connectors Diagram + +RAK19001 Connectors + +### Voltages + +- JST PHR-2 connector for 3.7v LiPo battery. + - Charge controller max charge rate is 500mAh. + - Minimum input voltage for charging is 3.3v, maximum 4.3v. +- JST ZHR-2 connector for 5v solar panel. + - Minimum input voltage to charge is 4.4v, maximum 5.5v. +- FGH20005-S02M2W1B connector for non-rechargable battery. + - Minimum required is 3.3v, typical 3.7v, maximum 5.5v. + - Active battery is selected with the battery selector switch. + ### Resources - Purchase Links: diff --git a/docs/legal/privacy.mdx b/docs/legal/privacy.mdx index b5206161..615178e0 100644 --- a/docs/legal/privacy.mdx +++ b/docs/legal/privacy.mdx @@ -14,6 +14,6 @@ If you opt-in to analytics on the Android app (thank you - that helps us know wh The search engine for this website is provided by Algolia, please see their [privacy policy](https://www.algolia.com/policies/privacy) for details of what information they collect. -This is an open-source project run by hobbyists, and we try to be completely transparent. If you have questions on this policy, please [post on the forum](https://meshtastic.discourse.group/), and we'll reply/clarify/correct. +This is an open-source project run by hobbyists, and we try to be completely transparent. If you have questions on this policy, please [post on the Meshtastic Discussions page](https://github.com/orgs/meshtastic/discussions), and we'll reply/clarify/correct. Keep being awesome! diff --git a/docs/software/android/installation.mdx b/docs/software/android/installation.mdx index 652df771..803ddae4 100644 --- a/docs/software/android/installation.mdx +++ b/docs/software/android/installation.mdx @@ -41,8 +41,6 @@ The minimum Android version is 5.0 (Lollipop 2014, first BLE support), however A There is a Play Store [testing program](https://play.google.com/apps/testing/com.geeksville.mesh) with the latest cutting edge changes, though this may come with extra bugs. -It is recommended that you follow the [Meshtastic Discourse Alpha Testers](https://meshtastic.discourse.group/c/development/alpha-testers) channel if you decide to join. - _Google Play and the Google Play logo are trademarks of Google LLC._ ### Install by Sideloading @@ -73,4 +71,4 @@ If you do sideload, you may have to give your browser permissions to run a packa Obtainium allows you to install and update Open-Source Apps directly from their releases pages, and receive notifications when new releases are made available. -\*Alpha releases include the latest cutting edge changes which may come with extra bugs. It is recommended that you follow the [Meshtastic Discourse Alpha Testers](https://meshtastic.discourse.group/c/development/alpha-testers) channel if you decide to use these versions. +\*Alpha releases include the latest cutting edge changes which may come with extra bugs. It is recommended that you follow the Meshtastic Alpha Testers Channel on [Discord](https://discord.com/invite/ktMAKGBnBs) if you decide to use these versions. diff --git a/docs/software/integrations/mqtt/nodered.mdx b/docs/software/integrations/mqtt/nodered.mdx index 85456688..9cb8a917 100644 --- a/docs/software/integrations/mqtt/nodered.mdx +++ b/docs/software/integrations/mqtt/nodered.mdx @@ -7,31 +7,30 @@ sidebar_position: 3 ## Using MQTT with Node-RED -Node-RED is a free cross-platform programming tool for wiring together hardware, APIs, and online services developed originally by IBM for IOT. It is widely used for home automation by many non-professional programmers and runs well on Pi's. Node-RED has many plug-in modules written by the community. +Node-RED is a free cross-platform programming tool for wiring together hardware, APIs, and online services developed originally by IBM for IOT. It is widely used for home automation by many non-professional programmers and runs well on Pi's. Node-RED has many plug-in modules written by the community. I will use this platform as a practical example on how to interface with the MQTT features of Meshtastic. Everything can be done from GUI's without using command line. - ### Enabling MQTT Use http://client.meshtastic.org/ , the python CLI, or an Apple or Android app to connect to your device and adjust these settings. +1. Settings--> Radio Config--> Network -1. Settings--> Radio Config--> Network - - On the node that will act as the gateway between the mesh and MQTT enable a network connection (i.e. Wifi, Ethernet). - - Save + - On the node that will act as the gateway between the mesh and MQTT enable a network connection (i.e. Wifi, Ethernet). + - Save -2. Settings--> Module Config--> MQTT config +2. Settings--> Module Config--> MQTT config - Configure the MQTT gateway's network configuration. - Verify Encryption Enabled is OFF. - (optional) Turn JSON Output Enabled ON. - Save 3. Channel Editor - Go to Channel Editor and enable Uplink and Downlink on the channels you wish to publish to MQTT. - - Save - + - Save ### Using Node-RED with Meshtastic + There are three common approaches: 1. Using JSON-encoded messages @@ -39,6 +38,7 @@ There are three common approaches: 3. Using protobuf-encoded messages with a protobuf decode node and the Meshtastic protobuf definitions The JSON output only publishes the following subset of the messages on a Meshtastic network: + - Text Message - Telemetry - Device Metrics @@ -54,11 +54,12 @@ The JSON output only publishes the following subset of the messages on a Meshtas > Protobufs are mesh native. #### 1. Using JSON-encoded messages -:::note + +:::note JSON is not supported on the nRF52 platform. ::: -Make sure that option *JSON Output Enabled* is set in MQTT module options and you have a channel 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. 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. @@ -71,7 +72,9 @@ Below is a valid JSON envelope for information sent by MQTT to a device for broa "payload": text or a json object go here } ``` + #### 2. Using protobuf-encoded messages with the Meshtastic decode node + Install Node-Red plug-in: https://flows.nodered.org/node/@meshtastic/node-red-contrib-meshtastic @@ -80,10 +83,9 @@ More info is in the plug-in source repository. There is an example flow using this mechanism available https://github.com/scruplelesswizard/meshtastic-node-red - #### 3. Using protobuf-encoded messages with a protobuf decode node and the Meshtastic protobuf definitions - If you don't want to depend on JSON decoding on the device, you can decode the protobuf messages off-device. To do that you will need to get the .proto files from https://github.com/meshtastic/protobufs. They function as a schema and are required for decoding in Node-RED. Save the files where the node-RED application can access them and note the file path of the "mqtt.proto" file. +If you don't want to depend on JSON decoding on the device, you can decode the protobuf messages off-device. To do that you will need to get the .proto files from https://github.com/meshtastic/protobufs. They function as a schema and are required for decoding in Node-RED. Save the files where the node-RED application can access them and note the file path of the "mqtt.proto" file. Install Node-RED plug-ins to your Node-RED application for an embedded MQTT server and a protobuf decoder. https://flows.nodered.org/node/node-red-contrib-aedes @@ -91,20 +93,20 @@ https://flows.nodered.org/node/node-red-contrib-protobuf Drag, drop, and wire the nodes like this. For this example, I ran Node-RED on a Windows machine. Note that file paths might be specified differently on different platforms. MQTT server wild cards are usually the same. A "+" is a single level wildcard for a specific topic level. A "#" is a multiple level wildcard that can be used at the end of a topic filter. The debug messages shown are what happens when the inject button sends a JSON message with a topic designed to be picked up by the specified Meshtastic device and then having it rebroadcast the message. -[](/documents/mqtt/NodeRedTwo.jpg) -[](/documents/mqtt/NodeRedThree.jpg) -[](/documents/mqtt/NR_nodes.jpg) +[](/documents/mqtt/NodeRedTwo.webp) +[](/documents/mqtt/NodeRedThree.webp) +[](/documents/mqtt/NR_nodes.webp) The aedes broker must be set up on the same flow as the other nodes. By activating the Publish debug node, you can see all the published messages. -[](/documents/mqtt/Broker1.jpg) +[](/documents/mqtt/Broker1.webp) Receiving a json mqtt message is very simple. -[](/documents/mqtt/Consume.jpg) +[](/documents/mqtt/Consume.webp) Injecting a json message to be sent by a device is also very simple. You do need the correct envelope. -[](/documents/mqtt/Inject.jpg) +[](/documents/mqtt/Inject.webp) Forwarding a text message from one device, through a broker, to another broker/device/channel would look like this. -[](/documents/mqtt/Forward.jpg) +[](/documents/mqtt/Forward.webp) If you want to decode text and position messages without json, it gets complicated: -[](/documents/mqtt/DecodeNewest.jpg) +[](/documents/mqtt/DecodeNewest.webp) If you are interested in my flow for this it is here: ```json @@ -669,10 +671,10 @@ If you are interested in my flow for this it is here: (documents/mqtt/Flow.txt) Node-red can rapidly (minutes vs days) put together some pretty impressive output when paired with meshtastic. Here is the output of that flow geofencing and mapping via mqtt data. -[](/documents/mqtt/Mapping.jpg) +[](/documents/mqtt/Mapping.webp) Advanced use, such as encoding Position and sending it to a device via MQTT without using JSON can get a little complicated. An example of how it can be done is below. -[](/documents/mqtt/EncodingPosition.jpg) +[](/documents/mqtt/EncodingPosition.webp) The flow is: ```json @@ -1001,4 +1003,4 @@ Sending a position to a device for broadcast to the mesh is much easier with JSO ``` An example of doing this in node-red: -[](/documents/mqtt/PosJSON.jpg) +[](/documents/mqtt/PosJSON.webp) diff --git a/docs/software/python-cli/installation.mdx b/docs/software/python-cli/installation.mdx index 770bde15..f073ec1e 100644 --- a/docs/software/python-cli/installation.mdx +++ b/docs/software/python-cli/installation.mdx @@ -4,7 +4,7 @@ title: Meshtastic Python CLI installation sidebar_label: Installation slug: /software/python/cli/installation sidebar_position: 1 -description: This page offers comprehensive instructions on methods of installing the Meshtastic Python CLI across different operating systems. +description: This page offers comprehensive instructions on methods of installing the Meshtastic Python CLI across different operating systems. --- import Tabs from "@theme/Tabs"; @@ -54,7 +54,7 @@ values={[ - You should see something like: - `ID 10c4:ea60 Silicon Labs CP210x UART Bridge` for CP210X - `ID 1a86:55d4 QinHeng Electronics USB Single Serial` for CH9102 - - If there is no seral device shown that matches the device you are using, please review our [Install Serial Drivers](/docs/getting-started/serial-drivers/) page before proceeding. + - If there is no seral device shown that matches the device you are using, please review our [Install Serial Drivers](/docs/getting-started/serial-drivers/) page before proceeding. - Check that your computer has Python 3 installed. @@ -102,10 +102,10 @@ values={[ ```shell sudo apt install pipx && pipx install meshtastic ``` - - If using `pipx` it may be necessary to update `$PATH` by running: - ```shell - pipx ensurepath - ``` + - If using `pipx` it may be necessary to update `$PATH` by running: + ```shell + pipx ensurepath + ``` @@ -210,7 +210,7 @@ When installing Python, make sure to select the option to "Add Python to PATH" o ``` :::note -Be aware that the Meshtastic CLI is not able to control the nodes over USB through termux, but you can control devices over Wifi using the `--host x.x.x.x` option with the device IP address (ESP32 or Pico W only). Wifi connection is currently under development and may not be working properly just yet. If you would like to provide feedback or test this feature, please visit our [forum](https://meshtastic.discourse.group) or join our [Discord server](https://discord.gg/ktMAKGBnBs) for more information. +Be aware that the Meshtastic CLI is not able to control the nodes over USB through termux, but you can control devices over Wifi using the `--host x.x.x.x` option with the device IP address (ESP32 or Pico W only). Wifi connection is currently under development and may not be working properly just yet. If you would like to provide feedback or test this feature, please join our [Discord server](https://discord.gg/ktMAKGBnBs) for more information. ::: @@ -218,7 +218,6 @@ Be aware that the Meshtastic CLI is not able to control the nodes over USB throu **You may need to close and re-open the CLI. The path variables may or may not update for the current session when installing.** - ### Standalone Installation (Ubuntu only) 1. Download the `meshtastic_ubuntu` executable from the [Releases](https://github.com/meshtastic/Meshtastic-python/releases) page. @@ -227,6 +226,7 @@ Be aware that the Meshtastic CLI is not able to control the nodes over USB throu ```shell chmod +x meshtastic_ubuntu && mv meshtastic_ubuntu meshtastic ``` + 3. To run the CLI: ```shell diff --git a/docs/software/python-cli/usage.mdx b/docs/software/python-cli/usage.mdx index 1fe64131..f782dded 100644 --- a/docs/software/python-cli/usage.mdx +++ b/docs/software/python-cli/usage.mdx @@ -14,7 +14,7 @@ The `meshtastic` command is not run within python but is a script run from your ## Viewing Serial Output -The `--noproto` command in the Meshtastic Python CLI is used to disable the API and function merely as a "dumb serial terminal." This mode of operation allows both the API and device functionalities to remain accessible for regular use, while simultaneously providing a window into the raw serial output. This feature can be particularly useful for debugging, development, or understanding the low-level communication between devices. Depends on a physically cabled serial connection. It will connect but not display information over a network (--host) or Bluetooth (--ble) connection. +The `--noproto` command in the Meshtastic Python CLI is used to disable the API and function merely as a "dumb serial terminal." This mode of operation allows both the API and device functionalities to remain accessible for regular use, while simultaneously providing a window into the raw serial output. This feature can be particularly useful for debugging, development, or understanding the low-level communication between devices. Depends on a physically cabled serial connection. It will connect but not display information over a network (--host) or Bluetooth (--ble) connection. ```shellsession title="Example Usage" user@host % meshtastic --noproto @@ -112,12 +112,12 @@ Writing modified channels to device Toggling `set-ham` changes your device settings in the following ways. -| Setting | `set-ham` Default | Normal Default | -| :----------: | :---------------: | :------------------------------------------------------------------------: | +| Setting | `set-ham` Default | Normal Default | +| :----------: | :---------------: | :----------------------------------------------------------------------------: | | `IsLicensed` | `true` | See [User Config - IsLicensed](/docs/configuration/radio/user#is-licensed-ham) | | `LongName` | _Your CallSign_ | See [User Config - LongName](/docs/configuration/radio/user#long-name) | | `ShortName` | _Abrv CallSign_ | See [User Config - ShortName](/docs/configuration/radio/user#short-name) | -| `PSK` | `""` | See [Channel Settings - PSK](#changing-the-preshared-key) | +| `PSK` | `""` | See [Channel Settings - PSK](#changing-the-preshared-key) | ## Changing the preshared key @@ -190,6 +190,7 @@ meshtastic --ble AA11BB22-CC33-DD44-EE55-FF6677889900 --info ```shell meshtastic --ble Meshtastic_1234 --nodes ``` + #### Export device config with --export-config ```shell @@ -214,8 +215,6 @@ This is a collection of common questions and answers from our friendly forum. ### Permission denied: ‘/dev/ttyUSB0’ -As previously discussed on the [forum](https://meshtastic.discourse.group/t/question-on-permission-denied-dev-ttyusb0/590/3?u=geeksville) - This indicates an OS permission problem for access by your user to the USB serial port. Typically this is fixed by the following. ```shell @@ -236,4 +235,4 @@ There is a problem with Big Sur and pyserial. The workaround is to install a new ```shell pip3 install -U --pre pyserial -``` \ No newline at end of file +``` diff --git a/docs/terms/index.mdx b/docs/terms/index.mdx index b430b323..a08e0196 100644 --- a/docs/terms/index.mdx +++ b/docs/terms/index.mdx @@ -29,7 +29,7 @@ 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. +: 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 @@ -73,9 +73,12 @@ Packet 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 (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. +Public Key Cryptography (PKC) | [Encryption](/docs/overview/encryption/) +: A cryptographic method introduced in Meshtastic v2.5 for Direct Messages and Admin Messages, where each device uses a unique public and private key pair. The public key, shared with other devices, enables secure message encryption, while the private key allows only the intended recipient to decrypt and authenticate the message. This approach enhances privacy and integrity for both direct device-to-device communication and sensitive admin functions. + 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. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3fb92746..3eb370aa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2997,8 +2997,8 @@ packages: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} - http-proxy-middleware@2.0.6: - resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + http-proxy-middleware@2.0.7: + resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==} engines: {node: '>=12.0.0'} peerDependencies: '@types/express': ^4.17.13 @@ -9380,7 +9380,7 @@ snapshots: transitivePeerDependencies: - supports-color - http-proxy-middleware@2.0.6(@types/express@4.17.21): + http-proxy-middleware@2.0.7(@types/express@4.17.21): dependencies: '@types/http-proxy': 1.17.15 http-proxy: 1.18.1 @@ -12130,7 +12130,7 @@ snapshots: express: 4.21.0 graceful-fs: 4.2.11 html-entities: 2.5.2 - http-proxy-middleware: 2.0.6(@types/express@4.17.21) + http-proxy-middleware: 2.0.7(@types/express@4.17.21) ipaddr.js: 2.2.0 launch-editor: 2.9.1 open: 8.4.2 diff --git a/src/components/GiscusComponent/index.js b/src/components/GiscusComponent/index.js index 01087aad..0ddc4b1f 100644 --- a/src/components/GiscusComponent/index.js +++ b/src/components/GiscusComponent/index.js @@ -7,10 +7,10 @@ export default function GiscusComponent() { return ( ), }, - { - color: "bg-[#ffffff]", - link: "https://meshtastic.discourse.group", - children: ( - discourse - ), - }, { color: "bg-[#FF4500]", link: "https://reddit.com/r/meshtastic", diff --git a/static/documents/mqtt/Broker1.jpg b/static/documents/mqtt/Broker1.jpg deleted file mode 100644 index d94b75c2..00000000 Binary files a/static/documents/mqtt/Broker1.jpg and /dev/null differ diff --git a/static/documents/mqtt/Broker1.webp b/static/documents/mqtt/Broker1.webp new file mode 100644 index 00000000..c7c4599d Binary files /dev/null and b/static/documents/mqtt/Broker1.webp differ diff --git a/static/documents/mqtt/Consume.jpg b/static/documents/mqtt/Consume.jpg deleted file mode 100644 index a8bfa477..00000000 Binary files a/static/documents/mqtt/Consume.jpg and /dev/null differ diff --git a/static/documents/mqtt/Consume.webp b/static/documents/mqtt/Consume.webp new file mode 100644 index 00000000..de7c01d3 Binary files /dev/null and b/static/documents/mqtt/Consume.webp differ diff --git a/static/documents/mqtt/Decode.jpg b/static/documents/mqtt/Decode.jpg deleted file mode 100644 index cb34fc55..00000000 Binary files a/static/documents/mqtt/Decode.jpg and /dev/null differ diff --git a/static/documents/mqtt/Decode.webp b/static/documents/mqtt/Decode.webp new file mode 100644 index 00000000..316655e8 Binary files /dev/null and b/static/documents/mqtt/Decode.webp differ diff --git a/static/documents/mqtt/DecodeNewest.jpg b/static/documents/mqtt/DecodeNewest.jpg deleted file mode 100644 index e0370294..00000000 Binary files a/static/documents/mqtt/DecodeNewest.jpg and /dev/null differ diff --git a/static/documents/mqtt/DecodeNewest.webp b/static/documents/mqtt/DecodeNewest.webp new file mode 100644 index 00000000..53fd238b Binary files /dev/null and b/static/documents/mqtt/DecodeNewest.webp differ diff --git a/static/documents/mqtt/EncodingPosition.jpg b/static/documents/mqtt/EncodingPosition.jpg deleted file mode 100644 index 937b2f5d..00000000 Binary files a/static/documents/mqtt/EncodingPosition.jpg and /dev/null differ diff --git a/static/documents/mqtt/EncodingPosition.webp b/static/documents/mqtt/EncodingPosition.webp new file mode 100644 index 00000000..4a5d7ce9 Binary files /dev/null and b/static/documents/mqtt/EncodingPosition.webp differ diff --git a/static/documents/mqtt/Forward.jpg b/static/documents/mqtt/Forward.jpg deleted file mode 100644 index 32b48903..00000000 Binary files a/static/documents/mqtt/Forward.jpg and /dev/null differ diff --git a/static/documents/mqtt/Forward.webp b/static/documents/mqtt/Forward.webp new file mode 100644 index 00000000..3098e676 Binary files /dev/null and b/static/documents/mqtt/Forward.webp differ diff --git a/static/documents/mqtt/Inject.jpg b/static/documents/mqtt/Inject.jpg deleted file mode 100644 index 6710997c..00000000 Binary files a/static/documents/mqtt/Inject.jpg and /dev/null differ diff --git a/static/documents/mqtt/Inject.webp b/static/documents/mqtt/Inject.webp new file mode 100644 index 00000000..83acc551 Binary files /dev/null and b/static/documents/mqtt/Inject.webp differ diff --git a/static/documents/mqtt/MapFlow.jpg b/static/documents/mqtt/MapFlow.jpg deleted file mode 100644 index 553f2999..00000000 Binary files a/static/documents/mqtt/MapFlow.jpg and /dev/null differ diff --git a/static/documents/mqtt/MapFlow.webp b/static/documents/mqtt/MapFlow.webp new file mode 100644 index 00000000..a638e292 Binary files /dev/null and b/static/documents/mqtt/MapFlow.webp differ diff --git a/static/documents/mqtt/Mapping.jpg b/static/documents/mqtt/Mapping.jpg deleted file mode 100644 index cca0fc79..00000000 Binary files a/static/documents/mqtt/Mapping.jpg and /dev/null differ diff --git a/static/documents/mqtt/Mapping.webp b/static/documents/mqtt/Mapping.webp new file mode 100644 index 00000000..1fe4bb08 Binary files /dev/null and b/static/documents/mqtt/Mapping.webp differ diff --git a/static/documents/mqtt/NR_nodes.jpg b/static/documents/mqtt/NR_nodes.jpg deleted file mode 100644 index f9f16601..00000000 Binary files a/static/documents/mqtt/NR_nodes.jpg and /dev/null differ diff --git a/static/documents/mqtt/NR_nodes.webp b/static/documents/mqtt/NR_nodes.webp new file mode 100644 index 00000000..57b1688a Binary files /dev/null and b/static/documents/mqtt/NR_nodes.webp differ diff --git a/static/documents/mqtt/NodeRedThree.jpg b/static/documents/mqtt/NodeRedThree.jpg deleted file mode 100644 index 68e5e3d9..00000000 Binary files a/static/documents/mqtt/NodeRedThree.jpg and /dev/null differ diff --git a/static/documents/mqtt/NodeRedThree.webp b/static/documents/mqtt/NodeRedThree.webp new file mode 100644 index 00000000..7c5890cf Binary files /dev/null and b/static/documents/mqtt/NodeRedThree.webp differ diff --git a/static/documents/mqtt/NodeRedTwo.jpg b/static/documents/mqtt/NodeRedTwo.jpg deleted file mode 100644 index c11c1663..00000000 Binary files a/static/documents/mqtt/NodeRedTwo.jpg and /dev/null differ diff --git a/static/documents/mqtt/NodeRedTwo.webp b/static/documents/mqtt/NodeRedTwo.webp new file mode 100644 index 00000000..d3f9bf89 Binary files /dev/null and b/static/documents/mqtt/NodeRedTwo.webp differ diff --git a/static/documents/mqtt/PosJSON.jpg b/static/documents/mqtt/PosJSON.jpg deleted file mode 100644 index 61b5737d..00000000 Binary files a/static/documents/mqtt/PosJSON.jpg and /dev/null differ diff --git a/static/documents/mqtt/PosJSON.webp b/static/documents/mqtt/PosJSON.webp new file mode 100644 index 00000000..9a4b8ae5 Binary files /dev/null and b/static/documents/mqtt/PosJSON.webp differ diff --git a/static/img/hardware/lora_v1_with_DS18B20.jpg b/static/img/hardware/lora_v1_with_DS18B20.jpg deleted file mode 100644 index 731da8c6..00000000 Binary files a/static/img/hardware/lora_v1_with_DS18B20.jpg and /dev/null differ diff --git a/static/img/hardware/lora_v1_with_DS18B20.webp b/static/img/hardware/lora_v1_with_DS18B20.webp new file mode 100644 index 00000000..0146e6e1 Binary files /dev/null and b/static/img/hardware/lora_v1_with_DS18B20.webp differ diff --git a/static/img/hardware/rak19001_connectors.webp b/static/img/hardware/rak19001_connectors.webp new file mode 100644 index 00000000..5d938ae2 Binary files /dev/null and b/static/img/hardware/rak19001_connectors.webp differ diff --git a/static/img/hardware/rak19003_connectors.webp b/static/img/hardware/rak19003_connectors.webp new file mode 100644 index 00000000..aeb7c712 Binary files /dev/null and b/static/img/hardware/rak19003_connectors.webp differ diff --git a/static/img/hardware/rak19007_connectors.webp b/static/img/hardware/rak19007_connectors.webp new file mode 100644 index 00000000..17a12457 Binary files /dev/null and b/static/img/hardware/rak19007_connectors.webp differ diff --git a/static/img/hardware/rak5005-0_connectors.webp b/static/img/hardware/rak5005-0_connectors.webp new file mode 100644 index 00000000..53037585 Binary files /dev/null and b/static/img/hardware/rak5005-0_connectors.webp differ diff --git a/static/img/modules/Serial/jet.webp b/static/img/modules/Serial/jet.webp new file mode 100644 index 00000000..73114465 Binary files /dev/null and b/static/img/modules/Serial/jet.webp differ diff --git a/static/img/records/node_a.webp b/static/img/records/node_a.webp new file mode 100644 index 00000000..68cc24c4 Binary files /dev/null and b/static/img/records/node_a.webp differ diff --git a/static/img/records/node_b.webp b/static/img/records/node_b.webp new file mode 100644 index 00000000..6f72203e Binary files /dev/null and b/static/img/records/node_b.webp differ diff --git a/static/img/records/topographical_map.webp b/static/img/records/topographical_map.webp new file mode 100644 index 00000000..fad432ce Binary files /dev/null and b/static/img/records/topographical_map.webp differ