Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

selvesteha

Medlemmer
  • Innlegg

    15
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av selvesteha

  1. RVM skrev (På 24.12.2022 den 11.43):

    Har du sjekket i loggen om du får noen feilmeldinger fra Pyscript? Du kan jo også evt. legge inn noen log.info() eller log.error() rundt omkring i koden for å verifisere hva som funker/feiler. Jeg liker å ha en notify til mobilen på alle feilmeldinger fra Pyscript.

    Jeg fant en feilmelding i Pyscript, så nå fungerer alt som det skal. Må nok legge inn notify på dette som du sier.

    Uansett, takk for strålende bistand underveis fra alle i forumet.

  2. stigvi skrev (På 21.12.2022 den 18.16):

    Du må kikke på de sensorene som er "input". Endrer de seg som forventet?

    Ja, både energi og estimert neste timen sensor fungerer nå. Men den står konsekvent på 100%, og jeg ser at den ikke reduserer noen av tingene for å holde kapasiteten under valgt input. Er det noe jeg kan ha gått glipp av rundt scriptet? Finnes det noen mulighet til å sjekke at scriptet fungerer som det skal?

  3. Kim123 skrev (1 time siden):

    Ser du mangler effekt sensoren. Hvilken måler har du? 

     

    Anbefaler forøvrig MQTT Explorer, kan da logge deg på mqtt serveren og se på topicer

    Jeg har brukt AMSHAN oppskriften med en Tibber Pulse måler. 

    stigvi skrev (2 timer siden):



    Har du tatt med en sensor med state_topic som dette?

    state_topic: "power/realtime/import/hour"

    Nei, jeg har ikke funnet noen slik sensor.

  4. stigvi skrev (9 timer siden):

    Den har det, altså forbruk i inneværende time.

    Ja, men jeg får ikke disse tallene til å stemme med det jeg ser dere bruker. Se mine sensorer fra AMSHAN måler

     

    Sensorer

    Active power export (Q2+Q3)
    0 W
    Akkumulert strømforbruk
    110 409,86 kWh
    Akkumulert strømproduksjon
    0,0 kWh
    Cumulative hourly reactive export energy (R-) (Q3+Q4)
    5 795,27 kVArh
    Cumulative hourly reactive import energy (R+) (Q1+Q2)
    6 985,43 kVArh
    Current phase L1
    6,0 A
    Current phase L2
    3,6 A
    Current phase L3
    22,1 A
    Phase L1 voltage
    234,6 V
    Phase L2 voltage
    234,5 V
    Phase L3 voltage
    234,8 V
    Reactive power export (Q3+Q4)
    769 var
    Reactive power import (Q1+Q2)
    0 var
    Strømforbruk
     
  5. Kim123 skrev (33 minutter siden):

    Jeg bruker 

     

    ‘’

    - platform: integration 

      source: sensor.kaifa_import # watt sensor

      name: hour_total_kwh

      method: left

      unit_prefix: k

      round: 3

      ‘’

     

    Døgnmaksene jeg lagrer stemmer 100% med det som vises på bkk.no (nettleverandør) 

    Takk, prøver den. Det vil jo være svært mye enklere enn jeg trodde.

  6. stigvi skrev (20 timer siden):

    Det skulle være grei skuring. Hva er det du har nå?

    Jeg har prøvd meg på en oppskrift jeg fant med intergration og utility meters. Men noe var galt da den viste alt for mye. Jeg slettet dem, men finner ikke tilbake til den oppskriften. Jeg har AHMSAN, og får ut sensor med forbruk. Men jeg mangler altså nå den beregnet strømforbruk den neste timen. 

  7. haraldov skrev (4 minutter siden):

    Det enkleste er at HA oppretter sensoren. Alternativt kan du la pyscript opprette sensoren når pyscript kjører.

     

    template:
        - sensor:
            - name: "Regulator energy usage"
              unit_of_measurement: "%"
              state_class: "measurement"
              device_class: "power_factor"
              state: "{{100}}"

     

    Sensorene sensor.regulator_p, sensor.regulator_i, sensor.regulator_d trenger du bare hvis du skal tune pid regulatoren. Jeg ville bare ha brukt @stigvi sine verdier.

    Takk for svar @haraldov Det ser ut til å fungere

  8. Takk @stigvi. Da tror jeg du har fått meg i riktig rettning. Jeg begynner å forstå noe av sammenhengen her, det kan jo også hjelpe :)

    from simple_pid import PID
    
    pid = PID(40.0, 0.4, 2500.0, setpoint=float(input_select.nettleie_pristrinn) - 0.2)
    pid.set_auto_mode(False)
    pid.sample_time = 1.9
    pid.output_limits = (0, 100)
    pid.proportional_on_measurement = False
    pid.set_auto_mode(True, last_output=100.0)
    last_c = 100.0
    turned_off_all = False
    turned_off_vvb = False
    turned_off_climate = False
    turned_off_car_red = False
    sensor.regulator_energy_usage = 100.0
    
    @state_trigger("sensor.aidon_active_power_import")
    def new_state():
        global pid
        global last_c
        global turned_off_all
        global turned_off_vvb
        global turned_off_climate
        global turned_off_car_red
        
        c = (0.9 * last_c) + (0.1 * 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 round(last_c, 0) != round(c, 0):
            sensor.regulator_energy_usage = round(c, 0)
            
            v = max(5 * round(c, 0) - 400, 0.0)
            number.effekt_varmtvannsbereder.set_value(round(v,1))
    
        last_c = c
    
        if c < 10 and turned_off_car_red == False:
            easee.set_charger_dynamic_limit(charger_id = "EH32498", current = "0")
            turned_off_car_red = True
    
        if c > 12 and turned_off_car_red == True:
            easee.set_charger_dynamic_limit(charger_id = "EH32498", current = "20")
            turned_off_car_red = False
    
        if c < 70 and turned_off_vvb == False:
            switch.bryter_varmvannsbereder.turn_off()
            switch.turn_off(entity_id="switch.heavy_duty_switch")
            turned_off_vvb = True
    
        if c > 72 and turned_off_vvb == True:
            switch.bryter_varmvannsbereder.turn_on()
            switch.turn_on(entity_id="switch.heavy_duty_switch")
            turned_off_vvb = False
    
        if c < 2 and turned_off_climate == False:
            climate.turn_off(entity_id="climate.thermostat_38",entity_id="climate.thermostat_41",entity_id="climate.thermostat_35,entity_id="climate.gang",entity_id="climate.stue_vindu",entity_id="climate.loftstue_2021",entity_id="climate.hovedsoverom")
            turned_off_climate = True
    
        if c > 5 and turned_off_climate == True:
            climate.turn_on(entity_id="climate.thermostat_38",entity_id="climate.thermostat_41",entity_id="climate.thermostat_35",entity_id="climate.gang",entity_id="climate.stue_vindu",entity_id="climate.loftstue_2021",entity_id="climate.hovedsoverom")
            turned_off_climate = False
        
    @state_trigger("input_select.nettleie_pristrinn")
    def setpoint(value=None):
        pid.setpoint = float(value) - 0.2

     

  9. Takk for svar @stigvi. Beklager spørsmål som sikkert er rare, men jeg finner ikke disse sensorene noen plass etterpå. Jeg ser dere får dem opp i visning i lovelace kort, det får ikke jeg siden de ikke finnes. 

     

    from simple_pid import PID
    
    pid = PID(40.0, 0.4, 2500.0, setpoint=float(input_select.nettleie_pristrinn) - 0.2)
    pid.set_auto_mode(False)
    pid.sample_time = 1.9
    pid.output_limits = (0, 100)
    pid.proportional_on_measurement = False
    pid.set_auto_mode(True, last_output=100.0)
    last_c = 100.0
    turned_off_all = False
    turned_off_car_red = False
    turned_off_car_blue = False
    
    @state_trigger("sensor.aidon_active_power_import")
    def new_state():
        global pid
        global last_c
        global turned_off_all
        global turned_off_car_red
        global turned_off_car_blue
        
        c = (0.9 * last_c) + (0.1 * pid(float(sensor.estimated_fast_hourly_consumption_filtered)))
        #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 round(last_c, 0) != round(c, 0):
            sensor.regulator_energy_usage = round(c, 0)
            
            v = max(5 * round(c, 0) - 400, 0.0)
            number.effekt_varmtvannsbereder.set_value(round(v,1))
    
        last_c = c
    
        if c < 10 and turned_off_car_red == False:
            easee.set_charger_dynamic_limit(charger_id = "EH32498", current = "0")
            turned_off_car_red = True
    
        if c > 12 and turned_off_car_red == True:
            easee.set_charger_dynamic_limit(charger_id = "EH32498", current = "20")
            turned_off_car_red = False
    
        if c < 70 and turned_off_all == False:
            switch.bryter_varmvannsbereder.turn_off()
            switch.turn_off(entity_id="switch.heavy_duty_switch")
            turned_off_all = True
    
        if c > 72 and turned_off_all == True:
            switch.bryter_varmvannsbereder.turn_on()
            switch.turn_on(entity_id="switch.heavy_duty_switch")
            turned_off_all = False
    
        if c < 2 and turned_off_all == False:
            climate.turn_off(entity_id="climate.thermostat_38",entity_id="climate.thermostat_41",entity_id="climate.thermostat_35,entity_id="climate.gang",entity_id="climate.stue_vindu",entity_id="climate.loftstue_2021",entity_id="climate.hovedsoverom")
            turned_off_all = True
    
        if c > 5 and turned_off_all == True:
            climate.turn_on(entity_id="climate.thermostat_38",entity_id="climate.thermostat_41",entity_id="climate.thermostat_35",entity_id="climate.gang",entity_id="climate.stue_vindu",entity_id="climate.loftstue_2021",entity_id="climate.hovedsoverom")
            turned_off_all = False
        
    @state_trigger("input_select.nettleie_pristrinn")
    def setpoint(value=None):
        pid.setpoint = float(value) - 0.2

     

    Min kode ser nå slik ut, men jeg er faktisk usikker på om den virker. Mye mulig dette er for avansert for meg, men syns løsningen din var for god til å passere. Lastet ned PID i hacks også, men opplevde det enda vanskeligere å forstå. 

    Jeg har ikke Tibber, men egen AMS leser.

     

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.