NEWS
Array nach Preisen sortiert mit Startzeit aus Tibberconnect
-
@babl
Gemäß Deinem Wunsch, ein nach Preisen sortiertes Array zu erhalten, in dessen Objekten auch die Startzeit enthalten ist, schlage ich folgendes Skript vor. Es soll die Preise und Startstunden für heute 17:00 Uhr bis morgen 16:00 Uhr liefern (hoffe ich). Format:[{start: 4, preis: 0.24}, {start: 3, preis: 0.25}, ...]const tibber = 'tibberconnect.0.Homes.ffXXX.'; // Anpassen! const idSort = '0_userdata.0.Tibber.Preise.sortiert'; // DP-Typ: "array" function sortPreis(a, b) { return a.preis - b.preis; } schedule('57 16 * * *', function() { const preise = []; for(let i = 17; i < 24; i++) { let obj = {}; let idStart = tibber + 'PricesToday.' + i + '.startsAt'; let idPreis = tibber + 'PricesToday.' + i + '.total'; obj.start = new Date(getState(idStart).val).getHours(); obj.preis = getState(idPreis).val; preise.push(obj); } for(let i = 0; i < 17; i++) { let obj = {}; let idStart = tibber + 'PricesTomorrow.' + i + '.startsAt'; let idPreis = tibber + 'PricesTomorrow.' + i + '.total'; obj.start = new Date(getState(idStart).val).getHours(); obj.preis = getState(idPreis).val; preise.push(obj); } preise.sort(sortPreis); setState(idSort, preise, true); });Das Skript ist nicht getestet, da keine Datenpunkte vorhanden.
Das Array im Datenpunkt lässt sich auch mit Blockly weiter verarbeiten. -
@babl
Gemäß Deinem Wunsch, ein nach Preisen sortiertes Array zu erhalten, in dessen Objekten auch die Startzeit enthalten ist, schlage ich folgendes Skript vor. Es soll die Preise und Startstunden für heute 17:00 Uhr bis morgen 16:00 Uhr liefern (hoffe ich). Format:[{start: 4, preis: 0.24}, {start: 3, preis: 0.25}, ...]const tibber = 'tibberconnect.0.Homes.ffXXX.'; // Anpassen! const idSort = '0_userdata.0.Tibber.Preise.sortiert'; // DP-Typ: "array" function sortPreis(a, b) { return a.preis - b.preis; } schedule('57 16 * * *', function() { const preise = []; for(let i = 17; i < 24; i++) { let obj = {}; let idStart = tibber + 'PricesToday.' + i + '.startsAt'; let idPreis = tibber + 'PricesToday.' + i + '.total'; obj.start = new Date(getState(idStart).val).getHours(); obj.preis = getState(idPreis).val; preise.push(obj); } for(let i = 0; i < 17; i++) { let obj = {}; let idStart = tibber + 'PricesTomorrow.' + i + '.startsAt'; let idPreis = tibber + 'PricesTomorrow.' + i + '.total'; obj.start = new Date(getState(idStart).val).getHours(); obj.preis = getState(idPreis).val; preise.push(obj); } preise.sort(sortPreis); setState(idSort, preise, true); });Das Skript ist nicht getestet, da keine Datenpunkte vorhanden.
Das Array im Datenpunkt lässt sich auch mit Blockly weiter verarbeiten. -
@paul53 bin auf dein script gestossen
in Zeile 26
preise.sort(sortPreis);in der funktion sind aber 2 parameter
function sortPreis(a, b) { return a.preis - b.preis; } -
@arteck sagte: in Zeile 26
Das ist eine Funktionsreferenz für die Javascriptfunktion array.sort().
-
@paul53 das kannst du auch so schreiben
preise.sort(function(a, b) { return a.preis - b.preis; });übrigends funktionert gut
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden