homebridge-multiple-switch 1.3.1 → 1.3.3
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/CHANGELOG.md +19 -0
- package/config.schema.json +1 -0
- package/homebridge-ui/public/i18n/ar.json +29 -0
- package/homebridge-ui/public/i18n/de.json +29 -0
- package/homebridge-ui/public/i18n/en.json +29 -0
- package/homebridge-ui/public/i18n/es.json +29 -0
- package/homebridge-ui/public/i18n/fr.json +29 -0
- package/homebridge-ui/public/i18n/it.json +29 -0
- package/homebridge-ui/public/i18n/ja.json +29 -0
- package/homebridge-ui/public/i18n/ko.json +29 -0
- package/homebridge-ui/public/i18n/nl.json +29 -0
- package/homebridge-ui/public/i18n/pl.json +29 -0
- package/homebridge-ui/public/i18n/pt.json +29 -0
- package/homebridge-ui/public/i18n/ru.json +29 -0
- package/homebridge-ui/public/i18n/tr.json +29 -0
- package/homebridge-ui/public/i18n/zh-CN.json +29 -0
- package/homebridge-ui/public/index.html +219 -0
- package/package.json +1 -1
- package/i18n/ar.json +0 -46
- package/i18n/de.json +0 -46
- package/i18n/en.json +0 -46
- package/i18n/es.json +0 -46
- package/i18n/fr.json +0 -46
- package/i18n/it.json +0 -46
- package/i18n/ja.json +0 -46
- package/i18n/ko.json +0 -46
- package/i18n/nl.json +0 -46
- package/i18n/pl.json +0 -46
- package/i18n/pt.json +0 -46
- package/i18n/ru.json +0 -46
- package/i18n/tr.json +0 -46
- package/i18n/zh-CN.json +0 -46
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
<style>
|
|
2
|
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
3
|
+
body {
|
|
4
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
5
|
+
color: var(--bs-body-color, inherit);
|
|
6
|
+
}
|
|
7
|
+
.form-group { margin-bottom: 16px; }
|
|
8
|
+
label {
|
|
9
|
+
display: block; font-weight: 600; margin-bottom: 4px; font-size: 14px;
|
|
10
|
+
color: var(--bs-body-color, inherit);
|
|
11
|
+
}
|
|
12
|
+
.desc {
|
|
13
|
+
color: var(--bs-secondary-color, #888);
|
|
14
|
+
font-size: 12px; margin-bottom: 6px;
|
|
15
|
+
}
|
|
16
|
+
input[type="text"], input[type="number"], select {
|
|
17
|
+
width: 100%; padding: 8px 10px;
|
|
18
|
+
border: 1px solid var(--bs-border-color, #444);
|
|
19
|
+
border-radius: 6px; font-size: 14px;
|
|
20
|
+
background: var(--bs-body-bg, transparent);
|
|
21
|
+
color: var(--bs-body-color, inherit);
|
|
22
|
+
transition: border-color 0.2s;
|
|
23
|
+
}
|
|
24
|
+
input:focus, select:focus {
|
|
25
|
+
border-color: var(--bs-primary, #007bff);
|
|
26
|
+
outline: none;
|
|
27
|
+
}
|
|
28
|
+
.switch-card {
|
|
29
|
+
border: 1px solid var(--bs-border-color, #444);
|
|
30
|
+
border-radius: 8px; padding: 16px; margin-bottom: 12px;
|
|
31
|
+
background: var(--bs-tertiary-bg, rgba(128,128,128,0.08));
|
|
32
|
+
position: relative;
|
|
33
|
+
}
|
|
34
|
+
.switch-card .switch-header {
|
|
35
|
+
display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px;
|
|
36
|
+
}
|
|
37
|
+
.switch-card .switch-header strong {
|
|
38
|
+
font-size: 14px;
|
|
39
|
+
color: var(--bs-body-color, inherit);
|
|
40
|
+
}
|
|
41
|
+
.btn {
|
|
42
|
+
padding: 8px 16px; border: none; border-radius: 6px;
|
|
43
|
+
cursor: pointer; font-size: 13px; font-weight: 600;
|
|
44
|
+
}
|
|
45
|
+
.btn-danger { background: #dc3545; color: #fff; }
|
|
46
|
+
.btn-danger:hover { background: #c82333; }
|
|
47
|
+
.btn-primary { background: var(--bs-primary, #007bff); color: #fff; }
|
|
48
|
+
.btn-primary:hover { opacity: 0.85; }
|
|
49
|
+
.actions { margin-top: 16px; display: flex; gap: 10px; }
|
|
50
|
+
.toggle-wrap { display: flex; align-items: center; gap: 8px; }
|
|
51
|
+
.toggle-wrap input[type="checkbox"] { width: 18px; height: 18px; accent-color: var(--bs-primary, #007bff); }
|
|
52
|
+
.toggle-wrap span { color: var(--bs-body-color, inherit); }
|
|
53
|
+
.section-title {
|
|
54
|
+
font-size: 15px; font-weight: 700; margin-bottom: 10px;
|
|
55
|
+
padding-bottom: 6px; border-bottom: 1px solid var(--bs-border-color, #444);
|
|
56
|
+
color: var(--bs-body-color, inherit);
|
|
57
|
+
}
|
|
58
|
+
.inline-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
|
|
59
|
+
select option {
|
|
60
|
+
background: var(--bs-body-bg, #fff);
|
|
61
|
+
color: var(--bs-body-color, #000);
|
|
62
|
+
}
|
|
63
|
+
</style>
|
|
64
|
+
|
|
65
|
+
<div id="app"></div>
|
|
66
|
+
|
|
67
|
+
<script>
|
|
68
|
+
(async () => {
|
|
69
|
+
let t = {};
|
|
70
|
+
|
|
71
|
+
async function loadTranslations() {
|
|
72
|
+
let lang = 'en';
|
|
73
|
+
try { lang = await homebridge.i18nCurrentLang(); } catch {}
|
|
74
|
+
const tryLangs = [lang, lang.split('-')[0], 'en'];
|
|
75
|
+
for (const l of tryLangs) {
|
|
76
|
+
try {
|
|
77
|
+
const res = await fetch(`./i18n/${l}.json`);
|
|
78
|
+
if (res.ok) { t = await res.json(); return; }
|
|
79
|
+
} catch {}
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
const res = await fetch('./i18n/en.json');
|
|
83
|
+
t = await res.json();
|
|
84
|
+
} catch {}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
await loadTranslations();
|
|
88
|
+
|
|
89
|
+
let config = {};
|
|
90
|
+
try {
|
|
91
|
+
const configs = await homebridge.getPluginConfig();
|
|
92
|
+
config = configs[0] || {};
|
|
93
|
+
} catch {}
|
|
94
|
+
|
|
95
|
+
const app = document.getElementById('app');
|
|
96
|
+
|
|
97
|
+
function render() {
|
|
98
|
+
const switches = config.switches || [];
|
|
99
|
+
app.innerHTML = `
|
|
100
|
+
<div class="form-group">
|
|
101
|
+
<label>${t.platformName || 'Platform Name'}</label>
|
|
102
|
+
<div class="desc">${t.platformNameDesc || ''}</div>
|
|
103
|
+
<input type="text" id="cfg-name" value="${esc(config.name || 'Multiple Switch Platform')}">
|
|
104
|
+
</div>
|
|
105
|
+
|
|
106
|
+
<div class="form-group">
|
|
107
|
+
<label>${t.switchBehavior || 'Switch Behavior Mode'}</label>
|
|
108
|
+
<div class="desc">${t.switchBehaviorDesc || ''}</div>
|
|
109
|
+
<select id="cfg-behavior">
|
|
110
|
+
<option value="independent" ${config.switchBehavior === 'independent' || !config.switchBehavior ? 'selected' : ''}>${t.behaviorIndependent || 'Independent'}</option>
|
|
111
|
+
<option value="master" ${config.switchBehavior === 'master' ? 'selected' : ''}>${t.behaviorMaster || 'Master'}</option>
|
|
112
|
+
<option value="single" ${config.switchBehavior === 'single' ? 'selected' : ''}>${t.behaviorSingle || 'Single'}</option>
|
|
113
|
+
</select>
|
|
114
|
+
</div>
|
|
115
|
+
|
|
116
|
+
<div class="section-title">${t.switches || 'Switches'}</div>
|
|
117
|
+
<div class="desc" style="margin-bottom:12px">${t.switchesDesc || ''}</div>
|
|
118
|
+
|
|
119
|
+
<div id="switches-list">
|
|
120
|
+
${switches.map((sw, i) => renderSwitch(sw, i)).join('')}
|
|
121
|
+
</div>
|
|
122
|
+
|
|
123
|
+
<div class="actions">
|
|
124
|
+
<button class="btn btn-primary" id="btn-add">+ ${t.addSwitch || 'Add Switch'}</button>
|
|
125
|
+
</div>
|
|
126
|
+
`;
|
|
127
|
+
|
|
128
|
+
document.getElementById('cfg-name').addEventListener('change', (e) => {
|
|
129
|
+
config.name = e.target.value;
|
|
130
|
+
save();
|
|
131
|
+
});
|
|
132
|
+
document.getElementById('cfg-behavior').addEventListener('change', (e) => {
|
|
133
|
+
config.switchBehavior = e.target.value;
|
|
134
|
+
save();
|
|
135
|
+
});
|
|
136
|
+
document.getElementById('btn-add').addEventListener('click', () => {
|
|
137
|
+
if (!config.switches) config.switches = [];
|
|
138
|
+
config.switches.push({ name: '', type: 'outlet', defaultState: false, delayOff: 0 });
|
|
139
|
+
render();
|
|
140
|
+
save();
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
document.querySelectorAll('.btn-remove').forEach(btn => {
|
|
144
|
+
btn.addEventListener('click', () => {
|
|
145
|
+
const idx = parseInt(btn.dataset.idx);
|
|
146
|
+
config.switches.splice(idx, 1);
|
|
147
|
+
render();
|
|
148
|
+
save();
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
document.querySelectorAll('.sw-field').forEach(input => {
|
|
153
|
+
input.addEventListener('change', () => {
|
|
154
|
+
const idx = parseInt(input.dataset.idx);
|
|
155
|
+
const field = input.dataset.field;
|
|
156
|
+
if (field === 'defaultState') {
|
|
157
|
+
config.switches[idx][field] = input.checked;
|
|
158
|
+
} else if (field === 'delayOff') {
|
|
159
|
+
config.switches[idx][field] = parseInt(input.value) || 0;
|
|
160
|
+
} else {
|
|
161
|
+
config.switches[idx][field] = input.value;
|
|
162
|
+
}
|
|
163
|
+
save();
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
function renderSwitch(sw, i) {
|
|
169
|
+
return `
|
|
170
|
+
<div class="switch-card">
|
|
171
|
+
<div class="switch-header">
|
|
172
|
+
<strong>#${i + 1}</strong>
|
|
173
|
+
<button class="btn btn-danger btn-remove" data-idx="${i}">${t.removeSwitch || 'Remove'}</button>
|
|
174
|
+
</div>
|
|
175
|
+
<div class="inline-row">
|
|
176
|
+
<div class="form-group">
|
|
177
|
+
<label>${t.switchName || 'Switch Name'}</label>
|
|
178
|
+
<input type="text" class="sw-field" data-idx="${i}" data-field="name" value="${esc(sw.name || '')}">
|
|
179
|
+
</div>
|
|
180
|
+
<div class="form-group">
|
|
181
|
+
<label>${t.switchType || 'Switch Type'}</label>
|
|
182
|
+
<select class="sw-field" data-idx="${i}" data-field="type">
|
|
183
|
+
<option value="switch" ${sw.type === 'switch' ? 'selected' : ''}>${t.typeSwitch || 'Switch'}</option>
|
|
184
|
+
<option value="outlet" ${sw.type === 'outlet' || !sw.type ? 'selected' : ''}>${t.typeOutlet || 'Outlet'}</option>
|
|
185
|
+
<option value="lightbulb" ${sw.type === 'lightbulb' ? 'selected' : ''}>${t.typeLightbulb || 'Lightbulb'}</option>
|
|
186
|
+
<option value="fan" ${sw.type === 'fan' ? 'selected' : ''}>${t.typeFan || 'Fan'}</option>
|
|
187
|
+
</select>
|
|
188
|
+
</div>
|
|
189
|
+
</div>
|
|
190
|
+
<div class="inline-row">
|
|
191
|
+
<div class="form-group">
|
|
192
|
+
<label>${t.delayOff || 'Auto Turn Off (ms)'}</label>
|
|
193
|
+
<input type="number" class="sw-field" data-idx="${i}" data-field="delayOff" min="0" value="${sw.delayOff || 0}">
|
|
194
|
+
</div>
|
|
195
|
+
<div class="form-group">
|
|
196
|
+
<label>${t.defaultState || 'Default State'}</label>
|
|
197
|
+
<div class="toggle-wrap" style="margin-top:6px">
|
|
198
|
+
<input type="checkbox" class="sw-field" data-idx="${i}" data-field="defaultState" ${sw.defaultState ? 'checked' : ''}>
|
|
199
|
+
<span>${sw.defaultState ? (t.on || 'On') : (t.off || 'Off')}</span>
|
|
200
|
+
</div>
|
|
201
|
+
</div>
|
|
202
|
+
</div>
|
|
203
|
+
</div>
|
|
204
|
+
`;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
function esc(str) {
|
|
208
|
+
const d = document.createElement('div');
|
|
209
|
+
d.textContent = str;
|
|
210
|
+
return d.innerHTML.replace(/"/g, '"');
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
async function save() {
|
|
214
|
+
await homebridge.updatePluginConfig([config]);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
render();
|
|
218
|
+
})();
|
|
219
|
+
</script>
|
package/package.json
CHANGED
package/i18n/ar.json
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"headerDisplay": "منصة المفاتيح المتعددة",
|
|
3
|
-
"schema": {
|
|
4
|
-
"name": {
|
|
5
|
-
"title": "اسم المنصة",
|
|
6
|
-
"description": "اسم هذا المثيل من المنصة في HomeKit."
|
|
7
|
-
},
|
|
8
|
-
"switchBehavior": {
|
|
9
|
-
"title": "وضع سلوك المفتاح",
|
|
10
|
-
"description": "يتحكم في كيفية تفاعل المفاتيح مع بعضها البعض.",
|
|
11
|
-
"oneOf": [
|
|
12
|
-
{ "title": "مستقل" },
|
|
13
|
-
{ "title": "رئيسي" },
|
|
14
|
-
{ "title": "فردي" }
|
|
15
|
-
]
|
|
16
|
-
},
|
|
17
|
-
"switches": {
|
|
18
|
-
"title": "المفاتيح",
|
|
19
|
-
"description": "قائمة المفاتيح الافتراضية المراد إنشاؤها.",
|
|
20
|
-
"items": {
|
|
21
|
-
"name": {
|
|
22
|
-
"title": "اسم المفتاح",
|
|
23
|
-
"description": "اسم العرض للمفتاح في HomeKit."
|
|
24
|
-
},
|
|
25
|
-
"type": {
|
|
26
|
-
"title": "نوع المفتاح",
|
|
27
|
-
"description": "نوع ملحق HomeKit لهذا المفتاح.",
|
|
28
|
-
"oneOf": [
|
|
29
|
-
{ "title": "مفتاح" },
|
|
30
|
-
{ "title": "مقبس" },
|
|
31
|
-
{ "title": "مصباح" },
|
|
32
|
-
{ "title": "مروحة" }
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
"defaultState": {
|
|
36
|
-
"title": "الحالة الافتراضية",
|
|
37
|
-
"description": "حالة الطاقة الأولية عند بدء تشغيل Homebridge."
|
|
38
|
-
},
|
|
39
|
-
"delayOff": {
|
|
40
|
-
"title": "إيقاف تلقائي (مللي ثانية)",
|
|
41
|
-
"description": "يتم الإيقاف تلقائيًا بعد هذا العدد من المللي ثانية. اضبط على 0 للتعطيل."
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
package/i18n/de.json
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"headerDisplay": "Mehrfachschalter-Plattform",
|
|
3
|
-
"schema": {
|
|
4
|
-
"name": {
|
|
5
|
-
"title": "Plattformname",
|
|
6
|
-
"description": "Der Name dieser Plattforminstanz in HomeKit."
|
|
7
|
-
},
|
|
8
|
-
"switchBehavior": {
|
|
9
|
-
"title": "Schaltverhalten",
|
|
10
|
-
"description": "Steuert, wie die Schalter miteinander interagieren.",
|
|
11
|
-
"oneOf": [
|
|
12
|
-
{ "title": "Unabhängig" },
|
|
13
|
-
{ "title": "Master" },
|
|
14
|
-
{ "title": "Einzeln" }
|
|
15
|
-
]
|
|
16
|
-
},
|
|
17
|
-
"switches": {
|
|
18
|
-
"title": "Schalter",
|
|
19
|
-
"description": "Liste der zu erstellenden virtuellen Schalter.",
|
|
20
|
-
"items": {
|
|
21
|
-
"name": {
|
|
22
|
-
"title": "Schaltername",
|
|
23
|
-
"description": "Anzeigename des Schalters in HomeKit."
|
|
24
|
-
},
|
|
25
|
-
"type": {
|
|
26
|
-
"title": "Schaltertyp",
|
|
27
|
-
"description": "Der HomeKit-Zubehörtyp für diesen Schalter.",
|
|
28
|
-
"oneOf": [
|
|
29
|
-
{ "title": "Schalter" },
|
|
30
|
-
{ "title": "Steckdose" },
|
|
31
|
-
{ "title": "Glühbirne" },
|
|
32
|
-
{ "title": "Ventilator" }
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
"defaultState": {
|
|
36
|
-
"title": "Standardzustand",
|
|
37
|
-
"description": "Anfänglicher Energiezustand beim Start von Homebridge."
|
|
38
|
-
},
|
|
39
|
-
"delayOff": {
|
|
40
|
-
"title": "Automatisch ausschalten (ms)",
|
|
41
|
-
"description": "Schaltet nach dieser Anzahl von Millisekunden automatisch aus. Zum Deaktivieren auf 0 setzen."
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
package/i18n/en.json
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"headerDisplay": "Multiple Switch Platform",
|
|
3
|
-
"schema": {
|
|
4
|
-
"name": {
|
|
5
|
-
"title": "Platform Name",
|
|
6
|
-
"description": "The name of this platform instance in HomeKit."
|
|
7
|
-
},
|
|
8
|
-
"switchBehavior": {
|
|
9
|
-
"title": "Switch Behavior Mode",
|
|
10
|
-
"description": "Controls how switches interact with each other.",
|
|
11
|
-
"oneOf": [
|
|
12
|
-
{ "title": "Independent" },
|
|
13
|
-
{ "title": "Master" },
|
|
14
|
-
{ "title": "Single" }
|
|
15
|
-
]
|
|
16
|
-
},
|
|
17
|
-
"switches": {
|
|
18
|
-
"title": "Switches",
|
|
19
|
-
"description": "List of virtual switches to create.",
|
|
20
|
-
"items": {
|
|
21
|
-
"name": {
|
|
22
|
-
"title": "Switch Name",
|
|
23
|
-
"description": "Display name of the switch in HomeKit."
|
|
24
|
-
},
|
|
25
|
-
"type": {
|
|
26
|
-
"title": "Switch Type",
|
|
27
|
-
"description": "The HomeKit accessory type for this switch.",
|
|
28
|
-
"oneOf": [
|
|
29
|
-
{ "title": "Switch" },
|
|
30
|
-
{ "title": "Outlet" },
|
|
31
|
-
{ "title": "Lightbulb" },
|
|
32
|
-
{ "title": "Fan" }
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
"defaultState": {
|
|
36
|
-
"title": "Default State",
|
|
37
|
-
"description": "Initial power state when Homebridge starts."
|
|
38
|
-
},
|
|
39
|
-
"delayOff": {
|
|
40
|
-
"title": "Auto Turn Off (ms)",
|
|
41
|
-
"description": "Automatically turn off after this many milliseconds. Set to 0 to disable."
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
package/i18n/es.json
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"headerDisplay": "Plataforma de Múltiples Interruptores",
|
|
3
|
-
"schema": {
|
|
4
|
-
"name": {
|
|
5
|
-
"title": "Nombre de la plataforma",
|
|
6
|
-
"description": "El nombre de esta instancia de plataforma en HomeKit."
|
|
7
|
-
},
|
|
8
|
-
"switchBehavior": {
|
|
9
|
-
"title": "Modo de comportamiento",
|
|
10
|
-
"description": "Controla cómo interactúan los interruptores entre sí.",
|
|
11
|
-
"oneOf": [
|
|
12
|
-
{ "title": "Independiente" },
|
|
13
|
-
{ "title": "Maestro" },
|
|
14
|
-
{ "title": "Único" }
|
|
15
|
-
]
|
|
16
|
-
},
|
|
17
|
-
"switches": {
|
|
18
|
-
"title": "Interruptores",
|
|
19
|
-
"description": "Lista de interruptores virtuales a crear.",
|
|
20
|
-
"items": {
|
|
21
|
-
"name": {
|
|
22
|
-
"title": "Nombre del interruptor",
|
|
23
|
-
"description": "Nombre visible del interruptor en HomeKit."
|
|
24
|
-
},
|
|
25
|
-
"type": {
|
|
26
|
-
"title": "Tipo de interruptor",
|
|
27
|
-
"description": "El tipo de accesorio HomeKit para este interruptor.",
|
|
28
|
-
"oneOf": [
|
|
29
|
-
{ "title": "Interruptor" },
|
|
30
|
-
{ "title": "Enchufe" },
|
|
31
|
-
{ "title": "Bombilla" },
|
|
32
|
-
{ "title": "Ventilador" }
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
"defaultState": {
|
|
36
|
-
"title": "Estado predeterminado",
|
|
37
|
-
"description": "Estado de energía inicial cuando Homebridge se inicia."
|
|
38
|
-
},
|
|
39
|
-
"delayOff": {
|
|
40
|
-
"title": "Apagado automático (ms)",
|
|
41
|
-
"description": "Se apaga automáticamente después de estos milisegundos. Establecer en 0 para desactivar."
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
package/i18n/fr.json
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"headerDisplay": "Plateforme Multi-Interrupteurs",
|
|
3
|
-
"schema": {
|
|
4
|
-
"name": {
|
|
5
|
-
"title": "Nom de la plateforme",
|
|
6
|
-
"description": "Le nom de cette instance de plateforme dans HomeKit."
|
|
7
|
-
},
|
|
8
|
-
"switchBehavior": {
|
|
9
|
-
"title": "Mode de comportement",
|
|
10
|
-
"description": "Contrôle la façon dont les interrupteurs interagissent entre eux.",
|
|
11
|
-
"oneOf": [
|
|
12
|
-
{ "title": "Indépendant" },
|
|
13
|
-
{ "title": "Maître" },
|
|
14
|
-
{ "title": "Unique" }
|
|
15
|
-
]
|
|
16
|
-
},
|
|
17
|
-
"switches": {
|
|
18
|
-
"title": "Interrupteurs",
|
|
19
|
-
"description": "Liste des interrupteurs virtuels à créer.",
|
|
20
|
-
"items": {
|
|
21
|
-
"name": {
|
|
22
|
-
"title": "Nom de l'interrupteur",
|
|
23
|
-
"description": "Nom affiché de l'interrupteur dans HomeKit."
|
|
24
|
-
},
|
|
25
|
-
"type": {
|
|
26
|
-
"title": "Type d'interrupteur",
|
|
27
|
-
"description": "Le type d'accessoire HomeKit pour cet interrupteur.",
|
|
28
|
-
"oneOf": [
|
|
29
|
-
{ "title": "Interrupteur" },
|
|
30
|
-
{ "title": "Prise" },
|
|
31
|
-
{ "title": "Ampoule" },
|
|
32
|
-
{ "title": "Ventilateur" }
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
"defaultState": {
|
|
36
|
-
"title": "État par défaut",
|
|
37
|
-
"description": "État d'alimentation initial au démarrage de Homebridge."
|
|
38
|
-
},
|
|
39
|
-
"delayOff": {
|
|
40
|
-
"title": "Arrêt automatique (ms)",
|
|
41
|
-
"description": "S'éteint automatiquement après ce nombre de millisecondes. Mettre à 0 pour désactiver."
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
package/i18n/it.json
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"headerDisplay": "Piattaforma Multi-Interruttore",
|
|
3
|
-
"schema": {
|
|
4
|
-
"name": {
|
|
5
|
-
"title": "Nome della piattaforma",
|
|
6
|
-
"description": "Il nome di questa istanza della piattaforma in HomeKit."
|
|
7
|
-
},
|
|
8
|
-
"switchBehavior": {
|
|
9
|
-
"title": "Modalità di comportamento",
|
|
10
|
-
"description": "Controlla come gli interruttori interagiscono tra loro.",
|
|
11
|
-
"oneOf": [
|
|
12
|
-
{ "title": "Indipendente" },
|
|
13
|
-
{ "title": "Master" },
|
|
14
|
-
{ "title": "Singolo" }
|
|
15
|
-
]
|
|
16
|
-
},
|
|
17
|
-
"switches": {
|
|
18
|
-
"title": "Interruttori",
|
|
19
|
-
"description": "Elenco degli interruttori virtuali da creare.",
|
|
20
|
-
"items": {
|
|
21
|
-
"name": {
|
|
22
|
-
"title": "Nome dell'interruttore",
|
|
23
|
-
"description": "Nome visualizzato dell'interruttore in HomeKit."
|
|
24
|
-
},
|
|
25
|
-
"type": {
|
|
26
|
-
"title": "Tipo di interruttore",
|
|
27
|
-
"description": "Il tipo di accessorio HomeKit per questo interruttore.",
|
|
28
|
-
"oneOf": [
|
|
29
|
-
{ "title": "Interruttore" },
|
|
30
|
-
{ "title": "Presa" },
|
|
31
|
-
{ "title": "Lampadina" },
|
|
32
|
-
{ "title": "Ventilatore" }
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
"defaultState": {
|
|
36
|
-
"title": "Stato predefinito",
|
|
37
|
-
"description": "Stato di alimentazione iniziale all'avvio di Homebridge."
|
|
38
|
-
},
|
|
39
|
-
"delayOff": {
|
|
40
|
-
"title": "Spegnimento automatico (ms)",
|
|
41
|
-
"description": "Si spegne automaticamente dopo questi millisecondi. Impostare a 0 per disattivare."
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
package/i18n/ja.json
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"headerDisplay": "マルチスイッチプラットフォーム",
|
|
3
|
-
"schema": {
|
|
4
|
-
"name": {
|
|
5
|
-
"title": "プラットフォーム名",
|
|
6
|
-
"description": "HomeKit でのこのプラットフォームインスタンスの名前。"
|
|
7
|
-
},
|
|
8
|
-
"switchBehavior": {
|
|
9
|
-
"title": "スイッチ動作モード",
|
|
10
|
-
"description": "スイッチ同士の相互作用を制御します。",
|
|
11
|
-
"oneOf": [
|
|
12
|
-
{ "title": "独立" },
|
|
13
|
-
{ "title": "マスター" },
|
|
14
|
-
{ "title": "シングル" }
|
|
15
|
-
]
|
|
16
|
-
},
|
|
17
|
-
"switches": {
|
|
18
|
-
"title": "スイッチ",
|
|
19
|
-
"description": "作成する仮想スイッチのリスト。",
|
|
20
|
-
"items": {
|
|
21
|
-
"name": {
|
|
22
|
-
"title": "スイッチ名",
|
|
23
|
-
"description": "HomeKit でのスイッチの表示名。"
|
|
24
|
-
},
|
|
25
|
-
"type": {
|
|
26
|
-
"title": "スイッチタイプ",
|
|
27
|
-
"description": "このスイッチの HomeKit アクセサリタイプ。",
|
|
28
|
-
"oneOf": [
|
|
29
|
-
{ "title": "スイッチ" },
|
|
30
|
-
{ "title": "コンセント" },
|
|
31
|
-
{ "title": "電球" },
|
|
32
|
-
{ "title": "ファン" }
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
"defaultState": {
|
|
36
|
-
"title": "デフォルト状態",
|
|
37
|
-
"description": "Homebridge 起動時の初期電源状態。"
|
|
38
|
-
},
|
|
39
|
-
"delayOff": {
|
|
40
|
-
"title": "自動オフ(ミリ秒)",
|
|
41
|
-
"description": "指定したミリ秒後に自動的にオフになります。無効にするには 0 に設定してください。"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
package/i18n/ko.json
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"headerDisplay": "멀티 스위치 플랫폼",
|
|
3
|
-
"schema": {
|
|
4
|
-
"name": {
|
|
5
|
-
"title": "플랫폼 이름",
|
|
6
|
-
"description": "HomeKit에서 이 플랫폼 인스턴스의 이름."
|
|
7
|
-
},
|
|
8
|
-
"switchBehavior": {
|
|
9
|
-
"title": "스위치 동작 모드",
|
|
10
|
-
"description": "스위치 간의 상호 작용 방식을 제어합니다.",
|
|
11
|
-
"oneOf": [
|
|
12
|
-
{ "title": "독립" },
|
|
13
|
-
{ "title": "마스터" },
|
|
14
|
-
{ "title": "단일" }
|
|
15
|
-
]
|
|
16
|
-
},
|
|
17
|
-
"switches": {
|
|
18
|
-
"title": "스위치",
|
|
19
|
-
"description": "생성할 가상 스위치 목록.",
|
|
20
|
-
"items": {
|
|
21
|
-
"name": {
|
|
22
|
-
"title": "스위치 이름",
|
|
23
|
-
"description": "HomeKit에서 스위치의 표시 이름."
|
|
24
|
-
},
|
|
25
|
-
"type": {
|
|
26
|
-
"title": "스위치 유형",
|
|
27
|
-
"description": "이 스위치의 HomeKit 액세서리 유형.",
|
|
28
|
-
"oneOf": [
|
|
29
|
-
{ "title": "스위치" },
|
|
30
|
-
{ "title": "콘센트" },
|
|
31
|
-
{ "title": "전구" },
|
|
32
|
-
{ "title": "팬" }
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
"defaultState": {
|
|
36
|
-
"title": "기본 상태",
|
|
37
|
-
"description": "Homebridge 시작 시 초기 전원 상태."
|
|
38
|
-
},
|
|
39
|
-
"delayOff": {
|
|
40
|
-
"title": "자동 꺼짐 (ms)",
|
|
41
|
-
"description": "지정된 밀리초 후 자동으로 꺼집니다. 비활성화하려면 0으로 설정하세요."
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
package/i18n/nl.json
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"headerDisplay": "Meervoudige schakelaar platform",
|
|
3
|
-
"schema": {
|
|
4
|
-
"name": {
|
|
5
|
-
"title": "Platformnaam",
|
|
6
|
-
"description": "De naam van dit platformexemplaar in HomeKit."
|
|
7
|
-
},
|
|
8
|
-
"switchBehavior": {
|
|
9
|
-
"title": "Schakelaargedrag",
|
|
10
|
-
"description": "Bepaalt hoe de schakelaars met elkaar omgaan.",
|
|
11
|
-
"oneOf": [
|
|
12
|
-
{ "title": "Onafhankelijk" },
|
|
13
|
-
{ "title": "Master" },
|
|
14
|
-
{ "title": "Enkelvoudig" }
|
|
15
|
-
]
|
|
16
|
-
},
|
|
17
|
-
"switches": {
|
|
18
|
-
"title": "Schakelaars",
|
|
19
|
-
"description": "Lijst van virtuele schakelaars om aan te maken.",
|
|
20
|
-
"items": {
|
|
21
|
-
"name": {
|
|
22
|
-
"title": "Schakelaarnaam",
|
|
23
|
-
"description": "Weergavenaam van de schakelaar in HomeKit."
|
|
24
|
-
},
|
|
25
|
-
"type": {
|
|
26
|
-
"title": "Schakelaartype",
|
|
27
|
-
"description": "Het HomeKit-accessoiretype voor deze schakelaar.",
|
|
28
|
-
"oneOf": [
|
|
29
|
-
{ "title": "Schakelaar" },
|
|
30
|
-
{ "title": "Stopcontact" },
|
|
31
|
-
{ "title": "Gloeilamp" },
|
|
32
|
-
{ "title": "Ventilator" }
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
"defaultState": {
|
|
36
|
-
"title": "Standaardstatus",
|
|
37
|
-
"description": "Initiële voedingsstatus wanneer Homebridge opstart."
|
|
38
|
-
},
|
|
39
|
-
"delayOff": {
|
|
40
|
-
"title": "Automatisch uitschakelen (ms)",
|
|
41
|
-
"description": "Schakelt automatisch uit na dit aantal milliseconden. Stel in op 0 om uit te schakelen."
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|