News Update

Stay tuned for the latest news on the projects I am working on. I will be posting updates here as they happen.

Back to project blog contents

A Trip into ESP32 Home Devices

With some spare ESP32 devices, I decided to use them to create a BLE beacon to put in each room I wanted home assistant to track my pressence in.

Back to project blog contents

New Reading Material

The new reading material - learn the Rust language and how to design and manufacture PCBs for my electronic projects using Kicad. KiCad is an open source software suite for Electronic Design Automation (EDA). The programs handle Schematic Capture, and PCB Layout with Gerber output. The programs run on Windows, macOS and Linux. KiCad is a mature EDA software tool under active development by a team of developers and a vibrant user group. KiCad is an open source project, download instructions can be found at https://kicad-pcb.org/download/.

Back to project blog contents

Weather Station Update

Using a battery backed ESP32 Featherlight V2 to read the outside temperture, humidity and UV levels. These are then sent via MQTT to the AdaFruit IO dashboard.

Back to project blog contents

My Smart Home Progress

I have decided to implement my smart home in stages. The first stage is to start with all the passive sensors, the ones that you can only read from like tempature, humidity, pressence, light level sensors. So in all the main rooms I will place tempature and humidity sensors and in the hallway and first floor landing I will place presence and light level sensors. I have also added a Zigbee network to my Home Assistant (HA) setup. Zigbee is an IEEE 802.15.4-based specification for a suite of high-level communication protocols used to create personal area networks with small, low-power digital radios, such as for home automation. I will be posting updates on my progress here.

Back to project blog contents

Heroku extension ClearDB

I use the ClearDB Heroku add to access my main SQL database. Apart from dropping the free tier, so it became a paid for by usage addon, I had been very pleased with its operation and stability. The other day I recieved an email from the ClearDB team stating that they have chosen to discontinue development of this add-on. It will be removed from all apps on November 30, 2024. So the hunt was on for another Heroku addon that can access my SQL databases. StackHero for MySQL came to the rescue. It is easy to use and has a good web interface for managing the database. I have now moved all my SQL databases to StackHero and I am very pleased with the result.

Back to project blog contents

The New Raspberry Pico 2 Micro Controller

I have been expermenting with the new Raspberry Pico 2 micro controller. The Pico 2 is also a great device for learning about electronics, programming and IoT projects. Currently the Pico2 does not have on board intergated WiFi, so I have used a ESP 01 connected to the Pico2 UART inteface to provide a Wifi connection.

Back to project blog contents

Robotics Platform Progress

The robotics platform uses the Crickit HAT on a Raspberry Pi Zero. The platform has a range of sensors including proximity sensing and line following. The platform is also used as a testbed for experimenting with electronics and software.

Back to project blog contents

Weather Station Progress

The weather station uses a Raspberry PI Zero and Pico, measuring a range of outside and inside sensors. The data is send via MQTT to an AdaFruit IO backend, where we can display the data in graphical format. The data is also sent to a local database for further analysis.

Back to project blog contents

Stripe Payment Processing

A qurik that caught me out in my Stripe checkout code is the changing Stripe customer ID.

If between the checkout.session.completed and invoice.paid notifications your payment has to be authorized by your banking application you will get a different Stripe customer number.

Back to project blog contents

Chatter Box - Using the Web Speech API

Chatter Box now uses the Web Speech API to allow chat texts to be dictated and spoken out aloud. This is a great feature to have as it allows a visually impaired user to hear the chat text out aloud.

Back to project blog contents

Mobile Application Development

My journey into mobile cross platform application development has began with new reading material - .NET MAUI in Action by Matt Goldman.

Back to project blog contents

dotnet build failure

All my dotnet build commands were failing. After a bit of research the solution was to create an empty directory - C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages

Back to project blog contents

Chatter Box Back on Line

Completed Chatter Box's upgrade to MongoDB version 6. It is now back online and can be accessed at Chatter Box.

Back to project blog contents

Chatter Box - Upgrade to MonogoDB Version 6 on Atlas

Atlas has decided to upgrade accounts to version 6 of MongoDB. Great but it breaks the code i use to access the DB, including the connection string. So I have had to put the ChatterBox application into maintaince mode to make the codig chamges. Back as soon as possible...

Back to project blog contents

Chatter Box - Network Timing Issues

When using Chatter Box on a network with a slower connection speed, timing issues can fall into 3 categories:

  • Image Loading
  • Room List, etc. Data Loading (JSON format)
  • Aviator Image Loading

I changed to loading the JSON data files to be done synchronously therfor ensuring the data is avialable before containing. Also add a data loading dialog to inform the user that the system is initializing.

Back to project blog contents

Coding Updates

The web speech API - The function getVoices() is executed asynchronously after the web page has loaded. This means that its data is not immediately available and the list is not fixed. A solution is to use the following promise based code:

function getVoiceList() { return new Promise( function (resolve, reject) { let synth = window.speechSynthesis; let id; id = setInterval(() => { if (synth.getVoices().length !== 0) { resolve(synth.getVoices()); clearInterval(id); } }, 10); } ) } const chooseVoice = async (lang) => { const voices = (await getVoiceList()).filter((voice) => voice.lang == lang) return new Promise((resolve) => { resolve(voices[0]) // returns the first voice in the list }) }

And to use the function...

async function speakText(text,lang) { var msg = new SpeechSynthesisUtterance(); msg.voice = await chooseVoice(lang); msg.volume = 1; // 0 to 1 msg.rate = 1; // 0.1 to 10 msg.pitch = 1; //0 to 2 msg.text = text; //msg.voiceURI = 'native'; //msg.lang = 'en-US'; speechSynthesis.speak(msg); }

Back to project blog contents

Reading Material Updates

Docker in Action by Jeff Nickoloff and Stephen Kuenzli. Docker provides a method of having development environments that can be run in isolated containers, without installing any system software on the computer. It also provides a way of replicating the production environment in a container to test your software.

Back to project blog contents

Responsive Website Design

Redesign of the End House Software website using responsive techniques. Using CSS3 techniques such as max-width, flexbox and grid to produce a website that scales across multiple devices with different screen sizes.

Rahul Chhodde has written an excellent article on the new viewport units that can be found at https://blog.logrocket.com/improving-mobile-design-latest-css-viewport-units/ and CSS breakpoints for Responsive Design by Rob O'Leary that can be found at https://blog.logrocket.com/css-breakpoints-responsive-design/.

Back to project blog contents

Chatter Box

A NodeJS application that uses the ExpressJS framework including among others new HTML5 features (canvas, new audio controls, etc.), FAQ using Microsoft's QnA Maker, Google/Azure language translation APIs and a SignalR hub to process the chat messages. Find it on Chatter Box.

Back to project blog contents

Weather Station - Mark 1

I have finally started to build a weather station. I have been looking at the Raspberry Pi Pico for a while now and I have been thinking about what I could do with it. I have a few ideas but I have decided to start with a weather station. The idea is to expand this to a full outside weather logging station. I am using the Anvil dashboard application as the frontend.

Back to project blog contents

Reading Material

Current reading projects - It never hurts to read books on areas you already know, hence 'CSS in Depth'. Also on the revision list is 'Web Components in Action' allowing me to produce reuseable components to use across my websites. Python and Rust are two new languages I am learning. Python for all the Rasberry Pi projects and Rust as it seems to be emerging as a trending topic both in terms of performance and simplicity.

Back to project blog contents

Welcome Message

Welcome to my project blog. I will be posting updates on my projects here. This blog was officially started in January 2023. I will be updating it with earlier projects as I get time.

Back to project blog contents

Gavin Baker

Software Developer
GitHub: https://github.com/gavinbaker999
NPM: https://www.npmjs.com/~gavinbaker
PyPi:https://pypi.org/user/gavinbaker999/

NodeJS, .NET (C#), MAUI, C++, PHP, Perl, Python, Raspberry PI Family, ESP32 family, Rust, SQL, Stripe, Twillo, SendGrid, VHDL, REST APIs, GitHub, Google, Heroku, Azure, Docker, SignalR, Jellyfin and XBox One.

Copyright © End House Software 1999-2025.

Project Blog Contents

Resource Center