High School Robotics Course using the Particle.io Mesh Devices Blog

After much frustration things are finally looking up.

Check out the topic Local Build Argon using po-util with OpenThread

1 Like

Also today got po-util kind of working on Windows using Bash on Windows WSL Windows Subsystem for Linux

1 Like

Started a couple of more threads:

So on Monday, Feb 4th, 2019 I will need to start my 4th Semester teaching High School Robotics, sadly without using any Particle Mesh devices. This is not without effort on my part, I have spent an intensive month trying to connect Mesh devices to an Openthread network, also having wasted several hundred school dollars on 15 Argons and 15 Xenons and $200 of my own funds on nrf52840 USB Dongles (Can’t use Pro-D funds for hardware :frowning_face: ).

All because, when it was first introduced, I thought the Particle Mesh would solve some daily random instability my Photons experience in a busy school wifi environment. I thought the Mesh connection redundancy would allow the wifi strong devices to support the wifi weak devices.

I am disappointed with Particles’ lack-luster interest in connecting their devices to a standard OpenThread network, as well as their non-response on setting up an education plan for when the Mesh is finally working. Presently my 15 Argon mesh would cost $200 per month which turns out to $2000.00 per school year so that I can teach students about the Particle devices instead of teaching about Arduinos!

Charging $2000.00 per school year to an education facility is a complete lack of understanding of education funding and a disgusting cash-grab by Particle. Note: Cloud9 charges me $1.00 per month for an education account and most other sites are completely free. If traffic is a concern I could probably setup my own cloud version.

This situation is not all without some positives:

  1. I learnt about po-util.com which is very good for programming any of the Particle devices.
  2. I learnt how to make true openthread networks, using the Border-Router, the Client and wpantund which runs wpanctl
  3. I can use openthread software to build and flash the CTL or NCP firmware to nrf52840 USB Dongles
  4. I learnt all about secured OpenThread devices and how important they are for network security but how difficult they are to program using nrfutil
  5. I learnt about “nrf-Connect for Desktop” and how good it is for flashing code to the USB Dongles
  6. I have done some great Argon Hacking using the extern C function that I am not completely ready to share yet.
  7. I have done some preliminary Particle-Openthread networking, but it needs work.
  8. I learnt that Particle is using there own experimental cloud version of OpenThread, instead of using a Border-Router for Thread Commissioning and the Mesh Internet Gateway.
  9. I can stop carrying 3 laptops home each day, setting up Thread networks at both home and school.
  10. I learnt that OpenThread is not really that hard to work with, it is just really confusing to get started as old examples don’t help with the new products. It could use a few more example webpages and it’s own community not just the openthread-users google group
  11. I made this really ugly, but useful OpenThread Installation Webpage
  12. I get to start exercising and not waking up at 5 am with solutions to this issue :smiley:
  13. I also get to use the amazing Photon again :smiley:
  14. I don’t have to do any prep, as my course is online here, I just add a bit about electric circuit components, the physics of current and voltage and lots of connecting circuits together. The basic course is: students draw circuits including connections to the Photon and then they make it work and take a video of it working, then repeat.
  15. It was kind of fun to have something really hard to work on.

Once again thanks to the Particle Community for all their positive support and useful suggestions. I don’t give up well, but I have a course to teach and need to put this aside for a bit.

4 Likes

Sorry to hear you won't be able to teach the new class with Mesh, hopefully you'll be able to by the time next semester comes around.

Wanted to chime in on some points, to give my $0.02.

I don't think it's a lack of interest, but rather one of priorities. I can understand they choose to make their own setup work well before they attempt to work on compatibility with other systems. At the moment there are a lot of basic functionalities that could be added that would serve more people better than compatibility with non-widespread OpenThread. You're the only one I know of that makes it a priority to get that working whereas there are a bunch more people in dire need of sleep modes and Bluetooth for example. I'm not saying OpenThread compatibility is a bad thing, but there's only so much that can be done at once.

I know pricing is a hot topic, but I haven't been able to find where you got the $200/month/15 Argon from, would you mind pointing me towards those resources?
Most of the 'special' s pricing schemes fall under a "contact us" option, where possibilities can be discussed with Particle directly. Furthermore there's the Particle for Good program to which you can apply: Nonprofits - Particle for Good | Particle

That might be part of where the misunderstandings stem from. To summarize in simple terms:"If you're willing to set up your own server to handle this, then why haven't you already?". Part of the reason why not will most likely lie in the complexity of researching, designing, building, maintaining, upgrading, hosting, and securing of a setup like that. And that's just the cloud side of things.
As you've noticed, setting up an OpenThread network in and of itself isn't a walk in the park either. Hauling three laptops, a variety of dongles, programmers and whatnot around doesn't sound all too easy, especially is you want to use that as a teaching tool.

That's also where Particle's value comes in: they make it easy to do. You can program a OpenThread Meshed endnode from anywhere in the world from your browser. I don't see that happening so easily with a DIY setup. Not saying it can't be done, but if you take into account the time/effort required, you'll soon soar over that budget. I'm not sure how much you evaluate your time to be worth, but "an intensive month" worth of time, along with the required hardware and other resources needed will soon approximate what it would've costed to go with Particle entirely.

No criticism in general, just trying to put into perspective what it is Particle offers. That the prices are up for debate is fair enough as well, as they've changed in the past too, after review.
Though the above doesn't offer a resolution of any kind, I do hope it makes you consider their point of view as well (at least, that's my take on their point of view). In the end, Particle has to charge for their services if they are to make a living wage and want to be able to keep growing improving.

Like I mentioned above, hopefully the circumstances have improved by the time next semester comes around and you'll be able to make full use of Mesh in your curriculum.

3 Likes

@Moors7, could people who don't work for Particle stop replying in Particles' defense. I get it, you really like the Particle product, I do too. Particle has employees (who aren't involved with fixing the mesh issues) who are paid to deal with this kind of stuff, but they never reply.

I could have got the very confusing pricing page incorrect, but a few months back, it looked like each router was $9.99 USD per month. Which today is $13.13. CDN. Multiply by 15 Argons you get $196.95 CDN per month times that by 10 teaching months a year, I get $1969.50 CDN. I still don't know if you pay for Cloud and Mesh or if Mesh costs cover all the Cloud costs.

I have posted 100's of times on this forum, I have emailed Particle, you would think a Particle employee would reach out and perhaps talk to me one-on-one about my concerns.

Why do companies give free or cheap education pricing?

  1. Companies really like that Teachers can promote their product as free advertising while teaching a new generation to use their product.
  2. Companies try to reduce the negative publicity of charging schools regular prices.

Particle has never really shown much interest in what I do in the classroom so option #2 is my only choice.
.

.

Most of the Particle software is Open Source except for the Particle Cloud that controls everything. I am fairly sure I can't setup my own Particle Cloud, although if that would solve all education costs I would definitely work with someone from Particle on that solution.

.

.

Check out this link:
Is An End-Product Based On OpenThread Automatically Thread-Certified?

No. If a company uses OpenThread to build a product, they need to be a member of the Thread Group in order to gain the Intellectual Property (IP) rights to ship Thread products and to complete product certification, which ensures that products using Thread work together effortlessly and securely right out of the box.

As far as I can tell Particle has a licensing obligation to make their thread certified product work with OpenThread. I am not a lawyer, I can't even get the pricing correct so I may be wrong with this as well, but from an Advertising point of view

it sure looks like, on that blog, that the Particle devices work seamlessly with Google Nests OpenThread.

Yeh, who puts legal obligations as a priority. :grinning:

.

.

In Closing:

If Particle allowed us hobbyists to connect the devices to OpenThread, we might be able to help with some of their connections issues. We possibly could show Particle which problems are to do with the Mesh Hardware and which problems are to do with their Experimental Cloud Border Router. If hobbyists can get Particle devices working well on OpenThread using and purchasing the Particle Mesh hardware, why is that a problem?

Has anyone ever considered that I am trying to help Particle!

Please, don't reply unless you are a Particle employee. I need to plan for next semester which starts on Monday and I have already wasted much to much time.

2 Likes

I know you didn't want responses from non-employees, buuuut....

I find the pricing info a bit confusing, myself. But I think for your situation, you aren't planning to build "high-availability" networks, you just want students to have 1 Argon + 1 Xenon, each as their own network, right? In that situation, your first 10 networks are free, so you only need to worry about the other 5 networks, which are only US$2.99 each, so about US$15/month total, or about US$180/year (or about CA$236). That's still a lot more than "free" but far from from $2000.

Keep in mind that these are "Community" Forums. I always appreciate when official Particle employees respond to questions here, but I don't generally expect them to poke into every forum thread, no matter how much attention it's getting. If I were you, I would probably use the official support request form, limiting my query to one specific topic, like asking if there was any chance of getting an educator discount of some sort. If I didn't get a response after a few days, I might send a private direct message to a Particle employee here in the forums, asking if there was a better way to reach someone who could answer your questions.

Lastly, I don't know what Particle's future plans are regarding interoperability with general OpenThread meshes. It doesn't seem like it would fit in with their current business model for Mesh + Particle Cloud. But perhaps they might come out with an alternative firmware that lets us use OpenThread, but doesn't include Particle Cloud functionality? Again, don't know, just theorizing a possibility. But it's still early days in their development of the Mesh features, so I think we'll just have to wait and see what happens.

6 Likes

Nooo. The micro networks are worse than just using a Photon. Now you have 2 to 10 devices using one wifi gateway. One of the strengths of a mesh network is multiple wifi gateways supporting each other. If one shuts down the others support it. A mesh network wants several wifi points. The micro networks are not useful to me.

1 Like

Okay, I misunderstood your student use-case, then. Sorry about that.

2 Likes

Hey there @rocksetta – adding the "Particle employee" perspective to the mix here. Before I get started, a couple notes on community discourse that apply here as well as every other thread on our community:

FIrstly,
As @dougal pointed out, these are community forums. If this were a blog written on your own web properties, you would have an ability to control who responds to your public posts. If you want to have a private conversation with someone from the team, tagging us (using the @ symbol, then our community handle), is the best way to get our attention.

Although we can't be in every thread, there are plenty of us at Particle whose job it is to listen and support our developer customers. Not sure who to tag? Consider

Secondly,
The first rule of etiquette in these forums that applies to every single member is the following:

Several posts in this thread are flirting with that line. To everyone – a quick reminder that there is no excuse for rudeness here. Period.

Thirdly,

Since we've launched Mesh, I have certainly noticed your increased engagement with the product and with the forums. Reading your posts, it sounds like there you had some specific educational use cases in mind for Mesh that you're struggling to realize with the current state of the product and pricing.

Thank you for your feedback and participation – our goal is help our customers be successful with our products, and the best way for us to do so is to learn directly from your experiences. As others have mentioned, we have a couple of programs that cater to educators using Particle in the classroom, including our Particle for Good program as well as a non-public Educator program.

I'll send you a PM to find a time where we can chat about your experience with Mesh, your goals as an educator, and the ways that Particle can (as well as cannot) commit to addressing your areas of constructive feedback.


Lastly, to clarify and address a legal issue that you raised,

Particle is a member of the Thread Group in order to gain IP rights to ship products built on Thread. Particle leverages OpenThread, an open source implementation of the Thread standard, to power Particle Mesh, the mesh networking solution for IoT products built on Particle.

The purpose of the Thread certification is to ensure that end products that implement Thread have done so correctly such that interoperability between products is possible, though it is by no means mandatory in order to receive IP rights.

For context, Thread was created by Nest as a mesh networking technology for the connected home, where interoperability between off-the-shelf products from a variety of hardware manufacturers might be valuable to the end consumer. In other words, certification it is there to protect end customers from crappy implementations of Thread (on products which bear the Thread logo) that prevent their smart home from functioning successfully.

12 Likes

Thanks @Will for the reply. The list below is very helpful.

As I find time in my new semester I will get in touch with the appropriate people, probably starting with you.

Once again thank you for making contact.
From Jeremy Ellis

6 Likes

Just an update:

I will try to have a chat with @will on Friday.

I have started my 5th semester teaching Robotics using the Particle.io Photon, and it has been horrible. Nothing to do with the Photon, it is wonderful, but to do with Wifi connectivity of our schools newly upgraded Enterprise 2 Wifi system. Last year, I would have poor connections about once a week, and then only for a few Photons. This year I have only 3 photons getting stable connections and the rest connecting for about 5 minutes only every 20 minutes. Needless to say it has been a horrible experience. Many calls to the techs, who can’t, don’t know or won’t, make the needed changes.

Solution: Use 2 laptops with my enterprise 2 teacher login, setup Ethernet to Wifi hotspots from the laptops and then my Photons are golden. Unfortunate it took several wasted teaching weeks to find that solution.

Anyone who has been following this thread probably knows that I am trying to connect Multiple Particle Mesh devices, with websockets for fast internet connections and Cell Phone Machine Learning using Tensorflowjs in the browser for environmental analysis and decision making. I will have to wait until next semester to use the mesh networks but as far as the Machine Learning goes I just generated my ~50th Teaching example at:

https://hpssjellis.github.io/beginner-tensorflowjs-examples-in-javascript/interpretability/50-interpret-grey.html

Back to the Mesh networks, I have been out of the loop for about 6 weeks.

  1. Has there been any update on the ability for developers to use multiple Argons in one network (High Availability Networks)?

  2. Has anyone been able to get a few Argon’s working with OpenThread?

I saw @RWB @overcode link at Circuit Python on Argon? for connecting the nrf52840-dongle to CircuitPython which is really cool, but I work with Javascript not Python, plus as @rickkas7 points out, this solution totally obliterates the Particle Cloud and all firmware etc.

I just want to use multiple Argons with OpenThread or a Particle solution without a monthly cost like I thought I was purchasing for my school an entire year ago.

I was able to get my photons working with WPA2 Enterprise (eduroam) at my university. I needed to use external antennas though.

1 Like

Nathan I conducted 2 tests with eduroam at UCL London and Imperial College London. Both failed. Both use Cisco APs and I suspect that if you were successful at using WPA2 Enterprise this is because you were on PEAP v0 and not PEAPv1. Cisco standard?

The lack of support for WPA2 Enterprise security except on what must be a very narrow set of hardware and RADIUS servers must be addressed by Particle soonest.

I’m not sure exactly. I just tried setting up WPA2 again and it worked successfully.

1 Like

Thanks for replying. Lucky man! Which Device OS are you using for this? I have a test AP setup per the eduroam specification and I get the following. It flashes green and then returns to flashing blue. I can log into this AP using my Windows 10 laptop but not the iMac?

The photon is running v1.0.1.

Here is the testing app I've been using by the way:

Thanks for the reply’s. As I said I have solved my problem with Laptop hotspots, but I agree the issue should be solved. I just tried 5 Photons with external antennaes with no improvement.

I will need to try your listed setups. I get AES but have not tried EAP type PEAP/MSCHAPV2. will try that.

I know Particle has some support for Enterprise since this code is available in the documents

at https://docs.particle.io/reference/device-os/firmware/photon/#wificredentials-class

// EXAMPLE - setting multiple root certificates
WiFiCredentials credentials;
credentials.setClientCertificate("-----BEGIN CERTIFICATE-----\r\n" \
                                 /* ... */ \
                                 "-----END CERTIFICATE-----\r\n"
                                 "-----BEGIN CERTIFICATE-----\r\n" \
                                 /* ... */ \
                                 "-----END CERTIFICATE-----\r\n\r\n"
                                );

but I havn’t asked my techs if they will generate some certificates for me. (Actually a little scared of asking the techs :smirk: as you can imagine I am probably not their favorite teacher.)

1 Like

The AP system log shows the device associated and then disassociated after 7 seconds - tries 3 times, then gives up. I have not had the explanation for this yet. Behaved the same way at 2 university sites.

Mar 13 16:27:25 kernel: e0:4f:43:36:96:1e had associated successfully
Mar 13 16:27:25 kernel: [WLAN] EAPOL process start.^M
Mar 13 16:27:32 kernel: e0:4f:43:36:96:1e had disassociated.
Mar 13 16:27:32 kernel: [del_web_portal_client], but hash_id:[15] is empty!
Mar 13 16:27:33 kernel: e0:4f:43:36:96:1e had associated successfully
Mar 13 16:27:33 kernel: [WLAN] EAPOL process start.^M
Mar 13 16:27:39 kernel: e0:4f:43:36:96:1e had disassociated.
Mar 13 16:27:39 kernel: [del_web_portal_client], but hash_id:[15] is empty!
Mar 13 16:27:40 kernel: e0:4f:43:36:96:1e had associated successfully
Mar 13 16:27:40 kernel: [WLAN] EAPOL process start.^M
Mar 13 16:27:47 kernel: e0:4f:43:36:96:1e had disassociated.
Mar 13 16:27:47 kernel: [del_web_portal_client], but hash_id:[15] is empty!

1 Like

By the way I use this little bit of code to see all 5 of the Photon SSIDS

I have commented out a few ways to set the WIFI. Since I set all 5 SSIDS the most important thing is how many SSIDs were stored.

// By Jeremy Ellis
// Shows the first 4 letters of which Wifi SSID's have been setup on your photon.
// Does not show passwords.
// Also shows the connected SSID with Quality and signal strenth percent

STARTUP(WiFi.selectAntenna(ANT_AUTO)); // continually switches at high speed between antennas
//STARTUP(WiFi.selectAntenna(ANT_INTERNAL)); // selects the CHIP antenna
//STARTUP(WiFi.selectAntenna(ANT_EXTERNAL)); // selects the u.FL antenna

// global variables
WiFiAccessPoint ap[5];
int found;  
    
void setup() {
    pinMode(D7, OUTPUT);
    RGB.brightness(255);
    
    //  WiFi.clearCredentials();
    // I set up all possible SSIDS in one go, 5 for the Photon.
    //  WiFi.setCredentials("mySSID", "myPassword");   // Wifi needs to be active, this works best    
    // WiFi.setCredentials("mySSID", "myPassword", WPA2, WLAN_CIPHER_AES_TKIP);  // This works for my cell phone hotspot
    // WiFi.setCredentials("mySSID", "myPassword", WPA2, WLAN_CIPHER_AES);    // This does not seem to help
    
    
    found = WiFi.getCredentials(ap, 5);

}
   

void loop() {
    digitalWrite(D7, 1);
    WiFiSignal sig = WiFi.RSSI(); 
    Particle.publish( "*: " + String(WiFi.SSID()).remove(9)+", Q:"+String(sig.getQuality(),0)+ "%, S:"+String(sig.getStrength(),0)+"%","F:" + String(found) +", "+ String(ap[0].ssid).remove(4)+", "+String(ap[1].ssid).remove(4)+", "+String(ap[2].ssid).remove(4)+", "+String(ap[3].ssid).remove(4)+", "+String(ap[4].ssid).remove(4), 60, PRIVATE);
    delay(200);
    digitalWrite(D7, 0);
    delay(30000);  // wait 30 seconds
    
}

So it shows the active SSID with Quality and Strength. Then shows how many SSIDs are stored and the first 4 characters of the SSID names. In order, so the first one will be removed if another SSID is entered.