Aktienkurse

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Benutzeravatar
udo1toni
Beiträge: 13987
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Aktienkurse

Beitrag von udo1toni »

Ich verstehe nicht, warum man das überhaupt mit einem Script macht.
Thing für einen Kurs:

Code: Alles auswählen

Thing http:url:DE000BASF111 "DE000BASF111" [
    baseURL="https://www.tradegate.de/refresh.php?isin=DE000BASF111",
    refresh=60
 ] {
    Channels:
    Type number : bid        "Bid"        [ stateTransformation="JSONPATH:$.bid" ]
    Type number : ask        "Ask"        [ stateTransformation="JSONPATH:$.ask" ]
    Type number : bidsize    "Bid Size"   [ stateTransformation="JSONPATH:$.bidsize" ]
    Type number : asksize    "Ask Size"   [ stateTransformation="JSONPATH:$.asksize" ]
    Type number : delta      "Delta"      [ stateTransformation="JSONPATH:$.delta" ]
    Type number : stueck     "Stück"      [ stateTransformation="JSONPATH:$.stueck" ]
    Type number : umsatz     "Umsatz"     [ stateTransformation="JSONPATH:$.umsatz" ]
    Type number : avg        "AVG"        [ stateTransformation="JSONPATH:$.avg" ]
    Type number : executions "Executions" [ stateTransformation="JSONPATH:$.executions" ]
    Type number : last       "Last"       [ stateTransformation="JSONPATH:$.last" ]
    Type number : high       "High"       [ stateTransformation="JSONPATH:$.high" ]
    Type number : low        "Low"        [ stateTransformation="JSONPATH:$.low" ]
    Type number : close      "Close"      [ stateTransformation="JSONPATH:$.close" ]
}
Items für einen Kurs:

Code: Alles auswählen

Number   DE000BASF111Bid          "Bid"          {channel="http:url:DE000BASF111:bid"}
Number   DE000BASF111Ask          "Ask"          {channel="http:url:DE000BASF111:ask"}
Number   DE000BASF111Bidsize      "Bid size"     {channel="http:url:DE000BASF111:bidsize"}
Number   DE000BASF111Asksize      "Ask size"     {channel="http:url:DE000BASF111:asksize"}
Number   DE000BASF111Delta        "Delta"        {channel="http:url:DE000BASF111:delta"}
Number   DE000BASF111Stueck       "Stück"        {channel="http:url:DE000BASF111:stueck"}
Number   DE000BASF111Umsatz       "Umsatz"       {channel="http:url:DE000BASF111:umsatz"}
Number   DE000BASF111Avg          "Avg"          {channel="http:url:DE000BASF111:avg"}
Number   DE000BASF111Executions   "Executions"   {channel="http:url:DE000BASF111:executions"}
Number   DE000BASF111Last         "Last"         {channel="http:url:DE000BASF111:last"}
Number   DE000BASF111High         "High"         {channel="http:url:DE000BASF111:high"}
Number   DE000BASF111Low          "Low"          {channel="http:url:DE000BASF111:low"}
Number   DE000BASF111Close        "Close"        {channel="http:url:DE000BASF111:close"}
Ich hab keine Ahnung von Aktien,welche der werte interessant sind oder nicht :) ;am legt für jede Aktie ein Thing an, welches dann die Daten alle <refresh> Sekunden abruft.
Wenn nur einer der Werte interessiert, könnte man die baseURL auch um den Namen kürzen und diesen stattdessen über die stateExtension im Channel setzen, das sollte ebenfalls funktionieren, dann wäre das Thing halt für alle Aktienkurse und pro Wert ein Channel, in der gewählten Form kann man halt die unterschiedlichen Eigenschaften immer mit den identischen Channelnamen abgreifen.

Ansonsten: Der korrekte JSONPath lautet $.bid, es braucht hier weder eckige Klammern noch sollte man das $-Zeichen unterschlagen, welches für den Ursprung steht.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

TomW80
Beiträge: 69
Registriert: 7. Mai 2021 19:11
Answers: 0

Re: Aktienkurse

Beitrag von TomW80 »

Hallo udotoni,

geht so leider auch nicht, da erhalte ich den Fehler:
2024-01-09 23:53:56.845 [WARN ] [.transform.SingleValueTransformation] - Transformation service JSONPATH for pattern $.bid not found!

Benutzeravatar
udo1toni
Beiträge: 13987
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Aktienkurse

Beitrag von udo1toni »

Dann hast Du JSONPATH nicht installiert.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

TomW80
Beiträge: 69
Registriert: 7. Mai 2021 19:11
Answers: 0

Re: Aktienkurse

Beitrag von TomW80 »

:roll:
Ja, nach der Installation geht es nun. Danke

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Aktienkurse

Beitrag von peter-pan »

Hab das grad mal installiert, wie von Udo beschrieben und funktioniert auf Anhieb. Allerdings hab ich den Refresh auf "3600" gesetzt. Einmal pro Stunde reicht mir "dicke". Bin ja kein Trader. :lol: ;)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

TomW80
Beiträge: 69
Registriert: 7. Mai 2021 19:11
Answers: 0

Re: Aktienkurse

Beitrag von TomW80 »

Habt Ihr auch das Problem dass bei euch der Kurs gelegentlich einen falschen Wert annimmt?
Aktienkurs.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
guinnes
Beiträge: 146
Registriert: 21. Apr 2020 19:46
Answers: 0

Re: Aktienkurse

Beitrag von guinnes »

TomW80 hat geschrieben: 15. Jan 2024 17:26 Habt Ihr auch das Problem dass bei euch der Kurs gelegentlich einen falschen Wert annimmt?
Ja. Von daher macht das übertragen der Werte über eine Rule Sinn, da kann man das abfangen
Glückauf
guinnes

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Aktienkurse

Beitrag von peter-pan »

Das Phänomen habe ich gerade auch bei mir bemerkt. Da hatte das Item den Wert 360 statt 3.60.

Bei der Auflösung des Json-Strings habe ich dann gesehen, dass dieser den Wert 3,60 enthielt.

Code: Alles auswählen

avg	3.5155
executions	141
last	3.535
high	"3,60"
low	3.475
close	3.64
Es müsste halt geprüft werden, ob hier ein Komma drin ist und dann ggf. in einen Punkt umgewandelt werden. Das geht vielleicht auch ohne Rule. Ich weiss im Moment nur (noch) nicht wie :? :oops: . :roll:
Jemand eine Idee, bevor ich selber drauf komme ? :idea: ;)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

Benutzeravatar
udo1toni
Beiträge: 13987
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Aktienkurse

Beitrag von udo1toni »

Direkt wird das etwas schwierig, mit einer Script Transformation ist es aber kein Ding. Ich mache das hier jetzt mit DSL, weil ich 's kann (ab OH4...)

Code: Alles auswählen

Type number : bid "Bid" [ stateTransformation='DSL:|transform("JSONPATH","$.bid",input).replace(",",".")' ]
Geht natürlich auch mit JavaScript usw, Vorteil der Inline Variante ist hier natürlich, dass man nur ein Script benötigt (wobei man inzwischen den JSON Path auch als Variable an ein per UID erreichbares Script übergeben könnte :)

Ich habe das jetzt nicht getestet :) falls es Probleme mit den einfachen Anführungszeichen gibt, wäre eine mögliche Alternative, die Anführungszeichen andersrum zu verwenden (äußere Anführungszeichen doppelt, innere Anführungszeichen einfach), oder zur Nor die inneren Anführungszeichen mit \ zu escapen, das macht es aber schwerer lesbar, weshalb ich hier darauf verzichte.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Aktienkurse

Beitrag von peter-pan »

...ja, so habe ich das gedacht. Super 👍 👍
Kleine Ergänzung - Ein Anführungszeichen vor JSONPATH"

Code: Alles auswählen

so ...
Type number : high  "High" [ stateTransformation="DSL:|transform(\"JSONPATH\",\"$.high\",input).replace(\",\",\".\")" ]
oder so...
Type number : high  "High" [ stateTransformation="DSL:|transform('JSONPATH','$.high',input).replace(',','.')" ]
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

Antworten