GithubHelp home page GithubHelp logo

meshtastic / web Goto Github PK

View Code? Open in Web Editor NEW
211.0 16.0 84.0 3.46 MB

Meshtastic Web Client

Home Page: https://client.meshtastic.org

License: GNU General Public License v3.0

JavaScript 0.54% HTML 0.38% TypeScript 98.40% CSS 0.65% Dockerfile 0.03%
meshtastic

web's Introduction

Meshtastic Web

CI CLA assistant Fiscal Contributors Vercel

Overview

Official Meshtastic web interface, that can be hosted or served from a node

Hosted version

Stats

Alt

Self-host

The client can be self hosted using the precompiled container images with an OCI compatible runtime such as Docker or Podman. The base image used is UBI9 Nginx 1.22

# With Docker
docker run -d -p 8080:8080 -p 8443:8443 --restart always --name Meshtastic-Web ghcr.io/meshtastic/web

#With Podman
podman run -d -p 8080:8080 -p 8443:8443 --restart always --name Meshtastic-Web ghcr.io/meshtastic/web

Development & Building

Building and Packaging

Build the project:

pnpm build

GZip the output:

pnpm package

Development

Install the dependencies.

pnpm i

Start the development server:

pnpm dev

web's People

Contributors

ajmcquilkin avatar ashokasec avatar bmv437 avatar chrisdrackett avatar davidlpower avatar dependabot[bot] avatar emailvomitcomet avatar fifieldt avatar geftactics avatar gmart avatar hunter275 avatar iz1iva avatar lincolnpjames avatar luandro avatar mc-hamster avatar micheljung avatar mzac avatar nojronatron avatar nomore1007 avatar osmanovv avatar patrick762 avatar pdxlocations avatar pixnbits avatar rcarteraz avatar sachaw avatar server2003user avatar stylesuxx avatar thebentern avatar zierke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

web's Issues

[Bug]: MQTT Uplink/Downlink can't be saved

Category

Other

Hardware

T-Beam

Firmware Version

2.0.6.97fd5cf

Description

Connect to node over web (client.meshtastic.org or local web) - http or serial. Go to Channel Editor and enable MQTT uplink/downlink. Save button does nothing.

Relevant log output

No response

Map

After re flashing my tbeam device over a unrelated issue i get this error
Screenshot 2022-09-21 at 15-38-56 Meshtastic Web
Im using ver.1.2.65.0adc5ce. I had no issue prior. And yes i cleared cookies and cache use different browser but no go.

[UX] Easier/faster connection when accessing the node's web interface via IP instead of a hostname

Hi! 🐈
There are cases when the user needs to access the web interface running on the node by IP (http(s)://IP), because the node itself cannot be reached at http(s)://meshtastic.local.

In these cases the user needs to type the node's IP in the input where there is the pre-filled address. Copying the address from the browser's URL input doesn't make it easier, because when selecting the IP, modern browsers put the whole URL in the clipboard - http(s)://IP/ and the users needs to remove various things from the input after pasting. This all leads to bad UX.

Suggestions for a solution:

  • The pre-filled URL could be the current browser origin instead of the default http://meshtastic.local when the website is served from a node.
  • There could be a button like Connect to this node (not sure about the label) that would try to connect to the node with the same origin address as the web page when the website is served from a node.

[Feature] Custom map WMS/TMS URLs

It would be nice if it was possible to configure custom WMS/TMS URLs for the map of the web UI. That could either be in a config file on the web server or saved in the client browser.

WebPage not loading after a day out range testing

Bootlog.txt

T-Beam 1.2.51.f9ff06b set to save rangetest results.
turned Wifi off and allowed blutooth for the days testing.
Went for a long walk and came home.
Turned the wifi back on.
Opened the webpage in Edge as per usual but only a blank white page is displayed. (page source below)
rebooting etc has no effect.

Checked the log on serial (attached) which closes the connection when trying to load.

If there is a way to extract the .CSV file without the webpage that would be handy. (going to the file direct ip/static/rangetest.csv returns 404)

<html>
<body>
<!--StartFragment-->

  | <!DOCTYPE html>
-- | --
  | <html lang="en">
  | <head>
  | <meta charset="utf-8" />
  | <link rel="shortcut icon" href="/favicon.ico" type="image/svg+xml" />
  | <link
  | rel="alternate icon"
  | href="/safari-tab.svg"
  | type="image/png"
  | sizes="16x16"
  | />
  | <link rel="apple-touch-icon" sizes="180x180" href="/touch-icon.png" />
  | <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
  | <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
  | <link rel="manifest" href="/site.webmanifest" />
  | <link rel="mask-icon" href="/safari-tab.svg" color="#67ea94" />
  | <link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
  | <meta name="theme-color" content="#67ea94" />
  | <meta
  | name="viewport"
  | content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=0"
  | />
  | <meta name="description" content="Meshtastic Web App" />
  | <title>Meshtastic Web</title>
  | <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/mapbox-gl.js"></script>
  | <script type="module" crossorigin src="/index.14c9dc75.js"></script>
  | <link rel="modulepreload" href="/vendor.07b56cc4.js">
  | <link rel="stylesheet" href="/index.b690784f.css">
  | <link rel="manifest" href="/manifest.webmanifest"></head>
  | <body>
  | <div id="root"></div>
  | <noscript>You need to enable JavaScript to run this app.</noscript>
  |  
  | </body>
  | </html>

<!--EndFragment-->
</body>
</html>

fixed position but no place to set lon and lat

One of my units seems to have a broken gps. So decided to use it as the base location as that one does not move.

I see you can set the fixed position through the web interface but there is no location to set the lon/lat for that fixed position.

bug in night-vision of Node display.

Browser: chrome
OS: Linux mint19.3
Device fw-version: 1.2.50

Nodes that are displayed as a blue point on the map can show details when clicked.
In normal vision, it shows the name+ID in black text on a little white popup window.
In nightvision the name+ID is in white text but the popup window is still white, should probably be dark grey or black. So it is unreadable in nightvision. When the text is selected with a mouse I see the white characters in a green background.

Web Interface Uses External Libraries - Can't access without internet?

Hi,

I'm a new user of Meshtastic and I've just flashed my first two devices.

To get better access to configuration options I attempted to start the SoftAP on the device and connected my laptop to it. The interface comes up and is just white so I thought I'd check the html source code to see if it was actually getting html.

I've found the reason I'm having issue, obviously connecting directly to a Meshtastic device, you don't have any connection to the internet, and it seems that external requests for JavaScript libraries are required for any functionality on the web front end.

Is there a way to load those libraries onto the device to make it work? I'm unsure how it would otherwise work in a situation that you're offline (one of the primary reasons for the mesh network)?

Kind regards,
Jessica

Dark mode doesn't work

Ctrl-K -> Application -> Toggle Dark Mode, nothing happens.

Tried on Brave and Firefox with local client, as I can't find the device from client.meshtastic.org

Cheers

Cannot access the node web interface if GitHub API rate limit exceeded

If I try to access the node web interface (eg. connected to the local wifi network) this error appears:

Screenshot_2022-07-28_00-58-06

In the browser console can see that this could be correlated with GH API limit:
Screenshot_2022-07-28_00-59-40

This could be also confirmed by resetting the API rate limit (eg. changing own IP address) and refreshing: the web interface shows up nicely.

IMHO a local web interface should be not dependent on external services to show.

Thanks for all your work on Meshtastic!

minor web page annoyance

Ive noticed the new node display pane on the right side has a scroll issue.

When you open the pane and click on the <> to see the settings, it displays them but the length is more than my display and it appears there is no way to scroll down in the pane.

RAK4631 hangs on "Reading device configuration"

I have a RAK4631 running firmware-rak4631_5005-1.2.55.9db7c62.uf2. I am running meshtastic-web locally and running chromium on linux with Web Bluetooth enabled. I am able to see my device when I hit Connect and it pops up the BLE device selector, but when I select it it just hangs here:

image

On my device serial console I see:

??:??:?? 89 BLE Connected to <laptop>
??:??:?? 89 CCCD Updated: 1
??:??:?? 89 fromNum 'Notify' enabled
??:??:?? 90 toRadioWriteCb data 0x20011ada, len 7
??:??:?? 90 Client wants config, nonce=548990099
??:??:?? 90 Starting API client config

Thank you

Site crashes when using an unsupported browser

Currently the web client crashes when using an unsupported browser (e.g., Firefox) when going to serial, and fails silently when connecting to bluetooth. Preferred behavior would be to check if navigator.bluetooth and navigator.serial are defined. The UI would then remove all unsupported options from the UI.

For example, assuming the user is on Firefox, then both the bluetooth and serial options would be removed or be grayed out, whereas the wifi connection option would not be.

Enhancement: Replacing static text / Multilanguage preparations

Hello,
I looked over the code and saw only static text. Shouldn't we replace this asap to make it easier to change text in the future?
Also it would be a big help if the project will be translated.
I already have some changes in my Fork. I haven't worked with i18next yet, but it seems like a good option.

reduced functionality in isolated AP mode

When this interface is used from the actual device, it loads inter.css (a webfont definition) and the mapbox-gl.js from external locations. In AP mode the browser may not have internet connectivity so the parts depending on these Scrips will not work, if said scripts are not already cached. If including them on-device will take up too much space, there need to be safeguards to disable those parts cleanly if missing and not render the application inoperable as a whole.

Web Interface reset before i can send a message through the text field

If i chat over the WEB Interface and the node has a connection to the main mqtt server and i want to write, the text field always do a reset and the text is gone ... as a workaround i write my text to the url field from the browser and do a copy/paste and press send immediately.

missing mqtt settings

I noticed you can set a channel uplink and downlink but I cant seem to find a place to set the mqtt server address.

I also noticed that while you can connect via ssl it just sits on the "Connecting" display and never connects to the unit. Connecting via http seems to work fine.

Firmware 1.2.52, full update of web interface.

Unable to change channel presets

When changing from the default "LongSlow" to any other setting the save icon at the bottom right remains disabled.
Pressing "save" in the Channel 0 area doesn't commit these settings either. The same occurs when trying to set the settings without using the presets. an infinite loading symbol is displayed.

When manually setting the modem config in python, the webpage doesn't reflect the settings. Changing from Bw125Cr48Sf4096 to Bw500Cr45Sf128.

Node information not displayed on the map

In fw-1.2.50 it was the information about a node was displayed and not visable in nightvision

In fw-1.2.52 that seems to be fixed in some way now but the popup shows the text 'Popup' but no information about the node.

Enhancement: Batch save for multiple setting changes or unloadable config

When setting up multiple meshtastic devices, taking the time for the device to reboot after every setting change takes extra time and seems redundant. It would be nice to make all my changes and then click save or to click save on each page and then reboot at the end.

Alternatively, being able to upload a preconfigured config file with the changes would work, but is less ideal in my opinion.

Device Config -> Network Config ->Save "No response received"

Issue not present for me yesterday. ??don't see any changes on the web client side so I don't know if the problem is here??
With client.meshtastic.org, t-beam, Firmware 1.3.47.05147c0-d. Windows, Chrome. Serial connection.
All other options I tried save to radio properly.
Device Config -> Network Config results in a (x) No Response Received drop-down.

Changing network settings via CLI continue to work for me.

Web interface comes up blank on firefox

up to 96.0.1 (which is current at the time of writing) the following error is logged:

Uncaught ReferenceError: ReadableStreamDefaultReader is not defined
    $I https://192.168.101.78/vendor.77bb4497.js:93
    <anonymous> https://192.168.101.78/index.cfc92925.js:2
vendor.77bb4497.js:93:16797
    $I https://192.168.101.78/vendor.77bb4497.js:93
    <anonym> https://192.168.101.78/index.cfc92925.js:2
    InnerModuleEvaluation self-hosted:2388
    evaluation self-hosted:2349

Does not matter if called by HTTP or HTTPS

Wrong Time-stamp in firmware 1.2.50

When a node with firmware 1.2.50 is put in WiFi-AP mode.
In a browser, the UI 'message' window gives the wrong timestamp.
For every message it is the same 01:00 AM.

I would expect that the timestamp is the actual time a message was sent.

The bug is there with devices Tbeam and also with T3-v1.6
Browser is Chromium on Linux-Mint 19.2

Station G1 device appears to not have ability to create a fixed location for LON/LAT/ALT

Giglio — Today at 9:24 AM
As an aside I went to configure the Station G1 with fixed LAT/LON and received the following when trying to do it by command line "Connected to radio
Aborting due to: Protocol message LocalConfig has no "fixed_position" field." Not sure if that is an issue on my side or something that needs to be enabled for the Station G1, just fyi. (edited)

thebentern — Today at 9:31 AM
I don't think that one ever got wired up to its new location in the config. If you don't mind, create an issue in the meshtastic-python github repo

Neil — Today at 9:33 AM
This generally means, you are on the boat of 1.3.

thebentern — Today at 9:34 AM
Right. In 1.3, we moved the position prefs into the PositionConfig
For the python cli those special commands like --setlat also set position mode to fixed I believe

Giglio — Today at 9:37 AM
FWIW, I was using the command "meshtastic --port COM6 --setalt 70" when I received the above error.

https://discord.com/channels/867578229534359593/930639909998428220/1012036562592207012

Page is not fully working untill reconfigure

TBeam - 2.0.8.090e166-d (had the same issue on 2.0.7.91ff7b9 so updated)

Connecting to TBeam via direct IP in browser (FF 108.0.1), selecting meshtastic.local without TLS connects to the node but there is no functionality and the node is "unknown" - see attachment. (same issue with Edge 108.0.1462.54 )

Fix is to Ctrl-K and select Debug > Reconfigure.
This works and i can see information and send messages.

image

Incoming messages do not display until i send a message from the webpage but that may be an unrelated fault.

Serial Disconnect/Reconnect Requires Browser Page Refresh

With a serial-connected device (1.3.41 firmware), the web page in Chrome can connect to the device, but if you click disconnect then try to reconnect it will fail. Workaround is to use the browser to reload the page, then the device will connect again.

Developer logs report this on disconnect:

image

Reconnect then reports "Failed to execute 'open' on 'SerialPort': The port is already open." until page is refreshed.

Range test save state issue

"firmwareVersion": "1.2.51.f9ff06b
Range test plugin page shows a -

  • green tick for "range test plugin enabled"
  • No tick for "Range Test Plugin Save?"
  • "Message interval" = 0
  • Save button is greyed out.

However the GET command returns that "save" is true.

I am unable to click the "Range Test Plugin Save?" Checkbox.

To do so i need to click the "enabled?" box to uncheck then recheck and then it will allow me to check the "Range Test Plugin Save?"

I can then pres the save button down below.

IF if reboot the T-beam and try a few more attempts it will sometimes show the correct state.

C:\meshtastic --port COM6 --get range_test_plugin_save
Connected to radio
range_test_plugin_save: True
Completed getting preferences

meshtastic --port COM6 --info
Connected to radio

Owner: Garry 6 (G6)
My info: { "myNodeNum": 2475420500, "hasGps": true, "numBands": 20, "firmwareVersion": "1.2.51.f9ff06b", "rebootCount": 13, "bitrate": 2418.3674, "messageTimeoutMsec": 300000, "minAppVersion": 20200, "maxChannels": 8, "hasWifi": true, "channelUtilization": 1.0166667 }
Nodes in mesh: {'num': 2475420500, 'user': {'id': '!938beb54', 'longName': 'Garry 6', 'shortName': 'G6', 'macaddr': '44:17:93:8b:eb:54', 'hwModel': 'TBEAM'}, 'position': {'latitudeI': -x, 'longitudeI': x, 'altitude': 108, 'batteryLevel': 82, 'time': 1642065259, 'locationSource': 'LOCSRC_GPS_INTERNAL', 'posTimestamp': 1642065023, 'altitudeHae': 106, 'altGeoidSep': -1, 'PDOP': 579, 'fixType': 3, 'satsInView': 4, 'latitude': x, 'longitude': x}, 'lastHeard': 1642065259} {'num': 2475426076, 'user': {'id': '!938c011c', 'longName': 'Garry 1', 'shortName': 'G1', 'macaddr': '44:17:93:8c:01:1c', 'hwModel': 'TBEAM'}, 'position': {'latitudeI': x, 'longitudeI': x, 'time': 1642065211, 'latitude': x, 'longitude': x}, 'lastHeard': 1642065249, 'snr': 6.25, 'lastReceived': {'from': 2475426076, 'to': 4294967295, 'id': 1438260094, 'rxTime': 1642065249, 'rxSnr': 6.25, 'hopLimit': 3, 'fromId': '!938c011c', 'toId': '^all'}, 'hopLimit': 3} {'num': 2475426532, 'user': {'id': '!938c02e4', 'longName': 'Garry 6', 'shortName': 'G6', 'macaddr': '44:17:93:8c:02:e4', 'hwModel': 'TBEAM'}, 'position': {'time': 1642064560}, 'lastHeard': 1642065080, 'snr': 5.5}

Preferences: { "positionBroadcastSecs": 60, "phoneTimeoutSecs": 900, "lsSecs": 300, "wifiSsid": "UBNT", "wifiPassword": "sekrit", "region": "ANZ", "positionBroadcastSmart": true, "rangeTestPluginEnabled": true, "rangeTestPluginSave": true, "isAlwaysPowered": true }

Channels:
PRIMARY psk=default { "txPower": 20, "modemConfig": "Bw500Cr45Sf128", "psk": "AQ==", "name": "My Channel", "id": 1234 }

Primary channel URL: https://www.meshtastic.org/d/#ChgIFBgBIgEBKgpNeSBDaGFubmVsVdIEAAA

Bug: Force SSL redirect on client.meshtastic.org

curl -i http://client.meshtastic.org/
HTTP/1.0 308 Permanent Redirect
Content-Type: text/plain
Location: https://client.meshtastic.org/
Refresh: 0;url=https://client.meshtastic.org/
server: Vercel

Redirecting to https://client.meshtastic.org/

For correct working with non-SSL meshtastic web API, redirect on the site must be disabled.

Why plain HTTP connection to a meshtastic device is better:

  1. No MTU/MSS issues
  2. Certificate on device regenerated with same serial -> no access from web after factory reset
  3. WAN optimization working

So please give option to use HTTP://client.meshtastic.org

Cannot type letter "k" in app text fields

image

Due to this code in src/components/CommandPalette/Index.tsx, the user is not able to type the letter "k" into any text input fields within the application.

Repro: Attempt to type the name "Kite" into the name of a connected mesh node.

Bug: Bluetooth setting is inaccurate and unchangable

When modifying the bluetooth config, enable slider is off when bluetooth is confirmed on with (5) TTGO Tbeam v1.1(s). Changing that setting, or any other setting on the config, will not make any changes. Either the save button is unclickable or the reboot will revert to original state.
Screenshot 2022-11-08 104433

Web Browser won't open

After updating my Heltec module to 1.2.65.0adc5ce, the web page doesn't open and returns the following error message

Something went wrong:
a.map is not a function
Try again

Map - nodes not identified by name, but by time

On the meshtastic.local app, on the map display, clicking on a device location highlights the node on the left, which is fine. But it would be helpful for the node to display the node name and time, rather than just the time.

build error at `latest` and `master`

> tsc && vite build

src/components/PageComponents/Connect/Serial.tsx:42:30 - error TS2345: Argument of type '{ port: SerialPort; }' is not assignable to parameter of type 'SerialConnectionParameters'.
  Property 'concurrentLogOutput' is missing in type '{ port: SerialPort; }' but required in type 'SerialConnectionParameters'.

42     await connection.connect({
                                ~
43       port,
   ~~~~~~~~~~~
44     });
   ~~~~~

this fix seemed to work:

--- a/src/components/PageComponents/Connect/Serial.tsx
+++ b/src/components/PageComponents/Connect/Serial.tsx
@@ -40,7 +40,8 @@ export const Serial = (): JSX.Element => {
     setSelectedDevice(id);
     const connection = new ISerialConnection(id);
     await connection.connect({
-      port,
+      port: port,
+      concurrentLogOutput: true,
     });

Previous messages are lost after reconnect.

Not sure is this is an issue or a limitation of the web interface. For the Android app, if you disconnect or go out of BT range, then reconnect to device, previous messages are displayed. For meshtastic.local, doing the same and there is no visibility for previous messages. The thread is lost. Is this something which can be overcome?

Thanks,
Doug

Settings menu does not reflect device settings, changes = lockup

When connected via Serial, the settings configured on the Meshtastic device (RAK 4631 in this case), are not accurately reflected in the web interface settings menu. For instance, I have set my radio to LongFast, US region, but the Lora settings on the Web interface says "VLongSlow" and "Unset".

Further, changing the setting and hitting Save results in the interface being blurred out, with "Loading" displayed indefinitely.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.