@jjlmoya/utils-hardware 1.20.0 → 1.22.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.
Files changed (55) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +3 -1
  3. package/src/entries.ts +7 -1
  4. package/src/index.ts +2 -0
  5. package/src/tests/locale_completeness.test.ts +2 -2
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/mouseScrollTest/bibliography.astro +14 -0
  8. package/src/tool/mouseScrollTest/bibliography.ts +16 -0
  9. package/src/tool/mouseScrollTest/component.astro +150 -0
  10. package/src/tool/mouseScrollTest/entry.ts +29 -0
  11. package/src/tool/mouseScrollTest/i18n/de.ts +248 -0
  12. package/src/tool/mouseScrollTest/i18n/en.ts +253 -0
  13. package/src/tool/mouseScrollTest/i18n/es.ts +248 -0
  14. package/src/tool/mouseScrollTest/i18n/fr.ts +248 -0
  15. package/src/tool/mouseScrollTest/i18n/id.ts +248 -0
  16. package/src/tool/mouseScrollTest/i18n/it.ts +248 -0
  17. package/src/tool/mouseScrollTest/i18n/ja.ts +248 -0
  18. package/src/tool/mouseScrollTest/i18n/ko.ts +248 -0
  19. package/src/tool/mouseScrollTest/i18n/nl.ts +248 -0
  20. package/src/tool/mouseScrollTest/i18n/pl.ts +248 -0
  21. package/src/tool/mouseScrollTest/i18n/pt.ts +248 -0
  22. package/src/tool/mouseScrollTest/i18n/ru.ts +248 -0
  23. package/src/tool/mouseScrollTest/i18n/sv.ts +248 -0
  24. package/src/tool/mouseScrollTest/i18n/tr.ts +248 -0
  25. package/src/tool/mouseScrollTest/i18n/zh.ts +248 -0
  26. package/src/tool/mouseScrollTest/index.ts +9 -0
  27. package/src/tool/mouseScrollTest/logic.ts +277 -0
  28. package/src/tool/mouseScrollTest/mouse-scroll-test.css +610 -0
  29. package/src/tool/mouseScrollTest/seo.astro +15 -0
  30. package/src/tool/mouseScrollTest/ui.ts +34 -0
  31. package/src/tool/upsRuntimeCalculator/bibliography.astro +14 -0
  32. package/src/tool/upsRuntimeCalculator/bibliography.ts +16 -0
  33. package/src/tool/upsRuntimeCalculator/component.astro +384 -0
  34. package/src/tool/upsRuntimeCalculator/entry.ts +29 -0
  35. package/src/tool/upsRuntimeCalculator/i18n/de.ts +208 -0
  36. package/src/tool/upsRuntimeCalculator/i18n/en.ts +208 -0
  37. package/src/tool/upsRuntimeCalculator/i18n/es.ts +208 -0
  38. package/src/tool/upsRuntimeCalculator/i18n/fr.ts +208 -0
  39. package/src/tool/upsRuntimeCalculator/i18n/id.ts +208 -0
  40. package/src/tool/upsRuntimeCalculator/i18n/it.ts +208 -0
  41. package/src/tool/upsRuntimeCalculator/i18n/ja.ts +208 -0
  42. package/src/tool/upsRuntimeCalculator/i18n/ko.ts +208 -0
  43. package/src/tool/upsRuntimeCalculator/i18n/nl.ts +208 -0
  44. package/src/tool/upsRuntimeCalculator/i18n/pl.ts +208 -0
  45. package/src/tool/upsRuntimeCalculator/i18n/pt.ts +208 -0
  46. package/src/tool/upsRuntimeCalculator/i18n/ru.ts +208 -0
  47. package/src/tool/upsRuntimeCalculator/i18n/sv.ts +208 -0
  48. package/src/tool/upsRuntimeCalculator/i18n/tr.ts +208 -0
  49. package/src/tool/upsRuntimeCalculator/i18n/zh.ts +208 -0
  50. package/src/tool/upsRuntimeCalculator/index.ts +11 -0
  51. package/src/tool/upsRuntimeCalculator/logic.ts +48 -0
  52. package/src/tool/upsRuntimeCalculator/seo.astro +15 -0
  53. package/src/tool/upsRuntimeCalculator/ui.ts +31 -0
  54. package/src/tool/upsRuntimeCalculator/ups-runtime-calculator.css +530 -0
  55. package/src/tools.ts +3 -1
@@ -0,0 +1,208 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { UpsRuntimeCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'ups-calisma-suresi-hesaplayici';
7
+ const title = 'UPS Çalışma Süresi Hesaplayıcı';
8
+ const description = 'UPS pil çalışma süresini, toplam korunan yükü, kullanılabilir watt-saati ve PC\'ler, monitörler, yönlendiriciler, NAS cihazları ve ev laboratuvarı donanımı için önerilen VA boyutunu hesaplayın.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'UPS çalışma süresi nasıl hesaplanır?',
13
+ answer: 'UPS\'e bağlı her cihazın watt değerini toplayın, UPS pil watt-saatini invertör verimliliğiyle çarpın, saklamak istediğiniz rezervi çıkarın, ardından kullanılabilir watt-saati yük wattına bölün. Saat cinsinden sonuç, dakika için 60 ile çarpılabilir.',
14
+ },
15
+ {
16
+ question: 'Gerçek UPS çalışma süresi neden tahminden farklıdır?',
17
+ answer: 'Çalışma süresi pil yaşı, sıcaklık, deşarj hızı, invertör verimliliği, yük ani artışları ve üretici kesme voltajına göre değişir. Sonucu bir planlama tahmini olarak değerlendirin ve kontrollü bir kapatma testiyle doğrulayın.',
18
+ },
19
+ {
20
+ question: 'UPS\'i watt\'a göre mi yoksa VA\'ya göre mi boyutlandırmalıyım?',
21
+ answer: 'Her ikisini de kontrol edin. Watt, UPS\'in sağlayabileceği gerçek gücü belirtirken, VA güç faktörünü içerir. UPS, yükünüzü watt olarak aşmalı ve bağlı ekipman için yeterli VA marjına sahip olmalıdır.',
22
+ },
23
+ {
24
+ question: 'Ne kadar UPS marjı bırakmalıyım?',
25
+ answer: 'Pratik bir hedef, normal yükü UPS watt değerinin yaklaşık %70-80\'inin altında tutmaktır. Bu, başlangıç ani yükselmeleri, pil yaşlanması ve gelecekteki cihazlar için alan bırakır.',
26
+ },
27
+ {
28
+ question: 'UPS\'e yazıcı veya ısıtıcı bağlayabilir miyim?',
29
+ answer: 'UPS açıkça derecelendirilmedikçe lazer yazıcılardan, ısıtıcılardan ve diğer yüksek ani yükselme yüklerinden kaçının. İnvertörü aşırı yükleyebilir ve çalışma süresini ciddi şekilde azaltabilirler.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Korunan cihazları listele',
36
+ text: 'Elektrik kesintisi sırasında çevrimiçi kalması gereken cihazları girin: bilgisayar, monitör, yönlendirici, modem, NAS ve ağ anahtarı gibi.',
37
+ },
38
+ {
39
+ name: 'Gerçekçi watt değeri girin',
40
+ text: 'Mümkün olduğunda prizden ölçülen gücü kullanın. Yalnızca güç kaynağı değerlerine sahipseniz, maksimum etiket değeri yerine beklenen çalışma yüküne düşürün.',
41
+ },
42
+ {
43
+ name: 'Pil kapasitesini ve varsayımları ayarlayın',
44
+ text: 'UPS pil watt-saatini, invertör verimliliğini, güç faktörünü ve kontrollü kapatma için saklamak istediğiniz rezerv yüzdesini girin.',
45
+ },
46
+ {
47
+ name: 'Çalışma süresini ve VA önerisini okuyun',
48
+ text: 'Tahmini dakikaları ve önerilen VA\'yı satın alma veya yapılandırma kılavuzu olarak kullanın, ardından güvenli bir kesinti tatbikatıyla kurulumu doğrulayın.',
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: 'USD' },
83
+ inLanguage: 'tr',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<UpsRuntimeCalculatorUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faq: faqData,
91
+ bibliography,
92
+ howTo: howToData,
93
+ schemas: [faqSchema, howToSchema, appSchema],
94
+ seo: [
95
+ {
96
+ type: 'title',
97
+ text: 'UPS Çalışma Süresi Hesaplayıcı: Pil Yedekleme Süresini Tahmin Edin',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: 'Bir UPS çalışma süresi tahmini iki pratik soruyu yanıtlar: bir elektrik kesintisi sırasında donanımınız ne kadar süre çevrimiçi kalabilir ve UPS bağlı yük için yeterince büyük mü. Bu hesaplayıcı cihaz watt değerini, pil watt-saatini, invertör verimliliğini, güç faktörünü ve kapatma rezervini birleştirerek sonucun basit bir pil kapasitesi bölmesinden daha gerçekçi bir planlamaya yakın olmasını sağlar.',
103
+ },
104
+ {
105
+ type: 'title',
106
+ text: 'Çalışma Süresi Formülü',
107
+ level: 3,
108
+ },
109
+ {
110
+ type: 'paragraph',
111
+ html: 'Saat cinsinden tahmini çalışma süresi <strong>kullanılabilir pil watt-saatinin toplam yük W\'a bölümüdür</strong>. Kullanılabilir watt-saat, basılı pil kapasitesi değildir: invertör kayıpları ve kontrollü kapatma için saklamak istediğiniz rezerv için düzeltilmelidir. Örneğin, %86 verimlilikte ve %20 rezervli 432 Wh\'lik bir pil yaklaşık 297 Wh kullanılabilir enerji sağlar.',
112
+ },
113
+ {
114
+ type: 'table',
115
+ headers: ['Giriş', 'Neden önemli', 'Pratik rehberlik'],
116
+ rows: [
117
+ ['Yük watt', 'Çalışma süresini doğrudan kontrol eder', 'Özellikle oyun bilgisayarları ve NAS sistemleri için mümkün olduğunda priz ölçer ile ölçün.'],
118
+ ['Pil Wh', 'Enerji havuzunu belirler', 'Üretici pil verilerini veya nominal voltaj ile amper-saat çarpımını kullanın.'],
119
+ ['Verimlilik', 'İnvertör kaybını hesaba katar', 'Birçok tüketici UPS ünitesi için %80-90 makul bir planlama aralığıdır.'],
120
+ ['Güç faktörü', 'Watt\'ı VA\'ya dönüştürür', 'Biliniyorsa UPS teknik özelliklerini kullanın; bütçe ve orta seviye ünitelerde 0,6-0,8 yaygındır.'],
121
+ ['Rezerv', 'Kapatma marjını korur', 'Kontrollü PC veya sunucu kapatması için %10-25 mantıklıdır.'],
122
+ ],
123
+ },
124
+ {
125
+ type: 'title',
126
+ text: 'Ne Kadar Çalışma Süresine İhtiyacınız Var?',
127
+ level: 3,
128
+ },
129
+ {
130
+ type: 'list',
131
+ items: [
132
+ '5-10 dakika: kısa dalgalanmaları atlatmak veya bir masaüstü bilgisayarı güvenle kapatmak için yeterlidir.',
133
+ '10-20 dakika: yönlendiriciler, modemler, NAS üniteleri ve küçük ev laboratuvarı düğümleri için kullanışlıdır.',
134
+ '30+ dakika: ağ sürekliliği, uzaktan çalışma ve sık kesinti olan yerler için daha iyidir.',
135
+ 'Birkaç saat: genellikle yalnızca bir masaüstü UPS\'i değil, daha büyük bir pil sistemi gerektirir.',
136
+ ],
137
+ },
138
+ {
139
+ type: 'title',
140
+ text: 'UPS Seçerken Watt ve VA Karşılaştırması',
141
+ level: 3,
142
+ },
143
+ {
144
+ type: 'paragraph',
145
+ html: 'UPS ürün isimleri genellikle VA\'yı duyurur, ancak watt değeri gerçek ekipman için daha katı sınırdır. 900 VA\'lık bir UPS yalnızca 540 W destekleyebilirken, başka bir 900 VA modeli 600 W veya daha fazlasını destekleyebilir. Her iki değeri de kontrol edin ve aşırı yük alarmları, kısalan pil ömrü ve kesinti sırasında başarısız transferlerden kaçınmak için normal çalışmayı maksimumun altında tutun.',
146
+ },
147
+ {
148
+ type: 'title',
149
+ text: 'Çalışma Süresi Tahminlerini Bozan Yükler',
150
+ level: 3,
151
+ },
152
+ {
153
+ type: 'list',
154
+ items: [
155
+ 'Oyun bilgisayarları saniyeler içinde düşük boşta tüketimden yüksek GPU tüketimine geçebilir.',
156
+ 'Monitörler parlaklık, HDR modu ve panel boyutuna göre keskin şekilde değişir.',
157
+ 'NAS cihazları disk başlatma ve yeniden yapılandırma sırasında ek güç çeker.',
158
+ 'Lazer yazıcılar, ısıtıcılar, pompalar ve kompresörler, özellikle desteklenmedikçe kötü UPS yükleridir.',
159
+ 'Eski piller, orijinal kapasitelerinin önerdiğinden çok daha az çalışma süresi sağlayabilir.',
160
+ ],
161
+ },
162
+ {
163
+ type: 'title',
164
+ text: 'Güvenli Doğrulama Kontrol Listesi',
165
+ level: 3,
166
+ },
167
+ {
168
+ type: 'list',
169
+ items: [
170
+ 'Testten önce UPS\'i tamamen şarj edin.',
171
+ 'Açık çalışmaları kaydedin ve kritik yazma işlemleri veya ürün yazılımı güncellemeleri sırasında test yapmaktan kaçının.',
172
+ 'Ekipmanı değil, duvar gücünü çıkarın ve UPS yük yüzdesini ve pil tahminini izleyin.',
173
+ 'Pil tükenmeden önce PC, NAS veya sunucunuzun kapatma sinyalini aldığını doğrulayın.',
174
+ 'Kurşun-asit UPS pilleri hızla yaşlandığı için testi birkaç ayda bir tekrarlayın.',
175
+ ],
176
+ },
177
+ ],
178
+ ui: {
179
+ loadTitle: 'Korunan yük',
180
+ addDevice: 'Cihaz ekle',
181
+ deviceName: 'Cihaz',
182
+ watts: 'Watt',
183
+ remove: 'Cihazı kaldır',
184
+ batteryWh: 'Pil kapasitesi (Wh)',
185
+ efficiency: 'İnvertör verimliliği',
186
+ powerFactor: 'Güç faktörü',
187
+ reserve: 'Kapatma rezervi',
188
+ totalLoad: 'Toplam yük',
189
+ runtime: 'Tahmini çalışma süresi',
190
+ recommendedUps: 'Önerilen boyut',
191
+ usableEnergy: 'Kullanılabilir enerji',
192
+ minutes: 'dk',
193
+ hours: 'sa',
194
+ wattsUnit: 'W',
195
+ vaUnit: 'VA',
196
+ whUnit: 'Wh',
197
+ assumptionsLabel: 'UPS varsayımları',
198
+ presetDesktop: 'Masaüstü bilgisayar',
199
+ presetMonitor: '27 inç monitör',
200
+ presetRouter: 'Yönlendirici ve modem',
201
+ presetNas: 'İki yuvalı NAS',
202
+ percentUnit: '%',
203
+ bandLight: 'rahat yedekleme aralığı, önerilen UPS yaklaşık',
204
+ bandBalanced: 'dengeli yedekleme aralığı, önerilen UPS yaklaşık',
205
+ bandHeavy: 'kısa yedekleme aralığı; daha büyük bir pil düşünün veya yükü yaklaşık olarak azaltın',
206
+ summaryPrefix: 'Bu kurulum şu süreye sahip:',
207
+ },
208
+ };
@@ -0,0 +1,208 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { UpsRuntimeCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'ups-runtime-calculator';
7
+ const title = 'UPS运行时间计算器';
8
+ const description = '估算UPS电池运行时间、总受保护负载、可用瓦时数,以及针对PC、显示器、路由器、NAS设备和家庭实验室硬件的推荐VA规格。';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '如何计算UPS运行时间?',
13
+ answer: '将UPS所连接每台设备的瓦数相加,用UPS的瓦时数乘以逆变器效率,减去希望保留的余量,然后将可用瓦时数除以负载瓦数。所得结果(小时)乘以60即可得到分钟数。',
14
+ },
15
+ {
16
+ question: '为什么实际UPS运行时间与估算值不同?',
17
+ answer: '运行时间会因电池老化、温度、放电速率、逆变器效率、负载峰值以及制造商设定的截止电压而变化。将结果视为规划估算值,并通过一次受控的关机测试进行验证。',
18
+ },
19
+ {
20
+ question: '应该按瓦特还是VA来选择UPS规格?',
21
+ answer: '两者都要检查。瓦特表示UPS可提供的实际功率,而VA包含了功率因数。UPS的瓦特值必须超过负载,并且要为连接的设备留有足够的VA余量。',
22
+ },
23
+ {
24
+ question: 'UPS应该保留多少余量?',
25
+ answer: '一个实用的目标是将正常负载保持在UPS瓦特额定值的70-80%以下。这为启动电流尖峰、电池老化和未来设备留出了空间。',
26
+ },
27
+ {
28
+ question: '可以在UPS上连接打印机或加热器吗?',
29
+ answer: '除非UPS明确标注支持此类设备,否则应避免连接激光打印机、加热器和其他高浪涌负载。它们可能会使逆变器过载并大幅缩短运行时间。',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: '列出受保护设备',
36
+ text: '输入在停电期间必须保持在线运行的设备,例如计算机、显示器、路由器、调制解调器、NAS和网络交换机。',
37
+ },
38
+ {
39
+ name: '输入实际的瓦数值',
40
+ text: '尽可能使用墙壁插座实测的功耗。如果只有电源额定值,请将其降低为预期的工作负载,而不是使用标签上的最大值。',
41
+ },
42
+ {
43
+ name: '设置电池容量和假设参数',
44
+ text: '输入UPS的电池瓦时数、逆变器效率、功率因数以及希望为安全关机保留的余量百分比。',
45
+ },
46
+ {
47
+ name: '读取运行时间和VA推荐值',
48
+ text: '将估算的分钟数和推荐的VA值作为采购或配置指南,然后通过一次安全的断电演练验证设置。',
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: 'USD' },
83
+ inLanguage: 'zh',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<UpsRuntimeCalculatorUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faq: faqData,
91
+ bibliography,
92
+ howTo: howToData,
93
+ schemas: [faqSchema, howToSchema, appSchema],
94
+ seo: [
95
+ {
96
+ type: 'title',
97
+ text: 'UPS运行时间计算器:估算电池备用时长',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: 'UPS运行时间估算可以回答两个实际问题:停电期间硬件能在线运行多久,以及UPS是否足够大以支持连接的负载。本计算器综合了设备瓦数、电池瓦时、逆变器效率、功率因数和关机余量,使得计算结果比简单的电池容量除法更贴近实际规划需求。',
103
+ },
104
+ {
105
+ type: 'title',
106
+ text: '运行时间公式',
107
+ level: 3,
108
+ },
109
+ {
110
+ type: 'paragraph',
111
+ html: '估算的运行时间(小时)= <strong>可用电池瓦时 ÷ 总负载功率(W)</strong>。可用瓦时并非电池上标注的容量数值,需要根据逆变器损耗和希望保留的安全关机余量进行调整。例如,一块432Wh的电池,效率为86%,保留20%余量,则可提供约297Wh的可用能量。',
112
+ },
113
+ {
114
+ type: 'table',
115
+ headers: ['输入参数', '为何重要', '实用指导'],
116
+ rows: [
117
+ ['负载功率(瓦)', '直接决定运行时间', '尽可能使用墙上插座功率计实测,尤其是游戏PC和NAS系统。'],
118
+ ['电池瓦时(Wh)', '决定能量储备总量', '使用制造商电池数据或额定电压乘以安时数。'],
119
+ ['效率', '反映逆变器损耗', '对于许多消费级UPS设备,80-90%是一个合理的规划范围。'],
120
+ ['功率因数', '将瓦特转换为VA', '如已知UPS规格则使用其数值;入门和中级设备通常为0.6-0.8。'],
121
+ ['余量', '保留关机安全边际', '10-25%对于PC或服务器的受控关机是合理的。'],
122
+ ],
123
+ },
124
+ {
125
+ type: 'title',
126
+ text: '您需要多少运行时间?',
127
+ level: 3,
128
+ },
129
+ {
130
+ type: 'list',
131
+ items: [
132
+ '5-10分钟:足以度过短暂的电压波动或安全关闭台式机。',
133
+ '10-20分钟:适用于路由器、调制解调器、NAS设备和小型家庭实验室节点。',
134
+ '30分钟以上:更适合网络持续性、远程工作和停电频繁的地区。',
135
+ '数小时:通常需要更大的电池系统,而不仅仅是台式UPS。',
136
+ ],
137
+ },
138
+ {
139
+ type: 'title',
140
+ text: '选择UPS时瓦特与VA的对比',
141
+ level: 3,
142
+ },
143
+ {
144
+ type: 'paragraph',
145
+ html: 'UPS产品名称通常以VA宣传,但瓦特值是实际设备更严格的限制。一台900VA的UPS可能仅支持540W,而另一台900VA型号可能支持600W甚至更高。请同时检查两个额定值,并将正常运行保持在最大值以下,以避免过载报警、电池寿命缩短以及停电时的切换失败。',
146
+ },
147
+ {
148
+ type: 'title',
149
+ text: '会扭曲运行时间估算的负载',
150
+ level: 3,
151
+ },
152
+ {
153
+ type: 'list',
154
+ items: [
155
+ '游戏PC可能在几秒内从低待机功耗跳变到高GPU功耗。',
156
+ '显示器会因亮度、HDR模式和面板尺寸不同而大幅变化。',
157
+ 'NAS设备在磁盘启动和重建期间会消耗额外电力。',
158
+ '激光打印机、加热器、水泵和压缩机除非明确支持,否则不适合作为UPS负载。',
159
+ '老旧电池的实际运行时间可能远低于其原始容量所暗示的数值。',
160
+ ],
161
+ },
162
+ {
163
+ type: 'title',
164
+ text: '安全验证检查清单',
165
+ level: 3,
166
+ },
167
+ {
168
+ type: 'list',
169
+ items: [
170
+ '测试前将UPS完全充满。',
171
+ '保存打开的工作,避免在关键写入或固件更新期间进行测试。',
172
+ '断开墙壁电源而非设备电源,观察UPS负载百分比和电池电量估算。',
173
+ '确认您的PC、NAS或服务器在电池耗尽之前接收到关机信号。',
174
+ '每隔几个月重复测试,因为铅酸UPS电池老化速度较快。',
175
+ ],
176
+ },
177
+ ],
178
+ ui: {
179
+ loadTitle: '受保护负载',
180
+ addDevice: '添加设备',
181
+ deviceName: '设备',
182
+ watts: '瓦特',
183
+ remove: '移除设备',
184
+ batteryWh: '电池容量 (Wh)',
185
+ efficiency: '逆变器效率',
186
+ powerFactor: '功率因数',
187
+ reserve: '关机余量',
188
+ totalLoad: '总负载',
189
+ runtime: '预计运行时间',
190
+ recommendedUps: '推荐规格',
191
+ usableEnergy: '可用能量',
192
+ minutes: '分钟',
193
+ hours: '小时',
194
+ wattsUnit: 'W',
195
+ vaUnit: 'VA',
196
+ whUnit: 'Wh',
197
+ assumptionsLabel: 'UPS假设参数',
198
+ presetDesktop: '台式电脑',
199
+ presetMonitor: '27英寸显示器',
200
+ presetRouter: '路由器和调制解调器',
201
+ presetNas: '双盘位NAS',
202
+ percentUnit: '%',
203
+ bandLight: '充裕的备用时长,推荐UPS规格约',
204
+ bandBalanced: '均衡的备用时长,推荐UPS规格约',
205
+ bandHeavy: '备用时长较短;考虑使用更大容量电池或降低负载至约',
206
+ summaryPrefix: '此配置具有',
207
+ },
208
+ };
@@ -0,0 +1,11 @@
1
+ import { upsRuntimeCalculator } from './entry';
2
+ import type { ToolDefinition } from '../../types';
3
+
4
+ export * from './entry';
5
+
6
+ export const UPS_RUNTIME_CALCULATOR_TOOL: ToolDefinition = {
7
+ entry: upsRuntimeCalculator,
8
+ Component: () => import('./component.astro'),
9
+ SEOComponent: () => import('./seo.astro'),
10
+ BibliographyComponent: () => import('./bibliography.astro'),
11
+ };
@@ -0,0 +1,48 @@
1
+ export interface UpsLoadItem {
2
+ name: string;
3
+ watts: number;
4
+ }
5
+
6
+ export interface UpsRuntimeInput {
7
+ loadItems: UpsLoadItem[];
8
+ batteryWh: number;
9
+ inverterEfficiency: number;
10
+ powerFactor: number;
11
+ reservePercent: number;
12
+ }
13
+
14
+ export interface UpsRuntimeResult {
15
+ totalWatts: number;
16
+ usableWh: number;
17
+ runtimeMinutes: number;
18
+ recommendedWatts: number;
19
+ recommendedVa: number;
20
+ loadBand: 'light' | 'balanced' | 'heavy';
21
+ }
22
+
23
+ export function calculateUpsRuntime(input: UpsRuntimeInput): UpsRuntimeResult {
24
+ const totalWatts = input.loadItems.reduce((sum, item) => sum + Math.max(0, item.watts), 0);
25
+ const efficiency = Math.min(0.98, Math.max(0.5, input.inverterEfficiency));
26
+ const reserve = Math.min(0.8, Math.max(0, input.reservePercent / 100));
27
+ const powerFactor = Math.min(1, Math.max(0.4, input.powerFactor));
28
+ const usableWh = Math.max(0, input.batteryWh) * efficiency * (1 - reserve);
29
+ const runtimeMinutes = totalWatts > 0 ? (usableWh / totalWatts) * 60 : 0;
30
+ const recommendedWatts = Math.ceil((totalWatts * 1.25) / 10) * 10;
31
+ const recommendedVa = Math.ceil((recommendedWatts / powerFactor) / 50) * 50;
32
+ const loadRatio = totalWatts / Math.max(1, recommendedWatts);
33
+ let loadBand: UpsRuntimeResult['loadBand'] = 'heavy';
34
+ if (loadRatio < 0.45) {
35
+ loadBand = 'light';
36
+ } else if (loadRatio < 0.78) {
37
+ loadBand = 'balanced';
38
+ }
39
+
40
+ return {
41
+ totalWatts,
42
+ usableWh,
43
+ runtimeMinutes,
44
+ recommendedWatts,
45
+ recommendedVa,
46
+ loadBand,
47
+ };
48
+ }
@@ -0,0 +1,15 @@
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import { upsRuntimeCalculator } from './index';
4
+ import type { KnownLocale } from '../../types';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = 'en' } = Astro.props;
11
+ const content = await upsRuntimeCalculator.i18n[locale]?.();
12
+ if (!content) return null;
13
+ ---
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,31 @@
1
+ export interface UpsRuntimeCalculatorUI extends Record<string, string> {
2
+ loadTitle: string;
3
+ addDevice: string;
4
+ deviceName: string;
5
+ watts: string;
6
+ remove: string;
7
+ batteryWh: string;
8
+ efficiency: string;
9
+ powerFactor: string;
10
+ reserve: string;
11
+ totalLoad: string;
12
+ runtime: string;
13
+ recommendedUps: string;
14
+ usableEnergy: string;
15
+ minutes: string;
16
+ hours: string;
17
+ wattsUnit: string;
18
+ vaUnit: string;
19
+ whUnit: string;
20
+ percentUnit: string;
21
+ assumptionsLabel: string;
22
+ presetDesktop: string;
23
+ presetMonitor: string;
24
+ presetRouter: string;
25
+ presetNas: string;
26
+ percentUnit: string;
27
+ bandLight: string;
28
+ bandBalanced: string;
29
+ bandHeavy: string;
30
+ summaryPrefix: string;
31
+ }