Import("env") import os import tasmotapiolib from os.path import join import subprocess def firm_metrics(source, target, env): print() if env["PIOPLATFORM"] == "espressif32": try: import tasmota_metrics map_file = str(tasmotapiolib.get_source_map_path(env).resolve()) subprocess.run([ env.subst("$PYTHONEXE"), "-m", "tasmota_metrics", map_file ], check=False) except: pass elif env["PIOPLATFORM"] == "espressif8266": map_file = join(env.subst("$BUILD_DIR")) + os.sep + "firmware.map" with open(map_file,'r', encoding='utf-8') as f: phrase = "_text_end = ABSOLUTE (.)" for line in f: if phrase in line: address = line.strip().split(" ")[0] if int(address, 16) < 0x40108000: used_bytes = int(address, 16) - 0x40100000 remaining_bytes = 0x8000 - used_bytes percentage = round(used_bytes / 0x8000 * 100,1) print("Used static IRAM:",used_bytes,"bytes (",remaining_bytes,"remain,",percentage,"% used)") silent_action = env.Action(firm_metrics) silent_action.strfunction = lambda target, source, env: '' # hack to silence scons command output env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", silent_action)