The fundamental problem is that electricity is a positively terrible way to store heat. First, electricity doesn't store much heat energy. Second, converting solar heat to electricity in a PV panel has a positvely terrible exchange rate of like 5%, to say nothing of 20-30% losses in and out of the battery, with the battery itself being prohibitively expensive. It's just thermodynamically impossible unless you have a million dollars to spend.
Far better to store the sun's heat directly - using a solar-thermal panel to collect it, and a big hyper-insulated tank of rocks to store it. Rocks are cheaper than batteries, and solar thermal panels are a heck of a lot more efficient than PV. Truth be told, water is a far better heat-storage mass, actually the best available... but you have a risk of that freezing, so you want antifreeze at least in the transfer loops.
However, I gather none of this is practicable for you. In that case, burning stuff makes the largest amount of heat by far, though, it's not green.
I'm not supposed to tell you about these. These are electricity-free furnaces which work on a millivolt thermostat. So you have a normal thermostat on the wall, it's just millivolt and doesn't require any power.
They come in sizes ranging from 10,000 to 50,000 BTU. The 50,000 mounts on an interior wall and heats rooms on both sides. These units run on natural gas or propane.
The reason you've never heard of them is they are exclusive to the sunbelt. I have no earthly idea why; having sat through many rust belt blackouts with the house freezing, vs. a few sunbelt blackouts with the heater going "ka-thunk wooosh" at normal intervals.
I suppose there's a risk, in a poorly insulated house, that if you closed off a room too well, the heat might not reach through and freeze pipes. But in your case, your aim is to heat one room, so it's perfect.
You can also parallel the normal 'stat with a Nest or other 24V stat, just add transformer and relay; the Nest will fail when the power fails, but that's why you leave the normal 'stat in place as a fallback and set it to 50F/10C to prevent freeze.