PROGRAMMING

IT DOESN'T WORK, I DON'T KNOW WHY... IT WORKS, I DON'T KNOW WHY....

/PROGRAMMING

These days, I find myself doing a great deal of Typescript, C#, Java, and the more prevalent web technologies such as Angular, Node.js, JQuery, and so forth. As a certified insomniac, technophile, and programming addict, I spend a good deal of time working on projects for myself while learning new languages and technologies. Recently, I've begun to dig deeper into languages and technologies such as Xamarin (IOS, Android, Windows apps), Microsoft's Service Fabric, and Windows 10 IoT.

RASPBERRY PI and PYTHON

My current Raspberry PI project is a Parking Assistant, written in Python. The hardware components of which consists of:

  • 1x HC-SR501 Motion Sensor
  • 1x HC-SR04 Ultrasonic Distance Sensor
  • 4x MAX7219 Dot Matrix Display Modules
  • 1x Piezo Electric Buzzer
  • 1x Raspberry PI 2B+

As of August 2019, I've finished transferring the circuits and components from the breadboard to protoboard.

Laid out on breadboardPrototyped on Breadboard
All soldered and assembledTransferred and Soldered on a Protoboard HAT

I am currently designing the casing, which will be predominately screw-less, for deployment. The current plan is to print using PLA. The trick is placing the LED Matrix at eye-level, while placing the Ultrasonic Distance Sensor at the right height.

But, Dave!, you protest,These things already exist and are fairly cheap!! You're correct. However, there's no satisfaction in buying what I can create :) Besides, this was a good project to learn Python with. Not to mention, I can customize it to the gills - the distances, behaviors, display messages, etc. Sure, this has taken a few weeks to put together, but I've had a blast doing it. Once complete, I'll publish a series of articles on piecing this together - from start to finish - including the code as well as the files needed to print the casing and its internals.

HOME AUTOMATION

I'm a huge fan of home automation and have been working with technologies such as X10 for a long time now. A few years ago, I started upgrading my system to use newer technology such as Wink and smart sensors. So far, I am not a fan of having to maintain an internet connection to send out commands to a central server just to receive them back at my Wink Hub, but they are making more and more commands locally available and that is a good thing.

Just a few weeks ago, as my 2019 summer vacation drew to a close, I installed a Z-Wave plug for the pool pump and a Z-Wave controller for the outside garage. I've been working on hooking these new devices into Heather - my latest attempt at an automation assistant - so that she can control when the pump goes on based on the weather, current water level, time of day, and so forth. Also, the plan is for Heather to detect when I am arriving home and have her automatically open my garage for me when I'm in range (yes, the pinnacle of lazy). I've also been incorporating a good deal of APIs into her core (e.g., Honeywell TotalConnect). The plans are many, the work is much, but time is never seemingly on my side.

Heather is the third generation of voice-based automation assistants I've created over the years. I started with Colossus around 2004/2005-ish (yes, the name was inspired by the book/movie). I wrote the first version in Delphi Pascal - but soon moved on to Java. Colossus used X10 as the automation technology and utilized many of the burgeoning APIs of the time (e.g., some of Amazon's APIs to retrieve song/artist information, various weather services, etc.). Eventually I scrapped it all and started rewrote a good portion of Colossus in C# - it was a great learning exercise since so many features were in play (e.g., audio, video, voice recognition, etc.). At the same time, I moved away from Microsoft's default speech synthesis voices over to CereProc's smooth voices. The voice I selected was Heather - so it only seemed right to rename Colossus to Heather. This latest version is a hybrid of Node/TypeScript and C#.

XAMARIN/Windows Universal Platform

My current Xamarin project is a rewrite of a Windows Universal Platform (UWP) project that I completed some months ago (see: inset image), that I run on my Windows 10 IoT Raspberry PI II Model B (RPI) that is currently sitting on my "Task Desk" in my home office. The app isn't meant to provide me with anything other than a quick visual of how the cryptocurrencies I've subscribed to are doing. There's a small heat strip on the top that indicates the trend of the recent price polls, as well as a simple, label-less line chart to show me the overall movement of the currency. Once I complete the Xamarin project, I plan to release the source code on Github for public consumption and use.