diff --git a/package-lock.json b/package-lock.json index 4597fdcc5..0426e7507 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "zigbee2mqtt-windfront", - "version": "2.4.1", + "version": "2.4.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "zigbee2mqtt-windfront", - "version": "2.4.1", + "version": "2.4.2", "license": "GPL-3.0-or-later", "devDependencies": { "@biomejs/biome": "^2.3.8", diff --git a/package.json b/package.json index e1688a962..0e04bcb37 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "zigbee2mqtt-windfront", - "version": "2.4.1", + "version": "2.4.2", "license": "GPL-3.0-or-later", "type": "module", "main": "./index.js", diff --git a/src/i18n/locales/bg.json b/src/i18n/locales/bg.json index 81ad16af3..d2f3a57c7 100644 --- a/src/i18n/locales/bg.json +++ b/src/i18n/locales/bg.json @@ -309,8 +309,7 @@ "scan_source": "Източник", "select_scan_source": "Изберете източник", "philips_hue_reset": "Нулиране на Hue", - "serial_numbers": "Серийни номера", - "serial_numbers_info": "Стойности, разделени със запетая. За всяка добавете `0x` към серийния номер, изписан на устройството (например напишете `3A745C` като `0x3A745C`) или първо го преобразувайте в десетичен вид." + "serial_numbers": "Серийни номера (CSV)" }, "values": { "clear": "изчистване", diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json index 407a5af23..44bd00b80 100644 --- a/src/i18n/locales/ca.json +++ b/src/i18n/locales/ca.json @@ -309,8 +309,7 @@ "scan_source": "Origen de l'escaneig", "select_scan_source": "Selecciona l'origen de l'escaneig", "philips_hue_reset": "Restabliment Hue", - "serial_numbers": "Números de sèrie", - "serial_numbers_info": "Valors separats per comes. Per a cadascun, afegiu `0x` al número de sèrie escrit al dispositiu (p. ex., escriviu `3A745C` com `0x3A745C`) o convertiu-lo primer a format decimal." + "serial_numbers": "Números de sèrie (CSV)" }, "values": { "clear": "neteja", diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json index 64bffbae7..e23eb737c 100644 --- a/src/i18n/locales/cs.json +++ b/src/i18n/locales/cs.json @@ -309,8 +309,7 @@ "scan_source": "Zdroj hledání", "select_scan_source": "Vyberte zdroj hledání", "philips_hue_reset": "Reset Hue", - "serial_numbers": "Sériová čísla", - "serial_numbers_info": "Hodnoty oddělené čárkou. Ke každému připojte `0x` k sériovému číslu uvedenému na zařízení (např. napište `3A745C` jako `0x3A745C`) nebo jej nejprve převeďte na desetkové číslo." + "serial_numbers": "Sériová čísla (CSV)" }, "values": { "clear": "Klid/Bez poplachu", diff --git a/src/i18n/locales/da.json b/src/i18n/locales/da.json index 7c06b16ba..b8f9e2d81 100644 --- a/src/i18n/locales/da.json +++ b/src/i18n/locales/da.json @@ -309,8 +309,7 @@ "scan_source": "Scan-kilde", "select_scan_source": "Vælg kilde", "philips_hue_reset": "Philips Hue-nulstilling", - "serial_numbers": "Serienumre", - "serial_numbers_info": "Kommaseparerede værdier. For hver skal du føje `0x` til serienummeret, der står på enheden (f.eks. skriv `3A745C` som `0x3A745C`), eller konverter det først til decimalformat." + "serial_numbers": "Serienumre (CSV)" }, "values": { "clear": "ryd", diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index 65a543a89..d7e4f88c5 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json @@ -309,8 +309,7 @@ "scan_source": "Scanquelle", "select_scan_source": "Scanquelle auswählen", "philips_hue_reset": "Philips Hue-Reset", - "serial_numbers": "Seriennummern", - "serial_numbers_info": "Kommagetrennte Werte. Hänge für jeden Wert `0x` an die auf dem Gerät angegebene Seriennummer an (z. B. `3A745C` als `0x3A745C`) oder wandle sie zuerst in Dezimalform um." + "serial_numbers": "Seriennummern (CSV)" }, "values": { "clear": "frei", diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index b5ef64696..6b19d8101 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -309,8 +309,7 @@ "scan_source": "Scan source", "select_scan_source": "Select scan source", "philips_hue_reset": "Philips Hue reset", - "serial_numbers": "Serial numbers", - "serial_numbers_info": "Comma-separated values. For each, append `0x` to the serial number written on the device (e.g. write `3A745C` as `0x3A745C`) or convert to decimal form first." + "serial_numbers": "Serial numbers (CSV)" }, "values": { "clear": "Clear", diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index 16bc1b6a5..b76ca1bba 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json @@ -309,8 +309,7 @@ "scan_source": "Fuente de escaneo", "select_scan_source": "Seleccione la fuente", "philips_hue_reset": "Restablecer Hue", - "serial_numbers": "Números de serie", - "serial_numbers_info": "Valores separados por comas. Para cada uno, agrega `0x` al número de serie escrito en el dispositivo (p. ej., escribe `3A745C` como `0x3A745C`) o conviértelo primero a formato decimal." + "serial_numbers": "Números de serie (CSV)" }, "values": { "clear": "limpiar", diff --git a/src/i18n/locales/eu.json b/src/i18n/locales/eu.json index a1da76a6a..c2c1cde79 100644 --- a/src/i18n/locales/eu.json +++ b/src/i18n/locales/eu.json @@ -309,8 +309,7 @@ "scan_source": "Eskaneatzeko iturburua", "select_scan_source": "Hautatu iturburua", "philips_hue_reset": "Philips Hue berrezarri", - "serial_numbers": "Serie zenbakiak", - "serial_numbers_info": "Komaz bereizitako balioak. Bakoitzean, gehitu `0x` gailuan idatzitako serie zenbakiari (adibidez, idatzi `3A745C` `0x3A745C` gisa) edo bihurtu lehenik hamartar formatura." + "serial_numbers": "Serie zenbakiak (CSV)" }, "values": { "clear": "garbitu", diff --git a/src/i18n/locales/fi.json b/src/i18n/locales/fi.json index 3a97e8c78..2c7bcac59 100644 --- a/src/i18n/locales/fi.json +++ b/src/i18n/locales/fi.json @@ -309,8 +309,7 @@ "scan_source": "Skannauksen lähde", "select_scan_source": "Valitse lähde", "philips_hue_reset": "Philips Hue-nollaus", - "serial_numbers": "Sarjanumerot", - "serial_numbers_info": "Pilkulla erotetut arvot. Lisää jokaiseen laitteen kyljessä olevaan sarjanumeroon etuliite `0x` (esim. kirjoita `3A745C` muodossa `0x3A745C`) tai muunna se ensin desimaalimuotoon." + "serial_numbers": "Sarjanumerot (CSV)" }, "values": { "clear": "tyhjennä", diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index ffff71d13..e87cbb374 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json @@ -309,8 +309,7 @@ "scan_source": "Source du scan", "select_scan_source": "Sélectionner la source", "philips_hue_reset": "Réinitialisation Hue", - "serial_numbers": "Numéros de série", - "serial_numbers_info": "Valeurs séparées par des virgules. Pour chacune, ajoutez `0x` au numéro de série inscrit sur l’appareil (par ex. écrire `3A745C` sous la forme `0x3A745C`) ou convertissez-le d’abord en décimal." + "serial_numbers": "Numéros de série (CSV)" }, "values": { "clear": "Effacer", diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json index c97c60f74..402eb1cf3 100644 --- a/src/i18n/locales/hu.json +++ b/src/i18n/locales/hu.json @@ -309,8 +309,7 @@ "scan_source": "Forrás", "select_scan_source": "Forrás kiválasztása", "philips_hue_reset": "Philips Hue visszaállítás", - "serial_numbers": "Sorozatszámok", - "serial_numbers_info": "Vesszővel elválasztott értékek. Mindegyiknél add hozzá a készüléken szereplő sorozatszámhoz a `0x` előtagot (pl. írd a `3A745C` értéket `0x3A745C` formában), vagy előbb konvertáld tizedes formátumba." + "serial_numbers": "Sorozatszámok (CSV)" }, "values": { "clear": "törlés", diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json index bb977cb2e..db94fd4ca 100644 --- a/src/i18n/locales/it.json +++ b/src/i18n/locales/it.json @@ -309,8 +309,7 @@ "scan_source": "Sorgente scansione", "select_scan_source": "Seleziona la sorgente", "philips_hue_reset": "Ripristino Hue", - "serial_numbers": "Numeri di serie", - "serial_numbers_info": "Valori separati da virgola. Per ciascuno, aggiungi `0x` al numero di serie riportato sul dispositivo (ad es. scrivi `3A745C` come `0x3A745C`) oppure converti prima in formato decimale." + "serial_numbers": "Numeri di serie (CSV)" }, "values": { "clear": "pulisci", diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index 9fe9c4310..eba89aa02 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json @@ -309,8 +309,7 @@ "scan_source": "スキャン元", "select_scan_source": "スキャン元選択", "philips_hue_reset": "Philips Hueリセット", - "serial_numbers": "シリアル番号", - "serial_numbers_info": "カンマ区切りの値です。各値について、デバイスに記載されたシリアル番号に `0x` を付けてください(例: `3A745C` を `0x3A745C` と書く)、または先に10進数に変換してください。" + "serial_numbers": "シリアル番号 (CSV)" }, "values": { "clear": "クリア", diff --git a/src/i18n/locales/ko.json b/src/i18n/locales/ko.json index bd0c1260b..583a94bee 100644 --- a/src/i18n/locales/ko.json +++ b/src/i18n/locales/ko.json @@ -309,8 +309,7 @@ "scan_source": "검색 소스", "select_scan_source": "검색 소스 선택", "philips_hue_reset": "Philips Hue 초기화", - "serial_numbers": "일련번호", - "serial_numbers_info": "쉼표로 구분된 값입니다. 각 값에 대해 기기에 적힌 시리얼 번호 앞에 `0x`를 붙이거나(예: `3A745C` → `0x3A745C`) 먼저 10진수로 변환하세요." + "serial_numbers": "일련번호 (CSV)" }, "values": { "clear": "지우기", diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json index 1b7b4ef0d..c98634ba2 100644 --- a/src/i18n/locales/nl.json +++ b/src/i18n/locales/nl.json @@ -309,8 +309,7 @@ "scan_source": "Scanningsbron", "select_scan_source": "Selecteer scanningsbron", "philips_hue_reset": "Philips Hue-reset", - "serial_numbers": "Serienummers", - "serial_numbers_info": "Komma-gescheiden waarden. Voeg voor elk de `0x`-prefix toe aan het serienummer op het apparaat (bijv. schrijf `3A745C` als `0x3A745C`) of converteer het eerst naar decimale vorm." + "serial_numbers": "Serienummers (CSV)" }, "values": { "clear": "leeg", diff --git a/src/i18n/locales/no.json b/src/i18n/locales/no.json index d90469e5d..545acf57d 100644 --- a/src/i18n/locales/no.json +++ b/src/i18n/locales/no.json @@ -309,8 +309,7 @@ "scan_source": "Skann-kilde", "select_scan_source": "Velg kilde", "philips_hue_reset": "Philips Hue-reset", - "serial_numbers": "Serienumre", - "serial_numbers_info": "Kommaseparerte verdier. For hver verdi legger du til `0x` foran serienummeret som står på enheten (f.eks. skriv `3A745C` som `0x3A745C`) eller konverter det først til desimal." + "serial_numbers": "Serienumre (CSV)" }, "values": { "clear": "tøm", diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json index 9a72d368c..96ac6a619 100644 --- a/src/i18n/locales/pl.json +++ b/src/i18n/locales/pl.json @@ -309,8 +309,7 @@ "scan_source": "Źródło skanu", "select_scan_source": "Wybierz źródło", "philips_hue_reset": "Reset Hue", - "serial_numbers": "Numery seryjne", - "serial_numbers_info": "Wartości rozdzielone przecinkami. Do każdego numeru seryjnego podanego na urządzeniu dodaj przedrostek `0x` (np. zapisz `3A745C` jako `0x3A745C`) albo najpierw przekonwertuj go na zapis dziesiętny." + "serial_numbers": "Numery seryjne (CSV)" }, "values": { "clear": "nie wykryto", diff --git a/src/i18n/locales/ptbr.json b/src/i18n/locales/ptbr.json index 4af6cdfa3..5073ab22f 100644 --- a/src/i18n/locales/ptbr.json +++ b/src/i18n/locales/ptbr.json @@ -309,8 +309,7 @@ "scan_source": "Origem da varredura", "select_scan_source": "Selecionar origem", "philips_hue_reset": "Reset do Hue", - "serial_numbers": "Números de série", - "serial_numbers_info": "Valores separados por vírgula. Para cada um, adicione `0x` ao número de série escrito no dispositivo (por exemplo, escreva `3A745C` como `0x3A745C`) ou converta primeiro para formato decimal." + "serial_numbers": "Números de série (CSV)" }, "values": { "clear": "limpar", diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index a60188740..9ed2733ac 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json @@ -309,8 +309,7 @@ "scan_source": "Источник сканирования", "select_scan_source": "Выберите источник", "philips_hue_reset": "Сброс Hue", - "serial_numbers": "Серийные номера", - "serial_numbers_info": "Значения, разделённые запятыми. Для каждого добавьте префикс `0x` к серийному номеру, указанному на устройстве (например, `3A745C` записывается как `0x3A745C`) или сначала преобразуйте его в десятичный формат." + "serial_numbers": "Серийные номера (CSV)" }, "values": { "clear": "очистить", diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json index 31faaadf1..a8f88df30 100644 --- a/src/i18n/locales/sk.json +++ b/src/i18n/locales/sk.json @@ -309,8 +309,7 @@ "scan_source": "Zdroj skenovania", "select_scan_source": "Vybrať zdroj skenovania", "philips_hue_reset": "Reset Hue", - "serial_numbers": "Sériové čísla", - "serial_numbers_info": "Hodnoty oddelené čiarkou. Ku každému sériovému číslu uvedenému na zariadení pridajte `0x` (napr. zapíšte `3A745C` ako `0x3A745C`) alebo ho najprv preveďte na desiatkový tvar." + "serial_numbers": "Sériové čísla (CSV)" }, "values": { "clear": "Prázdne", diff --git a/src/i18n/locales/sv.json b/src/i18n/locales/sv.json index 062f7acac..637ae5ced 100644 --- a/src/i18n/locales/sv.json +++ b/src/i18n/locales/sv.json @@ -309,8 +309,7 @@ "scan_source": "Skanningskälla", "select_scan_source": "Välj källa", "philips_hue_reset": "Philips Hue-återställning", - "serial_numbers": "Serienummer", - "serial_numbers_info": "Kommaavgränsade värden. Lägg till `0x` framför serienumret som står på enheten för varje värde (t.ex. skriv `3A745C` som `0x3A745C`) eller konvertera det först till decimalform." + "serial_numbers": "Serienummer (CSV)" }, "values": { "clear": "rensa", diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json index 83284e9a1..27ca14632 100644 --- a/src/i18n/locales/tr.json +++ b/src/i18n/locales/tr.json @@ -309,8 +309,7 @@ "scan_source": "Tarama kaynağı", "select_scan_source": "Kaynak seç", "philips_hue_reset": "Philips Hue sıfırlama", - "serial_numbers": "Seri numaraları", - "serial_numbers_info": "Virgülle ayrılmış değerler. Her biri için, cihazın üzerindeki seri numarasının başına `0x` ekleyin (örneğin `3A745C` değerini `0x3A745C` olarak yazın) veya önce ondalık biçime dönüştürün." + "serial_numbers": "Seri numaraları (CSV)" }, "values": { "clear": "temizle", diff --git a/src/i18n/locales/ua.json b/src/i18n/locales/ua.json index 4bfb62c90..65959019b 100644 --- a/src/i18n/locales/ua.json +++ b/src/i18n/locales/ua.json @@ -309,8 +309,7 @@ "scan_source": "Джерело скану", "select_scan_source": "Виберіть джерело", "philips_hue_reset": "Скидання Hue", - "serial_numbers": "Серійні номери", - "serial_numbers_info": "Значення, розділені комами. Для кожного додайте префікс `0x` до серійного номера, зазначеного на пристрої (наприклад, запишіть `3A745C` як `0x3A745C`) або спочатку перетворіть його в десятковий формат." + "serial_numbers": "Серійні номери (CSV)" }, "values": { "clear": "очистити", diff --git a/src/i18n/locales/vi.json b/src/i18n/locales/vi.json index 930248182..23b303453 100644 --- a/src/i18n/locales/vi.json +++ b/src/i18n/locales/vi.json @@ -309,8 +309,7 @@ "scan_source": "Nguồn quét", "select_scan_source": "Chọn nguồn quét", "philips_hue_reset": "Đặt lại Hue", - "serial_numbers": "Số serial", - "serial_numbers_info": "Các giá trị được phân tách bằng dấu phẩy. Với từng giá trị, hãy thêm tiền tố `0x` vào số sê-ri ghi trên thiết bị (ví dụ viết `3A745C` thành `0x3A745C`) hoặc chuyển nó sang dạng thập phân trước." + "serial_numbers": "Số serial (CSV)" }, "values": { "clear": "Xóa", diff --git a/src/i18n/locales/zh-CN.json b/src/i18n/locales/zh-CN.json index c61a0347f..e5e4473d4 100644 --- a/src/i18n/locales/zh-CN.json +++ b/src/i18n/locales/zh-CN.json @@ -309,8 +309,7 @@ "scan_source": "扫描源", "select_scan_source": "选择扫描源", "philips_hue_reset": "Philips Hue 重置", - "serial_numbers": "序列号", - "serial_numbers_info": "逗号分隔的值。对每一项,在设备上标注的序列号前加上 `0x`(例如将 `3A745C` 写成 `0x3A745C`),或者先转换为十进制形式。" + "serial_numbers": "序列号 (CSV)" }, "values": { "clear": "清除", diff --git a/src/i18n/locales/zh.json b/src/i18n/locales/zh.json index ad8a91c74..04aec1dd6 100644 --- a/src/i18n/locales/zh.json +++ b/src/i18n/locales/zh.json @@ -309,8 +309,7 @@ "scan_source": "掃描來源", "select_scan_source": "選擇掃描來源", "philips_hue_reset": "Philips Hue 重設", - "serial_numbers": "序號", - "serial_numbers_info": "以逗號分隔的值。對每一筆,在裝置上寫的序號前加上 `0x`(例如將 `3A745C` 寫成 `0x3A745C`),或先轉換為十進位格式。" + "serial_numbers": "序號 (CSV)" }, "values": { "clear": "清除", diff --git a/src/pages/TouchlinkPage.tsx b/src/pages/TouchlinkPage.tsx index fddfaa67b..3e7a5f68d 100644 --- a/src/pages/TouchlinkPage.tsx +++ b/src/pages/TouchlinkPage.tsx @@ -39,7 +39,7 @@ export default function TouchlinkPage() { const [scanIdx, setScanIdx] = useState(0); const [hueExtPanId, setHueExtPanId] = useState(""); const [hueSerialNumbersRaw, setHueSerialNumbersRaw] = useState(""); - const [hueSerialNumbers, setHueSerialNumbers] = useState([]); + const [hueSerialNumbers, setHueSerialNumbers] = useState([]); // biome-ignore lint/correctness/useExhaustiveDependencies: specific trigger useEffect(() => { @@ -47,14 +47,7 @@ export default function TouchlinkPage() { }, [scanIdx]); useEffect(() => { - setHueSerialNumbers( - hueSerialNumbersRaw - ? hueSerialNumbersRaw - .replaceAll(" ", "") - .split(",") - .map((v) => Number.parseInt(v, v.startsWith("0x") ? 16 : 10)) - : [], - ); + setHueSerialNumbers(hueSerialNumbersRaw ? hueSerialNumbersRaw.replaceAll(" ", "").split(",") : []); }, [hueSerialNumbersRaw]); const data = useMemo((): TouchlinkTableData[] => { @@ -114,8 +107,8 @@ export default function TouchlinkPage() { }, [scanIdx, hueExtPanId, hueSerialNumbers]); const isHueResetValid = useMemo(() => { - if ((!hueExtPanId || /^0x[a-f0-9]{16}$/.test(hueExtPanId)) && Array.isArray(hueSerialNumbers) && hueSerialNumbers.length > 0) { - return hueSerialNumbers.every((sn) => Number.isInteger(sn)); + if ((!hueExtPanId || /^0x[a-fA-F0-9]{16}$/.test(hueExtPanId)) && Array.isArray(hueSerialNumbers) && hueSerialNumbers.length > 0) { + return hueSerialNumbers.every((sn) => /^[a-fA-F0-9]{6}$/i.test(sn)); } return false; @@ -307,7 +300,6 @@ export default function TouchlinkPage() { $.serial_numbers)} - detail={t(($) => $.serial_numbers_info)} type="text" value={hueSerialNumbersRaw} onChange={(e) => !e.target.validationMessage && setHueSerialNumbersRaw(e.target.value)}