## Lab 3: Meshtastic

### Part 0: Setup

To prepare for this lab, I have cloned the provided meshtastic firmware repo, and removed the ESP32 feather from my board

![1.png](./1.png)


![2.jpg](./2.jpg)

Then, I continue to follow the instructions for downloading and building the firmware using Visual Studio Code and the PlatformIO Plugin

![3.png](./3.png)


![4.png](./4.png)


![5.png](./5.png)


The firmware building was successfull. Then end result is a `uf2` file which I can flash onto the RP2040 (after starting it in boot mode)


![6.png](./6.png)


At this point, things looks good. I am able to use the `meshtastic` python application to get info from the RP2040


![7.png](./7.png)


I then set the region to `US` as well as my owner and node name


![8.png](./8.png)

At this point, I am having a bit of trouble exactly understanding how to join the `iotsec` private channel. I have the channel name, but likely I need the channel pre-share key. To attempt to find this, I base64 decode the path of the share link provided by the assignment

![12.png](./12.png)

This seems to provide the channel name and possibly a key, but with some unprintable characters. 

Going forward, I am going to try instead to interact with the [meshtastic web client](https://client.meshtastic.org). The assignment did not suggest what client to use, so I initially chose the python CLI because it avoids using web technologies. This fits the principle of interacting with the edge of a meshtastic node in an enviornment where the internet would be otherwise unavailable. However, now that I have a bit of CLI experience here I feel better about switching to an easier GUI approach.

On the meshtastic web client with chrome, I connect my device

![11.png](./11.png)

Then, I join the `iotsec` channel

![13.png](./13.png)

Now, I send a message to the `iotsec` channel which is acknowledged

![9.png](./9.png)

Finally, I send a private message directly to curiouscoyote which is also acknowledged

![10.png](./10.png)

This concludes the objectives of the lab. I intend to keep my node running indefinitly, and hack around with it more in the future
