@@ -791,3 +791,88 @@ async def fleet_telemetry_config_delete(
791791 return await self ._request (
792792 Method .DELETE , f"api/1/vehicles/{ vehicle_tag } /fleet_telemetry_config"
793793 )
794+
795+ async def add_charge_schedule (
796+ self ,
797+ vehicle_tag : str | int ,
798+ days_of_week : str ,
799+ enabled : bool ,
800+ lat : float ,
801+ lon : float ,
802+ start_time : int | None = None ,
803+ end_time : int | None = None ,
804+ one_time : bool | None = None ,
805+ id : int | None = None ,
806+
807+ ) -> dict [str , Any ]:
808+ """Add a schedule for vehicle charging."""
809+ if not start_time and not end_time :
810+ raise ValueError ("Either start_time or end_time or both must be provided" )
811+ json_payload = {
812+ "days_of_week" : days_of_week ,
813+ "enabled" : enabled ,
814+ "end_enabled" : end_time is not None ,
815+ "lat" : lat ,
816+ "lon" : lon ,
817+ "start_enabled" : start_time is not None ,
818+ }
819+ if start_time is not None :
820+ json_payload ["start_time" ] = start_time
821+ if end_time is not None :
822+ json_payload ["end_time" ] = end_time
823+ if id is not None :
824+ json_payload ["id" ] = id
825+ if one_time is not None :
826+ json_payload ["one_time" ] = one_time
827+
828+ return await self ._request (
829+ Method .POST ,
830+ f"api/1/vehicles/{ vehicle_tag } /command/add_charge_schedule" ,
831+ json = json_payload ,
832+ )
833+
834+ async def add_precondition_schedule (
835+ self ,
836+ vehicle_tag : str | int ,
837+ days_of_week : str ,
838+ enabled : bool ,
839+ lat : float ,
840+ lon : float ,
841+ precondition_time : int ,
842+ id : int | None = None ,
843+ one_time : bool | None = None ,
844+ ) -> dict [str , Any ]:
845+ """Add or modify a preconditioning schedule."""
846+ json_payload = {
847+ "days_of_week" : days_of_week ,
848+ "enabled" : enabled ,
849+ "lat" : lat ,
850+ "lon" : lon ,
851+ "precondition_time" : precondition_time ,
852+ }
853+ if id is not None :
854+ json_payload ["id" ] = id
855+ if one_time is not None :
856+ json_payload ["one_time" ] = one_time
857+
858+ return await self ._request (
859+ Method .POST ,
860+ f"api/1/vehicles/{ vehicle_tag } /command/add_precondition_schedule" ,
861+ json = json_payload ,
862+ )
863+
864+ async def remove_charge_schedule (
865+ self , vehicle_tag : str | int , id : int
866+ ) -> dict [str , Any ]:
867+ """Removes the scheduled charging settings."""
868+ return await self ._request (
869+ Method .POST , f"api/1/vehicles/{ vehicle_tag } /command/remove_charge_schedule" , json = {"id" : id }
870+ )
871+
872+ async def remove_precondition_schedule (
873+ self , vehicle_tag : str | int , id : int
874+ ) -> dict [str , Any ]:
875+ """Removes the scheduled precondition settings."""
876+ return await self ._request (
877+ Method .POST , f"api/1/vehicles/{ vehicle_tag } /command/remove_precondition_schedule" , json = {"id" : id }
878+ )
0 commit comments