@jjlmoya/utils-hardware 1.2.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -1
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +1 -1
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tests/title_quality.test.ts +1 -1
- package/src/tool/batteryHealthEstimator/i18n/de.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/id.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/it.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/ja.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/ko.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/nl.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/pl.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/pt.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/ru.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/sv.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/tr.ts +158 -0
- package/src/tool/batteryHealthEstimator/i18n/zh.ts +158 -0
- package/src/tool/batteryHealthEstimator/index.ts +15 -7
- package/src/tool/deadPixelTest/i18n/de.ts +218 -0
- package/src/tool/deadPixelTest/i18n/id.ts +218 -0
- package/src/tool/deadPixelTest/i18n/it.ts +218 -0
- package/src/tool/deadPixelTest/i18n/ja.ts +218 -0
- package/src/tool/deadPixelTest/i18n/ko.ts +218 -0
- package/src/tool/deadPixelTest/i18n/nl.ts +218 -0
- package/src/tool/deadPixelTest/i18n/pl.ts +218 -0
- package/src/tool/deadPixelTest/i18n/pt.ts +218 -0
- package/src/tool/deadPixelTest/i18n/ru.ts +218 -0
- package/src/tool/deadPixelTest/i18n/sv.ts +218 -0
- package/src/tool/deadPixelTest/i18n/tr.ts +218 -0
- package/src/tool/deadPixelTest/i18n/zh.ts +217 -0
- package/src/tool/deadPixelTest/index.ts +15 -7
- package/src/tool/gamepadTest/i18n/de.ts +186 -0
- package/src/tool/gamepadTest/i18n/id.ts +186 -0
- package/src/tool/gamepadTest/i18n/it.ts +186 -0
- package/src/tool/gamepadTest/i18n/ja.ts +186 -0
- package/src/tool/gamepadTest/i18n/ko.ts +186 -0
- package/src/tool/gamepadTest/i18n/nl.ts +186 -0
- package/src/tool/gamepadTest/i18n/pl.ts +186 -0
- package/src/tool/gamepadTest/i18n/pt.ts +186 -0
- package/src/tool/gamepadTest/i18n/ru.ts +186 -0
- package/src/tool/gamepadTest/i18n/sv.ts +186 -0
- package/src/tool/gamepadTest/i18n/tr.ts +186 -0
- package/src/tool/gamepadTest/i18n/zh.ts +186 -0
- package/src/tool/gamepadTest/index.ts +15 -7
- package/src/tool/gamepadVibrationTester/i18n/de.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/id.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/it.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/ja.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/ko.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/nl.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/pl.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/pt.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/ru.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/sv.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/tr.ts +155 -0
- package/src/tool/gamepadVibrationTester/i18n/zh.ts +155 -0
- package/src/tool/gamepadVibrationTester/index.ts +15 -7
- package/src/tool/keyboardTest/i18n/de.ts +146 -0
- package/src/tool/keyboardTest/i18n/id.ts +146 -0
- package/src/tool/keyboardTest/i18n/it.ts +146 -0
- package/src/tool/keyboardTest/i18n/ja.ts +146 -0
- package/src/tool/keyboardTest/i18n/ko.ts +146 -0
- package/src/tool/keyboardTest/i18n/nl.ts +146 -0
- package/src/tool/keyboardTest/i18n/pl.ts +146 -0
- package/src/tool/keyboardTest/i18n/pt.ts +146 -0
- package/src/tool/keyboardTest/i18n/ru.ts +146 -0
- package/src/tool/keyboardTest/i18n/sv.ts +146 -0
- package/src/tool/keyboardTest/i18n/tr.ts +146 -0
- package/src/tool/keyboardTest/i18n/zh.ts +146 -0
- package/src/tool/keyboardTest/index.ts +15 -7
- package/src/tool/mousePollingTest/component.astro +1 -1
- package/src/tool/mousePollingTest/i18n/de.ts +135 -0
- package/src/tool/mousePollingTest/i18n/id.ts +135 -0
- package/src/tool/mousePollingTest/i18n/it.ts +135 -0
- package/src/tool/mousePollingTest/i18n/ja.ts +135 -0
- package/src/tool/mousePollingTest/i18n/ko.ts +135 -0
- package/src/tool/mousePollingTest/i18n/nl.ts +135 -0
- package/src/tool/mousePollingTest/i18n/pl.ts +135 -0
- package/src/tool/mousePollingTest/i18n/pt.ts +135 -0
- package/src/tool/mousePollingTest/i18n/ru.ts +135 -0
- package/src/tool/mousePollingTest/i18n/sv.ts +135 -0
- package/src/tool/mousePollingTest/i18n/tr.ts +135 -0
- package/src/tool/mousePollingTest/i18n/zh.ts +135 -0
- package/src/tool/mousePollingTest/index.ts +15 -7
- package/src/tool/mousePollingTest/logic/RatonManager.ts +90 -51
- package/src/tool/mousePollingTest/logic/StatisticalFilter.ts +17 -25
- package/src/tool/toneGenerator/i18n/de.ts +146 -0
- package/src/tool/toneGenerator/i18n/id.ts +146 -0
- package/src/tool/toneGenerator/i18n/it.ts +146 -0
- package/src/tool/toneGenerator/i18n/ja.ts +146 -0
- package/src/tool/toneGenerator/i18n/ko.ts +146 -0
- package/src/tool/toneGenerator/i18n/nl.ts +146 -0
- package/src/tool/toneGenerator/i18n/pl.ts +146 -0
- package/src/tool/toneGenerator/i18n/pt.ts +146 -0
- package/src/tool/toneGenerator/i18n/ru.ts +146 -0
- package/src/tool/toneGenerator/i18n/sv.ts +146 -0
- package/src/tool/toneGenerator/i18n/tr.ts +146 -0
- package/src/tool/toneGenerator/i18n/zh.ts +146 -0
- package/src/tool/toneGenerator/index.ts +15 -7
- package/src/types.ts +1 -1
- package/src/tool/mousePollingTest/worker/mouseWorker.ts +0 -50
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jjlmoya/utils-hardware",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./src/index.ts",
|
|
6
6
|
"types": "./src/index.ts",
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@iconify-json/mdi": "^1.2.3",
|
|
40
|
+
"@jjlmoya/prompagate": "^1.1.0",
|
|
40
41
|
"@jjlmoya/utils-shared": "1.2.0",
|
|
41
42
|
"astro": "^6.1.2",
|
|
42
43
|
"astro-icon": "^1.1.0"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
2
|
import type * as DATA from '../data';
|
|
3
3
|
|
|
4
|
-
const TOOLS: typeof DATA.
|
|
4
|
+
const TOOLS: typeof DATA.audiovisualCategory[] = [];
|
|
5
5
|
|
|
6
6
|
describe('FAQ Content Validation', () => {
|
|
7
7
|
TOOLS.forEach((entry) => {
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { ALL_TOOLS } from '../tools';
|
|
3
|
+
|
|
4
|
+
const EXPECTED_LOCALES = [
|
|
5
|
+
'de', 'en', 'es', 'fr', 'id', 'it', 'ja', 'ko', 'nl', 'pl', 'pt', 'ru', 'sv', 'tr', 'zh'
|
|
6
|
+
];
|
|
7
|
+
|
|
8
|
+
describe('I18n Coverage Validation', () => {
|
|
9
|
+
it('all tools should be registered', () => {
|
|
10
|
+
expect(ALL_TOOLS.length).toBeGreaterThan(0);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
ALL_TOOLS.forEach(({ entry }: { entry: any }) => {
|
|
14
|
+
describe(`Tool: ${entry.id}`, () => {
|
|
15
|
+
it('should have all 15 required locales', () => {
|
|
16
|
+
const registeredLocales = Object.keys(entry.i18n);
|
|
17
|
+
EXPECTED_LOCALES.forEach((locale) => {
|
|
18
|
+
expect(
|
|
19
|
+
registeredLocales,
|
|
20
|
+
`Tool "${entry.id}" is missing locale "${locale}"`,
|
|
21
|
+
).toContain(locale);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('all locale loaders should be functions', () => {
|
|
26
|
+
EXPECTED_LOCALES.forEach((locale) => {
|
|
27
|
+
const loader = entry.i18n[locale as keyof typeof entry.i18n];
|
|
28
|
+
expect(
|
|
29
|
+
typeof loader,
|
|
30
|
+
`Tool "${entry.id}" locale "${locale}" loader is not a function`,
|
|
31
|
+
).toBe('function');
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
});
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { ALL_TOOLS } from '../tools';
|
|
3
|
+
import type { ToolLocaleContent } from '../types';
|
|
4
|
+
|
|
5
|
+
const sharingLocales = ['ja', 'ko', 'zh'];
|
|
6
|
+
|
|
7
|
+
interface ValidateParams {
|
|
8
|
+
toolId: string;
|
|
9
|
+
locale: string;
|
|
10
|
+
content: ToolLocaleContent;
|
|
11
|
+
enSlug: string;
|
|
12
|
+
slugs: Map<string, string>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const validateLocaleSlug = ({
|
|
16
|
+
toolId,
|
|
17
|
+
locale,
|
|
18
|
+
content,
|
|
19
|
+
enSlug,
|
|
20
|
+
slugs,
|
|
21
|
+
}: ValidateParams) => {
|
|
22
|
+
expect(
|
|
23
|
+
content.slug,
|
|
24
|
+
`Tool "${toolId}" locale "${locale}" has an invalid slug ("${content.slug}"). Slugs must be transliterated (only a-z, 0-9, and -).`,
|
|
25
|
+
).toMatch(/^[a-z0-9-]+$/);
|
|
26
|
+
|
|
27
|
+
if (locale === 'en') {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (sharingLocales.includes(locale)) {
|
|
32
|
+
expect(
|
|
33
|
+
content.slug,
|
|
34
|
+
`Tool "${toolId}" locale "${locale}" must use the same slug as "en" ("${enSlug}").`,
|
|
35
|
+
).toBe(enSlug);
|
|
36
|
+
} else {
|
|
37
|
+
expect(
|
|
38
|
+
content.slug,
|
|
39
|
+
`Tool "${toolId}" locale "${locale}" has the same slug as "en" ("${enSlug}"). Cada slug tiene que estar en su propia idioma`,
|
|
40
|
+
).not.toBe(enSlug);
|
|
41
|
+
|
|
42
|
+
if (slugs.has(content.slug)) {
|
|
43
|
+
const previousLocale = slugs.get(content.slug);
|
|
44
|
+
expect(
|
|
45
|
+
false,
|
|
46
|
+
`Tool "${toolId}" locales "${locale}" and "${previousLocale}" share the same slug ("${content.slug}"). Cada slug tiene que estar en su propia idioma`,
|
|
47
|
+
).toBe(true);
|
|
48
|
+
}
|
|
49
|
+
slugs.set(content.slug, locale);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
describe('Slug Localization and Uniqueness Validation', () => {
|
|
54
|
+
ALL_TOOLS.forEach((tool) => {
|
|
55
|
+
describe(`Tool: ${tool.entry.id}`, () => {
|
|
56
|
+
it('every locale should have a unique, translated slug', async () => {
|
|
57
|
+
const slugs = new Map<string, string>();
|
|
58
|
+
const locales = Object.keys(tool.entry.i18n);
|
|
59
|
+
|
|
60
|
+
let enSlug = '';
|
|
61
|
+
if (locales.includes('en')) {
|
|
62
|
+
const enLoader = tool.entry.i18n['en' as keyof typeof tool.entry.i18n];
|
|
63
|
+
const enContent = (await enLoader?.()) as ToolLocaleContent;
|
|
64
|
+
enSlug = enContent.slug;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
for (const locale of locales) {
|
|
68
|
+
const loader = tool.entry.i18n[locale as keyof typeof tool.entry.i18n];
|
|
69
|
+
const content = (await loader?.()) as ToolLocaleContent;
|
|
70
|
+
validateLocaleSlug({
|
|
71
|
+
toolId: tool.entry.id,
|
|
72
|
+
locale,
|
|
73
|
+
content,
|
|
74
|
+
enSlug,
|
|
75
|
+
slugs,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
});
|
|
@@ -41,7 +41,7 @@ describe('Project Titles - Separator Validation', () => {
|
|
|
41
41
|
let match;
|
|
42
42
|
while ((match = pattern.exec(content)) !== null) {
|
|
43
43
|
const title = match[1];
|
|
44
|
-
if (title
|
|
44
|
+
if (title.includes('|') || title.includes('-')) {
|
|
45
45
|
findings.push(title);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { EstimadorSaludBateriaUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'lithium-batterie-gesundheitsrechner';
|
|
6
|
+
const title = 'Rechner für den Zustand von Lithium Batterien';
|
|
7
|
+
const description =
|
|
8
|
+
'Berechnen Sie den Gesundheitszustand (SoH) Ihrer Lithium-Batterie basierend auf Zyklen, Spannung und Temperatur. Wissenschaftlicher Leitfaden zur Maximierung der Langlebigkeit.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Was ist die chemische Degradation von Batterien?',
|
|
13
|
+
answer:
|
|
14
|
+
'Mit jedem Lade- und Entladezyklus erleiden Lithium-Zellen Mikrorisse und die Ansammlung von chemischen Ablagerungen (S.E.I.), die ihre Energiespeicherkapazität verringern. Dies ist ein unvermeidlicher Prozess, der jedoch durch gute Gewohnheiten verlangsamt werden kann.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Warum wird empfohlen, nur bis 80 % zu laden?',
|
|
18
|
+
answer:
|
|
19
|
+
'Lithium-Batterien leiden bei extremen Spannungen (0 % und 100 %) unter mehr Stress. Wenn die Ladung zwischen 20 % und 80 % gehalten wird, kann dies die Lebensdauer der Zellen verdreifachen, da Hitze und Innendruck reduziert werden.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'Wie beeinflusst Hitze die Lebensdauer der Batterie?',
|
|
23
|
+
answer:
|
|
24
|
+
'Hitze ist der Feind Nummer eins. Für jeden Anstieg um 10 Grad über die optimale Umgebungstemperatur (25 Grad) verdoppelt sich die Geschwindigkeit der chemischen Degradation in etwa.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Was ist ein vollständiger Ladezyklus?',
|
|
28
|
+
answer:
|
|
29
|
+
'Ein Zyklus ist die Nutzung von 100 % der Batteriekapazität, muss aber nicht auf einmal erfolgen. Wenn Sie heute 50 % verbrauchen, die Batterie aufladen und morgen 50 % verbrauchen, haben Sie einen vollständigen Zyklus abgeschlossen.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Ursprüngliche Kapazität ermitteln',
|
|
36
|
+
text: 'Suchen Sie auf der Verpackung Ihres Geräts oder auf der Website des Herstellers nach den mAh, die Ihre Batterie im Neuzustand hatte.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Aktuelle Zyklen prüfen',
|
|
40
|
+
text: 'Viele Systeme (wie iOS oder Android 14) ermöglichen es Ihnen zu sehen, wie viele Ladezyklen Ihre Batterie bereits angesammelt hat.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Technische Daten eingeben',
|
|
44
|
+
text: 'Passen Sie die aktuelle Spannung, die Zyklen und die Temperatur an, damit unser Berechnungsmodell den SoH schätzen kann.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Diagnose analysieren',
|
|
48
|
+
text: 'Überprüfen Sie den Gesundheitsprozentsatz. Wenn Sie unter 80 % liegen, bemerken Sie möglicherweise Leistungseinbußen oder unerwartete Abschaltungen.',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowTo> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step, i) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
position: i + 1,
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'UtilityApplication',
|
|
81
|
+
operatingSystem: 'All',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
83
|
+
inLanguage: 'de',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export const content: ToolLocaleContent<EstimadorSaludBateriaUI> = {
|
|
87
|
+
slug,
|
|
88
|
+
title,
|
|
89
|
+
description,
|
|
90
|
+
faqTitle: 'Häufig gestellte Fragen',
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliographyTitle: 'Referenzen',
|
|
93
|
+
bibliography: [
|
|
94
|
+
{
|
|
95
|
+
name: 'Journal of Power Sources',
|
|
96
|
+
url: 'https://www.sciencedirect.com/journal/journal-of-power-sources',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: 'IEEE Xplore — Lithium-Ion Battery Life Prediction',
|
|
100
|
+
url: 'https://ieeexplore.ieee.org/abstract/document/11090151',
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
howTo: howToData,
|
|
104
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
|
+
seo: [
|
|
106
|
+
{ type: 'title', text: 'Die Chemie der Zeit: Warum Lithium Batterien sterben', level: 2 },
|
|
107
|
+
{
|
|
108
|
+
type: 'paragraph',
|
|
109
|
+
html: 'Eine Lithium-Ionen-Batterie ist keine statische Energiebox, sondern ein dynamisches chemisches Ökosystem, das sich seit dem Moment der Herstellung ständig verschlechtert. Jeder Lade- und Entladezyklus, jede Temperaturschwankung und jede Minute bei extremen Spannungen trägt zu Nebenprodukten bei, die den Ionenfluss behindern.',
|
|
110
|
+
},
|
|
111
|
+
{ type: 'title', text: 'Wichtigste Degradationsmechanismen', level: 3 },
|
|
112
|
+
{
|
|
113
|
+
type: 'paragraph',
|
|
114
|
+
html: '<strong>SEI-Schicht:</strong> Die Festelektrolyt-Zwischenphase wächst mit der Zeit, verbraucht aktives Lithium und erhöht den Innenwiderstand. <strong>Elektrolytoxidation:</strong> Spannungen über 4,1 V beschleunigen die Oxidation und können die Batterie aufblähen lassen. <strong>Lithium-Plating:</strong> Das Laden bei niedrigen Temperaturen lagert Lithium in metallischer Form ab, wodurch Dendriten entstehen, die den Separator durchstoßen können.',
|
|
115
|
+
},
|
|
116
|
+
{ type: 'title', text: 'Der 100 % Mythos: Warum das Laden über Nacht ein Fehler ist', level: 3 },
|
|
117
|
+
{
|
|
118
|
+
type: 'paragraph',
|
|
119
|
+
html: 'Für ein Lithium-Ion ist ein Ladezustand von 100 % (4,2 V) ein Zustand hoher Belastung. Untersuchungen zeigen, dass sich die Zykluslebensdauer verdoppelt oder verdreifacht, wenn das Gerät zwischen <strong>20 % und 80 %</strong> gehalten wird. Zudem verdoppelt sich für jeweils 10 °C über 25 °C die Geschwindigkeit der chemischen Degradation in etwa.',
|
|
120
|
+
},
|
|
121
|
+
{ type: 'title', text: 'Protokoll zum Überleben der Energie', level: 3 },
|
|
122
|
+
{
|
|
123
|
+
type: 'paragraph',
|
|
124
|
+
html: 'Laden Sie eine Batterie niemals unter 0 °C auf: Lithium lagert sich an der Anode ab und verursacht dauerhafte Schäden. Schnelles Laden erzeugt lokale Hitze und mechanische Belastung; nutzen Sie es nur, wenn es unbedingt notwendig ist. Für eine langfristige Lagerung bewahren Sie die Batterie bei 50 % an einem kühlen Ort auf.',
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
ui: {
|
|
128
|
+
badge: 'Li-Ion Batterie',
|
|
129
|
+
title: 'Batterie Gesundheitsrechner',
|
|
130
|
+
description: 'Technische Degradationsdiagnose für Lithium-Ionen-Zellen.',
|
|
131
|
+
paramsTitle: 'Zellparameter',
|
|
132
|
+
voltageLabel: 'Aktuelle Spannung',
|
|
133
|
+
cyclesLabel: 'Ladezyklen',
|
|
134
|
+
tempLabel: 'Temperatur',
|
|
135
|
+
voltageHint: 'Nennbereich: 3,0 V (leer) bis 4,2 V (voll).',
|
|
136
|
+
labelUsefulLife: 'Nutzungsdauer',
|
|
137
|
+
yearsPrefix: 'Gesch.',
|
|
138
|
+
yearsSuffix: 'Jahre',
|
|
139
|
+
metricThermalStress: 'Thermischer Stress',
|
|
140
|
+
metricVoltageStress: 'Spannungsstress',
|
|
141
|
+
metricLithiumPlating: 'Lithium Plating',
|
|
142
|
+
statusExcelente: 'Hervorragender Zustand',
|
|
143
|
+
statusBueno: 'Guter Zustand',
|
|
144
|
+
statusRegular: 'Mäßiger Zustand',
|
|
145
|
+
statusCritico: 'Kritischer Zustand',
|
|
146
|
+
indicatorTempNormal: 'Normal',
|
|
147
|
+
indicatorTempCritical: 'Kritisch',
|
|
148
|
+
indicatorVoltageHigh: 'Hoch',
|
|
149
|
+
indicatorVoltageLow: 'Niedrig',
|
|
150
|
+
indicatorPlatingRisk: 'Hohes Risiko',
|
|
151
|
+
indicatorPlatingOk: 'Kein Risiko',
|
|
152
|
+
recTemp: 'Umgebungstemperatur senken oder Belüftung verbessern, um Elektrolytoxidation zu vermeiden.',
|
|
153
|
+
recVoltageHigh: 'Vermeiden Sie es, die Batterie über längere Zeit bei 100 % Ladung (4,2 V) zu halten.',
|
|
154
|
+
recVoltageLow: 'Tiefe Entladungen vermeiden; Zyklen zwischen 20 % und 80 % verdoppeln die Lebensdauer.',
|
|
155
|
+
recSohLow: 'Kapazität ist unter den optimalen Standard gefallen. Erwägen Sie einen Austausch, wenn die Autonomie nicht ausreicht.',
|
|
156
|
+
recDefault: 'Behalten Sie Ihre aktuellen Gewohnheiten bei — Ihre Batterie befindet sich in einem idealen Betriebsbereich.',
|
|
157
|
+
},
|
|
158
|
+
};
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { EstimadorSaludBateriaUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'kalkulator-kesehatan-baterai-lithium';
|
|
6
|
+
const title = 'Kalkulator Kesehatan Baterai Lithium';
|
|
7
|
+
const description =
|
|
8
|
+
'Hitung State of Health (SoH) baterai lithium Anda berdasarkan siklus, tegangan, dan suhu. Panduan ilmiah untuk memaksimalkan masa pakai energi.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Apa itu degradasi kimia baterai?',
|
|
13
|
+
answer:
|
|
14
|
+
'Pada setiap siklus pengisian dan pengosongan daya, sel lithium mengalami retakan mikro dan akumulasi sedimen kimia (S.E.I.) yang mengurangi kapasitas penyimpanan energinya. Ini adalah proses yang tidak dapat dihindari tetapi dapat diperlambat dengan kebiasaan baik.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Mengapa disarankan mengisi daya hingga 80%?',
|
|
18
|
+
answer:
|
|
19
|
+
'Baterai lithium mengalami lebih banyak stres pada tegangan ekstrem (0% dan 100%). Menjaga daya antara 20% dan 80% dapat memperpanjang masa pakai sel hingga tiga kali lipat dengan mengurangi panas dan tekanan internal.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'Bagaimana panas memengaruhi masa pakai baterai?',
|
|
23
|
+
answer:
|
|
24
|
+
'Panas adalah musuh nomor satu. Untuk setiap kenaikan 10 derajat di atas suhu lingkungan optimal (25 derajat), laju degradasi kimia kira-kira berlipat ganda.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Apa itu siklus pengisian penuh?',
|
|
28
|
+
answer:
|
|
29
|
+
'Satu siklus adalah penggunaan 100% dari kapasitas baterai, tetapi tidak harus sekaligus. Jika Anda menggunakan 50% hari ini, mengisinya, dan menggunakan 50% besok, Anda telah menyelesaikan 1 siklus penuh.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Identifikasi kapasitas asli',
|
|
36
|
+
text: 'Lihatlah kotak perangkat Anda atau situs web produsen untuk mengetahui mAh baterai Anda saat masih baru.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Periksa siklus saat ini',
|
|
40
|
+
text: 'Banyak sistem (seperti iOS atau Android 14) memungkinkan Anda melihat berapa banyak siklus pengisian yang telah dikumpulkan baterai Anda.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Masukkan data teknis',
|
|
44
|
+
text: 'Sesuaikan tegangan saat ini, siklus, dan suhu agar mesin perhitungan kami dapat memperkirakan SoH.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Analisis diagnosis',
|
|
48
|
+
text: 'Periksa persentase kesehatan. Jika Anda berada di bawah 80%, Anda mungkin mulai melihat penurunan performa atau mati mendadak.',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowTo> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step, i) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
position: i + 1,
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'UtilityApplication',
|
|
81
|
+
operatingSystem: 'All',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
83
|
+
inLanguage: 'id',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export const content: ToolLocaleContent<EstimadorSaludBateriaUI> = {
|
|
87
|
+
slug,
|
|
88
|
+
title,
|
|
89
|
+
description,
|
|
90
|
+
faqTitle: 'Pertanyaan yang Sering Diajukan',
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliographyTitle: 'Referensi',
|
|
93
|
+
bibliography: [
|
|
94
|
+
{
|
|
95
|
+
name: 'Journal of Power Sources',
|
|
96
|
+
url: 'https://www.sciencedirect.com/journal/journal-of-power-sources',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: 'IEEE Xplore — Lithium-Ion Battery Life Prediction',
|
|
100
|
+
url: 'https://ieeexplore.ieee.org/abstract/document/11090151',
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
howTo: howToData,
|
|
104
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
|
+
seo: [
|
|
106
|
+
{ type: 'title', text: 'Kimia waktu: mengapa baterai lithium mati', level: 2 },
|
|
107
|
+
{
|
|
108
|
+
type: 'paragraph',
|
|
109
|
+
html: 'Baterai lithium-ion bukanlah kotak energi statis melainkan ekosistem kimia dinamis yang terus mengalami degradasi sejak saat pembuatan. Setiap siklus pengisian dan pengosongan, setiap variasi suhu, dan setiap menit pada tegangan ekstrem berkontribusi pada produk sampingan yang menghambat aliran ion.',
|
|
110
|
+
},
|
|
111
|
+
{ type: 'title', text: 'Mekanisme degradasi utama', level: 3 },
|
|
112
|
+
{
|
|
113
|
+
type: 'paragraph',
|
|
114
|
+
html: '<strong>Lapisan SEI:</strong> antarmuka elektrolit padat tumbuh seiring waktu, mengonsumsi lithium aktif dan meningkatkan resistensi internal. <strong>Oksidasi elektrolit:</strong> tegangan di atas 4.1V mempercepat oksidasi dan dapat membengkakkan baterai. <strong>Lithium Plating:</strong> pengisian daya pada suhu rendah mengendapkan lithium dalam bentuk logam, menciptakan dendrit yang dapat menembus pemisah.',
|
|
115
|
+
},
|
|
116
|
+
{ type: 'title', text: 'Mitos 100%: mengapa mengisi daya semalaman adalah kesalahan', level: 3 },
|
|
117
|
+
{
|
|
118
|
+
type: 'paragraph',
|
|
119
|
+
html: 'Bagi ion lithium, berada pada daya 100% (4.2V) adalah kondisi stres tinggi. Penelitian menunjukkan masa pakai siklus berlipat ganda atau tiga kali lipat saat menjaga perangkat antara <strong>20% dan 80%</strong>. Selain itu, untuk setiap kenaikan 10°C di atas 25°C, laju degradasi kimia kira-kira berlipat ganda.',
|
|
120
|
+
},
|
|
121
|
+
{ type: 'title', text: 'Protokol kelangsungan hidup energi', level: 3 },
|
|
122
|
+
{
|
|
123
|
+
type: 'paragraph',
|
|
124
|
+
html: 'Jangan pernah mengisi daya baterai di bawah 0°C: lithium mengendap pada anoda menyebabkan kerusakan permanen. Pengisian cepat menghasilkan panas lokal dan stres mekanis; gunakan hanya jika benar-benar diperlukan. Untuk penyimpanan jangka panjang, simpan baterai pada daya 50% di tempat yang sejuk.',
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
ui: {
|
|
128
|
+
badge: 'Baterai Li-Ion',
|
|
129
|
+
title: 'Estimator Kesehatan Baterai',
|
|
130
|
+
description: 'Diagnosis degradasi teknis untuk sel Lithium-Ion.',
|
|
131
|
+
paramsTitle: 'Parameter Sel',
|
|
132
|
+
voltageLabel: 'Tegangan Saat Ini',
|
|
133
|
+
cyclesLabel: 'Siklus Pengisian',
|
|
134
|
+
tempLabel: 'Suhu',
|
|
135
|
+
voltageHint: 'Rentang nominal: 3.0V (kosong) hingga 4.2V (penuh).',
|
|
136
|
+
labelUsefulLife: 'Masa Pakai',
|
|
137
|
+
yearsPrefix: 'Est.',
|
|
138
|
+
yearsSuffix: 'tahun',
|
|
139
|
+
metricThermalStress: 'Stres Termal',
|
|
140
|
+
metricVoltageStress: 'Stres Tegangan',
|
|
141
|
+
metricLithiumPlating: 'Lithium Plating',
|
|
142
|
+
statusExcelente: 'Status Luar Biasa',
|
|
143
|
+
statusBueno: 'Status Baik',
|
|
144
|
+
statusRegular: 'Status Cukup',
|
|
145
|
+
statusCritico: 'Status Kritis',
|
|
146
|
+
indicatorTempNormal: 'Normal',
|
|
147
|
+
indicatorTempCritical: 'Kritis',
|
|
148
|
+
indicatorVoltageHigh: 'Tinggi',
|
|
149
|
+
indicatorVoltageLow: 'Rendah',
|
|
150
|
+
indicatorPlatingRisk: 'Risiko Tinggi',
|
|
151
|
+
indicatorPlatingOk: 'Tanpa Risiko',
|
|
152
|
+
recTemp: 'Kurangi suhu sekitar atau tingkatkan ventilasi untuk menghindari oksidasi elektrolit.',
|
|
153
|
+
recVoltageHigh: 'Hindari menjaga baterai pada daya 100% (4.2V) untuk waktu yang lama.',
|
|
154
|
+
recVoltageLow: 'Hindari pengosongan daya yang dalam; siklus antara 20% dan 80% menggandakan masa pakai baterai.',
|
|
155
|
+
recSohLow: 'Kapasitas telah turun di bawah standar optimal. Pertimbangkan penggantian jika otonomi tidak mencukupi.',
|
|
156
|
+
recDefault: 'Pertahankan kebiasaan Anda saat ini — baterai Anda berada dalam rentang operasi yang ideal.',
|
|
157
|
+
},
|
|
158
|
+
};
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { EstimadorSaludBateriaUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'calcolatore-salute-batteria-litio';
|
|
6
|
+
const title = 'Calcolatore Salute della Batteria al Litio';
|
|
7
|
+
const description =
|
|
8
|
+
"Calcola lo stato di salute (SoH) della tua batteria al litio basato su cicli, tensione e temperatura. Guida scientifica per massimizzare la longevità dell'energia.";
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: "Cos'è la degradazione chimica della batteria?",
|
|
13
|
+
answer:
|
|
14
|
+
"Con ogni ciclo di carica e scarica, le celle al litio subiscono microfratture e l'accumulo di sedimenti chimici (S.E.I.) che riducono la loro capacità di immagazzinare energia. È un processo inevitabile, ma che può essere rallentato con buone abitudini.",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Perché si consiglia di caricare fino all\'80%?',
|
|
18
|
+
answer:
|
|
19
|
+
"Le batterie al litio soffrono di più lo stress a tensioni estreme (0% e 100%). Mantenere la carica tra il 20% e l'80% può triplicare la vita della cella riducendo il calore e la pressione interna.",
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'In che modo il calore influisce sulla durata della batteria?',
|
|
23
|
+
answer:
|
|
24
|
+
"Il calore è il nemico numero uno. Per ogni aumento di 10 gradi sopra la temperatura ambiente ottimale (25 gradi), il tasso di degradazione chimica raddoppia approssimativamente.",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: "Cos'è un ciclo di carica completo?",
|
|
28
|
+
answer:
|
|
29
|
+
"Un ciclo è l'uso del 100% della capacità della batteria, ma non deve avvenire necessariamente tutto in una volta. Se usi il 50% oggi, la carichi e usi il 50% domani, avrai completato 1 ciclo completo.",
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Identificare la capacità originale',
|
|
36
|
+
text: "Controlla sulla confezione del tuo dispositivo o sul sito web del produttore i mAh che aveva la tua batteria quando era nuova.",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Verificare i cicli attuali',
|
|
40
|
+
text: 'Molti sistemi (come iOS o Android 14) consentono di vedere quanti cicli di carica ha accumulato la batteria.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Inserire i dati tecnici',
|
|
44
|
+
text: 'Regola la tensione attuale, i cicli e la temperatura in modo che il nostro motore di calcolo possa stimare il SoH.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Analizzare la diagnosi',
|
|
48
|
+
text: 'Controlla la percentuale di salute. Se sei al di sotto dell\'80%, potresti iniziare a notare cali di prestazioni o spegnimenti imprevisti.',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowTo> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step, i) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
position: i + 1,
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'UtilityApplication',
|
|
81
|
+
operatingSystem: 'All',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
83
|
+
inLanguage: 'it',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export const content: ToolLocaleContent<EstimadorSaludBateriaUI> = {
|
|
87
|
+
slug,
|
|
88
|
+
title,
|
|
89
|
+
description,
|
|
90
|
+
faqTitle: 'Domande Frequenti',
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliographyTitle: 'Riferimenti',
|
|
93
|
+
bibliography: [
|
|
94
|
+
{
|
|
95
|
+
name: 'Journal of Power Sources',
|
|
96
|
+
url: 'https://www.sciencedirect.com/journal/journal-of-power-sources',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: 'IEEE Xplore — Lithium-Ion Battery Life Prediction',
|
|
100
|
+
url: 'https://ieeexplore.ieee.org/abstract/document/11090151',
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
howTo: howToData,
|
|
104
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
105
|
+
seo: [
|
|
106
|
+
{ type: 'title', text: 'La chimica del tempo: perché le batterie al litio muoiono', level: 2 },
|
|
107
|
+
{
|
|
108
|
+
type: 'paragraph',
|
|
109
|
+
html: "Una batteria agli ioni di litio non è una scatola di energia statica, ma un ecosistema chimico dinamico in costante degradazione dal momento della produzione. Ogni ciclo di carica e scarica, ogni variazione di temperatura e ogni minuto a tensioni estreme contribuisce ai sottoprodotti che ostacolano il flusso di ioni.",
|
|
110
|
+
},
|
|
111
|
+
{ type: 'title', text: 'Principali meccanismi di degradazione', level: 3 },
|
|
112
|
+
{
|
|
113
|
+
type: 'paragraph',
|
|
114
|
+
html: "<strong>Strato SEI:</strong> l'interfaccia dell'elettrolita solido cresce nel tempo, consumando litio attivo e aumentando la resistenza interna. <strong>Ossidazione dell'elettrolito:</strong> tensioni superiori a 4,1 V accelerano l'ossidazione e possono gonfiare la batteria. <strong>Lithium Plating:</strong> la ricarica a basse temperature deposita il litio in forma metallica, creando dendriti che possono perforare il separatore.",
|
|
115
|
+
},
|
|
116
|
+
{ type: 'title', text: 'Il mito del 100%: perché caricare durante la notte è un errore', level: 3 },
|
|
117
|
+
{
|
|
118
|
+
type: 'paragraph',
|
|
119
|
+
html: "Per uno ione di litio, essere al 100% di carica (4,2 V) è uno stato di alto stress. La ricerca mostra che la vita del ciclo raddoppia o triplica quando si mantiene il dispositivo tra il <strong>20% e l'80%</strong>. Inoltre, per ogni 10°C sopra i 25°C, il tasso di degradazione chimica raddoppia approssimativamente.",
|
|
120
|
+
},
|
|
121
|
+
{ type: 'title', text: 'Protocollo di sopravvivenza energetica', level: 3 },
|
|
122
|
+
{
|
|
123
|
+
type: 'paragraph',
|
|
124
|
+
html: "Non caricare mai una batteria sotto gli 0°C: il litio si deposita sull'anodo causando danni permanenti. La ricarica rapida genera calore localizzato e stress meccanico; usala solo quando strettamente necessario. Per la conservazione a lungo termine, mantenere la batteria al 50% in un luogo fresco.",
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
ui: {
|
|
128
|
+
badge: 'Batteria Li-Ion',
|
|
129
|
+
title: 'Stimatore Salute Batteria',
|
|
130
|
+
description: 'Diagnosi tecnica della degradazione per celle agli ioni di litio.',
|
|
131
|
+
paramsTitle: 'Parametri della Cella',
|
|
132
|
+
voltageLabel: 'Tensione Attuale',
|
|
133
|
+
cyclesLabel: 'Cicli di Carica',
|
|
134
|
+
tempLabel: 'Temperatura',
|
|
135
|
+
voltageHint: 'Intervallo nominale: da 3,0 V (vuoto) a 4,2 V (pieno).',
|
|
136
|
+
labelUsefulLife: 'Vita Utile',
|
|
137
|
+
yearsPrefix: 'Stima',
|
|
138
|
+
yearsSuffix: 'anni',
|
|
139
|
+
metricThermalStress: 'Stress Termico',
|
|
140
|
+
metricVoltageStress: 'Stress di Tensione',
|
|
141
|
+
metricLithiumPlating: 'Lithium Plating',
|
|
142
|
+
statusExcelente: 'Stato Eccellente',
|
|
143
|
+
statusBueno: 'Stato Buono',
|
|
144
|
+
statusRegular: 'Stato Discreto',
|
|
145
|
+
statusCritico: 'Stato Critico',
|
|
146
|
+
indicatorTempNormal: 'Normale',
|
|
147
|
+
indicatorTempCritical: 'Critico',
|
|
148
|
+
indicatorVoltageHigh: 'Alta',
|
|
149
|
+
indicatorVoltageLow: 'Bassa',
|
|
150
|
+
indicatorPlatingRisk: 'Alto Rischio',
|
|
151
|
+
indicatorPlatingOk: 'Nessun Rischio',
|
|
152
|
+
recTemp: "Ridurre la temperatura ambiente o migliorare la ventilazione per evitare l'ossidazione dell'elettrolito.",
|
|
153
|
+
recVoltageHigh: 'Evitare di mantenere la batteria al 100% di carica (4,2 V) per periodi prolungati.',
|
|
154
|
+
recVoltageLow: 'Evitare scariche profonde; i cicli tra il 20% e l\'80% raddoppiano la durata della batteria.',
|
|
155
|
+
recSohLow: 'La capacità è scesa al di sotto dello standard ottimale. Considera una sostituzione se l\'autonomia è insufficiente.',
|
|
156
|
+
recDefault: 'Mantieni le tue abitudini attuali: la tua batteria è in un intervallo operativo ideale.',
|
|
157
|
+
},
|
|
158
|
+
};
|