Setup mesh network without Android app

I just got an Argon board (my first particle board in general really), setup went fine using the Particle Android app but I don’t want to use the Particle cloud infrastructure as I have my own Google Cloud Platform account I wish to use that I already have some of my home automation stuff on.

Looking through the documentation and some questions on here I gather that using

Particle.xxx

Connects you to the Particle cloud for device communication and using

Mesh.xxx

communication stays in the mesh network (preferred) and does not go through Particle cloud.

So I have a few questions on how to setup my own network not using the Particle android app.

  1. How can I replicate the setup of the particle app in my own android app (ie. connecting the device to wifi through the app), doing everything through the app was super convenient with not having to go and hard code the wifi credentials on every board when I expand.

  2. What does scanning the 2D barcode do? I know the barcode has information about the boards and Nest uses it in the same way but how/what are they used for?

  3. Do OTA updates (updating your boards code) only work when using the particle cloud infrastructure?

It’s not possible to use a mesh network without as least initially connecting to the Particle cloud. It’s also not currently possible to set up a mesh network except by using the mobile apps. However, in the future it will be possible to set up a mesh network by USB.

However you are free to use the Particle cloud for OTA updates, but do all of your data transfers directly to an external service. It’s a little tricky do to this securely as there is no exposed TLS/SSL API, but there are 3rd-party libraries.

For Google cloud, in particular, there are two other options that may be worth considering:

  • Using the Google Cloud integration you can map Particle published events into Google Pub/Sub topics. This is particularly handy if you are using Google Cloud Functions. This is also advantageous when using cellular, as you can dramatically lower your data usage this way.
  • If you already have a server instance, you can subscribe to the Particle SSE stream directly from your Google cloud server to catch your published event stream.

The Mesh publish and subscribe are limited to your mesh network, and are based on UDP multicast. The data does not leave your network. You can catch these on your gateway (Argon) and send the data up to Google cloud using TCP.

If you are using the Argon only (not a mesh) you can set up the Wi-Fi by USB now, using the particle serial wifi command.

The data matrix code contains your device serial number and mobile secret. The values are also available by USB (particle identify).

1 Like

For Google Cloud Platform I use the IoT Core to send configuration changes through MQTT protocol. it basically changes colors of neopixel lights and the thing I like about IoT core is that the configuration is stored on google and sent every time it connects, I dont think I can achieve that with Pub/Sub. I currently have this working on a adafruit’s huzzah esp32 and was hoping to replace that with a particle board and using the mesh later on when I have more IoT items.

The thought was that the argon would be the gateway (talks to GCP directly) and sends messages to the other devices.

Is there support for anything other than google’s pub/sub or future support for IoT core? The main issue with IoT core is the requirement for Json Web Tokens which I get around my making a call to my app engine endpoint

This site has some information about the barcodes
https://wiki.makerdiary.com/nrf52840-mdk-usb-dongle/OTBR/

Thread Connect QR Codes are created with the following text string format:


v=1&&eui=4499f69d088dac4b&&cc=J01NU5
Where eui is the Joiner device's EUI64 value and cc is the Joiner Credential.
Use this text string with an online QR Code generator(such as unitag.io) to create a QR Code for scanning.

All fairly cryptic to me, but Particle must use a different QR code scanner because it does not have the normal 3 boxes

Yeah I figured out how works with authentication. The barcode has 2 sections, one is the serial number used for bluetooth pairing and the other is used for the secure communication between the app and the device. The particle app is quite difficult to follow to decipher how the app to device communication is all setup, it goes through so many classes and callback references.

Not a QR code at all, but rather a "data matrix". A random Google comparison.

2 Likes

Also, the data matrix contains the serial number (printed in text under the data matrix), a space, and the mobile secret. You need both to add the device to the network. The mobile secret is not printed anywhere, but is available by USB using particle identify.

2 Likes

Nice. Some QR code readers look like they can scan a datamatrix as well such as i-nigma . Looks like the datamatrix can print to a smaller area than the QR codes, probably why Particle uses it.

This site can generate them for you https://barcode.tec-it.com/en/DataMatrix

It looks like the Particle datamatrix is 15 alpha-numerics a space and another 15 alpha-numerics

AB123AB123AB123 AB123AB123AB123

whereas particle identify prints a 24 digit alpha-numeric which is mostly numbers.

a012345a012345a012345a012345

(Note the first 8 alpha-numerics seem similar on my devices)

I am looking for the Joiner Credential (cc), similar to what you would use to connect to an OpenThread mesh network. Something like:

v=1&&eui=4499f69d088dac4b&&cc=J01NU5

Where the cc=J01NU5 is the relevant information.

Is the Joiner Credential (cc) embedded in either of these sets of numbers on Particle Devices, or does Particle use a completely different identification system?

Come to think of it I might also want the eui number as well. any ideas?