mirror of
https://github.com/Laxilef/OTGateway.git
synced 2025-12-30 03:53:36 +05:00
Compare commits
3 Commits
7482eb8898
...
b91266063b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b91266063b | ||
|
|
b087e6e6d3 | ||
|
|
b205f14bae |
@@ -249,8 +249,8 @@ protected:
|
|||||||
|
|
||||||
if (vars.master.dhw.enabled != vars.slave.dhw.enabled) {
|
if (vars.master.dhw.enabled != vars.slave.dhw.enabled) {
|
||||||
this->prevUpdateNonEssentialVars = 0;
|
this->prevUpdateNonEssentialVars = 0;
|
||||||
vars.slave.dhw.enabled = vars.master.heating.enabled;
|
vars.slave.dhw.enabled = vars.master.dhw.enabled;
|
||||||
Log.sinfoln(FPSTR(L_OT_DHW), vars.master.heating.enabled ? F("Enabled") : F("Disabled"));
|
Log.sinfoln(FPSTR(L_OT_DHW), vars.master.dhw.enabled ? F("Enabled") : F("Disabled"));
|
||||||
}
|
}
|
||||||
|
|
||||||
vars.slave.heating.active = CustomOpenTherm::isCentralHeatingActive(response);
|
vars.slave.heating.active = CustomOpenTherm::isCentralHeatingActive(response);
|
||||||
@@ -471,25 +471,37 @@ protected:
|
|||||||
vars.slave.modulation.current, power, settings.opentherm.maxPower, settings.opentherm.minPower
|
vars.slave.modulation.current, power, settings.opentherm.maxPower, settings.opentherm.minPower
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Modulation level sensors
|
||||||
|
Sensors::setValueByType(
|
||||||
|
Sensors::Type::OT_MODULATION_LEVEL, vars.slave.modulation.current,
|
||||||
|
Sensors::ValueType::PRIMARY, true, true
|
||||||
|
);
|
||||||
|
|
||||||
|
// Power sensors
|
||||||
|
Sensors::setValueByType(
|
||||||
|
Sensors::Type::OT_CURRENT_POWER, power,
|
||||||
|
Sensors::ValueType::PRIMARY, true, true
|
||||||
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Log.swarningln(FPSTR(L_OT), F("Failed receive modulation level"));
|
Log.swarningln(FPSTR(L_OT), F("Failed receive modulation level"));
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (vars.slave.modulation.current > 0) {
|
} else if (vars.slave.modulation.current > 0) {
|
||||||
vars.slave.modulation.current = 0;
|
vars.slave.modulation.current = 0;
|
||||||
|
|
||||||
|
// Modulation level sensors
|
||||||
|
Sensors::setValueByType(
|
||||||
|
Sensors::Type::OT_MODULATION_LEVEL, vars.slave.modulation.current,
|
||||||
|
Sensors::ValueType::PRIMARY, true, true
|
||||||
|
);
|
||||||
|
|
||||||
|
// Power sensors
|
||||||
|
Sensors::setValueByType(
|
||||||
|
Sensors::Type::OT_CURRENT_POWER, power,
|
||||||
|
Sensors::ValueType::PRIMARY, true, true
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Modulation level sensors
|
|
||||||
Sensors::setValueByType(
|
|
||||||
Sensors::Type::OT_MODULATION_LEVEL, vars.slave.modulation.current,
|
|
||||||
Sensors::ValueType::PRIMARY, true, true
|
|
||||||
);
|
|
||||||
|
|
||||||
// Power sensors
|
|
||||||
Sensors::setValueByType(
|
|
||||||
Sensors::Type::OT_CURRENT_POWER, power,
|
|
||||||
Sensors::ValueType::PRIMARY, true, true
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update DHW temp
|
// Update DHW temp
|
||||||
@@ -512,15 +524,15 @@ protected:
|
|||||||
vars.slave.dhw.currentTemp, convertedDhwTemp
|
vars.slave.dhw.currentTemp, convertedDhwTemp
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Sensors::setValueByType(
|
||||||
|
Sensors::Type::OT_DHW_TEMP, convertedDhwTemp,
|
||||||
|
Sensors::ValueType::PRIMARY, true, true
|
||||||
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Log.swarningln(FPSTR(L_OT_DHW), F("Failed receive temp"));
|
Log.swarningln(FPSTR(L_OT_DHW), F("Failed receive temp"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Sensors::setValueByType(
|
|
||||||
Sensors::Type::OT_DHW_TEMP, convertedDhwTemp,
|
|
||||||
Sensors::ValueType::PRIMARY, true, true
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update DHW temp 2
|
// Update DHW temp 2
|
||||||
@@ -543,15 +555,15 @@ protected:
|
|||||||
vars.slave.dhw.currentTemp2, convertedDhwTemp2
|
vars.slave.dhw.currentTemp2, convertedDhwTemp2
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Sensors::setValueByType(
|
||||||
|
Sensors::Type::OT_DHW_TEMP2, convertedDhwTemp2,
|
||||||
|
Sensors::ValueType::PRIMARY, true, true
|
||||||
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Log.swarningln(FPSTR(L_OT_DHW), F("Failed receive temp 2"));
|
Log.swarningln(FPSTR(L_OT_DHW), F("Failed receive temp 2"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Sensors::setValueByType(
|
|
||||||
Sensors::Type::OT_DHW_TEMP2, convertedDhwTemp2,
|
|
||||||
Sensors::ValueType::PRIMARY, true, true
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update DHW flow rate
|
// Update DHW flow rate
|
||||||
@@ -574,15 +586,15 @@ protected:
|
|||||||
vars.slave.dhw.flowRate, convertedDhwFlowRate
|
vars.slave.dhw.flowRate, convertedDhwFlowRate
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Sensors::setValueByType(
|
||||||
|
Sensors::Type::OT_DHW_FLOW_RATE, convertedDhwFlowRate,
|
||||||
|
Sensors::ValueType::PRIMARY, true, true
|
||||||
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Log.swarningln(FPSTR(L_OT_DHW), F("Failed receive flow rate"));
|
Log.swarningln(FPSTR(L_OT_DHW), F("Failed receive flow rate"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Sensors::setValueByType(
|
|
||||||
Sensors::Type::OT_DHW_FLOW_RATE, convertedDhwFlowRate,
|
|
||||||
Sensors::ValueType::PRIMARY, true, true
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update heating temp
|
// Update heating temp
|
||||||
@@ -602,14 +614,14 @@ protected:
|
|||||||
vars.slave.heating.currentTemp, convertedHeatingTemp
|
vars.slave.heating.currentTemp, convertedHeatingTemp
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Sensors::setValueByType(
|
||||||
|
Sensors::Type::OT_HEATING_TEMP, convertedHeatingTemp,
|
||||||
|
Sensors::ValueType::PRIMARY, true, true
|
||||||
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Log.swarningln(FPSTR(L_OT_HEATING), F("Failed receive temp"));
|
Log.swarningln(FPSTR(L_OT_HEATING), F("Failed receive temp"));
|
||||||
}
|
}
|
||||||
|
|
||||||
Sensors::setValueByType(
|
|
||||||
Sensors::Type::OT_HEATING_TEMP, convertedHeatingTemp,
|
|
||||||
Sensors::ValueType::PRIMARY, true, true
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update heating return temp
|
// Update heating return temp
|
||||||
@@ -629,14 +641,14 @@ protected:
|
|||||||
vars.slave.heating.returnTemp, convertedHeatingReturnTemp
|
vars.slave.heating.returnTemp, convertedHeatingReturnTemp
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Sensors::setValueByType(
|
||||||
|
Sensors::Type::OT_HEATING_RETURN_TEMP, convertedHeatingReturnTemp,
|
||||||
|
Sensors::ValueType::PRIMARY, true, true
|
||||||
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Log.swarningln(FPSTR(L_OT_HEATING), F("Failed receive return temp"));
|
Log.swarningln(FPSTR(L_OT_HEATING), F("Failed receive return temp"));
|
||||||
}
|
}
|
||||||
|
|
||||||
Sensors::setValueByType(
|
|
||||||
Sensors::Type::OT_HEATING_RETURN_TEMP, convertedHeatingReturnTemp,
|
|
||||||
Sensors::ValueType::PRIMARY, true, true
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update CH2 temp
|
// Update CH2 temp
|
||||||
@@ -659,15 +671,15 @@ protected:
|
|||||||
vars.slave.ch2.currentTemp, convertedCh2Temp
|
vars.slave.ch2.currentTemp, convertedCh2Temp
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Sensors::setValueByType(
|
||||||
|
Sensors::Type::OT_CH2_TEMP, convertedCh2Temp,
|
||||||
|
Sensors::ValueType::PRIMARY, true, true
|
||||||
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Log.swarningln(FPSTR(L_OT_CH2), F("Failed receive temp"));
|
Log.swarningln(FPSTR(L_OT_CH2), F("Failed receive temp"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Sensors::setValueByType(
|
|
||||||
Sensors::Type::OT_CH2_TEMP, convertedCh2Temp,
|
|
||||||
Sensors::ValueType::PRIMARY, true, true
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update exhaust temp
|
// Update exhaust temp
|
||||||
@@ -687,14 +699,14 @@ protected:
|
|||||||
vars.slave.exhaustTemp, convertedExhaustTemp
|
vars.slave.exhaustTemp, convertedExhaustTemp
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Sensors::setValueByType(
|
||||||
|
Sensors::Type::OT_EXHAUST_TEMP, convertedExhaustTemp,
|
||||||
|
Sensors::ValueType::PRIMARY, true, true
|
||||||
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Log.swarningln(FPSTR(L_OT), F("Failed receive exhaust temp"));
|
Log.swarningln(FPSTR(L_OT), F("Failed receive exhaust temp"));
|
||||||
}
|
}
|
||||||
|
|
||||||
Sensors::setValueByType(
|
|
||||||
Sensors::Type::OT_EXHAUST_TEMP, convertedExhaustTemp,
|
|
||||||
Sensors::ValueType::PRIMARY, true, true
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update heat exchanger temp
|
// Update heat exchanger temp
|
||||||
@@ -714,14 +726,14 @@ protected:
|
|||||||
vars.slave.heatExchangerTemp, convertedHeatExchTemp
|
vars.slave.heatExchangerTemp, convertedHeatExchTemp
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Sensors::setValueByType(
|
||||||
|
Sensors::Type::OT_HEAT_EXCHANGER_TEMP, convertedHeatExchTemp,
|
||||||
|
Sensors::ValueType::PRIMARY, true, true
|
||||||
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Log.swarningln(FPSTR(L_OT), F("Failed receive heat exchanger temp"));
|
Log.swarningln(FPSTR(L_OT), F("Failed receive heat exchanger temp"));
|
||||||
}
|
}
|
||||||
|
|
||||||
Sensors::setValueByType(
|
|
||||||
Sensors::Type::OT_HEAT_EXCHANGER_TEMP, convertedHeatExchTemp,
|
|
||||||
Sensors::ValueType::PRIMARY, true, true
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update outdoor temp
|
// Update outdoor temp
|
||||||
@@ -741,14 +753,14 @@ protected:
|
|||||||
vars.slave.heating.outdoorTemp, convertedOutdoorTemp
|
vars.slave.heating.outdoorTemp, convertedOutdoorTemp
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Sensors::setValueByType(
|
||||||
|
Sensors::Type::OT_OUTDOOR_TEMP, convertedOutdoorTemp,
|
||||||
|
Sensors::ValueType::PRIMARY, true, true
|
||||||
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Log.swarningln(FPSTR(L_OT), F("Failed receive outdoor temp"));
|
Log.swarningln(FPSTR(L_OT), F("Failed receive outdoor temp"));
|
||||||
}
|
}
|
||||||
|
|
||||||
Sensors::setValueByType(
|
|
||||||
Sensors::Type::OT_OUTDOOR_TEMP, convertedOutdoorTemp,
|
|
||||||
Sensors::ValueType::PRIMARY, true, true
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update pressure
|
// Update pressure
|
||||||
@@ -768,14 +780,14 @@ protected:
|
|||||||
vars.slave.pressure, convertedPressure
|
vars.slave.pressure, convertedPressure
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Sensors::setValueByType(
|
||||||
|
Sensors::Type::OT_PRESSURE, convertedPressure,
|
||||||
|
Sensors::ValueType::PRIMARY, true, true
|
||||||
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Log.swarningln(FPSTR(L_OT), F("Failed receive pressure"));
|
Log.swarningln(FPSTR(L_OT), F("Failed receive pressure"));
|
||||||
}
|
}
|
||||||
|
|
||||||
Sensors::setValueByType(
|
|
||||||
Sensors::Type::OT_PRESSURE, convertedPressure,
|
|
||||||
Sensors::ValueType::PRIMARY, true, true
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -106,21 +106,15 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline float getHeatingMinSetpointTemp() {
|
inline float getHeatingMinSetpointTemp() {
|
||||||
if (settings.opentherm.nativeHeatingControl) {
|
return settings.opentherm.nativeHeatingControl
|
||||||
return vars.master.heating.minTemp;
|
? vars.master.heating.minTemp
|
||||||
|
: settings.heating.minTemp;
|
||||||
} else {
|
|
||||||
return settings.heating.minTemp;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline float getHeatingMaxSetpointTemp() {
|
inline float getHeatingMaxSetpointTemp() {
|
||||||
if (settings.opentherm.nativeHeatingControl) {
|
return settings.opentherm.nativeHeatingControl
|
||||||
return vars.master.heating.maxTemp;
|
? vars.master.heating.maxTemp
|
||||||
|
: settings.heating.maxTemp;
|
||||||
} else {
|
|
||||||
return settings.heating.maxTemp;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float getHeatingSetpointTemp() {
|
float getHeatingSetpointTemp() {
|
||||||
|
|||||||
@@ -171,41 +171,44 @@ public:
|
|||||||
auto& rSensor = results[sensorId];
|
auto& rSensor = results[sensorId];
|
||||||
|
|
||||||
float compensatedValue = value;
|
float compensatedValue = value;
|
||||||
if (valueType == ValueType::PRIMARY) {
|
if (sSensor.type == Type::HEATING_SETPOINT_TEMP || sSensor.type == Type::MANUAL) {
|
||||||
if (fabsf(sSensor.factor) > 0.001f) {
|
|
||||||
compensatedValue *= sSensor.factor;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fabsf(sSensor.offset) > 0.001f) {
|
|
||||||
compensatedValue += sSensor.offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if (valueType == ValueType::RSSI) {
|
|
||||||
if (sSensor.type == Type::BLUETOOTH) {
|
|
||||||
rSensor.signalQuality = Sensors::bluetoothRssiToQuality(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sSensor.filtering && fabs(rSensor.values[valueId]) >= 0.1f) {
|
|
||||||
rSensor.values[valueId] += (compensatedValue - rSensor.values[valueId]) * sSensor.filteringFactor;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
rSensor.values[valueId] = compensatedValue;
|
rSensor.values[valueId] = compensatedValue;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (valueType == ValueType::PRIMARY) {
|
||||||
|
if (fabsf(sSensor.factor) > 0.001f) {
|
||||||
|
compensatedValue *= sSensor.factor;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fabsf(sSensor.offset) > 0.001f) {
|
||||||
|
compensatedValue += sSensor.offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (valueType == ValueType::RSSI) {
|
||||||
|
if (sSensor.type == Type::BLUETOOTH) {
|
||||||
|
rSensor.signalQuality = Sensors::bluetoothRssiToQuality(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sSensor.filtering && fabsf(rSensor.values[valueId]) >= 0.1f) {
|
||||||
|
rSensor.values[valueId] += (compensatedValue - rSensor.values[valueId]) * sSensor.filteringFactor;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
rSensor.values[valueId] = compensatedValue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (updateActivityTime) {
|
if (updateActivityTime) {
|
||||||
rSensor.activityTime = millis();
|
rSensor.activityTime = millis();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (markConnected) {
|
if (markConnected && !rSensor.connected) {
|
||||||
if (!rSensor.connected) {
|
rSensor.connected = true;
|
||||||
rSensor.connected = true;
|
|
||||||
|
|
||||||
Log.snoticeln(
|
Log.snoticeln(
|
||||||
FPSTR(L_SENSORS), F("#%hhu '%s' new status: CONNECTED"),
|
FPSTR(L_SENSORS), F("#%hhu '%s' new status: CONNECTED"),
|
||||||
sensorId, sSensor.name
|
sensorId, sSensor.name
|
||||||
);
|
);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.snoticeln(
|
Log.snoticeln(
|
||||||
|
|||||||
@@ -114,10 +114,10 @@
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<hr />
|
<hr class="correction" />
|
||||||
|
|
||||||
<fieldset>
|
<details class="correction">
|
||||||
<legend><b data-i18n>sensors.correction.desc</b></legend>
|
<summary><b data-i18n>sensors.correction.desc</b></summary>
|
||||||
|
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
<label>
|
<label>
|
||||||
@@ -130,27 +130,30 @@
|
|||||||
<input type="number" inputmode="numeric" name="factor" min="0.01" max="10" step="0.01" required>
|
<input type="number" inputmode="numeric" name="factor" min="0.01" max="10" step="0.01" required>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</details>
|
||||||
|
|
||||||
<hr />
|
<hr class="filtering" />
|
||||||
|
|
||||||
<fieldset>
|
<details class="filtering">
|
||||||
<legend><b data-i18n>sensors.filtering.desc</b></legend>
|
<summary><b data-i18n>sensors.filtering.desc</b></summary>
|
||||||
|
|
||||||
<label>
|
|
||||||
<input type="checkbox" name="filtering" value="true">
|
|
||||||
<span data-i18n>sensors.filtering.enabled.title</span>
|
|
||||||
<br />
|
|
||||||
<small data-i18n>sensors.filtering.enabled.note</small>
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<label>
|
|
||||||
<span data-i18n>sensors.filtering.factor.title</span>
|
|
||||||
<input type="number" inputmode="numeric" name="filteringFactor" min="0.01" max="1" step="0.01">
|
|
||||||
<small data-i18n>sensors.filtering.factor.note</small>
|
|
||||||
</label>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" name="filtering" value="true">
|
||||||
|
<span data-i18n>sensors.filtering.enabled.title</span>
|
||||||
|
<br />
|
||||||
|
<small data-i18n>sensors.filtering.enabled.note</small>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label>
|
||||||
|
<span data-i18n>sensors.filtering.factor.title</span>
|
||||||
|
<input type="number" inputmode="numeric" name="filteringFactor" min="0.01" max="1" step="0.01">
|
||||||
|
<small data-i18n>sensors.filtering.factor.note</small>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<br/>
|
||||||
<button type="submit" data-i18n>button.save</button>
|
<button type="submit" data-i18n>button.save</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
@@ -221,6 +224,20 @@
|
|||||||
const parentGpio = gpio.parentElement;
|
const parentGpio = gpio.parentElement;
|
||||||
const parentAddress = address.parentElement;
|
const parentAddress = address.parentElement;
|
||||||
|
|
||||||
|
switch(parseInt(event.target.value)) {
|
||||||
|
// heating setpoint, manual
|
||||||
|
case 253:
|
||||||
|
case 254:
|
||||||
|
hide(".correction", sensorForm);
|
||||||
|
hide(".filtering", sensorForm);
|
||||||
|
break;
|
||||||
|
|
||||||
|
// other
|
||||||
|
default:
|
||||||
|
show(".correction", sensorForm);
|
||||||
|
show(".filtering", sensorForm);
|
||||||
|
}
|
||||||
|
|
||||||
switch(parseInt(event.target.value)) {
|
switch(parseInt(event.target.value)) {
|
||||||
// ntc
|
// ntc
|
||||||
case 50:
|
case 50:
|
||||||
@@ -251,6 +268,7 @@
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
sensorNode.addEventListener("click", async (event) => {
|
sensorNode.addEventListener("click", async (event) => {
|
||||||
if (parseInt(sensorNode.dataset.preloaded)) {
|
if (parseInt(sensorNode.dataset.preloaded)) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user