I've been doing some more testing, and it looks like the BMW servers are not responding in a reasonable amount of time when using functions that actually contact the car in real time. Namely lock and unlock doors, climatize, flash lights and sound horn. Other status info is periodically gathered from the vehicle by the servers and a cached value is returned to the client.
Things like querying fuel or battery level, or lid states is just a call to the server and doesn't require the extra step of contacting the car over the cellular network. These queries don't seem to give me any problems.
But back to the remote services: I changed the bimmerconnected library remote_services.py module to increase the remote timeout to 300 sec (5 minutes). Even giving it that unreasonably long timeout delay I didn't get a response from the server. The services worked, however. Horn honked, lights flashed, locks locked and climatize . . . climatized. So it seems that the BMW servers aren't returning confirmation that these remote services worked. I doubt it's a cell network problem, since the non real-time functions still work. Perhaps they've just changed the protocol out from under us. Would this cause the BMW app to misbehave when climatizing? From what I've read above, it just doesn't work, right? Not that it cools the car even though it says it didn't. Am I reading that correctly? (I don't have a phone that supports the app).
Anyway, I've made some fixes and improvements in the underlying library and my script that I'll upload and share "soon".
Edit: updated motorlaunch.py on github to add function to download rendered images of your vehicle. Rearbirdseye doesn't work for me for my '17 i3 + Rex. (library throws error) If you see different results with your car (like success!) let me know . . . Also front and frontside views are the same, as are rear and rearside. I would've expected one to be head on and one from an angle, but that's not how it worked for me. Files will show up in your .motorlaunch directory with the other config file.
Also, if you have a sunroof, there is a bug in the bimmer_connected library that throws errors when getting status while sunroof is tilted open. To fix this, go to the directory with m1n3rva's bimmer_connected files and edit state.py. Look for:
At the end of the list add:
. . . ensuring that the indent matches the line above