Gosh, I sure wish that one had come with a smiley of some sort… But given that it didn’t, let me walk through how I do this:
Prio 0 : The day job, which keeps peanut butter on the table. 8 hrs/day, five days - 40 hrs
Prio 1 : Paying contracting/consulting gigs, up to 10 hrs/week, done under Microsoft’s moonlighting policy
Prio 2 : Verdant, a highly variable 10 hrs/week, or more if there’s no active paying contract gig, but I try to make sure I get in as much of this as I can
Prio 3 : Open source software efforts, done out of a love for the technology and a love of understanding or creating things. A way of cleansing my palette when the must-do stuff gets me down and a way of expressing more free-form creativity.
Now that adds up to a heck of a lot of hours, but something you probably didn’t know is that I am a person with some serious mobility challenges and I don’t spend a lot of time out of my chair, so I work a six day week and I code. A lot.
What that all means is that the open-source stuff kind of gets done when I can get to it and in the order that I feel inspired to do it. It’s a form or recreation for me. That probably means I should never try to predict when something is going to get done, because in this Pri 3 category, I am demonstrably bad at that and pretty much miss every deadline. But it should be clear why that is.
So yes, this means that while I have worked on Scratch display support, the first version gave disappointing performance (it interfered too much with the scratch frame rate), so I didn’t release it and I have not finished the second approach yet. But I am knocking out some smaller efforts that I also promised to folks. The display support will come, but only as the Prio 0, 1 and 2 tasks allow, and in a way and time I am comfortable with.
I’m thankful for your interest and your question. I know you are eager for this drop, and I love that passion. This whole missive is just so that everyone understands where these freebie open-source efforts fit into my life and why they are treated differently from the other efforts with hard deadlines, and how consequently their delivery may be unpredictable or unsatisfying.
And while I haven’t met in person, and only briefly chatted over anything more real time than this forum, I have to applaud your stamina and drive and achievement. It’s great to see someone put so much into the community so quickly, and I’m glad Justin roped you into stuff when he did.
Yes, I will do a proper update shortly on the Verdant forum. By way of a quick update here, I took a design reset during the last sprint to change from Azure table storage as the default store for user authentication (authn) and authorization (authz) and changed to Azure DocumentDB (which is kind of but not entirely like MongoDB). This greatly simplified a lot of code and will make a lot of what remains simpler to develop. DocumentDB is now the primary back-end data store for everything except the actual data streams.
The other big developments have been a move of all service ‘secrets’ into Azure key vaults; the integration of a GIT back end for device configurations; the creation of an experimental IFU mechanism for Win10 IoT Core; and the creation of a dashboard app similar to the Scratch gateway or IoT Core Dashboard to facilitate onboarding of devices. Once onboarded, devices are managed completely from the web.
The GIT back end means that users will be able to use version-control on their device configurations, complete with roll-back and branching. Verdant is meant to scale and this is a key feature and differentiator.
There are two sprints left around the UI for the site/device/image management (2w) and config management (2w) before I can open it up for everyone to play with. It does support devices now, but without the UI, one has to directly frob back-end data structures, which of course isn’t workable.
We also now have two commercial early adopters (one in Agriculture, and one in Transport Logistics) who are committed to working with us to develop and refine the service.
For users, in storage tables, you need several tables to index login-to-user, email-to-user, roles, claims, etc. I seem to recall that there were seven or more tables in total. WIth documentDb, you can embed the lists of roles and claims right into a single document, and you can use the more advanced SQL queries available in docdb to find user records by id, login or email.
Likewise, things like mailing address and so on can all be in the same document with the user record. The two secrets to effective use of docDb are:
[ul]Denormalization of your schema (the exact opposite of good relational db design). Any bounded-size child data structures should be in the same document as the parent. Child structures that grow without bound should be in separate documents[/ul][ul]And, storing multiple document types in a single collection (docDb is expensive compared to storage tables, but the expense is per-collection, so store all your documents in a single collection, and only scale to more collections for capacity or locality).[/ul]
fwiw, the line count in the I*Store classes all went down by half because I no longer needed multiple table to act as indices
@ mcalsyn - This is looking really good, I started playing with an ESP-01 module a few days back with your previous release, and I just had something working when the latest and greatest came out!
Can you let me know the version of the firmware you are running on your ESP8266?
Mine currently has this version:
Sent command : AT+GMR
Received : AT version:0.50.0.0(Sep 18 2015 20:55:38)
Received : SDK version:1.4.0
Received : compile time:Sep 18 2015 21:46:52
Received : OK
which amongst others doesn’t like the AT+CWSAP? command:
Sent command : AT+CWSAP?
Received : ERROR
If I can reflash it with the same version firmware you are testing against it should help.
It appears that in newer firmware, CWSAP has been changed to CWSAP_CUR and CWSAP_DEF along with many other commands. If I understand correctly _CURR refers to the currently effective state and _DEF refers to the default state stored in flash. _DEF values get loaded upon reboot or startup.
Links to the SDKs are here on the forum http://bbs.espressif.com/viewforum.php?f=46 and it looks like the latest is 1.5.0, so mine is running the previous release. However I’ll try dropping it back to the 1.0.1(b) you are using and see how that goes.
I bought a few of the ESP-01 and ESP-03 modules to play around with, to see whether they would be usable as an alternative to the Redpine module on a new board design. However the ESP-12 or ESP-12-E look like a better choice for the final product as they appear to have FCC approval. http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family