v0.14.2
This commit is contained in:
@@ -48,6 +48,25 @@ async function handleWebSocketMessage(event) {
|
||||
else if (message.event === 'group.deleted') { app.groups = app.groups.filter(v => v.id !== data.id); renderGroups(); fillSelects(); scheduleControlPlanLoad(); }
|
||||
else if (['device_group.updated', 'device_group.created'].includes(message.event)) { const i = app.deviceGroups.findIndex(v => v.id === data.id); if (i >= 0) app.deviceGroups[i] = data; else app.deviceGroups.push(data); renderDevices(); renderHistoryNavigation(); }
|
||||
else if (message.event === 'device_group.deleted') { app.deviceGroups = app.deviceGroups.filter(v => v.id !== data.id); renderDevices(); renderHistoryNavigation(); }
|
||||
else if (message.event === 'energy.updated') {
|
||||
const total = Number(data.total_kwh);
|
||||
if (Number.isFinite(total)) {
|
||||
const snapshot = { total_kwh: total, timestamp: data.timestamp || message.timestamp, source: data.source || '', origin: 'realtime' };
|
||||
const selectedEnergySource = group => group.energy_source === 'gree_cloud' || (group.energy_source === 'auto' && !!group.energy_device_id)
|
||||
? 'gree_cloud'
|
||||
: (group.energy_source === 'home_assistant' || (group.energy_source === 'auto' && !!group.ha_energy_entity_id) ? 'home_assistant' : '');
|
||||
if (String(data.target_id || '').startsWith('group:')) {
|
||||
const groupId = String(data.target_id).slice(6);
|
||||
const group = (app.deviceGroups || []).find(item => item.id === groupId);
|
||||
if (group && selectedEnergySource(group) === snapshot.source) app.deviceGroupEnergy[groupId] = snapshot;
|
||||
} else if (snapshot.source === 'gree_cloud') {
|
||||
(app.deviceGroups || [])
|
||||
.filter(group => group.energy_device_id === data.target_id && selectedEnergySource(group) === 'gree_cloud')
|
||||
.forEach(group => { app.deviceGroupEnergy[group.id] = snapshot; });
|
||||
}
|
||||
renderDevices();
|
||||
}
|
||||
}
|
||||
else if (['schedule.updated', 'schedule.created'].includes(message.event)) { const i = app.schedules.findIndex(v => v.id === data.id); if (i >= 0) app.schedules[i] = data; else app.schedules.push(data); renderSchedules(); fillSelects(); scheduleControlPlanLoad(); }
|
||||
else if (message.event === 'schedule.deleted') { app.schedules = app.schedules.filter(v => v.id !== data.id); renderSchedules(); fillSelects(); scheduleControlPlanLoad(); }
|
||||
else if (message.event === 'schedule.template_applied') { try { app.schedules = await api('/api/schedules'); renderSchedules(); fillSelects(); } catch (_) { } scheduleControlPlanLoad(); }
|
||||
|
||||
Reference in New Issue
Block a user