Earth Notes: On Website Technicals (2021-03)
Updated 2023-12-09.2021-03-26: Bylines
Aiming to help readers trust EOU content (not for an ego boost!) I'm experimenting with adding a byline to most pages. But it's highly redundant, and in the critical rendering path (CRP), so I'd rather not do it. I may implement an explicit schema.org/noBylinesPolicy
instead!
I'm leaving the byline out of non-desktop pages to save space and weight, and to minimise the CRP.
2021-03-25: Daily Router Reboot
The Vigor 2862ac router continues to prove fairly unreliable. 5G WiFi stops working periodically until disabled and re-enabled manually. The whole system spontaneously crashes and reboots periodically. Traffic seems to drop out for 30s upwards without showing any obvious diagnostic, though that could be an FTTC issue or upstream.
I had the system set to auto-reboot weekly. I have upped that to daily, at a quiet moment, hoping to forestall some of the weirdness.
It's an unsatisfactory state of affairs, as a difficult-to-avoid single point of failure (SPoF).
2021-03-23: New Dump Scheme
I'm preparing to test an alternative excess-energy dump mechanism, possibly up-stream of the Morningstar controller on its 'wild DC' side. The idea is to resistively dump some energy when the PV voltage is being allowed to rise significantly above the Vmpp (maximum power point voltage), maybe 29V, presumably because the battery is full or the controller is maxed out.
To that end I'm capturing some existing available stats over MODBUS, and various times of day and night:
- 2021-03-22T21:52Z (night, long after sundown):
% /usr/local/bin/ssmppt15l-modbus Time since boot (s): 696246 Vb_f battery voltage slow (mV): 12818 Adc_vl_f load voltage (mV): 12821 Adc_ic_f battery charge current (mA): 0 Adc_il_f load current (mA): 218 Load power (mW): 2795 Adc_va_f array voltage (mV): 22 Sweep_Vmp (mV): 8030 Sweep_Voc (mV): 10706 Sweep_Pmax (mW): 3730 Power_out (mW): 0 kWhc (kWh*10): 5625 charge_state: 3 Ahc_daily (mAh): 0 Ahl_daily (mAh): 0 T_batt (C): 11
- 2021-03-23T07:55Z (morning, battery beginning to charge):
% /usr/local/bin/ssmppt15l-modbus Time since boot (s): 732485 Vb_f battery voltage slow (mV): 12961 Adc_vl_f load voltage (mV): 12974 Adc_ic_f battery charge current (mA): 1136 Adc_il_f load current (mA): 228 Load power (mW): 2956 Adc_va_f array voltage (mV): 28125 Sweep_Vmp (mV): 28165 Sweep_Voc (mV): 33423 Sweep_Pmax (mW): 15114 Power_out (mW): 14707 kWhc (kWh*10): 5625 charge_state: 5 Ahc_daily (mAh): 500 Ahl_daily (mAh): 100 T_batt (C): 10
- 2021-03-23T10:54Z (battery in absorption, already
Adc_va_f
above Vmpp):% /usr/local/bin/ssmppt15l-modbus /usr/local/bin/ssmppt15l-modbus Time since boot (s): 743217 Vb_f battery voltage slow (mV): 14460 Adc_vl_f load voltage (mV): 14429 Adc_ic_f battery charge current (mA): 488 Adc_il_f load current (mA): 172 Load power (mW): 2488 Adc_va_f array voltage (mV): 32764 Sweep_Vmp (mV): 27918 Sweep_Voc (mV): 33423 Sweep_Pmax (mW): 21033 Power_out (mW): 7157 kWhc (kWh*10): 5625 charge_state: 6 Ahc_daily (mAh): 4500 Ahl_daily (mAh): 200 T_batt (C): 10
- 2021-03-23T13:51Z (battery FULL):
% /usr/local/bin/ssmppt15l-modbus Time since boot (s): 753823 Vb_f battery voltage slow (mV): 14158 Adc_vl_f load voltage (mV): 14045 Adc_ic_f battery charge current (mA): 931 Adc_il_f load current (mA): 266 Load power (mW): 3767 Adc_va_f array voltage (mV): 34290 Sweep_Vmp (mV): 27988 Sweep_Voc (mV): 33524 Sweep_Pmax (mW): 19765 Power_out (mW): 13529 kWhc (kWh*10): 5626 charge_state: 7 Ahc_daily (mAh): 6900 Ahl_daily (mAh): 200 T_batt (C): 10
- 2021-03-23T14:35Z (new gadget plugged in to direct battery connection in kitchen, apparently drawing ~100W/8A, and seems to work):
% /usr/local/bin/ssmppt15l-modbus Time since boot (s): 756473 Vb_f battery voltage slow (mV): 14145 Adc_vl_f load voltage (mV): 14237 Adc_ic_f battery charge current (mA): 7004 Adc_il_f load current (mA): 394 Load power (mW): 5574 Adc_va_f array voltage (mV): 32865 Sweep_Vmp (mV): 25904 Sweep_Voc (mV): 31690 Sweep_Pmax (mW): 47999 Power_out (mW): 99138 kWhc (kWh*10): 5626 charge_state: 7 Ahc_daily (mAh): 7900 Ahl_daily (mAh): 200 T_batt (C): 10
The new water heater is rated to a maximum of 27V, so cannot be used directly on the panel side of the controller for the 550Wp panels. It's also maybe a bit too clever, needing to be manually enabled each time it's powered up. But this is fine, with a little care, for now.
2021-03-28: reconnecting the router to the switchable (on-/off- grid) 12V supply may make use of an additional 100Wh/d or more (not drawing it from the grid). That may double daily off-grid use at the moment from ~125Wh/d to ~250Wh/d.
2021-03-29: a green green tea cuppa started at 14:45 with water from filter jug at 18°C according to water heater, 70°C at 14:58, 94°C at 15:05. Stopped a minute or so later at 96°C. Made a generous mugful. Estimated energy of ~100W for ~20 minutes is ~33Wh.
Captured over 300Wh off-grid today, hurrah!
2021-03-19: Faster Incremental Builds When Sunny
(See previous work storage note and next.)
I have tweaked the makefile
to allow a quicker incremental build (see work storage) with pages-incr
, when the battery is HIGH
or higher. That is, to be more aggressive in how many things to rebuild, and allowing each rebuild run to be longer.
Many days recently have had the battery reach FULL
. So making better use of excess energy is currently worth some extra thought!
(The work storage magic mostly happens between conditionals in the crontab
not to run things at all unless HIGH
enough, and in the makefile
's PWRxFLAG
and friends to conditionally enable fewer or more dependencies dynamically.)
2021-03-17: "Love how fast your website is"
Unsolicited comment of the week:
Love how fast your website is, btw
And then...
For real, I had to check the network tab because I couldn't believe how fast it felt when I already knew, based on reading it, that you wouldn't be using a CDN and that it would be a server on a different continent, maybe a low spec solar powered one too
Yep, off-grid, running in my kitchen cupboard directly below me, on an FTTC line!
2021-03-14: DNS Primary Fun
Last month I got a reasonable off-site, off-continent DNS secondary running.
Today's task is to move the primary from the old RPi server to the new one.
The steps are something like:
- Clone the (SVN) repository for the old primary to the new machine (ie have the audit trail local to the new primary).
- Keep an off-server archive/recovery snapshot of the repository.
- Create the DNS working files area for the new primary on the new server.
- Do a test build of all the records and files, and eyeball.
- Ensure that the latest BIND9 is on the new primary.
- Hook up the new BIND9 server to use records from a
make install
from the DNS area, and do one. - Add Ansible support for DNS primary files/status.
- Make sure that the right authoritative records are served by the new primary.
- Adjust the networking configuration of old and new RPis to serve one of the local address from the new server, leaving the other with the old primary, and ensure that it correctly serves requests, eg inbound from the Internet.
- (At this point the new primary is up and taking some of the load.)
- Bring up a secondary in place of the old primary, serving one of the local IP addresses, so that I get some extra redundancy for now.
- (At this point there is a shiny new primary on the new RPi, a secondary on the old RPi on the same network, and a secondary on another continent.)
- Decommission the old primary DNS area, repo, etc, so that it cannot accidentally be run as primary.
- Possibly choose on primary and secondary whether to use (both) as cacheing name servers for local queries, eg via
/etc/resolv.conf
.
(I also sorted out a few things such as 'notify' that I had not really paid attention to before.)
When all that is done I want to tidy up glue records and so on:
- Remove one of the nameservers to get back to a more reasonable three. If two name servers are enough for (say) CloudFlare, then four is surely overkill for me!
- Give the non-UK, non-ExNet name server the off-site IP.
- Fix DNS glue records at the registrars to match.