You're forgetting about orientation (and altitude)? The observed position also varies a bit with air pressure and temperature, but iirc that's less than a few degrees.
Anyway, you grab yourself a nice ephemeris library like skyfield, do a little bit of your_location.at(now).observe(sun).apparent().altaz('standard'), and there's your angles.
The trickiest part might be getting an accurate time on whatever cheap controller your using.