Powiadomienia
Wyczyść wszystko
Domoticz
138
Wpisów
7
Użytkownicy
1
Reactions
18.2 K
Wyświetleń
Instalacja odpalona, licznik zalozyli 3 dni temu
GetString wlasnie nic nie zglasza
Mam inverter bez zadnych dodatkow
Ale chcialbym eby mi bynajmniej pokazywalo moc biezaca, dzienna produkcje i calkowita produkcje
Wiecej chyba nic nie wyciagnie bez dodatkowych zabawek ale tyle by mi chyba wystarczylo
W przyszlosci mysle na smart meterem. Wtedy pewnie daa sie wiecej
Dodane : 15/04/2021 9:21 pm
@kniazio sam skrypt mogę wrzucić zaraz, ale żeby działał trzeba dodać dwie zmienne , utworzyć sprzęt "Fronius" w domoticz i dodać wszystkie czujniki żeby działał.
Jak ogarniesz bez opisu to napisz
Dodane : 15/04/2021 9:31 pm
Jeśli możesz to podeślij ten skrypt. Zapoznam sie z nim . Opis jak najbardziej nadal potrzebny 🙂
Dodane : 16/04/2021 8:11 am
@kniazio testuj, to jest główny skrypt i powinieneś dostać podstawowe dane
return { logging = { level = domoticz.LOG_DEBUG, -- zmien na LOG_ERROR jak skrypt bedzie Ok marker = 'Fronius global' }, on = { timer = { 'every minute' }, httpResponses = { 'triggerFronius' } }, execute = function(domoticz,item) -- utworz dwie zmienne i potrzebne czujniki i dostosuj nazwy i typy local IPdomiticz = domoticz.variables('UV_DomoticzIP').value -- zmienna uzytkownika ciag znakow Adres IP domoticz : Port local IPFronius = domoticz.variables('UV_FroniusIP').value -- zmienna uzytkownika ciag znakow Adres IP Fronius local idx_Fronius_Actual = domoticz.devices('Fronius_Aktualnie').idx -- czujnik licznik local idx_DAY_ENERGY = domoticz.devices('Fronius_Dzień_Energia').idx -- czujnik CustomSensor local idx_YEAR_ENERGY = domoticz.devices('Fronius_Rok_Energia').idx -- czujnik CustomSensor local idx_TOTAL_ENERGY = domoticz.devices('Fronius_Total_Energia').idx -- czujnik CustomSensor local idx_UDC = domoticz.devices('Fronius_UDC').idx -- czujnik Napięcie local idx_UAC = domoticz.devices('Fronius_UAC').idx -- czujnik Napięcie local idx_IDC = domoticz.devices('Fronius_IDC').idx -- czujnik Prąd A local idx_IAC = domoticz.devices('Fronius_IAC').idx -- czujnik Prąd A local json = assert(loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")() domoticz.log('Fronius script running', domoticz.LOG_INFO) if (item.isTimer) then time_now = os.date("*t") minutes_now = time_now.min + time_now.hour * 60 domoticz.log('Time in minutes: ' ..minutes_now, domoticz.LOG_INFO) domoticz.log('Sunrise in minutes: ' ..timeofday['SunriseInMinutes'] - 60, domoticz.LOG_INFO) domoticz.log('Sunset in minutes: ' ..timeofday['SunsetInMinutes'] + 60, domoticz.LOG_INFO) -- Validation for sunrise and sunset. if (minutes_now > timeofday['SunriseInMinutes'] - 30) and (minutes_now < timeofday['SunsetInMinutes'] + 30) then domoticz.log('Call Fronius url with callback', domoticz.LOG_DEBUG) -- ASYNC openUrl domoticz.openURL({ url = 'http://'..IPFronius..'/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=CommonInverterData', method = 'GET', callback = 'triggerFronius' }) else domoticz.log('Fronius inverter Offline because of SunSet', domoticz.LOG_INFO) end end if (item.isHTTPResponse and item.ok) then domoticz.log('Callback from url requested', domoticz.LOG_DEBUG) domoticz.log('Data: '..item.data, domoticz.LOG_INFO) local jsonfroniusdata = domoticz.utils.fromJSON(item.data) if (jsonfroniusdata == nil) then domoticz.log('Fronius inverter data is empty', domoticz.LOG_INFO) return end -- request successfull ? if ( jsonfroniusdata.Head.Status.Code ~= 0 ) then domoticz.log('Fronius inverter head status code data is not 0', domoticz.LOG_INFO) domoticz.log('Status code: ' + jsonfroniusdata.Head.Status.Code + ' Reason: ' + jsonfroniusdata.Head.Status.Reason + ' User message: ' + jsonfroniusdata.Head.Status.UserMessage, domoticz.LOG_ERROR) return end local StatusCode = jsonfroniusdata.Body.Data.DeviceStatus.StatusCode domoticz.log('json froniusdata Statuscode: '..StatusCode, domoticz.LOG_INFO) if ( StatusCode == 7) then --Fronius converter is Running local DAY_ENERGY = jsonfroniusdata.Body.Data.DAY_ENERGY.Value/1000 local YEAR_ENERGY = jsonfroniusdata.Body.Data.YEAR_ENERGY.Value/1000 local TOTAL_ENERGY = jsonfroniusdata.Body.Data.TOTAL_ENERGY.Value/1000000 local PAC = jsonfroniusdata.Body.Data.PAC.Value local UDC = jsonfroniusdata.Body.Data.UDC.Value local UAC = jsonfroniusdata.Body.Data.UAC.Value local IDC = jsonfroniusdata.Body.Data.IDC.Value local IAC = jsonfroniusdata.Body.Data.IAC.Value domoticz.log('PAC: '..PAC, domoticz.LOG_INFO) domoticz.log('Day Energy: '..DAY_ENERGY, domoticz.LOG_INFO) domoticz.log('Year Energy: '..YEAR_ENERGY, domoticz.LOG_INFO) domoticz.log('Total Energy: '..TOTAL_ENERGY, domoticz.LOG_INFO) domoticz.log('UDC: '..UDC, domoticz.LOG_INFO) --domoticz.log('UAC: '..UAC, domoticz.LOG_DEBUG) domoticz.log('IDC: '..IDC, domoticz.LOG_INFO) domoticz.log('IAC: '..IAC, domoticz.LOG_INFO) domoticz.openURL('http://'..IPdomiticz..'/json.htm?type=command¶m=udevice&idx='..idx_DAY_ENERGY..'&nvalue=0&svalue='..DAY_ENERGY) domoticz.openURL('http://'..IPdomiticz..'/json.htm?type=command¶m=udevice&idx='..idx_YEAR_ENERGY..'&nvalue=0&svalue='..YEAR_ENERGY) domoticz.openURL('http://'..IPdomiticz..'/json.htm?type=command¶m=udevice&idx='..idx_TOTAL_ENERGY..'&nvalue=0&svalue='..TOTAL_ENERGY) domoticz.openURL('http://'..IPdomiticz..'/json.htm?type=command¶m=udevice&idx='..idx_Fronius_Actual..'&nvalue=0&svalue='..PAC..';'..DAY_ENERGY) domoticz.openURL('http://'..IPdomiticz..'/json.htm?type=command¶m=udevice&idx='..idx_UDC..'&nvalue=0&svalue='..UDC) domoticz.openURL('http://'..IPdomiticz..'/json.htm?type=command¶m=udevice&idx='..idx_IDC..'&nvalue=0&svalue='..IDC) domoticz.openURL('http://'..IPdomiticz..'/json.htm?type=command¶m=udevice&idx='..idx_UAC..'&nvalue=0&svalue='..UAC) domoticz.openURL('http://'..IPdomiticz..'/json.htm?type=command¶m=udevice&idx='..idx_IAC..'&nvalue=0&svalue='..IAC) else domoticz.log('Fronius converter state (Statuscode:'..StatusCode..') other than running', domoticz.LOG_INFO) local UDC = 0 local UAC = 0 local IDC = 0 local IAC = 0 domoticz.openURL('http://'..IPdomiticz..'/json.htm?type=command¶m=udevice&idx='..idx_UDC..'&nvalue=0&svalue='..UDC) domoticz.openURL('http://'..IPdomiticz..'/json.htm?type=command¶m=udevice&idx='..idx_IDC..'&nvalue=0&svalue='..IDC) domoticz.openURL('http://'..IPdomiticz..'/json.htm?type=command¶m=udevice&idx='..idx_UAC..'&nvalue=0&svalue='..UAC) domoticz.openURL('http://'..IPdomiticz..'/json.htm?type=command¶m=udevice&idx='..idx_IAC..'&nvalue=0&svalue='..IAC) end end end }
Dodane : 16/04/2021 11:02 am
Rozumiem ze mam utworzyc czujniki ale nie wiem gdzie wpisac ich idx-y oraz nie wiem gdzie (w ktorym miejscu w skrypcie) mam wpisac IP Froniusa i Domoticza
Czy moglbys podac jakis przyklad?
Nie bardzo wiem ktory to jest czujnik Napiecie i czujnik Prad A (w Domoticzu jest angielskie nazewnictwo)
Dodane : 16/04/2021 11:33 am
@kniazio w szybkim skrócie :
Jedna zmienna to ma być adres IP domoticz + port i na podstawie tej zmiennej skrypt sobie będzie aktualizował czujniki.
Druga zmienna to adres IP Froniusa i ta zmienna zastępuje w skrypcie wpisywanie IP Froniusa ( skrypt pobiera adres ze zmiennej)
Nie wpisujesz nigdzie idx -ów , ten skrypt bazuje na nazwach a nie na idx
Do testów nazwij czujniki tak jak u mnie i wystarczy
Jak masz zmieniony język na polski w domoticz to nazwy przy tworzeniu czujników są po polsku np Amperaż (1 faza) .
A jak dalej nie dasz rady to musisz poczekać na dokładny opis
Dodane : 16/04/2021 1:23 pm
Konfiguracja - Więcej Opcji - Zmienne użytkownika
Zmienna typu ciąg znaków po angielsku string , i nazwa zmiennej
UV_DomoticzIP
analogicznie druga zmienna
Dodane : 16/04/2021 1:55 pm
zrobilem zmienne, odpalilem skrypt i mam:
2021-04-16 15:06:03.128 Error: EventSystem: in FSymo: [string "return {..."]:3: attempt to index global 'domoticz' (a nil value) 2021-04-16 15:06:10.372 Error: EventSystem: in FSymo: [string "return {..."]:3: attempt to index global 'domoticz' (a nil value) 2021-04-16 15:06:25.739 Error: EventSystem: in FSymo: [string "return {..."]:3: attempt to index global 'domoticz' (a nil value) 2021-04-16 15:06:25.865 Error: EventSystem: in FSymo: [string "return {..."]:3: attempt to index global 'domoticz' (a nil value) 2021-04-16 15:06:30.305 Error: EventSystem: in FSymo: [string "return {..."]:3: attempt to index global 'domoticz' (a nil value) 2021-04-16 15:06:30.428 Error: EventSystem: in FSymo: [string "return {..."]:3: attempt to index global 'domoticz' (a nil value) 2021-04-16 15:06:30.434 Error: EventSystem: in FSymo: [string "return {..."]:3: attempt to index global 'domoticz' (a nil value) 2021-04-16 15:06:30.441 Error: EventSystem: in FSymo: [string "return {..."]:3: attempt to index global 'domoticz' (a nil value)
Czy IP froniusa i domoticza maja byc z http:// ??. Ja dalem bez czyli np 192.168.1.199
I jeszcze jedno. Czy to ma byc Lua czy Dzvents?
Dodane : 16/04/2021 2:10 pm
@kniazio zmienne mają być bez http:// bo to jest już w skrypcie zrób zrzut tych zmiennych w domoticz i sprawdż najpierw co zwraca u ciebie taki adres wpisany w przeglądarkę
http://IP Fronius/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=CommonInverterData
Oczywiście IP Fronius zmieniasz na prawdziwy adres Inwertera
Dodane : 16/04/2021 2:20 pm
Body Data DAY_ENERGY Unit "Wh" Value 235.2 DeviceStatus ErrorCode 0 LEDColor 2 LEDState 0 MgmtTimerRemainingTime -1 StateToReset false StatusCode 7 FAC Unit "Hz" Value 49.97 IAC Unit "A" Value 1.49 IDC Unit "A" Value 1.28 PAC Unit "W" Value 348 TOTAL_ENERGY Unit "Wh" Value 18943 UAC Unit "V" Value 229.9 UDC Unit "V" Value 378.1 YEAR_ENERGY Unit "Wh" Value 18943.7 Head RequestArguments DataCollection "CommonInverterData" DeviceClass "Inverter" DeviceId "1" Scope "Device" Status Code 0 Reason "" UserMessage "" Timestamp "2021-04-16T15:29:37+02:00"
Dodane : 16/04/2021 2:30 pm
Wrzuć taki skrypt i zobacz czy będzie się aktualizował czujnik UDC , tylko ustaw adres na adres Inwertera
local scriptVar = 'Fronius' return { on = { timer = { 'every minute at daytime'}, httpResponses = { scriptVar, }, }, logging = { level = domoticz.LOG_DEBUG, marker = Fronius test, }, execute = function(dz, item) if item.isTimer then dz.openURL( { 'http://IP Fronius/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=CommonInverterData', callback = scriptVar, }) return end if item.ok and item.isJSON then local rt = item.json.Body.Data dz.devices('Fronius_UDC').updateVoltage( (rt.UDC and rt.UDC.Value ) or 0) else dz.log('There was a problem handling the request', dz.LOG_ERROR) dz.log(item, dz.LOG_DEBUG) end end }
Dodane : 16/04/2021 2:44 pm
Niby juz dziala ale jak to poustawiac zeby te jednostki byly jakos normalnie
Dzien_energia i Aktualnie zeby bylo bez "0"
U mnie ta dzienna energia cos jest zle pokazywanana wyswietlaczu Froniusa pokazuje:
Day 0,46kWh
Year 19,174kWh
TOTAL 19,174kWh
W apce na fonie pokazuje dzisiejsza energie 3 418,21 Wh czyli ok 3,5 kWh
Plugin ktory mam na domoticzu jaki znalazlem w sieci pokazuje 3,815 kWh
Masakra jakas
Dodane : 16/04/2021 2:52 pm
Mało dziś produkuje ta instalacja i musi być zero na początku . Jak będzie ponad 1 kW będzie ok
PS
Jednak coś pomieszałeś z czujnikami bo PAC powinien być w watach
Dodane : 16/04/2021 3:00 pm
Ale Dzien Energia jest ponad 1kW wiec nie powinno byc zera
U ciebie na kafelku "Aktualnie sa dwie wartosci (aktualna moc + uzysk dzienny) a u mnie jest tylko jedna watosc
Dodane : 16/04/2021 3:05 pm
Namieszałeś z czujnikami nie umiem pomóc bo nie wiem co gdzie dodałeś . Sorki
A na apkę froniusa nie patrz bo kłamie jak najęta
Dodane : 16/04/2021 3:09 pm
Co to jest ten PAC ? Czy te jednostki sie wpisuje recznie czy jak? Bo ja moge wpisac co chce i zarz bedzie w watach
Dodane : 16/04/2021 3:10 pm
Ok apk amoze i klamie ale Day energy nie moze byc 0,46kWh bo napewno dzisiaj instalacja wyprodukowala ponad 3,5kW
Dodane : 16/04/2021 3:12 pm
Namieszałeś z czujnikami nie umiem pomóc bo nie wiem co gdzie dodałeś . Sorki
A na apkę froniusa nie patrz bo kłamie jak najęta
Napisz w wolnej chwili jak te cujniki dodac bo napewno cos popier....m
Plugin znaleziony w sieci pokazuje dobrze pomimo ze Day_Energy w api pokazuje glupoty
Dodane : 16/04/2021 3:13 pm