commit
dedd3ba5c5
14 changed files with 48 additions and 33 deletions
|
|
@ -57,7 +57,7 @@ func NewLgEssFromConfig(other map[string]interface{}) (api.Meter, error) {
|
|||
URI, Usage, Password string
|
||||
Cache time.Duration
|
||||
}{
|
||||
Cache: 2 * time.Second,
|
||||
Cache: time.Second,
|
||||
}
|
||||
|
||||
if err := util.DecodeOther(other, &cc); err != nil {
|
||||
|
|
|
|||
|
|
@ -16,14 +16,15 @@ var acceptable = []string{
|
|||
"missing password", // Powerwall
|
||||
"connect: no route to host",
|
||||
"connect: connection refused",
|
||||
"i/o timeout",
|
||||
"connect: network is unreachable",
|
||||
"no ping response for 192.0.2.2", // SMA
|
||||
"network is unreachable",
|
||||
"i/o timeout",
|
||||
"'sma': missing uri or serial", // SMA
|
||||
"'fritzdect': missing ain", // FritzDect
|
||||
"[1ESY1161052714 1ESY1161229249 1EMH0008842285 1ESY1161978584 1EMH0004864048 1ESY1161979033 7ELS8135823805]", // Discovergy
|
||||
"can only have either uri or device", // modbus
|
||||
"(Client.Timeout exceeded while awaiting headers)", // http
|
||||
"cannot create meter 'discovergy': unexpected status: 401", // Discovergy Proxy
|
||||
"unexpected status: 401", // Discovergy
|
||||
"unexpected status: 503", // Discovergy
|
||||
"login failed: Put \"https://192.0.2.2/v1/login\": context deadline exceeded", // LG ESS
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -130,8 +130,8 @@ params:
|
|||
de: Zeitüberschreitung
|
||||
en: Timeout
|
||||
help:
|
||||
de: Akzeptiere keine Daten die älter als dieser Wert ist
|
||||
en: Don't accept values older than this value in seconds
|
||||
de: Akzeptiere keine Daten die älter als dieser Wert sind
|
||||
en: Don't accept values older than this value
|
||||
example: 30s
|
||||
valuetype: duration
|
||||
- name: mode
|
||||
|
|
@ -288,7 +288,7 @@ presets:
|
|||
{{define "vehicle-language"}}
|
||||
language: {{ .language }}
|
||||
{{end}}
|
||||
|
||||
|
||||
vehiclecloud:
|
||||
params:
|
||||
- name: cloud
|
||||
|
|
|
|||
|
|
@ -17,11 +17,10 @@ params:
|
|||
example: 192.0.2.2
|
||||
- name: port
|
||||
default: 502
|
||||
help:
|
||||
help:
|
||||
en: Port 502 (SetApp) or 1502 (LCD)
|
||||
de: Port 502 (SetApp) oder 1502 (LCD)
|
||||
- name: timeout
|
||||
default: 3s
|
||||
render: |
|
||||
type: custom
|
||||
power:
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ params:
|
|||
id: 1
|
||||
port: 1502
|
||||
- name: timeout
|
||||
default: 3s
|
||||
render: |
|
||||
type: custom
|
||||
power:
|
||||
|
|
|
|||
|
|
@ -11,4 +11,4 @@ render:
|
|||
host: 192.0.2.2 # Die IP Adresse oder der Hostname des MQTT Brokers
|
||||
port: 1883 # Der Port des MQTT Brokers # Optional
|
||||
topic: warp # Optional
|
||||
timeout: 30s # Akzeptiere keine Daten die älter als dieser Wert ist # Optional
|
||||
timeout: 30s # Akzeptiere keine Daten die älter als dieser Wert sind # Optional
|
||||
|
|
@ -11,4 +11,4 @@ render:
|
|||
host: 192.0.2.2 # Die IP Adresse oder der Hostname des MQTT Brokers
|
||||
port: 1883 # Der Port des MQTT Brokers # Optional
|
||||
topic: warp # Optional
|
||||
timeout: 30s # Akzeptiere keine Daten die älter als dieser Wert ist # Optional
|
||||
timeout: 30s # Akzeptiere keine Daten die älter als dieser Wert sind # Optional
|
||||
|
|
@ -17,7 +17,7 @@ render:
|
|||
currentp1: # Optional
|
||||
currentp2: # Optional
|
||||
currentp3: # Optional
|
||||
timeout: 30s # Akzeptiere keine Daten die älter als dieser Wert ist # Optional
|
||||
timeout: 30s # Akzeptiere keine Daten die älter als dieser Wert sind # Optional
|
||||
- usage: pv
|
||||
default: |
|
||||
type: template
|
||||
|
|
@ -31,7 +31,7 @@ render:
|
|||
currentp1: # Optional
|
||||
currentp2: # Optional
|
||||
currentp3: # Optional
|
||||
timeout: 30s # Akzeptiere keine Daten die älter als dieser Wert ist # Optional
|
||||
timeout: 30s # Akzeptiere keine Daten die älter als dieser Wert sind # Optional
|
||||
- usage: charge
|
||||
default: |
|
||||
type: template
|
||||
|
|
@ -45,7 +45,7 @@ render:
|
|||
currentp1: # Optional
|
||||
currentp2: # Optional
|
||||
currentp3: # Optional
|
||||
timeout: 30s # Akzeptiere keine Daten die älter als dieser Wert ist # Optional
|
||||
timeout: 30s # Akzeptiere keine Daten die älter als dieser Wert sind # Optional
|
||||
- usage: battery
|
||||
default: |
|
||||
type: template
|
||||
|
|
@ -59,4 +59,4 @@ render:
|
|||
currentp1: # Optional
|
||||
currentp2: # Optional
|
||||
currentp3: # Optional
|
||||
timeout: 30s # Akzeptiere keine Daten die älter als dieser Wert ist # Optional
|
||||
timeout: 30s # Akzeptiere keine Daten die älter als dieser Wert sind # Optional
|
||||
|
|
@ -12,7 +12,7 @@ render:
|
|||
usage: grid
|
||||
host: 192.0.2.2 # IP-Adresse oder Hostname
|
||||
port: 502 # Port 502 (SetApp) oder 1502 (LCD) # Optional
|
||||
timeout: 3s # Akzeptiere keine Daten die älter als dieser Wert ist # Optional
|
||||
timeout: 30s # Akzeptiere keine Daten die älter als dieser Wert sind # Optional
|
||||
- usage: pv
|
||||
default: |
|
||||
type: template
|
||||
|
|
@ -20,7 +20,7 @@ render:
|
|||
usage: pv
|
||||
host: 192.0.2.2 # IP-Adresse oder Hostname
|
||||
port: 502 # Port 502 (SetApp) oder 1502 (LCD) # Optional
|
||||
timeout: 3s # Akzeptiere keine Daten die älter als dieser Wert ist # Optional
|
||||
timeout: 30s # Akzeptiere keine Daten die älter als dieser Wert sind # Optional
|
||||
- usage: battery
|
||||
default: |
|
||||
type: template
|
||||
|
|
@ -28,4 +28,4 @@ render:
|
|||
usage: battery
|
||||
host: 192.0.2.2 # IP-Adresse oder Hostname
|
||||
port: 502 # Port 502 (SetApp) oder 1502 (LCD) # Optional
|
||||
timeout: 3s # Akzeptiere keine Daten die älter als dieser Wert ist # Optional
|
||||
timeout: 30s # Akzeptiere keine Daten die älter als dieser Wert sind # Optional
|
||||
|
|
@ -13,7 +13,7 @@ render:
|
|||
# TCPIP
|
||||
uri: 192.0.2.2:1502 # IP-Adresse oder Hostname: Port
|
||||
# Modbus End
|
||||
timeout: 3s # Akzeptiere keine Daten die älter als dieser Wert ist # Optional
|
||||
timeout: 30s # Akzeptiere keine Daten die älter als dieser Wert sind # Optional
|
||||
- usage: pv
|
||||
default: |
|
||||
type: template
|
||||
|
|
@ -24,4 +24,4 @@ render:
|
|||
# TCPIP
|
||||
uri: 192.0.2.2:1502 # IP-Adresse oder Hostname: Port
|
||||
# Modbus End
|
||||
timeout: 3s # Akzeptiere keine Daten die älter als dieser Wert ist # Optional
|
||||
timeout: 30s # Akzeptiere keine Daten die älter als dieser Wert sind # Optional
|
||||
|
|
@ -6,6 +6,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/evcc-io/evcc/util"
|
||||
"github.com/evcc-io/evcc/util/transport"
|
||||
)
|
||||
|
||||
// Timeout is the default request timeout used by the Helper
|
||||
|
|
@ -21,7 +22,7 @@ func NewHelper(log *util.Logger) *Helper {
|
|||
r := &Helper{
|
||||
Client: &http.Client{
|
||||
Timeout: Timeout,
|
||||
Transport: NewTripper(log, http.DefaultTransport),
|
||||
Transport: NewTripper(log, transport.Default()),
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import (
|
|||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/jinzhu/copier"
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
|
|
@ -21,9 +22,16 @@ func RenderTest(t *testing.T, tmpl Template, values map[string]interface{}, cb f
|
|||
// instantiate all usage variants
|
||||
for _, u := range tmpl.Usages() {
|
||||
t.Run(u, func(t *testing.T) {
|
||||
values[ParamUsage] = u
|
||||
// t.Parallel()
|
||||
|
||||
b, _, err := tmpl.RenderResult(TemplateRenderModeInstance, values)
|
||||
// create a copy of the map for parallel execution
|
||||
usageValues := make(map[string]interface{}, len(values)+1)
|
||||
if err := copier.Copy(&usageValues, values); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
usageValues[ParamUsage] = u
|
||||
|
||||
b, _, err := tmpl.RenderResult(TemplateRenderModeInstance, usageValues)
|
||||
if err != nil {
|
||||
t.Errorf("usage: %s, result: %v", u, err)
|
||||
}
|
||||
|
|
@ -35,7 +43,7 @@ func RenderTest(t *testing.T, tmpl Template, values map[string]interface{}, cb f
|
|||
|
||||
// actually run the instance if not on CI
|
||||
if os.Getenv("CI") == "" {
|
||||
cb(values)
|
||||
cb(usageValues)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -203,8 +203,6 @@ func (p *Param) DefaultValue(renderMode string) interface{} {
|
|||
default:
|
||||
if p.Test != "" {
|
||||
return p.Test
|
||||
} else if p.Example != "" && renderMode == TemplateRenderModeUnitTest {
|
||||
return p.Example
|
||||
} else if p.Example != "" && p.Default == "" && renderMode == TemplateRenderModeDocs {
|
||||
return p.Example
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -2,16 +2,25 @@ package transport
|
|||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"net"
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Default returns http.DefaultTransport as http.Transport instead of http.RoundTripper
|
||||
// Default returns an http.DefaultTransport as http.Transport with reduced dial timeout
|
||||
func Default() *http.Transport {
|
||||
t, ok := http.DefaultTransport.(*http.Transport)
|
||||
if !ok {
|
||||
panic("http.DefaultTransport is not an http.Transport")
|
||||
return &http.Transport{
|
||||
Proxy: http.ProxyFromEnvironment,
|
||||
DialContext: (&net.Dialer{
|
||||
Timeout: 5 * time.Second, // reduced from 30s
|
||||
KeepAlive: 30 * time.Second,
|
||||
}).DialContext,
|
||||
ForceAttemptHTTP2: true,
|
||||
MaxIdleConns: 100,
|
||||
IdleConnTimeout: 90 * time.Second,
|
||||
TLSHandshakeTimeout: 10 * time.Second,
|
||||
ExpectContinueTimeout: 1 * time.Second,
|
||||
}
|
||||
return t
|
||||
}
|
||||
|
||||
// InsecureTransport is an http.Transport with TLSClientConfig.InsecureSkipVerify enabled
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue