Add flotten-updater and goecommon lib

This commit is contained in:
2024-10-11 09:43:29 +02:00
parent 20e3e9c7ab
commit f622d76ec8
197 changed files with 3475 additions and 272 deletions

View File

@@ -19,179 +19,8 @@ find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Quick WebSockets LinguistT
qt_standard_project_setup(REQUIRES 6.6 I18N_TRANSLATED_LANGUAGES de)
qt_add_executable(evcharger-app WIN32 MACOSX_BUNDLE
src/apikeyvaluehelper.cpp
src/apikeyvaluehelper.h
src/appsettings.cpp
src/appsettings.h
src/deviceconnection.cpp
src/deviceconnection.h
src/devicesmodel.cpp
src/devicesmodel.h
src/main.cpp
src/sendmessagehelper.cpp
src/sendmessagehelper.h
)
target_include_directories(evcharger-app
PRIVATE
src
)
qt6_add_translations(evcharger-app
RESOURCE_PREFIX /EVChargerApp/i18n
TS_FILE_BASE qml
TS_FILE_DIR i18n
)
set_property(TARGET evcharger-app APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/android)
if (ANDROID)
include(${ANDROID_SDK_ROOT}/android_openssl/CMakeLists.txt)
set_target_properties(evcharger-app PROPERTIES QT_ANDROID_EXTRA_LIBS "${ANDROID_EXTRA_LIBS}")
add_subdirectory(evcharger-app)
if (NOT ANDROID)
add_subdirectory(flotten-updater)
endif()
qt_add_qml_module(evcharger-app
URI EVChargerApp
VERSION 1.0
QML_FILES
qml/AboutPage.qml
qml/AccessPage.qml
qml/AddDeviceScreen.qml
qml/AnimatedStackLayout.qml
qml/AnimatedStackView.qml
qml/ApiKeyValueItem.qml
qml/ApiSettingsPage.qml
qml/AppInstance.qml
qml/AppSettingsPage.qml
qml/BaseNavigationPage.qml
qml/CablePage.qml
qml/CarPage.qml
qml/CellularPage.qml
qml/CenteredDialog.qml
qml/ChargerTabPage.qml
qml/ChargingConfigurationPage.qml
qml/ChargingSpeedPage.qml
qml/CloudApiQrCodePage.qml
qml/CloudPage.qml
qml/CloudUrlsModel.qml
qml/ConfirmingOnOffSwitch.qml
qml/ConnectingScreen.qml
qml/ConnectionPage.qml
qml/Constants.qml
qml/ControllerPage.qml
qml/ControllerTabPage.qml
qml/CurrentLevelsPage.qml
qml/DailyTripPage.qml
qml/DateAndTimePage.qml
qml/DeviceHeaderBar.qml
qml/DeviceListScreen.qml
qml/DeviceScreen.qml
qml/DisplaySettingsPage.qml
qml/DoubleSpinBox.qml
qml/EcoTabPage.qml
qml/EditValueItem.qml
qml/EthernetPage.qml
qml/EVChargerApp.qml
qml/FirmwarePage.qml
qml/FlexibleEnergyTariffPage.qml
qml/GeneralOnOffSwitch.qml
qml/GeneralPage.qml
qml/GridPage.qml
qml/GroundCheckPage.qml
qml/HardwareInformationPage.qml
qml/HotspotPage.qml
qml/InformationsTabPage.qml
qml/KwhLimitPage.qml
qml/LedPage.qml
qml/LicensesPage.qml
qml/LoadBalancingPage.qml
qml/LogicModeButton.qml
qml/MainScreen.qml
qml/MqttPage.qml
qml/NamePage.qml
qml/NavigationItem.qml
qml/NavigationPage.qml
qml/NotificationsPage.qml
qml/OcppPage.qml
qml/OpenLinkButton.qml
qml/PasswordPage.qml
qml/PvSurplusPage.qml
qml/QrCode.qml
qml/RebootPage.qml
qml/RequestStatusText.qml
qml/SchedulerDayPage.qml
qml/SchedulerPage.qml
qml/ScrollableTabPage.qml
qml/SecurityPage.qml
qml/SelectLogicModeItem.qml
qml/SelectPhaseSwitchModeItem.qml
qml/SensorsConfigurationPage.qml
qml/SetPriceLimitPage.qml
qml/SettingsTabPage.qml
qml/SetValueHelper.qml
qml/SimpleNavigationItem.qml
qml/StartStopButton.qml
qml/SwitchLanguagePage.qml
qml/TimeComponentLabel.qml
qml/TimePickerDialog.qml
qml/TimePickerLabel.qml
qml/TimePicker.qml
qml/TitleText.qml
qml/VerticalTabButton.qml
qml/WhiteBox.qml
qml/WhiteCheckDelegate.qml
qml/WhiteItemDelegate.qml
qml/WhiteSwipeDelegate.qml
qml/WiFiErrorsPage.qml
qml/WiFiPage.qml
qml/WiFiScanPage.qml
RESOURCES
qml/icons/Charger.svg
qml/icons/ChargerV3.svg
qml/icons/ChargerV4.svg
qml/icons/Controller.svg
qml/icons/Alarm.svg
qml/icons/EcoModeFilled.svg
qml/icons/Charts.svg
qml/images/controller.png
qml/images/geminiFlex.png
qml/images/homeFix.png
qml/images/homePlus.png
qml/images/wattpilot.png
qml/images/phoenix.png
qml/images/geminiFix.png
qml/js/qrcode.min.js
qml/material-icons/add.svg
qml/material-icons/grid_guides.svg
qml/material-icons/open_in_new.svg
qml/material-icons/settings.svg
qml/ui-icons/MaterialIcons-Regular.ttf
)
set_source_files_properties(Constants.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE)
target_link_libraries(evcharger-app PUBLIC
Qt6::Core
Qt6::Gui
Qt6::Widgets
Qt6::Quick
Qt6::WebSockets
qmsgpack
QtZeroConf
)
install(TARGETS evcharger-app
BUNDLE DESTINATION .
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
qt_generate_deploy_qml_app_script(
TARGET evcharger-app
OUTPUT_SCRIPT deploy_script
MACOS_BUNDLE_POST_BUILD
NO_UNSUPPORTED_PLATFORM_ERROR
DEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM
)
install(SCRIPT ${deploy_script})
add_subdirectory(goecommon)

View File

@@ -1 +0,0 @@
../../3rdparty/QtZeroConf/QZeroConfNsdManager.java

View File

@@ -0,0 +1,171 @@
qt_add_executable(evcharger-app WIN32 MACOSX_BUNDLE
appsettings.cpp
appsettings.h
apikeyvaluehelper.cpp
apikeyvaluehelper.h
deviceconnection.cpp
deviceconnection.h
devicesmodel.cpp
devicesmodel.h
main.cpp
sendmessagehelper.cpp
sendmessagehelper.h
)
qt6_add_translations(evcharger-app
RESOURCE_PREFIX /EVChargerApp/i18n
TS_FILE_BASE qml
TS_FILE_DIR i18n
)
if (ANDROID)
set_property(TARGET evcharger-app APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/android)
include(${ANDROID_SDK_ROOT}/android_openssl/CMakeLists.txt)
set_target_properties(evcharger-app PROPERTIES QT_ANDROID_EXTRA_LIBS "${ANDROID_EXTRA_LIBS}")
endif()
qt_add_qml_module(evcharger-app
URI EVChargerApp
VERSION 1.0
QML_FILES
qml/AboutPage.qml
qml/AccessPage.qml
qml/AddDeviceScreen.qml
qml/AnimatedStackLayout.qml
qml/AnimatedStackView.qml
qml/ApiKeyValueItem.qml
qml/ApiSettingsPage.qml
qml/AppInstance.qml
qml/AppSettingsPage.qml
qml/BaseNavigationPage.qml
qml/CablePage.qml
qml/CarPage.qml
qml/CellularPage.qml
qml/CenteredDialog.qml
qml/ChargerTabPage.qml
qml/ChargingConfigurationPage.qml
qml/ChargingSpeedPage.qml
qml/CloudApiQrCodePage.qml
qml/CloudPage.qml
qml/CloudUrlsModel.qml
qml/ConfirmingOnOffSwitch.qml
qml/ConnectingScreen.qml
qml/ConnectionPage.qml
qml/Constants.qml
qml/ControllerPage.qml
qml/ControllerTabPage.qml
qml/CurrentLevelsPage.qml
qml/DailyTripPage.qml
qml/DateAndTimePage.qml
qml/DeviceHeaderBar.qml
qml/DeviceListScreen.qml
qml/DeviceScreen.qml
qml/DisplaySettingsPage.qml
qml/DoubleSpinBox.qml
qml/EcoTabPage.qml
qml/EditValueItem.qml
qml/EthernetPage.qml
qml/EVChargerApp.qml
qml/FirmwarePage.qml
qml/FlexibleEnergyTariffPage.qml
qml/GeneralOnOffSwitch.qml
qml/GeneralPage.qml
qml/GridPage.qml
qml/GroundCheckPage.qml
qml/HardwareInformationPage.qml
qml/HotspotPage.qml
qml/InformationsTabPage.qml
qml/KwhLimitPage.qml
qml/LedPage.qml
qml/LicensesPage.qml
qml/LoadBalancingPage.qml
qml/LogicModeButton.qml
qml/MainScreen.qml
qml/MqttPage.qml
qml/NamePage.qml
qml/NavigationItem.qml
qml/NavigationPage.qml
qml/NotificationsPage.qml
qml/OcppPage.qml
qml/OpenLinkButton.qml
qml/PasswordPage.qml
qml/PvSurplusPage.qml
qml/QrCode.qml
qml/RebootPage.qml
qml/RequestStatusText.qml
qml/SchedulerDayPage.qml
qml/SchedulerPage.qml
qml/ScrollableTabPage.qml
qml/SecurityPage.qml
qml/SelectLogicModeItem.qml
qml/SelectPhaseSwitchModeItem.qml
qml/SensorsConfigurationPage.qml
qml/SetPriceLimitPage.qml
qml/SettingsTabPage.qml
qml/SetValueHelper.qml
qml/SimpleNavigationItem.qml
qml/StartStopButton.qml
qml/SwitchLanguagePage.qml
qml/TimeComponentLabel.qml
qml/TimePickerDialog.qml
qml/TimePickerLabel.qml
qml/TimePicker.qml
qml/TitleText.qml
qml/VerticalTabButton.qml
qml/WhiteBox.qml
qml/WhiteCheckDelegate.qml
qml/WhiteItemDelegate.qml
qml/WhiteSwipeDelegate.qml
qml/WiFiErrorsPage.qml
qml/WiFiPage.qml
qml/WiFiScanPage.qml
RESOURCES
qml/icons/Charger.svg
qml/icons/ChargerV3.svg
qml/icons/ChargerV4.svg
qml/icons/Controller.svg
qml/icons/Alarm.svg
qml/icons/EcoModeFilled.svg
qml/icons/Charts.svg
qml/images/controller.png
qml/images/geminiFlex.png
qml/images/homeFix.png
qml/images/homePlus.png
qml/images/wattpilot.png
qml/images/phoenix.png
qml/images/geminiFix.png
qml/js/qrcode.min.js
qml/material-icons/add.svg
qml/material-icons/grid_guides.svg
qml/material-icons/open_in_new.svg
qml/material-icons/settings.svg
qml/ui-icons/MaterialIcons-Regular.ttf
)
set_source_files_properties(qml/Constants.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE)
target_link_libraries(evcharger-app PUBLIC
Qt6::Core
Qt6::Gui
Qt6::Widgets
Qt6::Quick
Qt6::WebSockets
qmsgpack
QtZeroConf
goecommon
)
install(TARGETS evcharger-app
BUNDLE DESTINATION .
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
qt_generate_deploy_qml_app_script(
TARGET evcharger-app
OUTPUT_SCRIPT deploy_script
MACOS_BUNDLE_POST_BUILD
NO_UNSUPPORTED_PLATFORM_ERROR
DEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM
)
install(SCRIPT ${deploy_script})

View File

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

Before

Width:  |  Height:  |  Size: 459 KiB

After

Width:  |  Height:  |  Size: 459 KiB

View File

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 110 KiB

View File

Before

Width:  |  Height:  |  Size: 459 KiB

After

Width:  |  Height:  |  Size: 459 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 138 KiB

View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 138 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 227 KiB

After

Width:  |  Height:  |  Size: 227 KiB

View File

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

View File

Before

Width:  |  Height:  |  Size: 227 KiB

After

Width:  |  Height:  |  Size: 227 KiB

View File

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

Before

Width:  |  Height:  |  Size: 752 KiB

After

Width:  |  Height:  |  Size: 752 KiB

View File

Before

Width:  |  Height:  |  Size: 180 KiB

After

Width:  |  Height:  |  Size: 180 KiB

View File

Before

Width:  |  Height:  |  Size: 752 KiB

After

Width:  |  Height:  |  Size: 752 KiB

View File

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

Before

Width:  |  Height:  |  Size: 348 KiB

After

Width:  |  Height:  |  Size: 348 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 MiB

After

Width:  |  Height:  |  Size: 2.3 MiB

View File

Before

Width:  |  Height:  |  Size: 566 KiB

After

Width:  |  Height:  |  Size: 566 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 MiB

After

Width:  |  Height:  |  Size: 2.3 MiB

View File

@@ -0,0 +1 @@
../../../3rdparty/QtZeroConf/QZeroConfNsdManager.java

View File

@@ -0,0 +1,32 @@
#include "appsettings.h"
#include <QFile>
#include <QQmlFile>
bool AppSettings::loadSolalawebKey(const QString &url)
{
QFile file{QQmlFile::urlToLocalFileOrQrc(url)};
if (!file.open(QFile::ReadOnly))
{
qWarning() << "Could not open file:" << file.errorString();
return false;
}
setSolalawebKey(file.readAll());
return true;
}
bool AppSettings::loadSolalawebCert(const QString &url)
{
QFile file{QQmlFile::urlToLocalFileOrQrc(url)};
if (!file.open(QFile::ReadOnly))
{
qWarning() << "Could not open file:" << file.errorString();
return false;
}
setSolalawebCert(file.readAll());
return true;
}

View File

@@ -0,0 +1,15 @@
#pragma once
#include <QtQml/qqmlregistration.h>
#include "goesettings.h"
class AppSettings : public GoeSettings
{
Q_OBJECT
QML_ELEMENT
public:
Q_INVOKABLE bool loadSolalawebKey(const QString &url);
Q_INVOKABLE bool loadSolalawebCert(const QString &url);
};

View File

@@ -307,6 +307,91 @@
<translation>IP Adresse:</translation>
</message>
</context>
<context>
<name>ChargerConnection</name>
<message>
<location filename="../../flotten-updater/chargerconnection.cpp" line="79"/>
<location filename="../../flotten-updater/chargerconnection.cpp" line="311"/>
<source>Unknown</source>
<translation type="unfinished">Unbekannt</translation>
</message>
<message>
<location filename="../../flotten-updater/chargerconnection.cpp" line="80"/>
<source>Ok</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargerconnection.cpp" line="81"/>
<source>Offline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargerconnection.cpp" line="220"/>
<location filename="../../flotten-updater/chargerconnection.cpp" line="311"/>
<source>Idle</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargerconnection.cpp" line="220"/>
<source>Updating</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargerconnection.cpp" line="220"/>
<source>Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargerconnection.cpp" line="220"/>
<source>Succeeded</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargerconnection.cpp" line="220"/>
<source>NotReady</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargerconnection.cpp" line="220"/>
<source>Verifying</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargerconnection.cpp" line="233"/>
<source>%0 %1%</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargerconnection.cpp" line="235"/>
<source>%0 %1/?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargerconnection.cpp" line="237"/>
<source>%0 ?/%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargerconnection.cpp" line="311"/>
<source>Charging</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargerconnection.cpp" line="311"/>
<source>WaitCar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargerconnection.cpp" line="311"/>
<source>Complete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargerconnection.cpp" line="311"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChargerTabPage</name>
<message>
@@ -488,6 +573,99 @@
<translation>Daily trip</translation>
</message>
</context>
<context>
<name>ChargersModel</name>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="264"/>
<source>Serial</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="265"/>
<source>WS Status</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="266"/>
<source>Status</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="267"/>
<source>Variant</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="268"/>
<source>IsGo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="269"/>
<source>IsAustralien</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="270"/>
<source>ResetCard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="271"/>
<source>ConnectedWifi</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="272"/>
<source>Project</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="273"/>
<source>Version</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="274"/>
<source>IDF Version</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="275"/>
<source>Update</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="276"/>
<source>Reboots</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="277"/>
<source>Uptime</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="278"/>
<source>Current Partition</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="279"/>
<source>Car state</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="280"/>
<source>Energy</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/chargersmodel.cpp" line="281"/>
<source>Livedata</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChargingConfigurationPage</name>
<message>
@@ -562,7 +740,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/CloudApiQrCodePage.qml" line="36"/>
<location filename="../qml/CloudApiQrCodePage.qml" line="35"/>
<source>Open integrations page</source>
<translation>Integrationsseite öffnen</translation>
</message>
@@ -783,212 +961,212 @@
<context>
<name>DeviceConnection</name>
<message>
<location filename="../src/deviceconnection.cpp" line="68"/>
<location filename="../deviceconnection.cpp" line="68"/>
<source>Connecting to %0</source>
<translation>Verbinde zu %0</translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="115"/>
<location filename="../deviceconnection.cpp" line="115"/>
<source>Received something that is not a json object!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="123"/>
<location filename="../deviceconnection.cpp" line="123"/>
<source>Received something that does not contain a type!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="130"/>
<location filename="../deviceconnection.cpp" line="130"/>
<source>Received something with a non-string type!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="144"/>
<location filename="../deviceconnection.cpp" line="144"/>
<source>Received hello without serial!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="151"/>
<location filename="../deviceconnection.cpp" line="151"/>
<source>Received hello with a non-string serial!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="163"/>
<location filename="../deviceconnection.cpp" line="163"/>
<source>Received hello with a non-bool secured!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="176"/>
<location filename="../deviceconnection.cpp" line="176"/>
<source>Received hello without manufacturer!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="183"/>
<location filename="../deviceconnection.cpp" line="183"/>
<source>Received hello with a non-string manufacturer!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="212"/>
<location filename="../deviceconnection.cpp" line="212"/>
<source>Received hello without friendly_name!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="219"/>
<location filename="../deviceconnection.cpp" line="219"/>
<source>Received hello with a non-string friendly_name!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="194"/>
<location filename="../deviceconnection.cpp" line="194"/>
<source>Received hello without devicetype!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="78"/>
<location filename="../deviceconnection.cpp" line="78"/>
<source>Could not parse solalaweb certificate!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="89"/>
<location filename="../deviceconnection.cpp" line="89"/>
<source>Could not parse solalaweb key!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="201"/>
<location filename="../deviceconnection.cpp" line="201"/>
<source>Received hello with a non-string devicetype!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="240"/>
<location filename="../deviceconnection.cpp" line="240"/>
<source>Received authRequired without token1!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="247"/>
<location filename="../deviceconnection.cpp" line="247"/>
<source>Received authRequired with a non-string token1!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="258"/>
<location filename="../deviceconnection.cpp" line="258"/>
<source>Received authRequired without token2!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="265"/>
<location filename="../deviceconnection.cpp" line="265"/>
<source>Received authRequired with a non-string token2!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="290"/>
<location filename="../deviceconnection.cpp" line="290"/>
<source>Received fullStatus with a non-bool partial!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="300"/>
<location filename="../deviceconnection.cpp" line="300"/>
<source>Received fullStatus without a status!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="307"/>
<location filename="../deviceconnection.cpp" line="307"/>
<source>Received fullStatus with a non-object status!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="315"/>
<location filename="../deviceconnection.cpp" line="315"/>
<source>Received partial fullStatus</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="315"/>
<location filename="../deviceconnection.cpp" line="315"/>
<source>Received last fullStatus</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="327"/>
<location filename="../deviceconnection.cpp" line="327"/>
<source>Received deltaStatus without a status!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="334"/>
<location filename="../deviceconnection.cpp" line="334"/>
<source>Received deltaStatus with a non-object status!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="372"/>
<location filename="../deviceconnection.cpp" line="372"/>
<source>Received message type %0 %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="380"/>
<location filename="../deviceconnection.cpp" line="380"/>
<source>Received message with a non-string requestId!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="433"/>
<location filename="../deviceconnection.cpp" line="433"/>
<source>Sending %0</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="467"/>
<location filename="../deviceconnection.cpp" line="467"/>
<source>Connected!</source>
<translation>Verbunden!</translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="473"/>
<location filename="../deviceconnection.cpp" line="473"/>
<source>Disconnected!</source>
<translation>Verbindung verloren!</translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="477"/>
<location filename="../deviceconnection.cpp" line="477"/>
<source>Reconnecting to %0</source>
<translation>Verbinde wieder zu %0</translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="486"/>
<location filename="../deviceconnection.cpp" line="486"/>
<source>state changed: %0</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="495"/>
<location filename="../deviceconnection.cpp" line="495"/>
<source>could not parse received json: %0 at offset %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="512"/>
<location filename="../deviceconnection.cpp" line="512"/>
<source>unknown binary message type %0 received</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="520"/>
<location filename="../deviceconnection.cpp" line="520"/>
<source>error occured: %0</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="526"/>
<location filename="../deviceconnection.cpp" line="526"/>
<source>ssl peer verify error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="532"/>
<location filename="../deviceconnection.cpp" line="532"/>
<source>ssl errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="543"/>
<location filename="../deviceconnection.cpp" line="543"/>
<source>ssl alert sent level=%0 type=%1 description=%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="549"/>
<location filename="../deviceconnection.cpp" line="549"/>
<source>ssl alert received level=%0 type=%1 description=%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="555"/>
<location filename="../deviceconnection.cpp" line="555"/>
<source>ssl handshake interrupted on error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/deviceconnection.cpp" line="602"/>
<location filename="../deviceconnection.cpp" line="602"/>
<source>unknown response type %0</source>
<translation type="unfinished"></translation>
</message>
@@ -1158,8 +1336,8 @@
<context>
<name>DevicesModel</name>
<message>
<location filename="../src/devicesmodel.cpp" line="62"/>
<location filename="../src/devicesmodel.cpp" line="87"/>
<location filename="../devicesmodel.cpp" line="62"/>
<location filename="../devicesmodel.cpp" line="87"/>
<source>Device %0</source>
<translation>Gerät %0</translation>
</message>
@@ -1449,6 +1627,128 @@
<translation>Kanal</translation>
</message>
</context>
<context>
<name>ImportCertificateDialog</name>
<message>
<location filename="../../flotten-updater/importcertificatedialog.ui" line="14"/>
<source>Import Certificate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.ui" line="22"/>
<source>Supports Ssl:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.ui" line="29"/>
<location filename="../../flotten-updater/importcertificatedialog.ui" line="43"/>
<location filename="../../flotten-updater/importcertificatedialog.ui" line="57"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.ui" line="36"/>
<source>Ssl Library Version:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.ui" line="50"/>
<source>Ssl Library Build Version:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.ui" line="64"/>
<source>Ssl Backend:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.ui" line="77"/>
<source>Automatic Import:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.ui" line="87"/>
<source>Load p12 file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.ui" line="94"/>
<source>Private Key:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.ui" line="111"/>
<source>Private Cert:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.ui" line="130"/>
<source>Warning: Your private key and cert will be stored on this machine, but can later be erased from the main window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.cpp" line="26"/>
<source>Yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.cpp" line="26"/>
<source>No</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.cpp" line="51"/>
<source>Select certificate...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.cpp" line="58"/>
<source>Could not open file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.cpp" line="63"/>
<source>Please enter password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.cpp" line="63"/>
<source>Certificate password:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.cpp" line="77"/>
<source>Failed to load openssl legacy provider!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.cpp" line="82"/>
<location filename="../../flotten-updater/importcertificatedialog.cpp" line="88"/>
<location filename="../../flotten-updater/importcertificatedialog.cpp" line="94"/>
<source>Failed processing certificate!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.cpp" line="82"/>
<source>Possible reasons: openssl has a problem, the file is corrupt/invalid or the password is incorrect.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.cpp" line="88"/>
<source>The key seems to be invalid.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.cpp" line="94"/>
<source>The cert seems to be invalid.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/importcertificatedialog.cpp" line="149"/>
<source>Could not change active backend</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InformationsTabPage</name>
<message>
@@ -1541,6 +1841,104 @@
<translation>Einstellungen</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../flotten-updater/mainwindow.ui" line="14"/>
<source>MainWindow</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.ui" line="23"/>
<source>Connect All</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.ui" line="30"/>
<source>Disconnect All</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.ui" line="37"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.ui" line="44"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.cpp" line="46"/>
<source>Serial</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.cpp" line="55"/>
<source>Not yet implemented!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.cpp" line="60"/>
<source>%0 selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.cpp" line="82"/>
<source>Set update url...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.cpp" line="83"/>
<source>Start update...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.cpp" line="84"/>
<source>Reboot...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.cpp" line="85"/>
<source>Set chargectrl override...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.cpp" line="86"/>
<source>Set abitrary api key...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.cpp" line="90"/>
<source>Enter update url...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.cpp" line="90"/>
<source>Update url:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.cpp" line="106"/>
<source>Select update release...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.cpp" line="108"/>
<source>Update release</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.cpp" line="125"/>
<source>Are you sure?</source>
<translation type="unfinished">Sind Sie sicher?</translation>
</message>
<message>
<location filename="../../flotten-updater/mainwindow.cpp" line="125"/>
<source>Do you really want to reboot selected devices?</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MqttPage</name>
<message>
@@ -1855,6 +2253,52 @@
<translation>Neustart</translation>
</message>
</context>
<context>
<name>RequestDialog</name>
<message>
<location filename="../../flotten-updater/requestdialog.ui" line="14"/>
<source>Pending requests...</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RequestModel</name>
<message>
<location filename="../../flotten-updater/requestmodel.cpp" line="94"/>
<source>Pending</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/requestmodel.cpp" line="95"/>
<source>Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/requestmodel.cpp" line="96"/>
<source>Succeeded</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/requestmodel.cpp" line="125"/>
<source>Serial</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/requestmodel.cpp" line="126"/>
<source>RequestId</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/requestmodel.cpp" line="127"/>
<source>Status</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/requestmodel.cpp" line="128"/>
<source>Message</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SavedDevicesModel</name>
<message>
@@ -2055,7 +2499,7 @@
<context>
<name>SendMessageHelper</name>
<message>
<location filename="../src/sendmessagehelper.cpp" line="42"/>
<location filename="../sendmessagehelper.cpp" line="42"/>
<source>No device connection set!</source>
<translation type="unfinished"></translation>
</message>
@@ -2068,6 +2512,54 @@
<translation>Sensorkonfiguration</translation>
</message>
</context>
<context>
<name>SetArbitraryApiKeyDialog</name>
<message>
<location filename="../../flotten-updater/setarbitraryapikeydialog.ui" line="14"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/setarbitraryapikeydialog.ui" line="22"/>
<source>ApiKey:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/setarbitraryapikeydialog.ui" line="32"/>
<source>Value:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/setarbitraryapikeydialog.ui" line="48"/>
<source>Sudo:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/setarbitraryapikeydialog.ui" line="58"/>
<source>Enabled</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/setarbitraryapikeydialog.cpp" line="40"/>
<source>Could not parse JSON</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/setarbitraryapikeydialog.cpp" line="46"/>
<source>Unexpected not array!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/setarbitraryapikeydialog.cpp" line="54"/>
<source>Unexpected array length!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/setarbitraryapikeydialog.cpp" line="54"/>
<source>Unexpected array length: %0!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SetPriceLimitPage</name>
<message>
@@ -2540,4 +3032,19 @@
<translation>BSSID:</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../../flotten-updater/main.cpp" line="53"/>
<location filename="../../flotten-updater/main.cpp" line="54"/>
<source>Could not parse private key!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../flotten-updater/main.cpp" line="61"/>
<location filename="../../flotten-updater/main.cpp" line="62"/>
<source>Could not parse private cert!</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

Some files were not shown because too many files have changed in this diff Show More