Neues Modul: 98_STOCKQUOTES

Begonnen von vbs, 04 Februar 2015, 21:01:42

Vorheriges Thema - Nächstes Thema

ToKa

Da ich TabletUI nicht nutze, kann ich Dir das nicht beantworten.
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

#211
OK, Code Snippet steht hier:

https://wiki.fhem.de/wiki/Wertpapieranzeige

LG

pah

Det20

Danke, schaue ich mir heute später noch an

Prof. Dr. Peter Henning

Nachdem das in einem anderen Thread hochkochte, habe ich mal einen Thread zur Diskussion von Anlagemöglichkeiten aufgemacht:

https://forum.fhem.de/index.php/topic,118279.0.html

LG

pah

butschek

Hallo zusammen

diese STOCKQUOTES haben mich heute den ganzen Tag beschäftigt. Mittlerweile läuft eigentlich alles super. Die Aktien sind angelegt und ziehen sich auch korrekt im Intervall die Daten.

Einzig ein Problem habe ich nun noch in der ReadingsGroup. Hier habe ich die von @TOKA verwendet. Danke dafür. Auch diese funktioniert gut. Bis auf eine kleine Sache. Seitdem ich diese definiert habe, spammed mir diese mein LOG-File.

2021.07.07 19:38:28 1: PERL WARNING: Argument "8QV.F_d_value_diff" isn't numeric in numeric lt (<) at (eval 49772) line 1.
2021.07.07 19:38:28 1: PERL WARNING: Argument "GAZ.de_d_value_diff" isn't numeric in numeric lt (<) at (eval 49835) line 1.
2021.07.07 19:38:28 1: PERL WARNING: Argument "TUI1.de_d_value_diff" isn't numeric in numeric lt (<) at (eval 49898) line 1.
2021.07.07 19:38:30 1: PERL WARNING: Argument "8QV.F_d_value_diff" isn't numeric in numeric lt (<) at (eval 50062) line 1.
2021.07.07 19:38:30 1: PERL WARNING: Argument "GAZ.de_d_value_diff" isn't numeric in numeric lt (<) at (eval 50125) line 1.
2021.07.07 19:38:31 1: PERL WARNING: Argument "TUI1.de_d_value_diff" isn't numeric in numeric lt (<) at (eval 50188) line 1.


Es scheint mir so, als wenn die in der ReadingsGroup dargestellten Zahlen auf Grund der zstl. Zeichen wie € oder % nicht als Zahlen erkannt werden. Auch der in der Tabelle vorhandene Sortierung sortiert diese nicht numerisch, sondern alpha-numerisch.

Folgend ein List der RG:
Internals:
   CFGFN     
   DEF        <Name>,<Bestand>,<Einstandskurs>,<Einstandswert>,<Aktueller&nbspKurs>,<Aktueller&nbspWert>,<G/V&nbsp+/-&nbsp(heute)>,<G/V&nbsp%&nbsp(gesamt)>,<G/V&nbsp+/-&nbsp(gesamt)>,<Kurs-Datum>
<hr>
Depot_smartBroker:@1,(.*)_name,!#1_d_stockcount,!#1_d_buy_quote,!#1_d_buy_value_total,!#1_last,!#1_d_cur_value_total,!#1_d_value_diff,!#1_d_p_change_total,!#1_d_value_diff_total,!#1_isodate
<tfoot>
<hr>
Depot_smartBroker:!Depotwert,!--,!--,!depot_buy_value_total,!--,!depot_cur_value_total,!depot_value_diff,!depot_p_change_total,!depot_value_diff_total,!state:t
   FUUID      60e5e634-f33f-2131-da24-67d419f9f1a792e8
   NAME       rg_Depot
   NR         2532
   NTFY_ORDER 50-rg_Depot
   STATE      Initialized
   TYPE       readingsGroup
   alwaysTrigger 2
   changed    0
   mayBeVisible 1
   CONTENT:
     Depot_smartBroker 1
   CONTENT2:
   DEVICES:
     ARRAY(0x6c2d800)
     ARRAY(0x6ab93b0)
     ARRAY(0x6ab47f0)
     ARRAY(0x6a57f38)
     ARRAY(0x6855ce8)
     ARRAY(0x6b7d718)
   READINGS:
   fhem:
     lastDefChange 86
     last_update 1625679508.09537
   helper:
     DEF       
     cellStyle  { if ($ROW == 16) { return ($READING ne 'state') ? 'style="font-weight:bold"' : 'style="font-weight:normal"' }}
     nameStyle  {if ($COLUMN > 1) {return 'style="text-align:right;font-weight:bold"'} }
     valueFormat { if ($READING =~ /_name/) {return substr($VALUE,0,25)}
  elsif ($READING =~ /_last|_value/) {return "%.2f" }
  elsif ($READING =~ /_stockcount/) {return "%.3f"}
  else {return $VALUE } }
     valueStyle { if ($READING =~ /_p_|_diff/) { return ($VALUE < 0) ? 'style="color:red;text-align:right"':'style="color:green;text-align:right"'}
elsif ($READING =~ /_name/ || $VALUE eq "Depotwert") {return 'style="text-align:left"' }
elsif ($READING =~ /_d_cur_value_total/) { return 'style="font-weight:bold;text-align:right"'}
else { return 'style="text-align:right"'} }
     valueSuffix { if ($READING =~ /p_change/) { return " %" } elsif ($READING =~ /value|diff|last|buy_quote/) { return " €"}}
     positions:
       Depot_smartBroker.-- 9:2,9:3,9:5
       Depot_smartBroker.8QV.F_d_buy_quote 4:3
       Depot_smartBroker.8QV.F_d_buy_value_total 4:4
       Depot_smartBroker.8QV.F_d_cur_value_total 4:6
       Depot_smartBroker.8QV.F_d_p_change_total 4:8
       Depot_smartBroker.8QV.F_d_stockcount 4:2
       Depot_smartBroker.8QV.F_d_value_diff 4:7
       Depot_smartBroker.8QV.F_d_value_diff_total 4:9
       Depot_smartBroker.8QV.F_isodate 4:10
       Depot_smartBroker.8QV.F_last 4:5
       Depot_smartBroker.8QV.F_name 4:1
       Depot_smartBroker.Depotwert 9:1
       Depot_smartBroker.GAZ.de_d_buy_quote 5:3
       Depot_smartBroker.GAZ.de_d_buy_value_total 5:4
       Depot_smartBroker.GAZ.de_d_cur_value_total 5:6
       Depot_smartBroker.GAZ.de_d_p_change_total 5:8
       Depot_smartBroker.GAZ.de_d_stockcount 5:2
       Depot_smartBroker.GAZ.de_d_value_diff 5:7
       Depot_smartBroker.GAZ.de_d_value_diff_total 5:9
       Depot_smartBroker.GAZ.de_isodate 5:10
       Depot_smartBroker.GAZ.de_last 5:5
       Depot_smartBroker.GAZ.de_name 5:1
       Depot_smartBroker.TUI1.de_d_buy_quote 6:3
       Depot_smartBroker.TUI1.de_d_buy_value_total 6:4
       Depot_smartBroker.TUI1.de_d_cur_value_total 6:6
       Depot_smartBroker.TUI1.de_d_p_change_total 6:8
       Depot_smartBroker.TUI1.de_d_stockcount 6:2
       Depot_smartBroker.TUI1.de_d_value_diff 6:7
       Depot_smartBroker.TUI1.de_d_value_diff_total 6:9
       Depot_smartBroker.TUI1.de_isodate 6:10
       Depot_smartBroker.TUI1.de_last 6:5
       Depot_smartBroker.TUI1.de_name 6:1
       Depot_smartBroker.depot_buy_value_total 9:4
       Depot_smartBroker.depot_cur_value_total 9:6
       Depot_smartBroker.depot_p_change_total 9:8
       Depot_smartBroker.depot_value_diff 9:7
       Depot_smartBroker.depot_value_diff_total 9:9
       Depot_smartBroker.state 9:10
     values:
       formated:
         undef
         ARRAY(0x6b0f830)
         ARRAY(0x6afe138)
         ARRAY(0x695ac38)
         ARRAY(0x6b058d8)
         ARRAY(0x6b0cbd0)
         ARRAY(0x69d3548)
         ARRAY(0x555d508)
         ARRAY(0x6aba070)
         ARRAY(0x69d1018)
         ARRAY(0x6aa8240)
       orig:
         undef
         ARRAY(0x69d5a18)
         ARRAY(0x6b28008)
         ARRAY(0x6ab9710)
         ARRAY(0x6c28e10)
         ARRAY(0x68603d8)
         ARRAY(0x68d5710)
         ARRAY(0x6855d48)
         ARRAY(0x6853e18)
         ARRAY(0x6957f10)
         ARRAY(0x6a57878)
       prefixsuffix:
         undef
         ARRAY(0x6835c98)
         ARRAY(0x5701e40)
         ARRAY(0x23c5378)
         ARRAY(0x5574760)
         ARRAY(0x6cff558)
         ARRAY(0x6ce8548)
         ARRAY(0x683ded0)
         ARRAY(0x5807da8)
         ARRAY(0x5702a88)
         ARRAY(0x6cd8780)
Attributes:
   DbLogExclude .*
   alias      SmartBroker
   alwaysTrigger 2
   cellStyle  { if ($ROW == 16) { return ($READING ne 'state') ? 'style="font-weight:bold"' : 'style="font-weight:normal"' }}
   headerRows 1
   nameStyle  {if ($COLUMN > 1) {return 'style="text-align:right;font-weight:bold"'} }
   nonames    1
   notime     1
   room       Finanzen
   sortColumn 1
   valueFormat { if ($READING =~ /_name/) {return substr($VALUE,0,25)}
  elsif ($READING =~ /_last|_value/) {return "%.2f" }
  elsif ($READING =~ /_stockcount/) {return "%.3f"}
  else {return $VALUE } }
   valueStyle { if ($READING =~ /_p_|_diff/) { return ($VALUE < 0) ? 'style="color:red;text-align:right"':'style="color:green;text-align:right"'}
elsif ($READING =~ /_name/ || $VALUE eq "Depotwert") {return 'style="text-align:left"' }
elsif ($READING =~ /_d_cur_value_total/) { return 'style="font-weight:bold;text-align:right"'}
else { return 'style="text-align:right"'} }
   valueSuffix { if ($READING =~ /p_change/) { return " %" } elsif ($READING =~ /value|diff|last|buy_quote/) { return " €"}}


Hat hier jemand eine Idee?

LG und einen schönen Abend noch.
Holger

ToKa

Hallo Holger,

sind die readings überhaupt vorhanden?

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

butschek

#216
Hallo Torsten

ja, schon. Es funktioniert eigentlich alles soweit ich das sehe.

Hier ein Pic im Anhang.
Einzig was nicht funktioniert sind die häufigen Einträge im Log. Ich habe etwas gelesen, dass man anstatt ReadingVAL ein ReadingNUM verwenden soll. Ich vermute, dass dies im DEF Teil der ReadingGroup sein müßte. Allerdings weiß ich nicht, wie ich dies einpflegen sollte in den bestehenden Code.

Danke, dass du spontan geantwortet hast.

VG
Holger

butschek

#217
Hallo Torsten

nach weiterem herum probieren konnte ich den Fehler auf den ValueStyle eingrenzen.

Irgendwo hier ist ein Problem:
{ if ($READING =~ /_p_|_diff/) { return ($VALUE < 0) ? 'style="color:red;text-align:right"':'style="color:green;text-align:right"'}
elsif ($READING =~ /_name/ || $VALUE eq "Depotwert") {return 'style="text-align:left"' }
elsif ($READING =~ /_d_cur_value_total/) { return 'style="font-weight:bold;text-align:right"'}
else { return 'style="text-align:right"'} }


Kann es sein, dass dieser Part  return ($VALUE < 0)   den Fehler auslöst? Weißt du eine Möglichkeit, dass man hier nur die reine Zahl im $VALUE stehen hat und diese gegen null (0) vergleicht?

Zumindest vermute ich, dass dies das Problem ist.

NACHTRAG:
Habe aus $VALUE < 0 nun $VALUE lt 0 gemacht. Nun gibt es keine Fehlermeldung mehr. Die Ansicht scheint immer noch zu funktionieren. Somit heißt dies nun warten und beobachten.


Viele Grüße
Holger


Prof. Dr. Peter Henning

ZitatHabe aus $VALUE < 0 nun $VALUE lt 0 gemacht. Nun gibt es keine Fehlermeldung mehr. Die Ansicht scheint immer noch zu funktionieren. Somit heißt dies nun warten und beobachten.

Sorry für die deutlichen Worte, aber ist doch einfach Käse! >:(

Statt wild herumzuprobieren vielleicht einfach mal die Perl-Grundlagen lernen, siehe hier https://www.geeksforgeeks.org/perl-lt-operator/.

pah

butschek

#219
Ich bin ein Freund von klaren Worten.

Lieben Dank für den nett gemeinten Rat.

Wie schon beschrieben: Das Problem ist gelöst. Auf die ein oder andere Art und Weise.

Prof. Dr. Peter Henning