From a pythonscript to HA yaml/

Hi everyone,
I have some progamming exp, but the Home-assistant way of scripting is a smth i don’t understand yet.
How do i make this python script into the HA-automations that it will fire every 10 sec?

I do not understand how to make it into a working automation, i’ve found the variables that HA uses.
I’ve made this in C++(arduino) and changed it to python so it looks more like the HA scripting…
Can anyone help me make this work ?
(at the end of the script , i change the value of input_number.smappee_charging_speed , and that should fire the automation (by change of value) to change the car_chargers ampere.

With kind regards,

BATTERY_PERCENT_MIN = 40 ##input_number.battery_percent_min
MAX_INVERTER_POWER = 3000 ##input_number.max_inverter_power
USE_BATTERY_TO_MIN=true ##input_number.use_battery_to_min
Prio_car_over_battery_min=true ##input_number.prio_car_over_battery_min
CAR_AMPERE_ZEKERING=11 ##input_number.car_ampere_zekering
Fase1_Volt=240 
SOLAR_POWER_MAX=3000 ##input_number.solar_power_max
INVERTER_POWER_CORRECTION=1 ## input_number.inverter_power_correction
MAX_IMPORT= 0 ##input_number.max_import

grid_power_usage= sensor.power_meter_consumption
charge_car=true ##input_number.smart_car_charge
inverter_power=sensor.power_meter_active_power
SOLAR_POWER=sensor.inverter_input_power
BATTERY_PERCENT= sensor.batteries_state_of_capacity


trigger:
    - platform: time_pattern
      seconds: '/10'

if(charge_car==true):
	if (((grid_power_usage<MAX_IMPORT) and  ((min(SOLAR_POWER_MAX,SOLAR_POWER)>inverter_power))):  or  (BATTERY_PERCENT>BATTERY_PERCENT_MIN)): ##we zijn aan het injecteren + niet batterij aan't discharge.
		if (car_AMPERE>CAR_AMPERE_ZEKERING): ##marge op zekering
			car_AMPERE= car_AMPERE+grid_power_usage/Fase1_Volt ##volt inlezen?
	else: ##verbruik van't net => minderen
			car_AMPERE= car_AMPERE-grid_power_usage/Fase1_Volt ##volt inlezen?
	if(((BATTERY_PERCENT>BATTERY_PERCENT_MIN) and (USE_BATTERY_TO_MIN==true))  or  (Prio_car_over_battery_min==true)): ##marge over + mag batterij gebruiken.
		if(inverter_power<MAX_INVERTER_POWER):##marge op inverter
			if (car_AMPERE>CAR_AMPERE_ZEKERING): ##marge op zekering
				car_AMPERE=car_AMPERE+(MAX_INVERTER_POWER-inverter_power)/Fase1_Volt
	else:##geen marge meer op batterij, enkel solar!
		if(BATTERY_PERCENT==BATTERY_PERCENT_MIN): ##battery is min.
			if(min(SOLAR_POWER_MAX,SOLAR_POWER)>inverter_power): ##meer solar_power dan inverter power dus batterij laad op.
				car_AMPERE= car_AMPERE+(min(SOLAR_POWER_MAX,SOLAR_POWER)*INVERTER_POWER_CORRECTION-inverter_power)/Fase1_Volt
else: ##niet opladen van auto
	car_AMPERE=0
input_number.smappee_charging_speed=car_AMPERE

i made it work using pyscript :slight_smile:

@service
def run_every5_sec():
  BATTERY_PERCENT_MIN = float(state.get("input_number.battery_percent_min"))
  MAX_INVERTER_POWER =  float(state.get("input_number.max_inverter_power"))
  USE_BATTERY_TO_MIN= state.get("input_boolean.use_battery_to_min")
  Prio_car_over_battery_min= state.get("input_boolean.prio_car_over_battery_min")
  CAR_AMPERE_ZEKERING= float(state.get("input_number.car_ampere_zekering"))
  Fase1_Volt= float(240.0)
  SOLAR_POWER_MAX= float(state.get("input_number.solar_power_max"))
  INVERTER_POWER_CORRECTION= float(state.get("input_number.inverter_power_correction"))
  MAX_IMPORT=  float(state.get("input_number.max_import"))
  grid_power_usage= float(state.get("sensor.power_meter_active_power"))
  charge_car=  state.get("input_boolean.smart_car_charge")
  inverter_power= float(state.get("sensor.inverter_active_power"))
  SOLAR_POWER= float(state.get("sensor.inverter_input_power"))
  BATTERY_PERCENT=  float(state.get("sensor.batteries_state_of_capacity"))
  car_AMPERE=float(state.get("input_number.smappee_charging_speed"))
  #log.info(f"variables voor") 
  #log.info(f" BATTERY_PERCENT_MIN= {BATTERY_PERCENT_MIN}")
  #log.info(f" MAX_INVERTER_POWER= {MAX_INVERTER_POWER}")
  #log.info(f" USE_BATTERY_TO_MIN= {USE_BATTERY_TO_MIN}")
  #log.info(f" Prio_car_over_battery_min= {Prio_car_over_battery_min}")
  #log.info(f" CAR_AMPERE_ZEKERING= {CAR_AMPERE_ZEKERING}")
  #log.info(f" Fase1_Volt= {Fase1_Volt}")
  #log.info(f" SOLAR_POWER_MAX= {SOLAR_POWER_MAX}")
  #log.info(f" INVERTER_POWER_CORRECTION= {INVERTER_POWER_CORRECTION}")
  #log.info(f" MAX_IMPORT= {MAX_IMPORT}")
  #log.info(f" grid_power_usage= {grid_power_usage}")
  #log.info(f" charge_car= {charge_car}")
  #log.info(f" inverter_power= {inverter_power}")
  #log.info(f" SOLAR_POWER= {SOLAR_POWER}")
  #log.info(f" BATTERY_PERCENT= {BATTERY_PERCENT}")
  #log.info(f" car_AMPERE= {car_AMPERE}")
  
  if(charge_car=="on"):
    log.info(f"charge_car on detected")
    if (((grid_power_usage>MAX_IMPORT) and  ((min(SOLAR_POWER_MAX,SOLAR_POWER)>inverter_power)))  or  (BATTERY_PERCENT>BATTERY_PERCENT_MIN)): ##we zijn aan het injecteren + niet batterij aan't discharge.
        log.info(f"injectie of batterij marge")
        if (car_AMPERE<CAR_AMPERE_ZEKERING): ##marge op zekering
            log.info(f"marge op zekering detected")
            car_AMPERE= car_AMPERE+grid_power_usage/Fase1_Volt ##volt inlezen?
    else: ##verbruik van't net => minderen
        car_AMPERE= car_AMPERE-grid_power_usage/Fase1_Volt ##volt inlezen?
        log.info(f"verbruik van net! minderen")
    if(((BATTERY_PERCENT>BATTERY_PERCENT_MIN) and (USE_BATTERY_TO_MIN=="on"))  or  (Prio_car_over_battery_min=="on")): ##marge over + mag batterij gebruiken.
        if(inverter_power<MAX_INVERTER_POWER):##marge op inverter
            if (car_AMPERE>CAR_AMPERE_ZEKERING): ##marge op zekering
                car_AMPERE=car_AMPERE+(MAX_INVERTER_POWER-inverter_power)/Fase1_Volt
                log.info(f"marge op baterij en inverter => gebruik de power")
    else:##geen marge meer op batterij, enkel solar!
        if(BATTERY_PERCENT==BATTERY_PERCENT_MIN): ##battery is min.
            if(min(SOLAR_POWER_MAX,SOLAR_POWER)>inverter_power): ##meer solar_power dan inverter power dus batterij laad op.
                car_AMPERE= car_AMPERE+(min(SOLAR_POWER_MAX,SOLAR_POWER)*INVERTER_POWER_CORRECTION-inverter_power)/Fase1_Volt
                log.info(f"enkel marge op solar, enkel solar gebruiken")
  else: ##niet opladen van auto
    log.info(f"charge_car is off , momenteel op 6A")
    car_AMPERE=float(6.0)
  car_AMPERE=min(car_AMPERE,CAR_AMPERE_ZEKERING)
  input_number.smappee_charging_speed.set_value(str(car_AMPERE))
  log.info(f"variables na") 
  log.info(f" BATTERY_PERCENT_MIN= {BATTERY_PERCENT_MIN}")
  log.info(f" MAX_INVERTER_POWER= {MAX_INVERTER_POWER}")
  log.info(f" USE_BATTERY_TO_MIN= {USE_BATTERY_TO_MIN}")
  log.info(f" Prio_car_over_battery_min= {Prio_car_over_battery_min}")
  log.info(f" CAR_AMPERE_ZEKERING= {CAR_AMPERE_ZEKERING}")
  log.info(f" Fase1_Volt= {Fase1_Volt}")
  log.info(f" SOLAR_POWER_MAX= {SOLAR_POWER_MAX}")
  log.info(f" INVERTER_POWER_CORRECTION= {INVERTER_POWER_CORRECTION}")
  log.info(f" MAX_IMPORT= {MAX_IMPORT}")
  log.info(f" grid_power_usage= {grid_power_usage}")
  log.info(f" charge_car= {charge_car}")
  log.info(f" inverter_power= {inverter_power}")
  log.info(f" SOLAR_POWER= {SOLAR_POWER}")
  log.info(f" BATTERY_PERCENT= {BATTERY_PERCENT}")
  log.info(f" car_AMPERE= {car_AMPERE}")
  log.info(f" script ended")