Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Large diffs are not rendered by default.

58 changes: 29 additions & 29 deletions admin/index_m.html
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link
rel="shortcut icon"
href="favicon.ico"
/>
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<meta
name="theme-color"
content="#000000"
/>
<link
rel="manifest"
href="manifest.json"
/>
<script type="text/javascript" onerror="setTimeout(function(){window.location.reload()}, 5000)" src="./lib/js/socket.io.js"></script>
<title>Modbus</title>
<script type="module" crossorigin src="./assets/index-BPzGlMXQ.js"></script>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link
rel="shortcut icon"
href="favicon.ico"
/>
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<meta
name="theme-color"
content="#000000"
/>
<link
rel="manifest"
href="manifest.json"
/>
<script type="text/javascript" onerror="setTimeout(function(){window.location.reload()}, 5000)" src="./lib/js/socket.io.js"></script>
<title>Modbus</title>
<script type="module" crossorigin src="./assets/index-MozkJy_I.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-Bd3GtHgn.css">
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>
1 change: 1 addition & 0 deletions io-package.json
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,7 @@
"HolidayPresentLikeSunday": true,
"ExtendOverride": false,
"ThermostatHandlesWindowOpen": false,
"WindowOpenHasPriorityOverThermostat": false,
"VisMinDecRelTemp": 1,
"VisMaxDecRelTemp": 10,
"VisStepWidthDecRelTemp": 1,
Expand Down
55 changes: 37 additions & 18 deletions lib/database.js
Original file line number Diff line number Diff line change
Expand Up @@ -686,8 +686,8 @@ async function ChangeStatus_Part2(state, room, value) {

//see issue #332: deactivate override before deactivate heating
if (theRoom.OverrideTimerId != null) {
clearTimeout(room.OverrideTimerId);
room.OverrideTimerId = null;
clearTimeout(theRoom.OverrideTimerId);
theRoom.OverrideTimerId = null;
}

SetNewRoomState(theRoom, "no heating");
Expand Down Expand Up @@ -725,7 +725,7 @@ async function ChangeStatus_Part2(state, room, value) {

if (theRoom.WindowOpenUntilTemperaturTimerId != null) {
//cancel and restart
clearTimeout(room.WindowOpenUntilTemperaturTimerId);
clearTimeout(theRoom.WindowOpenUntilTemperaturTimerId);
theRoom.WindowOpenUntilTemperaturTimerId = null;
}

Expand Down Expand Up @@ -1298,6 +1298,22 @@ async function CheckManualMode(room, target) {

parentAdapter.log.debug("CheckManualMode " + room.Name + " target " + target + " current manual target " + room.TemperatureManualMode + " state " + room.State);

if (parentAdapter.config.WindowOpenHasPriorityOverThermostat
&& !parentAdapter.config.ThermostatHandlesWindowOpen
&& room.WindowIsOpen) {
if (room.CurrentTarget != target) {
parentAdapter.log.warn(room.Name + " thermostat target " + target + " ignored because window open has priority over thermostat");
}
changed = true;

const result = {
changed: changed,
handleActors: handleActors
};

return result;
}

if (room.State == "auto") {

//this is a special behavior: Thermostat itself handles window open, but new temperatur from thermostat should not be handled as manual
Expand All @@ -1318,24 +1334,27 @@ async function CheckManualMode(room, target) {
}
} else if (room.State == "manual") {

if (room.TemperatureManualMode != target) {

if (room.IsInReduced) {
parentAdapter.log.warn(room.Name + " manual mode " + target + " but ignored because already reduced");
} else {

room.TemperatureManualMode = target;
parentAdapter.log.debug(room.Name + " manual mode changed to " + room.TemperatureManualMode);
changed = true;
if (room.IsInReduced) {
if (room.CurrentTarget != target) {
parentAdapter.log.warn(room.Name + " manual mode " + target + " but ignored because already reduced - reapply reduced target");
}
changed = true;
} else if (room.TemperatureManualMode != target) {

room.TemperatureManualMode = target;
parentAdapter.log.debug(room.Name + " manual mode changed to " + room.TemperatureManualMode);
changed = true;
}

} else if (room.State == "override") {

if (room.IsInReduced) {
//das verhindert das Umschalten des Override auf die reduzierte Temp, welche vom Thermostat kommt, dadurch wäre ein zurückschalten auf
//override Temp nach Schliessen des Fensters nicht möglich (siehe auch oben im manual mode)
parentAdapter.log.warn(room.Name + " override mode " + target + " but ignored because already reduced");
if (room.CurrentTarget != target) {
parentAdapter.log.warn(room.Name + " override mode " + target + " but ignored because already reduced - reapply reduced target");
}
changed = true;
} else {
parentAdapter.log.debug(room.Name + " change override to " + target);
//see issue #268 Version 2.6.2 triggert nicht auf Änderungen am Thermostat
Expand Down Expand Up @@ -2348,7 +2367,7 @@ async function HandleActors(room) {
} else {
if (actors[d].ActorOnTimerId == null) {
parentAdapter.log.debug(room.Name + " actor before on delay " + parseInt(parentAdapter.config.ActorBeforeOnDelay) * 1000 + " for " + actors[d].name);
const delay = parseInt(parentAdapter.config.ActorBeforeOffDelay) * 1000 + delayCounter * InterActorDelay;
const delay = parseInt(parentAdapter.config.ActorBeforeOnDelay) * 1000 + delayCounter * InterActorDelay;
actors[d].ActorOnTimerId = setTimeout(ActorOnTimeout, delay, actors[d]);
if (InterActorDelay > 0) {
delayCounter++;
Expand Down Expand Up @@ -2503,7 +2522,7 @@ async function DisableSubscriptionTarget(thermostats_oid, room) {
//clear cmd list
if (ChangeStatusCmdList.length > 0) {
for (let i = ChangeStatusCmdList.length - 1; i >= 0; i--) {
if (ChangeStatusCmdList.state == "Thermostats_Target" && ChangeStatusCmdList.room == room) {
if (ChangeStatusCmdList[i].state == "Thermostats_Target" && ChangeStatusCmdList[i].room == room) {
parentAdapter.log.debug("remove one entry from cmd list ");
ChangeStatusCmdList.splice(i, 1);
}
Expand Down Expand Up @@ -3442,8 +3461,8 @@ async function GetCurrentProfilePointType3(room, currentProfile) {
profilePart = "Mon"; //we need last profile point from monday
parentAdapter.log.debug("last profile point from monday used");
} else if (day == 3) {
profilePart = "Thu"; //we need last profile point from thusday
parentAdapter.log.debug("last profile point from thusday used");
profilePart = "Tue"; //we need last profile point from tuesday
parentAdapter.log.debug("last profile point from tuesday used");
} else if (day == 4) {
profilePart = "Wed"; //we need last profile point from wednesday
parentAdapter.log.debug("last profile point from wednesday used");
Expand Down Expand Up @@ -3853,4 +3872,4 @@ module.exports = {
GetNumberOfActiveRooms,
GetRoomData,
GetAllRoomData
};
};
4 changes: 4 additions & 0 deletions lib/datapoints.js
Original file line number Diff line number Diff line change
Expand Up @@ -1226,6 +1226,10 @@ async function CheckConfiguration() {
parentAdapter.log.error("error in configuration: if option 'Thermostat handles window open' is enabled then SensorOpenDelay must be 0 ");
}

if (parentAdapter.config.WindowOpenHasPriorityOverThermostat && parentAdapter.config.ThermostatHandlesWindowOpen) {
parentAdapter.log.warn("configuration hint: option 'Window open has priority over thermostat' is ignored when 'Thermostat handles window open' is enabled");
}

}


Expand Down
2 changes: 1 addition & 1 deletion src-admin/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@
"not ie <= 11",
"not op_mini all"
]
}
}
11 changes: 11 additions & 0 deletions src-admin/src/Tabs/MainSettings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,16 @@ const schema: ConfigItemPanel = {
"lg": 2,
"xl": 2
},
WindowOpenHasPriorityOverThermostat: {
newLine: false,
type: 'checkbox',
label: 'WindowOpenHasPriorityOverThermostat',
"xs": 12,
"sm": 4,
"md": 4,
"lg": 4,
"xl": 4
},
InterThermostatDelay: {
newLine: false,
type: 'number',
Expand Down Expand Up @@ -1439,6 +1449,7 @@ export default function MainSettings(props: SettingsProps): React.JSX.Element {
native.ExtendOverride = params.ExtendOverride;
native.OverrideMode = params.OverrideMode;
native.ThermostatHandlesWindowOpen = params.ThermostatHandlesWindowOpen;
native.WindowOpenHasPriorityOverThermostat = params.WindowOpenHasPriorityOverThermostat;
native.InterThermostatDelay = params.InterThermostatDelay;

native.UseAddTempSensors = params.UseAddTempSensors;
Expand Down
1 change: 1 addition & 0 deletions src-admin/src/i18n/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@
"Telegram instance": "Telegram-Instanz",
"TemperatureDecrease": " Temperaturabsenkung",
"ThermostatHandlesWindowOpen": "Thermostat behandelt \"Fenster ist offen\"",
"WindowOpenHasPriorityOverThermostat": "Fenster offen hat Vorrang vor Thermostat",
"ThermostatModeIfNoHeatingperiod": "Thermostatbetrieb wenn keine Heizperiode",
"ThermostatSettings": "Thermostateinstellungen",
"UseActorsIfNoThermostat": "Stellantriebe verwenden, wenn kein Thermostat vorhanden ist",
Expand Down
3 changes: 2 additions & 1 deletion src-admin/src/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@
"Telegram instance": "Telegram instance",
"TemperatureDecrease": " temperature lowering",
"ThermostatHandlesWindowOpen": "Thermostat handles \"Window is Open\"",
"WindowOpenHasPriorityOverThermostat": "Window open has priority over thermostat",
"ThermostatModeIfNoHeatingperiod": "Thermostat mode if no heatingperiod",
"ThermostatSettings": "Thermostat Settings",
"UseActorsIfNoThermostat": "use actuators if no thermostat available",
Expand Down Expand Up @@ -210,4 +211,4 @@



}
}
1 change: 1 addition & 0 deletions src-admin/src/i18n/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
"Telegram instance": "instancia de telegrama",
"TemperatureDecrease": "descenso de temperatura",
"ThermostatHandlesWindowOpen": "El termostato maneja \"La ventana está abierta\"",
"WindowOpenHasPriorityOverThermostat": "La ventana abierta tiene prioridad sobre el termostato",
"ThermostatModeIfNoHeatingperiod": "Modo termostato si no hay período de calefacción",
"ThermostatSettings": "Configuración del termostato",
"UseActorsIfNoThermostat": "utilice actuadores si no hay termostato disponible",
Expand Down
1 change: 1 addition & 0 deletions src-admin/src/i18n/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
"Telegram instance": "Instance de télégramme",
"TemperatureDecrease": "abaissement de la température",
"ThermostatHandlesWindowOpen": "Le thermostat gère \"La fenêtre est ouverte\"",
"WindowOpenHasPriorityOverThermostat": "La fenêtre ouverte a priorité sur le thermostat",
"ThermostatModeIfNoHeatingperiod": "Mode thermostat si pas de période de chauffage",
"ThermostatSettings": "Paramètres du thermostat",
"UseActorsIfNoThermostat": "utiliser des actionneurs si aucun thermostat n'est disponible",
Expand Down
1 change: 1 addition & 0 deletions src-admin/src/i18n/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
"Telegram instance": "Istanza di Telegram",
"TemperatureDecrease": "abbassamento della temperatura",
"ThermostatHandlesWindowOpen": "Il termostato gestisce \"La finestra è aperta\"",
"WindowOpenHasPriorityOverThermostat": "La finestra aperta ha priorità sul termostato",
"ThermostatModeIfNoHeatingperiod": "Modalità termostato in assenza di periodo di riscaldamento",
"ThermostatSettings": "Impostazioni del termostato",
"UseActorsIfNoThermostat": "utilizzare gli attuatori se non è disponibile alcun termostato",
Expand Down
1 change: 1 addition & 0 deletions src-admin/src/i18n/nl.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
"Telegram instance": "Telegram-instantie",
"TemperatureDecrease": "temperatuur verlagen",
"ThermostatHandlesWindowOpen": "Thermostaatgrepen \"Raam staat open\"",
"WindowOpenHasPriorityOverThermostat": "Open raam heeft prioriteit boven de thermostaat",
"ThermostatModeIfNoHeatingperiod": "Thermostaatmodus als er geen verwarmingsperiode is",
"ThermostatSettings": "Thermostaat instellingen",
"UseActorsIfNoThermostat": "gebruik actuatoren als er geen thermostaat beschikbaar is",
Expand Down
1 change: 1 addition & 0 deletions src-admin/src/i18n/pl.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
"Telegram instance": "Instancja telegramu",
"TemperatureDecrease": "obniżenie temperatury",
"ThermostatHandlesWindowOpen": "Termostat obsługuje „Okno jest otwarte”",
"WindowOpenHasPriorityOverThermostat": "Otwarte okno ma priorytet nad termostatem",
"ThermostatModeIfNoHeatingperiod": "Tryb termostatu, jeśli nie ma okresu grzewczego",
"ThermostatSettings": "Ustawienia termostatu",
"UseActorsIfNoThermostat": "użyj siłowników, jeśli nie jest dostępny termostat",
Expand Down
1 change: 1 addition & 0 deletions src-admin/src/i18n/pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
"Telegram instance": "Instância de telegrama",
"TemperatureDecrease": "redução de temperatura",
"ThermostatHandlesWindowOpen": "O termostato controla \"Janela aberta\"",
"WindowOpenHasPriorityOverThermostat": "A janela aberta tem prioridade sobre o termostato",
"ThermostatModeIfNoHeatingperiod": "Modo termostato se não houver período de aquecimento",
"ThermostatSettings": "Configurações do termostato",
"UseActorsIfNoThermostat": "use atuadores se não houver termostato disponível",
Expand Down
1 change: 1 addition & 0 deletions src-admin/src/i18n/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
"Telegram instance": "Экземпляр Телеграммы",
"TemperatureDecrease": "снижение температуры",
"ThermostatHandlesWindowOpen": "Ручки термостата «Окно открыто»",
"WindowOpenHasPriorityOverThermostat": "Открытое окно имеет приоритет над термостатом",
"ThermostatModeIfNoHeatingperiod": "Режим термостата, если нет периода нагрева",
"ThermostatSettings": "Настройки термостата",
"UseActorsIfNoThermostat": "используйте приводы, если нет термостата",
Expand Down
1 change: 1 addition & 0 deletions src-admin/src/i18n/uk.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
"Telegram instance": "Примірник Telegram",
"TemperatureDecrease": "зниження температури",
"ThermostatHandlesWindowOpen": "Термостат керує \"Вікно відкрите\"",
"WindowOpenHasPriorityOverThermostat": "Відкрите вікно має пріоритет над термостатом",
"ThermostatModeIfNoHeatingperiod": "Режим термостата, якщо немає періоду нагріву",
"ThermostatSettings": "Налаштування термостата",
"UseActorsIfNoThermostat": "використовуйте приводи, якщо немає термостата",
Expand Down
1 change: 1 addition & 0 deletions src-admin/src/i18n/zh-cn.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
"Telegram instance": "电报实例",
"TemperatureDecrease": "降温",
"ThermostatHandlesWindowOpen": "恒温器处理“窗户已打开”",
"WindowOpenHasPriorityOverThermostat": "打开窗户时优先于温控器",
"ThermostatModeIfNoHeatingperiod": "无供暖时恒温器模式",
"ThermostatSettings": "恒温器设置",
"UseActorsIfNoThermostat": "如果没有可用的恒温器,请使用执行器",
Expand Down
3 changes: 2 additions & 1 deletion src-admin/src/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ export interface HeatingControlAdapterConfig extends ioBroker.AdapterConfig {
ExtendOverride: boolean;
OverrideMode: number;
ThermostatHandlesWindowOpen: boolean;
WindowOpenHasPriorityOverThermostat: boolean;
InterThermostatDelay: number;

UseAddTempSensors: boolean;
Expand Down Expand Up @@ -150,4 +151,4 @@ export interface HeatingControlAdapterConfig extends ioBroker.AdapterConfig {
RoomWindowSensors: SensorConfig[];
RoomActors: ActorConfig[];
RoomAdditionalSensors: SensorConfig[];
}
}