Ostrzeganie o możliwej powodzi, wysokim stanie rzeki

  • 9 Odpowiedzi
  • 7204 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

*

Offline sztywniak

  • ***** 601
  • 23
  • Nazwa i wersja ID: HC2 3.60/ 4.37, Vera 1.7.1018
Ostrzeganie o możliwej powodzi, wysokim stanie rzeki
« dnia: 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.




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

« Ostatnia zmiana: Marzec 25, 2015, 05:46:58 pm wysłana przez sztywniak »
*

Offline softmax

  • * 15
  • 0
Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki
« Odpowiedź #1 dnia: 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 ??
*

Offline sztywniak

  • ***** 601
  • 23
  • Nazwa i wersja ID: HC2 3.60/ 4.37, Vera 1.7.1018
Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki
« Odpowiedź #2 dnia: 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?
*

Offline andre

  • Moderator Globalny
  • ***** 258
  • 3
  • Nazwa i wersja ID: HA(AIS)+HC2 4.570,GRENTON1.0+LK v2.0+BLE+RPi...
Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki
« Odpowiedź #3 dnia: 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) :(
*

Offline sztywniak

  • ***** 601
  • 23
  • Nazwa i wersja ID: HC2 3.60/ 4.37, Vera 1.7.1018
Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki
« Odpowiedź #4 dnia: 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.
« Ostatnia zmiana: Maj 11, 2015, 08:52:35 pm wysłana przez sztywniak »
*

Offline virgojavier

  • * 10
  • 0
  • Nazwa i wersja ID: Fibaro/3.8
Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki
« Odpowiedź #5 dnia: 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?
*

Offline sztywniak

  • ***** 601
  • 23
  • Nazwa i wersja ID: HC2 3.60/ 4.37, Vera 1.7.1018
Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki
« Odpowiedź #6 dnia: Lipiec 02, 2015, 10:20:20 pm »
Jak się wyrobię to zerknę. ;-)
*

Offline softmax

  • * 15
  • 0
Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki
« Odpowiedź #7 dnia: Lipiec 03, 2015, 08:28:40 am »
Jakiś czas temu coś pozmieniali w załączniku poprawiona wersja.
*

Offline virgojavier

  • * 10
  • 0
  • Nazwa i wersja ID: Fibaro/3.8
Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki
« Odpowiedź #8 dnia: 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
*

Offline gomark

  • * 4
  • 0
Odp: Ostrzeganie o możliwej powodzi, wysokim stanie rzeki
« Odpowiedź #9 dnia: 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)