95_Shares.pm erweitert um alternative Symbole

Begonnen von Prof. Dr. Peter Henning, 13 April 2024, 10:47:48

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

So, ich habe eine Lösung dafür, dass yahoon_json mal wieder blockiert - noch etwas provisorisch, aber es geht.

Bitte die anhängende Version mal zum Testen verwenden. Achtung: unerwünschte Effekte nicht auszuschließen, also vorher bitte eine Kopie des "stocks"-Attributes machen. Oder auf einer Kopie des Depots arbeiten.

Dann

1. Das Attribut "defaultSource" erweitern. War der Wert vorher z.B. yahoo_json, steht jetzt dort bei mir yahoo_json|xetra. Mit anderen Worten, der Attributwert ist künftig eine '|'-getrennte Liste.
2. Im Attribut "stocks" können (müssen nicht !) die Wertpapiersymbole jetzt ebenfalls eine '|'-getrennte Liste sein. Beispielsweise
wird aus
ZitatNADQ.DE:xxx:yyy:tech
jetzt ein
ZitatNADQ.DE|LU2197908721:xxx:yyy:tech
Im ersten Eintrag der Liste steht also weiterhin das von Yahoo verwendete Symbol, gefolgt von '|' und der ISIN. Und damit ist klar, wie der Abruf künftig funktioniert: Das an der Stelle <n> in der "stocks"-Zeile stehende Symbol wird von der Quelle geholt, die in der "defaultSource"-Liste ebenfalls an Stelle <n> steht.
3. Es gibt ein neues Attribut "altSymbol". Das muss auf den Index gesetzt werden, der die tatsächliche default-Quelle festlegt. Im Beispiel also 0, wenn weiterhin bei yahoon_json gesucht werden soll, oder 1, wenn bei xetra nachgesehen werden soll.

Der gesamte '|'-getrennte String wird übrigens mitgeschleppt. Wenn ich also derzeit die Sachen von xetra hole und LU2197908721 zukaufe, wird das korrekt im Attribut vermerkt, und wenn dann irgendwann yahoo_json wieder funktioniert, stimmen meine Zahlen trotzdem.

Testberichte und Kommentare willkommen.

Insbesondere würde mich interessieren, ob irgendjemand eine Ahnung hat, warum
ZitatAHYQ.DE|LU2572257124:xxx:yyy:tech,
_nicht_ geht. Das ist  ein ETF mit der korrekten ISIN - aber das xetra-Modul von Finance::Quote kommt damit irgendwie nicht zurecht.

Was dann noch zu tun wäre: Die Beschreibung entsprechend upzudaten.


LG

pah


mumpitzstuff

Ich habe vorhin auch bemerkt dass das xetra Modul von Finance Quote nicht mehr geht seit dem 15.03. Vor rund 4 Monaten hatte ich den letzten Patch dort eingestellt, aber die haben anscheinend schon wieder die Webseite angepasst. Ich guck mal die nächsten Tage was sich machen lässt.
Bezüglich Yahoo gibt es eine vermeintliche Lösung, die aber bei mir nicht funktioniert. Im Browser geht's aber nicht mit Perl.

https://github.com/finance-quote/finance-quote/issues/369

Vielleicht liegt es daran, das im Browser 4-5 Cookies ankommen, unter Perl aber nur 1.


Biker57

Ich habe die Version 1.2 vom 95_Shares.pm eingespielt und das Testdepot3 angepaßt. Allerdings ohne Erfolg und im log-File gibt's die Meldung:

2024.04.13 15:36:11 1: PERL WARNING: Undefined fetch-method yahoo_json|bourso passed to Finance::Quote::fetch at /opt/fhem/FHEM/95_Shares.pm line 704.

hier die Konfiguration von Depot3:
   NAME       Depot3
   NR         718
   STATE      0.00 EUR ( 0 % = 0.00 EUR)  2024-04-13 15:36:11
   TYPE       Shares
   eventCount 16
   .attraggr:
   .attrminint:
   DATA:
     categories:
   OLDREADINGS:
   READINGS:
     2024-04-13 15:36:11   depot_change    0
     2024-04-13 15:36:11   depot_change_day 0
     2024-04-13 15:36:11   depot_diff      0.00
     2024-04-13 15:36:11   depot_diff_day  0.00
     2024-04-13 15:36:11   depot_value     0.00
     2024-04-13 15:36:11   depot_value_entry 0.00
     2024-04-13 15:36:11   exchangerate    1 EUR/EUR
     2024-04-13 15:36:11   state           0.00 EUR ( 0 % = 0.00 EUR)  2024-04-13 15:36:11
   helper:
Attributes:
   DbLogExclude .*
   comment    Depot3a zum Ausprobieren
   defaultSource yahoo_json|bourso
   depotCurrency EUR:€
   pollInterval 1800
   queryTimeout 120
   room       Aktiendepot
   shareCurrency EUR:€
   shareFurtherReadings change_day
   sourcesLinks yahoo_json:de.finance.yahoo.com/quote/$SYMBOL
   stocks     AI.PA|FR0000120073:1:133.4:h2,
FRA.DE|DE0005773303:6:258.47:mobility,
BAS.DE|DE000BASF111:3:154:chemistry,
LIN.DE|IE000S9YS762:1:212:chemistry,
TKA.DE|DE0007500001:10:72:tech

Das Depot3 arbeitet mit bourso ohne Fehler...

Prof. Dr. Peter Henning

Zitat von: mumpitzstuff am 13 April 2024, 14:23:30Ich habe vorhin auch bemerkt dass das xetra Modul von Finance Quote nicht mehr geht seit dem 15.03
Hmm. Funktioniert bei mir ohne Probleme - und ich habe erst vor vier Tagen ein komplett neu aufgesetztes Finance::Quote in der Version 1.59 installiert (Systemwechsel zum aktuellen Bullseye auf dem betreffenden Pi).

LG

pah

Prof. Dr. Peter Henning

Mit Sicherheit leitet die aktuelle Version nicht "yahoo_json|bourso" an Finance::Quote weiter.
Zitat von: Biker57 am 13 April 2024, 15:41:25Ich habe die Version 1.2 vom 95_Shares.pm eingespielt und das Testdepot3 angepaßt.
Das reicht nicht, man muss das Modul auch mit "reload 95_Shares.pm" laden ...

LG

pah

ToKa

Hi Pah,

es gibt eine neue Version von Finance::Quote, die das yahoo Problem angeblich löst. Bei mir kommen aber immer noch keine Daten über yahoo an.

Hast Du oder jemand anderes die 1.60 von Finance::Quote schon erfolgreich im Einsatz? Wie könnte ich denn debuggen, was im yahoo Modul schief geht?

Viele Grüße
Torsten
RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight

carlos

Ich habe gerade die 1.61 von Finance::Quote per cpan installiert.
Funktioniert soweit alles.

Gruß

Hubert
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

ToKa

Hallo Hubert,

ok, also noch eine neuere Version. Dann probiere ich es mit der.

Danke und viele Grüße
Torsten
RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight

Prof. Dr. Peter Henning

#8
Installation läuft gerade... Gähn.

Die angepasste Version von Shares kommt demnächst per Update - das ist einfach etwas, das ich drin haben wollte. Jetzt kann ich für jedes Papier Yahoo, ISIN und WKN eintragen. Muss nur noch die Doku anpassen.

OK, mit Finance::Quote 1.61 läuft wieder alles wie gewohnt. Nicht, dass es derzeit Spaß machen würde, die Kurse anzusehen...

LG

pah

ToKa

Bei mir tut es die 1.61 leider auch nicht.

Irgendwie klappt das mit den coockies nicht. Ich habe mir die cookies jetzt vom Win-PC geholt und in einer Datei abgelegt, die ich dann im yahoo Modul einlese, anstelle dass die coockies abgerufen werden.

Das geht jezt erst einmal gut. Vielleicht bin ich ja nicht der einzige und es gibt noch mal ein Update von Finance::Quote

Vielen Dank an Dich Pah für die Erweiterung!

VG
Torsten
RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight

mumpitzstuff

Das Problem an Yahoo ist, das die sogar einen Location basierten Ansatz verwenden. Sobald du aus der EU kommst, musst du sogar noch einen Button im Browser drücken. Ich habe mir den Code von Finance::Quote auch mal in ein kleines Script gepackt und bereits die erste URL liefert gar keinen Cookie. Irgendwas prüfen die da bei dem Server, eventuell die IP oder Spracheinstellung, keine Ahnung. Jedenfalls ist das ganze nicht trivial und je komplizierter es ist, desto schneller geht es wieder nicht. Von Yahoo würde ich mich fürs erste verabschieden.

Prof. Dr. Peter Henning

Na ja, die Sache mit der Sparkasse ist auch wackelig - Kursdaten kosten nämlich immer Geld. Das kann ich deshalb mit Sicherheit sagen, weil ich in den 1990er Jahren mal für die Deutsche Börse gearbeitet habe. Und der unmodifizierte xetra-Code von Finance::Quote holt diese Daten von _einem_ Institut. Und wenn diese Sparkasse irgendwann beschließt, dass sie dafür zu hohe Gebühren an den Dienstleister zahlt, war es das.

Deshalb plädiere ich für den flexiblen Ansatz - gestern konnte ich mit einem einzigen
attr .*:FILTER=TYPE=Shares altSymbol 0
alles wieder auf Yahoo umstellen.

LG

pah

Jamo

#12
Hi,
ich versuche von Yahoo den Stockpreis von Nvidia abzurufen, aber es gelingt mir einfach nicht. Alle Readings sind 0.00 - Kann mir jemand helfen? Ich habe alle altSymbol 0/1/2 durchprobiert.

95_Shares.pm ist aktuell, nach dem upate habe ich shutdown/restart gemacht.
# $Id: 95_Shares.pm 28811 2024-04-20 16:30:32Z phenning $
Finance::Quote ist auch auf der letzten version:
fhem@inuc:~$ sudo cpanm Finance::Quote
Finance::Quote is up to date. (1.61)
fhem@inuc:~$

Logfile:
2024.04.21 20:18:37 4: [Shares_QueryQuotes] start blocking query
2024.04.21 20:18:37 4: [Shares_QueryQuotesBlocking]
2024.04.21 20:18:37 4: [Shares_QueryQuotesBlocking] query share: NVDA from source yahoojson
2024.04.21 20:18:37 4: [Shares_QueryQuotesBlocking] fetching from source: yahoojson
2024.04.21 20:18:38 4: [Shares_QueryQuotesBlocking] return value: myShares
2024.04.21 20:18:38 4: [Shares_QueryQuotesFinished]
2024.04.21 20:18:38 4: [Shares_UpdateCurrency] exchangerate = 0.93870271285084 for EUR/USD in depot myShares
2024.04.21 20:18:38 4: [Shares_QueueTimer] 1800 seconds

Copy for Forum:
define myShares Shares
attr myShares altSymbol 1
attr myShares defaultSource yahoo_json|yahooweb|yahoojson
attr myShares depotCurrency EUR:€
attr myShares pollInterval 1800
attr myShares queryTimeout 120
attr myShares shareCurrency USD:$
attr myShares sources NVDA:yahoo_json,NVDA:yahooweb,NVDA:yahoojson
attr myShares sourcesLinks yahoo_json:finance.yahoo.com/quote/$SYMBOL,yahooweb:finance.yahoo.com/quote/$SYMBOL
attr myShares stocks NVDA:100:100:tech
attr myShares verbose 4
attr myShares webCmd update
#   FUUID      662171cf-f33f-97bf-caed-7bbbe4d84495def1
#   NAME       myShares
#   NR         3088
#   STATE      0.00 EUR ( 0 % = 0.00 EUR)  2024-04-21 20:37:11
#   TYPE       Shares
#   eventCount 125
#   DATA:
#     categories:
#   OLDREADINGS:
#   READINGS:
#     2024-04-21 20:37:11   depot_change    0
#     2024-04-21 20:37:11   depot_change_day 0
#     2024-04-21 20:37:11   depot_diff      0.00
#     2024-04-21 20:37:11   depot_diff_day  0.00
#     2024-04-21 20:37:11   depot_value     0.00
#     2024-04-21 20:37:11   depot_value_entry 0.00
#     2024-04-21 20:37:11   exchangerate    0.93870271285084 EUR/USD
#     2024-04-21 20:37:11   state           0.00 EUR ( 0 % = 0.00 EUR)  2024-04-21 20:37:11
#   helper:
#   hmccu:
#
setstate myShares 0.00 EUR ( 0 % = 0.00 EUR)  2024-04-21 20:37:11
setstate myShares 2024-04-21 20:37:11 depot_change 0
setstate myShares 2024-04-21 20:37:11 depot_change_day 0
setstate myShares 2024-04-21 20:37:11 depot_diff 0.00
setstate myShares 2024-04-21 20:37:11 depot_diff_day 0.00
setstate myShares 2024-04-21 20:37:11 depot_value 0.00
setstate myShares 2024-04-21 20:37:11 depot_value_entry 0.00
setstate myShares 2024-04-21 20:37:11 exchangerate 0.93870271285084 EUR/USD
setstate myShares 2024-04-21 20:37:11 state 0.00 EUR ( 0 % = 0.00 EUR)  2024-04-21 20:37:11
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Prof. Dr. Peter Henning

Zitatattr myShares sources NVDA:yahoo_json,NVDA:yahooweb,NVDA:yahoojson

Und woher soll das Modul nun wissen, welche der Quellen genommen werden soll? Das Attribut "sources" ist nur dann zu verwenden, wenn die eingestellte "defaultSource" für dieses Wertpapier _nicht_ verwendet werden soll.

pah

Jamo

Hallo Pah,
danke, ich habe das "attr sources NVDA:yahoo_json,NVDA:yahooweb,NVDA:yahoojson" gelöscht. Leider keine Änderung.

Habe jetzt nochmal dein "depot3" angelegt, das auch yahoo_json benutzt, auch da bekomme ich keine Werte.
Ich habe dann in /usr/local/share/perl/5.32.1/Finance/Quote/YahooJSON.pm in der "sub yahoo_json" zusaetzliche Logeintraege eingebaut, aber es scheint, die "sub yahoo_json" wird gar nicht aufgerufen.
Wie kann ich das weiter debuggen?

depot3:
defmod Depot3 Shares
attr Depot3 defaultSource yahoo_json
attr Depot3 depotCurrency EUR:€
attr Depot3 pollInterval 1800
attr Depot3 queryTimeout 120
attr Depot3 shareCurrency EUR:€
attr Depot3 shareFurtherReadings change_day
attr Depot3 sourcesLinks yahoo_json:de.finance.yahoo.com/quote/$SYMBOL
attr Depot3 stocks AI.PA:1:133.4:h2,\
FRA.DE:6:258.47:mobility,\
BAS.DE:3:154:chemistry,\
LIN.DE:1:212:chemistry,\
TKA.DE:10:72:tech
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack