Earth Notes: On Website Technicals (2025-05)

Updated 2025-06-08.
Tech updates: AdSense slowly back on, invisible improvement, grid voltage/red response, stop log.
Randomising the scope for consulting on considering a grass-roots movement to form a citizens' assembly to set terms for a Royal Commission to guide the forming of a ministerial task force to consider the scoping and creation of a focus group to sketch terms of reference for a study group to outline the agenda for a pre-meeting to form a steering group to get ready to think about upgrading the RPi server, easy does it...

2025-05-30: Stop Log

This afternoon, alongside the frequency response log for the Eddi, I added a more general log of reasons for Eddi to have been put in STOP mode. This gets entries only when the Eddi would otherwise be diverting or boosting, so reflects energy spilled to grid that might not otherwise be. (This is getting added to archived logs too.)

Much of today's thrilling log, including initial manually-driven entries:

STOPPED 2025-05-30T18:04:42Z grid 7d red carbon intensity
STOPPED 2025-05-30T18:04:45Z grid 7d red carbon intensity
STOPPED 2025-05-30T18:05:01Z grid 7d red carbon intensity
STOPPED 2025-05-30T18:06:02Z grid 7d red carbon intensity
...
STOPPED 2025-05-30T18:32:02Z grid 7d red carbon intensity
STOPPED 2025-05-30T18:33:02Z grid 7d red carbon intensity
STOPPED 2025-05-30T18:34:01Z frequency too low at 49.85Hz
STOPPED 2025-05-30T18:35:02Z frequency too low at 49.89Hz
STOPPED 2025-05-30T18:36:01Z frequency too low at 49.89Hz

The next day I added a grid flow figure in W after the timestamp. Negative means spilling to grid.

2025-05-19: Grid Red Response?

In many ways the most interesting interactions between 16WW energy systems and the grid are dynamic, not just fixed 4pm to 7pm avoidance, useful though that is.

The system currently blocks diversion to the heat battery when grid frequency or voltage are low.

I can also block diversion when the grid intensity is 'red' (top quartile).

Ultimately I will use less electricity when I avoid DHW by immersion, since the heat pump will use fewer units to cover the same demand. Though I may import and thus pay a bit more. And the water might not be quite so hot...

This new code fragment does the work:

    if [ -f _gridCarbonIntensityGB.7d.red.flag ]; then
        echo "STOPPED: grid 7d red carbon intensity" 1>&2
        if [ "6" != "$STATUS" ]; then sh script/myenergi/eddiStop-netrc.sh 0; fi
        exit 1
    fi

This once-per-minute script may be getting too heavy.

2025-05-20

This morning the grid-red rule held back the start of diversion to the heat battery by ~1.5h.

20250520 heatBatTarget

2025-05-18: Grid Voltage Response?

I briefly looked at blocking diversion (or allowing to heater 1) if grid voltage is low (or high).

The stats do not look that hopeful from a cursory examination of Eddi coarse 10-minute sample data, but I might need to look again at much finer grain.

% gzip -d < data/eddi/log/202504.log.gz | sed -n -e 's/^.*"vol":\([0-9]*\)[^0-9].*$/\1/p' | sort | head
2332
2334
2338
2340
2341
2343
2343
2344
2345
2347
% gzip -d < data/eddi/log/202504.log.gz | sed -n -e 's/^.*"vol":\([0-9]*\)[^0-9].*$/\1/p' | sort -r | head
2475
2473
2473
2473
2471
2471
2471
2470
2470
2469
% gzip -d < data/eddi/log/202504.log.gz | wc -l
    4312
% gzip -d < data/eddi/log/202504.log.gz | egrep '"vol":25[0-9]' | wc -l
       0
% gzip -d < data/eddi/log/202504.log.gz | egrep '"vol":22[0-9]' | wc -l
       0
% gzip -d < data/eddi/log/202504.log.gz | egrep '"vol":23[0-4]' | wc -l
      20
% gzip -d < data/eddi/log/202504.log.gz | egrep '"vol":23[0-5]' | wc -l
     140
% gzip -d < data/eddi/log/202504.log.gz | egrep '"vol":24[4-9]' | wc -l
     200
% gzip -d < data/eddi/log/202504.log.gz | egrep '"vol":24[5-9]' | wc -l
      83

So maybe (below) 236V STOP diversion and (above) 243V allow diversion that might otherwise be STOPped?

I have inserted this extra 'secondary' task code segment for the lolz:

    # Prevent diversion when grid voltage is low.
    VOLTS="$(echo "$RESPONSE"|sed -n -e 's/^.*"vol":\([0-9]*\)[^0-9].*$/\1/p')"
    if [ "$VOLTS" -lt 2360 ]; then
        echo "STOPPED: mains voltage $VOLTS low; diversion stopped" 1>&2
        if [ "6" != "$STATUS" ]; then sh script/myenergi/eddiStop-netrc.sh 0; fi
        exit 1
    fi

A quick look at frequency extremes and distribution in the same data:

% gzip -d < data/eddi/log/202504.log.gz | sed -n -e 's/^.*"frq":\([0-9.]*\)[^0-9].*$/\1/p' | sort -n | head
49.76
49.83
49.83
49.83
49.83
49.83
49.83
49.83
49.83
49.83
% gzip -d < data/eddi/log/202504.log.gz | sed -n -e 's/^.*"frq":\([0-9.]*\)[^0-9].*$/\1/p' | sort -rn | head
50.21
50.19
50.19
50.18
50.18
50.18
50.17
50.16
50.16
50.16
% gzip -d < data/eddi/log/202504.log.gz | sed -n -e 's/^.*"frq":\([0-9.]*\)[^0-9].*$/\1/p' | sort -n | uniq -c | more
   1 49.76
  19 49.83
  24 49.84
  19 49.85
   4 49.86
  13 49.87
  36 49.88
 281 49.89
 130 49.9
  96 49.91
  50 49.92
  68 49.93
 134 49.94
 313 49.95
 394 49.96
 163 49.97
  79 49.98
  47 49.99
  82 50
 151 50.01
 555 50.02
 219 50.03
 138 50.04
  86 50.05
 118 50.06
 207 50.07
 417 50.08
 147 50.09
  90 50.1
  47 50.11
  39 50.12
  59 50.13
  42 50.14
  32 50.15
   5 50.16
   1 50.17
   3 50.18
   2 50.19
   1 50.21

2025-05-15: Invisible Efficiency Tweak

A few days ago I adjusted (mainly) the script that runs every minute to respond to grid frequency drops, and added (crowbarred in!) a couple of dozen lines of code to reduce our electricity consumption by ~15% (~1.5kWh/d) for half the year, and no one else in the house has noticed yet, nor should they! Also it should help keep the kitchen cooler in summer.

Also (3 for the price of 1!) I am now being nicer to the grid 4pm to 7pm, spilling any excess and not diverting it for DHW.

The injected section (slightly trimmed of fluff) is:

# SECONDARY TASK(S): STOPPING UNWANTED PV DIVERSION
# Only tried when already spilling to grid, ie "grd":-NNN is present in status,
#...
if [ "4" != "$STATUS" ] && [ "" != "$(echo "$RESPONSE" | egrep '"grd":-')" ]; then
    # Prevent diversion to DHW cylinder when it is not the priority.
    if [ "" != "$(echo "$RESPONSE" | egrep '"hno":1')" ] && \
        [ "" != "$(echo "$RESPONSE" | egrep '"hpri":2')" ]; then
        echo "STOPPED: diversion to DHW cylinder currently not permitted" 1>&2
        if [ "6" != "$STATUS" ]; then sh script/myenergi/eddiStop-netrc.sh 0; fi
        exit 1
    fi

    # Prevent diversion in grid peak hours.
    CONTROLPARAMSDIR=data/heatBattery/16WWDHW
    LZONE="Europe/London"
    LHOUR="$(TZ="$LZONE"; export TZ; date +%H)"
    EXPGRIDDEMAND=`awk -F, '$1=='$LHOUR'{l=$2;if(""==l){l="-"};print l}'\
        <$CONTROLPARAMSDIR/storage-charge-pref-by-hour-local-time.csv`
    if [ "H" = "$EXPGRIDDEMAND" ]; then
        echo "STOPPED: grid peak demand time" 1>&2
        if [ "6" != "$STATUS" ]; then sh script/myenergi/eddiStop-netrc.sh 0; fi
        exit 1
    fi
fi
# Fall through to deal with primary task.
# (And undo any unneeded STOP.)

2025-05-05: AdSense Ads off the Naughty Step

On I found Google apparently stuffing Gemini AI house ads into my pages without the usual mechanism for a visitor to reject them as unwanted. I had to dig around in the AdSense consoled to block ads mentioning Gemini in text. (They were all Google Workspace ads; as of today there are some Gemini-free.) Google does not even advertise under its own name. Given what an over-hyped carbon-spewing deceit this current AI wave is I was incensed enough to immediately yank essentially all Google ads from EOU. That meant first turning 'auto ads' off in the AdSense console, then adding new ad controls to my page generation scripts, then forcing rebuilds of all pages that were at that moment hosting ads to remove their embedded Google AdSense JavaScript.

As of today I have re-enabled most Google ads. It will take a week or so before the most popular pages get rebuilt to contain the Google JavaScript to allow AdSense ads for them again.

I started support for increasing ad density in winter (when more people are looking at my pages, and budgets may be higher), and conversely lightening the ad load a little at other times.

2025-05-10: AI yuck continues

Google is still spouting Gemini ads on my site that cannot be reported by me as an EOU site user as 'inappropriate' (or 'do not like'), and that cannot be found and blocked by me as an AdSense user under "Google LLC" or "Gemini", which seems pretty smelly to me. I also cannot block google.com as an advertiser in AdSense. I have blocked workspace.google.com and cloud.google.com in AdSense under "Brand Safety" after taking a wild guess as to what those ads are booked under, but I should be able to get at that URL directly without guessing. (I did later find some more ways to block more Gemini ads once I have managed to locate them, but they keep coming.)

I am close to shutting down my entire AndSense account and blocking all Google ad domains in my browser; this is unnecessary and very very shifty behaviour by Google. It is not like Google does not know how to facilitate search, including in the blocking controls for AdSense.

2025-05-15: first significant revenue this month

5p 4p today, on top of 1p smeared out over the whole of the month so far.

(GSC's initial estimate of 5p was over-enthusiastic, the next day showed 4p...)

I shall avoid spending it all in one shop.

Most eligible pages were rebuilt with AdSense in them ~4 days ago.