PurpleAir Air Quality Sensor

My mistake, PurpleAir has DewPoint built in. I use the calculation on my indoor sensors, but here you go:

- platform: template
  sensors:
    bathroom_master_dewpoint:
      friendly_name: "Bathroom Master Dewpoint"
      value_template: >-
        {% set h = states('sensor.bathmaster_multisensor_humidity_air') | float(default=0) %}
        {% set t = states('sensor.bathmaster_multisensor_temperature_air') | float(default=0) %}
        {{((t-32)*5/9-(100-h)/5)*9/5+32}}
      unit_of_measurement: "F"

Here is my mostly complete PA in HA:

- platform: rest
  name: 'PurpleAir'
  resource: http://10.74.1.198/json?live=false
  value_template: '{{ value_json.SensorId }}'
  scan_interval: 120
  json_attributes:
    #- Mem
    #- memfrag
    - uptime
    - rssi
    #- Adc
    - current_temp_f
    - current_humidity
    - current_dewpoint_f
    - pressure
    - p_0_3_um
    - p_0_3_um_b
    - p_0_5_um
    - p_0_5_um_b
    - p_1_0_um
    - p_1_0_um_b
    - pm1_0_atm
    - pm1_0_atm_b
    - p_2_5_um
    - p_2_5_um_b
    - pm2_5_atm
    - pm2_5_atm_b
    - p_5_0_um
    - p_5_0_um_b
    - p_10_0_um
    - p_10_0_um_b
    - pm10_0_atm
    - pm10_0_atm_b
    - pm2.5_aqi
    - pm2.5_aqi_b
- platform: template
  sensors:
   # purpleair_memory:
   #   friendly_name: "PurpleAir Memory"
   #   value_template: '{{ states.sensor.purpleair.attributes["Mem"] }}'
   # purpleair_adc:
   #   friendly_name: "PurpleAir ADC"
   #   value_template: '{{ states.sensor.purpleair.attributes["Adc"] }}'
    purpleair_uptime:
      friendly_name: "PA Uptime"
      value_template: '{{ states.sensor.purpleair.attributes["uptime"] }}'
      unit_of_measurement: "seconds"
   # purpleair_memory_fragmentation:
   #   friendly_name: "PurpleAir Memory Fragmentation"
   #   value_template: '{{ states.sensor.purpleair.attributes["memfrag"] }}'
    purpleair_wifi_rssi:
      friendly_name: "PA Wifi RSSI"
      value_template: '{{ states.sensor.purpleair.attributes["rssi"] }}'
      device_class: signal_strength
    purpleair_temp:
      friendly_name: "PA Temperature"
      value_template: '{{ states.sensor.purpleair.attributes["current_temp_f"] }}'
      unit_of_measurement: "F"
      device_class: temperature
    purpleair_humidity:
      friendly_name: "PA Humidity"
      value_template: '{{ states.sensor.purpleair.attributes["current_humidity"] }}'
      unit_of_measurement: "%"
      device_class: humidity
    purpleair_dewpoint:
      friendly_name: "PA Dewpoint"
      value_template: '{{ states.sensor.purpleair.attributes["current_dewpoint_f"] }}'
      unit_of_measurement: "F"
      device_class: temperature
    purpleair_pressure:
      friendly_name: "PA Pressure"
      value_template: '{{ states.sensor.purpleair.attributes["pressure"] }}'
      unit_of_measurement: "mbar"
      device_class: pressure
    purpleair_aqi_a:
      friendly_name: "PA AirQuality A"
      value_template: '{{ states.sensor.purpleair.attributes["pm2.5_aqi"] }}'
      unit_of_measurement: "AQI"
    purpleair_aqi_b:
      friendly_name: "PA AirQuality B"
      value_template: '{{ states.sensor.purpleair.attributes["pm2.5_aqi_b"] }}'
      unit_of_measurement: "AQI"
    purpleair_p_0_3_um_a:
      friendly_name: "PA .3um Partical Count A"
      value_template: '{{ states.sensor.purpleair.attributes["p_0_3_um"] }}'
      unit_of_measurement: "um/dl"
    purpleair_p_0_3_um_b:
      friendly_name: "PurpleAir .3um Partical Count B"
      value_template: '{{ states.sensor.purpleair.attributes["p_0_3_um_b"] }}'
      unit_of_measurement: "um/dl"
    purpleair_p_0_5_um_a:
      friendly_name: "PA .5um Partical Count A"
      value_template: '{{ states.sensor.purpleair.attributes["p_0_5_um"] }}'
      unit_of_measurement: "um/dl"
    purpleair_p_0_5_um_b:
      friendly_name: "PA .5um Partical Count B"
      value_template: '{{ states.sensor.purpleair.attributes["p_0_5_um_b"] }}'
      unit_of_measurement: "um/dl"
    purpleair_p_1_0_um_a:
      friendly_name: "PA 1.0um Partical Count A"
      value_template: '{{ states.sensor.purpleair.attributes["p_1_0_um"] }}'
      unit_of_measurement: "um/dl"
    purpleair_p_1_0_um_b:
      friendly_name: "PA 1.0um Partical Count B"
      value_template: '{{ states.sensor.purpleair.attributes["p_1_0_um_b"] }}'
      unit_of_measurement: "um/dl"
    purpleair_p_2_5_um_a:
      friendly_name: "PA 2.5um Partical Count A"
      value_template: '{{ states.sensor.purpleair.attributes["p_2_5_um"] }}'
      unit_of_measurement: "um/dl"
    purpleair_p_2_5_um_b:
      friendly_name: "PA 2.5um Partical Count B"
      value_template: '{{ states.sensor.purpleair.attributes["p_2_5_um_b"] }}'
      unit_of_measurement: "um/dl"
    purpleair_p_5_0_um_a:
      friendly_name: "PA 5.0um Partical Count A"
      value_template: '{{ states.sensor.purpleair.attributes["p_5_0_um"] }}'
      unit_of_measurement: "um/dl"
    purpleair_p_5_0_um_b:
      friendly_name: "PA 5.0um Partical Count B"
      value_template: '{{ states.sensor.purpleair.attributes["p_5_0_um_b"] }}'
      unit_of_measurement: "um/dl"
    purpleair_p_10_0_um_a:
      friendly_name: "PA 10.0um Partical Count A"
      value_template: '{{ states.sensor.purpleair.attributes["p_10_0_um"] }}'
      unit_of_measurement: "um/dl"
    purpleair_p_10_0_um_b:
      friendly_name: "PA 10.0um Partical Count B"
      value_template: '{{ states.sensor.purpleair.attributes["p_10_0_um_b"] }}'
      unit_of_measurement: "um/dl"
    purpleair_pm10_atm_a:
      friendly_name: "PA 10.0um Mass A"
      value_template: '{{ states.sensor.purpleair.attributes["pm10_0_atm"] }}'
      unit_of_measurement: "ug/m3"
    purpleair_pm10_atm_b:
      friendly_name: "PA 10.0um Mass B"
      value_template: '{{ states.sensor.purpleair.attributes["pm10_0_atm_b"] }}'
      unit_of_measurement: "ug/m3"
    purpleair_pm1_atm_a:
      friendly_name: "PA 1.0um Mass A"
      value_template: '{{ states.sensor.purpleair.attributes["pm1_0_atm"] }}'
      unit_of_measurement: "ug/m3"
    purpleair_pm1_atm_b:
      friendly_name: "PA 1.0um Mass B"
      value_template: '{{ states.sensor.purpleair.attributes["pm1_0_atm_b"] }}'
      unit_of_measurement: "ug/m3"
    purpleair_pm2_5_atm_a:
      friendly_name: "PA 2.5um Mass A"
      value_template: '{{ states.sensor.purpleair.attributes["pm2_5_atm"] }}'
      unit_of_measurement: "ug/m3"
    purpleair_pm2_5_atm_b:
      friendly_name: "PA 2.5um Mass B"
      value_template: '{{ states.sensor.purpleair.attributes["pm2_5_atm_b"] }}'
      unit_of_measurement: "ug/m3"
    purpleair_description:
      friendly_name: 'PA AQI Description'
      unique_id: purpleair_description
      value_template: >
        {% set aqi = states('sensor.purpleair_aqi_a')|float(default=0) %}
        {% if aqi >= 401.0 %}
          Very Hazardous
        {% elif aqi >= 301.0 %}
          Hazardous
        {% elif aqi >= 201.0 %}
          Very Unhealthy
        {% elif aqi >= 151.0 %}
          Unhealthy
        {% elif aqi >= 101.0 %}
          Unhealthy for Sensitive Groups
        {% elif aqi >= 51.0 %}
          Moderate
        {% elif aqi >= 0.0 %}
          Good
        {% else %}
          {{states('sensor.purpleair_description')}}
        {% endif %}
      entity_id: sensor.purpleair
      #availability_template: '{{ not is_state("sensor.purpleair", "unavailable") }}'

1 Like