# CircuitPython Weekly Meeting for April 22, 2024


Video is available [on YouTube](https://youtu.be/TmFugF2c4mk).


Join here for the chat all week: http://adafru.it/discord.


The CircuitPython Weekly Meeting normally is held at 2pm US ET/11am PT on Mondays. Check the #circuitpython channel on Discord for notices of change in time and links to past meetings. Meeting times are also available in [iCal format](https://raw.githubusercontent.com/adafruit/adafruit-circuitpython-weekly-meeting/master/meeting.ical) for use with standard calendar applications and can also be viewed [in your browser](https://open-web-calendar.hosted.quelltext.eu/calendar.html?url=https%3A%2F%2Fraw.githubusercontent.com%2Fadafruit%2Fadafruit-circuitpython-weekly-meeting%2Fmain%2Fmeeting.ical&title=CircuitPython%20Meeting%20Schedule&tab=agenda&tabs=month&tabs=agenda).


If you want to be able to participate in the meeting by speaking, you will need to be added to the @circuitpythonistas role on Discord. Please ask any of the moderators or admins to add you if you’d like to join.


CircuitPython development is sponsored by Adafruit. Please support them by purchasing hardware from https://adafruit.com.


Reminders: Podcast available on most services. Let us know if we’re missing some. The canonical URL for the podcast version is https://adafruit-podcasts.s3.amazonaws.com/circuitpython_weekly_meeting/audio-podcast.xml which you may be able to enter directly into compatible podcast apps.
## 2:13 Community News
### 2:48 Using ESP-NOW on CircuitPython 9.0.3
[ESP-NOW](https://docs.espressif.com/projects/esp-idf/en/release-v4.4/esp32/api-reference/network/esp_now.html) is a connectionless WiFi communication protocol defined by Espressif. In ESP-NOW, application data is encapsulated in a vendor-specific action frame and then transmitted from one WiFi device to another without connection.
User coXXect shows the CircuitPython [`espnow` module](https://docs.circuitpython.org/en/latest/shared-bindings/espnow/index.html) providing an interface to the ESP-NOW protocol - [coXXect](https://coxxect.blogspot.com/2024/04/esp-now-on-circuitpython-903-tested-on.html), [YouTube](https://www.youtube.com/watch?v=fN0uVJamCgs) and [module documentation](https://docs.circuitpython.org/en/latest/shared-bindings/espnow/index.html).
### CircuitPython 9.0.4 and 9.1.0-beta.1 Released
CircuitPython 9.0.4 is the latest bugfix release of CircuitPython, and is a new stable release - [Adafruit Blog](https://blog.adafruit.com/2024/04/16/circuitpython-9-0-4-released/) and [GitHub release page](https://github.com/adafruit/circuitpython/releases/tag/9.0.4).
CircuitPython 9.1.0-beta.1 is the latest beta for CircuitPython 9.1.0, and is a new unstable release. This release has known bugs that will be addressed before 9.1.0 final - [Adafruit Blog](https://blog.adafruit.com/2024/04/18/circuitpython-9-1-0-beta-1-released/) and [GitHub release page](https://github.com/adafruit/circuitpython/releases/tag/9.1.0-beta.1).
### 4:16 CircuitPython Online IDE 2.0 Beta
 CircuitPython 9.0.4 Released 

The independently developed CircuitPython Online IDE 2.0 Beta is forthcoming! All issues from the 2.0 alpha have been addressed and the documentation is ready. Once the Quick Start video is completed, the transition to 2.0 Beta will occur and Version 1 will be retired - [X](https://twitter.com/River___Wang/status/1779276357521867187) and [IDE](https://urfdvw.github.io/circuitpython-online-ide-2/).


### 5:01 Newsletter Details
The Python on Microcontrollers Weekly Newsletter is a CircuitPython-community-run newsletter emailed every Monday. The complete archives are [here](https://www.adafruitdaily.com/category/circuitpython/). It highlights the latest Python on hardware related news from around the web including CircuitPython, Python and MicroPython developments. 
To contribute your own news or project, edit next week's draft [on GitHub](https://github.com/adafruit/circuitpython-weekly-newsletter/tree/gh-pages/_drafts) and [submit a pull request](https://help.github.com/articles/editing-files-in-your-repository/) with the changes. You may also or email cpnews@adafruit.com, or tag a post with #CircuitPython on Mastodon, Bluesky, or X (formerly known as Twitter),.
## 5:58 State of CircuitPython, Libraries and Blinka
**This report contains information from the previous seven days. Any changes (PRs merged, etc.) made today are not included in this report.**
### 6:26 Overall
* 22 pull requests merged
  * 14 authors - DJDevon3, Danct12, michaeldye, kevin-tritz, michalpokusa, FoamyGuy, BlitzCityDIY, bill88t, dhalbert, tkomde, Tekunalogy, SeanTheITGuy, RetiredWizard, andibing
  * 8 reviewers - caternuson, FoamyGuy, BlitzCityDIY, tannewt, brentru, dhalbert, jepler, ladyada
* 10 closed issues by 7 people, 11 opened by 11 people
### 7:05 Core
* 8 pull requests merged
  * 5 authors - SeanTheITGuy, RetiredWizard, bill88t, andibing, dhalbert
  * 3 reviewers - jepler, ladyada, dhalbert
* 22 open pull requests
  * https://github.com/adafruit/circuitpython/pull/6555 (Open 657 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7440 (Open 467 days)
  * https://github.com/adafruit/circuitpython/pull/7618 (Open 427 days)
  * https://github.com/adafruit/circuitpython/pull/7675 (Open 415 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7811 (Open 389 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8033 (Open 332 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8100 (Open 305 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8233 (Open 267 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8349 (Open 235 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8457 (Open 202 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8647 (Open 152 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8713 (Open 132 days)
  * https://github.com/adafruit/circuitpython/pull/8798 (Open 98 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8954 (Open 61 days)
  * https://github.com/adafruit/circuitpython/pull/8991 (Open 52 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/9009 (Open 47 days)
  * https://github.com/adafruit/circuitpython/pull/9023 (Open 44 days)
  * https://github.com/adafruit/circuitpython/pull/9094 (Open 26 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/9118 (Open 23 days)
  * https://github.com/adafruit/circuitpython/pull/9178 (Open 8 days)
  * https://github.com/adafruit/circuitpython/pull/9190 (Open 3 days)
  * https://github.com/adafruit/circuitpython/pull/9193 (Open 2 days)
* 4 closed issues by 3 people, 2 opened by 2 people
* 679 open issues
  * https://github.com/adafruit/circuitpython/issues
* 9 active milestones
 * 10.0.0: 2 open issues
 * 8.2.x: 0 open issues
 * 9.0.x: 0 open issues
 * 9.1.0: 0 open issues
 * 9.x.x: 31 open issues
 * Libraries: 22 open issues
 * Long term: 602 open issues
 * Support: 9 open issues
 * Third-party: 14 open issues
 * 1 issues not assigned a milestone
### 9:14 Libraries
* 14 pull requests merged
  * 10 authors - DJDevon3, Danct12, michaeldye, kevin-tritz, michalpokusa, FoamyGuy, BlitzCityDIY, dhalbert, tkomde, Tekunalogy
  * 8 reviewers - caternuson, FoamyGuy, BlitzCityDIY, tannewt, brentru, dhalbert, jepler, ladyada
  * Merged pull requests:
    * https://github.com/adafruit/Adafruit_CircuitPython_BNO08x/pull/48 (Days open: 150)
    * https://github.com/adafruit/Adafruit_CircuitPython_TemplateEngine/pull/4 (Days open: 35)
    * https://github.com/adafruit/Adafruit_CircuitPython_RSA/pull/42 (Days open: 30)
    * https://github.com/adafruit/Adafruit_CircuitPython_Requests/pull/172 (Days open: 27)
    * https://github.com/adafruit/Adafruit_CircuitPython_Wiznet5k/pull/156 (Days open: 21)
    * https://github.com/adafruit/Adafruit_CircuitPython_HTTPServer/pull/94 (Days open: 12)
    * https://github.com/adafruit/Adafruit_CircuitPython_IRRemote/pull/68 (Days open: 4)
    * https://github.com/adafruit/Adafruit_CircuitPython_ADG72x/pull/1 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_BLE/pull/195 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Thermistor/pull/22 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_AVRprog/pull/35 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_IRRemote/pull/69 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_RFM69/pull/53 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Bundle/pull/458 (Days open: 1)
  * 70 open pull requests (Oldest: 613, Newest: 1)
* 5 closed issues by 4 people, 4 opened by 4 people
  * 741 open issues
  * 6 good first issues
* https://circuitpython.org/contributing


#### 13:03 Library PyPI Weekly Download Stats
* **Total Library Stats**
  * 161153 PyPI downloads over 326 libraries
* **Top 10 Libraries by PyPI Downloads**
  * Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 8848
  * Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 8145
  * Adafruit CircuitPython ConnectionManager (adafruit-circuitpython-connectionmanager): 6656
  * Adafruit CircuitPython Register (adafruit-circuitpython-register): 2373
  * Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 1334
  * Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1325
  * Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1298
  * Adafruit CircuitPython ServoKit (adafruit-circuitpython-servokit): 1296
  * Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 1179
  * Adafruit CircuitPython HTTPServer (adafruit-circuitpython-httpserver): 1176


#### Library updates in the last seven days:
* **New Libraries**
  * [adafruit/Adafruit_CircuitPython_ADG72x](https://github.com/adafruit/Adafruit_CircuitPython_ADG72x)
* **Updated Libraries**
  * [adafruit/Adafruit_CircuitPython_RSA](https://github.com/adafruit/Adafruit_CircuitPython_RSA)
  * [adafruit/Adafruit_CircuitPython_TemplateEngine](https://github.com/adafruit/Adafruit_CircuitPython_TemplateEngine)
### 13:35 Blinka
* 0 pull requests merged
  * 0 authors - 
  * 0 reviewers - 
* 5 open pull requests
  * https://github.com/adafruit/Adafruit_Blinka_bleio/pull/40 (Open 927 days)
  * https://github.com/adafruit/Adafruit_Blinka/pull/749 (Open 138 days)
  * https://github.com/adafruit/Adafruit_Blinka/pull/766 (Open 115 days) (draft)
  * https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/335 (Open 115 days) (draft)
  * https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/348 (Open 4 days)
* 1 closed issues by 1 people, 5 opened by 5 people
* 91 open issues
  * https://github.com/adafruit/Adafruit_Blinka/issues
* PyPI downloads in the last week: 12822
* Piwheels Downloads in the last month: 10219
Number of supported boards: 133


## 14:22 Hug reports


14:45 @danh (hosting)
* @FoamyGuy, @Justin, @anecdata for work on adafruit_requests and its examples.
* @bill88t for finding and cleaning up various CircuitPython annoyances.
* @ATMakersBill for inspiring the creation of the TRRS Trinkey, for assistive technology uses.


16:04 @CGrover (text only)
* @jepler for providing inspiration for the CG-35 calculator project as well as their stellar work on udecimal and utrig.


16:25 DJDevon3 (text only)
* @Justin for changing all 25 of the adafruit_requests wifi examples to use with statements. 


16:50 @foamyguy
* DJDevon3 for working on requests examples especially when pylint and other checks add difficulty to the process
* @Justin for updating many requests examples to use the with context manager. Also another one for sharing some improvements to a PR I submitted adding support for the files argument to requests.post for uploading files
* @bear, @Tyeth, @fede2 all for offering help and insight on things I was working on during live streams


17:38 @jepler (missing meeting)
* Group hug


17:45 @jerryn
* michaeldye, ladyada and danh for the quick PR,  response and release to add an alternate Chip ID to the rfm69 library.


18:20 @makermelissa
* Group Hug


18:32 @tannewt
* Moto timo for meeting up with me last week.
* Renode team for helping me with getting started.
## 18:53 Status Updates


19:32 @danh (hosting)
* Released CircuitPython 9.0.4 and 9.1.0-beta.1 last week.
* Fixing 9.x.x bugs.


20:25 @CGrover (text only)
* Wrapped up the capacitive touch version of the CG-35 retro RPN calculator project and posted the details on Adafruit Playground (https://adafruit-playground.com/u/CGrover/pages/cg-35-a-retro-rpn-calculator). Replaced the original Feather M4 with an ESP32-S3 to accommodate memory requirements and the newest version of CircuitPython. Still scheming to use the wireless capability of the ESP32-S3 for something extra like time and temperature feeds from AdafruitIO. Hate to have it just sitting there longing to communicate with its computational friends.
* Been working on house remodeling the past few weeks and are beginning to see a light at the end of the tunnel. It’s been fun watching the contractors (and working with them when they allow), learning from their techniques and use of tools. They’ve been very patient with me and my astute observations. Of course I saved a few tasks for myself such as replacing gutter downspouts, upgrading external electrical outlet boxes, and insulating/enclosing HVAC piping.


21:38 DJDevon3 (text only)
* Most of my week has been centered around fixing my irrigation system and digging holes. First time I’ve ever wired up a 220V device myself. I’m still alive so it was a success. Diagnosing electrical panel, relay, and well pump issues has been fun to learn. The Rachio irrigation controller I’m installing next week has a REST API and integration with HomeAssistant and other smart devices. As most of you know I love playing with API’s so I can’t wait to get started on that. Modern irrigation systems are all low voltage 24VAC based so there is little danger in experimenting with new PCB designs. I have a lot of ideas on how to make an irrigation diagnostic system even smarter and might design a PCB for an open source circuit python powered irrigation controller in the future. 


22:35 @foamyguy
* Library PR Reviews and testing, mostly in Requests library, but a few others sprinkled in as well
* Submitted PR to add files argument to requests.post for uploading files 
* Started exploring idea of building circuitpython inside of docker containers. Managed to successfully build atmel and espressif port builds so far and learned how to copy them out of the container so they can be flashed to a device. I’m still very new to docker so I did this mostly as a learning / practice exercise, but I could see it being a handy way to get a build environment spun up quickly and easily without having to micromanage installing all of the necessary tools and requirements. I didn’t think to search docker hub until after I’d done this, but did eventually notice prior work from @jepler, @fede2, and @travisconsulting so hug report to them for publishing those images.


24:15 @jepler (missing meeting)
* Still need to check out some problem reports on the “ssl-anything” PR
* Investigating whether we can use esp-adf to add mp3 decoding for espressif micros in circuitpython
   * It uses RTOS tasks, but our filesystem code & audio output code are not prepared to be called from task context, so this complicates things
* Personal stuff: I think I’ve almost got a gotek floppy emulator talking to my xerox 820, which is the 3rd needed peripheral needed to make the main PCB into a working CP/M computer (keyboard & display are the other two)


25:05 @jerryn
* Trying to understand the performance impact of using asyncio in my updated RFM library (RFM69 and RFM9x).
   * Mostly this involves me learning how to use asyncio properly.
   * Creating several examples - maybe too many
   * Need to do some detailed verification of the “tweakable” parameters for the libraries.
      * Especially the spreading factor for the rfm9x – it has often been a source of issues.
   * Hope to have a version ready for release  “real soon now”
* Curious if there is anyone currently working on LoRaWAN support in CircuitPython? It has not been available for quite awhile since the TTN migration to V3.
* Stacked a cord of green hardwood into my woodshed for next winter. A true sign of Spring.


27:47 @Justin
* Getting back on the band-wagon. Mainly working through some Requests and ConnectionManager updates to clean things up from recent discussions (with statements, ssl on wiznet5k, etc) 
* Took some work I had stashed on multipart request support and merged it with work from @foamyguy


28:35 @makermelissa
* Continuing on going through guide feedback and updating some of the older raspberry pi related guides.
* Tested out a possible solution for getting the voice bonnet working on the Pi 5, but no luck.


29:00 @tannewt
* Went to Zephyr Dev Summit last week. Met lots of folks.
* Started renode port for running under Renode emulator.
* Getting back into ESP BLE work this week. See how far I can get the next two weeks before I’m out a week for a road trip with my dad.
## 34:00 In The Weeds


@Justin
* In playing with the wiznet5k and remembering @anecdata crazy 3x ethernet setup, I realized that the way “adafruit_wiznet5k.adafruit_wiznet5k_socket” works it doesn’t really work, since the interface (the wiznet5k radio) is set globally. I feel on one level, this is an expert level thing to do, and you could simply create multiple copies of the mpy/py file and it would work. Or… we could create an actual “SocketPool” class that you could create multiple of (and thus the interface is local to that object). If this was acceptable, I would also do this for ESP32SPI to make them the same.
   * @danh: I think if SocketPool was a singleton that would be OK, if it’s difficult to allow multiple separate socketpools. I.e., the constructor would return a singleton. People mostly only use one socketpool anyway
      * @Justin: this is the issue, it can’t be a singleton based on the fact the pool and radio need to be linked together. We could make sure that for the same radio, it returns the same object…
   * @anecdata (text only): It would be nice to allow multiple ethernets or ESP32SPIs, though probably is a rare usage. It does work to make copies of the module as @Justin indicates. I don’t see that we could have multiple native wifi without serious re-development. I don’t know if CPython has a mechanism for creating sockets linked to different physical interfaces (ethernet, wifi, etc). So we’re in kind of a unique situation to begin with. Multiple socket pools, one per interface, works with no problem in CircuitPython (there are good use cases for this).
* Added an [attempt](https://github.com/adafruit/Adafruit_CircuitPython_Wiznet5k/pull/158) to do this




41:05 @foamyguy


Making “Good First Issues” for displayio based examples for sensor driver libraries. 


* Is it okay if I start making those? 
* If so, is there any input into content of the issue post? 
* Is there a list of libraries by type somewhere? I know the bundle is broken into drivers and helpers, but a further broken down list of all accelerometers / gyros,  temperature sensors, or range finders etc.. could make it possible to automate some portion of the issue creation.
## 49:49 Wrap-Up
