Gå til innhold
  • Bli medlem

Hvordan få simple_pid til å fungere?


DeVerSion
 Del

Anbefalte innlegg

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'})

 

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

 Del

×
×
  • Opprett ny...