MQTT weather station protocol for a WH24P RS485 weather station?

Hi,

I have a WH24P weather station from the Chinese company MISOL(http://aliexpress.com/item/32976403129.html). It’s an impressive weather station. This is the struct I’m using in Arduino to show you the options:
struct WH24PData
{
bool Valid = false;
bool LowBattery;
unsigned int WindDirection;
float WindSpeed;
float Temperature;
uint8_t Humidity;
float GustSpeed;
unsigned int TotalRainfall;
unsigned int UV;
uint8_t UVIndex;
float Light;
};
This device doesn’t allow receiving any settings or requests. It communicates by sending a RS485 signal that is translated to a normal UART by a RS485-TTL converter. The device sends 21 bytes each 16 seconds. I’m using a NodeMCU v3 for this project. I have installed MQTT explorer onto my computer and see the communication of other devices (Tasmota and my Arduino MQTT example). I use a PubSubClient for MQTT in Arduino. Everything is going well, but how can I integrate this weather station in home assistant. I’m new in home assistant and MQTT.
I could emulate a MQTT Tasmota device, but I see this only as a last option. I prefer to make my own MQTT device made compatible with home assistant. Can I use a MQTT weather standard for this device? Are there standard topics? If not, how can I process custom topics in home assistant?
Maybe another option is to make it compatible with weather underground and let home assistant get data from the weather underground server for a specific node(my node)? I don’t know if weather underground is happy with updates each 16 seconds?
Any help is welcome. Please tell me which topics to publish and how it works best in home assistant…
Thanks in advance for your help.

Kind regards,
Erik

Example yaml config below. In your case bring in the MQTT as sensors then you can assign them as weather as show. I personally use the Animated Weather Card, but any should work for you.
You can pull forcast from somewhere else.
I can provide the visibility calculation if you would like it. It is based on NOAA observations at sea level, I just modified it to adjust maximum visibility to the horizon based on elevation above sea level.

weather:
  - platform: template
    name: My Local Weather
    condition_template: "{{ states('sensor.hub_hb_00000001_weather') }}"
    temperature_template: "{{ states('sensor.tempest_st_00000001_temperature') | float}}"
    humidity_template: "{{ states('sensor.tempest_st_00000001_humidity')| int }}"
    pressure_template: "{{ states('sensor.tempest_st_00000001_sea_level_pressure')| float }}"
    wind_speed_template: "{{ ( states('sensor.tempest_st_00000001_wind_speed_avg') | float * 18 / 5 ) | round(2) }}"
    wind_bearing_template: "{{ states('sensor.tempest_st_00000001_wind_bearing_avg')| int }}"
    visibility_template: "{{ states('sensor.tempest_st_00000001_visibility')| float }}"
    forecast_template: "{{ state_attr('sensor.hub_hb_00000001_weather', 'hourly_forecast') }}"