diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 985b1b930..1d0f2ece8 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,5 @@ /* 6.1.1c + * Add initial support for sensor MPU6050 (#3352) * Add command SerialSend4 to send binary serial data (#3345) * Add rule triggers Wifi#Connected and Wifi#Disconnected (#3359) * Fix unsecure main webpage update diff --git a/sonoff/i18n.h b/sonoff/i18n.h index e1b0def2d..fc91c0d8e 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -138,12 +138,6 @@ #define D_JSON_WRONG_PARAMETERS "Wrong parameters" #define D_JSON_YESTERDAY "Yesterday" #define D_JSON_ZERO_POINT_CALIBRATION "Zero Point Calibration" -#define D_JSON_AXIS_AX "AccelXAxis" -#define D_JSON_AXIS_AY "AccelYAxis" -#define D_JSON_AXIS_AZ "AccelZAxis" -#define D_JSON_AXIS_GX "GyroXAxis" -#define D_JSON_AXIS_GY "GyroYAxis" -#define D_JSON_AXIS_GZ "GyroZAxis" #define D_RSLT_ENERGY "ENERGY" #define D_RSLT_INFO "INFO" @@ -529,12 +523,6 @@ const char HTTP_SNS_HUM[] PROGMEM = "%s{s}%s " D_HUMIDITY "{m}%s%%{e}"; const char HTTP_SNS_PRESSURE[] PROGMEM = "%s{s}%s " D_PRESSURE "{m}%s " D_UNIT_PRESSURE "{e}"; // {s} = , {m} = , {e} = const char HTTP_SNS_SEAPRESSURE[] PROGMEM = "%s{s}%s " D_PRESSUREATSEALEVEL "{m}%s " D_UNIT_PRESSURE "{e}"; // {s} = , {m} = , {e} = const char HTTP_SNS_ANALOG[] PROGMEM = "%s{s}%s " D_ANALOG_INPUT "%d{m}%d{e}"; // {s} = , {m} = , {e} = -const char HTTP_SNS_AX_AXIS[] PROGMEM = "%s{s}%s " D_AX_AXIS "{m}%s{e}"; // {s} = , {m} = , {e} = -const char HTTP_SNS_AY_AXIS[] PROGMEM = "%s{s}%s " D_AY_AXIS "{m}%s{e}"; // {s} = , {m} = , {e} = -const char HTTP_SNS_AZ_AXIS[] PROGMEM = "%s{s}%s " D_AZ_AXIS "{m}%s{e}"; // {s} = , {m} = , {e} = -const char HTTP_SNS_GX_AXIS[] PROGMEM = "%s{s}%s " D_GX_AXIS "{m}%s{e}"; // {s} = , {m} = , {e} = -const char HTTP_SNS_GY_AXIS[] PROGMEM = "%s{s}%s " D_GY_AXIS "{m}%s{e}"; // {s} = , {m} = , {e} = -const char HTTP_SNS_GZ_AXIS[] PROGMEM = "%s{s}%s " D_GZ_AXIS "{m}%s{e}"; // {s} = , {m} = , {e} = #if defined(USE_MHZ19) || defined(USE_SENSEAIR) const char HTTP_SNS_CO2[] PROGMEM = "%s{s}%s " D_CO2 "{m}%d " D_UNIT_PARTS_PER_MILLION "{e}"; // {s} = , {m} = , {e} = diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 52ef34497..5fedba7a7 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -149,12 +149,6 @@ #define D_SUNRISE "Sonnenaufgang" #define D_SUNSET "Sonnenuntergang" #define D_TEMPERATURE "Temperatur" -#define D_AX_AXIS "Beschl. X-Achse" -#define D_AY_AXIS "Beschl. Y-Achse" -#define D_AZ_AXIS "Beschl. Z-Achse" -#define D_GX_AXIS "Gyroskop X-Achse" -#define D_GY_AXIS "Gyroskop Y-Achse" -#define D_GZ_AXIS "Gyroskop Z-Achse" #define D_TO "zu" #define D_TOGGLE "An/Aus" #define D_TOPIC "topic" @@ -442,6 +436,14 @@ #define D_ENVIRONMENTAL_CONCENTRATION "PM" // Environmetal Particle Matter #define D_PARTICALS_BEYOND "Particals" +// xsns_32_mpu6050.ino +#define D_AX_AXIS "Beschl. X-Achse" +#define D_AY_AXIS "Beschl. Y-Achse" +#define D_AZ_AXIS "Beschl. Z-Achse" +#define D_GX_AXIS "Gyroskop X-Achse" +#define D_GY_AXIS "Gyroskop Y-Achse" +#define D_GZ_AXIS "Gyroskop Z-Achse" + // sonoff_template.h #define D_SENSOR_NONE "None" #define D_SENSOR_DHT11 "DHT11" @@ -481,7 +483,6 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" -#define D_SENSOR_MPU6050 "MPU6050" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 9af71495c..bd41eb74e 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -149,12 +149,6 @@ #define D_SUNRISE "Sunrise" #define D_SUNSET "Sunset" #define D_TEMPERATURE "Temperature" -#define D_AX_AXIS "Accel. X-Axis" -#define D_AY_AXIS "Accel. Y-Axis" -#define D_AZ_AXIS "Accel. Z-Axis" -#define D_GX_AXIS "Gyro X-Axis" -#define D_GY_AXIS "Gyro Y-Axis" -#define D_GZ_AXIS "Gyro Z-Axis" #define D_TO "to" #define D_TOGGLE "Toggle" #define D_TOPIC "Topic" @@ -442,6 +436,14 @@ #define D_ENVIRONMENTAL_CONCENTRATION "PM" // Environmetal Particle Matter #define D_PARTICALS_BEYOND "Particals" +// xsns_32_mpu6050.ino +#define D_AX_AXIS "Accel. X-Axis" +#define D_AY_AXIS "Accel. Y-Axis" +#define D_AZ_AXIS "Accel. Z-Axis" +#define D_GX_AXIS "Gyro X-Axis" +#define D_GY_AXIS "Gyro Y-Axis" +#define D_GZ_AXIS "Gyro Z-Axis" + // sonoff_template.h #define D_SENSOR_NONE "None" #define D_SENSOR_DHT11 "DHT11" @@ -481,7 +483,6 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" -#define D_SENSOR_MPU6050 "MPU6050" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/user_config.h b/sonoff/user_config.h index bcf7e5efb..2040ecfb3 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -292,7 +292,7 @@ // #define USE_MCP230xx // Enable MCP23008/MCP23017 for GP INPUT ONLY (I2C addresses 0x20 - 0x27) providing command Sensor29 for configuration (+2k2 code) // #define USE_MPR121 // Enable MPR121 controller (I2C addresses 0x5A, 0x5B, 0x5C and 0x5D) in input mode for touch buttons (+1k3 code) // #define USE_CCS811 // Enable CCS811 sensor (I2C address 0x5A) (+2k2 code) - #define USE_MPU_6050 // Enable MPU6050 sensor (I2C address 0x68 AD0 low or 0x69 AD0 high) +// #define USE_MPU6050 // Enable MPU6050 sensor (I2C address 0x68 AD0 low or 0x69 AD0 high) (+2k6 code) #endif // USE_I2C // -- SPI sensors --------------------------------- diff --git a/sonoff/xsns_32_mpu6050.ino b/sonoff/xsns_32_mpu6050.ino index 6f45c8700..58ac705a3 100644 --- a/sonoff/xsns_32_mpu6050.ino +++ b/sonoff/xsns_32_mpu6050.ino @@ -18,7 +18,7 @@ */ #ifdef USE_I2C -#ifdef USE_MPU_6050 +#ifdef USE_MPU6050 /*********************************************************************************************\ * MPU_6050 3 axis gyroscope and temperature sensor * @@ -27,6 +27,8 @@ * I2C Address: 0x68 or 0x69 with AD0 HIGH \*********************************************************************************************/ +#define D_SENSOR_MPU6050 "MPU6050" + #define MPU_6050_ADDR_AD0_LOW 0x68 #define MPU_6050_ADDR_AD0_HIGH 0x69 @@ -85,6 +87,8 @@ void MPU_6050Detect() mpu6050.setAddr(MPU_6050_address); mpu6050.initialize(); + Settings.flag2.axis_resolution = 2; // Need to be services by command Sensor32 + MPU_6050_found = mpu6050.testConnection(); } @@ -95,6 +99,22 @@ void MPU_6050Detect() } } +#ifdef USE_WEBSERVER +const char HTTP_SNS_AX_AXIS[] PROGMEM = "%s{s}%s " D_AX_AXIS "{m}%s{e}"; // {s} = , {m} = , {e} = +const char HTTP_SNS_AY_AXIS[] PROGMEM = "%s{s}%s " D_AY_AXIS "{m}%s{e}"; // {s} = , {m} = , {e} = +const char HTTP_SNS_AZ_AXIS[] PROGMEM = "%s{s}%s " D_AZ_AXIS "{m}%s{e}"; // {s} = , {m} = , {e} = +const char HTTP_SNS_GX_AXIS[] PROGMEM = "%s{s}%s " D_GX_AXIS "{m}%s{e}"; // {s} = , {m} = , {e} = +const char HTTP_SNS_GY_AXIS[] PROGMEM = "%s{s}%s " D_GY_AXIS "{m}%s{e}"; // {s} = , {m} = , {e} = +const char HTTP_SNS_GZ_AXIS[] PROGMEM = "%s{s}%s " D_GZ_AXIS "{m}%s{e}"; // {s} = , {m} = , {e} = +#endif // USE_WEBSERVER + +#define D_JSON_AXIS_AX "AccelXAxis" +#define D_JSON_AXIS_AY "AccelYAxis" +#define D_JSON_AXIS_AZ "AccelZAxis" +#define D_JSON_AXIS_GX "GyroXAxis" +#define D_JSON_AXIS_GY "GyroYAxis" +#define D_JSON_AXIS_GZ "GyroZAxis" + void MPU_6050Show(boolean json) { double tempConv = (MPU_6050_temperature / 340.0 + 35.53); @@ -183,5 +203,5 @@ boolean Xsns32(byte function) return result; } -#endif // USE_MPU_6050 +#endif // USE_MPU6050 #endif // USE_I2C