From b89f17f69859e8da378e2f95ee0729a99d524241 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Mon, 21 Mar 2022 13:32:04 +0100 Subject: [PATCH 01/30] Remove two JSON Debug statements --- airrohr-firmware/airrohr-firmware.ino | 2 -- 1 file changed, 2 deletions(-) diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index 0b915bff..f68b4079 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -1124,7 +1124,6 @@ static void readConfig(bool oldconfig = false) if (!err) { - serializeJsonPretty(json, Debug); debug_outln_info(F("parsed json...")); for (unsigned e = 0; e < sizeof(configShape) / sizeof(configShape[0]); ++e) { @@ -6212,7 +6211,6 @@ void loop(void) data.remove(data.length() - 1); } data += "]}"; - Debug.println(data); yield(); sum_send_time += sendDataToOptionalApis(data); From e2e6fedc7e724fb16dc9cc557f46759303d777f5 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Sat, 3 Dec 2022 12:57:19 +0100 Subject: [PATCH 02/30] Typo: BMxE280 -> BMx280 --- airrohr-firmware/airrohr-firmware.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index f68b4079..a34c9264 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -5617,7 +5617,7 @@ static void powerOnTestSensors() if (cfg::bmx280_read) { - debug_outln_info(F("Read BMxE280...")); + debug_outln_info(F("Read BMx280...")); if (!initBMX280(bmx280_default_i2c_address) && !initBMX280(bmx280_alternate_i2c_address)) { debug_outln_error(F("Check BMx280 wiring")); bmx280_init_failed = true; From bbff5d079ab1b8e08a75285d764c20b988d05fb0 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Sun, 28 May 2023 21:44:53 +0200 Subject: [PATCH 03/30] Add Suomi (FI) to firmware update language dropdown menu --- airrohr-firmware/airrohr-firmware.ino | 1 + 1 file changed, 1 insertion(+) diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index a34c9264..a51b3657 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -1500,6 +1500,7 @@ static String form_select_lang() "" "" "" + "" "" "" "" From eeead157b994caf07bb2a518e3ed58a718dda65f Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Mon, 15 May 2023 13:08:31 +0200 Subject: [PATCH 04/30] platformio.ini: fix jp env declaration --- airrohr-firmware/platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airrohr-firmware/platformio.ini b/airrohr-firmware/platformio.ini index b92dd55f..eeebd1d7 100644 --- a/airrohr-firmware/platformio.ini +++ b/airrohr-firmware/platformio.ini @@ -272,7 +272,7 @@ build_flags = ${common.build_flags} -DINTL_IT lib_deps = ${common.lib_deps_esp8266} extra_scripts = ${common.extra_scripts} -[[env:nodemcuv2_jp] +[env:nodemcuv2_jp] lang = jp platform = ${common.platform_version} framework = arduino From 15e04020c6db3ee89fc071eaba29411e4c5e72a1 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Mon, 29 May 2023 00:20:59 +0200 Subject: [PATCH 05/30] Replace all empty INTL_ definitions with lower case [[name of definition]] --- airrohr-firmware/intl_bg.h | 2 +- airrohr-firmware/intl_cn.h | 18 +++++++++--------- airrohr-firmware/intl_cz.h | 18 +++++++++--------- airrohr-firmware/intl_dk.h | 16 ++++++++-------- airrohr-firmware/intl_ee.h | 18 +++++++++--------- airrohr-firmware/intl_es.h | 16 ++++++++-------- airrohr-firmware/intl_fi.h | 18 +++++++++--------- airrohr-firmware/intl_fr.h | 2 +- airrohr-firmware/intl_gr.h | 18 +++++++++--------- airrohr-firmware/intl_hu.h | 18 +++++++++--------- airrohr-firmware/intl_it.h | 16 ++++++++-------- airrohr-firmware/intl_jp.h | 18 +++++++++--------- airrohr-firmware/intl_lt.h | 18 +++++++++--------- airrohr-firmware/intl_lu.h | 18 +++++++++--------- airrohr-firmware/intl_lv.h | 18 +++++++++--------- airrohr-firmware/intl_pl.h | 2 +- airrohr-firmware/intl_pt.h | 18 +++++++++--------- airrohr-firmware/intl_ro.h | 18 +++++++++--------- airrohr-firmware/intl_rs.h | 18 +++++++++--------- airrohr-firmware/intl_ru.h | 2 +- airrohr-firmware/intl_se.h | 2 +- airrohr-firmware/intl_si.h | 18 +++++++++--------- airrohr-firmware/intl_sk.h | 18 +++++++++--------- airrohr-firmware/intl_tr.h | 16 ++++++++-------- 24 files changed, 172 insertions(+), 172 deletions(-) diff --git a/airrohr-firmware/intl_bg.h b/airrohr-firmware/intl_bg.h index 0ed101b9..c9416ca3 100644 --- a/airrohr-firmware/intl_bg.h +++ b/airrohr-firmware/intl_bg.h @@ -67,7 +67,7 @@ const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Информация за ус const char INTL_DEBUG_LEVEL[] PROGMEM = "Debug Level"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Интервал на измерване"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Продължителност като рутер"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Още API"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Изпращане към собствено API"; const char INTL_SERVER[] PROGMEM = "Сървър"; diff --git a/airrohr-firmware/intl_cn.h b/airrohr-firmware/intl_cn.h index a79eccd7..c2017990 100644 --- a/airrohr-firmware/intl_cn.h +++ b/airrohr-firmware/intl_cn.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20({t})"; const char INTL_DNMS[] PROGMEM = "DNMS({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "修正,单位:dB(A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "以℃为单位进行校正"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS(NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "认证"; #define INTL_REPORT_ISSUE "报告问题" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "显示Wifi信息"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "显示设备信息"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Debug 级别"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "测量间隔(秒)"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "持续时间路由器模式"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "更多API"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "发送数据到自定义API"; const char INTL_SERVER[] PROGMEM = "服务器"; @@ -112,7 +112,7 @@ const char INTL_PARTICULATE_MATTER[] PROGMEM = "颗粒物"; const char INTL_TEMPERATURE[] PROGMEM = "温度"; const char INTL_HUMIDITY[] PROGMEM = "湿度"; const char INTL_PRESSURE[] PROGMEM = "气压"; -const char INTL_DEW_POINT[] PROGMEM = ""; +const char INTL_DEW_POINT[] PROGMEM = "[[dew_point]]"; const char INTL_CO2_PPM[] PROGMEM = "ppm CO₂"; const char INTL_LEQ_A[] PROGMEM = "LAeq"; const char INTL_LA_MIN[] PROGMEM = "LA min"; diff --git a/airrohr-firmware/intl_cz.h b/airrohr-firmware/intl_cz.h index 421a58d5..1a25ad39 100644 --- a/airrohr-firmware/intl_cz.h +++ b/airrohr-firmware/intl_cz.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "Korekce v dB (A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "Korekce ve °C"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "Pøihlášení (heslem)"; #define INTL_REPORT_ISSUE "Nahlásit problém" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "Zobrazit informace o WiFi"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Zobrazit informace o zařízení"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Ladìní Úroveò"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Interval mìøení"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Trvání Mód routeru"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Další API"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Poslat data na vlastní API"; const char INTL_SERVER[] PROGMEM = "Server"; @@ -112,7 +112,7 @@ const char INTL_PARTICULATE_MATTER[] PROGMEM = "prachových èástic"; const char INTL_TEMPERATURE[] PROGMEM = "teplota"; const char INTL_HUMIDITY[] PROGMEM = "rel. vlhkost"; const char INTL_PRESSURE[] PROGMEM = "tlak vzduchu"; -const char INTL_DEW_POINT[] PROGMEM = ""; +const char INTL_DEW_POINT[] PROGMEM = "[[dew_point]]"; const char INTL_CO2_PPM[] PROGMEM = "ppm CO₂"; const char INTL_LEQ_A[] PROGMEM = "LAeq"; const char INTL_LA_MIN[] PROGMEM = "LA min"; diff --git a/airrohr-firmware/intl_dk.h b/airrohr-firmware/intl_dk.h index 747e452e..270d2701 100644 --- a/airrohr-firmware/intl_dk.h +++ b/airrohr-firmware/intl_dk.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "korrektion i dB (A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "Korrektion i °C"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "Aktiver BasicAuth"; #define INTL_REPORT_ISSUE "Rapporter et problem" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "Vis WiFi-info"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Vis enhedsinfo"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Debug level"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Målinterval"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Permanent router-mode"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Yderligere APIer"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Send til eget API"; const char INTL_SERVER[] PROGMEM = "Server"; diff --git a/airrohr-firmware/intl_ee.h b/airrohr-firmware/intl_ee.h index ed4280c1..306a7876 100644 --- a/airrohr-firmware/intl_ee.h +++ b/airrohr-firmware/intl_ee.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "korrektsioon dB(A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "Korrektsioon °C"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "Autentimine"; #define INTL_REPORT_ISSUE "Teatage probleemist" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "Wifi info kuvamine"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Seadme info kuvamine"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Debug tase"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Mõõtmisintervall (sek)"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Kestus marsruuteri režiim"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Rohkem APIsid"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Andmete saatmine kohandatud API-le"; const char INTL_SERVER[] PROGMEM = "Server"; @@ -112,7 +112,7 @@ const char INTL_PARTICULATE_MATTER[] PROGMEM = "tahked osakesed"; const char INTL_TEMPERATURE[] PROGMEM = "temperatuur"; const char INTL_HUMIDITY[] PROGMEM = "niiskus"; const char INTL_PRESSURE[] PROGMEM = "õhurõhk"; -const char INTL_DEW_POINT[] PROGMEM = ""; +const char INTL_DEW_POINT[] PROGMEM = "[[dew_point]]"; const char INTL_CO2_PPM[] PROGMEM = "ppm CO₂"; const char INTL_LEQ_A[] PROGMEM = "LAeq"; const char INTL_LA_MIN[] PROGMEM = "LA min"; diff --git a/airrohr-firmware/intl_es.h b/airrohr-firmware/intl_es.h index 525824dc..7a85626a 100644 --- a/airrohr-firmware/intl_es.h +++ b/airrohr-firmware/intl_es.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "Corrección en dB (A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "Corrección en °C"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "Autorización"; #define INTL_REPORT_ISSUE "Reportar un problema" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "Mostrar información de WiFi"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Mostrar información del dispositivo"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Debug Level"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Intervalo de medición"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Duración del modo enrutador"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Otros API"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Mandar a propio API"; const char INTL_SERVER[] PROGMEM = "Servidor"; diff --git a/airrohr-firmware/intl_fi.h b/airrohr-firmware/intl_fi.h index 6a75dd6a..b93321e2 100644 --- a/airrohr-firmware/intl_fi.h +++ b/airrohr-firmware/intl_fi.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "korjaus dB(A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "Korjaus °C:ssa"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "Tunnistus"; #define INTL_REPORT_ISSUE "Ilmoita asiasta" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "Näytä Wifi tiedot"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Näytä laitteen tiedot"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Debug taso"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Mittausväli (sek)"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Reititintilan kesto"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Lisää sovellusrajapintoja"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Tietojen lähettäminen mukautettuun API:han"; const char INTL_SERVER[] PROGMEM = "Palvelin"; @@ -112,7 +112,7 @@ const char INTL_PARTICULATE_MATTER[] PROGMEM = "hiukkaset"; const char INTL_TEMPERATURE[] PROGMEM = "lämpötila"; const char INTL_HUMIDITY[] PROGMEM = "kosteus"; const char INTL_PRESSURE[] PROGMEM = "ilmanpaine"; -const char INTL_DEW_POINT[] PROGMEM = ""; +const char INTL_DEW_POINT[] PROGMEM = "[[dew_point]]"; const char INTL_CO2_PPM[] PROGMEM = "ppm CO₂"; const char INTL_LEQ_A[] PROGMEM = "LAeq"; const char INTL_LA_MIN[] PROGMEM = "LA min"; diff --git a/airrohr-firmware/intl_fr.h b/airrohr-firmware/intl_fr.h index ab64ef59..25eae05f 100644 --- a/airrohr-firmware/intl_fr.h +++ b/airrohr-firmware/intl_fr.h @@ -67,7 +67,7 @@ const char INTL_STATIC_DNS[] PROGMEM = "Serveur DNS"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Niveau de débogage"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Intervalle de mesure"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Durée mode routeur"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Autres API"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Envoyer les données vers l'API personnelle"; const char INTL_SERVER[] PROGMEM = "Serveur"; diff --git a/airrohr-firmware/intl_gr.h b/airrohr-firmware/intl_gr.h index 452656b4..077d2000 100644 --- a/airrohr-firmware/intl_gr.h +++ b/airrohr-firmware/intl_gr.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "διόρθωση σε dB(A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "Διόρθωση σε °C"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "Αυθεντικοποίηση"; #define INTL_REPORT_ISSUE "Αναφέρετε ένα θέμα" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "Εμφάνιση πληροφοριών Wifi"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Εμφάνιση πληροφοριών συσκευής"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Αποσφαλμάτωση επίπεδο"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Διάστημα μέτρησης (sec)"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Διάρκεια λειτουργίας δρομολογητή"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Περισσότερα APIs"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Αποστολή δεδομένων σε προσαρμοσμένο API"; const char INTL_SERVER[] PROGMEM = "Διακομιστής"; @@ -112,7 +112,7 @@ const char INTL_PARTICULATE_MATTER[] PROGMEM = "σωματιδιακή ύλη"; const char INTL_TEMPERATURE[] PROGMEM = "θερμοκρασία"; const char INTL_HUMIDITY[] PROGMEM = "υγρασία"; const char INTL_PRESSURE[] PROGMEM = "πίεση του αέρα"; -const char INTL_DEW_POINT[] PROGMEM = ""; +const char INTL_DEW_POINT[] PROGMEM = "[[dew_point]]"; const char INTL_CO2_PPM[] PROGMEM = "ppm CO₂"; const char INTL_LEQ_A[] PROGMEM = "LAeq"; const char INTL_LA_MIN[] PROGMEM = "LA min"; diff --git a/airrohr-firmware/intl_hu.h b/airrohr-firmware/intl_hu.h index edb753f7..0d5a2499 100644 --- a/airrohr-firmware/intl_hu.h +++ b/airrohr-firmware/intl_hu.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM ="korrekció dB(A)-ben"; const char INTL_TEMP_CORRECTION[] PROGMEM = "Korrekció °C"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "Azonosítás"; #define INTL_REPORT_ISSUE "Jelents egy hibát" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "Wifi adatok megjelenítése"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Eszközadatok megjelenítése"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Debug Level"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Mérési intervallum"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Hotspot mód időtartama"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "További API-k"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Adatok küldése saját API-nak"; const char INTL_SERVER[] PROGMEM = "Szerver"; @@ -112,7 +112,7 @@ const char INTL_PARTICULATE_MATTER[] PROGMEM = "szálló por"; const char INTL_TEMPERATURE[] PROGMEM = "hőmérséklet"; const char INTL_HUMIDITY[] PROGMEM = "relatív páratartalom"; const char INTL_PRESSURE[] PROGMEM = "légnyomás"; -const char INTL_DEW_POINT[] PROGMEM = ""; +const char INTL_DEW_POINT[] PROGMEM = "[[dew_point]]"; const char INTL_CO2_PPM[] PROGMEM = "ppm CO₂"; const char INTL_LEQ_A[] PROGMEM = "LAeq"; const char INTL_LA_MIN[] PROGMEM = "LA min"; diff --git a/airrohr-firmware/intl_it.h b/airrohr-firmware/intl_it.h index bad235ba..467105c0 100644 --- a/airrohr-firmware/intl_it.h +++ b/airrohr-firmware/intl_it.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "Correzione in dB(A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "Correzione in °C"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "Autorizzazione"; #define INTL_REPORT_ISSUE "Segnala un problema" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "Visualizza informazioni del wi-fi"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Visualizza informazioni del dispositivo"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Debug Level"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "intervallo di misura"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Durata della modalità router"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Altre API"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Invia i dati alla propria API"; const char INTL_SERVER[] PROGMEM = "Server"; diff --git a/airrohr-firmware/intl_jp.h b/airrohr-firmware/intl_jp.h index 4244f939..a5bd9ba6 100644 --- a/airrohr-firmware/intl_jp.h +++ b/airrohr-firmware/intl_jp.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "補正量(単位:dB(A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "補正(単位:°C"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "認証"; #define INTL_REPORT_ISSUE "問題を報告する" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "Wifi情報の表示"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "デバイス情報の表示"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "デバッグ レベル"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "測定間隔(秒"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "持続時間ルータモード"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "その他のAPI"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "カスタムAPIへのデータ送信"; const char INTL_SERVER[] PROGMEM = "サーバー"; @@ -112,7 +112,7 @@ const char INTL_PARTICULATE_MATTER[] PROGMEM = "粒子状物質"; const char INTL_TEMPERATURE[] PROGMEM = "温度"; const char INTL_HUMIDITY[] PROGMEM = "湿度"; const char INTL_PRESSURE[] PROGMEM = "空気圧"; -const char INTL_DEW_POINT[] PROGMEM = ""; +const char INTL_DEW_POINT[] PROGMEM = "[[dew_point]]"; const char INTL_CO2_PPM[] PROGMEM = "ppm CO₂"; const char INTL_LEQ_A[] PROGMEM = "LAeq"; const char INTL_LA_MIN[] PROGMEM = "L.A.分"; diff --git a/airrohr-firmware/intl_lt.h b/airrohr-firmware/intl_lt.h index cb9b80c1..18687783 100644 --- a/airrohr-firmware/intl_lt.h +++ b/airrohr-firmware/intl_lt.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "korekcija dB(A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "Korekcija °C"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "Autentiškumo nustatymas"; #define INTL_REPORT_ISSUE "Pranešti apie problemą" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "Rodyti WiFi informaciją"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Rodyti informaciją apie įrenginį"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Derinimo lygis"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Matavimo intervalas (sek.)"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Trukmė maršrutizatoriaus režimas"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Daugiau API"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Duomenų siuntimas į pasirinktinę API"; const char INTL_SERVER[] PROGMEM = "Serveris"; @@ -112,7 +112,7 @@ const char INTL_PARTICULATE_MATTER[] PROGMEM = "kietosios dalelės"; const char INTL_TEMPERATURE[] PROGMEM = "temperatūra"; const char INTL_HUMIDITY[] PROGMEM = "drėgmė"; const char INTL_PRESSURE[] PROGMEM = "oro slėgis"; -const char INTL_DEW_POINT[] PROGMEM = ""; +const char INTL_DEW_POINT[] PROGMEM = "[[dew_point]]"; const char INTL_CO2_PPM[] PROGMEM = "ppm CO₂"; const char INTL_LEQ_A[] PROGMEM = "LAeq"; const char INTL_LA_MIN[] PROGMEM = "LA min."; diff --git a/airrohr-firmware/intl_lu.h b/airrohr-firmware/intl_lu.h index 6bdccbc5..86bcecdb 100644 --- a/airrohr-firmware/intl_lu.h +++ b/airrohr-firmware/intl_lu.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "Korrekturwärt an dB(A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "Korrekturwärt an °C"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "BasicAuth aktivéieren"; #define INTL_REPORT_ISSUE "E Feeler melden" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "WiFi Info uweisen"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Apparat Info uweisen"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Debug Niveau"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Mooss-intervall"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Zait Routermodus"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Aner APIs"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Un eegen API schécken"; const char INTL_SERVER[] PROGMEM = "Server"; @@ -112,7 +112,7 @@ const char INTL_PARTICULATE_MATTER[] PROGMEM = "Reng Stëbspartikelen"; const char INTL_TEMPERATURE[] PROGMEM = "Temperatur"; const char INTL_HUMIDITY[] PROGMEM = "rel. Loftfiichtegkeet"; const char INTL_PRESSURE[] PROGMEM = "Loftdrock"; -const char INTL_DEW_POINT[] PROGMEM = ""; +const char INTL_DEW_POINT[] PROGMEM = "[[dew_point]]"; const char INTL_CO2_PPM[] PROGMEM = "ppm CO₂"; const char INTL_LEQ_A[] PROGMEM = "LAeq"; const char INTL_LA_MIN[] PROGMEM = "LA min"; diff --git a/airrohr-firmware/intl_lv.h b/airrohr-firmware/intl_lv.h index 5e2c6cc8..47bcb3cd 100644 --- a/airrohr-firmware/intl_lv.h +++ b/airrohr-firmware/intl_lv.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "korekcija dB(A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "Korekcija °C"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "Autentifikācija"; #define INTL_REPORT_ISSUE "Ziņot par problēmu" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "Wifi informācijas rādīšana"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Parādīt informāciju par ierīci"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Debug līmenis"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Mērīšanas intervāls (s)"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Ilgums maršrutētāja režīms"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Vairāk API"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Datu nosūtīšana uz pielāgotu API"; const char INTL_SERVER[] PROGMEM = "Serveris"; @@ -112,7 +112,7 @@ const char INTL_PARTICULATE_MATTER[] PROGMEM = "cietās daļiņas"; const char INTL_TEMPERATURE[] PROGMEM = "temperatūra"; const char INTL_HUMIDITY[] PROGMEM = "mitrums"; const char INTL_PRESSURE[] PROGMEM = "gaisa spiediens"; -const char INTL_DEW_POINT[] PROGMEM = ""; +const char INTL_DEW_POINT[] PROGMEM = "[[dew_point]]"; const char INTL_CO2_PPM[] PROGMEM = "ppm CO₂"; const char INTL_LEQ_A[] PROGMEM = "LAeq"; const char INTL_LA_MIN[] PROGMEM = "LA min"; diff --git a/airrohr-firmware/intl_pl.h b/airrohr-firmware/intl_pl.h index 6bd69cc2..99e07b75 100644 --- a/airrohr-firmware/intl_pl.h +++ b/airrohr-firmware/intl_pl.h @@ -67,7 +67,7 @@ const char INTL_STATIC_DNS[] PROGMEM = "Statyczny DNS"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Poziom debugowania"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Czas między pomiarami (sek.)"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Czas trwania w trybie routera (sek.)"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Kolejne API"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Wysyłaj dane do własnego API"; const char INTL_SERVER[] PROGMEM = "Adres serwera"; diff --git a/airrohr-firmware/intl_pt.h b/airrohr-firmware/intl_pt.h index 4d305581..a82b37e5 100644 --- a/airrohr-firmware/intl_pt.h +++ b/airrohr-firmware/intl_pt.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "Valor de correção em dB(A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "Correção em °C"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "Autorização"; #define INTL_REPORT_ISSUE "Comunicar um problema" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "Mostrar informações WiFi"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Mostrar informações do dispositivo"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Debug Level"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Intervalo de medição"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Duração Modo roteador"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Outros API"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Enviar para a própria API"; const char INTL_SERVER[] PROGMEM = "Servidor"; @@ -112,7 +112,7 @@ const char INTL_PARTICULATE_MATTER[] PROGMEM = "partículas finas"; const char INTL_TEMPERATURE[] PROGMEM = "Temperatura"; const char INTL_HUMIDITY[] PROGMEM = "Humidade"; const char INTL_PRESSURE[] PROGMEM = "Pressão atmosférica"; -const char INTL_DEW_POINT[] PROGMEM = ""; +const char INTL_DEW_POINT[] PROGMEM = "[[dew_point]]"; const char INTL_CO2_PPM[] PROGMEM = "ppm CO₂"; const char INTL_LEQ_A[] PROGMEM = "LAeq"; const char INTL_LA_MIN[] PROGMEM = "LA min"; diff --git a/airrohr-firmware/intl_ro.h b/airrohr-firmware/intl_ro.h index 68d3a54a..f630ed4a 100644 --- a/airrohr-firmware/intl_ro.h +++ b/airrohr-firmware/intl_ro.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "corecție în dB(A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "Corecție în °C"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "Autentificare"; #define INTL_REPORT_ISSUE "Raportați o problemă" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "Afișarea informațiilor Wifi"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Afișarea informațiilor despre dispozitiv"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Debug level"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Interval de măsurare (sec)"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Durata modului router"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Mai multe API-uri"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Trimiteți date către API personalizat"; const char INTL_SERVER[] PROGMEM = "Server"; @@ -112,7 +112,7 @@ const char INTL_PARTICULATE_MATTER[] PROGMEM = "pulberi în suspensie"; const char INTL_TEMPERATURE[] PROGMEM = "temperatură"; const char INTL_HUMIDITY[] PROGMEM = "umiditate"; const char INTL_PRESSURE[] PROGMEM = "presiunea aerului"; -const char INTL_DEW_POINT[] PROGMEM = ""; +const char INTL_DEW_POINT[] PROGMEM = "[[dew_point]]"; const char INTL_CO2_PPM[] PROGMEM = "ppm CO₂"; const char INTL_LEQ_A[] PROGMEM = "LAeq"; const char INTL_LA_MIN[] PROGMEM = "LA min"; diff --git a/airrohr-firmware/intl_rs.h b/airrohr-firmware/intl_rs.h index 42d9ea5d..91a09252 100644 --- a/airrohr-firmware/intl_rs.h +++ b/airrohr-firmware/intl_rs.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "Korekcija u dB(A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "Korekcija u °C"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "Autorizacija"; #define INTL_REPORT_ISSUE "Prijavite problem" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "Prikaži WiFi podatke"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Pokaži informacije o uređaju"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Nivo otklanjanja grešaka"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Merni interval"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Trajanje ruter režima"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Više API-ja"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Pošalji podatke mom API-ju"; const char INTL_SERVER[] PROGMEM = "Server"; @@ -112,7 +112,7 @@ const char INTL_PARTICULATE_MATTER[] PROGMEM = "suspendovane čestice"; const char INTL_TEMPERATURE[] PROGMEM = "temperatura"; const char INTL_HUMIDITY[] PROGMEM = "vlažnost"; const char INTL_PRESSURE[] PROGMEM = "vazdušni pritisak"; -const char INTL_DEW_POINT[] PROGMEM = ""; +const char INTL_DEW_POINT[] PROGMEM = "[[dew_point]]"; const char INTL_CO2_PPM[] PROGMEM = "ppm CO₂"; const char INTL_LEQ_A[] PROGMEM = "LAeq"; const char INTL_LA_MIN[] PROGMEM = "LA min"; diff --git a/airrohr-firmware/intl_ru.h b/airrohr-firmware/intl_ru.h index cf29b690..391eafc8 100644 --- a/airrohr-firmware/intl_ru.h +++ b/airrohr-firmware/intl_ru.h @@ -67,7 +67,7 @@ const char INTL_STATIC_DNS[] PROGMEM = "DNS сервер"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Уровень отладки"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Измерительный интервал"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Длительность режима маршрутизатора"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Другие API"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Отправить в свой API"; const char INTL_SERVER[] PROGMEM = "Сервер"; diff --git a/airrohr-firmware/intl_se.h b/airrohr-firmware/intl_se.h index 44a70e66..099830ec 100644 --- a/airrohr-firmware/intl_se.h +++ b/airrohr-firmware/intl_se.h @@ -67,7 +67,7 @@ const char INTL_STATIC_DNS[] PROGMEM = "Statisk DNS"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Debug level"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Mätintervall"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Permanent router-modus"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Ytterligare APIer"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Skicka till eget API"; const char INTL_SERVER[] PROGMEM = "Server"; diff --git a/airrohr-firmware/intl_si.h b/airrohr-firmware/intl_si.h index 1a0878f3..71dcdb50 100644 --- a/airrohr-firmware/intl_si.h +++ b/airrohr-firmware/intl_si.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "popravek v dB(A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "Popravek v °C"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "Preverjanje pristnosti"; #define INTL_REPORT_ISSUE "Prijavite težavo" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "Prikaz informacij o Wifi"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Prikaz informacij o napravi"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Debug raven"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Interval merjenja (s)"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Trajanje načina usmerjevalnika"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Več API-jev"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Pošiljanje podatkov v API po meri"; const char INTL_SERVER[] PROGMEM = "Strežnik"; @@ -112,7 +112,7 @@ const char INTL_PARTICULATE_MATTER[] PROGMEM = "trdni delci"; const char INTL_TEMPERATURE[] PROGMEM = "temperatura"; const char INTL_HUMIDITY[] PROGMEM = "vlažnost"; const char INTL_PRESSURE[] PROGMEM = "zračni tlak"; -const char INTL_DEW_POINT[] PROGMEM = ""; +const char INTL_DEW_POINT[] PROGMEM = "[[dew_point]]"; const char INTL_CO2_PPM[] PROGMEM = "ppm CO₂"; const char INTL_LEQ_A[] PROGMEM = "LAeq"; const char INTL_LA_MIN[] PROGMEM = "LA min"; diff --git a/airrohr-firmware/intl_sk.h b/airrohr-firmware/intl_sk.h index 4ee73b65..9f46a59b 100644 --- a/airrohr-firmware/intl_sk.h +++ b/airrohr-firmware/intl_sk.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM ="korekcia v dB(A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "korekcia v °C"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "Prihlásenie (heslom)"; #define INTL_REPORT_ISSUE "Report an issue" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "Zobraziť info o WiFi"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Zobraziť info o zariadení"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Ladenide úroveň"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Interval meraní (sec)"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Trvanie router mod"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Dalšie API"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Poslať data na vlastné API"; const char INTL_SERVER[] PROGMEM = "Server"; @@ -112,7 +112,7 @@ const char INTL_PARTICULATE_MATTER[] PROGMEM = "prachových častíc"; const char INTL_TEMPERATURE[] PROGMEM = "teplota"; const char INTL_HUMIDITY[] PROGMEM = "rel. vlhkosť"; const char INTL_PRESSURE[] PROGMEM = "tlak vzduchu"; -const char INTL_DEW_POINT[] PROGMEM = ""; +const char INTL_DEW_POINT[] PROGMEM = "[[dew_point]]"; const char INTL_CO2_PPM[] PROGMEM = "ppm CO₂"; const char INTL_LEQ_A[] PROGMEM = "LAeq"; const char INTL_LA_MIN[] PROGMEM = "LA min"; diff --git a/airrohr-firmware/intl_tr.h b/airrohr-firmware/intl_tr.h index cf791bd7..ed4c8197 100644 --- a/airrohr-firmware/intl_tr.h +++ b/airrohr-firmware/intl_tr.h @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "dB (A) 'da düzeltme"; const char INTL_TEMP_CORRECTION[] PROGMEM = "°C olarak düzeltme"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "yetkilendirme"; #define INTL_REPORT_ISSUE "Sorun bildirin" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "WiFi Bilgilerini Görüntüle"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Cihaz Bilgilerini Görüntüle"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; const char INTL_DEBUG_LEVEL[] PROGMEM = "Debug seviye"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = " Ölçüm aralığı"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Süre yönlendirici(Router) modu"; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Daha fazla uygulama programlama arayüzü (API)"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "uygulama programlama arayüzüne (API)veri gönder"; const char INTL_SERVER[] PROGMEM = "Sunucu"; From 80cc87ffc0d16e44400481f728a313698745e70c Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Sun, 28 May 2023 14:08:25 +0200 Subject: [PATCH 06/30] Replace DST Root CA X3 with ISRG Root X1 The LetsEncrypt DST Root CA X3 expired in 2021 and was replaced with the ISRG Root X1 CA. The DST Root CA X3 was still a working trust anchor but the ISRG Root X1 CA is the preferred one and should be good until 2035. --- airrohr-firmware/ca-root.h | 49 +++++++++++++++++++++++--------------- airrohr-firmware/utils.cpp | 4 ++-- 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/airrohr-firmware/ca-root.h b/airrohr-firmware/ca-root.h index 0a2a5211..905cac5f 100644 --- a/airrohr-firmware/ca-root.h +++ b/airrohr-firmware/ca-root.h @@ -1,22 +1,33 @@ -static const char dst_root_ca_x3[] PROGMEM = R"EOF( +static const char dst_root_ca_x1[] PROGMEM = R"EOF( -----BEGIN CERTIFICATE----- -MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ -MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT -DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow -PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD -Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O -rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq -OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b -xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw -7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD -aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV -HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG -SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 -ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr -AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz -R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 -JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo -Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 +WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu +ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc +h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ +0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U +A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW +T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH +B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC +B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv +KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn +OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn +jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw +qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI +rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq +hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ +3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK +NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 +ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur +TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC +jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc +oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq +4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA +mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d +emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= -----END CERTIFICATE----- )EOF"; diff --git a/airrohr-firmware/utils.cpp b/airrohr-firmware/utils.cpp index 20bfbcd1..30bb63f4 100644 --- a/airrohr-firmware/utils.cpp +++ b/airrohr-firmware/utils.cpp @@ -159,7 +159,7 @@ String delayToString(unsigned time_ms) { } #if defined(ESP8266) -BearSSL::X509List x509_dst_root_ca(dst_root_ca_x3); +BearSSL::X509List x509_dst_root_ca(dst_root_ca_x1); void configureCACertTrustAnchor(WiFiClientSecure* client) { constexpr time_t fw_built_year = (__DATE__[ 7] - '0') * 1000 + \ @@ -750,4 +750,4 @@ bool isNumeric(const String& str) { return false; } return true; -} \ No newline at end of file +} From 96d5ad8d6726abaf34a9d163be6c9683e0ba70f5 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Mon, 17 Apr 2023 23:29:34 +0200 Subject: [PATCH 07/30] CI workflow updates - run on all beta* branches - update python and action versions - make airrohr-update-loader build/store steps conditional (not for esp32 branches) --- .github/workflows/airohr-firmware.yml | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/.github/workflows/airohr-firmware.yml b/.github/workflows/airohr-firmware.yml index f061c9cf..ee6c0bf4 100644 --- a/.github/workflows/airohr-firmware.yml +++ b/.github/workflows/airohr-firmware.yml @@ -3,11 +3,11 @@ name: Airrohr Firmware CI on: push: - branches: [ master, beta, feature/** ] + branches: [ master, beta*, feature/** ] pull_request: - branches: [ master, beta ] + branches: [ master, beta* ] create: - branches: [ master, beta ] + branches: [ master, beta* ] jobs: build: @@ -15,13 +15,13 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: - python-version: '3.7' + python-version: '3.11' - name: Load dependencies from cache - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} @@ -32,22 +32,26 @@ jobs: python3 -m pip install --upgrade pip pip3 install platformio platformio --version - - name: Run builds + - name: Run airrohr-firmware builds run: | cd airrohr-firmware && pwd && ls -l && platformio run && ls -l builds/ - cd ../airrohr-update-loader && pwd && ls -l && platformio run && ls -l builds/ + - name: Run update-loader build + if: contains(github.ref_name,'esp32') == false + run: | + cd airrohr-update-loader && pwd && ls -l && platformio run && ls -l builds/ - name: Tar Results run: | tar czvf airrohr-firmware-builds.tar.gz -C airrohr-firmware/builds/ . - name: Store airrohr-firmware - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: if-no-files-found: error name: airrohr-firmware-builds path: airrohr-firmware-builds.tar.gz retention-days: 30 - name: Store update-loader - uses: actions/upload-artifact@v2 + if: contains(github.ref_name,'esp32') == false + uses: actions/upload-artifact@v3 with: if-no-files-found: error name: airrohr-update-loader From b2e4d26a23fc60958007c7fe44ccf62409c30725 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Thu, 25 May 2023 12:17:25 +0200 Subject: [PATCH 08/30] Go back to Arduino Core 2.7.4 release as a potential workaround for stalling OTA downloads - Code specific for Core > 3.0 is commented out - WiFi.persistent(false) is re-enabled (default is true on Arduino Core < 3.0) This reverts commit 76240f517b1b5db87cadd5b4ad74b44390a47ca1. --- airrohr-firmware/airrohr-firmware.ino | 6 ++++-- airrohr-firmware/platformio.ini | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index a51b3657..30b373aa 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -1563,7 +1563,8 @@ static void sendHttpRedirect() { default_ip_third_octet, default_ip_fourth_octet); - String defaultAddress = F("http://") + defaultIP.toString() + F("/config"); + //String defaultAddress = F("http://") + defaultIP.toString() + F("/config"); + String defaultAddress = F("http://192.168.4.1/config"); server.sendHeader(F("Location"), defaultAddress); server.send(302, FPSTR(TXT_CONTENT_TYPE_TEXT_HTML), emptyString); } @@ -2993,7 +2994,7 @@ static WiFiClient *getNewLoggerWiFiClient(const LoggerEntry logger) #if defined(ESP8266) static_cast(_client)->setSession(loggerConfigs[logger].session); static_cast(_client)->setBufferSizes(1024, TCP_MSS > 1024 ? 2048 : 1024); - static_cast(_client)->setSSLVersion(BR_TLS12, BR_TLS12); + //static_cast(_client)->setSSLVersion(BR_TLS12, BR_TLS12); switch (logger) { case Loggeraircms: @@ -5836,6 +5837,7 @@ void setup(void) esp_chipid += String((uint32_t)chipid_num, HEX); #endif cfg::initNonTrivials(esp_chipid.c_str()); + WiFi.persistent(false); debug_outln_info(F("airRohr: " SOFTWARE_VERSION_STR "/"), String(CURRENT_LANG)); diff --git a/airrohr-firmware/platformio.ini b/airrohr-firmware/platformio.ini index eeebd1d7..eb915229 100644 --- a/airrohr-firmware/platformio.ini +++ b/airrohr-firmware/platformio.ini @@ -21,7 +21,7 @@ src_dir = . [common] build_flags = - -DVTABLES_IN_FLASH + -DVTABLES_IN_FLASH -D BEARSSL_SSL_BASIC -D PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -D HTTPCLIENT_1_1_COMPATIBLE=0 -D NO_GLOBAL_SERIAL=0 -DNDEBUG -DFP_IN_IROM -frandom-seed=b61f78373 @@ -82,11 +82,11 @@ lib_deps_esp8266 = ${common.lib_deps_esp8266_platform} ${common.lib_deps_externa lib_deps_esp32 = ${common.lib_deps_esp32_platform} ${common.lib_deps_external} extra_scripts = platformio_script.py -# This release is reflecting the Arduino Core 3.0.1 release +# This release is reflecting the Arduino Core 2.7.4 release # When the requirement for Arduino Core is raised, this # needs to be adjusted to the matching version from # https://github.com/platformio/platform-espressif8266/releases -platform_version = espressif8266@3.1.0 +platform_version = espressif8266@2.6.2 platform_version_esp32 = espressif32@1.11.1 ; using Arduino core 1.0.4 [DISABLEDenv:lolin_d32_pro_debug] From d1b8aad47485e05f4f8c4a71801cb0622061500f Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Thu, 18 May 2023 17:15:22 +0200 Subject: [PATCH 09/30] platformio.ini: change setting of compiler optimization - Disable default -Os optimization for size - Set -O2 explictly in build_flags This can be tweaked depending on the performance of the resulting builds. --- airrohr-firmware/platformio.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/airrohr-firmware/platformio.ini b/airrohr-firmware/platformio.ini index eb915229..0cb70577 100644 --- a/airrohr-firmware/platformio.ini +++ b/airrohr-firmware/platformio.ini @@ -25,6 +25,7 @@ build_flags = -D PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -D HTTPCLIENT_1_1_COMPATIBLE=0 -D NO_GLOBAL_SERIAL=0 -DNDEBUG -DFP_IN_IROM -frandom-seed=b61f78373 + -O2 build_flags_esp32 = -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY @@ -89,6 +90,9 @@ extra_scripts = platformio_script.py platform_version = espressif8266@2.6.2 platform_version_esp32 = espressif32@1.11.1 ; using Arduino core 1.0.4 +[env] +build_unflags = -Os + [DISABLEDenv:lolin_d32_pro_debug] lang = DE platform = ${common.platform_version_esp32} From d81ec3209a7d357282dc9323fbb6d9d2b2377b84 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Mon, 29 May 2023 01:57:42 +0200 Subject: [PATCH 10/30] Update SOFTWARE_VERSION_STR and memory usage table --- airrohr-firmware/airrohr-firmware.ino | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index 30b373aa..03a2c415 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -47,17 +47,17 @@ * * ************************************************************************ * - * latest build using lib 3.1.0 - * DATA: [==== ] 41.5% (used 34000 bytes from 81920 bytes) - * PROGRAM: [====== ] 58.0% (used 605529 bytes from 1044464 bytes) - * + * latest build using lib 2.7.4 with -O2 + * DATA: [==== ] 41.3% (used 33856 bytes from 81920 bytes) + * PROGRAM: [====== ] 59.5% (used 621184 bytes from 1044464 bytes) + * ************************************************************************/ #include #include // increment on change -#define SOFTWARE_VERSION_STR "NRZ-2021-134-B4" +#define SOFTWARE_VERSION_STR "NRZ-2023-134-B5" String SOFTWARE_VERSION(SOFTWARE_VERSION_STR); /***************************************************************** From c5939aa23aa5b5f50a6b11b9f34ed8188b15c364 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Sun, 4 Jun 2023 14:20:24 +0200 Subject: [PATCH 11/30] readme.md: update links to build status badges to github actions --- readme.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/readme.md b/readme.md index fdc5ab79..a0c18e2a 100644 --- a/readme.md +++ b/readme.md @@ -1,11 +1,11 @@ -firmware master branch: [![Build Status](https://travis-ci.com/opendata-stuttgart/sensors-software.svg?branch=master)](https://travis-ci.com/opendata-stuttgart/sensors-software) -firmware beta branch: [![Build Status](https://travis-ci.com/opendata-stuttgart/sensors-software.svg?branch=beta)](https://travis-ci.com/opendata-stuttgart/sensors-software) +firmware master branch: [![Build Status](https://github.com/opendata-stuttgart/sensors-software/actions/workflows/airohr-firmware.yml/badge.svg?branch=master)](https://github.com/opendata-stuttgart/sensors-software/actions/workflows/airohr-firmware.yml?query=branch%3Amaster) +firmware beta branch: [![Build Status](https://github.com/opendata-stuttgart/sensors-software/actions/workflows/airohr-firmware.yml/badge.svg?branch=beta)](https://github.com/opendata-stuttgart/sensors-software/actions/workflows/airohr-firmware.yml?query=branch%3Abeta) # Software for Sensor.Community / Luftdaten.Info Sensor ## airrohr-firmware -The maintained main firmware for the Luftdaten.Info Sensor. +The maintained main firmware for the Sensor.Community / Luftdaten.Info Sensor. ## airrohr-update-loader From 474f767ba8433867413bbd244039a42a91ac087a Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Wed, 7 Jun 2023 22:35:26 +0200 Subject: [PATCH 12/30] Add json parse info and increase JSON_BUFFER_SIZE to 2800 --- airrohr-firmware/airrohr-firmware.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index 03a2c415..d99e2a56 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -245,7 +245,7 @@ namespace cfg } } -#define JSON_BUFFER_SIZE 2300 +#define JSON_BUFFER_SIZE 2800 LoggerConfig loggerConfigs[LoggerCount]; @@ -1119,12 +1119,12 @@ static void readConfig(bool oldconfig = false) debug_outln_info(F("opened config file...")); DynamicJsonDocument json(JSON_BUFFER_SIZE); DeserializationError err = deserializeJson(json, configFile.readString()); + debug_outln_info(F("parsing json: "), err.f_str()); configFile.close(); #pragma GCC diagnostic pop if (!err) { - debug_outln_info(F("parsed json...")); for (unsigned e = 0; e < sizeof(configShape) / sizeof(configShape[0]); ++e) { ConfigShapeEntry c; From efbcda6a748d4833bb6e29a0f9334910de38c353 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Fri, 9 Jun 2023 17:37:03 +0200 Subject: [PATCH 13/30] Re-add JSON debug statements depending on cfg::debug level --- airrohr-firmware/airrohr-firmware.ino | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index d99e2a56..9b2d1ffb 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -1149,6 +1149,12 @@ static void readConfig(bool oldconfig = false) break; }; } + + if (cfg::debug > DEBUG_MIN_INFO) + { + serializeJsonPretty(json, Debug); Debug.print('\n'); + } + String writtenVersion(json["SOFTWARE_VERSION"].as()); if (writtenVersion.length() && writtenVersion[0] == 'N' && SOFTWARE_VERSION != writtenVersion) { @@ -3127,7 +3133,6 @@ static unsigned long sendSensorCommunity(const String &data, const int pin, cons *****************************************************************/ static void create_influxdb_string_from_data(String &data_4_influxdb, const String &data) { - debug_outln_verbose(F("Parse JSON for influx DB: "), data); DynamicJsonDocument json2data(JSON_BUFFER_SIZE); DeserializationError err = deserializeJson(json2data, data); if (!err) @@ -6214,6 +6219,7 @@ void loop(void) data.remove(data.length() - 1); } data += "]}"; + debug_outln_verbose(F("Data to send: "), data); yield(); sum_send_time += sendDataToOptionalApis(data); From fb39b35d9f68ffe4678adf7de807ece899db3d47 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Fri, 16 Jun 2023 22:44:55 +0200 Subject: [PATCH 14/30] Force cfg::fs_ssid to default when empty --- airrohr-firmware/airrohr-firmware.ino | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index 9b2d1ffb..85a9ca66 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -1195,6 +1195,13 @@ static void readConfig(bool oldconfig = false) cfg::bmx280_read = true; rewriteConfig = true; } + + if (strlen(cfg::fs_ssid) == 0) + { + snprintf_P(cfg::fs_ssid, LEN_FS_SSID, PSTR("%s%s"), SSID_BASENAME, esp_chipid.c_str()); + debug_outln_info(F("Setting default AP SSID to "), cfg::fs_ssid); + rewriteConfig = true; + } } else { From a83fe8d70fee6da99a0cb3e0bc63504b0db3fa72 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Fri, 23 Jun 2023 22:43:46 +0200 Subject: [PATCH 15/30] Re-enable more SSL ciphers Also show all connection failures --- airrohr-firmware/airrohr-firmware.ino | 7 +++++-- airrohr-firmware/platformio.ini | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index 85a9ca66..add3d080 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -3086,10 +3086,13 @@ static unsigned long sendData(const LoggerEntry logger, const String &data, cons debug_outln_info(F("Succeeded - "), s_Host); send_success = true; } - else if (result >= HTTP_CODE_BAD_REQUEST) + else { debug_outln_info(F("Request failed with error: "), String(result)); - debug_outln_info(F("Details:"), http.getString()); + if (result >= HTTP_CODE_BAD_REQUEST) + { + debug_outln_info(F("Details:"), http.getString()); + } } http.end(); } diff --git a/airrohr-firmware/platformio.ini b/airrohr-firmware/platformio.ini index 0cb70577..7a7ae6ca 100644 --- a/airrohr-firmware/platformio.ini +++ b/airrohr-firmware/platformio.ini @@ -21,7 +21,7 @@ src_dir = . [common] build_flags = - -DVTABLES_IN_FLASH -D BEARSSL_SSL_BASIC + -DVTABLES_IN_FLASH -D PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -D HTTPCLIENT_1_1_COMPATIBLE=0 -D NO_GLOBAL_SERIAL=0 -DNDEBUG -DFP_IN_IROM -frandom-seed=b61f78373 From 78c6c94bd89a64e097cadc523746fd7098c693f8 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Sun, 25 Jun 2023 10:05:34 +0200 Subject: [PATCH 16/30] platformio.ini: switch to -O3 compiler optimization - This increases program size significantly but gives much better performance with WiFi signal strength below -80dB --- airrohr-firmware/airrohr-firmware.ino | 6 +++--- airrohr-firmware/platformio.ini | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index add3d080..38162837 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -47,9 +47,9 @@ * * ************************************************************************ * - * latest build using lib 2.7.4 with -O2 - * DATA: [==== ] 41.3% (used 33856 bytes from 81920 bytes) - * PROGRAM: [====== ] 59.5% (used 621184 bytes from 1044464 bytes) + * latest build using lib 2.7.4 with -O3 + * DATA: [==== ] 41.6% (used 34104 bytes from 81920 bytes) + * PROGRAM: [======= ] 66.5% (used 694547 bytes from 1044464 bytes) * ************************************************************************/ diff --git a/airrohr-firmware/platformio.ini b/airrohr-firmware/platformio.ini index 7a7ae6ca..03f2d9e5 100644 --- a/airrohr-firmware/platformio.ini +++ b/airrohr-firmware/platformio.ini @@ -25,7 +25,7 @@ build_flags = -D PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -D HTTPCLIENT_1_1_COMPATIBLE=0 -D NO_GLOBAL_SERIAL=0 -DNDEBUG -DFP_IN_IROM -frandom-seed=b61f78373 - -O2 + -O3 build_flags_esp32 = -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY From e9f91f564375b1fe304da91f7e33054b4d55626a Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Sat, 12 Aug 2023 11:34:40 +0200 Subject: [PATCH 17/30] Record OTA download error messages and number of bytes downloaded --- airrohr-firmware/airrohr-firmware.ino | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index 38162837..5487d545 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -4692,9 +4692,13 @@ static bool fwDownloadStream(WiFiClientSecure &client, const String &url, Stream http.end(); } + debug_outln_verbose(F("bytes written: "), String(bytes_written)); + if (bytes_written > 0) return true; + last_update_returncode = bytes_written ; + Debug.println( http.errorToString(bytes_written) ); return false; } From 5c3195067d0de12718a94f6aee570a4b93ab9399 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Sat, 12 Aug 2023 12:30:20 +0200 Subject: [PATCH 18/30] Use lower grade ciphers for OTA downloads --- airrohr-firmware/airrohr-firmware.ino | 1 + 1 file changed, 1 insertion(+) diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index 5487d545..7802dd7c 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -4760,6 +4760,7 @@ static void twoStageOTAUpdate() BearSSL::Session clientSession; client.setBufferSizes(1024, TCP_MSS > 1024 ? 2048 : 1024); + client.setCiphersLessSecure(); client.setSession(&clientSession); configureCACertTrustAnchor(&client); From 61e8f2941294cfd7ec4aa31915084a450bb7ad3e Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Mon, 14 Aug 2023 15:44:23 +0200 Subject: [PATCH 19/30] Update Versions.md --- airrohr-firmware/Versions.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/airrohr-firmware/Versions.md b/airrohr-firmware/Versions.md index f8e335fb..ee4af5da 100644 --- a/airrohr-firmware/Versions.md +++ b/airrohr-firmware/Versions.md @@ -1,4 +1,21 @@ -NRZ-2021-134-B3 +NRZ-2023-134-B5 +* Go back to Arduino Core 2.7.4 as a workaround for stalling OTA downloads +* Change setting of compiler optimization to -O3 for better performance +* Replace LetsEncrypt DST Root CA X3 with ISRG Root X1 certificate +* Add displaying errors with config parsing and network connections +* Minor bug fixes and cosmetics +* Update Github Actions CI workflow + +NRZ-2021-134-B4 +* Added Tera Sensor Next PM fulltime support +* Added Piera Systems IPS-7100 support +* Implement power save feature (experimental) +* Minor improvements to config page +* Decrease GPS update interval +* Update various translations +* Contribution.md: Added Information of all known I2C addresses and the devices behind that the firmware is aware of +* more SCD30 info on status page +* Some ciphers removed (MD5,3DES) * Upgrade to Arduino Core 3.0.1 * Libraries updated * changes for compatibility to latest ArduinoJSON From 1076377125c47210e4b69d1107f08eaa7cd88ec0 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Wed, 30 Aug 2023 13:23:35 +0200 Subject: [PATCH 20/30] Use correct argument order for static IP configuration --- airrohr-firmware/airrohr-firmware.ino | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index 7802dd7c..7d74f388 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -2955,7 +2955,11 @@ static void connectWifi() WiFi.hostname(cfg::fs_ssid); if (addr_static_ip.fromString(cfg::static_ip) && addr_static_subnet.fromString(cfg::static_subnet) && addr_static_gateway.fromString(cfg::static_gateway) && addr_static_dns.fromString(cfg::static_dns)) { - WiFi.config(addr_static_ip, addr_static_subnet, addr_static_gateway, addr_static_dns, addr_static_dns); + //ESP argument order is: ip, gateway, subnet, dns1 + //Arduino arg order is: ip, dns, gateway, subnet. + //To allow compatibility, check first octet of 3rd arg. If 255, interpret as ESP order, otherwise Arduino order. + //Here ESP order is used + WiFi.config(addr_static_ip, addr_static_gateway, addr_static_subnet, addr_static_dns, addr_static_dns); } #endif From 9761fc96f1dbac6a35fe6ec81eff83a656fc4188 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Fri, 15 Mar 2024 20:07:45 +0100 Subject: [PATCH 21/30] Update three dependencies where the used version isn't available anymore --- airrohr-firmware/platformio.ini | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/airrohr-firmware/platformio.ini b/airrohr-firmware/platformio.ini index 03f2d9e5..cda21f6f 100644 --- a/airrohr-firmware/platformio.ini +++ b/airrohr-firmware/platformio.ini @@ -47,12 +47,12 @@ lib_deps_external = paulstoffregen/OneWire@2.3.5 marcoschwartz/LiquidCrystal_I2C@1.1.4 adafruit/Adafruit BMP085 Library@1.0.1 - adafruit/Adafruit HTU21DF Library@1.0.5 - adafruit/Adafruit SHT31 Library@1.2.0 + adafruit/Adafruit HTU21DF Library@1.1.2 + adafruit/Adafruit SHT31 Library@2.2.0 milesburton/DallasTemperature@3.9.1 sparkfun/SparkFun SCD30 Arduino Library @ ^1.0.13 bblanchon/ArduinoJson@6.18.3 - ThingPulse/ESP8266 and ESP32 OLED driver for SSD1306 displays @ ^4.2.1 + ThingPulse/ESP8266 and ESP32 OLED driver for SSD1306 displays @ ^4.3.0 mikalhart/TinyGPSPlus@1.0.2 ; system libraries from platform -> no version number From 096b1c174e6bd6cd8ab87b9e803ef1fd805a6874 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Sat, 16 Mar 2024 12:26:20 +0100 Subject: [PATCH 22/30] Version 2023 -> 2024 --- airrohr-firmware/Versions.md | 2 +- airrohr-firmware/airrohr-firmware.ino | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/airrohr-firmware/Versions.md b/airrohr-firmware/Versions.md index ee4af5da..187d8c29 100644 --- a/airrohr-firmware/Versions.md +++ b/airrohr-firmware/Versions.md @@ -1,4 +1,4 @@ -NRZ-2023-134-B5 +NRZ-2024-134-B5 * Go back to Arduino Core 2.7.4 as a workaround for stalling OTA downloads * Change setting of compiler optimization to -O3 for better performance * Replace LetsEncrypt DST Root CA X3 with ISRG Root X1 certificate diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index 7d74f388..21f5e10e 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -57,7 +57,7 @@ #include // increment on change -#define SOFTWARE_VERSION_STR "NRZ-2023-134-B5" +#define SOFTWARE_VERSION_STR "NRZ-2024-134-B5" String SOFTWARE_VERSION(SOFTWARE_VERSION_STR); /***************************************************************** From 1d4ab83c92445dd0e5a28e3f05c342d09d9da51d Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Tue, 30 Jan 2024 22:00:30 +0100 Subject: [PATCH 23/30] Add intl_br.h (pt-BR) in UI and platformio.ini --- airrohr-firmware/airrohr-firmware.ino | 1 + airrohr-firmware/intl.h | 2 ++ airrohr-firmware/intl_br.h | 2 +- airrohr-firmware/platformio.ini | 12 ++++++++++++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index 21f5e10e..cc51525f 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -1508,6 +1508,7 @@ static String form_select_lang() "" "" "" + "" "" "" "" diff --git a/airrohr-firmware/intl.h b/airrohr-firmware/intl.h index 2ec87430..cb750b1d 100644 --- a/airrohr-firmware/intl.h +++ b/airrohr-firmware/intl.h @@ -3,6 +3,8 @@ #if defined(INTL_BG) #include "intl_bg.h" +#elif defined(INTL_BR) +#include "intl_br.h" #elif defined(INTL_CN) #include "intl_cn.h" #elif defined(INTL_CZ) diff --git a/airrohr-firmware/intl_br.h b/airrohr-firmware/intl_br.h index fb2e31d8..3fd2a587 100644 --- a/airrohr-firmware/intl_br.h +++ b/airrohr-firmware/intl_br.h @@ -7,7 +7,7 @@ * Texts should be as short as possible */ -#define INTL_LANG "BR"; +#define INTL_LANG "BR" #define INTL_PM_SENSOR "" const char INTL_CONFIGURATION[] PROGMEM = ""; #define INTL_WIFI_SETTINGS "Configuracões de Wi-Fi" diff --git a/airrohr-firmware/platformio.ini b/airrohr-firmware/platformio.ini index cda21f6f..0d627f46 100644 --- a/airrohr-firmware/platformio.ini +++ b/airrohr-firmware/platformio.ini @@ -144,6 +144,18 @@ build_flags = ${common.build_flags} -DINTL_BG lib_deps = ${common.lib_deps_esp8266} extra_scripts = ${common.extra_scripts} +[env:nodemcuv2_br] +lang = br +platform = ${common.platform_version} +framework = arduino +board = nodemcuv2 +board_build.f_cpu = ${common.board_build.f_cpu} +board_build.ldscript = ${common.board_build.ldscript} +board_build.filesystem = ${common.board_build.filesystem} +build_flags = ${common.build_flags} -DINTL_BR +lib_deps = ${common.lib_deps_esp8266} +extra_scripts = ${common.extra_scripts} + [env:nodemcuv2_cn] lang = cn framework = arduino From bd921cb57764b3ab7cceb4700f48a71cb2e0302b Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Tue, 30 Jan 2024 22:05:18 +0100 Subject: [PATCH 24/30] pt-BR: Replace all empty INTL_ definitions with lower case [[name of definition]] --- airrohr-firmware/intl_br.h | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/airrohr-firmware/intl_br.h b/airrohr-firmware/intl_br.h index 3fd2a587..6966ab97 100644 --- a/airrohr-firmware/intl_br.h +++ b/airrohr-firmware/intl_br.h @@ -1,15 +1,15 @@ /* * airRohr firmware - * Copyright (C) 2016-2018 Code for Stuttgart a.o. + * Copyright (C) 2016-2018 Code for Stuttgart a.o. * - * Translation template + * Portuguese/Brasilian translations * * Texts should be as short as possible */ #define INTL_LANG "BR" -#define INTL_PM_SENSOR "" -const char INTL_CONFIGURATION[] PROGMEM = ""; +#define INTL_PM_SENSOR "Sensor de partículas finas" +const char INTL_CONFIGURATION[] PROGMEM = "Configuração"; #define INTL_WIFI_SETTINGS "Configuracões de Wi-Fi" #define INTL_WIFI_NETWORKS "Carregando redes Wi-Fi" #define INTL_LANGUAGE "Idioma" @@ -37,8 +37,8 @@ const char INTL_DS18B20[] PROGMEM = "DS18B20 ({t})"; const char INTL_DNMS[] PROGMEM = "DNMS ({l_a})"; const char INTL_DNMS_CORRECTION[] PROGMEM = "Valor de correção em dB(A)"; const char INTL_TEMP_CORRECTION[] PROGMEM = "Correção em C°"; -const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = ""; -const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = ""; +const char INTL_HEIGHT_ABOVE_SEALEVEL[] PROGMEM = "[[height_above_sealevel]]"; +const char INTL_PRESSURE_AT_SEALEVEL[] PROGMEM = "[[pressure_at_sealevel]]"; const char INTL_NEO6M[] PROGMEM = "GPS (NEO 6M)"; const char INTL_BASICAUTH[] PROGMEM = "Autorização"; #define INTL_REPORT_ISSUE " Reporter um problema" @@ -58,16 +58,16 @@ const char INTL_LCD2004_3F[] PROGMEM = "LCD 2004 (I2C: 0x3F)"; const char INTL_DISPLAY_WIFI_INFO[] PROGMEM = "Mostrar informações da rede Wi-Fi"; const char INTL_DISPLAY_DEVICE_INFO[] PROGMEM = "Mostrar informações do dispositivo"; -#define INTL_STATIC_IP_TEXT "" -const char INTL_STATIC_IP[] PROGMEM = ""; -const char INTL_STATIC_SUBNET[] PROGMEM = ""; -const char INTL_STATIC_GATEWAY[] PROGMEM = ""; -const char INTL_STATIC_DNS[] PROGMEM = ""; +#define INTL_STATIC_IP_TEXT "[[static_ip_text]]" +const char INTL_STATIC_IP[] PROGMEM = "[[static_ip]]"; +const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; +const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; +const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; -const char INTL_DEBUG_LEVEL[] PROGMEM = ""; +const char INTL_DEBUG_LEVEL[] PROGMEM = "Debug Level"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Intervalo de medição"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Duração "; -const char INTL_POWERSAVE[] PROGMEM = ""; +const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; const char INTL_MORE_APIS[] PROGMEM = "Outros API"; const char INTL_SEND_TO_OWN_API[] PROGMEM = "Enviar para a própria API"; const char INTL_SERVER[] PROGMEM = "Servidor"; @@ -112,7 +112,7 @@ const char INTL_PARTICULATE_MATTER[] PROGMEM = "Particulas finas"; const char INTL_TEMPERATURE[] PROGMEM = "Temperatura"; const char INTL_HUMIDITY[] PROGMEM = "Humidade"; const char INTL_PRESSURE[] PROGMEM = "Pessão atmosférica"; -const char INTL_DEW_POINT[] PROGMEM = ""; +const char INTL_DEW_POINT[] PROGMEM = "[[dew_point]]"; const char INTL_CO2_PPM[] PROGMEM = "ppm CO₂"; const char INTL_LEQ_A[] PROGMEM = "LAeq"; const char INTL_LA_MIN[] PROGMEM = "LA min"; From d9f338c8de2c5262010a59f7a223611570aad66d Mon Sep 17 00:00:00 2001 From: jurajbelobrad <31770020+jurajbelobrad@users.noreply.github.com> Date: Sat, 18 Nov 2023 16:29:20 +0100 Subject: [PATCH 25/30] Update intl_sk.h Fixed typo in string --- airrohr-firmware/intl_sk.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airrohr-firmware/intl_sk.h b/airrohr-firmware/intl_sk.h index 9f46a59b..bc0fe7bf 100644 --- a/airrohr-firmware/intl_sk.h +++ b/airrohr-firmware/intl_sk.h @@ -64,7 +64,7 @@ const char INTL_STATIC_SUBNET[] PROGMEM = "[[static_subnet]]"; const char INTL_STATIC_GATEWAY[] PROGMEM = "[[static_gateway]]"; const char INTL_STATIC_DNS[] PROGMEM = "[[static_dns]]"; -const char INTL_DEBUG_LEVEL[] PROGMEM = "Ladenide úroveň"; +const char INTL_DEBUG_LEVEL[] PROGMEM = "Ladenie úroveň"; const char INTL_MEASUREMENT_INTERVAL[] PROGMEM = "Interval meraní (sec)"; const char INTL_DURATION_ROUTER_MODE[] PROGMEM = "Trvanie router mod"; const char INTL_POWERSAVE[] PROGMEM = "[[powersave]]"; From bfb85b62c998bb668c1526dc907ec9cb47cc800e Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Sat, 16 Mar 2024 15:02:56 +0100 Subject: [PATCH 26/30] intl_pt.h: fix typo in variable replacement for time to first measurement --- airrohr-firmware/intl_pt.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airrohr-firmware/intl_pt.h b/airrohr-firmware/intl_pt.h index a82b37e5..9d69b20b 100644 --- a/airrohr-firmware/intl_pt.h +++ b/airrohr-firmware/intl_pt.h @@ -105,7 +105,7 @@ const char INTL_DEBUG_SETTING_TO[] PROGMEM = "Ajustar Debug a "; #define INTL_CONFIG_DELETED "A configuração foi apagada" #define INTL_CONFIG_CAN_NOT_BE_DELETED "A configuração pode ser apagada" #define INTL_CONFIG_NOT_FOUND "Configuração não encontrada" -const char INTL_TIME_TO_FIRST_MEASUREMENT[] PROGMEM = "Outros {v.} segundos para a primeira medição."; +const char INTL_TIME_TO_FIRST_MEASUREMENT[] PROGMEM = "Outros {v} segundos para a primeira medição."; const char INTL_TIME_SINCE_LAST_MEASUREMENT[] PROGMEM = " segundos desde a última medida."; const char INTL_PARTICLES_PER_LITER[] PROGMEM = "Partículas/litro"; const char INTL_PARTICULATE_MATTER[] PROGMEM = "partículas finas"; From 5d6a6b7bef123d8f8890b46e50d1b050c72b0ef0 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Sat, 16 Mar 2024 14:45:53 +0100 Subject: [PATCH 27/30] Update Versions.md for language updates --- airrohr-firmware/Versions.md | 1 + 1 file changed, 1 insertion(+) diff --git a/airrohr-firmware/Versions.md b/airrohr-firmware/Versions.md index 187d8c29..51ae5b7b 100644 --- a/airrohr-firmware/Versions.md +++ b/airrohr-firmware/Versions.md @@ -2,6 +2,7 @@ NRZ-2024-134-B5 * Go back to Arduino Core 2.7.4 as a workaround for stalling OTA downloads * Change setting of compiler optimization to -O3 for better performance * Replace LetsEncrypt DST Root CA X3 with ISRG Root X1 certificate +* Language updates and fixes * Add displaying errors with config parsing and network connections * Minor bug fixes and cosmetics * Update Github Actions CI workflow From 741196ea93925384d5812886b73a7335db49192e Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Mon, 25 Mar 2024 12:25:36 +0100 Subject: [PATCH 28/30] Update github actions to latest versions --- .github/workflows/airohr-firmware.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/airohr-firmware.yml b/.github/workflows/airohr-firmware.yml index ee6c0bf4..526efcb7 100644 --- a/.github/workflows/airohr-firmware.yml +++ b/.github/workflows/airohr-firmware.yml @@ -15,13 +15,13 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v3 + uses: actions/setup-python@v5 with: python-version: '3.11' - name: Load dependencies from cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} @@ -43,7 +43,7 @@ jobs: run: | tar czvf airrohr-firmware-builds.tar.gz -C airrohr-firmware/builds/ . - name: Store airrohr-firmware - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: if-no-files-found: error name: airrohr-firmware-builds @@ -51,7 +51,7 @@ jobs: retention-days: 30 - name: Store update-loader if: contains(github.ref_name,'esp32') == false - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: if-no-files-found: error name: airrohr-update-loader From 27ae293a3a1700152497deab3167019ee67489ba Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Sat, 30 Mar 2024 17:41:53 +0100 Subject: [PATCH 29/30] Revert "first parts of SCD30 calibration" due to missing defines so binaries can be built This reverts commit 4a93e78c14003b4d0bcf2fc97e91b8f6eed36b97. --- airrohr-firmware/airrohr-cfg.h.py | 1 - airrohr-firmware/airrohr-firmware.ino | 35 +-------------------------- airrohr-firmware/defines.h | 1 - 3 files changed, 1 insertion(+), 36 deletions(-) diff --git a/airrohr-firmware/airrohr-cfg.h.py b/airrohr-firmware/airrohr-cfg.h.py index 42dfbef2..a5afd39c 100755 --- a/airrohr-firmware/airrohr-cfg.h.py +++ b/airrohr-firmware/airrohr-cfg.h.py @@ -29,7 +29,6 @@ String dnms_correction String temp_correction String height_above_sealevel -String last_calibration_scd30 Bool gps_read Bool send2dusti Bool ssl_dusti diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index 508aed9e..a996b485 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -173,10 +173,9 @@ namespace cfg bool sps30_read = SPS30_READ; bool bmp_read = BMP_READ; bool bmx280_read = BMX280_READ; - char height_above_sealevel[LEN_HEIGHT_ABOVE_SEALEVEL] = "0"; + char height_above_sealevel[8] = "0"; bool sht3x_read = SHT3X_READ; bool scd30_read = SCD30_READ; - char last_calibration_scd30[LEN_LAST_CALIBRATION_SCD30] = ""; bool ds18b20_read = DS18B20_READ; bool dnms_read = DNMS_READ; char dnms_correction[LEN_DNMS_CORRECTION] = DNMS_CORRECTION; @@ -623,10 +622,6 @@ unsigned long SPS30_read_error_counter = 0; unsigned long SPS30_read_timer = 0; bool sps30_init_failed = false; -bool scd30_calibration = 0; -unsigned long scd30_start_cal = 0; -unsigned long scd30_last_val_change = 0; - float last_value_PPD_P1 = -1.0; float last_value_PPD_P2 = -1.0; float last_value_SDS_P1 = -1.0; @@ -2543,11 +2538,6 @@ static void webserver_status() add_table_row_from_value(page_content, F("SCD30 measurement interval"), String(settingVal)); scd30.getTemperatureOffset(&settingVal); add_table_row_from_value(page_content, F("SCD30 temperature offset"), String(settingVal)); - if (scd30_calibration) { - add_table_row_from_value(page_content, F("SCD30 calibration running since", delayToString(millis() - scd30_start_cal)); - } else { - add_table_row_from_value(page_content, F("SCD30 last calibration"), cfg::last_calibration_scd30); - } } page_content += FPSTR(EMPTY_ROW); @@ -2790,29 +2780,6 @@ static void webserver_reset() end_html_page(page_content); } -/***************************************************************** - * Webserver start SCD30 calibration * - *****************************************************************/ -static void webserver_scd30_calib() { - if (!webserver_request_auth()) - { return; } - - String page_content; - page_content.reserve(512); - - start_html_page(page_content, FPSTR(INTL_SCD30_CALIBRATION)); - debug_outln_info(F("ws: start SCD30 calibration...")); - - page_content += FPSTR(WEB_SCD30_CALIBRATION_CONTENT); - - if (! scd30_calibration) { - scd30_calibration = true; - scd30_start_cal = millis(); - } - - end_html_page(page_content); -} - /***************************************************************** * Webserver data.json * *****************************************************************/ diff --git a/airrohr-firmware/defines.h b/airrohr-firmware/defines.h index 40dc37a3..8294be79 100644 --- a/airrohr-firmware/defines.h +++ b/airrohr-firmware/defines.h @@ -22,7 +22,6 @@ #define LEN_DNMS_CORRECTION 8 #define LEN_TEMP_CORRECTION 8 #define LEN_HEIGHT_ABOVE_SEALEVEL 8 -#define LEN_LAST_CALIBRATION_SCD30 20 #define LEN_SENSEBOXID 30 From a6ce44f52ace81cd44f8aa5310ef294d73bf5762 Mon Sep 17 00:00:00 2001 From: Phaze-III Date: Sat, 30 Mar 2024 17:44:32 +0100 Subject: [PATCH 30/30] Update Sensirion dependency where the configured version isn't available anymore --- airrohr-firmware/platformio.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airrohr-firmware/platformio.ini b/airrohr-firmware/platformio.ini index 4cb0b1ec..e6307904 100644 --- a/airrohr-firmware/platformio.ini +++ b/airrohr-firmware/platformio.ini @@ -55,7 +55,7 @@ lib_deps_external = ThingPulse/ESP8266 and ESP32 OLED driver for SSD1306 displays @ ^4.3.0 mikalhart/TinyGPSPlus@1.0.2 sensirion/Sensirion Core@^0.6.0 - sensirion/Sensirion I2C SEN5X@^0.2.0 + sensirion/Sensirion I2C SEN5X@^0.3.0 ; system libraries from platform -> no version number lib_deps_esp8266_platform = @@ -480,4 +480,4 @@ board_build.ldscript = ${common.board_build.ldscript} board_build.filesystem = ${common.board_build.filesystem} build_flags = ${common.build_flags} -DINTL_FR lib_deps = ${common.lib_deps_esp8266} -extra_scripts = ${common.extra_scripts} \ No newline at end of file +extra_scripts = ${common.extra_scripts}