I'm trying to set up a personal weather station with Opla IoT Kit using the code from this tutorial: https://opla.arduino.cc/opla/module/iot-starter-kit-maker-long/lesson/personal-weather-station-long
#include "thingProperties.h"
#include <Arduino_MKRIoTCarrier.h>
MKRIoTCarrier carrier;
void setup() {
// Initialize serial and wait for port to open:
Serial.begin(9600);
delay(1500);
// Defined in thingProperties.h
initProperties();
// Connect to Arduino IoT Cloud
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
//Get Cloud Info/errors , 0 (only errors) up to 4
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
//Wait to get cloud connection to init the carrier
while (ArduinoCloud.connected() != 1) {
ArduinoCloud.update();
delay(500);
}
delay(500);
CARRIER_CASE = false;
carrier.begin();
carrier.display.setRotation(0);
delay(1500);
}
void loop() {
ArduinoCloud.update();
carrier.Buttons.update();
while(!carrier.Light.colorAvailable()) {
delay(5);
}
int none;
carrier.Light.readColor(none, none, none, light);
temperature = carrier.Env.readTemperature();
humidity = carrier.Env.readHumidity();
pressure = carrier.Pressure.readPressure();
if (carrier.Buttons.onTouchDown(TOUCH0)) {
carrier.display.fillScreen(ST77XX_WHITE);
carrier.display.setTextColor(ST77XX_RED);
carrier.display.setTextSize(2);
carrier.display.setCursor(30, 110);
carrier.display.print("Temp: ");
carrier.display.print(temperature);
carrier.display.print(" C");
}
if (carrier.Buttons.onTouchDown(TOUCH1)) {
carrier.display.fillScreen(ST77XX_WHITE);
carrier.display.setTextColor(ST77XX_RED);
carrier.display.setTextSize(2);
carrier.display.setCursor(30, 110);
carrier.display.print("Humi: ");
carrier.display.print(humidity);
carrier.display.print(" %");
}
if (carrier.Buttons.onTouchDown(TOUCH2)) {
carrier.display.fillScreen(ST77XX_WHITE);
carrier.display.setTextColor(ST77XX_RED);
carrier.display.setTextSize(2);
carrier.display.setCursor(30, 110);
carrier.display.print("Light: ");
carrier.display.print(light);
}
if (carrier.Buttons.onTouchDown(TOUCH3)) {
carrier.display.fillScreen(ST77XX_WHITE);
carrier.display.setTextColor(ST77XX_RED);
carrier.display.setTextSize(2);
carrier.display.setCursor(30, 110);
carrier.display.print("Pressure: ");
carrier.display.print(pressure);
}
if (humidity >= 60 && temperature >= 15) {
weather_report = "It is very humid outside";
}else if (temperature >= 15 && light >= 700) {
weather_report = "Warm and sunny outside";
}else if (temperature <= 16 && light >= 700) {
weather_report = "A little cold, but sunny outside";
}
else{
weather_report = "Weather is normal";
}
}
When I try to upload the code it gives me this error:
/usr/local/bin/arduino-cli compile --fqbn arduino:samd:mkrwifi1010 --libraries /home/builder/opt/libraries/latest --build-cache-path /tmp --output-dir /tmp/381724684/build --build-path /tmp/arduino-build-23D216F7B4869A0852472D61558A7F52 /tmp/381724684/WeatherStation_mar05a
Using library adafruit_sleepydog_library_1_6_3 at version 1.6.3 in folder: /home/builder/opt/libraries/adafruit_sleepydog_library_1_6_3
Using library adafruit_unified_sensor_1_1_8 at version 1.1.8 in folder: /home/builder/opt/libraries/adafruit_unified_sensor_1_1_8
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp: In member function 'int EnvClass::begin()':
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:39:24: error: 'BME680_I2C_ADDR_PRIMARY' was not declared in this scope
iaqSensor->begin(BME680_I2C_ADDR_PRIMARY, Wire);
^~~~~~~~~~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp: In member function 'int AirQualityClass::begin()':
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:38:24: error: 'BME680_I2C_ADDR_PRIMARY' was not declared in this scope
iaqSensor->begin(BME680_I2C_ADDR_PRIMARY, Wire);
^~~~~~~~~~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp: In member function 'int PressureClass::begin()':
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:38:24: error: 'BME680_I2C_ADDR_PRIMARY' was not declared in this scope
iaqSensor->begin(BME680_I2C_ADDR_PRIMARY, Wire);
^~~~~~~~~~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:39:24: note: suggested alternative: 'BME68X_I2C_ADDR_HIGH'
iaqSensor->begin(BME680_I2C_ADDR_PRIMARY, Wire);
^~~~~~~~~~~~~~~~~~~~~~~
BME68X_I2C_ADDR_HIGH
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:49:9: error: 'BSEC_OUTPUT_IAQ' was not declared in this scope
BSEC_OUTPUT_IAQ,
^~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:38:24: note: suggested alternative: 'BME68X_I2C_ADDR_HIGH'
iaqSensor->begin(BME680_I2C_ADDR_PRIMARY, Wire);
^~~~~~~~~~~~~~~~~~~~~~~
BME68X_I2C_ADDR_HIGH
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:48:9: error: 'BSEC_OUTPUT_IAQ' was not declared in this scope
BSEC_OUTPUT_IAQ,
^~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:38:24: note: suggested alternative: 'BME68X_I2C_ADDR_HIGH'
iaqSensor->begin(BME680_I2C_ADDR_PRIMARY, Wire);
^~~~~~~~~~~~~~~~~~~~~~~
BME68X_I2C_ADDR_HIGH
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:48:9: error: 'BSEC_OUTPUT_IAQ' was not declared in this scope
BSEC_OUTPUT_IAQ,
^~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:49:9: note: suggested alternative: 'BSEC_OUTPUT_RAW_GAS'
BSEC_OUTPUT_IAQ,
^~~~~~~~~~~~~~~
BSEC_OUTPUT_RAW_GAS
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:50:9: error: 'BSEC_OUTPUT_STATIC_IAQ' was not declared in this scope
BSEC_OUTPUT_STATIC_IAQ,
^~~~~~~~~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:48:9: note: suggested alternative: 'BSEC_OUTPUT_RAW_GAS'
BSEC_OUTPUT_IAQ,
^~~~~~~~~~~~~~~
BSEC_OUTPUT_RAW_GAS
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:49:9: error: 'BSEC_OUTPUT_STATIC_IAQ' was not declared in this scope
BSEC_OUTPUT_STATIC_IAQ,
^~~~~~~~~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:48:9: note: suggested alternative: 'BSEC_OUTPUT_RAW_GAS'
BSEC_OUTPUT_IAQ,
^~~~~~~~~~~~~~~
BSEC_OUTPUT_RAW_GAS
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:49:9: error: 'BSEC_OUTPUT_STATIC_IAQ' was not declared in this scope
BSEC_OUTPUT_STATIC_IAQ,
^~~~~~~~~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:49:9: note: suggested alternative: 'BSEC_OUTPUT_RAW_GAS'
BSEC_OUTPUT_STATIC_IAQ,
^~~~~~~~~~~~~~~~~~~~~~
BSEC_OUTPUT_RAW_GAS
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:50:9: note: suggested alternative: 'BSEC_OUTPUT_RAW_GAS'
BSEC_OUTPUT_STATIC_IAQ,
^~~~~~~~~~~~~~~~~~~~~~
BSEC_OUTPUT_RAW_GAS
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:50:9: error: 'BSEC_OUTPUT_CO2_EQUIVALENT' was not declared in this scope
BSEC_OUTPUT_CO2_EQUIVALENT,
^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:51:9: error: 'BSEC_OUTPUT_CO2_EQUIVALENT' was not declared in this scope
BSEC_OUTPUT_CO2_EQUIVALENT,
^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:49:9: note: suggested alternative: 'BSEC_OUTPUT_RAW_GAS'
BSEC_OUTPUT_STATIC_IAQ,
^~~~~~~~~~~~~~~~~~~~~~
BSEC_OUTPUT_RAW_GAS
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:50:9: error: 'BSEC_OUTPUT_CO2_EQUIVALENT' was not declared in this scope
BSEC_OUTPUT_CO2_EQUIVALENT,
^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:50:9: note: suggested alternative: 'BSEC_OUTPUT_IAQ_ESTIMATE'
BSEC_OUTPUT_CO2_EQUIVALENT,
^~~~~~~~~~~~~~~~~~~~~~~~~~
BSEC_OUTPUT_IAQ_ESTIMATE
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:51:9: error: 'BSEC_OUTPUT_BREATH_VOC_EQUIVALENT' was not declared in this scope
BSEC_OUTPUT_BREATH_VOC_EQUIVALENT,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:51:9: note: suggested alternative: 'BSEC_OUTPUT_IAQ_ESTIMATE'
BSEC_OUTPUT_CO2_EQUIVALENT,
^~~~~~~~~~~~~~~~~~~~~~~~~~
BSEC_OUTPUT_IAQ_ESTIMATE
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:52:9: error: 'BSEC_OUTPUT_BREATH_VOC_EQUIVALENT' was not declared in this scope
BSEC_OUTPUT_BREATH_VOC_EQUIVALENT,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:50:9: note: suggested alternative: 'BSEC_OUTPUT_IAQ_ESTIMATE'
BSEC_OUTPUT_CO2_EQUIVALENT,
^~~~~~~~~~~~~~~~~~~~~~~~~~
BSEC_OUTPUT_IAQ_ESTIMATE
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:51:9: error: 'BSEC_OUTPUT_BREATH_VOC_EQUIVALENT' was not declared in this scope
BSEC_OUTPUT_BREATH_VOC_EQUIVALENT,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:52:9: note: suggested alternative: 'BSEC_OUTPUT_IAQ_ESTIMATE'
BSEC_OUTPUT_BREATH_VOC_EQUIVALENT,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BSEC_OUTPUT_IAQ_ESTIMATE
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:57:53: error: 'BSEC_SAMPLE_RATE_CONTINUOUS' was not declared in this scope
iaqSensor->updateSubscription(sensorList, 10, BSEC_SAMPLE_RATE_CONTINUOUS);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:51:9: note: suggested alternative: 'BSEC_OUTPUT_IAQ_ESTIMATE'
BSEC_OUTPUT_BREATH_VOC_EQUIVALENT,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BSEC_OUTPUT_IAQ_ESTIMATE
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:56:53: error: 'BSEC_SAMPLE_RATE_CONTINUOUS' was not declared in this scope
iaqSensor->updateSubscription(sensorList, 10, BSEC_SAMPLE_RATE_CONTINUOUS);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:51:9: note: suggested alternative: 'BSEC_OUTPUT_IAQ_ESTIMATE'
BSEC_OUTPUT_BREATH_VOC_EQUIVALENT,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BSEC_OUTPUT_IAQ_ESTIMATE
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:56:53: error: 'BSEC_SAMPLE_RATE_CONTINUOUS' was not declared in this scope
iaqSensor->updateSubscription(sensorList, 10, BSEC_SAMPLE_RATE_CONTINUOUS);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:57:53: note: suggested alternative: 'BSEC_SAMPLE_RATE_ULP'
iaqSensor->updateSubscription(sensorList, 10, BSEC_SAMPLE_RATE_CONTINUOUS);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
BSEC_SAMPLE_RATE_ULP
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:56:53: note: suggested alternative: 'BSEC_SAMPLE_RATE_ULP'
iaqSensor->updateSubscription(sensorList, 10, BSEC_SAMPLE_RATE_CONTINUOUS);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
BSEC_SAMPLE_RATE_ULP
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp: In member function 'int EnvClass::checkIaqSensorStatus()':
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:76:18: error: 'class Bsec' has no member named 'status'; did you mean 'bsecStatus'?
if (iaqSensor->status != BSEC_OK) {
^~~~~~
bsecStatus
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:77:20: error: 'class Bsec' has no member named 'status'; did you mean 'bsecStatus'?
if (iaqSensor->status < BSEC_OK) {
^~~~~~
bsecStatus
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:82:18: error: 'class Bsec' has no member named 'bme680Status'; did you mean 'bme68xStatus'?
if (iaqSensor->bme680Status != BME680_OK) {
^~~~~~~~~~~~
bme68xStatus
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:82:34: error: 'BME680_OK' was not declared in this scope
if (iaqSensor->bme680Status != BME680_OK) {
^~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp: In member function 'int AirQualityClass::checkIaqSensorStatus()':
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:71:18: error: 'class Bsec' has no member named 'status'; did you mean 'bsecStatus'?
if (iaqSensor->status != BSEC_OK) {
^~~~~~
bsecStatus
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:72:20: error: 'class Bsec' has no member named 'status'; did you mean 'bsecStatus'?
if (iaqSensor->status < BSEC_OK) {
^~~~~~
bsecStatus
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:77:18: error: 'class Bsec' has no member named 'bme680Status'; did you mean 'bme68xStatus'?
if (iaqSensor->bme680Status != BME680_OK) {
^~~~~~~~~~~~
bme68xStatus
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:77:34: error: 'BME680_OK' was not declared in this scope
if (iaqSensor->bme680Status != BME680_OK) {
^~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:56:53: note: suggested alternative: 'BSEC_SAMPLE_RATE_ULP'
iaqSensor->updateSubscription(sensorList, 10, BSEC_SAMPLE_RATE_CONTINUOUS);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
BSEC_SAMPLE_RATE_ULP
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp: In member function 'int PressureClass::checkIaqSensorStatus()':
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:76:18: error: 'class Bsec' has no member named 'status'; did you mean 'bsecStatus'?
if (iaqSensor->status != BSEC_OK) {
^~~~~~
bsecStatus
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:77:20: error: 'class Bsec' has no member named 'status'; did you mean 'bsecStatus'?
if (iaqSensor->status < BSEC_OK) {
^~~~~~
bsecStatus
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:82:18: error: 'class Bsec' has no member named 'bme680Status'; did you mean 'bme68xStatus'?
if (iaqSensor->bme680Status != BME680_OK) {
^~~~~~~~~~~~
bme68xStatus
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:82:34: error: 'BME680_OK' was not declared in this scope
if (iaqSensor->bme680Status != BME680_OK) {
^~~~~~~~~
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:82:34: note: suggested alternative: 'BME68X_OK'
if (iaqSensor->bme680Status != BME680_OK) {
^~~~~~~~~
BME68X_OK
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/EnvClass.cpp:83:20: error: 'class Bsec' has no member named 'bme680Status'; did you mean 'bme68xStatus'?
if (iaqSensor->bme680Status < BME680_OK) {
^~~~~~~~~~~~
bme68xStatus
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:77:34: note: suggested alternative: 'BME68X_OK'
if (iaqSensor->bme680Status != BME680_OK) {
^~~~~~~~~
BME68X_OK
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/AirQualityClass.cpp:78:20: error: 'class Bsec' has no member named 'bme680Status'; did you mean 'bme68xStatus'?
if (iaqSensor->bme680Status < BME680_OK) {
^~~~~~~~~~~~
bme68xStatus
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:82:34: note: suggested alternative: 'BME68X_OK'
if (iaqSensor->bme680Status != BME680_OK) {
^~~~~~~~~
BME68X_OK
/home/builder/opt/libraries/latest/arduino_mkriotcarrier_2_0_2/src/PressureClass.cpp:83:20: error: 'class Bsec' has no member named 'bme680Status'; did you mean 'bme68xStatus'?
if (iaqSensor->bme680Status < BME680_OK) {
^~~~~~~~~~~~
bme68xStatus
Error during build: exit status 1
I've seen people on YouTube using this code without any problems.
Thanks in advance for your help.
