zmiana jednostki w ...
 
Powiadomienia
Wyczyść wszystko

Domoticz zmiana jednostki w "kafelku"

Gonzo19
(@gonzo19)
Młodzik

Witam.

Chciałbym zamienić jednostki w jednym z kafelków.

dokładnie ten kafelek

obraz
obraz
obraz

 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

Cytuj
Autor tematu Dodane : 07/03/2021 2:14 pm
isom
 isom
(@isom)
Prezes Moderator Zasłużony dla Forum, Donator 2019, Donator 2K20

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 

OdpowiedzCytuj
Dodane : 07/03/2021 2:23 pm
Gonzo19
(@gonzo19)
Młodzik

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 🙁

OdpowiedzCytuj
Autor tematu Dodane : 07/03/2021 2:59 pm
isom
 isom
(@isom)
Prezes Moderator Zasłużony dla Forum, Donator 2019, Donator 2K20

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

OdpowiedzCytuj
Dodane : 07/03/2021 3:20 pm
Gonzo19
(@gonzo19)
Młodzik
Dodane przez: @isom

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 🙁

OdpowiedzCytuj
Autor tematu Dodane : 07/03/2021 3:22 pm
isom
 isom
(@isom)
Prezes Moderator Zasłużony dla Forum, Donator 2019, Donator 2K20

@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

OdpowiedzCytuj
Dodane : 08/03/2021 11:33 am
Gonzo19
(@gonzo19)
Młodzik

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.

https://depot.ami.usherbrooke.ca/AmI_Group_Zaid__Clones/Clone___Domoticz/blob/c3574f74b0107107d8d8200204c64c7dd4359218/dzVents/runtime/device-adapters/kwh_device.lua

 

ten skrypt już jest w domoticzu, ale chciałem taki sam jako drugi z innym jednostakami

OdpowiedzCytuj
Autor tematu Dodane : 08/03/2021 11:46 am
isom
 isom
(@isom)
Prezes Moderator Zasłużony dla Forum, Donator 2019, Donator 2K20

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 

OdpowiedzCytuj
Dodane : 08/03/2021 11:57 am
Gonzo19
(@gonzo19)
Młodzik

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

 

OdpowiedzCytuj
Autor tematu Dodane : 08/03/2021 12:06 pm
isom
 isom
(@isom)
Prezes Moderator Zasłużony dla Forum, Donator 2019, Donator 2K20

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

OdpowiedzCytuj
Dodane : 08/03/2021 12:22 pm
Gonzo19
(@gonzo19)
Młodzik

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

obraz

 

Nie ważne czy zadziała, tylko jak go uruchomić

 

ok, sam się uruchamia,

OdpowiedzCytuj
Autor tematu Dodane : 08/03/2021 1:18 pm
isom
 isom
(@isom)
Prezes Moderator Zasłużony dla Forum, Donator 2019, Donator 2K20

@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

OdpowiedzCytuj
Dodane : 08/03/2021 1:27 pm
Gonzo19
(@gonzo19)
Młodzik

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 🙁

OdpowiedzCytuj
Autor tematu Dodane : 08/03/2021 1:34 pm
isom
 isom
(@isom)
Prezes Moderator Zasłużony dla Forum, Donator 2019, Donator 2K20

@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
}
OdpowiedzCytuj
Dodane : 08/03/2021 1:57 pm
isom
 isom
(@isom)
Prezes Moderator Zasłużony dla Forum, Donator 2019, Donator 2K20

@gonzo19 coś się wyjaśniło czy dalej pomroczność ? 

OdpowiedzCytuj
Dodane : 08/03/2021 2:43 pm
Udostępnij: