NEWS
SOLVED Ölpreis
-
@Oliver-Böhm
tolle arbeit
-
@Oliver-Böhm
Hallo, habe es mal getestet, Lieferantendaten bekomme ich keine.
Ok, da muss ich im Skript auf Ösi umstellen, gibt es auch für at. -
ich hole die Daten nicht von Heizöl24, sondern von esyoil, eventuell musst du den Link für Österreich anpassen.
Gruß Oliver -
@Oliver-Böhm
Re: (gelöst) Ölpreis
Der Preis für 100l stimmt irgendwie nicht.
Gesammtbrutto (für 3000 Liter): 2038.47 €
Unter Heizöl -> Heizölpreis -> Allgemein -> Preis: 66.96 €Aber unter Heizöl ->Heizölpreis -> Wohnort -> Je 100L steht dann folgendes
Je 100 L: 40.77 €/100lWenn das stimmen würde, würde sofort eine Großbestellung raus gehen
-
@Oliver-Böhm sagte in (gelöst) Ölpreis:
Link für Österreich anpassen
Wo und in welchen Skript?
Ich glaube esyoli ist nur für DESorry, Skript ist für mich Bahnhof.........bin eher der Vis Freund.........
-
was sagt den die Homepage von esyoli.com?
Sind auf der Homepage zusätzliche Lieferkosten aufgeführt?Ich bin momentan unterwegs, ich schaue mir das heute Abend an.
-
schau bitte erstmal, ob esyoli.com Ölpreise für Österreich bereitstellt.
Die Seite von Heizöl24 kann nicht geparst werden, da im Quellcode keine detailierte Informationen vorhanden sind. -
@Oliver-Böhm
Nein und der Gesamtpreis stimmt mit der Homepage überein.
Lediglich der 100L-Preis ist unterschiedlich.In iobroker: 40.77 €/100l (brutto)
Auf der Website: 67,95 €/100l (brutto)Danke, ich checke auch nochmal alle Orte die User-Konfiguration brauchen.
-
@ReverZ
dann liegt es an den nicht vorhandenen zusätzlichen Lieferkosten, ist mir gestern schon aufgefallen, bin aber noch nicht dazu gekommen dies zu bereinigen. -
@Oliver-Böhm
Nein, im Script wird einfach der Preis durch 50 dividiert
priceLB = price / 50;
Die 50 darf hier nicht hart codiert werden, da du von deinen 5000 Litern Gesamtmenge ausgegangen bist.
In dem Fall stimmt das Ergebnis natürlich. Wenn du aber - wie ich z.b.- 3000 Liter eingegeben hast, stimmt der 100L-Preis dann nicht mehr.Müsste also entweder aus dem HTML ausgelesen werden oder errechnet durch
priceLB = price / <Liefermenge> * 100;
-
@ReverZ
stimmt, da hast du recht, daran merkt man, dass ich Script-Anfänger bin :-).Für Verbesserungen oder Vereinfachung der Scripte bin ich immer dankbar.
-
Hallo zusammen,
anbei ein kleines Update:
- Vis wurde neu gestaltet, die Bestelldaten können jetzt im Vis direkt über Textfelder und Dropdownfelder eingestellt werden.
- Die Javascripts wurden angepasst und einige Fehler beseitigt. Danke für den Hinweis @ReverZ .
Die neuen Scripte füge ich im Anhang bei.
Script 1: Erstellt alle nötigen States, bitte einmal manuell ausführen.
Scripts 2: Wird ausgeführt, sobald sich in den Bestelldaten etwas ändert und der Abfragebutton betätigt wird. Es wird ein angepasster Link für die Preisabfrage erstellt.
Script 3: Wird ausgeführt, sobald sich in den Bestelldaten etwas ändert und der Abfragebutton betätigt wird und jede Stunde. Hier findet die eigentliche Preisabfrage für den Wohnort statt.
Script 4: Wird ausgeführt, sobald sich nach einer Preisabfrage der günstigste Anbieter ändert. Hier werden die Daten des Anbieters abgefragt.
Script 5: Wird alle 59 Minuten ausgeführt. Hier wird die Differenz zum Vortag abgefragt.
Verbesserungen der Scripte, Fehlermeldungen und Anregungen nehme ich gerne entgegen.
Gruß
Oliver -
@Oliver-Böhm
Danke für das Update!
Ich denke da sind noch etwas Optimierungspotential drin.
Was mir bis jetzt aufgefallen ist:
Im Script 2 werden variablen wie "heizölsorte" und "zahlart" verwenden ohne diese zuvor zu deklarieren. Der JS-Editor meckert das sofort an. -
wie gesagt, bin blutiger Anfänger in Sachen Javascript.
Danke für den Hinweis, ich wusste nicht mal, dass es einen Js-Editor gibt.
-
@Oliver-Böhm
In Script 3 setzt du die parseFloat-Funktion ein, übergibst aber statt zwei statt einem Argument:
setState(idPriceLB, parseFloat(priceLB,10)); setState(idPriceGB, parseFloat(price,10)); setState(idMwStG, parseFloat(MwStG,10)); setState(idMwStL, parseFloat(MwStL,10));
Was willst du mit der "10" jeweils erreichen?
-
eigentlich wollte ich damit erreichen, dass er mir 2 Nachkommastellen übergibt.
-
@Oliver-Böhm
OK. Wie verifizierst du denn die Syntax von deinem JS-Code wenn nicht im JS-Editor?
Schreibst du den Code in Notepad und lädst die fertige JS-Datei dann irgendwo hoch? -
@Oliver-Böhm
Dann musst du mit .toFixed(2) arbeiten, was du ja zuvor für priceLB schon gemacht hast:
priceLB = priceLB.toFixed(2); priceLB = parseFloat(priceLB);
Ausserdem musst du dich mehr mit Datentypen auseinandersetzen.
Mathematische Operationen kann man nur auf Zahlen anwenden. Einige Werte deklarierst du allerdings als Strings und verwendest diese später in math. Formeln. -
ich schreibe sie im ioBroker Javascript Editor und teste, ob es funktioniert und alles eingetragen wird.
-
@Oliver-Böhm
Dann verstehe ich deinen Satz nicht: "ich wusste nicht mal, dass es einen Js-Editor gibt."
Wie auch immer ... dann müsste dir der Parser im JS-Editor doch diese Fehler bereits anzeigen? Bei mir sind diese rot unterstrichen.