Mam na telefonie aplikację Fuelio, która zlicza mi pzebyty dystans pojazdem, ilość tankowań, jaki rodzaj paliwa itp.
Te dane zapisuję na chmurę dropboxa w postaci pliku.
Następnie plik ten odczytuję w HA w Node-Red i za pomocą funkcji wyciągam odpowiednie dane do odpowiednio utworzonych czujników.
Do niedawna jeździłem pojazdem na benzynę. Ostatnio zmieniłem na elektryka i mam problem z funkcją. Co należy dopisać, żeby te dane wyciągnąć odnośnie ilości tankowań kwh?
Dodałem kilka zmiennych, ale nie wiem co dalej. Moja funkcja wygląda tak:
var koszt_lpg=0;
var koszt_pb95=0;
var koszt_kWh=0;
var pb95=0
var lpg=0
var kWh=0
var cena_lpg=0;
var cena_pb95=0;
var cena_kWh=0;
var tankowania_lpg=0
var tankowania_pb95=0
var tankowania_kWh=0
var odo=0
for (i=0; i< msg.payload.length; i++){
if (msg.payload[i]["FuelType"]=="401"){
if (!isNaN(parseFloat(msg.payload[i]["Fuel (litres)"]))){
lpg=lpg+parseFloat(msg.payload[i]["Fuel (litres)"]);
}
if (!isNaN(parseFloat(msg.payload[i]["Price (optional)"]))){
koszt_lpg=koszt_lpg+parseFloat(msg.payload[i]["Price (optional)"]);
}
if (!isNaN(parseFloat(msg.payload[i]["VolumePrice"]))){
cena_lpg=cena_lpg+parseFloat(msg.payload[i]["VolumePrice"]);
tankowania_lpg=tankowania_lpg+1;
}
}
if (msg.payload[i]["FuelType"]=="110"){
if (!isNaN(parseFloat(msg.payload[i]["Fuel (litres)"]))){
pb95=pb95+parseFloat(msg.payload[i]["Fuel (litres)"]);
}
if (!isNaN(parseFloat(msg.payload[i]["Price (optional)"]))){
koszt_pb95=koszt_pb95+parseFloat(msg.payload[i]["Price (optional)"]);
}
if (!isNaN(parseFloat(msg.payload[i]["VolumePrice"]))){
cena_pb95=cena_pb95+parseFloat(msg.payload[i]["VolumePrice"]);
tankowania_pb95=tankowania_pb95+1;
}
}
}
msg.sr_cena_lpg=(cena_lpg/tankowania_lpg).toFixed(2);
msg.sr_cena_pb95=(cena_pb95/tankowania_pb95).toFixed(2);
msg.koszt_lpg=(koszt_lpg).toFixed(2);
msg.koszt_pb95=(koszt_pb95).toFixed(2);
msg.lpg=(lpg).toFixed(2);
msg.pb95=(pb95).toFixed(2);
msg.tankowania_lpg=tankowania_lpg-1;
msg.tankowania_pb95=tankowania_pb95-1;
msg.odo=parseInt(msg.payload[0]["Odo (km)"]);
msg.ostatnie_tankowanie_data=msg.payload[0]["Data"]
msg.ostatnie_tankowanie_litry=msg.payload[0]["Fuel (litres)"]
msg.ostatnie_tankowanie_koszt=msg.payload[0]["Price (optional)"]
msg.ostatnie_tankowanie_cena=msg.payload[0]["VolumePrice"]
msg.ostatnie_tankowanie_spalanie=msg.payload[0]["l/100km (optional)"]
if (msg.payload[0]["FuelType"]=="110")
msg.ostatnie_tankowanie_paliwo="PB95"
if (msg.payload[0]["FuelType"]=="401")
msg.ostatnie_tankowanie_paliwo="LPG"
return msg;
Natomiast w nodzie debug wygląda to tak jak poniżej i na screenach
msg : Object
object
_msgid: "27e03175a2ce73b5"
payload: array[81]
[0 … 9]
0: object
Data: "2022-02-06 04:40"
Odo (km): 344.66
kWh: 1.29
Full: 1
Price (optional): 0.81
kWh/100km (optional): 7.8
latitude (optional): 50.0833298
longitude (optional): 18.8312011
City (optional): "Akacjowa 38c - "
Missed: 0
TankNumber: 1
FuelType: 601
VolumePrice: 0.63
StationID (optional): 0
ExcludeDistance: 0
UniqueId: 33
TankCalc: 0
1: object
2: object
3: object
4: object
5: object
6: object
7: object
8: object
9: object
[10 … 19]
10: object
11: object
12: object
13: object
14: object
15: object
16: object
17: object
18: object
19: object
[20 … 29]
[30 … 39]
[40 … 49]
[50 … 59]
[60 … 69]
[70 … 79]
[80 … 80]
topic: ""
filename: "/Aplikacje/Fuelio/sync/vehicle-2-sync.csv"
columns: "Data,Odo (km),kWh,Full,Price (optional),kWh/100km (optional),latitude (optional),longitude (optional),City (optional),Notes (optional),Missed,TankNumber,FuelType,VolumePrice,StationID (optional),ExcludeDistance,UniqueId,TankCalc"