Packet sniffing your UniFi Access Points

We had a new Widget arrive in the house recently, and it required a connection to the Wi-Fi network. It was duly connected to the untrusted ‘IoT’ network, where it’s denied Internet access by default. It WASN’T happy.

The supplier assured me it *didn’t* require Internet access, so I set about finding out what was going on, and Wireshark was going to figure into that equation.

A brief web search revealed that the Ubiquiti UniFi Access Points have “tcpdump” installed, and in conjunction with PowerShell and WinSCP I had my answers. Here’s how I did it.

Continue reading ‘Packet sniffing your UniFi Access Points’ »

Review: Zennio Tecla XL pushbuttons for KNX

The Zennio Tecla XL

Late last year the Ivory Egg crew returned from Light + Building 2022 in Frankfurt with news of the Zennio Tecla XL, and it caught my eye.

What’s not to love about the Aussie mounting compatibility, the sleek, sexy look, the distinct capacitive buttons, and – as I was to find out – the proximity detection?
Continue reading ‘Review: Zennio Tecla XL pushbuttons for KNX’ »

Our quest for the perfect light switch

We’re not even twelve months into our KNX journey, but we already have devices from over ten manufacturers of KNX gear all happily coexisting throughout the house.

One of the first decisions we had to make was the choice of light switches. We had a few criteria, the main one being that the switches needed to fit within a standard Australian mounting plate, as our installation was a retrofit. Given the house has plaster walls we could have patched all the rectangular holes, re-painted and gone with Euro-style switches in their square mounts, but we decided that was a bridge too far – at least initially.

We also wanted distinct buttons, so that invalidated some of the touch-based models with their ‘secret’ hot-spots.

Those sorts of things are perhaps fine if you’re the only people who’ll ever touch them, but of course reality introduces guests, cat-sitters, cleaners and tradies, and none of those want to sit through a site induction training course before you’ll let them go to the bathroom.
Continue reading ‘Our quest for the perfect light switch’ »

Review: Brightgreen Day Shift LEDs

I’ve written before about the lousy state of the lighting in the new home we bought last year. Fortunately we moved in during Summer, so the days were long and the need for lighting minimal.

Early in the research phase someone introduced me to the concept of Human Centric Lighting, and I was hooked. That “led” (sorry) to quite a lot of research, and ultimately the only player with a suitable product in the market here in Oz was Brightgreen, and its “D700” family of LEDs.

Human Centric Lighting?

You mightn’t have heard of Human Centric Lighting [HCL] called by that name, but you’ve most likely already encountered an application of it.
Continue reading ‘Review: Brightgreen Day Shift LEDs’ »

Get-PowerWallData.py

Following the installation of our solar panels and Tesla PowerWall2 last year, we’ve been on a mission to add all the monitoring and measurement that we can conceive.

Two earlier posts focussed on the Enphase micro-inverters:

Now we have a script that focusses on the PowerWall: Get-PowerWallData.py. Like the others, this script feeds raw data into PRTG.

Features

This script uses the Tesla API to query your PowerWall/Gateway, so it’s retrieving the same data that you see in the Tesla app on your phone. Benefits of this are having your own personal copy/log of that data under your own control, and importantly, you can now *alarm* on any parameters that fall out of your expected range, or do so for too long a period.

We do however grab a couple of values that aren’t in the app:
Continue reading ‘Get-PowerWallData.py’ »

SfB 2015 Server Update – December 2022

This security update for SfBS 2015 is build 6.0.9319.842, up from July’s 6.0.9319.634. Despite the strange jump of over TWO HUNDRED build numbers it updated only two components on my Standard Edition Front-End and delivers only one fix.

What’s Fixed?

  • Kb 5022533 Response Group Service Crashes in Skype for Business Server 2015

What’s New?

Nothing noted. No cmdlets have been added to the SfB module in this update.

What’s Changed?

There’s a new pre-req’s section – see below. Otherwise, nothing noted.

Continue reading ‘SfB 2015 Server Update – December 2022’ »

Get-EnphaseData.py

I recently introduced a script that monitors the Enphase solar setup we have here. This post is about the companion script that adds reporting down to an individual panel level.

  • Get-EnphaseProduction.py. Queries the installation for an overview of production and consumption.
  • Get-EnphaseData.py – this post. Queries the generation data for all of the invidual panels/micro-inverters.
  • Get-EnphaseProduction-v7.py – the v7 version of this post. You’ll need this when your firmware is updated.
  • Get-EnphaseData-v7.py – the v7 version of this post. You’ll need this when your firmware is updated.

Features

This script has the sole purpose of querying panel/inverter data from our Enphase solar system on a per-panel level. This enables us to confirm that all the panels are working properly and potentially identify any panels that aren’t pulling their weight.

As well as individual panel outputs, the script calculates and returns “panel range”. This is simply the difference between the highest and lowest output numbers. In normal operation, this number shouldn’t be very high as every panel pointing in the same direction should be generating roughly the same amount of power. If any of the panels drops output, the panel range number will increase. This will allow you to set up an alarm if any of the panel outputs drop for an extended amount of time. (Obviously you don’t want that time to be too short, as it would false-trigger on slow-moving clouds shading one or more of the panels while the rest remain in full sunlight.)

Continue reading ‘Get-EnphaseData.py’ »

Invoke-ConditionalShutdown.ps1

Windows natively won’t let you schedule a system shutdown, but there are plenty of posts on the Internet that show you how to create a Scheduled Task that will do that for you.

Having recently added a solar+battery setup to our home, I’ve been on a (belated) mission to reduce our overnight power consumption, and I’ve decided that a scheduled shutdown of my desktop PC around bedtime would be a good idea. HOWEVER I don’t want it to be completely automatic, because sometimes I might be running a process that needs to be let run. I might have a WinSCP or PowerShell session open to a Pi I’m monitoring, or I’m capturing real-time traffic from KNX’s “ETS” app, and the shutdown would be A Bad Thing. And here’s where I hit a roadblock.

“Invoke-ConditionalShutdown.ps1” is the solution.

Create your scheduled task as required, but instead of calling “shutdown”, call PowerShell, invoke the script, and add some attributes to define a “skip list” of processes to whitelist, or a “skip file” with the power of regular expressions to look for a list of processes and title bar text.

Features

 
Simple modeSupply a comma-separated list of process names to whitelist. e.g. “Notepad++,Bounsky 2015”.
Power-user modeProvide a CSV file naming the process and what its title bar must say for it to be whitelisted. These values are regular expressions, where a blank entry is a wildcard “$true”.
HibernateAll the power, but just hibernate instead of shutting down. (The script will abort and report an error if Hibernate is disallowed for your machine or o/s).
Shutdown timerWindows’ shutdown command has a “-t nn” attribute, and I’ve catered for that here too, with a default 20s delay for some in-built “OMG NOOOO” protection. (“shutdown -a” is your “undo” command here.)
Reopen previously-running appsIf enabled and invoked, when the machine next boots, all the previously-running apps will reopen. See “ARSO” below.
Validate the regex in the SkipFile Not sure if your RegEx is up to scratch? Don’t worry, neither is mine. Run the script with the “-ValidateSkipFile” switch and it will tell you which of your RegEx rules are no good. Rinse and repeat until it’s all valid, then proceed to “TestMode”.
TestModeTest your settings are correct without risking an unexpected shutdown/hibernate event. The script will drop a message to the screen telling you if it would have shutdown or not, and what criteria triggered the ‘skip’. (Run -ValidateSkipFile first if you’re using the SkipFile).
VerboseOutput verbose info to screen.
Code SignedWith thanks to DigiCert, the released version of the script has been signed, so it’ll run in environments where a strict security policy is enforced.

Continue reading ‘Invoke-ConditionalShutdown.ps1’ »

Get-EnphaseProduction.py

Our new home has provided the opportunity to add a lot of “tech toys” to an otherwise blank canvas, and the most expensive by far has been the combination of solar panels, Enphase micro-inverters and Tesla PowerWall2 battery.

Solar + Battery

Here’s a very high level drawing of the setup, with thanks to Finn at SolarQuotes.com.au for the image.

We have two arrays, with 11 x 400W panels facing East and another 11 facing North, to a total of 8.8kW production.

Unlike a traditional solar panel setup where multiple panels are wired in series in “strings”, then the combined output sent to an inverter, EACH of our panels has its own dedicated inverter. This is usually a more expensive option, and one of the more obvious benefits is that if a single inverter fails you’re only down “1/n”% production until it can be replaced.

Whilst the house is fed by a 3-phase supply, the only load currently requiring all three phases is the ducted air-conditioning. The downside is that should we have a total power failure, we won’t be able to run the aircon off the battery, which we’ve decided is an unnecessary luxury we can forgo under the circumstances.
Continue reading ‘Get-EnphaseProduction.py’ »

PRTG – No module named ‘requests’

We use Paessler’s “PRTG” monitoring and reporting software for keeping tabs on everything here.

We’ve increasingly started writing scripts in Python to serve as “sensors”, feeding data into PRTG, but we’ve hit a couple of road-blocks on the way.

ModuleNotFoundError: No module named ‘requests’

If you encounter this error, or any similar ones reporting “no module named…”, the fix is simple:

  1. First it’s critical that you’re logged in as THE Windows “Administrator”. Logging in as a user who’s a member of the Administrator’s group is insufficient:

  2. Change directory to where python.exe lives:
    CD "C:\Program Files (x86)\PRTG Network Monitor\python\"
    
  3. Install the required module. In this example it's 'requests':
    .\python.exe -m pip install requests

That should be all you need ... with one more potential pitfall: PRTG needs to be running on a release later than 22.2.77.2204:

PRTG Version 22.2.77.2204 broke compatibility with pip.exe install (to install Python packages). With this PRTG release we have removed support for this command to prevent unexpected errors. As of now the only supported way of installing a Python package to use Python Script Advanced sensor is python.exe -m pip install. Please also see our Knowledge Base article for more information about Python installation: https://kb.paessler.com/en/topic/90686.

References / Credits

Revision History

5th November 2022. This is the initial publication.

 
– G.