DIY system - firmware questions

PS: Watching the serial output, the last few messages say:

MDNS responder started for hostname IotaWatt
LLMNR responder started for hostname IotaWatt
timeSync: service started.
statService: started.
Updater: service started. Auto-update class is NONE
9/16/20 08:18:49z timeSync: RTC initalized to NTP time
9/16/20 08:18:49z Real Time Clock battery is low.

(The last message is perfectly understandable, given there is no RTC! :smile:)

I was hoping to have my monitoring system ready for tomorrow’s solar system installation, but sadly that’s not going to happen now.

Is no-one able to offer me a clue as to why I can’t connect with the IoTaWatt software? The code is just too complex to quickly understand – it would take me a month of Sundays to get my head around it!

I can ping the NodeMCU’s IP address on my network (though it’s pretty slow – round trip time average = 34ms), and I’ve tried accessing iotawatt.local with the Windows firewall turned off, but still the same error as reported above.


You are connected. This is the part of DIY where you start to do it yourself.

index.html resides on the SD card, so make sure your SD card is correctly formatted and has the files from the SD directory of the github repo.

Bob, I understand where you’re coming from, and thank you for your past guidance, which has been immensely helpful to me.


Many thanks for your hint. After copying the “SD” directory files to my SD root, I am now getting the expected Menu screen for the energy monitor.

Great timing too, as the guys are right now installing my solar system, so I’ll now be able to install my monitor alongside the inverter!

I really appreciate your help!


Can anyone help me with channel mappings for IoTaWatt firmware?

The default firmware appears to be for v4.4 hardware rather than v5.0, but either way it’s not clear what the mappings are for the firmware’s ‘Chanel 0’ … ‘Channel 14’ vs the U1 and U2 ADC channels.

Do the firmware ‘channels’ correspond to the Jn connector reference numbers on the v4.4 schematic, or is it some other scheme?

Thanks in advance…


They all use the same firmware. Beginning with late hardware 4.8 and continuing through 5.0 at present, IoTaWatt manufactured units have version and other hardware variables encoded into the EEPROM. At present, specifically, the board version and reference shunt voltage. The values of the burden resistors are also initialized in a SPIFFS file.

If your board does not have this EEPROM information, it is assumed to be a 4.8 board and the burden is assumed to be 24 ohms. There were a number of late 4.8 boards manufactured with 20 Ohm burdens and all version 5 boards have 20 Ohm burdens.

The default reference shunt voltage is 2.5Volts, but that can also be changed with an entry in the device section of the config.txt file, as can the burden values.

The mapping of input number to internal address is the same for all versions, but that too can be changed in the config.txt file. The external channel numbers run from 0-14. The internal address is 0-15 where the high order bit is the ADC (0 or 1) and the low order three bits are the ADC channel. ADC 1 has the voltage ref on channel 0 so the mapping from external channel to internal address skips over that using the formula:

address = channel + (channel/8)


See the modules setup.cpp, getconfig.cpp and iotaInputChannel.h for details.


Thanks for all this info – it was most helpful! I realised after study of this info and your schematic that I had got my ADCs back-to-front. As I’m only using five ADC inputs (2V5 Vref, VT1, CT1–3), I connected (on my PCB) all those to what I thought was the ‘first’ ADC (based on your schematic 'ADC1–17 notation), but turns out to be the ‘second’ ADC. This allows me to omit the other ADC IC and its clamp diodes, and save a few cents! (Though my PCB allows for the fitting of the other ADC and diodes and connectors, for anyone wanting more.)

So when I finally worked out where my VT1 was connected, I went to the ‘Calibrate’ screen and was most pleased to see that the default factor (20) gave me an exact mains voltage reading, according to my Tektronix (true-RMS) DMM. Then I went about configuring my CTs, having also worked out where they were.

Needless to say, because the firmware is accessing the ‘second’ ADC all the time, the NodeMCU’s blue LED is lit continuously!

But some time later, I looked at the Status screen, and noticed that the mains voltage was low:
(it’s usually over 240V).
So I went back to the Inputs config screen to recheck the Calibrate (VT) screen, and found it now reporting ridiculously low voltages, changing rapidly and ranging from over 30 to –1!

So I’m a little lost, being unable to reconcile the Status and Calibrate screens and their very different (but both wrong) values.

Are you able to offer any suggestions on where I should start looking?


Sorry, I have no idea.

OK, I carefully checked my hardware, and found a dry solder joint on one of the VT divider resistors. After fixing that, I now get stable and accurate mains voltage display in the Status screen:

But the frequency is totally wrong!

Additionally, though I currently have only two of the intended three CTs connected, the one (from the inverter output) that had current through it this afternoon (I could measure a small AC voltage across its burden) still shows zero for its power in the status screen.

My ADC connection scheme is different from ‘standard’. I have VT connected to ADC1.4, and the three CTs connected to ADC1.1, .2 and .3. The 2V5 reference is on ADC1.0.

So I’m pretty sure I’ve assigned the correct channels:

but still no reading from the Inverter channel.

I know it shouldn’t, but I’m wondering if the firmware is perhaps making an assumption that the principal VT will be on ADC0.0?

Still perplexed,