Nope. This isn't right. A cough since September???
Get another opinion if you want to go the medical route. No 4 year old should be on meds that long. It could be bronchitis (I used to get that 4 times a year and it would last for a month). It's worse at night, which is why he can't sleep and why he's exhausted. It may be viral, may be bacterial. Prop up the head-end of the bed - roll a blanket or fold it, and stick it under the mattress so he slants up from the waist. Don't just push up his head.
Could be asthma but usually that's more wheezy than cough-y. If it's a barking type cough, it could be croup or whooping cough.
The mucus draining is causing the stomach upset and vomiting. That could be from what he's coughing up, or it could be from a concurrent sinus infection that's draining post-nasally and filling up his stomach with junk he can't digest (not that you'd want him to). He may also be reacting to all that medication.
You can strengthen his immune system which sounds really compromised - that's what I did and none of us have had a sick visit to the doctor in 5 years. It's not going to turn him around in a day or two, but it will help and will, ideally, prevent a recurrence. Sounds like the 2 year old needs the same thing. That can be done without meds but it takes some time, as I said.