v0.9.14
This commit is contained in:
Generated
+1
-1
@@ -633,7 +633,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gree-controller"
|
name = "gree-controller"
|
||||||
version = "0.9.13"
|
version = "0.9.14"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes",
|
"aes",
|
||||||
"aes-gcm",
|
"aes-gcm",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "gree-controller"
|
name = "gree-controller"
|
||||||
version = "0.9.13"
|
version = "0.9.14"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
authors = ["GREE Controller contributors"]
|
authors = ["GREE Controller contributors"]
|
||||||
description = "Standalone local GREE HVAC controller with Web UI, SQLite and Home Assistant sensor support"
|
description = "Standalone local GREE HVAC controller with Web UI, SQLite and Home Assistant sensor support"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Self-hosted controller for GREE-compatible air conditioners with a local Web UI, thermostat zones, schedules, Home Assistant integration, history, notifications and a documented HTTP/WebSocket API.
|
Self-hosted controller for GREE-compatible air conditioners with a local Web UI, thermostat zones, schedules, Home Assistant integration, history, notifications and a documented HTTP/WebSocket API.
|
||||||
|
|
||||||
**Current release: 0.9.13**
|
**Current release: 0.9.14**
|
||||||
|
|
||||||
> [Full API reference](docs/API.md) — authentication, every endpoint, request bodies, response models, WebSocket events and examples.
|
> [Full API reference](docs/API.md) — authentication, every endpoint, request bodies, response models, WebSocket events and examples.
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -1,6 +1,6 @@
|
|||||||
# GREE Controller API reference
|
# GREE Controller API reference
|
||||||
|
|
||||||
HTTP and WebSocket API for GREE Controller **0.9.13**.
|
HTTP and WebSocket API for GREE Controller **0.9.14**.
|
||||||
|
|
||||||
[← Main documentation](../README.md)
|
[← Main documentation](../README.md)
|
||||||
|
|
||||||
@@ -213,7 +213,7 @@ Response:
|
|||||||
{
|
{
|
||||||
"status": "ok",
|
"status": "ok",
|
||||||
"name": "gree-controller",
|
"name": "gree-controller",
|
||||||
"version": "0.9.13",
|
"version": "0.9.14",
|
||||||
"uptime_seconds": 1234,
|
"uptime_seconds": 1234,
|
||||||
"control_ready": true,
|
"control_ready": true,
|
||||||
"time": "2026-08-30T06:54:00Z"
|
"time": "2026-08-30T06:54:00Z"
|
||||||
@@ -237,7 +237,7 @@ Returns the initial Web UI snapshot:
|
|||||||
"settings": {},
|
"settings": {},
|
||||||
"outdoor_temperature": null,
|
"outdoor_temperature": null,
|
||||||
"system": {
|
"system": {
|
||||||
"version": "0.9.13",
|
"version": "0.9.14",
|
||||||
"uptime_seconds": 1234,
|
"uptime_seconds": 1234,
|
||||||
"auth_required": false,
|
"auth_required": false,
|
||||||
"control_ready": true,
|
"control_ready": true,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"domain": "gree_controller",
|
"domain": "gree_controller",
|
||||||
"name": "GREE Controller",
|
"name": "GREE Controller",
|
||||||
"version": "0.9.13",
|
"version": "0.9.14",
|
||||||
"config_flow": true,
|
"config_flow": true,
|
||||||
"integration_type": "hub",
|
"integration_type": "hub",
|
||||||
"iot_class": "local_polling",
|
"iot_class": "local_polling",
|
||||||
|
|||||||
+2
-3
@@ -243,8 +243,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="simulation-head-actions"><button class="secondary" id="simulationOpenTab"
|
<div class="simulation-head-actions"><button class="secondary" id="simulationOpenTab"
|
||||||
data-i18n="simulation.openTab">Open only simulator in new tab</button><button class="secondary"
|
data-i18n="simulation.openTab">Open only simulator in new tab</button><button class="secondary"
|
||||||
id="simulationFullscreen" data-i18n="simulation.fullscreen">Full screen</button><button class="secondary"
|
id="simulationFullscreen" data-i18n="simulation.fullscreen">Full screen</button></div>
|
||||||
id="simulationRefresh" data-i18n="actions.refresh">Refresh</button></div>
|
|
||||||
</div>
|
</div>
|
||||||
<p class="lead" data-i18n="simulation.description">Live preview of the thermostat and automation logic. The flow
|
<p class="lead" data-i18n="simulation.description">Live preview of the thermostat and automation logic. The flow
|
||||||
board shows how sensor readings, schedules, night mode and thermostat decisions become commands sent to each
|
board shows how sensor readings, schedules, night mode and thermostat decisions become commands sent to each
|
||||||
@@ -731,7 +730,7 @@
|
|||||||
<div id="flowSharedInputTestPanel" class="flow-shared-test-panel" hidden>
|
<div id="flowSharedInputTestPanel" class="flow-shared-test-panel" hidden>
|
||||||
<div><strong data-i18n="flow.sharedInputTest">Testuj wejście HA</strong><p class="field-note" data-i18n="flow.sharedInputTestHint">Test używa zapisanej konfiguracji połączenia Home Assistant i nie zapisuje tego wejścia.</p></div>
|
<div><strong data-i18n="flow.sharedInputTest">Testuj wejście HA</strong><p class="field-note" data-i18n="flow.sharedInputTestHint">Test używa zapisanej konfiguracji połączenia Home Assistant i nie zapisuje tego wejścia.</p></div>
|
||||||
<button type="button" class="secondary" id="flowSharedInputTest" data-i18n="flow.sharedInputTest">Testuj wejście HA</button>
|
<button type="button" class="secondary" id="flowSharedInputTest" data-i18n="flow.sharedInputTest">Testuj wejście HA</button>
|
||||||
<div id="flowSharedInputTestResult" class="flow-shared-test-result" hidden></div>
|
<div id="flowSharedInputTestResult" class="flow-shared-test-result" role="status" aria-live="polite" hidden></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-actions"><button type="button" class="secondary" data-close data-i18n="actions.cancel">Anuluj</button><button type="submit" class="primary" data-i18n="actions.save">Zapisz</button></div>
|
<div class="form-actions"><button type="button" class="secondary" data-close data-i18n="actions.cancel">Anuluj</button><button type="submit" class="primary" data-i18n="actions.save">Zapisz</button></div>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
+7
-6
@@ -255,11 +255,6 @@ $('#haTest').addEventListener('click', async event => {
|
|||||||
finally { button.disabled = false; button.textContent = idle; }
|
finally { button.disabled = false; button.textContent = idle; }
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#simulationRefresh')?.addEventListener('click', async () => {
|
|
||||||
try { await loadControlPlan(); toast(tr('common.updated')); }
|
|
||||||
catch (error) { toast(error.message, true); }
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#exportSettings').addEventListener('click', async () => {
|
$('#exportSettings').addEventListener('click', async () => {
|
||||||
try {
|
try {
|
||||||
const data = await api('/api/settings/export');
|
const data = await api('/api/settings/export');
|
||||||
@@ -327,7 +322,13 @@ $('#flowSharedInputTest')?.addEventListener('click', async event => {
|
|||||||
if (!form || !resultHost) return;
|
if (!form || !resultHost) return;
|
||||||
const kind = form.kind.value, config = collectFlowSharedInputConfig(kind);
|
const kind = form.kind.value, config = collectFlowSharedInputConfig(kind);
|
||||||
const entityId = String(config.entity_id || '').trim();
|
const entityId = String(config.entity_id || '').trim();
|
||||||
if (!entityId) return toast(tr('flow.sharedInputTestEntityRequired'), true);
|
if (!entityId) {
|
||||||
|
resultHost.hidden = false;
|
||||||
|
resultHost.classList.remove('pass');
|
||||||
|
resultHost.classList.add('fail');
|
||||||
|
resultHost.innerHTML = `<strong>${esc(tr('flow.sharedInputTestUnavailable'))}</strong><span>${esc(tr('flow.sharedInputTestEntityRequired'))}</span>`;
|
||||||
|
return;
|
||||||
|
}
|
||||||
const button = event.currentTarget, idle = button.textContent;
|
const button = event.currentTarget, idle = button.textContent;
|
||||||
button.disabled = true; button.textContent = tr('flow.sharedInputTesting');
|
button.disabled = true; button.textContent = tr('flow.sharedInputTesting');
|
||||||
resultHost.hidden = false; resultHost.innerHTML = `<span>${esc(tr('flow.sharedInputTesting'))}</span>`;
|
resultHost.hidden = false; resultHost.innerHTML = `<span>${esc(tr('flow.sharedInputTesting'))}</span>`;
|
||||||
|
|||||||
Reference in New Issue
Block a user