Powiadomienia
Wyczyść wszystko
Domoticz
138
Wpisów
7
Użytkownicy
1
Reactions
21.6 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




