diff --git a/src/akkudoktoreos/class_soc_calc.py b/src/akkudoktoreos/class_soc_calc.py index 6436073..f1d90ac 100644 --- a/src/akkudoktoreos/class_soc_calc.py +++ b/src/akkudoktoreos/class_soc_calc.py @@ -84,7 +84,7 @@ class BatteryDataProcessor: condition_soc_0 = (self.data["battery_voltage"] <= self.voltage_low_threshold) & ( self.data["battery_current"].abs() <= self.current_low_threshold ) - + times_soc_100_all = self.data[condition_soc_100][ ["timestamp", "battery_voltage", "battery_current"] ] @@ -115,7 +115,7 @@ class BatteryDataProcessor: else: end_point = self.data.iloc[-1] # Verwenden des letzten Datensatzes als Endpunkt - if start_point["timestamp"] in last_points_100_df["timestamp"].values: + if not last_points_100_df.empty and start_point["timestamp"] in last_points_100_df["timestamp"].values: initial_soc = 100 elif start_point["timestamp"] in last_points_0_df["timestamp"].values: initial_soc = 0 @@ -157,7 +157,7 @@ class BatteryDataProcessor: "end_soc": calculated_soc_list[-1], } ) - + print(integration_results) soc_df = pd.concat(soc_values).drop_duplicates(subset=["timestamp"]).reset_index(drop=True) return soc_df, integration_results @@ -227,13 +227,14 @@ class BatteryDataProcessor: label="Battery Voltage", color="blue", ) - plt.scatter( - last_points_100_df["timestamp"], - last_points_100_df["battery_voltage"], - color="green", - marker="o", - label="100% SoC Points", - ) + if not last_points_100_df.empty: + plt.scatter( + last_points_100_df["timestamp"], + last_points_100_df["battery_voltage"], + color="green", + marker="o", + label="100% SoC Points", + ) plt.scatter(last_points_0_df['timestamp'], last_points_0_df['battery_voltage'], color='red', marker='x', label='0% SoC Points') plt.xlabel("Timestamp") plt.ylabel("Voltage (V)") @@ -247,13 +248,14 @@ class BatteryDataProcessor: label="Battery Current", color="orange", ) - plt.scatter( - last_points_100_df["timestamp"], - last_points_100_df["battery_current"], - color="green", - marker="o", - label="100% SoC Points", - ) + if not last_points_100_df.empty: + plt.scatter( + last_points_100_df["timestamp"], + last_points_100_df["battery_current"], + color="green", + marker="o", + label="100% SoC Points", + ) plt.scatter(last_points_0_df['timestamp'], last_points_0_df['battery_current'], color='red', marker='x', label='0% SoC Points') plt.xlabel("Timestamp") plt.ylabel("Current (A)") diff --git a/tests/test_class_ems.py b/tests/test_class_ems.py index 2456d2a..0570ecc 100644 --- a/tests/test_class_ems.py +++ b/tests/test_class_ems.py @@ -216,20 +216,20 @@ def test_simulation(create_ems_instance): result = ems.simuliere(start_stunde=start_hour) - visualisiere_ergebnisse( - ems.gesamtlast, - ems.pv_prognose_wh, - ems.strompreis_euro_pro_wh, - result, - ems.akku.discharge_array+ems.akku.charge_array, - None, - ems.pv_prognose_wh, - start_hour, - 48, - np.full(48, 0.0), - filename="visualization_results.pdf", - extra_data=None, - ) + # visualisiere_ergebnisse( + # ems.gesamtlast, + # ems.pv_prognose_wh, + # ems.strompreis_euro_pro_wh, + # result, + # ems.akku.discharge_array+ems.akku.charge_array, + # None, + # ems.pv_prognose_wh, + # start_hour, + # 48, + # np.full(48, 0.0), + # filename="visualization_results.pdf", + # extra_data=None, + # ) # Assertions to validate results assert result is not None, "Result should not be None" @@ -284,56 +284,46 @@ def test_simulation(create_ems_instance): # Verify specific values in the 'Last_Wh_pro_Stunde' array assert ( - result["Last_Wh_pro_Stunde"][1] == 24759.13 - ), "The value at index 1 of 'Last_Wh_pro_Stunde' should be 24759.13." + result["Last_Wh_pro_Stunde"][1] == 1527.13 + ), "The value at index 1 of 'Last_Wh_pro_Stunde' should be 1527.13." assert ( - result["Last_Wh_pro_Stunde"][2] == 1996.88 - ), "The value at index 2 of 'Last_Wh_pro_Stunde' should be 1996.88." + result["Last_Wh_pro_Stunde"][2] == 1468.88 + ), "The value at index 2 of 'Last_Wh_pro_Stunde' should be 1468.88." assert ( result["Last_Wh_pro_Stunde"][12] == 1132.03 ), "The value at index 12 of 'Last_Wh_pro_Stunde' should be 1132.03." # Verify that the value at index 0 is 'None' - assert np.isnan( - result["Last_Wh_pro_Stunde"][0] - ), "The value at index 0 of 'Last_Wh_pro_Stunde' should be None." - # Check that 'Netzeinspeisung_Wh_pro_Stunde' and 'Netzbezug_Wh_pro_Stunde' are consistent - assert np.isnan( - result["Netzeinspeisung_Wh_pro_Stunde"][0] - ), "The value at index 0 of 'Netzeinspeisung_Wh_pro_Stunde' should be None." - assert np.isnan( - result["Netzbezug_Wh_pro_Stunde"][0] - ), "The value at index 0 of 'Netzbezug_Wh_pro_Stunde' should be None." assert ( - result["Netzbezug_Wh_pro_Stunde"][1] == 21679.13 - ), "The value at index 1 of 'Netzbezug_Wh_pro_Stunde' should be21679.13." + result["Netzbezug_Wh_pro_Stunde"][1] == 0 + ), "The value at index 1 of 'Netzbezug_Wh_pro_Stunde' should be 0." # Verify the total balance assert ( - abs(result["Gesamtbilanz_Euro"] - 9.302960148909092) < 1e-5 - ), "Total balance should be 9.302960148909092." + abs(result["Gesamtbilanz_Euro"] - 1.7880374129090917) < 1e-5 + ), "Total balance should be 1.7880374129090917." # Check total revenue and total costs assert ( abs(result["Gesamteinnahmen_Euro"] - 1.3169784090909087) < 1e-5 ), "Total revenue should be 1.3169784090909087." assert ( - abs(result["Gesamtkosten_Euro"] - 10.619938558000001) < 1e-5 - ), "Total costs should be 10.619938558000001 ." + abs(result["Gesamtkosten_Euro"] - 3.1050158220000004) < 1e-5 + ), "Total costs should be 3.1050158220000004 ." # Check the losses assert ( - abs(result["Gesamt_Verluste"] - 5855.222727272727) < 1e-5 - ), "Total losses should be 5855.222727272727." + abs(result["Gesamt_Verluste"] - 2615.222727272727 ) < 1e-5 + ), "Total losses should be 2615.222727272727 ." # Check the values in 'akku_soc_pro_stunde' assert ( result["akku_soc_pro_stunde"][-1] == 28.675 ), "The value at index -1 of 'akku_soc_pro_stunde' should be 28.675." assert ( - result["akku_soc_pro_stunde"][1] == 10.0 - ), "The value at index 1 of 'akku_soc_pro_stunde' should be 0.0." + result["akku_soc_pro_stunde"][1] == 25.379090909090905 + ), "The value at index 1 of 'akku_soc_pro_stunde' should be 25.379090909090905." # Check home appliances assert ( diff --git a/tests/test_class_optimize.py b/tests/test_class_optimize.py index b88215d..7fad6b2 100644 --- a/tests/test_class_optimize.py +++ b/tests/test_class_optimize.py @@ -25,6 +25,8 @@ def test_optimize(fn_in, fn_out): # Call the optimization function ergebnis = opt_class.optimierung_ems(parameter=input_data, start_hour=start_hour, ngen=3) + # with open("new.json", "w") as f_out: + # json.dump(ergebnis, f_out, indent=4) # Assert that the output contains all expected entries. # This does not assert that the optimization always gives the same result! diff --git a/tests/testdata/optimize_result_1.json b/tests/testdata/optimize_result_1.json index 14b188c..5fdc3f7 100644 --- a/tests/testdata/optimize_result_1.json +++ b/tests/testdata/optimize_result_1.json @@ -1,46 +1,1097 @@ { - "discharge_hours_bin": [ - 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 - ], - "eautocharge_hours_float": [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ], - "result": { + "ac_charge": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "dc_charge": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + "discharge_allowed": [ + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0 + ], + "eautocharge_hours_float": null, + "result": { "Last_Wh_pro_Stunde": [ - null, 1063.91, 1320.56, 1132.03, 1163.67, 1176.82, 1216.22, 1103.78, 1129.12, 1178.71, 1050.98, 988.56, 912.38, 704.61, 516.37, 868.05, 694.34, 608.79, 556.31, 488.89, 506.91, 804.89, 1141.98, 1056.97, 992.46, 1155.99, 827.01, 1257.98, 1232.67, 871.26, 860.88, 1158.03, 1222.72, 1221.04, 949.99, 987.01, 733.99, 592.97 + 1053.07, + 1063.91, + 1320.56, + 1132.03, + 1163.67, + 1176.82, + 1216.22, + 1103.78, + 1129.12, + 1178.71, + 1050.98, + 988.56, + 912.38, + 704.61, + 516.37, + 868.05, + 694.34, + 608.79, + 556.31, + 488.89, + 506.91, + 804.89, + 1141.98, + 1056.97, + 992.46, + 1155.99, + 827.01, + 1257.98, + 1232.67, + 871.26, + 860.88, + 1158.03, + 1222.72, + 1221.04, + 949.99, + 987.01, + 733.99, + 592.97 ], "Netzeinspeisung_Wh_pro_Stunde": [ - null, 0.0, 0.0, 0.0, 0.0, 2924.2707438016537, 2753.66, 1914.18, 813.95, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1311.3858057851144, 497.68000000000006, 0.0, 0.0, 0.0, 0.0, 0.0 + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 2792.3879958677676, + 2753.66, + 1914.18, + 813.95, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 2738.2769214876007, + 3682.7, + 2166.67, + 1416.43, + 497.68000000000006, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 ], "Netzbezug_Wh_pro_Stunde": [ - null, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + 0.0, + 20.660000000000082, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 171.54000000000008, + 0.0, + 980.68, + 0.0, + 704.61, + 0.0, + 868.05, + 694.34, + 608.79, + 556.31, + 488.89, + 506.91, + 799.85, + 0.0, + 351.65, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 257.64, + 0.0, + 987.01, + 0.0, + 592.97 ], "Kosten_Euro_pro_Stunde": [ - null, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + 0.0, + 0.004569992000000018, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.05480703000000003, + 0.0, + 0.291163892, + 0.0, + 0.19588158, + 0.0, + 0.28801899, + 0.22802125600000003, + 0.199865757, + 0.182970359, + 0.162995926, + 0.16677339, + 0.26411047, + 0.0, + 0.08545095, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.08231598, + 0.0, + 0.293043269, + 0.0, + 0.16484566 ], "akku_soc_pro_stunde": [ - null, 79.91107093663912, 78.99070247933885, 79.08956914600552, 95.27340247933884, 100.0, 100.0, 100.0, 100.0, 99.26162190082644, 96.11376549586775, 91.89251893939392, 87.96526342975206, 84.93233471074379, 82.70966769972449, 78.97322658402202, 75.98450413223138, 73.36402376033054, 70.96943870523413, 68.86505681818178, 66.68310950413219, 63.24022899449031, 59.76919765840215, 58.25555268595038, 58.684419352617034, 60.18041935261703, 64.6149860192837, 65.19921935261704, 80.15195268595036, 92.42761935261704, 99.64985268595038, 100.0, 100.0, 98.89101239669421, 96.45174758953168, 92.20325413223141, 89.04386191460057, 86.4914772727273 + 79.4714617768595, + 79.4714617768595, + 78.55109331955923, + 78.6499599862259, + 94.83379331955922, + 100.0, + 100.0, + 100.0, + 100.0, + 100.0, + 96.85214359504131, + 96.85214359504131, + 92.92488808539943, + 92.92488808539943, + 90.70222107438015, + 90.70222107438015, + 90.70222107438015, + 90.70222107438015, + 90.70222107438015, + 90.70222107438015, + 90.70222107438015, + 90.70222107438015, + 87.231189738292, + 87.231189738292, + 87.66005640495867, + 89.15605640495866, + 93.59062307162533, + 94.17485640495867, + 100.0, + 100.0, + 100.0, + 100.0, + 100.0, + 100.0, + 97.56073519283747, + 97.56073519283747, + 94.40134297520663, + 94.40134297520663 + ], + "Einnahmen_Euro_pro_Stunde": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.19546715971074372, + 0.19275619999999996, + 0.1339926, + 0.0569765, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.19167938450413202, + 0.257789, + 0.1516669, + 0.09915009999999999, + 0.0348376, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "Gesamtbilanz_Euro": 1.3505190567851246, + "E-Auto_SoC_pro_Stunde": [ + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0 + ], + "Gesamteinnahmen_Euro": 1.3143154442148755, + "Gesamtkosten_Euro": 2.664834501, + "Verluste_Pro_Stunde": [ + 16.744090909090914, + 0.0, + 29.157272727272726, + 3.5592000000000112, + 582.6179999999995, + 185.98344049586785, + 0.0, + 0.0, + 0.0, + 0.0, + 99.72409090909093, + 0.0, + 124.41545454545451, + 0.0, + 70.41409090909087, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 109.96227272727276, + 0.0, + 15.439199999999985, + 53.855999999999995, + 159.6443999999999, + 21.032399999999996, + 209.70516942148788, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 77.27590909090907, + 0.0, + 100.08954545454549, + 0.0 + ], + "Gesamt_Verluste": 1859.6205371900821, + "Haushaltsgeraet_wh_pro_stunde": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null ] - }, - "eauto_obj": { + }, + "eauto_obj": { "kapazitaet_wh": 60000, "start_soc_prozent": 54, "soc_wh": 32400.000000000004, "hours": 48, "discharge_array": [ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 ], "charge_array": [ - 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 ], "lade_effizienz": 0.95, "entlade_effizienz": 1.0, "max_ladeleistung_w": 11040 - }, - "start_solution": [ - 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 - ], - "spuelstart": null, - "simulation_data": null + }, + "start_solution": [ + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 0, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + "spuelstart": null, + "simulation_data": { + "Last_Wh_pro_Stunde": [ + 1053.07, + 1063.91, + 1320.56, + 1132.03, + 1163.67, + 1176.82, + 1216.22, + 1103.78, + 1129.12, + 1178.71, + 1050.98, + 988.56, + 912.38, + 704.61, + 516.37, + 868.05, + 694.34, + 608.79, + 556.31, + 488.89, + 506.91, + 804.89, + 1141.98, + 1056.97, + 992.46, + 1155.99, + 827.01, + 1257.98, + 1232.67, + 871.26, + 860.88, + 1158.03, + 1222.72, + 1221.04, + 949.99, + 987.01, + 733.99, + 592.97 + ], + "Netzeinspeisung_Wh_pro_Stunde": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 2792.3879958677676, + 2753.66, + 1914.18, + 813.95, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 2738.2769214876007, + 3682.7, + 2166.67, + 1416.43, + 497.68000000000006, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "Netzbezug_Wh_pro_Stunde": [ + 0.0, + 20.660000000000082, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 171.54000000000008, + 0.0, + 980.68, + 0.0, + 704.61, + 0.0, + 868.05, + 694.34, + 608.79, + 556.31, + 488.89, + 506.91, + 799.85, + 0.0, + 351.65, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 257.64, + 0.0, + 987.01, + 0.0, + 592.97 + ], + "Kosten_Euro_pro_Stunde": [ + 0.0, + 0.004569992000000018, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.05480703000000003, + 0.0, + 0.291163892, + 0.0, + 0.19588158, + 0.0, + 0.28801899, + 0.22802125600000003, + 0.199865757, + 0.182970359, + 0.162995926, + 0.16677339, + 0.26411047, + 0.0, + 0.08545095, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.08231598, + 0.0, + 0.293043269, + 0.0, + 0.16484566 + ], + "akku_soc_pro_stunde": [ + 79.4714617768595, + 79.4714617768595, + 78.55109331955923, + 78.6499599862259, + 94.83379331955922, + 100.0, + 100.0, + 100.0, + 100.0, + 100.0, + 96.85214359504131, + 96.85214359504131, + 92.92488808539943, + 92.92488808539943, + 90.70222107438015, + 90.70222107438015, + 90.70222107438015, + 90.70222107438015, + 90.70222107438015, + 90.70222107438015, + 90.70222107438015, + 90.70222107438015, + 87.231189738292, + 87.231189738292, + 87.66005640495867, + 89.15605640495866, + 93.59062307162533, + 94.17485640495867, + 100.0, + 100.0, + 100.0, + 100.0, + 100.0, + 100.0, + 97.56073519283747, + 97.56073519283747, + 94.40134297520663, + 94.40134297520663 + ], + "Einnahmen_Euro_pro_Stunde": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.19546715971074372, + 0.19275619999999996, + 0.1339926, + 0.0569765, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.19167938450413202, + 0.257789, + 0.1516669, + 0.09915009999999999, + 0.0348376, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "Gesamtbilanz_Euro": 1.3505190567851246, + "E-Auto_SoC_pro_Stunde": [ + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0, + 54.0 + ], + "Gesamteinnahmen_Euro": 1.3143154442148755, + "Gesamtkosten_Euro": 2.664834501, + "Verluste_Pro_Stunde": [ + 16.744090909090914, + 0.0, + 29.157272727272726, + 3.5592000000000112, + 582.6179999999995, + 185.98344049586785, + 0.0, + 0.0, + 0.0, + 0.0, + 99.72409090909093, + 0.0, + 124.41545454545451, + 0.0, + 70.41409090909087, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 109.96227272727276, + 0.0, + 15.439199999999985, + 53.855999999999995, + 159.6443999999999, + 21.032399999999996, + 209.70516942148788, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 77.27590909090907, + 0.0, + 100.08954545454549, + 0.0 + ], + "Gesamt_Verluste": 1859.6205371900821, + "Haushaltsgeraet_wh_pro_stunde": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ] } - \ No newline at end of file +} \ No newline at end of file