Просмотр исходного кода

Add Tuya EM3395TY-2 weather station (#4531)

* Add Tuya EM3395TY-2 weather station

Adds device config for the Tuya EM3395TY-2 WiFi weather station
(product_id: 6cwineqz1ndjmuee).

Supported entities:
- Indoor/outdoor temperature and humidity (DP 1,2,38,39)
- 3 optional external temperature/humidity channels (DP 40-45)
- Battery percentage (DP 4)
- Atmospheric pressure and pressure drop (DP 54,55)
- Wind speed and gust (DP 56,57)
- Rain 1h, 24h and rainfall rate (DP 59,60,61)
- UV index (DP 62)
- Dew point, feels like, heat index, wind chill (DP 64-67)
- Unit selectors for temperature, wind, pressure, rain (DP 9-12)

DP mapping verified via Tuya IoT Platform API.
Tested on physical device.

* fix (EM3395TY_weather_station): address PR review feedback

- Remove manufacturer field (Tuya only makes WiFi modules)
- Remove redundant Battery name (same as class)
- Remove Outdoor prefix from temperature/humidity (implicit for weather station)
- Change pressure class to atmospheric_pressure
- Add wind_speed class to wind speed and gust sensors
- Use precipitation/precipitation_intensity classes for rain sensors
- Remove redundant UV Index unit

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix (em3395ty_weatherstation): avoid mixed case filenames

- also remove use of yaml merge keys, as it makes it more difficult for
other users to follow the file.

PR #4531

---------

Co-authored-by: Jason Rumney <make-all@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Jason Rumney <jasonrumney@gmail.com>
killercece 3 дней назад
Родитель
Сommit
18fc00306c
1 измененных файлов с 304 добавлено и 0 удалено
  1. 304 0
      custom_components/tuya_local/devices/em3395ty_weatherstation.yaml

+ 304 - 0
custom_components/tuya_local/devices/em3395ty_weatherstation.yaml

@@ -0,0 +1,304 @@
+name: Weather station
+products:
+  - id: 6cwineqz1ndjmuee
+    model: EM3395TY-2
+entities:
+  - entity: sensor
+    name: Indoor temperature
+    class: temperature
+    dps:
+      - id: 1
+        type: integer
+        name: sensor
+        unit: C
+        mapping:
+          - scale: 10
+        class: measurement
+  - entity: sensor
+    name: Indoor humidity
+    class: humidity
+    dps:
+      - id: 2
+        type: integer
+        name: sensor
+        unit: "%"
+        class: measurement
+  - entity: sensor
+    class: battery
+    category: diagnostic
+    dps:
+      - id: 4
+        type: integer
+        name: sensor
+        unit: "%"
+        class: measurement
+  - entity: select
+    translation_key: temperature_unit
+    category: config
+    dps:
+      - id: 9
+        type: string
+        name: option
+        mapping:
+          - dps_val: c
+            value: celsius
+          - dps_val: f
+            value: fahrenheit
+  - entity: select
+    name: Wind speed unit
+    icon: mdi:weather-windy
+    category: config
+    dps:
+      - id: 10
+        type: string
+        name: option
+        mapping:
+          - dps_val: mps
+            value: m/s
+          - dps_val: kmph
+            value: km/h
+          - dps_val: mph
+            value: mph
+  - entity: select
+    name: Pressure unit
+    icon: mdi:gauge
+    category: config
+    dps:
+      - id: 11
+        type: string
+        name: option
+        mapping:
+          - dps_val: hpa
+            value: hPa
+          - dps_val: inhg
+            value: inHg
+          - dps_val: mmhg
+            value: mmHg
+  - entity: select
+    name: Rain unit
+    icon: mdi:weather-rainy
+    category: config
+    dps:
+      - id: 12
+        type: string
+        name: option
+        mapping:
+          - dps_val: mm
+            value: mm
+          - dps_val: inch
+            value: inch
+  - entity: sensor
+    class: temperature
+    dps:
+      - id: 38
+        type: integer
+        name: sensor
+        unit: C
+        mapping:
+          - scale: 10
+        class: measurement
+  - entity: sensor
+    class: humidity
+    dps:
+      - id: 39
+        type: integer
+        name: sensor
+        unit: "%"
+        class: measurement
+  - entity: sensor
+    name: Temperature ch1
+    class: temperature
+    dps:
+      - id: 40
+        optional: true
+        type: integer
+        name: sensor
+        unit: C
+        mapping:
+          - scale: 10
+        class: measurement
+  - entity: sensor
+    name: Humidity ch1
+    class: humidity
+    dps:
+      - id: 41
+        optional: true
+        type: integer
+        name: sensor
+        unit: "%"
+        class: measurement
+  - entity: sensor
+    name: Temperature ch2
+    class: temperature
+    dps:
+      - id: 42
+        optional: true
+        type: integer
+        name: sensor
+        unit: C
+        mapping:
+          - scale: 10
+        class: measurement
+  - entity: sensor
+    name: Humidity ch2
+    class: humidity
+    dps:
+      - id: 43
+        optional: true
+        type: integer
+        name: sensor
+        unit: "%"
+        class: measurement
+  - entity: sensor
+    name: Temperature ch3
+    class: temperature
+    dps:
+      - id: 44
+        optional: true
+        type: integer
+        name: sensor
+        unit: C
+        mapping:
+          - scale: 10
+        class: measurement
+  - entity: sensor
+    name: Humidity ch3
+    class: humidity
+    dps:
+      - id: 45
+        optional: true
+        type: integer
+        name: sensor
+        unit: "%"
+        class: measurement
+  - entity: sensor
+    class: atmospheric_pressure
+    dps:
+      - id: 54
+        type: integer
+        name: sensor
+        unit: hPa
+        class: measurement
+  - entity: sensor
+    name: Pressure drop
+    class: atmospheric_pressure
+    dps:
+      - id: 55
+        type: integer
+        name: sensor
+        unit: hPa
+        class: measurement
+  - entity: sensor
+    class: wind_speed
+    dps:
+      - id: 56
+        optional: true
+        type: integer
+        name: sensor
+        unit: m/s
+        mapping:
+          - scale: 10
+        class: measurement
+  - entity: sensor
+    name: Wind gust
+    class: wind_speed
+    dps:
+      - id: 57
+        optional: true
+        type: integer
+        name: sensor
+        unit: m/s
+        mapping:
+          - scale: 10
+        class: measurement
+  - entity: sensor
+    name: Rain 1h
+    class: precipitation
+    dps:
+      - id: 59
+        type: integer
+        name: sensor
+        mapping:
+          - scale: 10
+        class: measurement
+        unit: mm
+  - entity: sensor
+    class: precipitation
+    dps:
+      - id: 60
+        type: integer
+        name: sensor
+        mapping:
+          - scale: 10
+        class: measurement
+        unit: mm
+  - entity: sensor
+    class: precipitation_intensity
+    dps:
+      - id: 61
+        optional: true
+        type: integer
+        name: sensor
+        mapping:
+          - scale: 10
+        class: measurement
+        unit: mm/h
+  - entity: sensor
+    name: UV index
+    icon: mdi:weather-sunny
+    dps:
+      - id: 62
+        type: integer
+        optional: true
+        name: sensor
+        mapping:
+          - scale: 10
+        class: measurement
+  - entity: sensor
+    name: Dew point
+    class: temperature
+    dps:
+      - id: 64
+        optional: true
+        type: integer
+        name: sensor
+        unit: C
+        mapping:
+          - scale: 10
+        class: measurement
+  - entity: sensor
+    name: Feels like temperature
+    class: temperature
+    dps:
+      - id: 65
+        optional: true
+        type: integer
+        name: sensor
+        unit: C
+        mapping:
+          - scale: 10
+        class: measurement
+  - entity: sensor
+    name: Heat index
+    class: temperature
+    dps:
+      - id: 66
+        optional: true
+        type: integer
+        name: sensor
+        unit: C
+        mapping:
+          - scale: 10
+        class: measurement
+  - entity: sensor
+    name: Wind chill index
+    class: temperature
+    dps:
+      - id: 67
+        optional: true
+        type: integer
+        name: sensor
+        unit: C
+        mapping:
+          - scale: 10
+        class: measurement