Thanks for this contribution, Werner! I'm really glad to see that someone tackled this.
I hope you don't mind a few suggestions.
General:
1. I would separate out the driver from the skin. Modular software is always a better idea.
2. You do a lot of remapping from WL variables to names that are intended to be used within the WeeWX system. This is normally done by a "sensor map", which is read from weewx.conf, rather than hardwired into your code. Many of the drivers on the wiki do this. Here's one:
interceptor.
3. One of those sensor maps should map the WL names as closely as possible to the existing WeeWX names so that a user can use all those existing skins out there without modification.
4. You redefine many existing types (e.g., dayRain). This is fine for your own personal customization, but if you are going to redistribute a skin or driver, it is not a good idea. There is a high likelihood that you will collide with someone else's customization.
5. I think all of your "sun events" can already be calculated by the WeeWX "Almanac" class.
Specific suggestions:
1. Some of your unit groups already exist. In particular, "group_amp", "group_db".
2. There is no need for a "group_millivolts". Millivolts is just another unit in group_volt. Units are generally named in the singular, so it should be "millivolt".
3. There is already something like "sunshine_hours". It's called "sunshineDur".
4. Some other observation types also already exist ("totalRain", "stormRain", "rxCheckPercent", etc.).
Anyway, this is an important contribution! Thanks again.