measure-voc-index

wayland/sgp40-air-quality-sensor/measure-voc-index

Measure volatile organic compound index.
measure-voc-index
@/measure-voc-index
Measure volatile organic compound index.
DEV@/sgp40-device
An SGP40 device.
TempCnumber
Temperature (Celsius). Used in temperature compensation. Connect to a temperature sensor or specify a value a temperature sensor is not available.
RHnumber
Relative humidity (%). Used in humidity compensation. Connect to a relative humidity sensor or specify a value if a sensor is not available.
UPDpulse
Update.
measure-voc-index
DEV
TempC
RH
UPD
VOC
Done
Donepulse
Pulse on measurement.
VOCnumber
The volatile organic compound (VOC) index.
To use the node in your project you should have the wayland/sgp40-air-quality-sensor library installed. Use the “File → Add Library” menu item in XOD IDE if you don’t have it yet. See Using libraries for more info.

C++ implementation

#pragma XOD evaluate_on_pin disable
#pragma XOD evaluate_on_pin enable input_UPD

node {

    void evaluate(Context ctx) {
        // The node responds only if there is an input pulse
        if (!isInputDirty<input_UPD>(ctx))
            return;

        auto sensor = getValue<input_DEV>(ctx);

        float tempC = getValue<input_TempC>(ctx);
        float rh = getValue<input_RH>(ctx);
        auto voc = sensor->measureVocIndex(tempC, rh);

        emitValue<output_VOC>(ctx, voc);
        emitValue<output_Done>(ctx, 1);

    }
}