UWAGA: Strona oraz Forum Smart'ny Dom nie będzie dostępne 23 Grudnia 2024 ze względu na przenoszenie serwisu na mocniejszą maszynę.
W tym czasie polecam poświęcenie swojego czasu na pomoc partnerowi w przygotowaniu udanych Świąt 😉
Za niedogodności z góry przepraszam, admin
Witam.
Chciałbym zamienić jednostki w jednym z kafelków.
dokładnie ten kafelek
Ewentualnie inny, ale o takiej samej funkcjonalności.
potrzebuje zmienić jednostki kWh i Watt na inne.
Kombinuje jak koń pod górę, ale niestety nie daje rady.
Czy moglibyście pomóc lub chociaż nakierować gdzie szukać.
Pozdrawiam
Dobra to zacznę od nakierowania , wystrczy skrypt np dzVents , który będzie sprawdzał aktualny stan "Moc czynna " i na podstawie tych odczytów aktualizował wirtualny czujnik nazwany dowolnie do odczytanej wartości ale z wybraną jednostką . Można też zmieniać jednostki np W na kW dodając proste działania matematyczne . Patrz dział domoticz na tym forum. Jak nie dasz sobie rady to napisz na jakie jednostki chcesz zmienić a zobaczę czy umiem Ci pomóc
taki skrypt to już jest ......./domoticz/dzVents/runtime/device-adapters/kwh_device.lua, (Linux) problem w tym, że nie mam pojęcia jak zmienić jednostki np. W->var, kWh->kvar. zmiana w samym skrypcie nic nie daje, to jest gdzieś głębiej.
"custom sensor" częściowo załatwia sprawę, ale nie ma tej funkcjonalności. Jest jeszcze "licznik" i tam sa do wyboru gaz, woda w m3 i inne, ale żaden nie działa tak jak bym chciał.
Nie potrafię pisać skryptów ani .lua, ani dzVents 🙁
To zachęcam do sprawdzenia wiki dzVents , albo do odwiedzenia wątku o liczniku wody na tym forum . Konwersja litrów na m3 jest podobna do W na kW lub odwrotnie
albo do odwiedzenia wątku o liczniku wody na tym forum
O, i to jest coś 🙂 szukam tego wątku, może tam coś znajdę 🙂
edit:
znalazłem, ale to nie to. Tam są przeliczniki, tworzenie dziwnych rzeczy(nie rozumiem tego).
Ja mam już dokładny odczyt z licznika wartości, wysłane do brokera MQTT i domoticz to czyta jedynie chciałem inne jednostki aby było bardziej czytelne. pewnie bez głębszego grzebania w domoticzu się nie da. Dla mnie za trudne 🙁
@gonzo19 napisanie dla Ciebie gotowca nie stanowi problemu , tyle że to niczego Cię nie nauczy , w temacie licznika masz działania matematyczne które pomagają zrozumieć jak zmienić jedną jednostkę w drugą np skrypt który zmienia cm na % wygląda dość prosto
a powiem że jest bardziej złożony bo uwzględnia wysokość zbiornika
local pct_sensor = 'Czujnik procent' -- nazwa wirtualnego czujnika procent local dyst_sensor = 'Czujnik dystans' -- nazwa czujnika odleglosci local tank_height = 100 -- wysokosc zbiornika return { on = { devices = {depth_sensor} }, execute = function(dz, device) local depthdev = dz.devices(dyst_sensor) local pctdev = dz.devices(pct_sensor) local depth = depthdev.state -- Obliczenia procenty local pct = dz.utils.round((tank_height - depth) / tank_height * 100 ,1) dz.log('Tank update to ' .. pct.. '% ' , dz.LOG_INFO) pctdev.updatePercentage(pct) end }
Teraz wystarczy analiza co się tu robi
Mamy zdeklarowane dwa czujniki i zbiornik o wysokości 100 cm , na podstawie odczytów czujnika odległości dostajemy wartość w cm , musimy to jakoś przełożyć na procenty , czyli przy każdym odczycie tych cm odejmujemy od wysokości zbiornika tą wartość i wynik dzielimy przez wysokość zbiornika razy 100 bo mamy do czynienia z procentami.
Po tym działaniu aktualizowany jest czujnik % do wartości otrzymanej z działania matematycznego
Ty masz łatwiej bo wystarczy np podzielić przez 1000 twoje wskazania żeby uzyskać zamiast W - kW no bo 1000W to 1 kW
Ja to widziałem, ale wiele mi to nie pomaga. Niestety na takim poziomie programowania jestem zielony.
tutaj(link poniżej) jest gotowy skrypt i działa on idealnie tak jak chcę, tylko wizualnie nie pasują mi te kWh, Wh, W itp. Nie mam pojęcia jak dodać ten skrypt do domoticza (zaimplementować). Sama zmiana tych W na np. var i zapisanie skryptu pod inna nazwą nic nie daje. Dopisanie nazwy ze skryptu "name = 'kvarh device adapter',
" w /home/pi/domoticz/dzVents/runtime/device-adapters/Adapters.lua tez nic nie daje, nawet jakby bzdury miał pokazywać. Tak, wiem, kombinuję, ale z moja wiedzą na razie tyle mi zostało.
ten skrypt już jest w domoticzu, ale chciałem taki sam jako drugi z innym jednostakami
Nie możesz sobie dowolnie zmieniać jednostek , nie uwzględniając typu czujnika , który ma je wyświetlać . W domoticz i nie tylko w nim każdy czujnik ma zdeklarowane jednostki które akceptuje i np nie zapiszesz cm w czujniku procentowym czy prądu w A w czujniku V napięcia .
Piszesz o jednostce var a co to jest ? Bo tego nawet ja nie wiem a wydaje mi się że trochę wiem
Tak myślałem, ze się nie da ot tak. Dlatego chciałem dodać nowy czujnik z nowymi jednostkami.
dopisanie nowej linii w /home/pi/domoticz/www/app/devices/deviceFactory.js np.
else if (this.Type === 'General' && this.SubType === 'kvar') { return 'kvar';
tez nic nie daje. Chyba to odpuszczę, szkoda czasu.
var - jednostka mocy biernej
Sorki ale nie widzę sensu w mieszaniu typów urządzeń obsługiwanych przez domoticz , on ma już zaimplementowaną obsługę większości , wystarczy zamiast mieszać w app/devices , po prostu dopisać skrypt w zdarzeniach
A jak masz nietypową jednostkę która mimo wszystko chcesz mieć w domoticz zawsze można do tego użyć Custom sensor czyli czujnik który toleruje wszystko
no dobrze, prawie sie zgadzam, tak w 99% z Tobą, zostawmy to w spokoju 🙂
Jeśli byłbyś tak uprzejmy, to podpowiedziałbyś jak uruchomić skrypt zapisany w events jako dzVents - device
Nie ważne czy zadziała, tylko jak go uruchomić
ok, sam się uruchamia,
@gonzo19 oczywiście że mogę Ci w tym pomóc , zmień myDevices na realne urządzenie w Twoim systemie a reszta stanie się sama .
Dokładnie będzie tak że jak zmienisz stan np przełącznika nazwijmy go światło i zamiast myDevices wpiszesz właśnie światło to każda zmiana tego światła zostnaie odnotowana w logach i nic więcej się nie stanie bo ten skrypt nic więcej nie robi
no i mam problem, bo nie wiem co autor miał na myśli z "my device", czy chodzi o moja nazwę kafelka np. "test" czy o co innego?
Pomóż, zrobię jedno dla przykładu, to będzie łatwiej z innymi.
edytowałeś, nie widziałem, już wiem. Ten skrypt to jest taki z automatu, wiem, ze nic nie robi
wałczę dalej, dam znać do czego doszedłem, najgorsze, ze połowy nie rozumiem 🙁
@gonzo19 dobra to zacznijmy od podstaw , nazwałes swój przełącznik np "Kocham to forum" i to jest twoje myDevice , czyli zmieniasz w skrypcie myDevice na Kocham to forum i wtedy każda zmiana przełącznika Kocham to forum będzie zapisana w logach .
Jeżeli teraz zmienisz skrypt tak żeby Kocham to forum włączało światło w salonie to nie ważne jak to się nazywa ale światło się włączy . jak chcesz to zaraz wkleję tu skrypt który to zrobi
zobacz zrobiłem sobie przycisk który się nazywa "Kocham to forum i mam przekaźnik Lampa Salon , jak zmienię stan przycisku to przełączę stan lampy
return { on = { devices = {'Kocham to forum'} }, logging = { level = domoticz.LOG_DEBUG, marker = 'Kocham to forum ', }, execute = function(domoticz, device) local lamp1 = domoticz.devices('Lampa Salon') if (device.state == 'On' ) then lamp1.toggleSwitch() end end }
Witam. Trochę późno, ale kafelki ogarnąłem 🙂 To znaczy poszedłem na kompromis. Nie da się zmienić jednostki z Watt na np. Var
więc w opisie sobie dopisałem 🙂