> There's no HTTP result code for "your request was successful but your Smart Washing Machine is out of detergent", for example.
That comes down to your definition of success. Yeah, the client successfully connected and the server read the request, but it was unable to process said request.
To my mind, that's a 500, as in the server was not able to handle the request due to a circumstances beyond the clients control.