This is expected behavior. displayState is only defined if it is different than the actual state (to reduce data demands). This is why you should never rely on displayState only unless you know that whatever transformation you are applying will always give a novel result.
Most widgets examples that use displayState also make sure to fall back to state in case the former is undefined. The default new widget code even includes one example of this:
content: =items[props.item].displayState || items[props.item].state
In fact, this is used so often, there’s a shortcut for it: the single @. So, you can just use
footer: =@'Deye_PV1_Voltage' + ' / ' + @'Deye_PV1_Current'