Zamiana wartości it...
 
Powiadomienia
Wyczyść wszystko

Zamiana wartości items - skrypt ? rules ?

3 Wpisów
2 Użytkownicy
0 Likes
1,270 Wyświetleń
(@_aro_)
Wpisów: 20
Praktykant
Autor tematu
 

Witam !

Pozdrawiam wszystkich Forumowiczów w nowym roku 🙂

Mam zainstalowanego OH normalnie w wersji 2.3 na Synology DS716+ oraz w wersji 2.4 w dockerze.

Na razie poznaję podstawy wersji 2.3 - i tu moje pytanie - Wemos d1 mini z firmwarem Tasmota przesyła mi stan kociołka gazowego z kotłowni przez mqtt - nic wielkiego - tylko stan włączony/wyłączony pobrany z diody świecącej na panelu kotła 🙂

Przesyła mi takie wartości - wyłączony kocioł - to stan niski 3, czasami 4, czasami 5, zaś kociołek włączony (pracuje) to stan wysoki - wartości zawsze powyżej 500 - czasami do 550. Jest to dla mnie czytelne - OK, dwie zupełnie różne, skrajne wartości. Te wartości idą dalej do influxdb i oczywiście grafany. I tutaj mam pewien zgrzyt - na wykresie mam odczyty kilku czujników temperatury ds18b20 w zakresie "normalnym" do 100 oC - temperatura zasilania grzejników, podłogówki, ciepłej wody - wiadomo. I tutaj właśnie wpasowują się wartości z kociołka jako 550 oC. Być może przez zupełny zbieg okoliczności to jest temperatura w kociołku (nie mam pojęcia szczerze mówiąc) ale chciałbym żeby stan pracy kotła był reprezentowany poprzez temperaturę powiedzmy 100 oC. Oczywiście on nie podgrzewa wody w obiegu do tych 100 oC, ale chodzi tylko o pokazanie ile kocioł pracuje w czasie doby.

Fragment moich .items

Number          Boiler_Room_Gas_Boiler                      "Kociołek gazowy [%.1f]"        <heating>    (Boiler_Room) {mqtt="<[broker:dom/tele/boiler_room/SENSOR:state:JSONPATH($.ANALOG.A0)]"}

Próbowałem Map Transformation Service , ale transformacja zwraca wyniki jako string i do prezentacji na wykresie się nie nadaje, próbowałem Transformation Services , ale z tego co rozumiem to tylko jest to translacji danych wejściowych z czujników itp, próbowałem Scale Transformation Service , który wydaje się że byłby idealny dla tego typu sytuacji - temperatura 0oC dla wartości poniżej 500 i 100oC dla wartości powyżej 500 ale nie dałem sobie z tym rady.

Doszedłem do momentu, gdzie należałoby chyba zrobić jakieś .rules albo skrypt i tutaj całkiem wymiękłem 🙁

Może któryś bardziej doświadczony forumowicz wesprze   😀 

 
Dodane : 23/01/2019 1:48 pm
Flaoo
(@flaoo)
Wpisów: 32
Praktykant
 

Hej,
ja zrobił bym to tak.
Utworzył bym sobie wirtualny item np "PiecGaz" i dane z niego "pchał" do influx'a

Następnie napisał rules'a

rule "Praca pieca gazowego"
when
Item Boiler_Room_Gas_Boiler changed
then
var stan = Boiler_Room_Gas_Boiler.state
if (stan < 10) {
PiecGaz.postUpdate(0) // 0 = wyłączony
}
if (stan > 400) {
PiecGaz.postUpdate(1) // 1 = włączony
}
end

Teraz przy wartości 0 i 1 w grafanie przy wykresie schodkowym ładnie zobaczysz kiedy i jak długo pracował piec.

W OH trzeba ustawić żeby dane do influx'a leciały co minutę.

Strategies {
everyMinute : "0 * * * * ?"
}

 

Czy dobre rozwiązanie? Oceń sam.

 
Dodane : 23/01/2019 7:39 pm
(@_aro_)
Wpisów: 20
Praktykant
Autor tematu
 

Działa !

Wielkie dzięki - nie trzeba mi było w internetach szukać tylko tutaj hasło rzucić  😀 

Mam w influxdb.persist

Strategies {

every30seconds : "*/30 * * * * ?"

}

bo TelePeriod w Tasmocie na 30 sekund ustawiony.

Jeszcze raz dzięki i pozdrawiam  😎 

 
Dodane : 23/01/2019 11:21 pm
Udostępnij: