Forum użytkowników automatyki budynkowej

Z-wave => Fibaro - urządzenia wirtualne, pluginy => Wątek zaczęty przez: sztywniak w Marzec 24, 2015, 09:44:39 pm

Tytuł: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki [pogoda]
Wiadomość wysłana przez: sztywniak w Marzec 24, 2015, 09:44:39 pm
Jeden z użytkowników którego dom w Głuchołazach znajduje się ok 200m od rzeki, poprosił o opracowanie rozwiązania, które pozwoliłoby mu kontrolować stan pobliskiej rzeki z poziomu inteligentnego domu.

W trakcie tworzenia rozwiązania pomyślałem o tym, że sam stan rzeki jest niewystarczający i postanowiłem dodać do tego informacje o opadach z pobliskiej stacji opadowej.

Dane pobierane są ze stacji pomiarowych IMGW.

Tak powstał moduł który mam nadzieje że nigdy nikomu się nie przyda.


(http://www.inteligentnydom.lic.pl/wp-content/uploads/2014/06/powodz-196x300.jpg)

W załączniku jest gotowe wirtualne urządzenie , które należy sobie zaimportować do centralki.

Tytuł: Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki [pogoda]
Wiadomość wysłana przez: softmax w Maj 11, 2015, 12:25:05 pm
chyba powinno być tak

fibaro:call(selfId,"setProperty","ui.Label4.value",opadg)
fibaro:call(selfId,"setProperty","ui.Label5.value",opad6)
fibaro:call(selfId,"setProperty","ui.Label6.value",opadd)

Zmienne są zamienione miejscami

Po tych zmianach działa Super

Ewentualnie jedna sugestia dałoby się zaokrąglić wynik do 2 miejsc po przecinku ??
Tytuł: Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki [pogoda]
Wiadomość wysłana przez: sztywniak w Maj 11, 2015, 01:33:48 pm
Można zaokraglic tylko ze to nie ma merytorycznego sensu.
Wartości ostrzegawcze czy alarmowe musze być na dosyć wysokim poziomie.
Masz jakieś wykorzystanie dla zwiększenia precyzji?
Tytuł: Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki [pogoda]
Wiadomość wysłana przez: andre w Maj 11, 2015, 03:29:03 pm
@sztywniak
Rysiu sens jest bo info o opadach jest pobierane z tabeli opadu godzinowego i jak opad wynosi 0,1 mm to pokazuje w wirtualce, że jest 0 czyli, że nie pada. Poza tym te skrypty są wykorzystywane do innych zadań z pobieraniem wartości  więc warto to dopieścić do 1 lub 2 miejsc po przecinku bo mnie np. z funkcją <round>to nie wychodzi.(za mała wiedza) :(
Tytuł: Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki [pogoda]
Wiadomość wysłana przez: sztywniak w Maj 11, 2015, 07:29:32 pm
Więc tak :
funkcje round macie tutaj, w różnych implementacjach co komu pasuje z dowolną dokładnością http://lua-users.org/wiki/SimpleRound

Co do merytoryki to wirtualka miała służyć do ostrzegania o powodzi i dlatego wartości są jakie są.
Standardowe burzówki na naszych ulicach mają wydajność 30mm/h czyli potrafią odebrać 30 litrów opadu na godzinę.
Wartości powodziowe i to tylko w szczególnych miejscach, to wartości powyżej nn0mm/h lub większe w mniejszej jednostce czasu.
Do tego trzeba uwzględnić dane z poprzednich godzin czy całej doby bo to się zbiera. Oczywiście każdy musi to ustalić indywidualnie dla swojej lokalizacji.

Jeżeli ktoś chciałby używać tej wirtualki do podlewania trawnika tzn pobierać że spadło bardzo mało deszczu i trzeba włączyć nawadnianie, to tylko jeżeli znajduje się bardzo blisko stacji pomiarowej. Ci co używają antistorm.eu lub oglądają  na radarach przemieszczające się nad nami chmury deszczowe, to wiedzą o czym piszę. Zaledwie 5 km od nas może spaść 300mm/10min a u nas będzie świecić słońce.(np przejście cumulonimbusa)

Jeśli ktoś chce tego używać do zamykania okien lub rolet gdy zaczyna padać deszcz, a my mamy otwarte okna, to odradzam. To ostrzeżenie jest zbyt późne. Lepszy do tego jest zwykły czujnik deszczu 12V z Alledrogo, bo poda nam sygnał w ciągu paru sekund.
Tytuł: Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki [pogoda]
Wiadomość wysłana przez: virgojavier w Lipiec 02, 2015, 09:33:09 pm
Witam, to ja jestem tym uzytkownikiem z Glucholaz:)
Cos sie ostatnio pozmienialo na tej stronce z ktorej czerpiemy dane do virtualki  i przestala dzialac.
Moja serdeczna prosba, koledzy dalibyscie rade popatrzec i pozmieniac?
Tytuł: Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki [pogoda]
Wiadomość wysłana przez: sztywniak w Lipiec 02, 2015, 10:20:20 pm
Jak się wyrobię to zerknę. ;-)
Tytuł: Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki [pogoda]
Wiadomość wysłana przez: softmax w Lipiec 03, 2015, 08:28:40 am
Jakiś czas temu coś pozmieniali w załączniku poprawiona wersja.
Tytuł: Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki [pogoda]
Wiadomość wysłana przez: virgojavier w Lipiec 03, 2015, 11:59:27 am
Coś dziwnego, mam ten skrypt:
selfId = fibaro:getSelfId()
HC2 = Net.FHttp("monitor.pogodynka.pl")
dane, status = HC2:GET("/api/station/hydro/?id=150170070")
ajson=json.decode(dane)
stan=ajson.Status.CurrentValue
waring=ajson.Status.WarningValue
alert=ajson.Status.AlarmValue
trend=ajson.Status.Trend
fibaro:call(selfId,"setProperty","ui.Label1.value",stan)
if (tonumber(stan)<tonumber(alert))
 then
        if (tonumber(stan)<tonumber(waring))
        then 
   fibaro:call(selfId,"setProperty","ui.Label2.value","stan optymalny ")
   fibaro:log("stan optymalny"..stan)
   
       else
               fibaro:call(selfId,"setProperty","ui.Label2.value","stan ostrzegawczy przekroczony")
               fibaro:log("stan ostrzegawczy przekroczony")
        end
  else
    fibaro:call(selfId,"setProperty","ui.Label2.value","stan alarmowy przekroczony")
    fibaro:log("stan alarmowy przekroczony")
  end

if (tonumber(trend) == 3) then
    fibaro:call(selfId,"setProperty","ui.Label3.value","bez zmian")

elseif (tonumber(trend) == 1) then
    fibaro:call(selfId,"setProperty","ui.Label3.value","rosnący")

elseif (tonumber(trend) == 2) then
    fibaro:call(selfId,"setProperty","ui.Label3.value","malejący")

end

HC3 = Net.FHttp("monitor.pogodynka.pl")
danem, statusm = HC3:GET("/api/station/meteo/?id=250170330")
ajsonm=json.decode(danem)
opadg=ajsonm.Status.Precip.Value
opadd=ajsonm.Status.PrecipDaily.Value
opad6=ajsonm.Status.Precip6HoursSum
fibaro:call(selfId,"setProperty","ui.Label4.value",string.format(" %g",opadg))
fibaro:call(selfId,"setProperty","ui.Label5.value",string.format(" %g",opad6))
fibaro:call(selfId,"setProperty","ui.Label6.value",string.format(" %g",opadd))



Wykłada się na SelfId:
[ERROR] 11:55:54: line getSelfId()..."]:5
Tytuł: Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki [pogoda]
Wiadomość wysłana przez: gomark w Styczeń 12, 2021, 03:56:29 pm
Czy znacie powód braku pobieranych danych danych ?
selfId = fibaro:getSelfId();
HC2 = Net.FHttp("monitor.pogodynka.pl")
dane, status = HC2:GET("/api/station/hydro/?id=152200130")
ajson=json.decode(dane)
fibaro:debug("dane:"..dane);
stan=ajson.status.currentValue
fibaro:debug("stan:"..stan);
waring=ajson.status.warningValue
alert=ajson.status.alarmValue
fibaro:debug("alert:"..alert);
trend=ajson.status.trend
fibaro:debug("trend:"..trend);
fibaro:call(selfId,"setProperty","ui.Label1.value",stan)


if (tonumber(stan)<tonumber(alert))
  then
     if (tonumber(stan)<tonumber(waring))
        then
                    fibaro:call(selfId,"setProperty","ui.Label2.value","stan optymalny")
                fibaro:log("stan optymalny "..stan)
   
        else
                fibaro:call(selfId,"setProperty","ui.Label2.value","stan ostrzegawczy przekroczony")

                fibaro:log("stan ostrzegawczy przekroczony")
 
  end
     
  else
    fibaro:call(selfId,"setProperty","ui.Label2.value","stan alarmowy przekroczony")
    fibaro:log("stan alarmowy przekroczony")
  end

if ( tonumber(trend) == 0) then
    fibaro:call(selfId,"setProperty","ui.Label3.value","bez zmian")

elseif ( tonumber(trend) > 0) then
    fibaro:call(selfId,"setProperty","ui.Label3.value","rosnący")

elseif ( tonumber(trend) < 0) then
    fibaro:call(selfId,"setProperty","ui.Label3.value","malejący")
end


HC3 = Net.FHttp("monitor.pogodynka.pl")
danem, statusm = HC3:GET("/api/station/meteo/?id=252200120")
ajsonm=json.decode(danem)
opadg=ajsonm.status.precip.value
opadd=ajsonm.status.precipDaily.value
opad6=ajsonm.status.precip6HoursSum


fibaro:call(selfId,"setProperty","ui.Label4.value",string.format(" %g ", opadg))
fibaro:call(selfId,"setProperty","ui.Label5.value",string.format(" %g ", opad6))
fibaro:call(selfId,"setProperty","ui.Label6.value",string.format(" %g ", opadd))

fibaro:setGlobal('rzekaNarew', stan)