Instalacja Fotowolt...
 
Powiadomienia
Wyczyść wszystko

Instalacja Fotowoltaiczna - Fronius Symo - Fronius Smart Meter -skrypt LUA

138 Wpisów
7 Użytkownicy
1 Reactions
18.1 K Wyświetleń
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Tak samo jak pozostałe

2

 

 
Dodane : 02/05/2021 9:35 am
kniazio
(@kniazio)
Wpisów: 210
Pomocny Donator 2K21
 
obraz

O to chodziło?

 
Dodane : 02/05/2021 9:39 am
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Ładnie jest teraz :))

 
Dodane : 02/05/2021 9:50 am
kniazio
(@kniazio)
Wpisów: 210
Pomocny Donator 2K21
 
Dodane przez: @isom

Ładnie jest teraz :))

obraz

Teraz jeszcze ładniej 🙂

obraz

Jak można zaokrąglic dane (szczegolnie te procenty) w skrypcie?

 
Dodane : 02/05/2021 9:58 am
kniazio
(@kniazio)
Wpisów: 210
Pomocny Donator 2K21
 

Dzięki koledze @isom który napisał dla mnie skrypt pobierający dane z dodatkowego licznika mam w domoticzu dostęp do dodatkowych danych

Oto skrypt:

local scriptVar = 'Fronius'
return
{
    on =
    {
        timer =
        {'every minute'},

        httpResponses =
        {
        scriptVar,
        },
    },

    logging =
    {
        level = domoticz.LOG_DEBUG,
        marker = Fronius_Meter,
    },

    execute = function(dz, item)
        
        local IPFronius = dz.variables('UV_FroniusIP').value  -- zmienna w domoticz typ string IPFronius

        if item.isTimer then
            dz.openURL(
            {
                url = 'http://'..IPFronius..'/solar_api/v1/GetPowerFlowRealtimeData.fcgi',
                callback = scriptVar,
            })
            return
        end

        if item.ok and item.isJSON then
            local rt = item.json.Body.Data.Site
            if not(rt) then 
                dz.log('There is no Body.Data in the JSON', dz.LOG_ERROR)
                dz.utils.dumpTable(item.json) 
            else
                dz.devices('PGE').updateCustomSensor( rt.P_Grid or 0)
                dz.devices('Dom').updateCustomSensor( rt.P_Load or 0)
                dz.devices('Samowystarczalność').updateCustomSensor( rt.rel_Autonomy or 0)
                dz.devices('Potrzeby_własne').updateCustomSensor( rt.rel_SelfConsumption or 0)
            end
        else
            dz.log('There was a problem handling the request', dz.LOG_ERROR)
            dz.log(item, dz.LOG_DEBUG)
        end

    end
}

A oto efekt skryptu:

obraz

Dodatkowe dane to kafelki o nazwach: PGE, Dom, Samowystarczalność

Pozdrawiam kolegę @isom. Jeszcze raz wielkie dzięki.

 
Dodane : 02/05/2021 11:47 am
kniazio
(@kniazio)
Wpisów: 210
Pomocny Donator 2K21
 

Ciekawe czy temperature falownika da sie wyiagnac z Api? Szukalem bezskutecznie jakby co.

 
Dodane : 02/05/2021 3:31 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Można po dodaniu dodatkowego modułu do falownika 

 
Dodane : 02/05/2021 5:25 pm
kniazio
(@kniazio)
Wpisów: 210
Pomocny Donator 2K21
 
Dodane przez: @isom

Można po dodaniu dodatkowego modułu do falownika 

Znowu dodatkowego? Tyle kasy kosztuje ten falownik i zeby zmierzyc mu temp to trzeba cos dokupowac?. Skandal 🙂

Zartowalem 🙂 Zapniemy DS18B20 i bedzie git.

 

P.S. A jednak cos jest

 http://192.168.1.199/solar_api/v1/GetArchiveData.cgi?Scope=System&StartDate=02.05.2021&EndDate=02.05.2021&Channel=Temperature_Powerstage 

Odp:
{
	"Body" : 
	{
		"Data" : 
		{
			"inverter/1" : 
			{
				"Data" : 
				{
					"Temperature_Powerstage" : 
					{
						"Unit" : "°C",
						"Values" : 
						{
							"0" : 0,
							"10200" : 0,
							"10500" : 0,
							"10800" : 0,
							"11100" : 0,
							"11400" : 0,
							"11700" : 0,
							"1200" : 0,
							"12000" : 0,
							"12300" : 0,
							"12600" : 0,
							"12900" : 0,
							"13200" : 0,
							"13500" : 0,
							"13800" : 0,
							"14100" : 0,
							"14400" : 0,
							"14700" : 0,
							"1500" : 0,
							"15000" : 0,
							"15300" : 0,
							"15600" : 0,
							"15900" : 0,
							"16200" : 0,
							"16500" : 0,
							"16800" : 0,
							"17100" : 0,
							"17400" : 0,
							"17700" : 0,
							"1800" : 0,
							"18000" : 0,
							"18300" : 0,
							"18600" : 34,
							"18900" : 35,
							"19200" : 36,
							"19500" : 37,
							"19800" : 38,
							"20100" : 38,
							"20400" : 39,
							"20700" : 39,
							"2100" : 0,
							"21000" : 40,
							"21300" : 40,
							"21600" : 40,
							"21900" : 41,
							"22200" : 41,
							"22500" : 41,
							"22800" : 41,
							"23100" : 42,
							"23400" : 42,
							"23700" : 42,
							"2400" : 0,
							"24000" : 43,
							"24300" : 43,
							"24600" : 43,
							"24900" : 41,
							"25200" : 41,
							"25500" : 42,
							"25800" : 43,
							"26100" : 43,
							"26400" : 44,
							"26700" : 44,
							"2700" : 0,
							"27000" : 43,
							"27300" : 42,
							"27600" : 43,
							"27900" : 44,
							"28200" : 44,
							"28500" : 45,
							"28800" : 44,
							"29100" : 43,
							"29400" : 43,
							"29700" : 44,
							"300" : 0,
							"3000" : 0,
							"30000" : 45,
							"30300" : 45,
							"30600" : 45,
							"30900" : 45,
							"31200" : 44,
							"31500" : 44,
							"31800" : 45,
							"32100" : 46,
							"32400" : 46,
							"32700" : 45,
							"3300" : 0,
							"33000" : 45,
							"33300" : 45,
							"33600" : 45,
							"33900" : 46,
							"34200" : 46,
							"34500" : 47,
							"34800" : 46,
							"35100" : 46,
							"35400" : 45,
							"35700" : 46,
							"3600" : 0,
							"36000" : 46,
							"36300" : 47,
							"36600" : 46,
							"36900" : 46,
							"37200" : 46,
							"37500" : 46,
							"37800" : 46,
							"38100" : 47,
							"38400" : 47,
							"38700" : 46,
							"3900" : 0,
							"39000" : 45,
							"39300" : 46,
							"39600" : 46,
							"39900" : 46,
							"40200" : 46,
							"40500" : 46,
							"40800" : 47,
							"41100" : 47,
							"41400" : 47,
							"41700" : 46,
							"4200" : 0,
							"42000" : 45,
							"42300" : 45,
							"42600" : 46,
							"42900" : 46,
							"43200" : 46,
							"43500" : 46,
							"43800" : 45,
							"44100" : 45,
							"44400" : 45,
							"44700" : 45,
							"4500" : 0,
							"45000" : 45,
							"45300" : 45,
							"45600" : 45,
							"45900" : 45,
							"46200" : 46,
							"46500" : 46,
							"46800" : 47,
							"47100" : 47,
							"47400" : 48,
							"47700" : 49,
							"4800" : 0,
							"48000" : 49,
							"48300" : 50,
							"48600" : 51,
							"48900" : 51,
							"49200" : 51,
							"49500" : 51,
							"49800" : 51,
							"50100" : 50,
							"50400" : 50,
							"50700" : 49,
							"5100" : 0,
							"51000" : 49,
							"51300" : 48,
							"51600" : 48,
							"51900" : 48,
							"52200" : 48,
							"52500" : 48,
							"52800" : 48,
							"53100" : 48,
							"53400" : 47,
							"53700" : 47,
							"5400" : 0,
							"54000" : 47,
							"54300" : 47,
							"54600" : 47,
							"54900" : 47,
							"55200" : 47,
							"55500" : 47,
							"55800" : 47,
							"56100" : 47,
							"56400" : 47,
							"56700" : 48,
							"5700" : 0,
							"57000" : 48,
							"57300" : 49,
							"57600" : 48,
							"57900" : 48,
							"58200" : 48,
							"58500" : 47,
							"58800" : 47,
							"59100" : 48,
							"59400" : 48,
							"59700" : 49,
							"600" : 0,
							"6000" : 0,
							"60000" : 49,
							"60300" : 49,
							"60600" : 48,
							"60900" : 47,
							"61200" : 47,
							"61500" : 48,
							"61800" : 48,
							"62100" : 48,
							"62400" : 48,
							"62700" : 49,
							"6300" : 0,
							"63000" : 49,
							"63300" : 49,
							"63600" : 49,
							"63900" : 49,
							"64200" : 49,
							"64500" : 49,
							"64800" : 48,
							"65100" : 48,
							"65400" : 48,
							"65700" : 48,
							"6600" : 0,
							"66000" : 48,
							"66300" : 47,
							"66600" : 47,
							"66900" : 48,
							"67200" : 48,
							"67500" : 47,
							"67800" : 47,
							"68100" : 46,
							"68400" : 47,
							"68700" : 47,
							"6900" : 0,
							"69000" : 47,
							"69300" : 47,
							"69600" : 46,
							"69900" : 46,
							"70200" : 46,
							"70500" : 46,
							"70800" : 46,
							"71100" : 46,
							"71400" : 0,
							"71700" : 0,
							"7200" : 0,
							"72000" : 0,
							"72300" : 0,
							"72600" : 0,
							"72900" : 0,
							"73200" : 0,
							"73500" : 0,
							"73800" : 0,
							"74100" : 0,
							"74400" : 0,
							"74700" : 0,
							"7500" : 0,
							"75000" : 0,
							"75300" : 0,
							"75600" : 0,
							"75900" : 0,
							"76200" : 0,
							"76500" : 0,
							"76800" : 0,
							"77100" : 0,
							"77400" : 0,
							"77700" : 0,
							"7800" : 0,
							"78000" : 0,
							"78300" : 0,
							"78600" : 0,
							"78900" : 0,
							"79200" : 0,
							"79500" : 0,
							"79800" : 0,
							"80100" : 0,
							"80400" : 0,
							"80700" : 0,
							"8100" : 0,
							"81000" : 0,
							"81300" : 0,
							"81600" : 0,
							"81900" : 0,
							"82200" : 0,
							"82500" : 0,
							"82800" : 0,
							"83100" : 0,
							"83400" : 0,
							"83700" : 0,
							"8400" : 0,
							"84000" : 0,
							"84300" : 0,
							"84600" : 0,
							"84900" : 0,
							"85200" : 0,
							"85500" : 0,
							"85800" : 0,
							"86100" : 0,
							"8700" : 0,
							"900" : 0,
							"9000" : 0,
							"9300" : 0,
							"9600" : 0,
							"9900" : 0
						},
						"_comment" : "channelId=65795"
					}
				},
				"DeviceType" : 110,
				"End" : "2021-05-02T23:59:59+02:00",
				"NodeType" : 97,
				"Start" : "2021-05-02T00:00:00+02:00"
			}
		}
	},
	"Head" : 
	{
		"RequestArguments" : 
		{
			"Channel" : 
			[
				"Temperature_Powerstage"
			],
			"EndDate" : "2021-05-02T23:59:59+02:00",
			"HumanReadable" : "True",
			"Scope" : "System",
			"SeriesType" : "Detail",
			"StartDate" : "2021-05-02T00:00:00+02:00"
		},
		"Status" : 
		{
			"Code" : 0,
			"ErrorDetail" : 
			{
				"Nodes" : []
			},
			"Reason" : "",
			"UserMessage" : ""
		},
		"Timestamp" : "2021-05-03T06:43:51+02:00"
	}
}

Jesli wypluwa dane archiwalne to musza gdzies byc tez dane real

 
Dodane : 03/05/2021 5:05 am
kniazio
(@kniazio)
Wpisów: 210
Pomocny Donator 2K21
 

Znalazlem w sieci taki oto skrypt który zlicza miesięczne wartosci energii:

Niestety nie liczy mojego zuzycia przez dom poniewaz wartosci mojego zuzycia sa ze znakiem minus i skrypt wywala blad.

Czy jest ktos na forum kto dal by rade to poprawic zeby liczylo z minusem?

Oto skrypt:

local httpResponses = 'oneMonthTotal'

return {
    on      =   {  
                 timer           =   { 'every minute' }, -- if you get data from previous months you only have to do this once a month at a quiet time

 --                   timer           =   { 'on 1/* at 04:17' }, -- if you get data from previous months you only have to do this once a month at a quiet time
                    httpResponses   =   { httpResponses .. '*' } 
                },

    logging =   {   
                    level           =   domoticz.LOG_DEBUG, -- set to LOG_ERROR when script works as expected
                    marker          =   httpResponses
                },
                
    execute = function(dz, item)
        -- ****************************** Your settings below this line ***************************************************
        usageDevice = dz.devices(3235)          -- Replace xxxx with ID of energyDevice you want to track
        oneMonthTotal = dz.devices(3299)        -- Create as virtual managed counter (energy) and change yyyy to the ID of the new device
        -- ****************************** No changes required below this line *********************************************
        
        local function logWrite(str,level)
            dz.log(tostring(str),level or dz.LOG_DEBUG)
        end
        
        local function triggerJSON(id, period, delay)
            local delay = delay or 0
            local  URLString   =    dz.settings['Domoticz url'] .. '/json.htm?type=graph&sensor=counter&range=' .. 
                                    period .. '&idx=' .. id 
		   dz.openURL({    url = URLString,
                            method = 'GET',
                            callback = httpResponses .. '_' .. period}).afterSec(delay)                      
        end
        
        local function calculateoneMonthTotal(rt)
            local oneMonthTotal = 0
			local dateFmt = '%Y-%m'
            monthMinus1 = os.date(dateFmt,os.time{day=1, year=dz.time.year, month=dz.time.month - 1 })
            for id, result in  ipairs(rt) do 
                if result.d:sub(1,7) == monthMinus1 then
                    logWrite(result.d .. ' ==>> ' .. result.v)
                    oneMonthTotal = oneMonthTotal + result.v
                end
            end
            return oneMonthTotal * 1000
        end    
        
        if not item.isHTTPResponse then
            triggerJSON(usageDevice.id, 'year')
        elseif item.ok then                                      -- statusCode == 2xx
            oneMonthTotal.update(0,calculateoneMonthTotal(item.json.result))
        else
            logWrite('Could not get (good) data from domoticz. Error (' .. (item.statusCode or 999) .. ')'  ,dz.LOG_ERROR)
            logWrite(item.data)
        end
    end
}

A to zrodlo skryptu:

https://domoticz.com/forum/viewtopic.php?t=30473

 
Dodane : 25/05/2021 2:34 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@kniazio twoje błędy, które wstawiłeś na angielskim forum , wskazują , że próbujesz coś liczyć ale używasz do tego złego urządzenia , jak podstawisz w tym skrypcie zamiast CustomSensor  Licznik enegrii chwilowej to skrypt będzie działał . 

Ty używasz w skrypcie, który napisałem CustomSensora a nie urządzenia energetycznego 

 
Dodane : 25/05/2021 9:32 pm
kniazio
(@kniazio)
Wpisów: 210
Pomocny Donator 2K21
 
Dodane przez: @isom

@kniazio twoje błędy, które wstawiłeś na angielskim forum , wskazują , że próbujesz coś liczyć ale używasz do tego złego urządzenia , jak podstawisz w tym skrypcie zamiast CustomSensor  Licznik enegrii chwilowej to skrypt będzie działał . 

Ty używasz w skrypcie, który napisałem CustomSensora a nie urządzenia energetycznego 

No wlasnie zauwazylem ze jak podepne pod skrypt pomiar o nazwie Aktualnie to skrypt liczy. Ale nie rozumiem tego poniewaz pomiar "Aktualnie" jest brany tak samo z Api Froniusa jak pomiar "Dom" tyle ze ze znakiem minus. Tak wiec jest mozliwosc zliczania pomiaru "Dom" czy jej nie ma ?

 

 
Dodane : 26/05/2021 4:48 am
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@kniazio  Na "Aktualne" działa bo ten czujnik oprócz wartości chwilowej zlicza też uzysk dzienny a CustomSensor "Dom" tego nie robi :))

Minusy w matematyce też da się sumować i mnożyć więc możliwość jest tylko trzeba sobie poczytać wiki DzVents i zamienić w skrypcie Custom sensor na poprawne urządzenie

 
Dodane : 26/05/2021 7:29 am
kniazio
(@kniazio)
Wpisów: 210
Pomocny Donator 2K21
 

A jakas podpowiedz dla poczatkujacego donatora:)

Zmiana w skrypcie mnie nie uzadza poniewaz ja chce zliczac wartosc ujemna czyli to co dom zuzywa. Co mi da zmiana na zliczanie z urzadzenia "Aktualnie" skoro ono juz jest zliczane

 
Dodane : 26/05/2021 9:29 am
kniazio
(@kniazio)
Wpisów: 210
Pomocny Donator 2K21
 

Dodalem do twojego skryptu "DomZ"

dz.devices('PGE').updateCustomSensor( rt.P_Grid or 0)
                dz.devices('Dom').updateCustomSensor( rt.P_Load or 0)
                dz.devices('DomZ').updateCounter( rt.P_Load or 0)
                dz.devices('Samowystarczalność').updateCustomSensor( rt.rel_Autonomy or 0)
                dz.devices('Potrzeby_własne').updateCustomSensor( rt.rel_SelfConsumption or 0)

Dodalem sensor Counter ktory u dolu pokazuje mi to samo co "Dom" czyli OK ale u gory okazuje jakies glupoty. Czy trzeba cos ustawic we wlasciwosciach tego sensora?

obraz
 
Dodane : 26/05/2021 11:08 am
kniazio
(@kniazio)
Wpisów: 210
Pomocny Donator 2K21
 

Witam po dlugim czasie.

Dzisiaj zrobilem aktualizacje oprogramowania Fronius

Czy ktos wie co zmienilo sie w Api bo skrypt przestal mi zliczac i pokazywac energie biezaca

Link przestal dzialac

obraz

  http://192.168.1.199/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceID=1&DataCollection=CommonInverterData

 

 
Dodane : 30/07/2021 11:28 am
kniazio
(@kniazio)
Wpisów: 210
Pomocny Donator 2K21
 

Panowie problem rozwiazany:

Trzeba w skrypcie zmienic jedna literke w url do API,  "D" na "d" i wszystko smiga

http://192.168.1.199/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceID=1&DataCollection=CommonInverterData - nie dziala

http://192.168.1.199/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=CommonInverterData - dziala

Pozdrawiam

 
Dodane : 30/07/2021 3:14 pm
isom reacted
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Ponieważ po  zmianie "ID" na  "Id" w url, wszystko działa również na starszej wersji softu falownika, edytowałem i zmieniłem to we wcześniejszych wpisach.

Dzięki @kniazio

 
Dodane : 31/07/2021 6:12 am
kniazio
(@kniazio)
Wpisów: 210
Pomocny Donator 2K21
 
Dodane przez: @isom

@kniazio  Na "Aktualne" działa bo ten czujnik oprócz wartości chwilowej zlicza też uzysk dzienny a CustomSensor "Dom" tego nie robi :))

Minusy w matematyce też da się sumować i mnożyć więc możliwość jest tylko trzeba sobie poczytać wiki DzVents i zamienić w skrypcie Custom sensor na poprawne urządzenie

Na jakie urzadzenie zmienic CustomSensor? Co mam wpisac w skrypcie zamiast CustomSensor?

                dz.devices('PGE').updateCustomSensor( rt.P_Grid or 0)
                dz.devices('Dom').updateCustomSensor( rt.P_Load or 0)
                dz.devices('Samowystarczalność').updateCustomSensor( rt.rel_Autonomy or 0)
                dz.devices('Potrzeby_własne').updateCustomSensor( rt.rel_SelfConsumption or 0)
            end

Doszedlem do tego ze zrobilem licznik instant+counter i w skrypcie dodalem :

dz.devices('Power_usage').updateElectricity( rt.P_Load or 0)

obraz

ale w Today jakies glupoty liczy. Raz dodaje raz odejmuje . Ogolnie kicha

EDIT

Po kilkunastu godzinach pojawily sie slupki w wykresie Week

W wykresie Last 24 jednak wyglada to jakos dziwnie.

Ciekawe na ile jest to wiarygodne zuzycie

obraz

Poradzicie cos?

 

 
Dodane : 24/08/2021 3:16 pm
Strona 7 / 7
Udostępnij: