OK, I have got this to work now. I had two different streams of data on the same MQTT topic - power useage which was logged every 5 seconds and was constantly changing, and the oil tank level which logged every 15 minutes and only changed every one or two days. I didn’t realise that OpenHAB only logs an event if the MQTT data changes, but once I published the data manually using
mosquitto_pub -h localhost -i RTL_433 -t RTL_433/JSON -m '{"time" : "2017-12-29 09:52:32", "model" : "Oil Watchman", "id" : 137574874, "flags" : 128, "maybetemp" : 27, "temperature_C" : 3.433, "binding_countdown" : 0, "depth" : 88}'
the problem was obvious.
I put back my original items and tried again
Number OilDepth "Depth [%d cm]" (g1) { mqtt="<[broker:RTL_433/JSON:state:JSONPATH($.depth):.*\"id\" \\: 137574874,.*]"}
Number OilTemp "Oil Temperature [%.2f °C]" (g1) { mqtt="<[broker:RTL_433/JSON:state:JSONPATH($.temperature_C):.*\"id\" \\: 137574874,.*]"}
Number PowerMeter "Power [%d W]" (g1) { mqtt="<[broker:RTL_433/JSON:state:JSONPATH($.power0):.*\"dev_id\" \\: 77,.*]"}
Everything works and the oil level and temperature are logged as I change their values.Thanks for your help @rlkoshak, I now know a lot more about REGEX, MQTT and items files!