@@ -118,6 +126,7 @@
+
+
diff --git a/assets/js/types/evcc.ts b/assets/js/types/evcc.ts
index f2c07c9c0..dfcc4b073 100644
--- a/assets/js/types/evcc.ts
+++ b/assets/js/types/evcc.ts
@@ -571,6 +571,7 @@ export type EebusConfig = {
export type EebusStatus = {
ski: string;
+ qr?: string;
};
export type ModbusProxy = {
diff --git a/i18n/de.json b/i18n/de.json
index 13c9d94e2..48a3e37d6 100644
--- a/i18n/de.json
+++ b/i18n/de.json
@@ -220,6 +220,8 @@
"interfacesHelp": "Begrenzt die Netzwerkschnittstellen, die EEBus nutzen soll, um Kommunikationsprobleme zu vermeiden. Feld leer lassen, um alle Schnittstellen zu verwenden. Ein Eintrag pro Zeile.",
"port": "Port",
"portHelp": "Der zu verwendende Port.",
+ "qr": "Kopplungscode",
+ "qrExplain": "Während der Installation von einem anderen EEBus-Gerät scannen, um automatisch zu koppeln, ohne die SKI manuell einzugeben.",
"removeConfirm": "Die gesamte EEBus-Konfiguration wird entfernt. Neue Zertifikate und Kennungen werden beim nächsten Start generiert. Bist du sicher?",
"shipid": "SHIP-ID",
"shipidExplain": "Permanente Gerätekennung zur Identifikation im EEBus-Netzwerk.",
diff --git a/i18n/en.json b/i18n/en.json
index 2b20511fc..35ef0bff5 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -220,6 +220,8 @@
"interfacesHelp": "Limit the network interfaces that EEBus should use to avoid communication problems. Leave the field blank to use all interfaces. One entry per line.",
"port": "Port",
"portHelp": "The port to be used.",
+ "qr": "Pairing code",
+ "qrExplain": "Scan from another EEBus device during installation to pair automatically, without entering the SKI manually.",
"removeConfirm": "All EEBus configuration will be removed. New certificates and identifiers will be generated on next start. Are you sure?",
"shipid": "SHIP-ID",
"shipidExplain": "Permanent device identifier for identification in the EEBus network.",
diff --git a/server/eebus/eebus.go b/server/eebus/eebus.go
index 3675add09..f672de997 100644
--- a/server/eebus/eebus.go
+++ b/server/eebus/eebus.go
@@ -89,11 +89,26 @@ var Instance *EEBus
func GetStatus() any {
return struct {
Ski string `json:"ski"`
+ QR string `json:"qr,omitempty"`
}{
Ski: Ski(),
+ QR: qrCode(),
}
}
+// qrCode returns the SHIP installation QR code text per EEBus SHIP installation
+// requirements, or empty if unavailable
+func qrCode() string {
+ if Instance == nil {
+ return ""
+ }
+ qr, err := Instance.service.QRCodeText()
+ if err != nil {
+ return ""
+ }
+ return qr
+}
+
func NewServer(other Config) (*EEBus, error) {
cc := Config{
Port: 4712,