Neues Modul: 98_STOCKQUOTES

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

Vorheriges Thema - Nächstes Thema

vbs

Ok, danke für die Meldung. Ich muss das mal in Ruhe nachstellen. So aus dem Stehgreif finde ich es seltsam.

Zitat von: klausw am 18 Februar 2015, 19:17:11
mittelst du diesen dann zwischen beiden Werten?
Ja genau. Das Modul merkt sich im Attribut nur Gesamtmenge und Gesamtpreis (Summe aus allen Buys). Dementsprechend kennt es dann für den Kaufkurs auch nur das Mittel über alle Transaktionen.


vbs

Bitte noch einmal hiermit testen (komisch jetzt bekomme ich bei deinem Symbol auf von europe ein "last")

klausw

Zitat von: vbs am 19 Februar 2015, 22:15:06
Bitte noch einmal hiermit testen (komisch jetzt bekomme ich bei deinem Symbol auf von europe ein "last")
define Depot STOCKQUOTES
attr Depot defaultSource europe
attr Depot pollInterval 150
attr Depot queryTimeout 120
attr Depot stocks 975013:2:80
attr Depot verbose 5

->
2015.02.20 07:41:39 4: STOCKQUOTES: Start blocking query
2015.02.20 07:41:39 4: STOCKQUOTES_QueryQuotesBlocking
2015.02.20 07:41:39 4: STOCKQUOTES_QueryQuotesBlocking: Query stockname: 975013 from source europe
2015.02.20 07:41:39 4: STOCKQUOTES_QueryQuotesBlocking: Fetching from source: europe
2015.02.20 07:41:51 4: STOCKQUOTES_QueryQuotesBlocking Return value: Depot|975013&exchange&Ber/Bre|975013&previous&49.560|975013&symbol&HTML|975013&method&bourso|975013&isodate&2015-02-19|975013&high&49.580|975013&volume&0|975013&date&02/19/2015|975013&success&1|975013&name&UNIONGELDMARKTF|975013&open&0.00|975013&low&49.520|975013&errormsg&Stock name 975013 not found|975013&p_change&0.04%
2015.02.20 07:41:51 4: STOCKQUOTES_QueryQuotesFinished
2015.02.20 07:41:51 4: STOCKQUOTES_QueueTimer: 150 seconds


last bekomme ich jetzt auch, aber es ist 0
...und nach einem Reboot und dem clearreadings ist es auch weg ... sehr komisch
_previous kommt dem aktuellen Wert am nächsten, stimmt aber nicht genau.

Mir ist auch aufgefallen, das bei weiteren Wertpapieren das last bei europe fehlt.


Mit attr Depot sources 975013:unionfunds funktioniert es jetzt aber super!

Was bedeutet denn _p_change_total und _value_diff? Die beiden kann ich mir nicht erklären.

Langsam ist dein Modul reif um ins SVN zu kommen  ;D

PS:
Mir ist noch eine Kleinigkeit aufgefallen:
PERL WARNING: Scalar value @sources{$targetSource} better written as $sources{$targetSource} at ./FHEM/98_STOCKQUOTES.pm line 284
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

maxritti

Zitat von: klausw am 20 Februar 2015, 08:53:55
PS:
Mir ist noch eine Kleinigkeit aufgefallen:
PERL WARNING: Scalar value @sources{$targetSource} better written as $sources{$targetSource} at ./FHEM/98_STOCKQUOTES.pm line 284
Hallöle,

man findet hier ja immer neue Idee.
Das Modul wollte ich dann auch mal probieren.
Allerdings lebt mein FHEM nicht wirklich lange, nachdem ich ein define myQuotes STOCKQUOTES gemacht habe.
Die o.a. Meldung ist das letzte was ich im Log sehen und danach ist FHEM futsch.

Any Ideas?

maxritti

Ich habe mal verbose bei global auf 5 gestellt und dann kommt das hier:

2015.02.20 13:48:37 4: STOCKQUOTES: Start blocking query
2015.02.20 13:48:37 5: Triggering myQuotes (1 changes)
2015.02.20 13:48:37 5: Notify loop for myQuotes Updating
2015.02.20 13:48:37 4: eventTypes: STOCKQUOTES myQuotes Updating -> Updating
2015.02.20 13:48:37 4: eventTypes: STOCKQUOTES myQuotes state: Updating -> state: Updating


vbs

Zitat von: klausw am 20 Februar 2015, 08:53:55
last bekomme ich jetzt auch, aber es ist 0
...und nach einem Reboot und dem clearreadings ist es auch weg ... sehr komisch
_previous kommt dem aktuellen Wert am nächsten, stimmt aber nicht genau.

Mir ist auch aufgefallen, das bei weiteren Wertpapieren das last bei europe fehlt.
Scheint an dem Perl-Modul bzw. an der Source zu liegen, welche Werte mitkommen. Hatte gestern auch den Fall, dass bei jeder zweiten Abfrage success=0 war. Ich denke, dass "previous" der Schlusskurs des vergangenen Tages ist.


Zitat von: klausw am 20 Februar 2015, 08:53:55
Mit attr Depot sources 975013:unionfunds funktioniert es jetzt aber super!

Was bedeutet denn _p_change_total und _value_diff? Die beiden kann ich mir nicht erklären.
_p_change_total ist die gesamte prozentuale Änderungen aufs Depot bezogen. Also Aktie mal zu 100€ gekauft und steht nun bei 136€ -> 36 % p_change_total
_value_diff ist Wertänderungen *heute* (im Gegensatz zu _value_diff_total). Also Aktie steigt heute von 100€ auf 136€ und du hast zwei davon im Depot -> 72 € _d_value_diff

Zitat von: klausw am 20 Februar 2015, 08:53:55
Langsam ist dein Modul reif um ins SVN zu kommen  ;D
Mal abwarten ^^

Zitat von: klausw am 20 Februar 2015, 08:53:55
PS:
Mir ist noch eine Kleinigkeit aufgefallen:
PERL WARNING: Scalar value @sources{$targetSource} better written as $sources{$targetSource} at ./FHEM/98_STOCKQUOTES.pm line 284
Danke, hab ich behoben im Anhang.

vbs

#36
Zitat von: maxritti am 20 Februar 2015, 13:51:23
Ich habe mal verbose bei global auf 5 gestellt und dann kommt das hier:

2015.02.20 13:48:37 4: STOCKQUOTES: Start blocking query
2015.02.20 13:48:37 5: Triggering myQuotes (1 changes)
2015.02.20 13:48:37 5: Notify loop for myQuotes Updating
2015.02.20 13:48:37 4: eventTypes: STOCKQUOTES myQuotes Updating -> Updating
2015.02.20 13:48:37 4: eventTypes: STOCKQUOTES myQuotes state: Updating -> state: Updating

Hm, blöde Frage: was heißt das? Werde aus eventTypes nicht schlau.

Kannst ja mal die letze Version von oben testen. Das ist zumindest die Warning weg.

maxritti

Zitat von: vbs am 20 Februar 2015, 17:39:37
Hm, blöde Frage: was heißt das? Werde aus eventTypes nicht schlau.

Kannst ja mal die letze Version von oben testen. Das ist zumindest die Warning weg.
Meine Hoffnung war, dass das bei der Problemsuche hilft  8)

Ich habe mal im Modul zwei Zeilen zum debuggen eingetragen.

Zitatsub STOCKQUOTES_QueryQuotes($)
{
  my ($hash) = @_;
  my $name = $hash->{NAME};

  if (not exists($hash->{helper}{RUNNING_PID})) {
    Log3 $hash->{NAME}, 4, 'STOCKQUOTES: Start blocking query';
    readingsSingleUpdate($hash, "state", "Updating",1);
    Log3 $hash->{NAME}, 4, 'Starting test....';
    $hash->{helper}{RUNNING_PID} = BlockingCall("STOCKQUOTES_QueryQuotesBlocking",
                                                $hash,
                                                "STOCKQUOTES_QueryQuotesFinished",
                                                AttrVal($hash, "queryTimeout", 120),
                                                "STOCKQUOTES_QueryQuotesAbort",
                                                $hash);
    Log3 $hash->{NAME}, 4, 'test finish...';
  }
  else {
    Log3 $hash->{NAME}, 4, 'STOCKQUOTES_QueryQuotes: Blocking not started because still one running';
  }

  return undef;
}

Das erste Log wird noch ausgegeben.
Irgendwie scheint der BlockingCall bei mir gegen die Pumpe zu laufen.

Wie bekommen wir rudolf dazu hier mal zu schauen?
Ich denke er wäre hier der jenige, welcher helfen könnte.

2015.02.20 17:43:07 4: STOCKQUOTES: Start blocking query
2015.02.20 17:43:07 5: Triggering myQuotes (1 changes)
2015.02.20 17:43:07 5: Notify loop for myQuotes Updating
2015.02.20 17:43:07 4: eventTypes: STOCKQUOTES myQuotes Updating -> Updating
2015.02.20 17:43:07 4: eventTypes: STOCKQUOTES myQuotes state: Updating -> state: Updating
2015.02.20 17:43:07 4: Starting test....


/EDIT:

Auch mit der letzten Version schmiert mein FHEM ab.

vbs

Hm, scheint evtl. ein grundlegendes Problem bei dir zu sein. Klappt BlockingCall bei anderen Modulen?

Könntest mal probieren, fhem auf der Konsole ohne Logfile zu starten ("logfile -"). Evtl. meldet fhem noch etwas auf der Konsole, bevor es das Zeitliche segnet.

@all:
also bei mir hängt, sich das Modul nach einer Zeit mit "Updating" weg :( Werd ich mir ansehen.

maxritti

Zitat von: vbs am 20 Februar 2015, 20:05:50
Hm, scheint evtl. ein grundlegendes Problem bei dir zu sein. Klappt BlockingCall bei anderen Modulen?

Laut fhem Wiki bei Blocking_Call verwendet das Presence Modul dies auch.
Da habe ich testweise mal ein Testdevice erstellt.
Dabei läuft fhem fröhlich weiter.

Zitat von: vbs am 20 Februar 2015, 20:05:50
Könntest mal probieren, fhem auf der Konsole ohne Logfile zu starten ("logfile -"). Evtl. meldet fhem noch etwas auf der Konsole, bevor es das Zeitliche segnet.

Ah ja. Da kommt die Meldung.

Undefined subroutine &main::BlockingCall called at ./FHEM/98_STOCKQUOTES.pm line 238.

Muss den Blocking.pm noch irgendwie anders eingebunden werden?

BTW:
Ich habe Rudolf mal angemailt mit der Bitte hier mal zu schauen.

rudolfkoenig

ZitatWie bekommen wir rudolf dazu hier mal zu schauen?
Ich will kein Online-Depot zulegen, damit ich das Modul testen kann.
Wenn jemand mir zeigt, wie ich es ohne testen kann, dann probiere ich es.

Ich habe gerade BlockingCall getestet (und die fehlerhafte Doku im Blocking.pm ersetzt), und es tut bei mir.
Was habe ich gemacht:
Folgendes in 99_myUtils.pm definiert:

use Blocking;
sub TestBlocking($){ BlockingCall("DoSleep", shift, "SleepDone", 5, "AbortFn", "AbortArg"); }
sub DoSleep($)     { sleep(shift); return "I'm done"; }
sub SleepDone($)   { Log 1, "SleepDone: " . shift; }
sub AbortFn($)     { Log 1, "Aborted: " . shift; }

Dann vom FHEM-Prompt folgendes aufgerufen
{ TestBlocking(3) }
{ TestBlocking(6) }

und das FHEM-Log beobachtet.

maxritti

Also bei mir reicht es schon fhem mit der Demo Config starten, dann ein Device mit dem Modul hier zu definieren, dann 10 Sekunden zu warten und dann beendet sich fhem mit dieser Meldung:

Undefined subroutine &main::BlockingCall called at ./FHEM/98_STOCKQUOTES.pm line 238.

vbs

Probier mal bitte vor dem Definieren des Depots:
{use Blocking}

maxritti

Schau mal einer an. Danke Dir.

Da hätte ich auch drauf kommen können. (http://www.smiliesuche.de/smileys/kopf-gegen-wand/kopf-gegen-wand-smilies-0005.gif)

vbs

Nochmal ein Update im ersten Post. Einerseits "use Blocking" hinzugefügt und andererseits die Depotberechnung so gebaut, dass nichts falsches herauskommt, wenn mal eine Anfrage in die Hose geht.

Bestehen jetzt noch Probleme bei euch? Das Hängen bei "Updating" trat bei mir jetzt nicht nochmal auf.