Hei,
Har lest litt på forumet her, og tenkte å gå for @stigvi sitt oppsett for "Prediktiv reduksjon av strømbruk". Men sliter med å få simple_pid til å fungere.
Får opp denne feilmeldingen her:
This error originated from a custom integration.
Logger: custom_components.pyscript.file.pidpower
Source: custom_components/pyscript/global_ctx.py:337
Integration: Pyscript Python scripting (documentation, issues)
First occurred: December 15, 2021, 22:22:38 (1 occurrences)
Last logged: December 15, 2021, 22:22:38
Exception in </config/pyscript/pidpower.py> line 1: from simple_pid import PID ^ ModuleNotFoundError: No module named 'simple_pid'
Litt om systemet mitt, som kanskje kan gjøre det lettere å hjelpe meg med feilen over.
Har installert HA på en iNuc, og kjører core-2021.12.2 og supervisor-2021.12.2.
Installert pyscript via HACS og konfigurert den i UI med "allow all imports" og Access hass as a global variable" aktivert.
Laget folder "pyscript" og pidpower.py fil som jeg har lagt som jeg har kopiert inn som en start, for å jobbe ut fra den koden.
Noen som kan gi meg et vink eller to i riktig retning?
from simple_pid import PID
pid = PID(40.0, 1.0, 1600.0, setpoint=float(input_number.kwh_max))
pid.sample_time = 1.9
pid.output_limits = (0, 100)
pid.proportional_on_measurement = False
pid.auto_mode = True
last_c = 0
turned_off_all = False
turned_off_car = False
@state_trigger("sensor.energy")
def new_state():
global pid
global last_c
global turned_off_all
global turned_off_car
c = pid(float(sensor.estimated_hourly_consumption))
p, i, d = pid.components
state.set("sensor.regulator_p", round(p,1))
state.set("sensor.regulator_i", round(i,1))
state.set("sensor.regulator_d", round(d,1))
if last_c != c:
sensor.regulator_energy_usage = int(c) #, attributes = {"unit_of_measurement": "%", "friendly_name": "Pådrag varme"})
last_c = c
if c < 10 and turned_off_car == False:
easee.set_charger_circuit_dynamic_limit(charger_id = "EH430587", currentP1 = "0")
turned_off_car = True
if c > 12 and turned_off_car == True:
easee.set_charger_circuit_dynamic_limit(charger_id = "EH430587", currentP1 = "6")
turned_off_car = False
if c < 2 and turned_off_all == False:
esphome.terrassevarmer_pause()
esphome.varmtvannstank_pause()
persistent_notification.create(title = "Strøm", message = "Effektbegrensing slo av alt.")
turned_off_all = True
if c > 5 and turned_off_all == True:
esphome.terrassevarmer_resume()
esphome.varmtvannstank_resume()
turned_off_all = False
@state_trigger("input_number.max_energy_usage")
def setpoint(value=None):
pid.setpoint = float(value)
@state_trigger("input_number.consumption_lasthour")
def hourly_usage(value=None):
if float(value) > float(input_number.max_energy_usage):
script.turn_on(entity_id = "script.send_melding", variables = {'message': 'Strømforbruk var større enn grense', 'title': 'Strøm', 'channel': 'Info'})