Integrating values from Airthings Wave Plus

100 views
Skip to first unread message

Dave Schwartz

unread,
Jan 7, 2023, 1:46:18 PM1/7/23
to weewx-user
Hi, first time poster here...

I'm trying to integrate the values from my new Airthings Wave Plus air quality monitor.

Some background info: On an RPi 3+, I'm using rtl_433 to grab Acurite outdoor sensor values via RF and airthings-mqqt-ha to grab Airthings values via Bluetooth and send MQTT messages which are being caught by the MQTTSubscribe driver. I'm using the noewx-material skin to do the HTML generation.  I used to have a BME280 sensor on the GPIO bus to provide inside temperature, humidity and pressure and have successfully displaced that with the like values from the Airthings.

Now I want to integrate the other three sensor values: CO2, Radon and VOC.

I saw that Weeex has an appropriate co2 member with the right ppm unit/label and when I added the stanza to the MQTTSubcribe section and the neowx-material skin.conf values_order and chart_order strings I get the co2 ppm value on the web page. [MQTTSubscribe didn't like 'units = ppm' but letting it default to float works OK.]

Now I want to do the same for Radon (unit Bq) and VOC (unit ppb).

There aren't obvious specific places to pass through these values so how can I use some of the large number of unused sensor names to put these to values in and configure the neowx-material skin to get them onto the page with the right label and unit?

Thanks
...Dave

Paul “Paz” Zwarts

unread,
Aug 24, 2024, 8:55:46 AM8/24/24
to weewx-user
Hi, have you made any progress on this?

I managed to integrate data from my Emporia electricity monitor. I built a heat pump system and I wanted to add a graph of the energy usage to be visible with weather so i understand what my hvac is doing during more extreme weather events.

TBH, I don't fully understand what I did to get it working, but in my conf I have a few sections where i added the reference. To get the data in there I have a shell script where i post to MQTT myself, and ther config below manages to get that data into the loop for picking up in the interface. 

My weather hardware is an ecowit using gw1000 device extension, also using the addon MQTTSubscribeService on top of the normal mqtt setup expected. The skin is blechertown which complained at first of new fields, but seemed to be happy if I put a placeholder in.

Maybe this can help you. I am also interested in the Wave Plus, are you happy with it? I have a CO2 monitor in my house and have noticed that CO2 increases slowly even without people or animals home. I suspect radon and issues possibly coming from under the concrete slab in the basement. 

    [[MQTT]][Accumulator]
        server_url = mqtt://user:password@localhost:1883/
        topic = weather
        unit_system = METRIC
        binding = archive, loop
        aggregation = aggregate
        [[[Decoders]]]
            # Map MQTT topics to WeeWX observation types
            weather/houseac = houseac

    [[Belchertown]]
....
        [[[Extras]]]
            houseac = none

        [[[Labels]]]
            # Users frequently change the labels for these observation types.
            [[[[Generic]]]]
                # inHumidity     = Inside Humidity
                # inTemp         = Inside Temperature
                # outHumidity    = Outside Humidity
                # outTemp        = Outside Temperature
                # extraTemp1     = Temperature1
                # extraTemp2     = Temperature2
                # extraTemp3     = Temperature3
                # The following line is used to keep the above lines indented
                # properly. It can be ignored.
                houseac = HVAC kwHrs    


[Accumulator]
....
    [[houseac]]
        extractor = last

    [[Services]]
        prep_services = weewx.engine.StdTimeSynch
        data_services = user.gw1000.GatewayService, user.MQTTSubscribe.MQTTSubscribeService
        process_services = weewx.engine.StdConvert, weewx.engine.StdCalibrate, weewx.engine.StdQC, weewx.wxservices.StdWXCalculate
        xtype_services = weewx.wxxtypes.StdWXXTypes, weewx.wxxtypes.StdPressureCooker, weewx.wxxtypes.StdRainRater, weewx.wxxtypes.StdDelta
        archive_services = weewx.engine.StdArchive
        restful_services = weewx.restx.StdStationRegistry, weewx.restx.StdWunderground, weewx.restx.StdPWSweather, weewx.restx.StdCWOP, weewx.restx.StdWOW, weewx.restx.StdAWEKAS, user.mqtt.MQTT
        report_services = weewx.engine.StdPrint, weewx.engine.StdReport

[MQTTSubscribeService]
    # This section is for the MQTTSubscribe service.
    # Turn the service on and off.
    # Default is: true
    # Only used by the service.
    enable = true
    # The MQTT server.
    # Default is localhost.
    host = localhost

    # The port to connect to.
    # Default is 1883.
    port = 1883

    # Maximum period in seconds allowed between communications with the broker.
    # Default is 60.
    keepalive = 60

    # username for broker authentication.
    # Default is None.
    username = weather

    # password for broker authentication.
    # Default is None.
    password = blackma1l

    # The binding, loop or archive.
    # Default is: loop
    # Only used by the service.
    binding = loop

    # The message handler to use
    [[message_callback]]
        # The format of the MQTT payload.
        # Currently support: individual, json, keyword
        # Must be specified.
        type = individual

    # The topics to subscribe to.

    [[topics]]
        # Units for MQTT payloads without unit value.
        # Valid values: US, METRIC, METRICWX
        # Default is: US
        unit_system = METRIC
        [[[weather/houseac]]]
            topic_tail_is_fieldname = True

Reply all
Reply to author
Forward
0 new messages