@jjlmoya/utils-home 1.17.0 → 1.23.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 +1 -1
- package/src/category/i18n/de.ts +10 -10
- package/src/category/i18n/en.ts +8 -8
- package/src/category/i18n/es.ts +2 -2
- package/src/category/i18n/fr.ts +15 -15
- package/src/category/i18n/id.ts +8 -8
- package/src/category/i18n/it.ts +7 -7
- package/src/category/i18n/nl.ts +8 -8
- package/src/category/i18n/pl.ts +10 -10
- package/src/category/i18n/pt.ts +8 -8
- package/src/category/i18n/ru.ts +10 -10
- package/src/category/i18n/sv.ts +8 -8
- package/src/category/i18n/tr.ts +4 -4
- package/src/category/i18n/zh.ts +8 -8
- package/src/entries.ts +4 -1
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/no_en_dash.test.ts +70 -0
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tool/dewPointCalculator/bibliography.ts +2 -2
- package/src/tool/dewPointCalculator/i18n/de.ts +5 -5
- package/src/tool/dewPointCalculator/i18n/en.ts +6 -6
- package/src/tool/dewPointCalculator/i18n/es.ts +5 -5
- package/src/tool/dewPointCalculator/i18n/fr.ts +6 -6
- package/src/tool/dewPointCalculator/i18n/id.ts +5 -5
- package/src/tool/dewPointCalculator/i18n/it.ts +5 -5
- package/src/tool/dewPointCalculator/i18n/ja.ts +4 -4
- package/src/tool/dewPointCalculator/i18n/ko.ts +4 -4
- package/src/tool/dewPointCalculator/i18n/nl.ts +5 -5
- package/src/tool/dewPointCalculator/i18n/pl.ts +5 -5
- package/src/tool/dewPointCalculator/i18n/pt.ts +5 -5
- package/src/tool/dewPointCalculator/i18n/ru.ts +11 -11
- package/src/tool/dewPointCalculator/i18n/sv.ts +5 -5
- package/src/tool/dewPointCalculator/i18n/tr.ts +4 -4
- package/src/tool/dewPointCalculator/i18n/zh.ts +5 -5
- package/src/tool/heatingComparator/i18n/de.ts +8 -8
- package/src/tool/heatingComparator/i18n/en.ts +1 -1
- package/src/tool/heatingComparator/i18n/es.ts +1 -1
- package/src/tool/heatingComparator/i18n/fr.ts +7 -7
- package/src/tool/heatingComparator/i18n/id.ts +1 -1
- package/src/tool/heatingComparator/i18n/it.ts +1 -1
- package/src/tool/heatingComparator/i18n/nl.ts +1 -1
- package/src/tool/heatingComparator/i18n/pl.ts +1 -1
- package/src/tool/heatingComparator/i18n/pt.ts +1 -1
- package/src/tool/heatingComparator/i18n/ru.ts +12 -12
- package/src/tool/heatingComparator/i18n/sv.ts +4 -4
- package/src/tool/heatingComparator/i18n/zh.ts +6 -6
- package/src/tool/ledSavingCalculator/bibliography.ts +3 -3
- package/src/tool/ledSavingCalculator/i18n/de.ts +4 -4
- package/src/tool/ledSavingCalculator/i18n/en.ts +4 -4
- package/src/tool/ledSavingCalculator/i18n/es.ts +4 -4
- package/src/tool/ledSavingCalculator/i18n/fr.ts +8 -8
- package/src/tool/ledSavingCalculator/i18n/id.ts +3 -3
- package/src/tool/ledSavingCalculator/i18n/it.ts +4 -4
- package/src/tool/ledSavingCalculator/i18n/ja.ts +3 -3
- package/src/tool/ledSavingCalculator/i18n/ko.ts +2 -2
- package/src/tool/ledSavingCalculator/i18n/nl.ts +3 -3
- package/src/tool/ledSavingCalculator/i18n/pl.ts +3 -3
- package/src/tool/ledSavingCalculator/i18n/pt.ts +3 -3
- package/src/tool/ledSavingCalculator/i18n/ru.ts +6 -6
- package/src/tool/ledSavingCalculator/i18n/sv.ts +3 -3
- package/src/tool/ledSavingCalculator/i18n/tr.ts +3 -3
- package/src/tool/ledSavingCalculator/i18n/zh.ts +4 -4
- package/src/tool/projectorCalculator/bibliography.ts +3 -3
- package/src/tool/projectorCalculator/i18n/de.ts +2 -2
- package/src/tool/projectorCalculator/i18n/en.ts +1 -1
- package/src/tool/projectorCalculator/i18n/es.ts +2 -2
- package/src/tool/projectorCalculator/i18n/fr.ts +4 -4
- package/src/tool/projectorCalculator/i18n/id.ts +2 -2
- package/src/tool/projectorCalculator/i18n/it.ts +2 -2
- package/src/tool/projectorCalculator/i18n/ja.ts +2 -2
- package/src/tool/projectorCalculator/i18n/ko.ts +2 -2
- package/src/tool/projectorCalculator/i18n/nl.ts +2 -2
- package/src/tool/projectorCalculator/i18n/pl.ts +3 -3
- package/src/tool/projectorCalculator/i18n/pt.ts +2 -2
- package/src/tool/projectorCalculator/i18n/ru.ts +5 -5
- package/src/tool/projectorCalculator/i18n/sv.ts +2 -2
- package/src/tool/projectorCalculator/i18n/tr.ts +2 -2
- package/src/tool/projectorCalculator/i18n/zh.ts +4 -4
- package/src/tool/qrGenerator/bibliography.ts +1 -1
- package/src/tool/qrGenerator/i18n/en.ts +1 -1
- package/src/tool/qrGenerator/i18n/fr.ts +1 -1
- package/src/tool/solarCalculator/bibliography.ts +2 -2
- package/src/tool/solarCalculator/i18n/de.ts +2 -2
- package/src/tool/solarCalculator/i18n/en.ts +5 -5
- package/src/tool/solarCalculator/i18n/es.ts +3 -3
- package/src/tool/solarCalculator/i18n/fr.ts +6 -6
- package/src/tool/solarCalculator/i18n/id.ts +2 -2
- package/src/tool/solarCalculator/i18n/it.ts +2 -2
- package/src/tool/solarCalculator/i18n/ja.ts +2 -2
- package/src/tool/solarCalculator/i18n/ko.ts +2 -2
- package/src/tool/solarCalculator/i18n/nl.ts +2 -2
- package/src/tool/solarCalculator/i18n/pl.ts +3 -3
- package/src/tool/solarCalculator/i18n/pt.ts +2 -2
- package/src/tool/solarCalculator/i18n/ru.ts +5 -5
- package/src/tool/solarCalculator/i18n/sv.ts +2 -2
- package/src/tool/solarCalculator/i18n/tr.ts +2 -2
- package/src/tool/solarCalculator/i18n/zh.ts +3 -3
- package/src/tool/tariffComparator/bibliography.ts +1 -1
- package/src/tool/tariffComparator/i18n/en.ts +3 -3
- package/src/tool/tariffComparator/i18n/es.ts +3 -3
- package/src/tool/tariffComparator/i18n/fr.ts +6 -6
- package/src/tool/tariffComparator/i18n/pl.ts +1 -1
- package/src/tool/tariffComparator/i18n/zh.ts +1 -1
- package/src/tool/wifiRangeSimulator/bibliography.astro +14 -0
- package/src/tool/wifiRangeSimulator/bibliography.ts +14 -0
- package/src/tool/wifiRangeSimulator/component.astro +170 -0
- package/src/tool/wifiRangeSimulator/entry.ts +29 -0
- package/src/tool/wifiRangeSimulator/i18n/de.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/en.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/es.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/fr.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/id.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/it.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/ja.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/ko.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/nl.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/pl.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/pt.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/ru.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/sv.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/tr.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/zh.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n-utils.ts +14 -0
- package/src/tool/wifiRangeSimulator/index.ts +8 -0
- package/src/tool/wifiRangeSimulator/logic.ts +220 -0
- package/src/tool/wifiRangeSimulator/seo.astro +15 -0
- package/src/tool/wifiRangeSimulator/sketch-actions.ts +168 -0
- package/src/tool/wifiRangeSimulator/sketch-events.ts +138 -0
- package/src/tool/wifiRangeSimulator/sketch-render-dash.ts +170 -0
- package/src/tool/wifiRangeSimulator/sketch-render-device.ts +42 -0
- package/src/tool/wifiRangeSimulator/sketch-render.ts +155 -0
- package/src/tool/wifiRangeSimulator/sketch-state.ts +186 -0
- package/src/tool/wifiRangeSimulator/sketch.ts +100 -0
- package/src/tool/wifiRangeSimulator/ui.ts +69 -0
- package/src/tool/wifiRangeSimulator/wifi-range-simulator.css +583 -0
- package/src/tools.ts +2 -0
|
@@ -0,0 +1,477 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { WifiRangeSimulatorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'wifi-range-simulator';
|
|
7
|
+
const title = 'WiFi 信号范围与障碍物模拟器';
|
|
8
|
+
const description =
|
|
9
|
+
'勾勒您的家居布局,放置墙壁、门窗、家具和电器,然后拖动路由器和设备,找到最佳信号路径。实时查看信号覆盖损失、流媒体评估结果以及摆放建议,无需购买新硬件即可消除信号盲区。';
|
|
10
|
+
|
|
11
|
+
const faqData = [
|
|
12
|
+
{
|
|
13
|
+
question: '为什么我的 Wi-Fi 信号在某些房间会变弱?',
|
|
14
|
+
answer:
|
|
15
|
+
'Wi-Fi 使用无线电波,这些电波会被物理材料吸收、反射或阻挡。实心砖、混凝土和金属是最严重的障碍物,每种材料都会显著降低信号强度。水和玻璃也会反射或吸收部分信号。',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
question: '混凝土或石墙对 Wi-Fi 的影响有多大?',
|
|
19
|
+
answer:
|
|
20
|
+
'一堵标准混凝土墙可以将 2.4 GHz 信号衰减 10 到 20 分贝。70 到 80 厘米厚的石墙可达到 22 分贝或更高。根据厚度和密度的不同,这相当于大约 50% 到 90% 的范围损失。在 5 GHz 下,损失更大,因为较高频率会被致密材料更快地吸收。',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: '我应该把路由器放在哪里才能获得最佳覆盖?',
|
|
24
|
+
answer:
|
|
25
|
+
'居中、抬高、开阔。将路由器放在家中的中央位置,距离厚墙和金属物体至少一米,并抬高至胸部高度以便水平扩散。避免角落、壁橱和家具后面的低矮位置。',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: '玻璃门会阻挡 Wi-Fi 吗?',
|
|
29
|
+
answer:
|
|
30
|
+
'透明玻璃的影响很小,但带有金属膜的镀膜玻璃或双层玻璃窗可能会反射信号。模拟器将标准玻璃视为轻度障碍物,损失约为 2 到 3 分贝。',
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
const howToData = [
|
|
35
|
+
{
|
|
36
|
+
name: '识别信号路径',
|
|
37
|
+
text: '想象一下路由器和您关注的设备之间有一条直线。穿过这条线的每个物体都很重要。',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: '添加每个障碍物',
|
|
41
|
+
text: '单击模拟器中的材质按钮,添加穿过路径的每面墙壁、门、电器或家具。',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: '查看评估结果',
|
|
45
|
+
text: '当您添加或移除物体时,观察信号环、波动画和流媒体仪表板会立即更新。',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: '应用情境提示',
|
|
49
|
+
text: '根据您的具体障碍物组合出现的摆放建议卡,按照提示操作,无需购买新硬件即可改善覆盖范围。',
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
54
|
+
'@context': 'https://schema.org',
|
|
55
|
+
'@type': 'FAQPage',
|
|
56
|
+
mainEntity: faqData.map((item) => ({
|
|
57
|
+
'@type': 'Question',
|
|
58
|
+
name: item.question,
|
|
59
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
60
|
+
})),
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const howToSchema: WithContext<HowTo> = {
|
|
64
|
+
'@context': 'https://schema.org',
|
|
65
|
+
'@type': 'HowTo',
|
|
66
|
+
name: title,
|
|
67
|
+
description,
|
|
68
|
+
step: howToData.map((step) => ({
|
|
69
|
+
'@type': 'HowToStep',
|
|
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: 'zh',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export const content: ToolLocaleContent<WifiRangeSimulatorUI> = {
|
|
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: '为什么你的 Wi-Fi 在隔壁房间就没了信号',
|
|
98
|
+
level: 2,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
type: 'paragraph',
|
|
102
|
+
html: '你的路由器向各个方向发射无线电波。这些电波在空气中传播很容易,但遇到的每个物理物体都会造成损耗。有些材料能让大部分信号通过。另一些则会完全吞噬信号。了解家中哪些物品正在悄悄扼杀你的连接,是在不花一分钱购买新硬件的情况下修复盲区的第一步。',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'stats',
|
|
106
|
+
items: [
|
|
107
|
+
{ value: '3 dB', label: '石膏板损耗', icon: 'mdi:wall' },
|
|
108
|
+
{ value: '22 dB', label: '厚石墙', icon: 'mdi:wall' },
|
|
109
|
+
{ value: '18 dB', label: '金属门损耗', icon: 'mdi:door-closed-lock' },
|
|
110
|
+
],
|
|
111
|
+
columns: 3,
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: 'title',
|
|
115
|
+
text: '家中每件物品的真实代价',
|
|
116
|
+
level: 3,
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
type: 'paragraph',
|
|
120
|
+
html: '并非所有障碍物都同等。一块石膏板可能只削弱你百分之几的信号,但一根混凝土柱或一扇金属门可以让你的有效覆盖范围减半。这就是当你把路由器放在电视后面、冰箱旁边或金属架子下面的地板上时,真正面临的情况。',
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'comparative',
|
|
124
|
+
items: [
|
|
125
|
+
{
|
|
126
|
+
title: '轻度障碍物',
|
|
127
|
+
description: '这些物体造成的信号损失最小,通常靠近信号路径也是安全的。你不必担心一扇窗户或玻璃门。',
|
|
128
|
+
icon: 'mdi:window-open-variant',
|
|
129
|
+
points: [
|
|
130
|
+
'玻璃门:2 到 3 dB 损失',
|
|
131
|
+
'标准窗户:2 dB 损失',
|
|
132
|
+
'石膏板隔断:3 dB 损失',
|
|
133
|
+
'木制室内门:4 dB 损失',
|
|
134
|
+
],
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
title: '中度障碍物',
|
|
138
|
+
description: '这些物体会对你的覆盖范围造成明显影响。一两个没问题,但在同一信号路径上堆积三个或更多就会开始导致缓冲和延迟。',
|
|
139
|
+
icon: 'mdi:wardrobe',
|
|
140
|
+
points: [
|
|
141
|
+
'木制衣柜:5 dB 损失',
|
|
142
|
+
'大镜子:6 dB 损失',
|
|
143
|
+
'洗衣机:6 dB 损失',
|
|
144
|
+
'微波炉:5 dB 损失',
|
|
145
|
+
],
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
title: '重度障碍物',
|
|
149
|
+
description: '这些是家庭网络的无声杀手。一堵混凝土墙或一扇金属门就能把强信号变成弱信号,多个叠加就会产生必死盲区。',
|
|
150
|
+
icon: 'mdi:wall',
|
|
151
|
+
points: [
|
|
152
|
+
'实心砖墙:8 dB 损失',
|
|
153
|
+
'地板或天花板:10 dB 损失',
|
|
154
|
+
'冰箱:10 dB 损失',
|
|
155
|
+
'鱼缸:12 dB 损失',
|
|
156
|
+
],
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
title: '极端障碍物',
|
|
160
|
+
description: '这些材料几乎会吸收或反射所有无线电能量。如果你的信号路径穿过其中任何一个,你就需要移动路由器或设备。没有变通办法。',
|
|
161
|
+
icon: 'mdi:shield',
|
|
162
|
+
points: [
|
|
163
|
+
'厚石墙(70-80 厘米):22 dB 损失',
|
|
164
|
+
'混凝土墙:15 dB 损失',
|
|
165
|
+
'金属柜:12 dB 损失',
|
|
166
|
+
'金属门或栅门:18 dB 损失',
|
|
167
|
+
'电梯井:20+ dB 损失',
|
|
168
|
+
],
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
columns: 2,
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
type: 'title',
|
|
175
|
+
text: '不同频率穿过墙壁的表现',
|
|
176
|
+
level: 3,
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
type: 'paragraph',
|
|
180
|
+
html: '大多数现代路由器在两个频段上发射信号:2.4 GHz 和 5 GHz。较低的频率传播更远,更容易穿过墙壁,但速度较慢且拥挤。较高的频率速度极快,但会被路径上的每个障碍物吸收。',
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
type: 'comparative',
|
|
184
|
+
items: [
|
|
185
|
+
{
|
|
186
|
+
title: '2.4 GHz 穿透力',
|
|
187
|
+
description: '较低频率传播更远,穿透墙壁的能力更好。非常适合长距离,但会被邻居的网络拥挤。',
|
|
188
|
+
icon: 'mdi:signal',
|
|
189
|
+
points: [
|
|
190
|
+
'更能穿透实心砖和混凝土',
|
|
191
|
+
'受邻居路由器的干扰更多',
|
|
192
|
+
'最高速度较慢,实际约 150 Mbps',
|
|
193
|
+
'更适合智能家居设备和物联网',
|
|
194
|
+
],
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
title: '5 GHz 穿透力',
|
|
198
|
+
description: '较高频率提供更快的速度,但会被建筑材料更快地吸收。最适合开放空间和附近设备。',
|
|
199
|
+
icon: 'mdi:signal-5g',
|
|
200
|
+
points: [
|
|
201
|
+
'穿透混凝土和金属效果差',
|
|
202
|
+
'干扰更少,信道更干净',
|
|
203
|
+
'同房间内可达千兆速度',
|
|
204
|
+
'覆盖范围较差,但到达处质量更好',
|
|
205
|
+
],
|
|
206
|
+
},
|
|
207
|
+
],
|
|
208
|
+
columns: 2,
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
type: 'title',
|
|
212
|
+
text: '隐藏的杀手:你从未怀疑过的物品',
|
|
213
|
+
level: 3,
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
type: 'paragraph',
|
|
217
|
+
html: '大多数人归咎于墙壁,但一些最糟糕的 Wi-Fi 杀手是日常物品。鱼缸主要是水,而水几乎能完美吸收 2.4 GHz 无线电波。大镜子背面有一层薄金属层,会把信号从你的设备反射开。微波炉在 2.4 GHz 频率上辐射,与你的路由器完全相同,每次加热食物时都会造成干扰。',
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
type: 'diagnostic',
|
|
221
|
+
variant: 'warning',
|
|
222
|
+
title: '鱼缸陷阱',
|
|
223
|
+
icon: 'mdi:fish',
|
|
224
|
+
badge: '意外阻挡物',
|
|
225
|
+
html: '<p>一个大鱼缸可以衰减你的 Wi-Fi 信号多达 12 分贝。这相当于一堵厚混凝土墙。如果你的路由器在鱼缸的一侧,而你的书桌在另一侧,水造成的损害比后面的墙还要大。</p>',
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
type: 'diagnostic',
|
|
229
|
+
variant: 'warning',
|
|
230
|
+
title: '镜子效应',
|
|
231
|
+
icon: 'mdi:mirror',
|
|
232
|
+
badge: '反射危险',
|
|
233
|
+
html: '<p>大镜子背面有一层薄金属层,用来反射光线。这层金属也会反射无线电波。一面朝向路由器的镜子可以把信号反射到你需要的地方之外,或者造成混乱的多路径干扰,破坏数据包。</p>',
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
type: 'diagnostic',
|
|
237
|
+
variant: 'warning',
|
|
238
|
+
title: '微波炉干扰',
|
|
239
|
+
icon: 'mdi:microwave',
|
|
240
|
+
badge: '主动干扰源',
|
|
241
|
+
html: '<p>微波炉在 2.45 GHz 频率运行,与 2.4 GHz Wi-Fi 频段直接重叠。运行时,微波炉可以在 3 到 5 米半径内摧毁 2.4 GHz 信号。如果你的路由器只支持 2.4 GHz,而厨房就在附近,请换用双频路由器,并在关键任务中使用 5 GHz。</p>',
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
type: 'title',
|
|
245
|
+
text: '逐个房间:路由器应该放在哪里',
|
|
246
|
+
level: 3,
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
type: 'paragraph',
|
|
250
|
+
html: '理想的路由器位置不是最方便的位置。而是为你真正使用互联网的房间提供最清晰视线路径的位置。以下是每个房间的思考方式。',
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
type: 'table',
|
|
254
|
+
headers: ['房间', '风险等级', '为什么困难', '解决方案'],
|
|
255
|
+
rows: [
|
|
256
|
+
['厨房', '高', '冰箱、微波炉、金属橱柜、水管', '把路由器放在厨房外面,绝对不要放在里面。'],
|
|
257
|
+
['浴室', '高', '镜子、水管、带金属网的瓷砖', '避免将路由器放在浴室墙壁的另一侧。'],
|
|
258
|
+
['卧室', '中', '衣柜、厚墙、金属床架', '抬高路由器,清理家具上方的路径。'],
|
|
259
|
+
['客厅', '低', '通常开阔,但注意电视和游戏机', '让路由器保持可见,不要藏在电视后面。'],
|
|
260
|
+
['车库', '极高', '金属门、混凝土、汽车', '不要指望室内路由器能覆盖车库。'],
|
|
261
|
+
['花园/露台', '高', '外墙、玻璃、距离', '使用室外接入点或网状网络节点。'],
|
|
262
|
+
],
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
type: 'title',
|
|
266
|
+
text: '一米规则和其他摆放技巧',
|
|
267
|
+
level: 3,
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
type: 'paragraph',
|
|
271
|
+
html: '小小的移动就能带来巨大的改变。你不需要重新布线。你只需要了解无线电波如何传播,并给它们一条畅通的路径。',
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
type: 'tip',
|
|
275
|
+
title: '一米规则',
|
|
276
|
+
html: '<p>将路由器从混凝土或金属屏障移开仅一米,即可恢复高达 40% 的丢失信号强度。</p>',
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
type: 'tip',
|
|
280
|
+
title: '抬高以增加覆盖',
|
|
281
|
+
html: '<p>将路由器放在架子上,抬高到胸部高度。信号从天线水平辐射。把它放在地板上会把一半的覆盖浪费在地面。</p>',
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
type: 'tip',
|
|
285
|
+
title: '保持可见',
|
|
286
|
+
html: '<p>切勿将路由器藏在柜子、壁橱里或电视后面。封闭空间就像法拉第笼一样,在信号到达你的房间之前就将其困住。</p>',
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
type: 'tip',
|
|
290
|
+
title: '天线定位',
|
|
291
|
+
html: '<p>如果你的路由器有外置天线,请将一根垂直放置,另一根水平放置。这可以为不同高度的设备提供更好的覆盖。</p>',
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
type: 'tip',
|
|
295
|
+
title: '避免干扰',
|
|
296
|
+
html: '<p>让路由器距离微波炉、无绳电话和婴儿监视器至少 1.5 米。这些设备共享 2.4 GHz 频段,会造成主动干扰。</p>',
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
type: 'tip',
|
|
300
|
+
title: '中间楼层优势',
|
|
301
|
+
html: '<p>如果你住在多层住宅中,请把路由器放在中间楼层。信号通过混凝土地板向上和向下传播效果不佳。</p>',
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
type: 'title',
|
|
305
|
+
text: '流媒体评估结果:你的信号实际意味着什么',
|
|
306
|
+
level: 3,
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
type: 'paragraph',
|
|
310
|
+
html: '百分比是抽象的。你真正关心的是能否观看 Netflix、赢得比赛或完成视频通话而不卡顿。以下是每个信号级别在现实世界中的含义。',
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
type: 'table',
|
|
314
|
+
headers: ['信号', '4K 流媒体', '在线游戏', '视频通话', '浏览网页'],
|
|
315
|
+
rows: [
|
|
316
|
+
['80% 到 100%', '完美,即时加载', '低延迟,竞技游戏', '清晰无掉线', '即时,无延迟'],
|
|
317
|
+
['60% 到 79%', '良好,偶尔缓冲', '可玩,轻微延迟', '稳定,极少像素化', '快速,无问题'],
|
|
318
|
+
['40% 到 59%', '每几分钟缓冲一次', '延迟警告,橡皮筋效应', '像素化,部分掉线', '可用,加载较慢'],
|
|
319
|
+
['20% 到 39%', '不可能,持续卡顿', '断开连接,无法游戏', '频繁掉线,无法使用', '非常慢,超时'],
|
|
320
|
+
['0% 到 19%', '无法启动', '无法连接', '无连接', '无法使用'],
|
|
321
|
+
],
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
type: 'title',
|
|
325
|
+
text: '购买任何东西之前的快速修复',
|
|
326
|
+
level: 3,
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
type: 'summary',
|
|
330
|
+
title: '免费优化检查清单',
|
|
331
|
+
items: [
|
|
332
|
+
'将路由器移到家的中央,而不是角落。',
|
|
333
|
+
'放在架子或高大家具上,抬高到胸部高度。',
|
|
334
|
+
'从柜子、壁橱和电视后面拿出来。',
|
|
335
|
+
'如果可能,将一根天线垂直放置,另一根水平放置。',
|
|
336
|
+
'近距离设备使用 5 GHz,远距离设备使用 2.4 GHz。',
|
|
337
|
+
'使用扫描仪应用切换到不那么拥挤的 Wi-Fi 信道。',
|
|
338
|
+
'更新路由器固件,修复已知的信号问题。',
|
|
339
|
+
'每月重启一次路由器,清除内存泄漏。',
|
|
340
|
+
],
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
type: 'title',
|
|
344
|
+
text: '何时升级硬件',
|
|
345
|
+
level: 3,
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
type: 'paragraph',
|
|
349
|
+
html: '有时环境会胜出。如果你尝试了所有摆放技巧,但仍然受到盲区困扰,那么是时候扩展网络而不是与物理定律抗争了。',
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
type: 'proscons',
|
|
353
|
+
title: 'WiFi 扩展器 vs 网状网络系统',
|
|
354
|
+
items: [
|
|
355
|
+
{ pro: '扩展器价格便宜,安装简单。', con: '扩展器会创建第二个网络名称,速度减半。' },
|
|
356
|
+
{ pro: '扩展器适用于单个盲区。', con: '扩展器需要强大的现有信号才能增强。' },
|
|
357
|
+
{ pro: '网状网络系统创建一个无缝网络。', con: '网状网络系统前期成本更高。' },
|
|
358
|
+
{ pro: '网状网络适用于多层和大户型住宅。', con: '网状网络需要在调制解调器附近有一个主节点。' },
|
|
359
|
+
],
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
type: 'tip',
|
|
363
|
+
title: '何时使用网状网络',
|
|
364
|
+
html: '<p>对于超过 120 平方米或带有厚混凝土墙的住宅,至少有两个节点的网状网络系统将胜过任何单个路由器,无论它有多贵。</p>',
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
type: 'title',
|
|
368
|
+
text: '通俗理解分贝',
|
|
369
|
+
level: 3,
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
type: 'paragraph',
|
|
373
|
+
html: '分贝是对数单位,意味着它们不像普通数字那样运作。每 3 dB 的损失就会使信号功率减半。6 dB 的损失意味着只有原始功率的四分之一剩余。10 dB 的损失意味着只有十分之一幸存。这就是为什么 15 dB 的混凝土墙是毁灭性的。它不仅削弱信号。它直接摧毁信号。',
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
type: 'glossary',
|
|
377
|
+
items: [
|
|
378
|
+
{ term: '衰减', definition: '信号通过材料时强度逐渐损失。数字越高意味着损失信号越多。' },
|
|
379
|
+
{ term: 'dBm', definition: '用于测量 Wi-Fi 信号强度的功率单位。0 dBm 等于一毫瓦。负值是正常的,-30 表示优秀,-80 表示几乎无法使用。' },
|
|
380
|
+
{ term: '盲区', definition: 'Wi-Fi 信号太弱而无法建立或维持可靠连接的区域。' },
|
|
381
|
+
{ term: '网状网络', definition: '多个路由器节点协同工作,用一个无缝的 Wi-Fi 网络覆盖大面积的系统。' },
|
|
382
|
+
{ term: '多路径干扰', definition: '无线电波从墙壁和物体反射,产生同一信号的多个延迟副本,使接收器混淆。' },
|
|
383
|
+
{ term: 'SSID', definition: '你的 Wi-Fi 网络名称。扩展器通常会创建第二个 SSID,而网状网络在所有节点上保持一个名称。' },
|
|
384
|
+
],
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
type: 'diagnostic',
|
|
388
|
+
variant: 'warning',
|
|
389
|
+
title: '路由器摆放的黄金法则',
|
|
390
|
+
icon: 'mdi:map-marker-radius',
|
|
391
|
+
badge: '关键提示',
|
|
392
|
+
html: '<p>如果你的路由器目前在角落、柜子里或地板上,在信号离开房间之前,你就已经浪费了其潜在范围的 50% 到 70%。你能做的最快的升级就是把它移到一个开阔、居中、较高的位置。这一项改变常常比购买新设备解决更多问题。</p>',
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
type: 'summary',
|
|
396
|
+
title: '如何预防 WiFi 盲区',
|
|
397
|
+
items: [
|
|
398
|
+
'将路由器居中、抬高并放在开阔位置。',
|
|
399
|
+
'尽量减少路由器和设备之间的墙壁数量。',
|
|
400
|
+
'避免将路由器放在厨房、浴室和车库。',
|
|
401
|
+
'同一房间内使用 5 GHz 获取速度,远距离使用 2.4 GHz。',
|
|
402
|
+
'大户型或厚外墙住宅考虑使用网状网络。',
|
|
403
|
+
'每月重启并更新固件以保持最佳性能。',
|
|
404
|
+
],
|
|
405
|
+
},
|
|
406
|
+
],
|
|
407
|
+
ui: {
|
|
408
|
+
labelObstacles: '阻挡 Wi-Fi 的家居物品',
|
|
409
|
+
labelAddObstacle: '点击添加到信号路径',
|
|
410
|
+
labelRemove: '移除',
|
|
411
|
+
labelSignalStrength: '信号',
|
|
412
|
+
labelEffectiveRange: '有效范围',
|
|
413
|
+
labelMeters: '米',
|
|
414
|
+
labelPercent: '%',
|
|
415
|
+
labelStreamingVerdict: '流媒体评估',
|
|
416
|
+
verdictPerfect: '完美',
|
|
417
|
+
verdictGood: '良好',
|
|
418
|
+
verdictFair: '一般',
|
|
419
|
+
verdictPoor: '差',
|
|
420
|
+
verdictDead: '盲区',
|
|
421
|
+
tipTitle: '摆放建议',
|
|
422
|
+
label4kStreaming: '4K 流媒体',
|
|
423
|
+
labelOnlineGaming: '在线游戏',
|
|
424
|
+
labelVideoCalls: '视频通话',
|
|
425
|
+
labelBasicBrowsing: '基本浏览',
|
|
426
|
+
statusPerfect: '完美',
|
|
427
|
+
statusGood: '良好',
|
|
428
|
+
statusFair: '一般',
|
|
429
|
+
statusPoor: '差',
|
|
430
|
+
statusImpossible: '不可能',
|
|
431
|
+
statusLowLatency: '低延迟',
|
|
432
|
+
statusLagWarning: '延迟警告',
|
|
433
|
+
statusDisconnect: '断开',
|
|
434
|
+
statusStable: '稳定',
|
|
435
|
+
statusPixelated: '像素化',
|
|
436
|
+
statusDropped: '掉线',
|
|
437
|
+
statusPass: '合格',
|
|
438
|
+
statusUnusable: '无法使用',
|
|
439
|
+
tipMoveRouter: '将路由器从那个固体屏障移开仅 1 米,信号最多可提升 40%。',
|
|
440
|
+
tipElevateRouter: '将路由器抬高到胸部高度。信号水平扩散,地板吸收的比你想象的更多。',
|
|
441
|
+
tipReduceObstacles: '每增加一堵墙,信号就减半。尽量减少路由器和设备之间的障碍物数量。',
|
|
442
|
+
|
|
443
|
+
tipFishTank: '鱼缸像混凝土墙一样阻挡 Wi-Fi。将路由器或设备移开。',
|
|
444
|
+
tipMicrowave: '微波炉运行时干扰 2.4 GHz 频段。使用 5 GHz 或将路由器移离厨房。',
|
|
445
|
+
labelMove: '移动',
|
|
446
|
+
labelWalls: '墙壁',
|
|
447
|
+
labelDrywall: '石膏板',
|
|
448
|
+
labelBrick: '砖墙',
|
|
449
|
+
labelConcrete: '混凝土',
|
|
450
|
+
labelStone: '石墙',
|
|
451
|
+
labelObjects: '物体',
|
|
452
|
+
labelWood: '木材',
|
|
453
|
+
labelMetal: '金属',
|
|
454
|
+
labelWindow: '窗户',
|
|
455
|
+
labelFridge: '冰箱',
|
|
456
|
+
labelFish: '鱼',
|
|
457
|
+
labelMicro: '微波',
|
|
458
|
+
labelMirror: '镜子',
|
|
459
|
+
labelFurn: '家具',
|
|
460
|
+
labelActions: '操作',
|
|
461
|
+
labelUndo: '撤销',
|
|
462
|
+
labelAddDevice: '+ 设备',
|
|
463
|
+
labelClearWalls: '清除墙壁',
|
|
464
|
+
labelClearObjects: '清除物体',
|
|
465
|
+
labelClearAll: '全部清除',
|
|
466
|
+
labelZoomIn: '放大',
|
|
467
|
+
labelZoomOut: '缩小',
|
|
468
|
+
labelRouter: '路由器',
|
|
469
|
+
labelAverageSignal: '平均信号',
|
|
470
|
+
labelScaleMeters: '5 米',
|
|
471
|
+
hintText: '拖动路由器或设备来移动它们。双击墙壁或物体删除。Ctrl+Z 撤销。',
|
|
472
|
+
labelMaxDevices: '最多 4 台设备',
|
|
473
|
+
labelDevicePrefix: '设备',
|
|
474
|
+
labelPerDevice: '每台设备',
|
|
475
|
+
labelDb: 'dB',
|
|
476
|
+
},
|
|
477
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { WifiRangeSimulatorUI } from './ui';
|
|
2
|
+
|
|
3
|
+
let _ui: WifiRangeSimulatorUI | null = null;
|
|
4
|
+
|
|
5
|
+
export function getUI(): WifiRangeSimulatorUI {
|
|
6
|
+
if (_ui) return _ui;
|
|
7
|
+
const w = window as unknown as { __wifiUI?: WifiRangeSimulatorUI };
|
|
8
|
+
if (w.__wifiUI) {
|
|
9
|
+
_ui = w.__wifiUI;
|
|
10
|
+
} else {
|
|
11
|
+
_ui = {} as WifiRangeSimulatorUI;
|
|
12
|
+
}
|
|
13
|
+
return _ui;
|
|
14
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { wifiRangeSimulator } from './entry';
|
|
2
|
+
export * from './entry';
|
|
3
|
+
export const WIFI_RANGE_SIMULATOR_TOOL = {
|
|
4
|
+
entry: wifiRangeSimulator,
|
|
5
|
+
Component: () => import('./component.astro'),
|
|
6
|
+
SEOComponent: () => import('./seo.astro'),
|
|
7
|
+
BibliographyComponent: () => import('./bibliography.astro'),
|
|
8
|
+
};
|