Einbindung Discovergy in FHEM

Da ich es grade für jemanden rausgesucht hatte, hier einmal ein kurzes Snippet für die Einbindung Discovergy zu FHEM

defmod di2r HTTPMOD https://USER:PASSWORD@api.discovergy.com/public/v1/last_reading?meterId=METERID 10
attr di2r userattr reading01JSON reading01Name reading02JSON reading02Name reading03JSON reading03Name
attr di2r event-min-interval 300
attr di2r reading01JSON values_energy
attr di2r reading01Name energy
attr di2r reading02JSON values_energyOut
attr di2r reading02Name energyOut
attr di2r reading03JSON values_power
attr di2r reading03Name power
attr di2r room Dashboard,Photovoltaik,Stromzähler
attr di2r stateFormat {sprintf("%.f W", ReadingsVal($name,"power",0)/1000)}

USER=User des Logins beim Discovergy Portal (bei mir ist das meine Email)

PASSWORD=Das dazugehörige Passwort, leider im Klartext, keine andere Möglichkeit bei der derzeitigen DGY API (@API_DGY: Es wäre super, wenn man hier einen TOKEN generieren könnte, ähnlich Github, Passwörter im Klartext finde ich persönlich sehr sehr unschön :slight_smile: )

METERID=Findet Ihr unter https://api.discovergy.com/public/v1/meters als jeweils ersten Parameter des Zählers (login ebenfalls mit user/password)

6 „Gefällt mir“

Hallo @FosCo,
vielen Dank für die tolle Dokumentation!

Allerdings kannst Du mir noch erklären, wofür die „10“ hinter der MeterID steht?
Herzliche Grüße aus der Eifel

Hi @Eifel-Holger die 10 ist Teil des httpmod Moduls in fhem.
Normal wird alle 60sec aktualisiert, da ich mein live Widget damit betreibe hab ich es auf 10sec gestellt.

@API_DGY wenn euch das zu häufig ist, Dreh ich es gerne runter oder halt auch im frohen neuen Jahr +1 für was lokales :sunglasses:

1 „Gefällt mir“

Super - vielen Dank für die schnelle Antwort - ist bei mir seit heute im Einsatz :+1:

Gern!
Mein nachgebautes Widget sieht inzwischen so aus.
Die Tagessumme kommt vom WR, der Rest von discovergy:

1 „Gefällt mir“

Wie muss ich in USER das @ maskieren?

Du kannst das Attribut requestHeader verwenden mit „Authorization: Basic HASHVALUE“, wobei HASHVALUE Base64 encoded „mail:passwort“ ist. Ich mag keine Klartext-Passwörter im fhem :wink:

Erstellen lässt sich der base64-String wie z.B. hier beschrieben: Basic Authentication Generator (Encode Credentials to Base 64) | API Connector

Irgendwie ging das auch auf der bash, aber im Javascript ist es noch einfacher im Browser mit den Dev-Tools.

1 „Gefällt mir“

Danke für die schnelle Antwort. Nun funktioniert es.

1 „Gefällt mir“

Da ich nicht mehr editieren kann, hier mein aktueller Code inklusive Tagessummen:

defmod midnightEnergyOut dummy
defmod midnightEnergyOutAt at 2022-11-23T00:00:00 {fhem("set midnightEnergyOut " . (ReadingsVal("di2r","energyOut",0)))}
defmod midnightEnergy dummy
defmod midnightEnergyAt at 2022-11-23T00:00:00 {fhem("set midnightEnergy " . (ReadingsVal("di2r","energy",0)))}

defmod di2r HTTPMOD https://api.discovergy.com/public/v1/last_reading?meterId=METERID 30
attr di2r userattr get0Header.authorization
attr di2r reading01JSON values_energy
attr di2r reading01Name energy
attr di2r reading02JSON values_energyOut
attr di2r reading02Name energyOut
attr di2r reading03JSON values_power
attr di2r reading03Name power
attr di2r requestHeader Authorization: Basic HASHVALUE
attr di2r room Dashboard,Photovoltaik,Stromzähler
attr di2r stateFormat {sprintf("%.f W", ReadingsVal($name,"power",0)/1000)}
attr di2r userReadings powerW {use Math::Round qw/round/;; Math::Round::round((ReadingsVal($name,"power",0)/1000));;;;},\
energyToday {use Math::Round qw/round/;; Math::Round::round(((ReadingsVal($name,"energy",0)-ReadingsVal("midnightEnergy","state",0))/10000000));;;;},\
energyOutToday {use Math::Round qw/round/;; Math::Round::round(((ReadingsVal($name,"energyOut",0)-ReadingsVal("midnightEnergyOut","state",0))/10000000));;;;},

METERID und HASHVALUE muss wie oben beschrieben gesetzt werden.

Hintergrund des Updates war die PV-Prognose, hier beschrieben: Leistungsprognose für Wechselrichter