Cześć
Ponad rok temu zacząłem zabawę z Domoticzem, ponieważ potrzebowałem systemu do obsługi ogrzewania CO. .
Przez ponad rok poprogramowałem sobie i potestowałem różne pluginy itp.
Kilka miesięcy temu już wiedziałem co tak naprawdę jest mi potrzebne w Domoticzu i postawiłem go na nowo postawić tak a żeby Domoticz miał tylko to czego potrzebuje i działał stabilnie. Od postawienia go nie przeprowadzam żadnych aktualizacji i nie grzebie w nim, bo chce żeby był maksymalnie stabilny a system Domoticz i tak co kilkanaście dni się zawiesza.
Co ciekawe jak wchodzi w stan exited to trzyma go tak cały dzień. Restart jak widać na załączonym screenie nie pomaga.
Po zrestartowaniu usługi Domoticz ma status running tylko przez 2-3 sekundy po restarcie usługi i znów jest exited
Teraz najciekawsze bo nie jestem w stanie go uruchomić przez cały dzien ale wystarczy, że minie nocka (kilkukrotnie tak się stało) (trudno powiedzieć która dokładnie godzina) i jak tylko się obudzę rano i zrestartuje usługę poleceniem "sudo /etc/init.d/domoticz.sh restart" Domoticz magicznie wstaje i działa bez problemów znów przez kilka dni. Ktoś może mi podpowiedzieć co może być przyczyną lub łopatologicznie podpowiedzieć gdzie szukać przyczyny jakieś logi tylko z wytłumaczeniem jak się do nich dostać
przy okazji dołączam się, że u mnie jest podobnie. Co ileś dni staje. Przy czym, ja używam DOmoticz tylko do testowania AFE więc nie przeszkadza mi, ale fakt jest faktem - staje. Teraz sprawdziłem i mam to jak próbuje go otworzyć. W tym domoticz w zasadzie nic nie ma. Ani jeden reguły. Tylko MQTT i kilka bloczków do AFE
Nie mogę potwierdzić że tak się dzieje, bo u mnie pracuje bardzo stabilnie i bez restartów . Co do logów to kolego @adamdudek w pliku
sudo nano /etc/init.d/domoticz.sh
proponuję odkomentować ( usunąć znak #) w zaznaczonym wierszu
Spowoduje to ciągłe zapisywanie logów do pliku TXT w lokalizacji /tmp/domoticz.txt
Oczywiście jeśli domoticz będzie działał należy przynajmniej co drugi dzień wykasować te logi żeby ten plik nie rósł w nieskończoność , jest jednak duża szansa że zapiszą się zdarzenia powodujące zatrzymanie usługi.
Do tego wszystkiego warto sprawdzić wielkość i stan bazy danych , do sprawdzenia jak duży jest plik bazy wystarczy
cd domoticz ls -lh domoticz.db
jak będzie jakaś znacznie większa niż np moja
a urządzeń w domoticz nie ma więcej niż 300 , to polecam zainstalować sqlite3 i chociaż "odkurzyć" taką bazę
sudo service domoticz stop cd domoticz ls -lh domoticz.db sudo sqlite3 domoticz.db VACUUM; .quit ls -lh domoticz.db sudo service domoticz start
Właśnie się znów wysypał, ale teraz przed restartem skopiowałem logi z błędami z Domoticza
Wydaje mi się, że to będzie przyczyną, bo o 21:41 zauważyłem, że się wysypał>>>>> 2022-06-14 21:41:05.106 Error: WebServer PO exception occurred : 'stoull'
Rano jak się obudzę znów będzie dział jak tylko zrestartuje usługę.
Ktoś może zerknąć na logi i mi coś podpowiedzieć
2022-06-14 18:10:58.752 Error: MainWorker::UpdateDevice exception occurred : 'stoull'
2022-06-14 18:10:58.752 Error: MQTT Client: Problem updating sensor (check idx, hardware enabled)
2022-06-14 18:11:24.728 Error: MainWorker::UpdateDevice exception occurred : 'stoull'
2022-06-14 18:11:24.728 Error: MQTT Client: Problem updating sensor (check idx, hardware enabled)
2022-06-14 18:12:17.260 Error: MainWorker::UpdateDevice exception occurred : 'stoull'
2022-06-14 18:12:17.260 Error: MQTT Client: Problem updating sensor (check idx, hardware enabled)
2022-06-14 18:12:21.390 Error: MainWorker::UpdateDevice exception occurred : 'stoull'
2022-06-14 18:12:21.390 Error: MQTT Client: Problem updating sensor (check idx, hardware enabled)
2022-06-14 18:13:21.505 Error: MainWorker::UpdateDevice exception occurred : 'stoull'
2022-06-14 18:13:21.505 Error: MQTT Client: Problem updating sensor (check idx, hardware enabled)
2022-06-14 18:14:26.263 Error: MainWorker::UpdateDevice exception occurred : 'stoull'
2022-06-14 18:14:26.263 Error: MQTT Client: Problem updating sensor (check idx, hardware enabled)
2022-06-14 18:15:00.569 Error: UpdateMeter: Error converting sValue/sUsage! (IDX: 329, sValue: '35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6', sUsage: '0', dType: 113, sType: 0)
2022-06-14 18:15:38.145 Error: MainWorker::UpdateDevice exception occurred : 'stoull'
2022-06-14 18:15:38.145 Error: MQTT Client: Problem updating sensor (check idx, hardware enabled)
2022-06-14 18:15:42.419 Error: MainWorker::UpdateDevice exception occurred : 'stoull'
2022-06-14 18:15:42.420 Error: MQTT Client: Problem updating sensor (check idx, hardware enabled)
2022-06-14 18:16:42.401 Error: MainWorker::UpdateDevice exception occurred : 'stoull'
2022-06-14 18:16:42.401 Error: MQTT Client: Problem updating sensor (check idx, hardware enabled)
2022-06-14 18:20:00.776 Error: UpdateMeter: Error converting sValue/sUsage! (IDX: 329, sValue: '35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6', sUsage: '0', dType: 113, sType: 0)
2022-06-14 18:25:01.082 Error: UpdateMeter: Error converting sValue/sUsage! (IDX: 329, sValue: '35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6', sUsage: '0', dType: 113, sType: 0)
2022-06-14 18:30:00.263 Error: UpdateMeter: Error converting sValue/sUsage! (IDX: 329, sValue: '35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6', sUsage: '0', dType: 113, sType: 0)
2022-06-14 18:35:00.419 Error: UpdateMeter: Error converting sValue/sUsage! (IDX: 329, sValue: '35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6', sUsage: '0', dType: 113, sType: 0)
2022-06-14 18:40:00.586 Error: UpdateMeter: Error converting sValue/sUsage! (IDX: 329, sValue: '35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6', sUsage: '0', dType: 113, sType: 0)
2022-06-14 18:45:00.752 Error: UpdateMeter: Error converting sValue/sUsage! (IDX: 329, sValue: '35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6', sUsage: '0', dType: 113, sType: 0)
2022-06-14 18:50:00.909 Error: UpdateMeter: Error converting sValue/sUsage! (IDX: 329, sValue: '35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6', sUsage: '0', dType: 113, sType: 0)
2022-06-14 18:55:00.110 Error: UpdateMeter: Error converting sValue/sUsage! (IDX: 329, sValue: '35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6', sUsage: '0', dType: 113, sType: 0)
2022-06-14 18:56:04.938 Error: dzVents: Error: (3.1.8) Fronius_Symo: An error occurred when calling event handler 7a Fronius
2022-06-14 18:56:04.939 Error: dzVents: Error: (3.1.8) Fronius_Symo: ...omoticz/scripts/dzVents/generated_scripts/7a Fronius.lua:63: attempt to perform arithmetic on a string value
2022-06-14 19:00:00.306 Error: UpdateMeter: Error converting sValue/sUsage! (IDX: 329, sValue: '35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6', sUsage: '0', dType: 113, sType: 0)
2022-06-14 19:05:00.456 Error: UpdateMeter: Error converting sValue/sUsage! (IDX: 329, sValue: '35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6', sUsage: '0', dType: 113, sType: 0)
2022-06-14 19:10:00.595 Error: UpdateMeter: Error converting sValue/sUsage! (IDX: 329, sValue: '35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6', sUsage: '0', dType: 113, sType: 0)
2022-06-14 19:15:00.788 Error: UpdateMeter: Error converting sValue/sUsage! (IDX: 329, sValue: '35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6;35810003141867055020952.6', sUsage: '0', dType: 113, sType: 0)
2022-06-14 20:42:04.201 Error: dzVents: Error: (3.1.8) Fronius_Symo: An error occurred when calling event handler 7a Fronius
2022-06-14 20:42:04.201 Error: dzVents: Error: (3.1.8) Fronius_Symo: ...omoticz/scripts/dzVents/generated_scripts/7a Fronius.lua:63: attempt to perform arithmetic on a string value
2022-06-14 21:11:03.701 Error: dzVents: Error: (3.1.8) Fronius_Symo: An error occurred when calling event handler 7a Fronius
2022-06-14 21:11:03.702 Error: dzVents: Error: (3.1.8) Fronius_Symo: ...omoticz/scripts/dzVents/generated_scripts/7a Fronius.lua:63: attempt to perform arithmetic on a string value
2022-06-14 21:39:03.873 Error: dzVents: Error: (3.1.8) Fronius_Symo: An error occurred when calling event handler 7a Fronius
2022-06-14 21:39:03.873 Error: dzVents: Error: (3.1.8) Fronius_Symo: ...omoticz/scripts/dzVents/generated_scripts/7a Fronius.lua:63: attempt to perform arithmetic on a string value
2022-06-14 21:41:05.106 Error: WebServer PO exception occurred : 'stoull'
2022-06-14 21:41:05.392 Error: WebServer PO exception occurred : 'stoull'
2022-06-14 21:41:05.484 Error: WebServer PO exception occurred : 'stoull'
2022-06-14 21:41:06.754 Error: WebServer PO exception occurred : 'stoull'
2022-06-14 21:41:06.795 Error: WebServer PO exception occurred : 'stoull'
2022-06-14 21:41:08.436 Error: WebServer PO exception occurred : 'stoull'
2022-06-14 21:41:08.470 Error: WebServer PO exception occurred : 'stoull'
2022-06-14 21:41:08.474 Error: WebServer PO exception occurred : 'stoull'
2022-06-14 21:41:14.733 Error: WebServer PO exception occurred : 'stoull'
2022-06-14 21:42:53.658 Error: WebServer PO exception occurred : 'stoull'
2022-06-14 21:42:54.001 Error: WebServer PO exception occurred : 'stoull'
2022-06-14 21:42:58.506 Error: WebServer PO exception occurred : 'stoull'
2022-06-14 21:42:58.935 Error: WebServer PO exception occurred : 'stoull'
2022-06-14 21:42:59.049 Error: WebServer PO exception occurred : 'stoull'
2022-06-14 21:43:12.034 Error: WebServer PO exception occurred : 'stoull'
2022-06-14 21:43:12.069 Error: WebServer PO exception occurred : 'stoull'
@adamdudek te błędy wskazują na bazę danych , zainstaluj sqlite3 czyli
sudo apt-get install sqlite3
potem
sudo service domoticz.sh stop cd domoticz sqlite3 domoticz.db pragma integrity_check;
Wynik powinien być taki
Jak będzie inaczej to trzeba zrobić mimo wszystko kopię bazy danych a potem spróbować ją naprawić
Masz tu link do wątku gdzie masz opis i dwie możliwości naprawy jedna używa skryptu bash , druga to ręczna metoda
Baza najprawdopodobniej jest dobra bo po wykonaniu Twoich komend mam komunikat "ok"
To wstaw tu ten skrypt dzVents który wali błędem w linii 63 . Czyli scripts/7a Fronius
wiersz 67 jest pogrubiony żeby łatwiej było znaleźć
return {
logging = {
level = domoticz.LOG_ERROR, -- zmien na LOG_ERROR jak skrypt bedzie Ok (było LOG_DEBUG)
marker = 'Fronius_Symo' -- bylo 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('Aktualnie').idx -- czujnik licznik
local idx_DAY_ENERGY = domoticz.devices('Dzień_Energia').idx -- czujnik CustomSensor
local idx_YEAR_ENERGY = domoticz.devices('Rok_Energia').idx -- czujnik CustomSensor
local idx_TOTAL_ENERGY = domoticz.devices('Total_Energia').idx -- czujnik CustomSensor
local idx_UDC = domoticz.devices('Dach_V').idx -- czujnik Napięcie
local idx_UAC = domoticz.devices('Siec_V').idx -- czujnik Napięcie
local idx_IDC = domoticz.devices('Dach_A').idx -- czujnik Prąd A
local idx_IAC = domoticz.devices('Siec_A').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
}
@adamdudek tak samo jak tobie się nie chce dokładnie sprawdzić, mi się nie chce tego analizować , nie 67 a 63. Usuń wszystko co masz do fronius i dodaj od nowa
Tylko zaznaczam usuń a nie wyłącz i dodaj z nowymi IDX