Merge branch 'development'
This commit is contained in:
commit
e44328bb13
14
.github/workflows/build.yml
vendored
14
.github/workflows/build.yml
vendored
@ -20,7 +20,7 @@ jobs:
|
||||
name: Gather Environments
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Cache pip
|
||||
uses: actions/cache@v3
|
||||
@ -32,7 +32,7 @@ jobs:
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: "3.9"
|
||||
python-version: "3.x"
|
||||
|
||||
- name: Install PlatformIO
|
||||
run: |
|
||||
@ -55,7 +55,7 @@ jobs:
|
||||
matrix:
|
||||
environment: ${{ fromJSON(needs.get_default_envs.outputs.environments) }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Get tags
|
||||
run: git fetch --force --tags origin
|
||||
@ -77,17 +77,17 @@ jobs:
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: "3.9"
|
||||
python-version: "3.x"
|
||||
|
||||
- name: Install PlatformIO
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install --upgrade platformio
|
||||
pip install --upgrade platformio setuptools
|
||||
|
||||
- name: Setup Node.js and yarn
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: "18"
|
||||
node-version: "20"
|
||||
cache: "yarn"
|
||||
cache-dependency-path: "webapp/yarn.lock"
|
||||
|
||||
|
||||
@ -88,6 +88,8 @@ struct CONFIG_T {
|
||||
char WiFi_Hostname[WIFI_MAX_HOSTNAME_STRLEN + 1];
|
||||
uint32_t WiFi_ApTimeout;
|
||||
|
||||
bool Mdns_Enabled;
|
||||
|
||||
char Ntp_Server[NTP_MAX_SERVER_STRLEN + 1];
|
||||
char Ntp_Timezone[NTP_MAX_TIMEZONE_STRLEN + 1];
|
||||
char Ntp_TimezoneDescr[NTP_MAX_TIMEZONEDESCR_STRLEN + 1];
|
||||
|
||||
@ -3,6 +3,8 @@
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#define INVERTER_UPDATE_SETTINGS_INTERVAL 60000l
|
||||
|
||||
class InverterSettingsClass {
|
||||
public:
|
||||
void init();
|
||||
@ -12,4 +14,4 @@ private:
|
||||
uint32_t _lastUpdate = 0;
|
||||
};
|
||||
|
||||
extern InverterSettingsClass InverterSettings;
|
||||
extern InverterSettingsClass InverterSettings;
|
||||
|
||||
@ -59,6 +59,7 @@ public:
|
||||
private:
|
||||
void setHostname();
|
||||
void setStaticIp();
|
||||
void handleMDNS();
|
||||
void setupMode();
|
||||
void NetworkEvent(WiFiEvent_t event);
|
||||
bool adminEnabled = true;
|
||||
@ -76,6 +77,7 @@ private:
|
||||
network_mode _networkMode = network_mode::Undefined;
|
||||
bool _ethConnected = false;
|
||||
std::vector<NetworkEventCbList_t> _cbEventList;
|
||||
bool lastMdnsEnabled = false;
|
||||
};
|
||||
|
||||
extern NetworkSettingsClass NetworkSettings;
|
||||
@ -1,10 +1,9 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include <mutex>
|
||||
#include <sunset.h>
|
||||
|
||||
#define SUNPOS_UPDATE_INTERVAL 60000l
|
||||
|
||||
class SunPositionClass {
|
||||
public:
|
||||
SunPositionClass();
|
||||
@ -15,9 +14,12 @@ public:
|
||||
bool isSunsetAvailable();
|
||||
bool sunsetTime(struct tm* info);
|
||||
bool sunriseTime(struct tm* info);
|
||||
void setDoRecalc(bool doRecalc);
|
||||
|
||||
private:
|
||||
void updateSunData();
|
||||
bool checkRecalcDayChanged();
|
||||
bool getDoRecalc();
|
||||
|
||||
SunSet _sun;
|
||||
bool _isDayPeriod = true;
|
||||
@ -25,8 +27,10 @@ private:
|
||||
uint32_t _sunriseMinutes = 0;
|
||||
uint32_t _sunsetMinutes = 0;
|
||||
|
||||
uint32_t _lastUpdate = 0;
|
||||
bool _isValidInfo = false;
|
||||
bool _doRecalc = true;
|
||||
std::mutex _recalcLock;
|
||||
uint32_t _lastSunPositionCalculatedYMD = 0;
|
||||
};
|
||||
|
||||
extern SunPositionClass SunPosition;
|
||||
extern SunPositionClass SunPosition;
|
||||
|
||||
@ -20,6 +20,8 @@
|
||||
#define WIFI_PASSWORD ""
|
||||
#define WIFI_DHCP true
|
||||
|
||||
#define MDNS_ENABLED false
|
||||
|
||||
#define NTP_SERVER "pool.ntp.org"
|
||||
#define NTP_TIMEZONE "CET-1CEST,M3.5.0,M10.5.0/3"
|
||||
#define NTP_TIMEZONEDESCR "Europe/Berlin"
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
#include "inverters/HMS_1CHv2.h"
|
||||
#include "inverters/HMS_2CH.h"
|
||||
#include "inverters/HMS_4CH.h"
|
||||
#include "inverters/HMT_4CH.h"
|
||||
#include "inverters/HMT_6CH.h"
|
||||
#include "inverters/HM_1CH.h"
|
||||
#include "inverters/HM_2CH.h"
|
||||
@ -52,6 +53,11 @@ void HoymilesClass::loop()
|
||||
|
||||
if (iv != nullptr && iv->getRadio()->isInitialized() && iv->getRadio()->isQueueEmpty()) {
|
||||
|
||||
if (iv->getZeroValuesIfUnreachable() && !iv->isReachable()) {
|
||||
Hoymiles.getMessageOutput()->println("Set runtime data to zero");
|
||||
iv->Statistics()->zeroRuntimeData();
|
||||
}
|
||||
|
||||
if (iv->getEnablePolling() || iv->getEnableCommands()) {
|
||||
_messageOutput->print("Fetch inverter: ");
|
||||
_messageOutput->println(iv->serial(), HEX);
|
||||
@ -140,7 +146,9 @@ void HoymilesClass::loop()
|
||||
std::shared_ptr<InverterAbstract> HoymilesClass::addInverter(const char* name, uint64_t serial)
|
||||
{
|
||||
std::shared_ptr<InverterAbstract> i = nullptr;
|
||||
if (HMT_6CH::isValidSerial(serial)) {
|
||||
if (HMT_4CH::isValidSerial(serial)) {
|
||||
i = std::make_shared<HMT_4CH>(_radioCmt.get(), serial);
|
||||
} else if (HMT_6CH::isValidSerial(serial)) {
|
||||
i = std::make_shared<HMT_6CH>(_radioCmt.get(), serial);
|
||||
} else if (HMS_4CH::isValidSerial(serial)) {
|
||||
i = std::make_shared<HMS_4CH>(_radioCmt.get(), serial);
|
||||
|
||||
@ -55,9 +55,4 @@ bool RealTimeRunDataCommand::handleResponse(InverterAbstract* inverter, fragment
|
||||
void RealTimeRunDataCommand::gotTimeout(InverterAbstract* inverter)
|
||||
{
|
||||
inverter->Statistics()->incrementRxFailureCount();
|
||||
|
||||
if (inverter->getZeroValuesIfUnreachable() && !inverter->isReachable()) {
|
||||
Hoymiles.getMessageOutput()->println("Set runtime data to zero");
|
||||
inverter->Statistics()->zeroRuntimeData();
|
||||
}
|
||||
}
|
||||
@ -40,7 +40,7 @@ bool HMS_1CH::isValidSerial(uint64_t serial)
|
||||
|
||||
String HMS_1CH::typeName()
|
||||
{
|
||||
return "HMS-300, HMS-350, HMS-400, HMS-450, HMS-500";
|
||||
return "HMS-300/350/400/450/500-1T";
|
||||
}
|
||||
|
||||
const byteAssign_t* HMS_1CH::getByteAssignment()
|
||||
|
||||
@ -40,7 +40,7 @@ bool HMS_1CHv2::isValidSerial(uint64_t serial)
|
||||
|
||||
String HMS_1CHv2::typeName()
|
||||
{
|
||||
return "HMS-500 v2";
|
||||
return "HMS-500-1T v2";
|
||||
}
|
||||
|
||||
const byteAssign_t* HMS_1CHv2::getByteAssignment()
|
||||
|
||||
@ -47,7 +47,7 @@ bool HMS_2CH::isValidSerial(uint64_t serial)
|
||||
|
||||
String HMS_2CH::typeName()
|
||||
{
|
||||
return "HMS-600, HMS-700, HMS-800, HMS-900, HMS-1000";
|
||||
return "HMS-600/700/800/900/1000-2T";
|
||||
}
|
||||
|
||||
const byteAssign_t* HMS_2CH::getByteAssignment()
|
||||
|
||||
@ -54,14 +54,14 @@ HMS_4CH::HMS_4CH(HoymilesRadio* radio, uint64_t serial)
|
||||
|
||||
bool HMS_4CH::isValidSerial(uint64_t serial)
|
||||
{
|
||||
// serial >= 0x114400000000 && serial <= 0x114499999999
|
||||
// serial >= 0x116400000000 && serial <= 0x116499999999
|
||||
uint16_t preSerial = (serial >> 32) & 0xffff;
|
||||
return preSerial == 0x1164;
|
||||
}
|
||||
|
||||
String HMS_4CH::typeName()
|
||||
{
|
||||
return "HMS-1600, HMS-1800, HMS-2000";
|
||||
return "HMS-1600/1800/2000";
|
||||
}
|
||||
|
||||
const byteAssign_t* HMS_4CH::getByteAssignment()
|
||||
|
||||
84
lib/Hoymiles/src/inverters/HMT_4CH.cpp
Normal file
84
lib/Hoymiles/src/inverters/HMT_4CH.cpp
Normal file
@ -0,0 +1,84 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* Copyright (C) 2023 Thomas Basler and others
|
||||
*/
|
||||
#include "HMT_4CH.h"
|
||||
|
||||
static const byteAssign_t byteAssignment[] = {
|
||||
{ TYPE_DC, CH0, FLD_UDC, UNIT_V, 2, 2, 10, false, 1 },
|
||||
{ TYPE_DC, CH0, FLD_IDC, UNIT_A, 4, 2, 100, false, 2 },
|
||||
{ TYPE_DC, CH0, FLD_PDC, UNIT_W, 8, 2, 10, false, 1 },
|
||||
{ TYPE_DC, CH0, FLD_YT, UNIT_KWH, 12, 4, 1000, false, 3 },
|
||||
{ TYPE_DC, CH0, FLD_YD, UNIT_WH, 20, 2, 1, false, 0 },
|
||||
{ TYPE_DC, CH0, FLD_IRR, UNIT_PCT, CALC_IRR_CH, CH0, CMD_CALC, false, 3 },
|
||||
|
||||
{ TYPE_DC, CH1, FLD_UDC, UNIT_V, 2, 2, 10, false, 1 },
|
||||
{ TYPE_DC, CH1, FLD_IDC, UNIT_A, 6, 2, 100, false, 2 },
|
||||
{ TYPE_DC, CH1, FLD_PDC, UNIT_W, 10, 2, 10, false, 1 },
|
||||
{ TYPE_DC, CH1, FLD_YT, UNIT_KWH, 16, 4, 1000, false, 3 },
|
||||
{ TYPE_DC, CH1, FLD_YD, UNIT_WH, 22, 2, 1, false, 0 },
|
||||
{ TYPE_DC, CH1, FLD_IRR, UNIT_PCT, CALC_IRR_CH, CH1, CMD_CALC, false, 3 },
|
||||
|
||||
{ TYPE_DC, CH2, FLD_UDC, UNIT_V, 24, 2, 10, false, 1 },
|
||||
{ TYPE_DC, CH2, FLD_IDC, UNIT_A, 26, 2, 100, false, 2 },
|
||||
{ TYPE_DC, CH2, FLD_PDC, UNIT_W, 30, 2, 10, false, 1 },
|
||||
{ TYPE_DC, CH2, FLD_YT, UNIT_KWH, 34, 4, 1000, false, 3 },
|
||||
{ TYPE_DC, CH2, FLD_YD, UNIT_WH, 42, 2, 1, false, 0 },
|
||||
{ TYPE_DC, CH2, FLD_IRR, UNIT_PCT, CALC_IRR_CH, CH2, CMD_CALC, false, 3 },
|
||||
|
||||
{ TYPE_DC, CH3, FLD_UDC, UNIT_V, 24, 2, 10, false, 1 },
|
||||
{ TYPE_DC, CH3, FLD_IDC, UNIT_A, 28, 2, 100, false, 2 },
|
||||
{ TYPE_DC, CH3, FLD_PDC, UNIT_W, 32, 2, 10, false, 1 },
|
||||
{ TYPE_DC, CH3, FLD_YT, UNIT_KWH, 38, 4, 1000, false, 3 },
|
||||
{ TYPE_DC, CH3, FLD_YD, UNIT_WH, 44, 2, 1, false, 0 },
|
||||
{ TYPE_DC, CH3, FLD_IRR, UNIT_PCT, CALC_IRR_CH, CH3, CMD_CALC, false, 3 },
|
||||
|
||||
{ TYPE_AC, CH0, FLD_UAC, UNIT_V, 74, 2, 10, false, 1 }, // dummy
|
||||
{ TYPE_AC, CH0, FLD_UAC_1N, UNIT_V, 68, 2, 10, false, 1 },
|
||||
{ TYPE_AC, CH0, FLD_UAC_2N, UNIT_V, 70, 2, 10, false, 1 },
|
||||
{ TYPE_AC, CH0, FLD_UAC_3N, UNIT_V, 72, 2, 10, false, 1 },
|
||||
{ TYPE_AC, CH0, FLD_UAC_12, UNIT_V, 74, 2, 10, false, 1 },
|
||||
{ TYPE_AC, CH0, FLD_UAC_23, UNIT_V, 76, 2, 10, false, 1 },
|
||||
{ TYPE_AC, CH0, FLD_UAC_31, UNIT_V, 78, 2, 10, false, 1 },
|
||||
{ TYPE_AC, CH0, FLD_F, UNIT_HZ, 80, 2, 100, false, 2 },
|
||||
{ TYPE_AC, CH0, FLD_PAC, UNIT_W, 82, 2, 10, false, 1 },
|
||||
{ TYPE_AC, CH0, FLD_Q, UNIT_VAR, 84, 2, 10, true, 1 },
|
||||
{ TYPE_AC, CH0, FLD_IAC, UNIT_A, 86, 2, 100, false, 2 }, // dummy
|
||||
{ TYPE_AC, CH0, FLD_IAC_1, UNIT_A, 86, 2, 100, false, 2 },
|
||||
{ TYPE_AC, CH0, FLD_IAC_2, UNIT_A, 88, 2, 100, false, 2 },
|
||||
{ TYPE_AC, CH0, FLD_IAC_3, UNIT_A, 90, 2, 100, false, 2 },
|
||||
{ TYPE_AC, CH0, FLD_PF, UNIT_NONE, 92, 2, 1000, false, 3 },
|
||||
|
||||
{ TYPE_INV, CH0, FLD_T, UNIT_C, 94, 2, 10, true, 1 },
|
||||
{ TYPE_INV, CH0, FLD_EVT_LOG, UNIT_NONE, 96, 2, 1, false, 0 },
|
||||
|
||||
{ TYPE_AC, CH0, FLD_YD, UNIT_WH, CALC_YD_CH0, 0, CMD_CALC, false, 0 },
|
||||
{ TYPE_AC, CH0, FLD_YT, UNIT_KWH, CALC_YT_CH0, 0, CMD_CALC, false, 3 },
|
||||
{ TYPE_AC, CH0, FLD_PDC, UNIT_W, CALC_PDC_CH0, 0, CMD_CALC, false, 1 },
|
||||
{ TYPE_AC, CH0, FLD_EFF, UNIT_PCT, CALC_EFF_CH0, 0, CMD_CALC, false, 3 }
|
||||
};
|
||||
|
||||
HMT_4CH::HMT_4CH(HoymilesRadio* radio, uint64_t serial)
|
||||
: HMT_Abstract(radio, serial) {};
|
||||
|
||||
bool HMT_4CH::isValidSerial(uint64_t serial)
|
||||
{
|
||||
// serial >= 0x136100000000 && serial <= 0x136199999999
|
||||
uint16_t preSerial = (serial >> 32) & 0xffff;
|
||||
return preSerial == 0x1361;
|
||||
}
|
||||
|
||||
String HMT_4CH::typeName()
|
||||
{
|
||||
return F("HMT-1600/1800/2000-4T");
|
||||
}
|
||||
|
||||
const byteAssign_t* HMT_4CH::getByteAssignment()
|
||||
{
|
||||
return byteAssignment;
|
||||
}
|
||||
|
||||
uint8_t HMT_4CH::getByteAssignmentSize()
|
||||
{
|
||||
return sizeof(byteAssignment) / sizeof(byteAssignment[0]);
|
||||
}
|
||||
13
lib/Hoymiles/src/inverters/HMT_4CH.h
Normal file
13
lib/Hoymiles/src/inverters/HMT_4CH.h
Normal file
@ -0,0 +1,13 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include "HMT_Abstract.h"
|
||||
|
||||
class HMT_4CH : public HMT_Abstract {
|
||||
public:
|
||||
explicit HMT_4CH(HoymilesRadio* radio, uint64_t serial);
|
||||
static bool isValidSerial(uint64_t serial);
|
||||
String typeName();
|
||||
const byteAssign_t* getByteAssignment();
|
||||
uint8_t getByteAssignmentSize();
|
||||
};
|
||||
@ -84,7 +84,7 @@ bool HMT_6CH::isValidSerial(uint64_t serial)
|
||||
|
||||
String HMT_6CH::typeName()
|
||||
{
|
||||
return F("HMT-1800, HMT-2250");
|
||||
return F("HMT-1800/2250-6T");
|
||||
}
|
||||
|
||||
const byteAssign_t* HMT_6CH::getByteAssignment()
|
||||
|
||||
@ -53,7 +53,7 @@ bool HM_1CH::isValidSerial(uint64_t serial)
|
||||
|
||||
String HM_1CH::typeName()
|
||||
{
|
||||
return "HM-300, HM-350, HM-400";
|
||||
return "HM-300/350/400-1T";
|
||||
}
|
||||
|
||||
const byteAssign_t* HM_1CH::getByteAssignment()
|
||||
|
||||
@ -61,7 +61,7 @@ bool HM_2CH::isValidSerial(uint64_t serial)
|
||||
|
||||
String HM_2CH::typeName()
|
||||
{
|
||||
return "HM-600, HM-700, HM-800";
|
||||
return "HM-600/700/800-2T";
|
||||
}
|
||||
|
||||
const byteAssign_t* HM_2CH::getByteAssignment()
|
||||
|
||||
@ -74,7 +74,7 @@ bool HM_4CH::isValidSerial(uint64_t serial)
|
||||
|
||||
String HM_4CH::typeName()
|
||||
{
|
||||
return "HM-1000, HM-1200, HM-1500";
|
||||
return "HM-1000/1200/1500-4T";
|
||||
}
|
||||
|
||||
const byteAssign_t* HM_4CH::getByteAssignment()
|
||||
|
||||
13
lib/Hoymiles/src/inverters/README.md
Normal file
13
lib/Hoymiles/src/inverters/README.md
Normal file
@ -0,0 +1,13 @@
|
||||
# Class overview
|
||||
|
||||
| Class | Models | Serial range |
|
||||
| --------------| --------------------------- | ------------ |
|
||||
| HM_1CH | HM-300/350/400-1T | 1121 |
|
||||
| HM_2CH | HM-600/700/800-2T | 1141 |
|
||||
| HM_4CH | HM-1000/1200/1500-4T | 1161 |
|
||||
| HMS_1CH | HMS-300/350/400/450/500-1T | 1124 |
|
||||
| HMS_1CHv2 | HMS-500-1T v2 | 1125 |
|
||||
| HMS_2CH | HMS-600/700/800/900/1000-2T | 1144 |
|
||||
| HMS_4CH | HMS-1600/1800/2000-4T | 1164 |
|
||||
| HMT_4CH | HMT-1600/1800/2000-4T | 1361 |
|
||||
| HMT_6CH | HMT-1800/2250-6T | 1382 |
|
||||
@ -7,117 +7,166 @@
|
||||
#include <cstring>
|
||||
|
||||
const std::array<const AlarmMessage_t, ALARM_MSG_COUNT> AlarmLogParser::_alarmMessages = { {
|
||||
{ AlarmMessageType_t::ALL, 1, "Inverter start" },
|
||||
{ AlarmMessageType_t::ALL, 2, "DTU command failed" },
|
||||
{ AlarmMessageType_t::ALL, 3, "EEPROM reading and writing error during operation" },
|
||||
{ AlarmMessageType_t::ALL, 4, "Offline" },
|
||||
{ AlarmMessageType_t::ALL, 11, "Grid voltage surge" },
|
||||
{ AlarmMessageType_t::ALL, 12, "Grid voltage sharp drop" },
|
||||
{ AlarmMessageType_t::ALL, 13, "Grid frequency mutation" },
|
||||
{ AlarmMessageType_t::ALL, 14, "Grid phase mutation" },
|
||||
{ AlarmMessageType_t::ALL, 15, "Grid transient fluctuation" },
|
||||
{ AlarmMessageType_t::ALL, 36, "INV overvoltage or overcurrent" },
|
||||
{ AlarmMessageType_t::ALL, 46, "FB overvoltage" },
|
||||
{ AlarmMessageType_t::ALL, 47, "FB overcurrent" },
|
||||
{ AlarmMessageType_t::ALL, 48, "FB clamp overvoltage" },
|
||||
{ AlarmMessageType_t::ALL, 49, "FB clamp overvoltage" },
|
||||
{ AlarmMessageType_t::ALL, 61, "Calibration parameter error" },
|
||||
{ AlarmMessageType_t::ALL, 62, "System configuration parameter error" },
|
||||
{ AlarmMessageType_t::ALL, 63, "Abnormal power generation data" },
|
||||
{ AlarmMessageType_t::ALL, 71, "VW function enable" },
|
||||
{ AlarmMessageType_t::ALL, 72, "FW function enable" },
|
||||
{ AlarmMessageType_t::ALL, 73, "TW function enable" },
|
||||
{ AlarmMessageType_t::ALL, 95, "PV module in suspected shadow" },
|
||||
{ AlarmMessageType_t::ALL, 96, "PV module in suspected shadow" },
|
||||
{ AlarmMessageType_t::ALL, 97, "PV module in suspected shadow" },
|
||||
{ AlarmMessageType_t::ALL, 98, "PV module in suspected shadow" },
|
||||
{ AlarmMessageType_t::ALL, 121, "Over temperature protection" },
|
||||
{ AlarmMessageType_t::ALL, 122, "Microinverter is suspected of being stolen" },
|
||||
{ AlarmMessageType_t::ALL, 123, "Locked by remote control" },
|
||||
{ AlarmMessageType_t::ALL, 124, "Shut down by remote control" },
|
||||
{ AlarmMessageType_t::ALL, 125, "Grid configuration parameter error" },
|
||||
{ AlarmMessageType_t::ALL, 126, "Software error code 126" },
|
||||
{ AlarmMessageType_t::ALL, 127, "Firmware error" },
|
||||
{ AlarmMessageType_t::ALL, 128, "Software error code 128" },
|
||||
{ AlarmMessageType_t::ALL, 129, "Abnormal bias" },
|
||||
{ AlarmMessageType_t::ALL, 130, "Offline" },
|
||||
{ AlarmMessageType_t::ALL, 141, "Grid: Grid overvoltage" },
|
||||
{ AlarmMessageType_t::ALL, 142, "Grid: 10 min value grid overvoltage" },
|
||||
{ AlarmMessageType_t::ALL, 143, "Grid: Grid undervoltage" },
|
||||
{ AlarmMessageType_t::ALL, 144, "Grid: Grid overfrequency" },
|
||||
{ AlarmMessageType_t::ALL, 145, "Grid: Grid underfrequency" },
|
||||
{ AlarmMessageType_t::ALL, 146, "Grid: Rapid grid frequency change rate" },
|
||||
{ AlarmMessageType_t::ALL, 147, "Grid: Power grid outage" },
|
||||
{ AlarmMessageType_t::ALL, 148, "Grid: Grid disconnection" },
|
||||
{ AlarmMessageType_t::ALL, 149, "Grid: Island detected" },
|
||||
{ AlarmMessageType_t::ALL, 150, "DCI exceeded" },
|
||||
{ AlarmMessageType_t::HMT, 171, "Grid: Abnormal phase difference between phase to phase" },
|
||||
{ AlarmMessageType_t::ALL, 181, "Abnormal insulation impedance" },
|
||||
{ AlarmMessageType_t::ALL, 182, "Abnormal grounding" },
|
||||
{ AlarmMessageType_t::ALL, 205, "MPPT-A: Input overvoltage" },
|
||||
{ AlarmMessageType_t::ALL, 206, "MPPT-B: Input overvoltage" },
|
||||
{ AlarmMessageType_t::ALL, 207, "MPPT-A: Input undervoltage" },
|
||||
{ AlarmMessageType_t::ALL, 208, "MPPT-B: Input undervoltage" },
|
||||
{ AlarmMessageType_t::ALL, 209, "PV-1: No input" },
|
||||
{ AlarmMessageType_t::ALL, 210, "PV-2: No input" },
|
||||
{ AlarmMessageType_t::ALL, 211, "PV-3: No input" },
|
||||
{ AlarmMessageType_t::ALL, 212, "PV-4: No input" },
|
||||
{ AlarmMessageType_t::ALL, 213, "MPPT-A: PV-1 & PV-2 abnormal wiring" },
|
||||
{ AlarmMessageType_t::ALL, 214, "MPPT-B: PV-3 & PV-4 abnormal wiring" },
|
||||
{ AlarmMessageType_t::ALL, 215, "PV-1: Input overvoltage" },
|
||||
{ AlarmMessageType_t::HMT, 215, "MPPT-C: Input overvoltage" },
|
||||
{ AlarmMessageType_t::ALL, 216, "PV-1: Input undervoltage" },
|
||||
{ AlarmMessageType_t::HMT, 216, "MPPT-C: Input undervoltage" },
|
||||
{ AlarmMessageType_t::ALL, 217, "PV-2: Input overvoltage" },
|
||||
{ AlarmMessageType_t::HMT, 217, "PV-5: No input" },
|
||||
{ AlarmMessageType_t::ALL, 218, "PV-2: Input undervoltage" },
|
||||
{ AlarmMessageType_t::HMT, 218, "PV-6: No input" },
|
||||
{ AlarmMessageType_t::ALL, 219, "PV-3: Input overvoltage" },
|
||||
{ AlarmMessageType_t::HMT, 219, "MPPT-C: PV-5 & PV-6 abnormal wiring" },
|
||||
{ AlarmMessageType_t::ALL, 220, "PV-3: Input undervoltage" },
|
||||
{ AlarmMessageType_t::ALL, 221, "PV-4: Input overvoltage" },
|
||||
{ AlarmMessageType_t::HMT, 221, "Abnormal wiring of grid neutral line" },
|
||||
{ AlarmMessageType_t::ALL, 222, "PV-4: Input undervoltage" },
|
||||
{ AlarmMessageType_t::ALL, 301, "Hardware error code 301 - FB short circuit failure" },
|
||||
{ AlarmMessageType_t::ALL, 302, "Hardware error code 302 - FB short circuit failure" },
|
||||
{ AlarmMessageType_t::ALL, 303, "Hardware error code 303 - FB overcurrent protection failure" },
|
||||
{ AlarmMessageType_t::ALL, 304, "Hardware error code 304 - FB overcurrent protection failure" },
|
||||
{ AlarmMessageType_t::ALL, 305, "Hardware error code 305 - FB clamp circuit failure" },
|
||||
{ AlarmMessageType_t::ALL, 306, "Hardware error code 306 - FB clamp circuit failure" },
|
||||
{ AlarmMessageType_t::ALL, 307, "Hardware error code 307 - INV power device failure" },
|
||||
{ AlarmMessageType_t::ALL, 308, "Hardware error code 308 - INV overcurrent or overvoltage protection failure" },
|
||||
{ AlarmMessageType_t::ALL, 309, "Hardware error code 309" },
|
||||
{ AlarmMessageType_t::ALL, 310, "Hardware error code 310" },
|
||||
{ AlarmMessageType_t::ALL, 311, "Hardware error code 311" },
|
||||
{ AlarmMessageType_t::ALL, 312, "Hardware error code 312" },
|
||||
{ AlarmMessageType_t::ALL, 313, "Hardware error code 313" },
|
||||
{ AlarmMessageType_t::ALL, 314, "Hardware error code 314" },
|
||||
{ AlarmMessageType_t::ALL, 1111, "Repeater" },
|
||||
{ AlarmMessageType_t::ALL, 5041, "Error code-04 Port 1" },
|
||||
{ AlarmMessageType_t::ALL, 5042, "Error code-04 Port 2" },
|
||||
{ AlarmMessageType_t::ALL, 5043, "Error code-04 Port 3" },
|
||||
{ AlarmMessageType_t::ALL, 5044, "Error code-04 Port 4" },
|
||||
{ AlarmMessageType_t::ALL, 5051, "PV Input 1 Overvoltage/Undervoltage" },
|
||||
{ AlarmMessageType_t::ALL, 5052, "PV Input 2 Overvoltage/Undervoltage" },
|
||||
{ AlarmMessageType_t::ALL, 5053, "PV Input 3 Overvoltage/Undervoltage" },
|
||||
{ AlarmMessageType_t::ALL, 5054, "PV Input 4 Overvoltage/Undervoltage" },
|
||||
{ AlarmMessageType_t::ALL, 5060, "Abnormal bias" },
|
||||
{ AlarmMessageType_t::ALL, 5070, "Over temperature protection" },
|
||||
{ AlarmMessageType_t::ALL, 5080, "Grid Overvoltage/Undervoltage" },
|
||||
{ AlarmMessageType_t::ALL, 5090, "Grid Overfrequency/Underfrequency" },
|
||||
{ AlarmMessageType_t::ALL, 5100, "Island detected" },
|
||||
{ AlarmMessageType_t::ALL, 5110, "GFDI" },
|
||||
{ AlarmMessageType_t::ALL, 5120, "EEPROM reading and writing error" },
|
||||
{ AlarmMessageType_t::ALL, 5141, "FB clamp overvoltage" },
|
||||
{ AlarmMessageType_t::ALL, 5142, "FB clamp overvoltage" },
|
||||
{ AlarmMessageType_t::ALL, 5143, "FB clamp overvoltage" },
|
||||
{ AlarmMessageType_t::ALL, 5144, "FB clamp overvoltage" },
|
||||
{ AlarmMessageType_t::ALL, 5150, "10 min value grid overvoltage" },
|
||||
{ AlarmMessageType_t::ALL, 5160, "Grid transient fluctuation" },
|
||||
{ AlarmMessageType_t::ALL, 5200, "Firmware error" },
|
||||
{ AlarmMessageType_t::ALL, 8310, "Shut down by remote control" },
|
||||
{ AlarmMessageType_t::ALL, 8320, "Locked by remote control" },
|
||||
{ AlarmMessageType_t::ALL, 9000, "Microinverter is suspected of being stolen" },
|
||||
{ AlarmMessageType_t::ALL, 1, "Inverter start", "Wechselrichter gestartet", "L'onduleur a démarré" },
|
||||
{ AlarmMessageType_t::ALL, 2, "Time calibration", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 3, "EEPROM reading and writing error during operation", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 4, "Offline", "Offline", "Non connecté" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 11, "Grid voltage surge", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 12, "Grid voltage sharp drop", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 13, "Grid frequency mutation", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 14, "Grid phase mutation", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 15, "Grid transient fluctuation", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 36, "INV overvoltage or overcurrent", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 46, "FB overvoltage", "FB Überspannung", "" },
|
||||
{ AlarmMessageType_t::ALL, 47, "FB overcurrent", "FB Überstrom", "" },
|
||||
{ AlarmMessageType_t::ALL, 48, "FB clamp overvoltage", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 49, "FB clamp overvoltage", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 61, "Calibration parameter error", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 62, "System configuration parameter error", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 63, "Abnormal power generation data", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 71, "Grid overvoltage load reduction (VW) function enable", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 72, "Power grid over-frequency load reduction (FW) function enable", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 73, "Over-temperature load reduction (TW) function enable", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 95, "PV-1: Module in suspected shadow", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 96, "PV-2: Module in suspected shadow", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 97, "PV-3: Module in suspected shadow", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 98, "PV-4: Module in suspected shadow", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 121, "Over temperature protection", "Übertemperaturschutz", "Protection antisurchauffe" },
|
||||
{ AlarmMessageType_t::ALL, 122, "Microinverter is suspected of being stolen", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 123, "Locked by remote control", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 124, "Shut down by remote control", "Durch Fernsteuerung abgeschaltet", "Arrêt par télécommande" },
|
||||
{ AlarmMessageType_t::ALL, 125, "Grid configuration parameter error", "Parameterfehler bei der Konfiguration des Elektrizitätsnetzes", "Erreur de paramètre de configuration du réseau" },
|
||||
{ AlarmMessageType_t::ALL, 126, "Software error code 126", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 127, "Firmware error", "Firmwarefehler", "Erreur du micrologiciel" },
|
||||
{ AlarmMessageType_t::ALL, 128, "Hardware configuration error", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 129, "Abnormal bias", "Abnormaler Trend", "Polarisation anormale" },
|
||||
{ AlarmMessageType_t::ALL, 130, "Offline", "Offline", "Non connecté" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 141, "Grid: Grid overvoltage", "Netz: Netzüberspannung", "Réseau: Surtension du réseau" },
|
||||
{ AlarmMessageType_t::ALL, 142, "Grid: 10 min value grid overvoltage", "Netz: 10 Minuten-Mittelwert der Netzüberspannung", "Réseau: Valeur de surtension du réseau pendant 10 min" },
|
||||
{ AlarmMessageType_t::ALL, 143, "Grid: Grid undervoltage", "Netz: Netzunterspannung", "Réseau: Sous-tension du réseau" },
|
||||
{ AlarmMessageType_t::ALL, 144, "Grid: Grid overfrequency", "Netz: Netzüberfrequenz", "Réseau: Surfréquence du réseau" },
|
||||
{ AlarmMessageType_t::ALL, 145, "Grid: Grid underfrequency", "Netz: Netzunterfrequenz", "Réseau: Sous-fréquence du réseau" },
|
||||
{ AlarmMessageType_t::ALL, 146, "Grid: Rapid grid frequency change rate", "Netz: Schnelle Wechselrate der Netzfrequenz", "Réseau: Taux de fluctuation rapide de la fréquence du réseau" },
|
||||
{ AlarmMessageType_t::ALL, 147, "Grid: Power grid outage", "Netz: Eletrizitätsnetzausfall", "Réseau: Panne du réseau électrique" },
|
||||
{ AlarmMessageType_t::ALL, 148, "Grid: Grid disconnection", "Netz: Netztrennung", "Réseau: Déconnexion du réseau" },
|
||||
{ AlarmMessageType_t::ALL, 149, "Grid: Island detected", "Netz: Inselbetrieb festgestellt", "Réseau: Détection d’îlots" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 150, "DCI exceeded", "", "" },
|
||||
{ AlarmMessageType_t::HMT, 171, "Grid: Abnormal phase difference between phase to phase", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 181, "Abnormal insulation impedance", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 182, "Abnormal grounding", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 205, "MPPT-A: Input overvoltage", "MPPT-A: Eingangsüberspannung", "MPPT-A: Surtension d’entrée" },
|
||||
{ AlarmMessageType_t::ALL, 206, "MPPT-B: Input overvoltage", "MPPT-B: Eingangsüberspannung", "MPPT-B: Surtension d’entrée" },
|
||||
{ AlarmMessageType_t::ALL, 207, "MPPT-A: Input undervoltage", "MPPT-A: Eingangsunterspannung", "MPPT-A: Sous-tension d’entrée" },
|
||||
{ AlarmMessageType_t::ALL, 208, "MPPT-B: Input undervoltage", "MPPT-B: Eingangsunterspannung", "MPPT-B: Sous-tension d’entrée" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 209, "PV-1: No input", "PV-1: Kein Eingang", "PV-1: Aucune entrée" },
|
||||
{ AlarmMessageType_t::ALL, 210, "PV-2: No input", "PV-2: Kein Eingang", "PV-2: Aucune entrée" },
|
||||
{ AlarmMessageType_t::ALL, 211, "PV-3: No input", "PV-3: Kein Eingang", "PV-3: Aucune entrée" },
|
||||
{ AlarmMessageType_t::ALL, 212, "PV-4: No input", "PV-4: Kein Eingang", "PV-4: Aucune entrée" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 213, "MPPT-A: PV-1 & PV-2 abnormal wiring", "MPPT-A: Verdrahtungsfehler bei PV-1 und PV-2", "MPPT-A: Câblages photovoltaïques 1 et 2 anormaux" },
|
||||
{ AlarmMessageType_t::ALL, 214, "MPPT-B: PV-3 & PV-4 abnormal wiring", "MPPT-B: Verdrahtungsfehler bei PV-3 und PV-4", "MPPT-B: Câblages photovoltaïques 3 et 4 anormaux" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 215, "PV-1: Input overvoltage", "PV-1: Eingangsüberspannung", "PV-1: Surtension d’entrée" },
|
||||
{ AlarmMessageType_t::HMT, 215, "MPPT-C: Input overvoltage", "MPPT-C: Eingangsüberspannung", "MPPT-C: Surtension d’entrée" },
|
||||
{ AlarmMessageType_t::ALL, 216, "PV-1: Input undervoltage", "PV-1: Eingangsunterspannung", "PV-1: Sous-tension d’entrée" },
|
||||
{ AlarmMessageType_t::HMT, 216, "MPPT-C: Input undervoltage", "MPPT-C: Eingangsunterspannung", "MPPT-C: Sous-tension d’entrée" },
|
||||
{ AlarmMessageType_t::ALL, 217, "PV-2: Input overvoltage", "PV-2: Eingangsüberspannung", "PV-2: Surtension d’entrée" },
|
||||
{ AlarmMessageType_t::HMT, 217, "PV-5: No input", "PV-5: Kein Eingang", "PV-5: Aucune entrée" },
|
||||
{ AlarmMessageType_t::ALL, 218, "PV-2: Input undervoltage", "PV-2: Eingangsunterspannung", "PV-2: Sous-tension d’entrée" },
|
||||
{ AlarmMessageType_t::HMT, 218, "PV-6: No input", "PV-6: Kein Eingang", "PV-6: Aucune entrée" },
|
||||
{ AlarmMessageType_t::ALL, 219, "PV-3: Input overvoltage", "PV-3: Eingangsüberspannung", "PV-3: Surtension d’entrée" },
|
||||
{ AlarmMessageType_t::HMT, 219, "MPPT-C: PV-5 & PV-6 abnormal wiring", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 220, "PV-3: Input undervoltage", "PV-3: Eingangsunterspannung", "PV-3: Sous-tension d’entrée" },
|
||||
{ AlarmMessageType_t::ALL, 221, "PV-4: Input overvoltage", "PV-4: Eingangsüberspannung", "PV-4: Surtension d’entrée" },
|
||||
{ AlarmMessageType_t::HMT, 221, "Abnormal wiring of grid neutral line", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 222, "PV-4: Input undervoltage", "PV-4: Eingangsunterspannung", "PV-4: Sous-tension d’entrée" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 301, "FB-A: internal short circuit failure", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 302, "FB-B: internal short circuit failure", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 303, "FB-A: overcurrent protection failure", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 304, "FB-B: overcurrent protection failure", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 305, "FB-A: clamp circuit failure", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 306, "FB-B: clamp circuit failure", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 307, "INV power device failure", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 308, "INV overcurrent or overvoltage protection failure", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 309, "Hardware error code 309", "Hardwarefehlercode 309", "" },
|
||||
{ AlarmMessageType_t::ALL, 310, "Hardware error code 310", "Hardwarefehlercode 310", "" },
|
||||
{ AlarmMessageType_t::ALL, 311, "Hardware error code 311", "Hardwarefehlercode 311", "" },
|
||||
{ AlarmMessageType_t::ALL, 312, "Hardware error code 312", "Hardwarefehlercode 312", "" },
|
||||
{ AlarmMessageType_t::ALL, 313, "Hardware error code 313", "Hardwarefehlercode 313", "" },
|
||||
{ AlarmMessageType_t::ALL, 314, "Hardware error code 314", "Hardwarefehlercode 314", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 1111, "Repeater", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 2000, "Standby", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 2001, "Standby", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 2002, "Standby", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 2003, "Standby", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 2004, "Standby", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 3001, "Reset", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 3002, "Reset", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 3003, "Reset", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 3004, "Reset", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 5011, "PV-1: MOSFET overcurrent (II)", "PV-1: MOSFET Überstrom (II)", "" },
|
||||
{ AlarmMessageType_t::ALL, 5012, "PV-2: MOSFET overcurrent (II)", "PV-2: MOSFET Überstrom (II)", "" },
|
||||
{ AlarmMessageType_t::ALL, 5013, "PV-3: MOSFET overcurrent (II)", "PV-3: MOSFET Überstrom (II)", "" },
|
||||
{ AlarmMessageType_t::ALL, 5014, "PV-4: MOSFET overcurrent (II)", "PV-4: MOSFET Überstrom (II)", "" },
|
||||
{ AlarmMessageType_t::ALL, 5020, "H-bridge MOSFET overcurrent or H-bridge overvoltage", "H-Brücken-MOSFET-Überstrom oder H-Brücken-Überspannung", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 5041, "PV-1: current overcurrent (II)", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 5042, "PV-2: current overcurrent (II)", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 5043, "PV-3: current overcurrent (II)", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 5044, "PV-4: current overcurrent (II)", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 5051, "PV-1: Overvoltage/Undervoltage", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 5052, "PV-2: Overvoltage/Undervoltage", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 5053, "PV-3: Overvoltage/Undervoltage", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 5054, "PV-4: Overvoltage/Undervoltage", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 5060, "Abnormal bias", "Abnormaler Trend", "Polarisation anormale" },
|
||||
{ AlarmMessageType_t::ALL, 5070, "Over temperature protection", "Übertemperaturschutz", "Protection antisurchauffe" },
|
||||
{ AlarmMessageType_t::ALL, 5080, "Grid Overvoltage/Undervoltage", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 5090, "Grid Overfrequency/Underfrequency", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 5100, "Island detected", "Inselbetrieb festgestellt", "Détection d’îlots" },
|
||||
{ AlarmMessageType_t::ALL, 5110, "GFDI failure", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 5120, "EEPROM reading and writing error", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 5141, "FB clamp overvoltage", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 5142, "FB clamp overvoltage", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 5143, "FB clamp overvoltage", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 5144, "FB clamp overvoltage", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 5150, "10 min value grid overvoltage", "10 Minuten-Mittelwert der Netzüberspannung", "Valeur de surtension du réseau pendant 10 min" },
|
||||
{ AlarmMessageType_t::ALL, 5160, "Grid transient fluctuation", "", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 5200, "Firmware error", "Firmwarefehler", "Erreur du micrologiciel" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 5511, "PV-1: MOSFET overcurrent-H", "PV-1: MOSFET Überstrom-H", "" },
|
||||
{ AlarmMessageType_t::ALL, 5512, "PV-2: MOSFET overcurrent-H", "PV-2: MOSFET Überstrom-H", "" },
|
||||
{ AlarmMessageType_t::ALL, 5513, "PV-3: MOSFET overcurrent-H", "PV-3: MOSFET Überstrom-H", "" },
|
||||
{ AlarmMessageType_t::ALL, 5514, "PV-4: MOSFET overcurrent-H", "PV-4: MOSFET Überstrom-H", "" },
|
||||
{ AlarmMessageType_t::ALL, 5520, "H-bridge MOSFET overcurrent or H-bridge overvoltage", "H-Brücken-MOSFET-Überstrom oder H-Brücken-Überspannung", "" },
|
||||
|
||||
{ AlarmMessageType_t::ALL, 8310, "Shut down by remote control", "Durch Fernsteuerung abgeschaltet", "Arrêt par télécommande" },
|
||||
{ AlarmMessageType_t::ALL, 8320, "Locked by remote control", "", "" },
|
||||
{ AlarmMessageType_t::ALL, 9000, "Microinverter is suspected of being stolen", "", "" },
|
||||
} };
|
||||
|
||||
AlarmLogParser::AlarmLogParser()
|
||||
@ -165,7 +214,7 @@ void AlarmLogParser::setMessageType(AlarmMessageType_t type)
|
||||
_messageType = type;
|
||||
}
|
||||
|
||||
void AlarmLogParser::getLogEntry(uint8_t entryId, AlarmLogEntry_t* entry)
|
||||
void AlarmLogParser::getLogEntry(uint8_t entryId, AlarmLogEntry_t* entry, AlarmMessageLocale_t locale)
|
||||
{
|
||||
uint8_t entryStartOffset = 2 + entryId * ALARM_LOG_ENTRY_SIZE;
|
||||
|
||||
@ -194,19 +243,42 @@ void AlarmLogParser::getLogEntry(uint8_t entryId, AlarmLogEntry_t* entry)
|
||||
entry->EndTime += (endTimeOffset + timezoneOffset);
|
||||
}
|
||||
|
||||
entry->Message = "Unknown";
|
||||
switch (locale) {
|
||||
case AlarmMessageLocale_t::DE:
|
||||
entry->Message = "Unbekannt";
|
||||
break;
|
||||
case AlarmMessageLocale_t::FR:
|
||||
entry->Message = "Inconnu";
|
||||
break;
|
||||
default:
|
||||
entry->Message = "Unknown";
|
||||
}
|
||||
|
||||
for (auto& msg : _alarmMessages) {
|
||||
if (msg.MessageId == entry->MessageId) {
|
||||
if (msg.InverterType == _messageType) {
|
||||
entry->Message = msg.Message;
|
||||
entry->Message = getLocaleMessage(&msg, locale);
|
||||
break;
|
||||
} else if (msg.InverterType == AlarmMessageType_t::ALL) {
|
||||
entry->Message = msg.Message;
|
||||
entry->Message = getLocaleMessage(&msg, locale);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String AlarmLogParser::getLocaleMessage(const AlarmMessage_t* msg, AlarmMessageLocale_t locale)
|
||||
{
|
||||
if (locale == AlarmMessageLocale_t::DE) {
|
||||
return msg->Message_de[0] != '\0' ? msg->Message_de : msg->Message_en;
|
||||
}
|
||||
|
||||
if (locale == AlarmMessageLocale_t::FR) {
|
||||
return msg->Message_fr[0] != '\0' ? msg->Message_fr : msg->Message_en;
|
||||
}
|
||||
|
||||
return msg->Message_en;
|
||||
}
|
||||
|
||||
int AlarmLogParser::getTimezoneOffset()
|
||||
{
|
||||
// see: https://stackoverflow.com/questions/13804095/get-the-time-zone-gmt-offset-in-c/44063597#44063597
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
#define ALARM_LOG_ENTRY_SIZE 12
|
||||
#define ALARM_LOG_PAYLOAD_SIZE (ALARM_LOG_ENTRY_COUNT * ALARM_LOG_ENTRY_SIZE + 4)
|
||||
|
||||
#define ALARM_MSG_COUNT 111
|
||||
#define ALARM_MSG_COUNT 130
|
||||
|
||||
struct AlarmLogEntry_t {
|
||||
uint16_t MessageId;
|
||||
@ -22,10 +22,18 @@ enum class AlarmMessageType_t {
|
||||
HMT
|
||||
};
|
||||
|
||||
enum class AlarmMessageLocale_t {
|
||||
EN,
|
||||
DE,
|
||||
FR
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
AlarmMessageType_t InverterType;
|
||||
uint16_t MessageId;
|
||||
String Message;
|
||||
char Message_en[62];
|
||||
char Message_de[63];
|
||||
char Message_fr[64];
|
||||
} AlarmMessage_t;
|
||||
|
||||
class AlarmLogParser : public Parser {
|
||||
@ -35,7 +43,7 @@ public:
|
||||
void appendFragment(uint8_t offset, uint8_t* payload, uint8_t len);
|
||||
|
||||
uint8_t getEntryCount();
|
||||
void getLogEntry(uint8_t entryId, AlarmLogEntry_t* entry);
|
||||
void getLogEntry(uint8_t entryId, AlarmLogEntry_t* entry, AlarmMessageLocale_t locale = AlarmMessageLocale_t::EN);
|
||||
|
||||
void setLastAlarmRequestSuccess(LastCommandSuccess status);
|
||||
LastCommandSuccess getLastAlarmRequestSuccess();
|
||||
@ -44,6 +52,7 @@ public:
|
||||
|
||||
private:
|
||||
static int getTimezoneOffset();
|
||||
String getLocaleMessage(const AlarmMessage_t *msg, AlarmMessageLocale_t locale);
|
||||
|
||||
uint8_t _payloadAlarmLog[ALARM_LOG_PAYLOAD_SIZE];
|
||||
uint8_t _alarmLogLength = 0;
|
||||
|
||||
@ -41,6 +41,9 @@ bool ConfigurationClass::write()
|
||||
wifi["hostname"] = config.WiFi_Hostname;
|
||||
wifi["aptimeout"] = config.WiFi_ApTimeout;
|
||||
|
||||
JsonObject mdns = doc.createNestedObject("mdns");
|
||||
mdns["enabled"] = config.Mdns_Enabled;
|
||||
|
||||
JsonObject ntp = doc.createNestedObject("ntp");
|
||||
ntp["server"] = config.Ntp_Server;
|
||||
ntp["timezone"] = config.Ntp_Timezone;
|
||||
@ -265,6 +268,9 @@ bool ConfigurationClass::read()
|
||||
config.WiFi_Dhcp = wifi["dhcp"] | WIFI_DHCP;
|
||||
config.WiFi_ApTimeout = wifi["aptimeout"] | ACCESS_POINT_TIMEOUT;
|
||||
|
||||
JsonObject mdns = doc["mdns"];
|
||||
config.Mdns_Enabled = mdns["enabled"] | MDNS_ENABLED;
|
||||
|
||||
JsonObject ntp = doc["ntp"];
|
||||
strlcpy(config.Ntp_Server, ntp["server"] | NTP_SERVER, sizeof(config.Ntp_Server));
|
||||
strlcpy(config.Ntp_Timezone, ntp["timezone"] | NTP_TIMEZONE, sizeof(config.Ntp_Timezone));
|
||||
|
||||
@ -93,7 +93,7 @@ void InverterSettingsClass::init()
|
||||
|
||||
void InverterSettingsClass::loop()
|
||||
{
|
||||
if (millis() - _lastUpdate > SUNPOS_UPDATE_INTERVAL) {
|
||||
if (millis() - _lastUpdate > INVERTER_UPDATE_SETTINGS_INTERVAL) {
|
||||
const CONFIG_T& config = Configuration.get();
|
||||
|
||||
for (uint8_t i = 0; i < INV_MAX_COUNT; i++) {
|
||||
@ -112,4 +112,4 @@ void InverterSettingsClass::loop()
|
||||
}
|
||||
|
||||
Hoymiles.loop();
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,8 +22,8 @@ void LedSingleClass::init()
|
||||
_updateTimeout.set(LEDSINGLE_UPDATE_INTERVAL);
|
||||
turnAllOn();
|
||||
|
||||
auto& pin = PinMapping.get();
|
||||
for (uint8_t i = 0; i < PINMAPPING_LED_COUNT; i++) {
|
||||
auto& pin = PinMapping.get();
|
||||
|
||||
if (pin.led[i] >= 0) {
|
||||
pinMode(pin.led[i], OUTPUT);
|
||||
@ -74,8 +74,8 @@ void LedSingleClass::loop()
|
||||
_ledState[1] = LedState_t::Off;
|
||||
}
|
||||
|
||||
auto& pin = PinMapping.get();
|
||||
for (uint8_t i = 0; i < PINMAPPING_LED_COUNT; i++) {
|
||||
auto& pin = PinMapping.get();
|
||||
|
||||
if (pin.led[i] < 0) {
|
||||
continue;
|
||||
|
||||
@ -115,9 +115,9 @@ void MqttHandleHassClass::publishField(std::shared_ptr<InverterAbstract> inv, Ch
|
||||
|
||||
String name;
|
||||
if (type != TYPE_DC) {
|
||||
name = String(inv->name()) + " " + fieldName;
|
||||
name = fieldName;
|
||||
} else {
|
||||
name = String(inv->name()) + " CH" + chanNum + " " + fieldName;
|
||||
name = "CH" + chanNum + " " + fieldName;
|
||||
}
|
||||
|
||||
DynamicJsonDocument root(1024);
|
||||
@ -166,7 +166,7 @@ void MqttHandleHassClass::publishInverterButton(std::shared_ptr<InverterAbstract
|
||||
String cmdTopic = MqttSettings.getPrefix() + serial + "/" + subTopic;
|
||||
|
||||
DynamicJsonDocument root(1024);
|
||||
root["name"] = String(inv->name()) + " " + caption;
|
||||
root["name"] = caption;
|
||||
root["uniq_id"] = serial + "_" + buttonId;
|
||||
if (strcmp(icon, "")) {
|
||||
root["ic"] = icon;
|
||||
@ -205,7 +205,7 @@ void MqttHandleHassClass::publishInverterNumber(
|
||||
String statTopic = MqttSettings.getPrefix() + serial + "/" + stateTopic;
|
||||
|
||||
DynamicJsonDocument root(1024);
|
||||
root["name"] = String(inv->name()) + " " + caption;
|
||||
root["name"] = caption;
|
||||
root["uniq_id"] = serial + "_" + buttonId;
|
||||
if (strcmp(icon, "")) {
|
||||
root["ic"] = icon;
|
||||
@ -240,7 +240,7 @@ void MqttHandleHassClass::publishInverterBinarySensor(std::shared_ptr<InverterAb
|
||||
String statTopic = MqttSettings.getPrefix() + serial + "/" + subTopic;
|
||||
|
||||
DynamicJsonDocument root(1024);
|
||||
root["name"] = String(inv->name()) + " " + caption;
|
||||
root["name"] = caption;
|
||||
root["uniq_id"] = serial + "_" + sensorId;
|
||||
root["stat_t"] = statTopic;
|
||||
root["pl_on"] = payload_on;
|
||||
|
||||
@ -185,18 +185,13 @@ String MqttSettingsClass::getPrefix()
|
||||
|
||||
void MqttSettingsClass::publish(const String& subtopic, const String& payload)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(_clientLock);
|
||||
if (mqttClient == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
String topic = getPrefix();
|
||||
topic += subtopic;
|
||||
|
||||
String value = payload;
|
||||
value.trim();
|
||||
|
||||
mqttClient->publish(topic.c_str(), 0, Configuration.get().Mqtt_Retain, value.c_str());
|
||||
publishGeneric(topic, value, Configuration.get().Mqtt_Retain, 0);
|
||||
}
|
||||
|
||||
void MqttSettingsClass::publishGeneric(const String& topic, const String& payload, bool retain, uint8_t qos)
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
#include "PinMapping.h"
|
||||
#include "Utils.h"
|
||||
#include "defaults.h"
|
||||
#include <ESPmDNS.h>
|
||||
#include <ETH.h>
|
||||
|
||||
NetworkSettingsClass::NetworkSettingsClass()
|
||||
@ -110,6 +111,35 @@ void NetworkSettingsClass::raiseEvent(network_event event)
|
||||
}
|
||||
}
|
||||
|
||||
void NetworkSettingsClass::handleMDNS()
|
||||
{
|
||||
bool mdnsEnabled = Configuration.get().Mdns_Enabled;
|
||||
|
||||
if (lastMdnsEnabled == mdnsEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
lastMdnsEnabled = mdnsEnabled;
|
||||
|
||||
MDNS.end();
|
||||
|
||||
if (!mdnsEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (MDNS.begin(getHostname())) {
|
||||
MessageOutput.print("MDNS responder starting...");
|
||||
|
||||
MDNS.addService("http", "tcp", 80);
|
||||
MDNS.addService("opendtu", "tcp", 80);
|
||||
MDNS.addServiceTxt("opendtu", "tcp", "git_hash", AUTO_GIT_HASH);
|
||||
|
||||
MessageOutput.println("done");
|
||||
} else {
|
||||
MessageOutput.println("Error setting up MDNS responder!");
|
||||
}
|
||||
}
|
||||
|
||||
void NetworkSettingsClass::setupMode()
|
||||
{
|
||||
if (adminEnabled) {
|
||||
@ -121,8 +151,8 @@ void NetworkSettingsClass::setupMode()
|
||||
dnsServer->start(DNS_PORT, "*", WiFi.softAPIP());
|
||||
dnsServerStatus = true;
|
||||
} else {
|
||||
dnsServer->stop();
|
||||
dnsServerStatus = false;
|
||||
dnsServer->stop();
|
||||
if (_networkMode == network_mode::WiFi) {
|
||||
WiFi.mode(WIFI_STA);
|
||||
} else {
|
||||
@ -218,6 +248,8 @@ void NetworkSettingsClass::loop()
|
||||
if (dnsServerStatus) {
|
||||
dnsServer->processNextRequest();
|
||||
}
|
||||
|
||||
handleMDNS();
|
||||
}
|
||||
|
||||
void NetworkSettingsClass::applyConfig()
|
||||
@ -417,4 +449,4 @@ network_mode NetworkSettingsClass::NetworkMode()
|
||||
return _networkMode;
|
||||
}
|
||||
|
||||
NetworkSettingsClass NetworkSettings;
|
||||
NetworkSettingsClass NetworkSettings;
|
||||
|
||||
@ -19,9 +19,8 @@ void SunPositionClass::init()
|
||||
|
||||
void SunPositionClass::loop()
|
||||
{
|
||||
if (millis() - _lastUpdate > SUNPOS_UPDATE_INTERVAL) {
|
||||
if (getDoRecalc() || checkRecalcDayChanged()) {
|
||||
updateSunData();
|
||||
_lastUpdate = millis();
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,14 +34,45 @@ bool SunPositionClass::isSunsetAvailable()
|
||||
return _isSunsetAvailable;
|
||||
}
|
||||
|
||||
void SunPositionClass::setDoRecalc(bool doRecalc)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(_recalcLock);
|
||||
_doRecalc = doRecalc;
|
||||
}
|
||||
|
||||
bool SunPositionClass::getDoRecalc()
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(_recalcLock);
|
||||
return _doRecalc;
|
||||
}
|
||||
|
||||
bool SunPositionClass::checkRecalcDayChanged()
|
||||
{
|
||||
time_t now;
|
||||
struct tm timeinfo;
|
||||
|
||||
time(&now);
|
||||
localtime_r(&now, &timeinfo); // don't use getLocalTime() as there could be a delay of 10ms
|
||||
|
||||
uint32_t ymd;
|
||||
ymd = (timeinfo.tm_year << 9) | (timeinfo.tm_mon << 5) | timeinfo.tm_mday;
|
||||
|
||||
if (_lastSunPositionCalculatedYMD != ymd) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void SunPositionClass::updateSunData()
|
||||
{
|
||||
CONFIG_T const& config = Configuration.get();
|
||||
int offset = Utils::getTimezoneOffset() / 3600;
|
||||
_sun.setPosition(config.Ntp_Latitude, config.Ntp_Longitude, offset);
|
||||
|
||||
struct tm timeinfo;
|
||||
if (!getLocalTime(&timeinfo, 5)) {
|
||||
bool gotLocalTime;
|
||||
|
||||
gotLocalTime = getLocalTime(&timeinfo, 5);
|
||||
_lastSunPositionCalculatedYMD = (timeinfo.tm_year << 9) | (timeinfo.tm_mon << 5) | timeinfo.tm_mday;
|
||||
setDoRecalc(false);
|
||||
|
||||
if (!gotLocalTime) {
|
||||
_isDayPeriod = true;
|
||||
_sunriseMinutes = 0;
|
||||
_sunsetMinutes = 0;
|
||||
@ -50,6 +80,10 @@ void SunPositionClass::updateSunData()
|
||||
return;
|
||||
}
|
||||
|
||||
CONFIG_T const& config = Configuration.get();
|
||||
int offset = Utils::getTimezoneOffset() / 3600;
|
||||
|
||||
_sun.setPosition(config.Ntp_Latitude, config.Ntp_Longitude, offset);
|
||||
_sun.setCurrentDate(1900 + timeinfo.tm_year, timeinfo.tm_mon + 1, timeinfo.tm_mday);
|
||||
|
||||
double sunset_type;
|
||||
@ -125,4 +159,4 @@ bool SunPositionClass::sunriseTime(struct tm* info)
|
||||
|
||||
localtime_r(&midnight, info);
|
||||
return _isValidInfo;
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,6 +35,18 @@ void WebApiEventlogClass::onEventlogStatus(AsyncWebServerRequest* request)
|
||||
serial = strtoll(s.c_str(), NULL, 16);
|
||||
}
|
||||
|
||||
AlarmMessageLocale_t locale = AlarmMessageLocale_t::EN;
|
||||
if (request->hasParam("locale")) {
|
||||
String s = request->getParam("locale")->value();
|
||||
s.toLowerCase();
|
||||
if (s == "de") {
|
||||
locale = AlarmMessageLocale_t::DE;
|
||||
}
|
||||
if (s == "fr") {
|
||||
locale = AlarmMessageLocale_t::FR;
|
||||
}
|
||||
}
|
||||
|
||||
auto inv = Hoymiles.getInverterBySerial(serial);
|
||||
|
||||
if (inv != nullptr) {
|
||||
@ -47,7 +59,7 @@ void WebApiEventlogClass::onEventlogStatus(AsyncWebServerRequest* request)
|
||||
JsonObject eventsObject = eventsArray.createNestedObject();
|
||||
|
||||
AlarmLogEntry_t entry;
|
||||
inv->EventLog()->getLogEntry(logEntry, &entry);
|
||||
inv->EventLog()->getLogEntry(logEntry, &entry, locale);
|
||||
|
||||
eventsObject["message_id"] = entry.MessageId;
|
||||
eventsObject["message"] = entry.Message;
|
||||
|
||||
@ -76,6 +76,7 @@ void WebApiNetworkClass::onNetworkAdminGet(AsyncWebServerRequest* request)
|
||||
root["ssid"] = config.WiFi_Ssid;
|
||||
root["password"] = config.WiFi_Password;
|
||||
root["aptimeout"] = config.WiFi_ApTimeout;
|
||||
root["mdnsenabled"] = config.Mdns_Enabled;
|
||||
|
||||
response->setLength();
|
||||
request->send(response);
|
||||
@ -236,6 +237,7 @@ void WebApiNetworkClass::onNetworkAdminPost(AsyncWebServerRequest* request)
|
||||
config.WiFi_Dhcp = false;
|
||||
}
|
||||
config.WiFi_ApTimeout = root["aptimeout"].as<uint>();
|
||||
config.Mdns_Enabled = root["mdnsenabled"].as<bool>();
|
||||
Configuration.write();
|
||||
|
||||
retMsg["type"] = "success";
|
||||
|
||||
@ -190,6 +190,8 @@ void WebApiNtpClass::onNtpAdminPost(AsyncWebServerRequest* request)
|
||||
|
||||
NtpSettings.setServer();
|
||||
NtpSettings.setTimezone();
|
||||
|
||||
SunPosition.setDoRecalc(true);
|
||||
}
|
||||
|
||||
void WebApiNtpClass::onNtpTimeGet(AsyncWebServerRequest* request)
|
||||
@ -350,4 +352,4 @@ void WebApiNtpClass::onNtpTimePost(AsyncWebServerRequest* request)
|
||||
|
||||
response->setLength();
|
||||
request->send(response);
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,30 +17,30 @@
|
||||
"mitt": "^3.0.1",
|
||||
"sortablejs": "^1.15.0",
|
||||
"spark-md5": "^3.0.2",
|
||||
"vue": "^3.3.4",
|
||||
"vue-i18n": "^9.5.0",
|
||||
"vue": "^3.3.8",
|
||||
"vue-i18n": "^9.6.5",
|
||||
"vue-router": "^4.2.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@intlify/unplugin-vue-i18n": "^1.4.0",
|
||||
"@intlify/unplugin-vue-i18n": "^1.5.0",
|
||||
"@rushstack/eslint-patch": "^1.5.1",
|
||||
"@tsconfig/node18": "^18.2.2",
|
||||
"@types/bootstrap": "^5.2.7",
|
||||
"@types/node": "^20.8.3",
|
||||
"@types/sortablejs": "^1.15.3",
|
||||
"@types/spark-md5": "^3.0.2",
|
||||
"@vitejs/plugin-vue": "^4.4.0",
|
||||
"@types/bootstrap": "^5.2.9",
|
||||
"@types/node": "^20.9.0",
|
||||
"@types/sortablejs": "^1.15.5",
|
||||
"@types/spark-md5": "^3.0.4",
|
||||
"@vitejs/plugin-vue": "^4.4.1",
|
||||
"@vue/eslint-config-typescript": "^12.0.0",
|
||||
"@vue/tsconfig": "^0.4.0",
|
||||
"eslint": "^8.51.0",
|
||||
"eslint-plugin-vue": "^9.17.0",
|
||||
"eslint": "^8.53.0",
|
||||
"eslint-plugin-vue": "^9.18.1",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"sass": "^1.69.0",
|
||||
"terser": "^5.21.0",
|
||||
"sass": "^1.69.5",
|
||||
"terser": "^5.24.0",
|
||||
"typescript": "^5.2.2",
|
||||
"vite": "^4.4.11",
|
||||
"vite": "^4.5.0",
|
||||
"vite-plugin-compression": "^0.5.1",
|
||||
"vite-plugin-css-injected-by-js": "^3.3.0",
|
||||
"vue-tsc": "^1.8.18"
|
||||
"vue-tsc": "^1.8.22"
|
||||
}
|
||||
}
|
||||
|
||||
@ -463,7 +463,9 @@
|
||||
"ApTimeout": "AccessPoint Zeitlimit:",
|
||||
"ApTimeoutHint": "Zeit die der AccessPoint offen gehalten wird. Ein Wert von 0 bedeutet unendlich.",
|
||||
"Minutes": "Minuten",
|
||||
"Save": "@:dtuadmin.Save"
|
||||
"Save": "@:dtuadmin.Save",
|
||||
"EnableMdns": "mDNS aktivieren",
|
||||
"MdnsSettings": "mDNS-Einstellungen"
|
||||
},
|
||||
"mqttadmin": {
|
||||
"MqttSettings": "MQTT-Einstellungen",
|
||||
|
||||
@ -465,7 +465,9 @@
|
||||
"ApTimeout": "AccessPoint Timeout:",
|
||||
"ApTimeoutHint": "Time which the AccessPoint is kept open. A value of 0 means infinite.",
|
||||
"Minutes": "minutes",
|
||||
"Save": "@:dtuadmin.Save"
|
||||
"Save": "@:dtuadmin.Save",
|
||||
"EnableMdns": "Enable mDNS",
|
||||
"MdnsSettings": "mDNS Settings"
|
||||
},
|
||||
"mqttadmin": {
|
||||
"MqttSettings": "MQTT Settings",
|
||||
|
||||
@ -463,7 +463,9 @@
|
||||
"ApTimeout": "Délai d'attente du point d'accès",
|
||||
"ApTimeoutHint": "Durée pendant laquelle le point d'accès reste ouvert. Une valeur de 0 signifie infini.",
|
||||
"Minutes": "minutes",
|
||||
"Save": "@:dtuadmin.Save"
|
||||
"Save": "@:dtuadmin.Save",
|
||||
"EnableMdns": "Activer mDNS",
|
||||
"MdnsSettings": "mDNS Settings"
|
||||
},
|
||||
"mqttadmin": {
|
||||
"MqttSettings": "Paramètres MQTT",
|
||||
|
||||
@ -1,2 +1,6 @@
|
||||
// Import all of Bootstrap's CSS
|
||||
@import "~bootstrap/scss/bootstrap";
|
||||
|
||||
main {
|
||||
font-feature-settings: "tnum";
|
||||
}
|
||||
@ -9,4 +9,5 @@ export interface NetworkConfig {
|
||||
dns1: string;
|
||||
dns2: string;
|
||||
aptimeout: number;
|
||||
}
|
||||
mdnsenabled: boolean;
|
||||
}
|
||||
@ -589,7 +589,7 @@ export default defineComponent({
|
||||
},
|
||||
onShowEventlog(serial: number) {
|
||||
this.eventLogLoading = true;
|
||||
fetch("/api/eventlog/status?inv=" + serial, { headers: authHeader() })
|
||||
fetch("/api/eventlog/status?inv=" + serial + "&locale=" + this.$i18n.locale, { headers: authHeader() })
|
||||
.then((response) => handleResponse(response, this.$emitter, this.$router))
|
||||
.then((data) => {
|
||||
this.eventLogList = data;
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
<div class="form-group">
|
||||
<label for="username">{{ $t('login.Username') }}</label>
|
||||
<input type="text" v-model="username" name="username" class="form-control"
|
||||
:class="{ 'is-invalid': submitted && !username }" />
|
||||
:class="{ 'is-invalid': submitted && !username }" @keydown.space.prevent />
|
||||
<div v-show="submitted && !username" class="invalid-feedback">{{ $t('login.UsernameRequired') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -50,6 +50,12 @@
|
||||
type="text" maxlength="32"/>
|
||||
</CardElement>
|
||||
|
||||
<CardElement :text="$t('networkadmin.MdnsSettings')" textVariant="text-bg-primary" add-space>
|
||||
<InputElement :label="$t('networkadmin.EnableMdns')"
|
||||
v-model="networkConfigList.mdnsenabled"
|
||||
type="checkbox"/>
|
||||
</CardElement>
|
||||
|
||||
<CardElement :text="$t('networkadmin.AdminAp')" textVariant="text-bg-primary" add-space>
|
||||
<InputElement :label="$t('networkadmin.ApTimeout')"
|
||||
v-model="networkConfigList.aptimeout"
|
||||
@ -67,7 +73,7 @@ import BasePage from '@/components/BasePage.vue';
|
||||
import BootstrapAlert from "@/components/BootstrapAlert.vue";
|
||||
import CardElement from '@/components/CardElement.vue';
|
||||
import InputElement from '@/components/InputElement.vue';
|
||||
import type { NetworkConfig } from "@/types/NetworkkConfig";
|
||||
import type { NetworkConfig } from "@/types/NetworkConfig";
|
||||
import { authHeader, handleResponse } from '@/utils/authentication';
|
||||
import { defineComponent } from 'vue';
|
||||
|
||||
@ -122,4 +128,4 @@ export default defineComponent({
|
||||
},
|
||||
},
|
||||
});
|
||||
</script>
|
||||
</script>
|
||||
|
||||
443
webapp/yarn.lock
443
webapp/yarn.lock
@ -12,11 +12,16 @@
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.11.tgz#68bb07ab3d380affa9a3f96728df07969645d2d9"
|
||||
integrity sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==
|
||||
|
||||
"@babel/parser@^7.20.15", "@babel/parser@^7.21.3":
|
||||
"@babel/parser@^7.21.3":
|
||||
version "7.21.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.8.tgz#642af7d0333eab9c0ad70b14ac5e76dbde7bfdf8"
|
||||
integrity sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==
|
||||
|
||||
"@babel/parser@^7.23.0":
|
||||
version "7.23.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719"
|
||||
integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==
|
||||
|
||||
"@esbuild/android-arm64@0.18.11":
|
||||
version "0.18.11"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.11.tgz#fa6f0cc7105367cb79cc0a8bf32bf50cb1673e45"
|
||||
@ -151,10 +156,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8"
|
||||
integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==
|
||||
|
||||
"@eslint/eslintrc@^2.1.2":
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396"
|
||||
integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==
|
||||
"@eslint/eslintrc@^2.1.3":
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d"
|
||||
integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==
|
||||
dependencies:
|
||||
ajv "^6.12.4"
|
||||
debug "^4.3.2"
|
||||
@ -166,17 +171,17 @@
|
||||
minimatch "^3.1.2"
|
||||
strip-json-comments "^3.1.1"
|
||||
|
||||
"@eslint/js@8.51.0":
|
||||
version "8.51.0"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa"
|
||||
integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==
|
||||
"@eslint/js@8.53.0":
|
||||
version "8.53.0"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.53.0.tgz#bea56f2ed2b5baea164348ff4d5a879f6f81f20d"
|
||||
integrity sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==
|
||||
|
||||
"@humanwhocodes/config-array@^0.11.11":
|
||||
version "0.11.11"
|
||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844"
|
||||
integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==
|
||||
"@humanwhocodes/config-array@^0.11.13":
|
||||
version "0.11.13"
|
||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297"
|
||||
integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==
|
||||
dependencies:
|
||||
"@humanwhocodes/object-schema" "^1.2.1"
|
||||
"@humanwhocodes/object-schema" "^2.0.1"
|
||||
debug "^4.1.1"
|
||||
minimatch "^3.0.5"
|
||||
|
||||
@ -185,10 +190,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
|
||||
integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
|
||||
|
||||
"@humanwhocodes/object-schema@^1.2.1":
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
|
||||
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
|
||||
"@humanwhocodes/object-schema@^2.0.1":
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044"
|
||||
integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==
|
||||
|
||||
"@intlify/bundle-utils@^7.4.0":
|
||||
version "7.4.0"
|
||||
@ -206,20 +211,20 @@
|
||||
source-map-js "^1.0.1"
|
||||
yaml-eslint-parser "^1.2.2"
|
||||
|
||||
"@intlify/core-base@9.5.0":
|
||||
version "9.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.5.0.tgz#cbb17a27029ccfd0a83a837931baee08b887af60"
|
||||
integrity sha512-y3ufM1RJbI/DSmJf3lYs9ACq3S/iRvaSsE3rPIk0MGH7fp+JxU6rdryv/EYcwfcr3Y1aHFlCBir6S391hRZ57w==
|
||||
"@intlify/core-base@9.6.5":
|
||||
version "9.6.5"
|
||||
resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.6.5.tgz#af92cae122fb99e882b3d7f1433f682065a3e164"
|
||||
integrity sha512-LzbGXiZkMWPIHnHI0g6q554S87Cmh2mmCmjytK/3pDQfjI84l+dgGoeQuKj02q7EbULRuUUgYVZVqAwEUawXGg==
|
||||
dependencies:
|
||||
"@intlify/message-compiler" "9.5.0"
|
||||
"@intlify/shared" "9.5.0"
|
||||
"@intlify/message-compiler" "9.6.5"
|
||||
"@intlify/shared" "9.6.5"
|
||||
|
||||
"@intlify/message-compiler@9.5.0":
|
||||
version "9.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.5.0.tgz#1b4916bf11ca7024f9c15be0d6b4de7be5317808"
|
||||
integrity sha512-CAhVNfEZcOVFg0/5MNyt+OFjvs4J/ARjCj2b+54/FvFP0EDJI5lIqMTSDBE7k0atMROSP0SvWCkwu/AZ5xkK1g==
|
||||
"@intlify/message-compiler@9.6.5":
|
||||
version "9.6.5"
|
||||
resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.6.5.tgz#3a33882497417c63b23b012731d60a485c8e5558"
|
||||
integrity sha512-WeJ499thIj0p7JaIO1V3JaJbqdqfBykS5R8fElFs5hNeotHtPAMBs4IiA+8/KGFkAbjJusgFefCq6ajP7F7+4Q==
|
||||
dependencies:
|
||||
"@intlify/shared" "9.5.0"
|
||||
"@intlify/shared" "9.6.5"
|
||||
source-map-js "^1.0.2"
|
||||
|
||||
"@intlify/message-compiler@^9.4.0":
|
||||
@ -235,15 +240,15 @@
|
||||
resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.4.0.tgz#4a78d462fc82433db900981e12eb5b1aae3d6085"
|
||||
integrity sha512-AFqymip2kToqA0B6KZPg5jSrdcVHoli9t/VhGKE2iiMq9utFuMoGdDC/JOCIZgwxo6aXAk86QyU2XtzEoMuZ6A==
|
||||
|
||||
"@intlify/shared@9.5.0":
|
||||
version "9.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.5.0.tgz#185d9ab9f6b4bb4f4d133cfdd51432e9b94c2c44"
|
||||
integrity sha512-tAxV14LMXZDZbu32XzLMTsowNlgJNmLwWHYzvMUl6L8gvQeoYiZONjY7AUsqZW8TOZDX9lfvF6adPkk9FSRdDA==
|
||||
"@intlify/shared@9.6.5":
|
||||
version "9.6.5"
|
||||
resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.6.5.tgz#a81f384d804e99ceac55bb061c344f156bd96590"
|
||||
integrity sha512-gD7Ey47Xi4h/t6P+S04ymMSoA3wVRxGqjxuIMglwRO8POki9h164Epu2N8wk/GHXM/hR6ZGcsx2HArCCENjqSQ==
|
||||
|
||||
"@intlify/unplugin-vue-i18n@^1.4.0":
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@intlify/unplugin-vue-i18n/-/unplugin-vue-i18n-1.4.0.tgz#581ac40567240209ed0851e27bfc7c9487cf55ec"
|
||||
integrity sha512-RGDchCRBlDTyVVFgPA1C1XC1uD4xYN81Ma+3EnU6GQ8pBEreraX/PWdPXXzOB6k9GWCQHuqii3atYXhcH3rpSg==
|
||||
"@intlify/unplugin-vue-i18n@^1.5.0":
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@intlify/unplugin-vue-i18n/-/unplugin-vue-i18n-1.5.0.tgz#fe2e67d50beefc4b67702a7bcec23062123cb52d"
|
||||
integrity sha512-jW0MCCdwxybxcwjEfCunAcKjVoxyO3i+cnLL6v+MNGRLUHqrpELF6zQAJUhgAK2afhY7mCliy8RxTFWKdXm26w==
|
||||
dependencies:
|
||||
"@intlify/bundle-utils" "^7.4.0"
|
||||
"@intlify/shared" "^9.4.0"
|
||||
@ -290,6 +295,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
|
||||
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
|
||||
|
||||
"@jridgewell/sourcemap-codec@^1.4.15":
|
||||
version "1.4.15"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
|
||||
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
|
||||
|
||||
"@jridgewell/trace-mapping@^0.3.9":
|
||||
version "0.3.17"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985"
|
||||
@ -348,10 +358,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@tsconfig/node18/-/node18-18.2.2.tgz#81fb16ecff0d400b1cbadbf76713b50f331029ce"
|
||||
integrity sha512-d6McJeGsuoRlwWZmVIeE8CUA27lu6jLjvv1JzqmpsytOYYbVi1tHZEnwCNVOXnj4pyLvneZlFlpXUK+X9wBWyw==
|
||||
|
||||
"@types/bootstrap@^5.2.7":
|
||||
version "5.2.7"
|
||||
resolved "https://registry.yarnpkg.com/@types/bootstrap/-/bootstrap-5.2.7.tgz#a920df4ea82d8cc605751007f5c9744336842f30"
|
||||
integrity sha512-vWs0HzobIB8Af2F0B1GXpaVLSVn1NWULDYgTIWp08Et/r2B3aAwwhFBeOs/rRFWJA38EZTXkWP3tepIjpQkpLg==
|
||||
"@types/bootstrap@^5.2.9":
|
||||
version "5.2.9"
|
||||
resolved "https://registry.yarnpkg.com/@types/bootstrap/-/bootstrap-5.2.9.tgz#5040df5d8d12cb9fb6268a33b8d87234af15e09a"
|
||||
integrity sha512-Fcg4nORBKaVUAG4F0ePWcatWQVfr3NAT9XIN+hl1PaiAwb4tq55+iua9R3exsbB3yyfhyQlHYg2foTlW86J+RA==
|
||||
dependencies:
|
||||
"@popperjs/core" "^2.9.2"
|
||||
|
||||
@ -365,25 +375,27 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb"
|
||||
integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==
|
||||
|
||||
"@types/node@^20.8.3":
|
||||
version "20.8.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.3.tgz#c4ae2bb1cfab2999ed441a95c122bbbe1567a66d"
|
||||
integrity sha512-jxiZQFpb+NlH5kjW49vXxvxTjeeqlbsnTAdBTKpzEdPs9itay7MscYXz3Fo9VYFEsfQ6LJFitHad3faerLAjCw==
|
||||
"@types/node@^20.9.0":
|
||||
version "20.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.0.tgz#bfcdc230583aeb891cf51e73cfdaacdd8deae298"
|
||||
integrity sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==
|
||||
dependencies:
|
||||
undici-types "~5.26.4"
|
||||
|
||||
"@types/semver@^7.5.0":
|
||||
version "7.5.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.1.tgz#0480eeb7221eb9bc398ad7432c9d7e14b1a5a367"
|
||||
integrity sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==
|
||||
|
||||
"@types/sortablejs@^1.15.3":
|
||||
version "1.15.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/sortablejs/-/sortablejs-1.15.3.tgz#b9c0e2740100ae94919c9f138a38600c8f8124ea"
|
||||
integrity sha512-v+zh6TZP/cLeMUK0MDx1onp8e7Jk2/4iTQ7sb/n80rTAvBm14yJkpOEfJdrTCkHiF7IZbPjxGX2NRJfogRoYIg==
|
||||
"@types/sortablejs@^1.15.5":
|
||||
version "1.15.5"
|
||||
resolved "https://registry.yarnpkg.com/@types/sortablejs/-/sortablejs-1.15.5.tgz#c59e51765bc53c920192de0d0202f75b7ce4cb3f"
|
||||
integrity sha512-qqqbEFbB1EZt08I1Ok2BA3Sx0zlI8oizdIguMsajk4Yo/iHgXhCb3GM6N09JOJqT9xIMYM9LTFy8vit3RNY71Q==
|
||||
|
||||
"@types/spark-md5@^3.0.2":
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/spark-md5/-/spark-md5-3.0.2.tgz#da2e8a778a20335fc4f40b6471c4b0d86b70da55"
|
||||
integrity sha512-82E/lVRaqelV9qmRzzJ1PKTpyrpnT7mwdneKNJB9hUtypZDMggloDfFUCIqRRx3lYRxteCwXSq9c+W71Vf0QnQ==
|
||||
"@types/spark-md5@^3.0.4":
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/spark-md5/-/spark-md5-3.0.4.tgz#c1221d63c069d95aba0c06a765b80661cacc12bf"
|
||||
integrity sha512-qtOaDz+IXiNndPgYb6t1YoutnGvFRtWSNzpVjkAPCfB2UzTyybuD4Tjgs7VgRawum3JnJNRwNQd4N//SvrHg1Q==
|
||||
|
||||
"@typescript-eslint/eslint-plugin@^6.7.0":
|
||||
version "6.7.0"
|
||||
@ -470,31 +482,37 @@
|
||||
"@typescript-eslint/types" "6.7.0"
|
||||
eslint-visitor-keys "^3.4.1"
|
||||
|
||||
"@vitejs/plugin-vue@^4.4.0":
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.4.0.tgz#8ae96573236cdb12de6850a6d929b5537ec85390"
|
||||
integrity sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==
|
||||
"@ungap/structured-clone@^1.2.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
|
||||
integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
|
||||
|
||||
"@volar/language-core@1.10.3", "@volar/language-core@~1.10.3":
|
||||
version "1.10.3"
|
||||
resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-1.10.3.tgz#a345b43c112279e5b2f0a37d96735b848c653a55"
|
||||
integrity sha512-7Qgwu9bWUHN+cLrOkCbIVBkL+RVPREhvY07wY89dGxi4mY9mQCsUVRRp64F61lX7Nc27meMnvy0sWlzY0x6oQQ==
|
||||
"@vitejs/plugin-vue@^4.4.1":
|
||||
version "4.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.4.1.tgz#5050895fb8b2258d2f228110849df4a8a94b9038"
|
||||
integrity sha512-HCQG8VDFDM7YDAdcj5QI5DvUi+r6xvo9LgvYdk7LSkUNwdpempdB5horkMSZsbdey9Ywsf5aaU8kEPw9M5kREA==
|
||||
|
||||
"@volar/language-core@1.10.7", "@volar/language-core@~1.10.5":
|
||||
version "1.10.7"
|
||||
resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-1.10.7.tgz#9d555bf0a3ca652c525651baba5ecf8a55cf3471"
|
||||
integrity sha512-6+WI7HGqWCsKJ/bms4V45WP7eDeoGxDtLjYPrHB7QkIWVkRLIeGPzzBoonZz9kERM+Kld3W89Y+IlICejVAKhA==
|
||||
dependencies:
|
||||
"@volar/source-map" "1.10.3"
|
||||
"@volar/source-map" "1.10.7"
|
||||
|
||||
"@volar/source-map@1.10.3", "@volar/source-map@~1.10.3":
|
||||
version "1.10.3"
|
||||
resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-1.10.3.tgz#3730ca1f238b8c80d0f6da48117ac537cda4f316"
|
||||
integrity sha512-QE9nwK3xsdBQGongHnC9SCR0itx7xUKQFsUDn5HbZY3pHpyXxdY1hSBG0eh9mE+aTKoM4KlqMvrb+19Tv9vS1Q==
|
||||
"@volar/source-map@1.10.7", "@volar/source-map@~1.10.5":
|
||||
version "1.10.7"
|
||||
resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-1.10.7.tgz#f2b5c6b99f3fc91c10d4013eaeb083fbbf4b9e0d"
|
||||
integrity sha512-anA254XO0lmmeu0p/kvgPOCkrVpqNIHWMvEkPX70PSk4ntg0iBzN/f0Kip6deXvibl6v14Q3Z8RihWrZwdZEEQ==
|
||||
dependencies:
|
||||
muggle-string "^0.3.1"
|
||||
|
||||
"@volar/typescript@~1.10.3":
|
||||
version "1.10.3"
|
||||
resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-1.10.3.tgz#5e95d277e83bef3fc5f7df429c20a959391d2ce4"
|
||||
integrity sha512-n0ar6xGYpRoSvgGMetm/JXP0QAXx+NOUvxCaWCfCjiFivQRSLJeydYDijhoGBUl5KSKosqq9In5L3e/m2TqTcQ==
|
||||
"@volar/typescript@~1.10.5":
|
||||
version "1.10.7"
|
||||
resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-1.10.7.tgz#2ed47e3260d4161445099ba89c7471fbc51133b6"
|
||||
integrity sha512-2hvA3vjXVUn1vOpsP/nWLnE5DUmY6YKQhvDRoZVfBrnWwIo0ySxdTUP4XieXGGgSk43xJaeU1zqQS/3Wfm7QgA==
|
||||
dependencies:
|
||||
"@volar/language-core" "1.10.3"
|
||||
"@volar/language-core" "1.10.7"
|
||||
path-browserify "^1.0.1"
|
||||
|
||||
"@vue/compiler-core@3.2.47":
|
||||
version "3.2.47"
|
||||
@ -516,13 +534,13 @@
|
||||
estree-walker "^2.0.2"
|
||||
source-map-js "^1.0.2"
|
||||
|
||||
"@vue/compiler-core@3.3.4":
|
||||
version "3.3.4"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz#7fbf591c1c19e1acd28ffd284526e98b4f581128"
|
||||
integrity sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==
|
||||
"@vue/compiler-core@3.3.8":
|
||||
version "3.3.8"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.8.tgz#301bb60d0245265a88ed5b30e200fbf223acb313"
|
||||
integrity sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.21.3"
|
||||
"@vue/shared" "3.3.4"
|
||||
"@babel/parser" "^7.23.0"
|
||||
"@vue/shared" "3.3.8"
|
||||
estree-walker "^2.0.2"
|
||||
source-map-js "^1.0.2"
|
||||
|
||||
@ -534,13 +552,13 @@
|
||||
"@vue/compiler-core" "3.2.47"
|
||||
"@vue/shared" "3.2.47"
|
||||
|
||||
"@vue/compiler-dom@3.3.4":
|
||||
version "3.3.4"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz#f56e09b5f4d7dc350f981784de9713d823341151"
|
||||
integrity sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==
|
||||
"@vue/compiler-dom@3.3.8":
|
||||
version "3.3.8"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.8.tgz#09d832514b9b8d9415a3816b065d69dbefcc7e9b"
|
||||
integrity sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ==
|
||||
dependencies:
|
||||
"@vue/compiler-core" "3.3.4"
|
||||
"@vue/shared" "3.3.4"
|
||||
"@vue/compiler-core" "3.3.8"
|
||||
"@vue/shared" "3.3.8"
|
||||
|
||||
"@vue/compiler-dom@^3.3.0":
|
||||
version "3.3.2"
|
||||
@ -550,20 +568,20 @@
|
||||
"@vue/compiler-core" "3.3.2"
|
||||
"@vue/shared" "3.3.2"
|
||||
|
||||
"@vue/compiler-sfc@3.3.4":
|
||||
version "3.3.4"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz#b19d942c71938893535b46226d602720593001df"
|
||||
integrity sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==
|
||||
"@vue/compiler-sfc@3.3.8":
|
||||
version "3.3.8"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.8.tgz#40b18e48aa00260950964d1d72157668521be0e1"
|
||||
integrity sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.20.15"
|
||||
"@vue/compiler-core" "3.3.4"
|
||||
"@vue/compiler-dom" "3.3.4"
|
||||
"@vue/compiler-ssr" "3.3.4"
|
||||
"@vue/reactivity-transform" "3.3.4"
|
||||
"@vue/shared" "3.3.4"
|
||||
"@babel/parser" "^7.23.0"
|
||||
"@vue/compiler-core" "3.3.8"
|
||||
"@vue/compiler-dom" "3.3.8"
|
||||
"@vue/compiler-ssr" "3.3.8"
|
||||
"@vue/reactivity-transform" "3.3.8"
|
||||
"@vue/shared" "3.3.8"
|
||||
estree-walker "^2.0.2"
|
||||
magic-string "^0.30.0"
|
||||
postcss "^8.1.10"
|
||||
magic-string "^0.30.5"
|
||||
postcss "^8.4.31"
|
||||
source-map-js "^1.0.2"
|
||||
|
||||
"@vue/compiler-sfc@^3.2.47":
|
||||
@ -590,13 +608,13 @@
|
||||
"@vue/compiler-dom" "3.2.47"
|
||||
"@vue/shared" "3.2.47"
|
||||
|
||||
"@vue/compiler-ssr@3.3.4":
|
||||
version "3.3.4"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz#9d1379abffa4f2b0cd844174ceec4a9721138777"
|
||||
integrity sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==
|
||||
"@vue/compiler-ssr@3.3.8":
|
||||
version "3.3.8"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.8.tgz#136eed54411e4694815d961048a237191063fbce"
|
||||
integrity sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w==
|
||||
dependencies:
|
||||
"@vue/compiler-dom" "3.3.4"
|
||||
"@vue/shared" "3.3.4"
|
||||
"@vue/compiler-dom" "3.3.8"
|
||||
"@vue/shared" "3.3.8"
|
||||
|
||||
"@vue/devtools-api@^6.5.0":
|
||||
version "6.5.0"
|
||||
@ -612,16 +630,16 @@
|
||||
"@typescript-eslint/parser" "^6.7.0"
|
||||
vue-eslint-parser "^9.3.1"
|
||||
|
||||
"@vue/language-core@1.8.18":
|
||||
version "1.8.18"
|
||||
resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-1.8.18.tgz#c111da12524bac3b12981786294b1ed5db2bd59f"
|
||||
integrity sha512-byTi+mwSL7XnVRtfWE3MJy3HQryoVSQ3lymauXviegn3G1wwwlSOUljzQe3w5PyesOnBEIxYoavfKzMJnExrBA==
|
||||
"@vue/language-core@1.8.22":
|
||||
version "1.8.22"
|
||||
resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-1.8.22.tgz#1ef62645fb9b1f830c6c84a5586e49e74727b1e3"
|
||||
integrity sha512-bsMoJzCrXZqGsxawtUea1cLjUT9dZnDsy5TuZ+l1fxRMzUGQUG9+Ypq4w//CqpWmrx7nIAJpw2JVF/t258miRw==
|
||||
dependencies:
|
||||
"@volar/language-core" "~1.10.3"
|
||||
"@volar/source-map" "~1.10.3"
|
||||
"@volar/language-core" "~1.10.5"
|
||||
"@volar/source-map" "~1.10.5"
|
||||
"@vue/compiler-dom" "^3.3.0"
|
||||
"@vue/reactivity" "^3.3.0"
|
||||
"@vue/shared" "^3.3.0"
|
||||
computeds "^0.0.1"
|
||||
minimatch "^9.0.3"
|
||||
muggle-string "^0.3.1"
|
||||
vue-template-compiler "^2.7.14"
|
||||
@ -637,55 +655,48 @@
|
||||
estree-walker "^2.0.2"
|
||||
magic-string "^0.25.7"
|
||||
|
||||
"@vue/reactivity-transform@3.3.4":
|
||||
version "3.3.4"
|
||||
resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz#52908476e34d6a65c6c21cd2722d41ed8ae51929"
|
||||
integrity sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==
|
||||
"@vue/reactivity-transform@3.3.8":
|
||||
version "3.3.8"
|
||||
resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.8.tgz#6d07649013b0be5c670f0ab6cc7ddd3150ad03f2"
|
||||
integrity sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.20.15"
|
||||
"@vue/compiler-core" "3.3.4"
|
||||
"@vue/shared" "3.3.4"
|
||||
"@babel/parser" "^7.23.0"
|
||||
"@vue/compiler-core" "3.3.8"
|
||||
"@vue/shared" "3.3.8"
|
||||
estree-walker "^2.0.2"
|
||||
magic-string "^0.30.0"
|
||||
magic-string "^0.30.5"
|
||||
|
||||
"@vue/reactivity@3.3.4":
|
||||
version "3.3.4"
|
||||
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.4.tgz#a27a29c6cd17faba5a0e99fbb86ee951653e2253"
|
||||
integrity sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==
|
||||
"@vue/reactivity@3.3.8":
|
||||
version "3.3.8"
|
||||
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.8.tgz#cce8a03a3fd3539c3eeda53e277ba365d160dd4d"
|
||||
integrity sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw==
|
||||
dependencies:
|
||||
"@vue/shared" "3.3.4"
|
||||
"@vue/shared" "3.3.8"
|
||||
|
||||
"@vue/reactivity@^3.3.0":
|
||||
version "3.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.2.tgz#c4ddc5087039070c0c11810f6bc1aa59c99f0cb5"
|
||||
integrity sha512-yX8C4uTgg2Tdj+512EEMnMKbLveoITl7YdQX35AYgx8vBvQGszKiiCN46g4RY6/deeo/5DLbeUUGxCq1qWMf5g==
|
||||
"@vue/runtime-core@3.3.8":
|
||||
version "3.3.8"
|
||||
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.8.tgz#fba5a632cbf2b5d29e171489570149cb6975dcdb"
|
||||
integrity sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw==
|
||||
dependencies:
|
||||
"@vue/shared" "3.3.2"
|
||||
"@vue/reactivity" "3.3.8"
|
||||
"@vue/shared" "3.3.8"
|
||||
|
||||
"@vue/runtime-core@3.3.4":
|
||||
version "3.3.4"
|
||||
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz#4bb33872bbb583721b340f3088888394195967d1"
|
||||
integrity sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==
|
||||
"@vue/runtime-dom@3.3.8":
|
||||
version "3.3.8"
|
||||
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.8.tgz#e2d7aa795cf50914dda9a951887765a594b38af4"
|
||||
integrity sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA==
|
||||
dependencies:
|
||||
"@vue/reactivity" "3.3.4"
|
||||
"@vue/shared" "3.3.4"
|
||||
"@vue/runtime-core" "3.3.8"
|
||||
"@vue/shared" "3.3.8"
|
||||
csstype "^3.1.2"
|
||||
|
||||
"@vue/runtime-dom@3.3.4":
|
||||
version "3.3.4"
|
||||
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz#992f2579d0ed6ce961f47bbe9bfe4b6791251566"
|
||||
integrity sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==
|
||||
"@vue/server-renderer@3.3.8":
|
||||
version "3.3.8"
|
||||
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.8.tgz#9b1779010e75783edeed8fcfb97d9c95fc3ac5d2"
|
||||
integrity sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg==
|
||||
dependencies:
|
||||
"@vue/runtime-core" "3.3.4"
|
||||
"@vue/shared" "3.3.4"
|
||||
csstype "^3.1.1"
|
||||
|
||||
"@vue/server-renderer@3.3.4":
|
||||
version "3.3.4"
|
||||
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz#ea46594b795d1536f29bc592dd0f6655f7ea4c4c"
|
||||
integrity sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==
|
||||
dependencies:
|
||||
"@vue/compiler-ssr" "3.3.4"
|
||||
"@vue/shared" "3.3.4"
|
||||
"@vue/compiler-ssr" "3.3.8"
|
||||
"@vue/shared" "3.3.8"
|
||||
|
||||
"@vue/shared@3.2.47":
|
||||
version "3.2.47"
|
||||
@ -697,24 +708,16 @@
|
||||
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.2.tgz#774cd9b4635ce801b70a3fc3713779a5ef5d77c3"
|
||||
integrity sha512-0rFu3h8JbclbnvvKrs7Fe5FNGV9/5X2rPD7KmOzhLSUAiQH5//Hq437Gv0fR5Mev3u/nbtvmLl8XgwCU20/ZfQ==
|
||||
|
||||
"@vue/shared@3.3.4":
|
||||
version "3.3.4"
|
||||
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.4.tgz#06e83c5027f464eef861c329be81454bc8b70780"
|
||||
integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==
|
||||
"@vue/shared@3.3.8":
|
||||
version "3.3.8"
|
||||
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.8.tgz#f044942142e1d3a395f24132e6203a784838542d"
|
||||
integrity sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==
|
||||
|
||||
"@vue/tsconfig@^0.4.0":
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@vue/tsconfig/-/tsconfig-0.4.0.tgz#f01e2f6089b5098136fb084a0dd0cdd4533b72b0"
|
||||
integrity sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==
|
||||
|
||||
"@vue/typescript@1.8.18":
|
||||
version "1.8.18"
|
||||
resolved "https://registry.yarnpkg.com/@vue/typescript/-/typescript-1.8.18.tgz#27cf06fc42fefae4254d9fd25297156c54a27e0f"
|
||||
integrity sha512-3M+lu+DUwJW0fNwd/rLE0FenmELxcC6zxgm/YZ25jSTi+uNGj9L5XvXvf20guC69gQvZ+cg49tTxbepfFVuNNQ==
|
||||
dependencies:
|
||||
"@volar/typescript" "~1.10.3"
|
||||
"@vue/language-core" "1.8.18"
|
||||
|
||||
acorn-jsx@^5.3.2:
|
||||
version "5.3.2"
|
||||
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
|
||||
@ -908,6 +911,11 @@ commander@^2.20.0:
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
||||
|
||||
computeds@^0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/computeds/-/computeds-0.0.1.tgz#215b08a4ba3e08a11ff6eee5d6d8d7166a97ce2e"
|
||||
integrity sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==
|
||||
|
||||
concat-map@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
@ -938,7 +946,7 @@ cssesc@^3.0.0:
|
||||
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
|
||||
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
|
||||
|
||||
csstype@^3.1.1:
|
||||
csstype@^3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b"
|
||||
integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
|
||||
@ -1078,10 +1086,10 @@ escodegen@^2.0.0:
|
||||
optionalDependencies:
|
||||
source-map "~0.6.1"
|
||||
|
||||
eslint-plugin-vue@^9.17.0:
|
||||
version "9.17.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz#4501547373f246547083482838b4c8f4b28e5932"
|
||||
integrity sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==
|
||||
eslint-plugin-vue@^9.18.1:
|
||||
version "9.18.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.18.1.tgz#73cf29df7450ce5913296465f8d1dc545344920c"
|
||||
integrity sha512-7hZFlrEgg9NIzuVik2I9xSnJA5RsmOfueYgsUGUokEDLJ1LHtxO0Pl4duje1BriZ/jDWb+44tcIlC3yi0tdlZg==
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils" "^4.4.0"
|
||||
natural-compare "^1.4.0"
|
||||
@ -1122,18 +1130,19 @@ eslint-visitor-keys@^3.4.1:
|
||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994"
|
||||
integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==
|
||||
|
||||
eslint@^8.51.0:
|
||||
version "8.51.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3"
|
||||
integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==
|
||||
eslint@^8.53.0:
|
||||
version "8.53.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.53.0.tgz#14f2c8244298fcae1f46945459577413ba2697ce"
|
||||
integrity sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils" "^4.2.0"
|
||||
"@eslint-community/regexpp" "^4.6.1"
|
||||
"@eslint/eslintrc" "^2.1.2"
|
||||
"@eslint/js" "8.51.0"
|
||||
"@humanwhocodes/config-array" "^0.11.11"
|
||||
"@eslint/eslintrc" "^2.1.3"
|
||||
"@eslint/js" "8.53.0"
|
||||
"@humanwhocodes/config-array" "^0.11.13"
|
||||
"@humanwhocodes/module-importer" "^1.0.1"
|
||||
"@nodelib/fs.walk" "^1.2.8"
|
||||
"@ungap/structured-clone" "^1.2.0"
|
||||
ajv "^6.12.4"
|
||||
chalk "^4.0.0"
|
||||
cross-spawn "^7.0.2"
|
||||
@ -1760,6 +1769,13 @@ magic-string@^0.30.0:
|
||||
dependencies:
|
||||
"@jridgewell/sourcemap-codec" "^1.4.13"
|
||||
|
||||
magic-string@^0.30.5:
|
||||
version "0.30.5"
|
||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9"
|
||||
integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==
|
||||
dependencies:
|
||||
"@jridgewell/sourcemap-codec" "^1.4.15"
|
||||
|
||||
memorystream@^0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
|
||||
@ -1954,6 +1970,11 @@ parse-json@^4.0.0:
|
||||
error-ex "^1.3.1"
|
||||
json-parse-better-errors "^1.0.1"
|
||||
|
||||
path-browserify@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
|
||||
integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
|
||||
|
||||
path-exists@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
|
||||
@ -2051,6 +2072,15 @@ postcss@^8.4.27:
|
||||
picocolors "^1.0.0"
|
||||
source-map-js "^1.0.2"
|
||||
|
||||
postcss@^8.4.31:
|
||||
version "8.4.31"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
|
||||
integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
|
||||
dependencies:
|
||||
nanoid "^3.3.6"
|
||||
picocolors "^1.0.0"
|
||||
source-map-js "^1.0.2"
|
||||
|
||||
prelude-ls@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
|
||||
@ -2145,10 +2175,10 @@ safe-regex-test@^1.0.0:
|
||||
get-intrinsic "^1.1.3"
|
||||
is-regex "^1.1.4"
|
||||
|
||||
sass@^1.69.0:
|
||||
version "1.69.0"
|
||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.0.tgz#5195075371c239ed556280cf2f5944d234f42679"
|
||||
integrity sha512-l3bbFpfTOGgQZCLU/gvm1lbsQ5mC/WnLz3djL2v4WCJBDrWm58PO+jgngcGRNnKUh6wSsdm50YaovTqskZ0xDQ==
|
||||
sass@^1.69.5:
|
||||
version "1.69.5"
|
||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.5.tgz#23e18d1c757a35f2e52cc81871060b9ad653dfde"
|
||||
integrity sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==
|
||||
dependencies:
|
||||
chokidar ">=3.0.0 <4.0.0"
|
||||
immutable "^4.0.0"
|
||||
@ -2338,10 +2368,10 @@ supports-preserve-symlinks-flag@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
|
||||
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
||||
|
||||
terser@^5.21.0:
|
||||
version "5.21.0"
|
||||
resolved "https://registry.yarnpkg.com/terser/-/terser-5.21.0.tgz#d2b27e92b5e56650bc83b6defa00a110f0b124b2"
|
||||
integrity sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw==
|
||||
terser@^5.24.0:
|
||||
version "5.24.0"
|
||||
resolved "https://registry.yarnpkg.com/terser/-/terser-5.24.0.tgz#4ae50302977bca4831ccc7b4fef63a3c04228364"
|
||||
integrity sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==
|
||||
dependencies:
|
||||
"@jridgewell/source-map" "^0.3.3"
|
||||
acorn "^8.8.2"
|
||||
@ -2404,6 +2434,11 @@ unbox-primitive@^1.0.2:
|
||||
has-symbols "^1.0.3"
|
||||
which-boxed-primitive "^1.0.2"
|
||||
|
||||
undici-types@~5.26.4:
|
||||
version "5.26.5"
|
||||
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
|
||||
integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
|
||||
|
||||
universalify@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
|
||||
@ -2453,10 +2488,10 @@ vite-plugin-css-injected-by-js@^3.3.0:
|
||||
resolved "https://registry.yarnpkg.com/vite-plugin-css-injected-by-js/-/vite-plugin-css-injected-by-js-3.3.0.tgz#c19480a9e42a95c5bced976a9dde1446f9bd91ff"
|
||||
integrity sha512-xG+jyHNCmUqi/TXp6q88wTJGeAOrNLSyUUTp4qEQ9QZLGcHWQQsCsSSKa59rPMQr8sOzfzmWDd8enGqfH/dBew==
|
||||
|
||||
vite@^4.4.11:
|
||||
version "4.4.11"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.11.tgz#babdb055b08c69cfc4c468072a2e6c9ca62102b0"
|
||||
integrity sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==
|
||||
vite@^4.5.0:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.0.tgz#ec406295b4167ac3bc23e26f9c8ff559287cff26"
|
||||
integrity sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==
|
||||
dependencies:
|
||||
esbuild "^0.18.10"
|
||||
postcss "^8.4.27"
|
||||
@ -2477,13 +2512,13 @@ vue-eslint-parser@^9.3.1:
|
||||
lodash "^4.17.21"
|
||||
semver "^7.3.6"
|
||||
|
||||
vue-i18n@^9.5.0:
|
||||
version "9.5.0"
|
||||
resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.5.0.tgz#361a820f591f6d9689435a42763fd1dae224833b"
|
||||
integrity sha512-NiI3Ph1qMstNf7uhYh8trQBOBFLxeJgcOxBq51pCcZ28Vs18Y7BDS58r8HGDKCYgXdLUYqPDXdKatIF4bvBVZg==
|
||||
vue-i18n@^9.6.5:
|
||||
version "9.6.5"
|
||||
resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.6.5.tgz#3a0bdc1e339ded633dc90aee640a7249efdfe3e5"
|
||||
integrity sha512-dpUEjKHg7pEsaS7ZPPxp1CflaR7bGmsvZJEhnszHPKl9OTNyno5j/DvMtMSo41kpddq4felLA7GK2prjpnXVlw==
|
||||
dependencies:
|
||||
"@intlify/core-base" "9.5.0"
|
||||
"@intlify/shared" "9.5.0"
|
||||
"@intlify/core-base" "9.6.5"
|
||||
"@intlify/shared" "9.6.5"
|
||||
"@vue/devtools-api" "^6.5.0"
|
||||
|
||||
vue-router@^4.2.5:
|
||||
@ -2501,25 +2536,25 @@ vue-template-compiler@^2.7.14:
|
||||
de-indent "^1.0.2"
|
||||
he "^1.2.0"
|
||||
|
||||
vue-tsc@^1.8.18:
|
||||
version "1.8.18"
|
||||
resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-1.8.18.tgz#9f92df899932c6bcee55284e4e781d35163f0816"
|
||||
integrity sha512-AwQxBB9SZX308TLL1932P1JByuMsXC2jLfRBGt8SBdm1e3cXkDlFaXUAqibfKnoQ1ZC2zO2NSbeBNdSjOcdvJw==
|
||||
vue-tsc@^1.8.22:
|
||||
version "1.8.22"
|
||||
resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-1.8.22.tgz#421e73c38b50802a6716ca32ed87b5970c867323"
|
||||
integrity sha512-j9P4kHtW6eEE08aS5McFZE/ivmipXy0JzrnTgbomfABMaVKx37kNBw//irL3+LlE3kOo63XpnRigyPC3w7+z+A==
|
||||
dependencies:
|
||||
"@vue/language-core" "1.8.18"
|
||||
"@vue/typescript" "1.8.18"
|
||||
"@volar/typescript" "~1.10.5"
|
||||
"@vue/language-core" "1.8.22"
|
||||
semver "^7.5.4"
|
||||
|
||||
vue@^3.3.4:
|
||||
version "3.3.4"
|
||||
resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.4.tgz#8ed945d3873667df1d0fcf3b2463ada028f88bd6"
|
||||
integrity sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==
|
||||
vue@^3.3.8:
|
||||
version "3.3.8"
|
||||
resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.8.tgz#532ff071af24f6a69e5ecc53a66858a9ee874ffc"
|
||||
integrity sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w==
|
||||
dependencies:
|
||||
"@vue/compiler-dom" "3.3.4"
|
||||
"@vue/compiler-sfc" "3.3.4"
|
||||
"@vue/runtime-dom" "3.3.4"
|
||||
"@vue/server-renderer" "3.3.4"
|
||||
"@vue/shared" "3.3.4"
|
||||
"@vue/compiler-dom" "3.3.8"
|
||||
"@vue/compiler-sfc" "3.3.8"
|
||||
"@vue/runtime-dom" "3.3.8"
|
||||
"@vue/server-renderer" "3.3.8"
|
||||
"@vue/shared" "3.3.8"
|
||||
|
||||
webpack-sources@^3.2.3:
|
||||
version "3.2.3"
|
||||
|
||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user