Modul-Fingerübung: Spritpreis

Begonnen von pjakobs, 11 Januar 2017, 11:07:36

Vorheriges Thema - Nächstes Thema

pjakobs

Zitat von: doman75 am 23 Mai 2017, 15:02:41
den master zweig, ich habe aber develop und master verglichen die sind doch identisch, oder schaue ich im falschen github

Du hast Recht, die sind aktuell gleich, nachdem ich den Fehler von vor zwei Wochen glattgezogen habe.

Ich habe gerade nochmal die aktuelle Version vom github gezogen und das funktioniert problemlos.

ah! grad seh ich's!

Die Definition hat sich geändert, sorry, das hab ich nicht gscheit dokumentiert. Das muss nun heißen


define Sprit spritpreis Tankerkoenig <api-key>


da fehlt noch eine vernünftige Fehlermeldung, wenn keine Quelle angegeben ist.

pj

doman75

jetzt geht es schon etwas weiter

2017.05.24 08:48:50.560 3 : Diesel: got coordinates for address as lat: 50.x, lon: 12.x
2017.05.24 08:48:50.560 4 : Diesel: sending request with url https://creativecommons.tankerkoenig.de/json/list.php?lat=50.x&lng=x&rad=5&type=diesel&apikey=806899d9-f4db-af91-e8ea-0xxxxxxxxxx
2017.05.24 08:48:50.653 4 : Diesel: got data
2017.05.24 08:48:50.653 5 : Diesel: got data {"status":"error","ok":false,"message":"nur 'dist' und 'price' als sort Parameter erlaubt, angegeben: "}
2017.05.24 08:48:50.653 2 : Diesel: ############# ret: <html><p><h3>Stations for Address</h3></p><p><h2>Gera, Germany</h2></p><table><tr><td>Name</td><td>Ort</td><td>Straße</td></tr></table>


Ich habe aber als sortby Parameter price angegeben

Neues List:


Internals:
   CFGFN
   DEF        Tankerkoenig 806899d9-f4db-af91-e8ea-0ac929709355
   NAME       Diesel
   NR         115777
   NTFY_ORDER 50-Diesel
   STATE      ???
   TYPE       Spritpreis
   Helper:
     apiKey     806899d9-f4db-af91-e8ea-0ac929709355
     service    Tankerkoenig
Attributes:
   lat        50.880
   lon        12.099
   rad        5
   room       Spritpreise
   sortby     price
   type       diesel
   verbose    5


Benutzt du den dasselbe module File wie ich? Also von gestern aus dem github?

Grüße
Swen

doman75

Du hast zeile 473 auskommentiert

  my $sort=AttrVal($hash->{'NAME'}, "sortby","price");


und in der Zeile 485 beim Url Aufruf hast du kein sort Parameter dabei, der ist aber zwingend wenn ich es richtig verstanden habe.

Ändere ich nun beides geht es aber leider trotzdem nicht, da kommt dann im log:


2017.05.24 09:02:37.978 3 : Diesel: got coordinates for address as lat: 50.x, lon: 12.x
2017.05.24 09:02:37.978 4 : Diesel: sending request with url https://creativecommons.tankerkoenig.de/json/list.php?lat=50.x&lng=12.x&rad=5&sort=price&type=diesel&apikey=806899d9-f4db-af91-e8ea-0xxxxxxxxxxx
2017.05.24 09:02:38.023 4 : Diesel: error fetching nformation


pjakobs

Zitat von: doman75 am 24 Mai 2017, 09:07:37
Du hast zeile 473 auskommentiert

  my $sort=AttrVal($hash->{'NAME'}, "sortby","price");

Sort by price ist heute eigentlich nicht mehr nötig, denn das gibt ja nur eine Liste, die aktuell eben nach Preis sortiert ist.
Was Du hier aber willst ist eine Liste der Tankstellen in der Umgebung, diejenigen, die Du dann auswählst werden in einer Liste eingetragen und diese Liste wird dann nacheinander abgefragt. Die Sortierung ergibt sich hinterher aus der Reihenfolge, in der die Tankstellen hinzugefügt wurden (Präfix 0_, 1_, 2_ etc).
Zitat von: doman75 am 24 Mai 2017, 09:07:37
und in der Zeile 485 beim Url Aufruf hast du kein sort Parameter dabei, der ist aber zwingend wenn ich es richtig verstanden habe.

Ändere ich nun beides geht es aber leider trotzdem nicht, da kommt dann im log:


2017.05.24 09:02:37.978 3 : Diesel: got coordinates for address as lat: 50.x, lon: 12.x
2017.05.24 09:02:37.978 4 : Diesel: sending request with url https://creativecommons.tankerkoenig.de/json/list.php?lat=50.x&lng=12.x&rad=5&sort=price&type=diesel&apikey=806899d9-f4db-af91-e8ea-0xxxxxxxxxxx
2017.05.24 09:02:38.023 4 : Diesel: error fetching nformation



Es werden immer alle Sorten angefragt und in den Readings angelegt, Du bekommst dann sowas:


0_brand          UNITOL 2017-05-22 10:35:05
0_diesel_price   1.109 2017-05-24 11:01:09
0_diesel_trend   fällt 2017-05-24 07:01:09
0_e10_price      1.339 2017-05-24 11:01:09
0_e10_trend      fällt 2017-05-24 11:01:09
0_e5_price       1.359 2017-05-24 11:01:09
0_e5_trend       fällt 2017-05-24 11:01:09
0_id             a4b69d7c-1d92-43de-b5cd-afb114e7b06d 2017-05-22 10:35:05
0_isOpen         open 2017-05-24 11:01:09
0_lat            53.699203 2017-05-22 10:35:05
0_lon            10.761696 2017-05-22 10:35:05
0_name           Tankstelle 2017-05-22 10:35:05
0_place          Ratzeburg 2017-05-22 10:35:05
0_street         L�neburger Damm 11 2017-05-22 10:35:05


Grüße

pj

doman75

also okay habe die änderungen wieder weggemacht, habe type und sort attr gelöscht und dann habe ich eine Liste bekommen,

drauf klicken geht aber nicht, da ich über https arbeite und der von dir erzeugte Link http will. OKay da habe ich aber gesehen das du bei set .. add nicht nur die ID willst sondern da  muss noch der String id hin korrekt. Also "set blabla add id xxxxxxxx" dann hatte ich die erste Tankstelle hinzugefügt. Juhu, das update hat auch funktioniert hatte endlich Preise drin.

Aber ein "set blabla delete xxxxxxxx" ging nicht? da muss ich dann auch wieder keinen String "id" eingeben.  Gibt es da wieder irgendeinen Trick?

Wirst du an dem Modul weiterarbeiten?

pjakobs

#65
Zitat von: doman75 am 24 Mai 2017, 14:10:04
also okay habe die änderungen wieder weggemacht, habe type und sort attr gelöscht und dann habe ich eine Liste bekommen,

drauf klicken geht aber nicht, da ich über https arbeite und der von dir erzeugte Link http will. OKay da habe ich aber gesehen das du bei set .. add nicht nur die ID willst sondern da  muss noch der String id hin korrekt. Also "set blabla add id xxxxxxxx" dann hatte ich die erste Tankstelle hinzugefügt. Juhu, das update hat auch funktioniert hatte endlich Preise drin.

Aber ein "set blabla delete xxxxxxxx" ging nicht? da muss ich dann auch wieder keinen String "id" eingeben.  Gibt es da wieder irgendeinen Trick?

Wirst du an dem Modul weiterarbeiten?

Das Ganze ist, wie der Titel sagt, als Fingerübung entstanden. Ich hab mit dem RGBWWcontroller noch ein anderes Projekt,  hinter dem dieses zurückstehen muss.
Ich werde da immer mal wieder dwas dran machen, ab aber auch nichts dagegen, wenn sich jemand beteiligt. ;-)


edit:
nebenbei: check mal Zeile 528 und ändere http:// in https:// - ich vermute das wird funktionieren. Allerdings weiß ich nicht, warum fhem da kein automatisches upgrade macht.

pj

mahowi

Ich weiß zwar nicht, ob das Modul noch aktiv genutzt wird, aber ich versuch's mal hier.  ;)

Ich habe heute auch mal einen Spritpreismonitor über das Modul definiert. Beim Definieren gab es auch keine Fehlermeldung. Aber wenn ich dann ein Station hinzufügen will kommt die Fehlermeldung, der API-Key wäre falsch:
2018.04.18 13:51:23.002 3 : Benzin: get Benzin add id
2018.04.18 13:51:23.003 3 : Benzin: please provide a valid apikey, you can get it from https://creativecommons.tankerkoenig.de/#register. This function can't work without it
2018-04-18 13:51:23.011 Spritpreis Benzin add id ac87ff1d-d023-4b34-bf93-e1b803c625d3


Der Key ist richtig, den habe ich mir eben erst nochmal zuschicken lassen von Martin von Tankerkönig.

Hier noch das list vom Device, wobei ich keine Attribute angegeben habe:

list Benzin

Internals:
   CFGFN     
   DEF        Tankerkoenig xxx
   NAME       Benzin
   NR         29442
   NTFY_ORDER 50-Benzin
   STATE      ???
   TYPE       Spritpreis
   helper:
Attributes:


CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

ToM_ToM

Ich kannte das Modul gar nicht.
Warum ist das nicht offiziell eingcheckt worden? Sieht doch ziemlich cool aus.  :)

VG, Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

pc1246

Zitat von: mahowi am 18 April 2018, 13:54:18
Ich weiß zwar nicht, ob das Modul noch aktiv genutzt wird, aber ich versuch's mal hier.  ;)

Ich habe heute auch mal einen Spritpreismonitor über das Modul definiert. Beim Definieren gab es auch keine Fehlermeldung. Aber wenn ich dann ein Station hinzufügen will kommt die Fehlermeldung, der API-Key wäre falsch:

Der Key ist richtig, den habe ich mir eben erst nochmal zuschicken lassen von Martin von Tankerkönig.

Hier noch das list vom Device, wobei ich keine Attribute angegeben habe:

Moin
Ich habe das Modul auf meinem Testsystem am Laufen. Ich weiss, dass da was mit dem Key war. Kann ich baer erst heute abend sagen!
Gruss Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

pjakobs

#69
moin, hey, schön, wenn es dafür ein bisschen Interesse gibt, ich hatte es ehrlich gesagt aufgegeben, weil es offenbar nicht wirklich auf Liebe gestoßen war.
Bei mir läuft das Teil seit nem Jahr oder so und nachdem ich gerade mal draufgesehen habe, musste ich feststellen, dass die Preise teilweise seit Monaten nicht mehr upgedatet worden sind.
Wenn ich die "get test" Funktion aufrufe bekomme ich auch den api - key error. Ich fürchte, dass Tankerkönig da was geändert hat.

Ich muss da mal wieder rein sehen.

pj

update: ich hab mal reingesehen und ... ich weiß grad auch nicht.

pc1246

Moin
Also meins laeuft noch! Auch ein Set update geht problemlos!
Gruss Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

pjakobs

Zitat von: pc1246 am 20 April 2018, 13:42:47
Moin
Also meins laeuft noch! Auch ein Set update geht problemlos!
Gruss Christoph

das ist doch schonmal was.
Dann wundere ich mich mal lokal weiter.

pj

pjakobs

Zitat von: mahowi am 18 April 2018, 13:54:18
Ich weiß zwar nicht, ob das Modul noch aktiv genutzt wird, aber ich versuch's mal hier.  ;)

Ich habe heute auch mal einen Spritpreismonitor über das Modul definiert. Beim Definieren gab es auch keine Fehlermeldung. Aber wenn ich dann ein Station hinzufügen will kommt die Fehlermeldung, der API-Key wäre falsch:
2018.04.18 13:51:23.002 3 : Benzin: get Benzin add id
2018.04.18 13:51:23.003 3 : Benzin: please provide a valid apikey, you can get it from https://creativecommons.tankerkoenig.de/#register. This function can't work without it
2018-04-18 13:51:23.011 Spritpreis Benzin add id ac87ff1d-d023-4b34-bf93-e1b803c625d3


Der Key ist richtig, den habe ich mir eben erst nochmal zuschicken lassen von Martin von Tankerkönig.

Hier noch das list vom Device, wobei ich keine Attribute angegeben habe:

list Benzin

Internals:
   CFGFN     
   DEF        Tankerkoenig xxx
   NAME       Benzin
   NR         29442
   NTFY_ORDER 50-Benzin
   STATE      ???
   TYPE       Spritpreis
   helper:
Attributes:


kannst Du mal dein Define posten? ich hab irgendwann mal die Syntax geändert, jetzt müssen der dienst "Tankerkönig" und der API Key in einer Zeile stehen.

Ich könnte mir vorstellen, dass Du den "master" Zweig ausgecheckt hast. Ich bin mir nicht sicher, ob das auf dem neuesten Stand ist, versuch's doch mal mit "develop"

Grüße

pj

martins

Ich möchte ebenso einmal eine Rückmeldung geben, bei mir läuft das Modul seit einem Jahr Stabil und die Preise werden auch aktualisiert. Das Modul wird bei mir regelmäßig verwendet.

mahowi

Zitat von: pjakobs am 20 April 2018, 14:37:42
kannst Du mal dein Define posten? ich hab irgendwann mal die Syntax geändert, jetzt müssen der dienst "Tankerkönig" und der API Key in einer Zeile stehen.

Ich könnte mir vorstellen, dass Du den "master" Zweig ausgecheckt hast. Ich bin mir nicht sicher, ob das auf dem neuesten Stand ist, versuch's doch mal mit "develop"

Sorry, ich hab Deine Antwort gerade erst gelesen.

defmod Benzin Spritpreis Tankerkoenig xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Das ist das Modul aus dem "develop"-Zweig. (Update über https://raw.githubusercontent.com/pljakobs/fhem_spritpreis_module/develop/controls_spritpreis.txt)

Nach add und update kommt 2018.04.25 07:50:30.529 3 : Benzin: get Benzin add 831548ca-4b4e-4879-b671-a7fc4c0a2431
2018.04.25 07:50:30.530 4 : Benzin add: args[0]=831548ca-4b4e-4879-b671-a7fc4c0a2431

2018.04.25 07:51:41.815 1 : PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/72_Spritpreis.pm line 136.
2018.04.25 07:51:41.816 3 : Benzin: get Benzin update
2018.04.25 07:51:41.817 4 : Benzin: called Spritpreis_Tankerkoenig_updateAll
2018.04.25 07:51:41.817 4 : Benzin: updateAll set timer for 1524636401.81764 delay 900


Bei get test kommt dann der API-Fehler:
2018.04.25 07:53:01.187 3 : Benzin: get Benzin test 831548ca-4b4e-4879-b671-a7fc4c0a2431
2018.04.25 07:53:01.187 4 : Benzin: called Spritpreis_Tankerkoenig_populateStationsFromAttr
2018.04.25 07:53:01.188 4 : Benzin: got ID String
2018.04.25 07:53:01.188 3 : Benzin: please provide a valid apikey, you can get it from https://creativecommons.tankerkoenig.de/#register. This function can't work without it


Es werden auch keinerlei Readings angelegt.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee