Asystent AI
Kolejna prośba o ws...
 
Powiadomienia
Wyczyść wszystko

Domoticz Kolejna prośba o wsparcie przy skryptach Blockly i DzVents

25 Wpisów
3 Użytkownicy
0 Reactions
3,994 Wyświetleń
isom
 isom
(@isom)
Wpisów: 5319
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@piotras78 w blockly nie użyjesz wartości Rain- suma opadów , możesz natomiast użyć wartość rate - bieżący opad czyli ta wartość z mm/h . 

Żeby użyć wartości suma opadów trzeba ją najpierw pobrać np co godzinę i dopiero na tej podstawie można aktualizować inny przełącznik w domoticz 

Dodatkowo suma opadów mniejsza niż 1 mm nie zostanie wyświetlona w miejscu, które zaznaczyłeś , dopiero przy wartości 1mm i > będzie widoczna ta wartość.

Nie wiem do czego chcesz używać tego parametru i jak działa twój czujnik opadów więc trudno jest coś doradzić - pomóc 


 
Dodane : 14/06/2021 2:06 pm
(@piotras78)
Wpisów: 50
Kontrybutor
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Czujnik działa z dokładnością do jednej dziesiątej.

Potrzebuje sumę dobowych opadów do sterowania podlewaniem trawnika.

Zrobiłem sobie z forum prognozę opadów na kolejne dni i zamysł jest taki że jezeli w dniu poprzednim spadnie poniżej 0.8 i prognoza na następny dzień jest tez poniżej 0.8 to ma podlać trawnik a jezeli spadło powyżej to ma nie podlewac.

Wartość rate nie jest mi kompletnie potrzebna bo pokazuje tylko chwilowo przy opadach ile spadło na m2


 
Dodane : 14/06/2021 5:01 pm
(@piotras78)
Wpisów: 50
Kontrybutor
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@isom Czy możesz mi podpowiedzieć jak napisać taką aktualizację innego czujnika o dane z opadów dobowych.

Próbowałem cos takiego ale nie działa:

return {
on = {
['timer'] = {'every 1 minutes'}
},
logging = { level = domoticz.LOG_ERROR, 
marker = "deszcz..24h" },
execute = function(dz)

local temp = dz.devices('Waldbeck Halley - Rain').rain

dz.devices('xxx').updateRain(temp, dz.temp_NOINFO)

end
}


 
Dodane : 16/06/2021 10:20 pm
isom
 isom
(@isom)
Wpisów: 5319
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@piotras78 dane z czujnika są zapisywane w bazie i można je wyciągnąć za pomocą poleceń json 

/json.htm?type=graph&sensor=rain&idx=IDX&range=day
/json.htm?type=graph&sensor=rain&idx=IDX&range=week
/json.htm?type=graph&sensor=rain&idx=IDX&range=month
/json.htm?type=graph&sensor=rain&idx=IDX&range=year

Odpowiednio dla dnia, tygodnia itd

Nie mam podobnego czujnika ani stacji pogodowej , ale w sieci jest dość prosty skrypt , który pobiera dane z wartości range=month i jeśli ta wartość jest mniejsza od ustawionego progu ( minAmount - w skrypcie ) załącza na godzinę przełącznik (waterPump - w skrypcie ).

Dodatkowo jest parametr daysToEvaluate - ustala z ilu dni mają być pobrane dane do porównania z wartością minAmount .

Myślę że to dobra baza żeby zbudować coś co będzie dla ciebie użyteczne , może po prostu zmienić końcówkę skryptu i ustawić włącz jak mniej a wyłącz jak więcej opadu od ustalonego progu .

Zaznaczam że skrypt nie był testowany w moim środowisku bo nie mam na czym i nie potrzebuję

local scriptVar = 'water the plants'

return
{
    on =
    {
        timer =
        {
            'at 04:00', -- change to the time you want to check the amount of rain in the set number of days
        },

        httpResponses =
        {
           scriptVar,
        },
    },

    logging =
    {
        level = domoticz.LOG_DEBUG, -- change to domoticz.LOG_ERROR when script works as expected
        marker = scriptVar,
    },

    execute = function(dz, item)

        local minAmount = 1 -- in mm rain
        local daysToEvaluate = 3 -- in days

        local rainDevice = dz.devices('myRain') -- name enclosed in quotes or number without quotes
        local waterPump = dz.devices('Beregening')

        if item.isDevice or item.isTimer then
            dz.openURL(
            {
                url = dz.settings['Domoticz url'] .. '/json.htm?type=graph&sensor=rain&idx=' .. rainDevice.idx .. '&range=month',
                callback = scriptVar,
            })
            return
        end

        local function getmm(rt)
            local startDate = (dz.time.addMinutes(-1 * daysToEvaluate * 24 * 60)).rawDate
            local mm = 0
            dz.log('startDate: ' .. startDate, dz.LOG_DEBUG)
            for index, record in ipairs(rt) do
                if record.d > startDate then
                    mm = mm + record.mm
                end
            end
            return mm
        end

        if item.ok and item.isJSON then
            local mmRain = getmm(item.json.result, days )
            if mmRain < minAmount then

                waterPump.cancelQueuedCommands()
                waterPump.switchOn()
                waterPump.switchOff().afterSec(3600)
                dz.log('Not enough rain in the last ' .. daysToEvaluate .. ' days (' .. mmRain .. ' mm). Switching waterpump on for 1 hour', dz.LOG_DEBUG)
            else
                dz.log('Enough rain in the last ' .. daysToEvaluate .. ' days (' .. mmRain .. 'mm). No need to turn on waterpump.', dz.LOG_DEBUG)
            end
        else
            dz.log('No valid response from domoticz ',dz.LOG_ERROR)
            dz.log(item,dz.LOG_ERROR)
        end
    end
}

 
Dodane : 17/06/2021 9:58 am
(@piotras78)
Wpisów: 50
Kontrybutor
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@isom Ok - dzięki. Potestuje i zobaczę co z tego wyjdzie.

W tej chwili mam już ustawione podlewanie zależne od temperatury, nasłonecznienia, wilgotności i prognozowanych opadów - w chwili obecnej jest w fazie testów ale działa całkiem ok


 
Dodane : 17/06/2021 2:03 pm
Strona 2 / 2
Udostępnij: