-
-
Notifications
You must be signed in to change notification settings - Fork 670
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Ostrom #16354
base: master
Are you sure you want to change the base?
Add Ostrom #16354
Conversation
@andig Warum draft? Nach meiner Ansicht ist das fertig so, oder hast du Änderungsvorschläge? |
Bezüglich des Preises für den SIMPLY_FAIR Tarif: Ich nutze aktuell schlicht einen Query für die generische
Allerdings muss man sich dafür die Gibt die API ggf. bzgl. der Ich wechsle in ein paar Wochen in den SIMPLE_DYNAMIC Tarif, dann ist deine Integration perfekt. |
the v1 API.
Guter Hinweis. In der dokumentierten API gibt es nichts, um die CityId zu erfragen. Aber etwas suchen im Quelltext der Webseite ergab: |
Removed DEBUG output
… tariff/ostrom
Aus meiner Sicht ist das so fertig. Hab's in der Sandbox mit beiden Varianten getestet und es funktioniert. |
Der Bot schließt nach 14 Tagen Inaktivität automatisch. |
Kannst du nochmal drüber schauen woran es hakt? |
Da gibt's einen Test, der versucht einen Ostrom Tarif anzulegen und scheitert mit "unauthorized", was ich für korrekt halte. Keine Ahnung, wo der Test her kommt. Als ich das zuletzt eingecheckt habe, war alles grün. |
Ich kann nur den aktuellen head in den branch mergen, was ich eben gemacht habe. Anders herum muss einer der maintainer machen. Es fehlt nichts mehr, aber ich glaube @andig möchte das nicht wirklich im Produkt haben, da er es für unnötig hält. Ich glaube allerdings, dass es sowohl im Marketing hilft, als auch dem Normal-User, der nicht versteht, wie er einen der anderen Tarife nutzen könnte. |
Es hat ein Review gegeben mit ein paar Änderungswünschen. Habe es noch nicht geschafft, mir das anzuschauen. Mache ich in den nächsten Tagen. Hoffentlich geht es dann durch. |
So, habe alle Änderungswünsche bis auf einen umgesetzt. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking good to me.
@andig would you mind giving this a final glance and then merge?
tariff/ostrom.go
Outdated
case ostrom.PRODUCT_FAIR, ostrom.PRODUCT_FAIR_CAP: | ||
return api.TariffTypePriceStatic | ||
default: | ||
t.log.ERROR.Printf("Unknown tariff type %s\n", t.contractType) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Das reicht einmalig beim init
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, ich verstehe nicht, was der Änderungswunsch ist. Den Wert einmalig berechnen und dann hier nur das gespeicherte Resultat zurückgeben?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Das Errorlogging. Der Tarif kann sich ja später nicht ändern.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Verstehe, Derzeit kann der default aber auch nicht erreicht werden. War mehr als Hinweis gedacht, falls die da mal was erweitern. Dafür halte ich eine Kopie des codes im init für overkill. Hab die Meldung daher ganz entfernt.
Co-authored-by: andig <cpuidle@gmail.com>
Co-authored-by: andig <cpuidle@gmail.com>
} | ||
mergeRates(t.data, data) | ||
} else { | ||
t.log.ERROR.Println(err) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Das sieht falsch aus. Fehler zurück geben?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Das würde die Run Funktion ja beenden. Mein Gedanke war, dass es diesmal einen Fehler gegeben haben kann, dass aber den nächste Aufruf vielleicht funktioniert.
|
||
tick := time.NewTicker(time.Hour) | ||
for ; true; <-tick.C { | ||
val.Marketprice, err = t.getFixedPrice() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wozu braucht es val.Marketprice?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Der Gesamtpreis ergibt sich als "Marketprice+AdditionalCost", siehe rate()
. Da steht also der Preis drin. Ich wollte so weit es geht dieselben Datenstrukturen und Funktionen für statische und dynamische Preise verwenden, daher wird hier auch für statische Preise ein ostrom.ForcastInfo
verwendet, um so rate()
nutzen zu können.
data := make(api.Rates, 0, 48) | ||
for i := 0; i < 48; i++ { | ||
data = append(data, rate(val)) | ||
val.StartTimestamp = val.StartTimestamp.Add(time.Hour) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wozu braucht es val.StartTimestamp? Das sollte eine lokale Variable sein.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Das wird in rate()
zur Berechnung von start-und Endzeit verwendet. Ansonsten, siehe mein Kommentar zu "Marketprice"
Tested in Snadbox with both types of contracts and in production with static tariff
In discussion #15512 and closed issue #11148 people are asking for Ostrom support.
Since they have a public API and I had some spare time I implemented a tariff for EVCC.
The implementation supports both the SIMPLY_FAIR (fixed price for at least a month) and the SIMPLY_DYNAMIC (hourly rates) tariff, which would make it worth having a native implementation.
The prices for both tariffs are queried on a regular basis.
Client credentials can be created under https://developer.ostrom-api.io/
Looking forward to your comments