Hi Glyn,
Sorry for the slow follow up. I was expecting to get an email when any new posts appeared on this thread, but either I didn’t configure things correctly, or the message went into my spam box 
Anyway, I am attaching a copy of the modified version of the emonTH_DHT22_DS18B20_RFM69CW firmware that I have been running since my original post, as requested.
emonTH_DHT22_DS18B20_RFM69CW_Pulse.ino (18.5 KB)
The good news is that since my original post (when I made my changes), I have had no recurrences of the misreadings which were previously occurring a number of times per hour, and I have not observed any newly introduced issues.
On the down side, I am afraid I have made a number of other changes to the code which are not directly related to the fix. so a simple diff won’t suffice to identify the relevent changes. I thought about going back to the original source and just adding fixes for the problem I described, but I didn’t want to post something that had not had adequate testing.
There are, I am afraid, a number of gratuitous stylistic changes added for my own convenience and ease of debugging. I didn’t do that with the expectation of trying to push it back - I know you will want to stick to your own consistent style. For example, I moved some comments from the right of code to their own lines to prevent excessive line wrap on printouts, and put the diagnostic output statements in a separate function so as not to complicate the loop() function with statements not directly part of the main functionality and often not executed. I also like to explicitly declare scope for declarations, and place function definitions before use… (so as not to need explicit prototypes).
Anyway - just thought I would mention that so as not to provoke a debate on something as subjective as coding style.
I think the functional changes are all conditionally included via pre-processor definitions near the top of the source. The changes associated with the prematurely truncated delays are included by defining ‘INSOMNIA’… That should make it reasonably easy to pick out the changes associated with the problem fix for application to your code should you decide it appropriate.
I should also point out that I am not asserting that this is an optimal fix. It is a simple minded fix which resolved the problem for me, but I have not yet finished reading the ATmega328 datasheet, so there may be better/more power efficient ways to correct the problem.
If you would like me to go put go back to the original source and patch in the fixes in a minimally intrusive way suitable for consideration as an update ready for testing, let me know. Otherwise I am happy to leave it to whoever the official maintainer is.
Hope that helps.
Digby