Załączanie grzałek przy nadprodukcji i "przewoltowaniu" pv

Bawiłem się przekaźnikami SSR i z grzałki x można zrobić grzałkę o mniejszej mocy dzięki pwm_output

esphome:
  name: ssr-test
  friendly_name: SSR TEST

esp8266:
  board: nodemcuv2
  framework:
    version: recommended
switch:
  - platform: gpio
    pin: D1
    name: "Switch"
    id: switchssr

  - platform: gpio
    name: "PWM 50%"
    pin: D1 
    on_turn_on:
      then:
        - output.set_level:
            id: pwm_output
            level: 50%
output:
  - platform: esp8266_pwm
    pin: D1
    frequency: 50 Hz
    id: pwm_output   
2 polubienia

Witam. Na razie może zostawimy tak jak jest. Przynajmniej już wiem co robią poszczególne nody :wink:


flows (11).json (15,7 KB)

Taki układ spełnia w większości swoją rolę. Zauważyłem coś co jest do zrobienia.
Taka sytuacja: PV produkuje powiedzmy 2500 W, dom zużywa teoretycznie 400 W, nadprodukcja to - 2100 W (oddawane do sieci). Flow załącza grzałki 2x1000 W. Moc Chwilowa spada do -100W. Flow nie robi nic (Bez Zmian) i to jest ok.
Jeśli produkcja PV wzrośnie w tej chwili do 4500 W to Moc chwilowa wynosi -2100W (dwie grzałki są już załączone) i Flow nie załączy kolejnej grzałki aby zużyć ten nadmiar bo ma wpisane że w przedziale od -2000 do -3000 ma załączyć tylko te dwie grzałki (G1 L1 i G1 L2) a one są już włączone i do sieci w tej chwili oddaje -2100W i zużywam na bieżąco 2400W. Co trzeba by było zmienić aby układ załączał kolejne grzałki aby zużyć te nadmiarowe 2100W. Może trzeba sprawdzać wcześniej które grzałki są włączone i tak wpływać na obliczanie mocy chwilowej aby układ załączał kolejne grzałki.

Pozdrawiam

Wystarczy, że zapamiętasz podczas włączania sumaryczną moc grzałek jako zmienną flow.P_on
flows (54).json (16,3 KB)
Zmiana jest w MocChwilowaw kW i skopiować Save dla pozostałych mocy z korektą 2,3,4… itd kW.
Powinno działać :slight_smile:

Działać będzie, tyle że bez resetu zmiennej P-on , po wyłaczeniu grzałki, będzie kiepsko. I szkoda ,że nie pogrupowałeś w jeden call service np wszystkich off.

Dobra uwaga - dla zera też trzeba zapisać P_0n=0. Normalnie to by wyszło od razu jednak jak się to robi w głowie… :wink:

Tak to zrobiłem. potestuje się jak będzie produkcja :wink:


flows (12).json (14,8 KB)

Widzę, że pomęczysz się jeszcze z tym procesem. Wyjście “otherwise” nie wyłączy grzałek, więc save 0kW powinien być jak na foto


Sprawdz też co się stanie gdy nastąpi zmiana z 3kW na 2 lub 1kW , musisz zakładać że może nastapić przeskok z 4kW na 1 kW i odpowiednio wyłączyć to co ma już nie grzać. Teraz przeskok z 3kW na 1kW zmieni wartość zmiennej P_on , ale nic więcej. Grzałki 1,2,3 dalej będą ON

Teraz jest OK. Układ działa :wink:


flows (13).json (17,2 KB)
Zmieniłem w Moc Chwilowa w kW -PowOn
nodred17

Kolejnym problemem jest to że jak moc chwilowa jest powyżej zera na 100W to wyłącza wszystkie grzałki. A można tak zrobić aby wyłączało tylko 1 kW grzałek? Bo w tej chwili chodzi np 3kW. Niepotrzebne jest klapanie stycznikami :wink:

Pozdrawiam

Na Twoje życzenie. Mówiłem że moc śr jest OK.

To już się robi grubo i nie da się tego poskładać z klocków… np. może się nie dać bo włączone są tylko 2kW grzałki.
Tak w ogóle to już mi się to nie podoba i szykuje nową wersję, która będzie podążać za mocą w górę i w dół.

edit…

W zasadzie koniec
Nowa wersja teraz powinna podążać za mocą.


flows (53).json (13,4 KB)

Dla obliczeń mocy uwzględnia znak i zaokrągla zawsze w dół

AvrPow = - (AvrPow / 1000).toFixed(0) ;
msg.payload = AvrPow + P_on;
if (AvrPow  < 0){
    msg.payload = 0;
    }

Ponieważ nie da się stworzyć formuły aby odpowiednio ustawić grzałki, kombinację zapisałem w tablicy i elementy indeksowane są obliczoną mocą skorygowaną.

// mapa grzałek:
// 1_L1, 1_L2,1_L3,2_L1,2_L2,2_L3

var HitMap = [
    ['off', 'off', 'off', 'off', 'off', 'off'],  //0kW
    ['on', 'off', 'off', 'off', 'off', 'off'],   //1kW
    ['on', 'on', 'off', 'off', 'off', 'off'],   //2kW
    ['on', 'on', 'on', 'off', 'off', 'off'],   //3kW
    ['on', 'off', 'on', 'off', 'on', 'off'],   //4kW
    ['on', 'off', 'off', 'off', 'on', 'on'],   //5kW
    ['off', 'off', 'off', 'on', 'on', 'on'],   //6kW
    ['on', 'off', 'off', 'on', 'on', 'on'],   //7kW
    ['on', 'on', 'off', 'on', 'on', 'on'],   //8kW
    ['on', 'on', 'on', 'on', 'on', 'on'],   //7kW
];

Chyba zrozumiałe?

Pozostaje wypełnić encję grzałek - teraz call_service dotyczy tylko jednej grzałki.
Mam nadzieję, że konstrukcja turn_{{payload}} zadziała :wink:
Grz5

Ponieważ część skopiowałem od Ciebie, to wyjście z triggera jest źle i powinno by podłączone dolne

O kur…de . to już wyższa szkoła jazdy :wink:
Jednak ten poprzedni flow nie działa do końca poprawnie. o jeden Save 6kW za dużo ;-).

Przy tym nowym układzie wyskakuje mi error

Pozostaje wypełnić encję grzałek - teraz call_service dotyczy tylko jednej grzałki.`

Czy to masz na myśli

Ciekawe podejście do tematu, zaciekawiłeś mnie i muszę napisać, że w jedną stronę działa zawodowo, tzn jak moc chwilowa utrzymuje się w widełkach min -500 , to fajnie dokłada kolejne obciążenia. Gorzej w drugą stronę, tzn gdy moc chwilowa przekracza wartość zero ( dodatnia) stan obciązenia utrzymuje sie, i dopiero gdy wartość mocy chwilowej przekroczy 500 , wyłącza wszystko. Trochę za wysokie progi jak dla mnie żeby zdiagnozować dlaczego.
PS bardziej technicznie, przy każdym cyklu gdy AvrP jest przynajmniej -500 , wzrasta wartość P_on i to jest ok, jak AvrP zaczyna przyjmować wartości + , zmienna P_on trzyma ostatnią wartość np 4 , tak jest do czasu gdy AvrP nie przekroczy +500, po tym zmienna P_on = 0 i wszystko Off

Dzięki za testy, przyjrzę się temu co napisałeś.
Czy to, aby wywoływać różne usługi za pomocą jednego noda działa?
Pytam, bo piszę w takim miejscu, że mam dostęp tylko do NR.

Kurczę. Gdzieś mam problem.


flows (14).json (9,2 KB)

Nie mogę zdiagnozować gdzie tkwi błąd

Na razie do testu mam pominięte PV oraz Bufor.

Na razie testuje testuje to o czym pisał @isom1266 - na ukończeniu.
Zostaw to, bo szukam, ale zobacz czy wypełnienie pola “Domain” na switch coś zmieni.
Druga sprawa to przy imporcie nie dodało Ci się kilka serwerów Home Assistant.
Rozwiń pole “Server:” i sprawdź ile ich jest - powinien być jeden.
To jest najczęściej gdy się importuje “obce” procesy.

Tak to działa, call service reaguje na turn_{{payload}}

Kurde jesteś genialny :wink: Dzięki. jutro potestujemy. Dziś testowałem ten poprzedni i jakoś to chodziło ale potem już nie mogłem kontrolować i jak był duża produkcja z PV to załączało grzałki 3x2kW i nie wracało niżej. Bufor dobiło prawie do 70 stopni (dobrze że było to zabezpiecznie ) i pociągło przez cały dzień prawie 25kWh z sieci :wink:

Poczekaj na to co sprawdzi @RobinI30 bo ten nowy proces na razie nie działa dobrze i znów Ci pociągnie z sieci więcej niż powinno

Ale mam ciepłej wody na parę dni :wink:

U mnie nie, bo jak wpisujesz od zera to nie da się wpisać {{payload}} - trzeba ustawić Domain:homeassistant.
Problem był z zaokrąglaniem - produkcja powinna być zaokrąglana zawsze w górę a pobór zawsze w dół (lub odwrotnie :wink: zależnie jak przyjmiemy znak mocy)

Zmieniłem sposób napędzania procesu od zmian odczytów licznika ( nie co 10sek), Były są przypadki, że obliczał na podstawie nieaktualnych odczytów.
Mógłby się wtedy rozpędzić do max 9kW.
Skoro nic się nie zmienia na liczniku to po co sprawdzać.

Nie mam jeszcze pomysłu jak to zresetować gdy któraś z encji padnie. Może wydłużyć czas na triggerze.

@maciusiek610 … po imporcie musisz posprzątać. Usunąć importowane serwery HA i we wszystkich niebieskich ustawić własny serwer Home Assistant oraz wybrać swoje encje G1-grzałka 1, G2-grzałka 2 itd…

flows (55).json (7,8 KB)

Teraz minimum do włączenia obciążenia, to -1000 i co tyle zmienia się wartość zmiennej P_on , natomiast w dół działa to dziwnie i może najpierw poroszę żebyś spróbował wytłumaczyć jakie było założenie. Nie chcę namotać, bo u mnie działa tak, że nie ważna wartość (dodatnia) mocy chwilowej, zawsze zmniejsza o jeden poziom.
Może napisz jak to ma wyglądać w teorii, będzie łatwiej.
Co do wpisu {{payload}} zostaw puste i zapisz , u mnie samo się uzupełnia


PS
Małe sprostowanie, większe wartości mocy na plus , np +2000 , działają raczej ok, zastanawia mnie dlaczego jak w kilku cyklach powtarza się wartość mocy w zakresie np 1 do 3 , to co cykl zmniejsza ilość obciążenia aż do 0