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

Zamiana wartości items - skrypt ? rules ?

3 Wpisów
2 Użytkownicy
0 Reactions
1,826 Wyświetleń
(@_aro_)
Wpisów: 20
Praktykant
Autor tematu
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
 
[#713]

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
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
 

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
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
 

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: