diff --git a/I2CDEVICES.md b/I2CDEVICES.md
index 0841866c9..90be957ef 100644
--- a/I2CDEVICES.md
+++ b/I2CDEVICES.md
@@ -105,3 +105,4 @@ Index | Define | Driver | Device | Address(es) | Description
68 | USE_HYT | xsns_97 | HYTxxx | 0x28 | Temperature and Humidity sensor
69 | USE_SGP40 | xsns_98 | SGP40 | 0x59 | Gas (TVOC) and air quality
70 | USE_LUXV30B | xsns_99 | LUXV30B | 0x4A | DFRobot SEN0390 V30B lux sensor
+ 71 | USE_QMC5883L | xsns_33 | QMC5883L | 0x0D | Magnetic Field Sensor
diff --git a/tasmota/include/i18n.h b/tasmota/include/i18n.h
index 669e22e14..900a28c61 100644
--- a/tasmota/include/i18n.h
+++ b/tasmota/include/i18n.h
@@ -233,7 +233,10 @@
#define D_JSON_SIGNALSTRENGTH "SignalStrength"
#define D_JSON_CHIPTEMPERATURE "ChipTemperature"
#define D_JSON_RAW "Raw"
-
+#define D_JSON_MX "XaxisInduction"
+#define D_JSON_MY "YaxisInduction"
+#define D_JSON_MZ "ZaxisInduction"
+#define D_JSON_MAGNETICFLD "MagneticInduction"
#define D_RSLT_ENERGY "ENERGY"
#define D_RSLT_HASS_STATE "HASS_STATE"
#define D_RSLT_INFO "INFO"
diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h
index 1ea5eb210..872fdd600 100644
--- a/tasmota/language/af_AF.h
+++ b/tasmota/language/af_AF.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyro Y-Axis"
#define D_GZ_AXIS "Gyro Z-Axis"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Verwyder gewig"
#define D_HX_CAL_REFERENCE "Laai verwysingsgewig"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h
index 7b97a7f56..ac678f79c 100644
--- a/tasmota/language/bg_BG.h
+++ b/tasmota/language/bg_BG.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Жироскоп - ос Y"
#define D_GZ_AXIS "Жироскоп - ос Z"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Премахване на тегло"
#define D_HX_CAL_REFERENCE "Поставяне на еталонна тежест"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/ca_AD.h b/tasmota/language/ca_AD.h
index cf8cd8244..cae18ab4c 100644
--- a/tasmota/language/ca_AD.h
+++ b/tasmota/language/ca_AD.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyro Y-Axis"
#define D_GZ_AXIS "Gyro Z-Axis"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Treu el pes"
#define D_HX_CAL_REFERENCE "Posa el pes de referència"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h
index 9576c1029..db0d3cdcd 100644
--- a/tasmota/language/cs_CZ.h
+++ b/tasmota/language/cs_CZ.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyro osa-Y"
#define D_GZ_AXIS "Gyro osa-Z"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Odstraňte zátěž"
#define D_HX_CAL_REFERENCE "Vložte referenční zátěž"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h
index fb08ffa19..e928d187b 100644
--- a/tasmota/language/de_DE.h
+++ b/tasmota/language/de_DE.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyroskop Y-Achse"
#define D_GZ_AXIS "Gyroskop Z-Achse"
+// xsns_33_QMC5883L.ino
+#define D_MX "Magnetfeld X-Achse"
+#define D_MY "Magnetfeld Y-Achse"
+#define D_MZ "Magnetfeld Z-Achse"
+#define D_MAGNETICFLD "Magnetfeldstärke"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Wägegut entfernen"
#define D_HX_CAL_REFERENCE "Referenzgewicht auflegen"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h
index 55da887d6..fc44b2db8 100644
--- a/tasmota/language/el_GR.h
+++ b/tasmota/language/el_GR.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyro Y-Axis"
#define D_GZ_AXIS "Gyro Z-Axis"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Απομακρύνετε το βαρίδιο"
#define D_HX_CAL_REFERENCE "Τοποθετήστε το βαρίδιο αναφοράς"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h
index ff0ea4b33..5b53d2a39 100644
--- a/tasmota/language/en_GB.h
+++ b/tasmota/language/en_GB.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyro Y-Axis"
#define D_GZ_AXIS "Gyro Z-Axis"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Remove weight"
#define D_HX_CAL_REFERENCE "Load reference weight"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h
index 32a502308..5764e5eab 100644
--- a/tasmota/language/es_ES.h
+++ b/tasmota/language/es_ES.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Girós. Eje Y"
#define D_GZ_AXIS "Girós. Eje Z"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Remover Peso"
#define D_HX_CAL_REFERENCE "Poner Peso de Referencia"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h
index 6a003f0b4..24c023ece 100644
--- a/tasmota/language/fr_FR.h
+++ b/tasmota/language/fr_FR.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyro Axe-Y"
#define D_GZ_AXIS "Gyro Axe-Z"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Retirer la charge"
#define D_HX_CAL_REFERENCE "Charger l'étalon de poids"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h
index c74008122..5ded5fe46 100644
--- a/tasmota/language/fy_NL.h
+++ b/tasmota/language/fy_NL.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyro Y-as"
#define D_GZ_AXIS "Gyro Z-as"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Gewicht fuortsmite"
#define D_HX_CAL_REFERENCE "Pleats kalibraasje gewicht"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h
index bc59a86c1..d8850c46d 100644
--- a/tasmota/language/he_HE.h
+++ b/tasmota/language/he_HE.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyro Y-Axis"
#define D_GZ_AXIS "Gyro Z-Axis"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "הסר משקל"
#define D_HX_CAL_REFERENCE "טען משקל התייחסות"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h
index fc4cd8bc4..222551d67 100644
--- a/tasmota/language/hu_HU.h
+++ b/tasmota/language/hu_HU.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Giroszkóp Y-tengely"
#define D_GZ_AXIS "Giroszkóp Z-tengely"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Távolítsa el a súlyt"
#define D_HX_CAL_REFERENCE "Helyezze fel a referenciasúlyt"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h
index 7025133df..a72e3b202 100644
--- a/tasmota/language/it_IT.h
+++ b/tasmota/language/it_IT.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Giroscopio asse Y"
#define D_GZ_AXIS "Giroscopio asse Z"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Rimuovi peso"
#define D_HX_CAL_REFERENCE "Carica riferimento peso"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h
index a4d894717..6adb57fde 100644
--- a/tasmota/language/ko_KO.h
+++ b/tasmota/language/ko_KO.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyro Y-Axis"
#define D_GZ_AXIS "Gyro Z-Axis"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "중량 제거"
#define D_HX_CAL_REFERENCE "참조 중량 로드"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "마이크로미터"
#define D_UNIT_MICROSECOND "마이크로초"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h
index 22e7a2370..80dd3d628 100644
--- a/tasmota/language/nl_NL.h
+++ b/tasmota/language/nl_NL.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyro Y-as"
#define D_GZ_AXIS "Gyro Z-as"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Verwijder gewicht"
#define D_HX_CAL_REFERENCE "Plaats ijkgewicht"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h
index ffa0b8b54..d626c5696 100644
--- a/tasmota/language/pl_PL.h
+++ b/tasmota/language/pl_PL.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Odchylenie Oś-Y"
#define D_GZ_AXIS "Odchylenie Oś-Z"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Usuń wagę"
#define D_HX_CAL_REFERENCE "Załaduj wagę referencyjną"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h
index 151251bd7..a1f57b5a0 100644
--- a/tasmota/language/pt_BR.h
+++ b/tasmota/language/pt_BR.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Giro Eixo-Y"
#define D_GZ_AXIS "Giro Eixo-Z"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Remover calibragem"
#define D_HX_CAL_REFERENCE "Peso de referência de carga"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h
index 049c92d00..f4fa7c1a1 100644
--- a/tasmota/language/pt_PT.h
+++ b/tasmota/language/pt_PT.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyro Y-Axis"
#define D_GZ_AXIS "Gyro Z-Axis"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Remover peso"
#define D_HX_CAL_REFERENCE "Carregar peso de referência"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h
index cc3b1827a..7a339c64c 100644
--- a/tasmota/language/ro_RO.h
+++ b/tasmota/language/ro_RO.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyro Axa-Y"
#define D_GZ_AXIS "Gyro Axa-Z"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Elimină greutatea"
#define D_HX_CAL_REFERENCE "Așează greutatea de referință"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h
index af69426e8..3a74b9bd6 100644
--- a/tasmota/language/ru_RU.h
+++ b/tasmota/language/ru_RU.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyro Y-Axis"
#define D_GZ_AXIS "Gyro Z-Axis"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Remove weight"
#define D_HX_CAL_REFERENCE "Load reference weight"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "мкм"
#define D_UNIT_MICROSECOND "мкс"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "мА"
#define D_UNIT_MILLILITERS "мл"
#define D_UNIT_MILLIMETER "мм"
diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h
index 6852ae1ae..157e025dc 100644
--- a/tasmota/language/sk_SK.h
+++ b/tasmota/language/sk_SK.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyro os-Y"
#define D_GZ_AXIS "Gyro os-Z"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Odstráňte záťaž"
#define D_HX_CAL_REFERENCE "Vložte referenčnú záťaž"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h
index 000b756cf..c18b439e4 100644
--- a/tasmota/language/sv_SE.h
+++ b/tasmota/language/sv_SE.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyro Y-Axel"
#define D_GZ_AXIS "Gyro Z-Axel"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Ta bort vikter"
#define D_HX_CAL_REFERENCE "Ladda referensvikt"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h
index 6225ed5f6..1127712f5 100644
--- a/tasmota/language/tr_TR.h
+++ b/tasmota/language/tr_TR.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyro Y-Axis"
#define D_GZ_AXIS "Gyro Z-Axis"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Remove weight"
#define D_HX_CAL_REFERENCE "Load reference weight"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h
index 04075423d..00cb7d80e 100644
--- a/tasmota/language/uk_UA.h
+++ b/tasmota/language/uk_UA.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Орієнт Вісь-Y"
#define D_GZ_AXIS "Орієнт Вісь-Z"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Remove weight"
#define D_HX_CAL_REFERENCE "Load reference weight"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µм"
#define D_UNIT_MICROSECOND "µС"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "мА"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "мм"
diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h
index 4555a4777..9b6dc96be 100644
--- a/tasmota/language/vi_VN.h
+++ b/tasmota/language/vi_VN.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "Gyro Y-Axis"
#define D_GZ_AXIS "Gyro Z-Axis"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "Remove weight"
#define D_HX_CAL_REFERENCE "Load reference weight"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h
index 1e06ddcb8..44bf0cc12 100644
--- a/tasmota/language/zh_CN.h
+++ b/tasmota/language/zh_CN.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "绕Y轴旋转的角速度"
#define D_GZ_AXIS "绕Z轴旋转的角速度"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "去除重量"
#define D_HX_CAL_REFERENCE "加载参考重量"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "µm"
#define D_UNIT_MICROSECOND "µs"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h
index 796cb0c38..c3798aa71 100644
--- a/tasmota/language/zh_TW.h
+++ b/tasmota/language/zh_TW.h
@@ -566,6 +566,12 @@
#define D_GY_AXIS "陀螺儀 Y-軸"
#define D_GZ_AXIS "陀螺儀 Z-軸"
+// xsns_33_QMC5883L.ino
+#define D_MX "Induction X-Axis"
+#define D_MY "Induction Y-Axis"
+#define D_MZ "Induction Z-Axis"
+#define D_MAGNETICFLD "Magnetic Induction"
+
// xsns_34_hx711.ino
#define D_HX_CAL_REMOVE "移除重量"
#define D_HX_CAL_REFERENCE "載入參考重量"
@@ -914,6 +920,7 @@
#define D_UNIT_MICROMETER "微米"
#define D_UNIT_MICROSECOND "微秒"
#define D_UNIT_MICROSIEMENS_PER_CM "µS/cm"
+#define D_UNIT_MICROTESLA "µT"
#define D_UNIT_MILLIAMPERE "毫安培"
#define D_UNIT_MILLILITERS "ml"
#define D_UNIT_MILLIMETER "mm"
diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h
index bac7413c2..77e301cd6 100644
--- a/tasmota/my_user_config.h
+++ b/tasmota/my_user_config.h
@@ -715,6 +715,8 @@
// Reference: https://cdn-learn.adafruit.com/downloads/pdf/adafruit-led-backpack.pdf
// #define SEVENSEG_ADDRESS1 0x70 // No longer used. Use MTX_ADDRESS1 - MTX_ADDRESS8 instead to specify I2C address of sevenseg displays
// #define USE_DISPLAY_SH1106 // [DisplayModel 7] [I2cDriver6] Enable SH1106 Oled 128x64 display (I2C addresses 0x3C and 0x3D)
+// #define USE_QMC5883L // USE_QMC5883L magnetic induction sensor, (I2C address 0x0D)
+// #define QMC5883L_TEMP_SHIFT 23 // sensor temperature are not calibrated (only relativ measurement) and need an absolute ground value in °C (see datasheet)
#endif // USE_I2C
diff --git a/tasmota/tasmota_xsns_sensor/xsns_33_qmc5883l.ino b/tasmota/tasmota_xsns_sensor/xsns_33_qmc5883l.ino
new file mode 100644
index 000000000..1122a389f
--- /dev/null
+++ b/tasmota/tasmota_xsns_sensor/xsns_33_qmc5883l.ino
@@ -0,0 +1,328 @@
+/*
+ xsns_99_qmc5883l.ino - QMC5883L 3-Axis Digital Compass sensor support for Tasmota
+
+ Copyright (C) 2022 Helge Scheunemann
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see