2024 Spring Semester Work Log
2024 Spring Semester Week 3 Update
This Week’s Assignment
This week, we were asked to sketch our individual ideas about what our project will look like at the end of the semester. Attached below is my sketch of a front view (external and internal) approximating what our smart plug might look like and some features it might have.
This Week’s Progress
Website Development
- Created tutorial series for account setup, author profile creation, and work log editing.
- Debugged synced patterns issue, updated site components, changed configuration to work with newer versions of plugins and software.
- Improved permissions and account management tools for site administrators.
Next Week’s Goals
KeWee Energy Meters
- Make a demo web server / Wi-Fi AP on the new Arduino Nano ESP32 unit.
- Compare library options for interfacing with the Wi-Fi module.
- After selecting a library, research and get familiar with available functionality.
Next Week’s Concerns
KeWee Energy Meters
- Wi-Fi communication and web server should support encryption, but that hasn’t been the case with some content I’ve found thus far.
2024 Spring Semester Week 4 Update
This Week’s Progress
KeWee Energy Meters
- Completed all of last week’s goals:
- Demo web server / Wi-Fi AP on Nano ESP32
- Decided on and learned about new Wi-Fi Module Library: https://docs.espressif.com/projects/arduino-esp32/en/latest/api/wifi.html
Website Development
- End user support for issues with website / tutorial instructions / etc.
Next Week’s Goals
KeWee Energy Meters
- Map out what code can be re-used and what needs to be implemented with the new Nano ESP32.
- Attempt HTTPS communications (as the client, not yet sure about how to do so as the server on Arduino.)
- Research on-device encrypted storage options (or methods for encrypting data on Arduino).
Next Week’s Concerns
KeWee Energy Meters
- High security operations (and the computation power required) seems infeasible on Arduino / ESP hardware…
https://www.reddit.com/r/esp32/comments/17zq182/running_an_https_secure_webserver_on_an_esp32/
2024 Spring Semester Week 5 Update
This Week’s Assignment
This week, we were asked to create a diagram showing the various states our device could be in. Attached below is my diagram showing the various states the Arduino’s software can be in during normal operation and which states can transition to other states.
This Week’s Progress
KeWee Energy Meters
- Made Reimplementation Map.
- Verified HTTPS communications work following a tutorial: https://randomnerdtutorials.com/esp32-https-requests/
- Used without certificate validation, but the feature is explained well and will be important for self-hosted instances or a pre-baked server solution.
- On-Device Encryption & Storage Options:
- Plan is to use Preferences.h method (newer, replaces deprecated EEPROM methods on newer Flash storage Arduino and ESP hardware) to store encrypted data to Flash memory. Use Mbed-TLS libraries for actual encryption operations. Key generation method still undecided.
- https://mbed-tls.readthedocs.io/en/latest/kb/how-to/encrypt-with-aes-cbc/
- https://randomnerdtutorials.com/esp32-save-data-permanently-preferences/
- https://randomnerdtutorials.com/install-esp32-filesystem-uploader-arduino-ide/
Reimplementation Map
Next Week’s Goals
KeWee Energy Meters
- Begin working with HTTPS libraries to build the on-device server for configuration and management over LAN/Wi-Fi AP.
- Test out new Preferences.h method for persistent storage, replacing EEPROM and LittleFS methods used before.
- Devise and test a key generation strategy for encrypting data stored to Flash with Mbed-TLS/AES library.
2024 Spring Semester Week 6 Update
This Week’s Progress
KeWee Energy Meters
- Attempted Preferences.h configuration with bad results: soft-bricked board restarting before loading or storing any configuration.
- Made presentation slides for CDR next week.
- I was sick and missed most classes this week, so my goals from last week are my goals this next week as well.
Next Week’s Goals
KeWee Energy Meters
- Begin working with HTTPS libraries to build the on-device server for configuration and management over LAN/Wi-Fi AP.
- Test out new Preferences.h method for persistent storage, replacing EEPROM and LittleFS methods used before.
- Devise and test a key generation strategy for encrypting data stored to Flash with Mbed-TLS/AES library.
2024 Spring Semester Week 7 Update
This Week’s Assignment
This week, we were asked to upload an image demonstrating progress on our project. My work has been heavily research and code based, I’ve attached a screenshot of my now working Preferences.h experiment, but see the links below as well for more of what I was up to.
This Week’s Progress
KeWee Energy Meters
- After resolving several soft-bricking issues related to Preferences.h and various debugging tools, finally got a working demo of Preferences.h and am content to proceed with it in place of LittleFS and EEPROM libraries of the past.
See these links for more of what the debugging entailed:
https://support.arduino.cc/hc/en-us/articles/9810414060188-Reset-the-Arduino-bootloader-on-the-Nano-ESP32
https://docs.arduino.cc/tutorials/nano-esp32/debugging/ - Discovered additional complexities in creating an HTTPS server on the ESP32. The only native implementation uses idf.py and pytest_https_server_simple.py (which our project is not using MicroPython or the PlatformIO development environment). I am instead trying to use the less well documented “esp_https_server.h” working off some of the example code in main.c which is a component of the MicroPython project mentioned before.
https://github.com/espressif/esp-idf/blob/5f4249357372f209fdd57288265741aaba21a2b1/examples/protocols/https_server/simple/main/main.c
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/protocols/esp_https_server.html - Did not have time to address on-device encryption with Mbed-TLS/AES.
Next Week’s Goals
KeWee Energy Meters
- Continue working on an on-device HTTPS server using “esp_https_server.h”
- Devise and test a key generation strategy for encrypting data stored to Flash with Mbed-TLS/AES library.
Website Development
- Schedule meeting with Web Developers team to give members some tasks, and begin handing off admin duties to Xavier Haupt.
2024 Spring Semester Week 8 Update
This Week’s Progress
KeWee Energy Meters
- Focused on the HTTP components of the HTTPS server after running into issues getting a server certificate to not reject clients immediately. Will re-attempt to enable SSL/TLS later, which should be a minor change since everything is using the same “esp_https_server.h” with just a configuration difference to disable SSL/TLS.
- Completed a working Wi-Fi Access Point with an HTTP Server capable of serving clients with data, along with all supporting abstractions (some of which are partially implemented but need more work).
- Did not get to dealing with on-device encrypted storage.
Website Development
- Met with Web Developers team to determine team projects. Also worked with Xavier Haupt to hand off some administrative tasks and updated user access/permissions.
Next Week’s Goals
KeWee Energy Meters
- Continue working on an on-device HTTP server using “esp_https_server.h”
- Possibly devise and test a key generation strategy for encrypting data stored to Flash with Mbed-TLS/AES library.
2024 Spring Semester Week 9 Update
This Week’s Assignment
Image showing progress on project. This image shows the current main project folder with the new files developed so far. This week work commenced in HTTP Client, Request, Server, as well as the main test sketch.
This Week’s Progress
KeWee Energy Meters
- Continued development and testing of HTTP Server, verified able to serve various files and content in another project.
- Added ability to connect to existing Wi-Fi network.
- Tried to implement HTTP Client, with severe crashes on instantiation that I haven’t been able to resolve yet.
- Did not get to dealing with on-device encrypted storage.
Website Development
- Met again with Xavier Haupt to hand off the remaining admin credentials and responsibilities.
Next Week’s Goals
KeWee Energy Meters
- Add some POST functionality to the HTTP Server for receiving input data.
- Fix bugs and make GET requests as HTTP Client.
- Possibly devise and test a key generation strategy for encrypting data stored to Flash with Mbed-TLS/AES library.
2024 Spring Semester Week 10 Update
This Week’s Progress
Full disclosure, this week I allocated my time elsewhere besides Enterprise due to 1. excessive time investment in past weeks, including over Spring Break, burning out my energy for this project 2. other academic and adjacent items taking my time and 3. just needing to step away from some of the setbacks I’ve been working through in this project to clear my head. That said, here is what did happen:
KeWee Energy Meters
- Began work on HTTP Post functionality for the HTTP Server (not parsing key-value pairs yet).
- Began researching alternative options to current HTTP library.
Next Week’s Goals
KeWee Energy Meters
- Get POST requests working on HTTP Server with key-value pair parsing.
- Fix bugs and make GET requests as HTTP Client, or alternatively switch underlying library used for this objective.
- Possibly devise and test a key generation strategy for encrypting data stored to Flash with Mbed-TLS/AES library.
2024 Spring Semester Week 11 Update
This Week’s Assignment
Sketch of what the project might look like at the end of the semester. Changes from Week 3 Sketch: 1. Removed relay – likely to not be included. 2. No reset button, not a priority at this time. 3. Resized AC/DC converter to reflect selected part. 4. Modified case size to reflect more realistic results (taller, similar width, similar depth).
This Week’s Progress
KeWee Energy Meters
- Shifted to helping with hardware / software interfacing that has been a stuck for the rest of the team. (Delaying HTTP work further… but sensing is higher priority.)
- Read through IC documentation on utilizing I2C interface for communicating with the chip’s EEPROM, attempted to make test code but failed to get response from the chip (it will assert ACK to anything sent, but never responds with meaningful data).
- Verified test I2C code by communicating between two Arduinos with one configured as Controller and the other as Peripheral, where the Peripheral emulated expected functioning of the power monitoring IC.
Website Development
- Added URL Shortening capability to the website.
- Updated Admin Panel to include tutorial content that was previously only available in the Discord.
- Patched a security vulnerability by disabling XML-RPC.
- Organized custom code snippets.
Next Week’s Goals
KeWee Energy Meters
- Likely more assistance with I2C / Sensor Interfacing issues.
- Add some POST functionality to the HTTP Server for receiving input data.
- Fix bugs and make GET requests as HTTP Client.
- Possibly devise and test a key generation strategy for encrypting data stored to Flash with Mbed-TLS/AES library.
2024 Spring Semester Week 12 Update
This Week’s Progress
KeWee Energy Meters
- Made code that successfully communicates with the IC! The other one was indeed fried, but took more work than just swapping the IC to properly establish communication and fix a few bugs in interpreting the data.
- Got a basic HTTP POST handler working and receiving the content of the request. May revise with different string handling for memory leak reasons later.
Next Week’s Goals
KeWee Energy Meters
- Get a bit more organized to help prioritize my time in this final stretch. List all software components I’d like to have working and rank in priority, and what points I have to make critical decisions to bail on overly ambitious wishes.
- Fix bugs and make GET requests as HTTP Client.
- Possibly devise and test a key generation strategy for encrypting data stored to Flash with Mbed-TLS/AES library.
2024 Spring Semester Week 13 Update
This Week’s Progress
KeWee Energy Meters
- Continued working on HW/SW integration side of things by making a library with helper methods to assist in extracting data from the chip, all that is left is converting the bits to meaningful numbers.
- Set priority order for what software components remain to build / finish first.
- Started final report drafting. Identified areas that need more work for when the final report is due.
Next Week’s Goals
KeWee Energy Meters
- Finish HTTP calls for data uploading.
- Make some amount of the debugging light codes.
- Add some way to connect and configure device.
2024 Spring Semester Week 14 Update
This Week’s Assignment
Image of the state of the device (see final report for more polished version).
This Week’s Progress
KeWee Energy Meters
- Worked with Hardware Team for several hours on getting voltage sensing working and correcting errors in I2C communication / sensing mathematics.
Next Week’s Goals
KeWee Energy Meters
- Integrate everything the hardware side of things has to offer with the server.
2023 Fall Semester Work Log
2023 Fall Semester Week 10 Update
This Week’s Progress
KeWee Energy Meters
- Assisted diagnosing more current sensor issues and troubleshooting sensing code.
- Continued work on HTTP library rewrite (after trying to find something already available that does what I need).
Next Week’s Goals
KeWee Energy Meters
- Work with team to continue troubleshooting hardware problems.
- Keep progressing on codebase update/rewrite for the Arduino software.
2023 Fall Semester Week 9 Update
This Week’s Progress
KeWee Energy Meters
- Troubleshooting general circuit issues for current sensing.
- Troubleshooting code for hardware sensing.
- Worked on demo and social post content.
- Some HTTP code rewrite work. (Handy resource: https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages)
Next Week’s Goals
KeWee Energy Meters
- Continue documentation work.
- Continue codebase rewrite.
- Meet with team and offer assistance in debugging and troubleshooting.
Website Development
- Assess team progress and offer assistance where needed.
2023 Fall Semester Week 6 Update
This Week’s Progress
KeWee Energy Meters
- Some documentation work for setup handshake.
- Assisted testing migration to Arduino Nano from Uno.
- Worked on CDR Slides & practiced personal sections of presentation.
Website Development
- Communicated about some individual work log posts that needed to be merged into one post.
- Verified plugins are updating and no major site issues are present.
Next Week’s Goals
KeWee Energy Meters
- Practice & deliver CDR presentation.
- Continue documentation work.
- Begin assessing code rewrite plans.
Website Development
- Continue maintenance.
- Check in with web developer team projects.
2023 Fall Semester Week 5 Update
This Week’s Progress
KeWee Energy Meters
- Setup documentation tool for entire team to use going forward, and began exploring ways to use it.
- Worked with team members to debug testing code and hardware issues as we migrate all hardware code to the Arduino Nano RP2040 Connect.
Website Development
- Met with team to distribute semester objectives for additional site content / features.
- Created roles with required permissions for standard Web Developer team projects.
Next Week’s Goals
KeWee Energy Meters
- Work on API documentation of device / server communication, emphasizing initial handshakes during setup.
- Continue collaboration with new team members to share institutional knowledge.
Website Development
- Support team member project work as needed.
- Routine maintenance and general site monitoring.
2023 Fall Semester Week 4 Update
This Week’s Progress
KeWee Energy Meters
- Migrated codebase to GitHub Repository for collaboration and version control.
- Demoed existing software and server for new team members.
- Began brainstorming major codebase updates while explaining existing software to new team members.
Website Development
- Reviewed and adjusted any issues observed with the Authors page / template / author images.
- Made and posted a tutorial video for students posting updates to the website, how to use the editor, and some general content guidelines and advice.
Next Week’s Goals
KeWee Energy Meters
- Explore existing APIs that might provide insight into documentation style and structure.
- Begin designing API documentation that considers how the codebase needs to be restructured and reworked.
Website Development
- Meet with new Website Developers team to find objectives for each person.
- Train other Website Developers on the existing OSHE site, ideally finding a good documentation method / platform for this information.