SHM: uppercase hex vendor id (#23616)
Co-authored-by: Michael Geers <michael@geers.tv>
This commit is contained in:
parent
7bcbebe9c2
commit
2a35026f4f
2 changed files with 12 additions and 8 deletions
|
|
@ -26,7 +26,7 @@ const (
|
|||
sempController = "Sunny Home Manager"
|
||||
sempBaseURLEnv = "SEMP_BASE_URL"
|
||||
sempGateway = "urn:schemas-simple-energy-management-protocol:device:Gateway:1"
|
||||
sempDeviceId = "F-%s-%.12x-00" // 6 bytes
|
||||
sempDeviceId = "F-%s-%.12X-00" // 6 bytes
|
||||
sempSerialNumber = "%s-%d"
|
||||
sempCharger = "EVCharger"
|
||||
basePath = "/semp"
|
||||
|
|
@ -55,11 +55,17 @@ type Config struct {
|
|||
|
||||
// NewFromConfig creates a new SEMP instance from configuration and starts it
|
||||
func NewFromConfig(cfg Config, site site.API, addr string, router *mux.Router) error {
|
||||
vendorId := cfg.VendorId
|
||||
vendorId := strings.ToUpper(cfg.VendorId)
|
||||
if vendorId == "" {
|
||||
vendorId = "28081973"
|
||||
} else if len(vendorId) != 8 {
|
||||
return fmt.Errorf("invalid vendor id: %v. Must be 8 characters HEX string", vendorId)
|
||||
} else {
|
||||
if _, err := hex.DecodeString(cfg.VendorId); err != nil {
|
||||
return fmt.Errorf("vendor id: %w", err)
|
||||
}
|
||||
|
||||
if len(cfg.VendorId) != 8 {
|
||||
return fmt.Errorf("invalid vendor id: %v. Must be 8 characters HEX string", vendorId)
|
||||
}
|
||||
}
|
||||
|
||||
uid, err := uuid.NewUUID()
|
||||
|
|
@ -198,7 +204,7 @@ func (s *SEMP) gatewayDescription(w http.ResponseWriter, r *http.Request) {
|
|||
Device: Device{
|
||||
DeviceType: sempGateway,
|
||||
FriendlyName: "evcc",
|
||||
Manufacturer: "github.com/evcc-io/evcc",
|
||||
Manufacturer: "evcc.io",
|
||||
ModelName: serverName,
|
||||
PresentationURL: s.hostURI,
|
||||
UDN: uid,
|
||||
|
|
|
|||
|
|
@ -71,9 +71,7 @@ test.describe("SHM", () => {
|
|||
modal.getByTestId("semp-url").click(),
|
||||
]);
|
||||
const xml = await sempPage.content();
|
||||
expect(xml).toContain(
|
||||
`<DeviceId>F-${VALID_VENDOR_ID}-${VALID_DEVICE_ID.toLowerCase()}-00</DeviceId>`
|
||||
);
|
||||
expect(xml).toContain(`<DeviceId>F-${VALID_VENDOR_ID}-${VALID_DEVICE_ID}-00</DeviceId>`);
|
||||
await sempPage.close();
|
||||
|
||||
// uncheck allow control
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue