Automating my poor car

Living in the city, I have limited desire to keep up with buying a new car. Even when garage kept in a Chicago high-rise, the moment you park anywhere else, something damages it. In New York, the streets are less kind. In a comedic way, my car has paid for itself many times over from companies crashing into it while it was street parked. For this reason, I have no need to upgrade my 2008 Acura TL Type-S.

They only made this car in 2007 and 2008. I owned a 2007 Type-S first, and traded for the 2008 after a crash, resetting the odometer. It has a different engine, transmission, suspension, braking system, exhaust, and interior than the base model. The Type-S is a unique and reliable car that checked all the boxes I needed back then and continues to now. Almost 20 years later, the Dominicans in my neighborhood still love it.

Sadly, they love it a bit too much. After a work trip, I returned to my car sitting on 4 crushed plastic milk crates. The dreaded Acura bolt pattern. A group of three stole all four rims in a 45-minute, surveillance recorded heist while driving a plateless Honda CR-V with the same bolt pattern. The locking wheel nuts were of no value. Now my stock Type-S rims (and relatively new tires) live on a CRV. Insurance paid me out, and I riced the TL with some flashy recessed white lipped rims, with spacers to clear the 6-piston Brembo’s. The bait was set.

I needed a better way to notify me if my car was being tampered with. The stock car alarm did go off, but no one cares. I need a way for it to tell me directly, with relatively low false alarms, and immediate confirmation. Although parked outside most of the time, this needs to work across the city, preferably everywhere. I turned to a standalone LoRa solution. LoRa is a radio protocol where low-powered sensors can operate on a dedicated battery for years, with transmission ranges of miles to the nearest gateway. It’s a community standard, so my sensors can route through any LoRaWAN gateway, and my gateway serves the network in turn. I found a LoRa based vibration sensor & alarm horn to start.

On the roof sits a MikroTik gateway that bridges the LoRa network into Ethernet and the broader LoRaWAN network. I can import this data live into Home Assistant, where I can monitor and automate actions based on sensor state. I also added a LoRa temperature and humidity sensor to get an idea of how hot the car gets. Initially, this was more related to pest control (heat) and ensuring proper dry out (humidity) after shampooing the car, but it later became useful for monitoring thermal stress on the dashboard solar panel.

As you can see in my car dashboard below, there is a good deal of historical information on daily swings. All information is from a parked state, with solar load changing values during a relatively overcast March. 30 degrees increases to over 100 with the sun, and inversely reduces the humidity from 70% to 30%.

As you can see above, my car battery (an Optima red top), varies wildly in voltage while parked. This is purposeful, as a 60 Watt solar panel lives on the dashboard while parked. This keeps the car topped off while sitting for long periods. Acura has a design defect in the HFL module that drains your battery and typically fails 10-15 years later. The solar panel was a band-aid to ensure the drain was compensated until this root cause was discovered. After it was corrected, the solar setup became a nice feature.

The sampling and connectivity providing the data above are handled by a Shelly Plus Uni, a low power ESP32 based device that backhauls data over Wi-Fi. It is both powered by, and sampling the 12VDC circuit that comes from the car battery. Separately, I have the solar panel wired to charge the battery, to ensure minimal local voltage rise from the wiring path. Wi-Fi connectivity is routed through NYC Mesh, which has public access points across the city with no captive portal. This ensures that while the vehicle moves around the city, it remains somewhat connected. The Shelly doesn’t need much signal to exchange its readings, and I have a dedicated AP at home to ensure access.

With all this data, the next step is putting it to work. For the car battery, this is easy. A daily verbal alert is sent to phone if the voltage dips below 11.5VDC. A reminder that I should probably move my car for ASP, and let the alternator give some juice. The solar panel typically holds things up, but snow and trees can block it at times. For humidity and temperature, I’ve set thresholds to remind me to open or close the windows or tilt the sunroof, especially if rain is in the forecast.

Vibration is an interesting one. To prevent repeated theft, I have the sensor tuned to sense when the car is touched. I then have a building mounted surveillance camera take a still shot, and have generative AI look for the car, and describe the context. This is all gated by weather conditions and a curated library of known false positives, including fire trucks, ambulances, and garbage trucks that are within the field of view. If a threat is deemed high confidence, the still image and textual description is sent to all my devices. The battery powered car alarm sounds the horn. If I’m home, the live RTSP surveillance feed is displayed on all televisions. If my car is not in the image, or if I am present in the car, edge cases are discarded. Since the sensors operate over LoRa, they are functional across the entire city.

I now have peace of mind that, regardless of where I am, my car is being watched. This system has alerted me to multiple hit and runs, many of which I have been able to solve almost instantly using surrounding data. For theft, I am no longer alerted upon return, it is instant. I don’t see a need to replace this car anytime soon.