No, I’ve not given up on i2c for the home control software FAR from it. Once I realised there was something up at the Arduino end which I could work around, my ESP8266 I2c endeavours have been coming on in leaps and bounds !
And here is progress to date now, it is not pretty it’s an experimenting rig I’ll make a nice one later.:

So what you’re looking at there from top to bottom is a prototyping ESP8266 board (the author will recognise it) just because I had it handy ESP-12 based, running my rapidly developing software (which now has loads of spare RAM thanks to the SDK 2.0). I put a simple set of i2c commands in there then promptly realised that a series of commands sent by MQTT would not be a lot of use. I then proceeded to waste the day, having already talked successfully to an 8-bit port expander, trying to get one of those back-of-an-LCD I2C boards to work as it was based on the same chip.
After several hours of considering taking up brick-laying I realised the damned thing was bust and went off in search of my cheap Chinese port expander that’s the red thing you see in the middle. The only difference is this does not have a transistor to power an LCD backlight so I just hardwired that. At the bottom the original test 4-line LCD. Over on the right, an irrelevant Arduino-type board which is also talking I2c successfully.
Having decided I liked the idea of plugging one of the cheap LCDs onto the odd home control board for information purposes, I set about doing something I’ve never done before reading the Hitachi data sheet. These things are quite cute once you get over starting in 8-bit mode then switching to 4-bit to save on wires etc… (so in total you only need 6 signals to talk to the LCD) and after some timing experimenting (clear screen command takes a while over 1.5ms) as you can see I finally have a working LCD and by the look of it, rock-solid reliable.
So what is driving that display (which is updating every second virtually instantly)…
This:

and inside that inject?
Topic: freddy/toesp
Payload: {hitachi:39,”$1MQTT test$2$i$3Time $t$4Date $d”}
That’s all. So assuming you’re familiar with MQTT (if not look at other articled in here) the destination is the little board “freddy” and the new command I’ve just added “hitachi” talks to an i2c board (the expander) device #39 and sends out that string.
Rather than have a boatload of commands which would be unwieldy in the home control setup or special characters which might cause issues I used the dollar as an escape character. Here’s what I’ve implemented up to now
$$ well that shows a dollar on the screen !! $s setup sets up a virgin LCD and clears the screen $c clear the screen $1 set the cursor to line 1 ($2 $3 $4) $t fire out the time $d fire out the date $i fire out the current ip addressI’ll probably settle on a 2-liner as they are sub-2 from China indeed for 20-off just over 1 and at 1.34 for the port expander around 3 to add a nice little display to some of the ESP8266 boards can’t be bad. indeed, using one of the port expanders for an ultra-low-cost i2c keypad isn’t a bad idea. 45p for the keyboard , 1.34 for the expander… Sub-2 keypad.
That’s all for now clearly one way to wipe a line would be “$1 $1” which is probably fast enough for most purposes. I’ll likely think of some more commands.