forked from kallanreed/mesh-map
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathhowto.html
More file actions
170 lines (158 loc) · 8.55 KB
/
howto.html
File metadata and controls
170 lines (158 loc) · 8.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<!DOCTYPE html>
<html lang="en">
<head>
<title>Getting started</title>
<link rel="stylesheet" type="text/css" href="content/tailwind.css" />
</head>
<body class="bg-slate-900 text-slate-300 p-4">
<h1 class="mb-4 text-2xl text-slate-100">Contributing to the MeshCore Coverage map</h1>
<h2 class="mb-2 text-xl text-slate-100">What is this?</h2>
<div class="flex items-center gap-4 w-130 mb-2 ml-4">
<img class="rounded-lg" src="/content/hear-me.png" alt="Can you hear me now?" />
<div class="text-md">
The goal of this project is to map out "effective" coverage of the Puget MeshCore mesh.
The client app will already tell you whether a repeater heard your message, but that
doesn't really tell you much. Did it actually go anywhere? Did anyone else receive it?
By using MQTT data from prominent observer nodes, this helps visualize that places
where a sent message will be widely received.
</div>
</div>
<div class="mb-2 pl-4">
<div class="">
<a class="underline text-sky-300" target="_blank" href="/">The coverage map</a>
is a crowd-sourced visualization of repeater coverage in the PNW MeshCore mesh.
</div>
<div>
The main map has a few features:
<ul class="pl-4 text-sm list-disc">
<li>Dots indicate "pings" or "samples" from wardrivers.</li>
<li style="list-style-type: none">
<ul class="pl-4 text-sm list-disc">
<li>Pings are visible on the map for 1 day before being grouped into a "coverage"
tile (a box).</li>
<li>Green dot - a ping was "observed" (by MQTT) at that location.</li>
<li>Orange dot - a repeater was heard but the ping was not observed.</li>
<li>Red dot - a ping was lost.</li>
</ul>
</li>
<li>Coverage tiles hold stats for the last 15 "groupings" of pings.</li>
<li style="list-style-type: none">
<ul class="pl-4 text-sm list-disc">
<li>Green box - the mesh was reachable in this region.</li>
<li>Orange box - the mesh was not reachable, but pings were heard in this region.</li>
<li>Red box - the mesh was not reachable in this region.</li>
</ul>
</li>
<li>Dashed line - links a green dot or box to its 1st hop repeater(s).</li>
<li>Blue dot - repeater with an advert in the past 1 day.</li>
<li>Light gray dot - repeater with an advert in the past 5 days.</li>
<li>Dark gray dot - repeater without an advert in the past 5 days.</li>
</ul>
</div>
</div>
<h2 class="mb-2 text-xl text-slate-100">How it works</h2>
<div class="mb-2 pl-4 text-base">
You send your location to #wardrive in the format "lat.xxxx lon.yyyy".
If your location is received, a new point is added to the map indicating
you can reach the mesh at that spot. If you want to also log places where you
can't reach the mesh, there's a helpful web app you can run on your phone to
automate the process. To be considered reachable, your message repeats have to
be observed by one of the following MQTT observers.
<ul class="pl-4 text-sm list-disc">
<li>Discovery MQTT [33]</li>
<li>N7JMV-NEW-RP [53]</li>
<li>N7JMV/WA7LAW-EVERETT-RP [e0]</li>
<li>Powerline Trail [75]</li>
<li>PugetMesh Haystack [86]</li>
<li>Red Repeater [34]</li>
<li>W7ITL-PTDefiance-IKOKA [e8]</li>
<li>WW7STR/PugetMesh Cougar [7e]</li>
<li>Woodward Repeater [0d]</li>
<li>Yaletown Repeater [56]</li>
<li>YVR//Seafair [bf]</li>
</ul>
</div>
<div class="mb-2 pl-4 text-base">
WA7JNJ Radio made a nice
<a class="underline text-sky-300" href="https://www.youtube.com/watch?v=NhpzdhJeT2w" target="_blank">video
overview</a>
of the project and how to get started.
</div>
<h2 class="mb-2 text-xl text-slate-100">How you can contribute</h2>
<div class="mb-2 pl-4 text-base">
The easiest way to contribute is to use the
<a class="underline text-sky-300" target="_blank" href="/wardrive">Wardrive app</a>.
It allows you to connect to your companion radio and send ping messages
automatically. It also sends your ping location to the service so that
misses are also automatically logged. You can send single pings or enable
'auto mode' which will send a ping when you enter a coverage tile that hasn't
been updated recently. The app will also listen for a repeat and send the
repeater and radio stats to the service. This allows you to find repeaters
that aren't getting repeated by the larger mesh.
</div>
<h3 class="mb-2 pl-4 text-lg text-slate-100">Using the Wardrive app</h3>
<div class="mb-2 pl-4 text-base">
It mostly "just works", but there are few things to know when using the app.
<ul class="mb-2 pl-4 text-sm list-disc">
<li class="text-amber-300"><b>If you're using a mobile repeater (car-peater), use the "ignore id" function to exclude it from the path.
Otherwise coverage data will be inaccurate.</b>
<ul class="pl-4 text-sm list-disc">
<li>Radio statistics (SNR/RSSI) cannot be collected if you're using a mobile repeater.</li>
</ul>
</li>
<li>You must allow access to Bluetooth and Location in your browser.</li>
<li>Your companion radio must add the #wardrive channel. The app will help with that.</li>
<li>It does not work in Safari or most vendor-modded Android browsers.
<ul class="pl-4 text-sm list-disc">
<li>On Macos use Edge or Chrome.</li>
<li>On iOS, use the <a class="underline text-sky-300" target="_blank"
href="https://apps.apple.com/us/app/bluefy-web-ble-browser/id1492822055">Bluefy app</a>
</li>
<li>On Android use <a class="underline text-sky-300" target="_blank"
href="https://play.google.com/store/apps/details?id=com.microsoft.emmx">Edge</a>
or <a class="underline text-sky-300" target="_blank"
href="https://play.google.com/store/apps/details?id=com.android.chrome">Chrome</a>.
</li>
</ul>
</li>
<li>You have to disconnect from the MeshCore app in order to connect to your radio. BLE only allows one
connection.</li>
<li>If you're using auto mode, the web page must be in the foreground and the screen unlocked.
<ul class="pl-4 text-sm list-disc">
<li>It tries to keep the screen alive while running, but I've only tested on iOS.</li>
</ul>
</li>
<li>Auto mode checks every 10 seconds if you're in a coverage tile that needs an update and only sends a ping if
needed (hasn't already been pinged in the past day).</li>
<li>Don't spam the mesh or the service. The mesh is a shared resource -- be judicious.</li>
</ul>
<h3 class="mb-2 pl-4 text-lg text-slate-100">Passive Mode</h3>
<div class="mb-2 pl-4 text-base">
As long as your radio is connected, even when not actively pinging, the app will submit
passive samples for tiles using the RxLog. When your radio receives a group message the
app collects parts of the path and radio statistics and sends that to the service to build
out the passive map view. <b>This is disabled if you have an "ignored id" set. Mobile repeaters
mess up the data collection because SNR and RSSI values will be completely incorrect for the tile.</b>
</div>
</div>
<h2 class="mb-2 text-xl text-slate-100">Host an instance for your region?</h2>
<div class="pl-4 text-base mb-2">
If you want to set up an instance for your region you have two good options.
<ul class="pl-4 text-sm list-disc">
<li>Host your own Cloudflare version by following the
<a class="underline text-sky-300" href="https://github.com/kallanreed/mesh-map/blob/main/support/setup.md"
target="_blank">setup instructions</a>.
</li>
<li>Use the <a class="underline text-sky-300" href="https://github.com/nullrouten0/meshcore-coverage-map"
target="_blank">self-hosted fork from nullrouten0</a>.</li>
</ul>
</div>
<h2 class="mb-2 text-xl text-slate-100">Privacy</h2>
<div class="pl-4 text-base">
The only thing the service stores is the location you send to #wardrive and the id of the 1st hop repeater.
The web app sends your location to #wardrive and to the service. That's it. Logging on the web app is stored
locally. You will be sending your companion radio's name with your location to #wardrive which is a public channel.
<b>Optionally</b>, if you want to participate in the leaderboard, you can choose to send your radio name with pings.
</div>
</body>
</html>