zmiana jednostki w ...
 
Powiadomienia
Wyczyść wszystko

Domoticz zmiana jednostki w "kafelku"

16 Wpisów
2 Użytkownicy
0 Likes
1,716 Wyświetleń
(@gonzo19)
Wpisów: 12
Bywalec
Autor tematu
 

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

 
Dodane : 07/03/2021 3:14 pm
isom
 isom
(@isom)
Wpisów: 5084
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, 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 

 
Dodane : 07/03/2021 3:23 pm
(@gonzo19)
Wpisów: 12
Bywalec
Autor tematu
 

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 🙁

 
Dodane : 07/03/2021 3:59 pm
isom
 isom
(@isom)
Wpisów: 5084
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, 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

 
Dodane : 07/03/2021 4:20 pm
(@gonzo19)
Wpisów: 12
Bywalec
Autor tematu
 
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 🙁

 
Dodane : 07/03/2021 4:22 pm
isom
 isom
(@isom)
Wpisów: 5084
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, 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

 
Dodane : 08/03/2021 12:33 pm
(@gonzo19)
Wpisów: 12
Bywalec
Autor tematu
 

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

 
Dodane : 08/03/2021 12:46 pm
isom
 isom
(@isom)
Wpisów: 5084
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, 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 

 
Dodane : 08/03/2021 12:57 pm
(@gonzo19)
Wpisów: 12
Bywalec
Autor tematu
 

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

 

 
Dodane : 08/03/2021 1:06 pm
isom
 isom
(@isom)
Wpisów: 5084
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, 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

 
Dodane : 08/03/2021 1:22 pm
(@gonzo19)
Wpisów: 12
Bywalec
Autor tematu
 

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,

 
Dodane : 08/03/2021 2:18 pm
isom
 isom
(@isom)
Wpisów: 5084
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, 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

 
Dodane : 08/03/2021 2:27 pm
(@gonzo19)
Wpisów: 12
Bywalec
Autor tematu
 

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 🙁

 
Dodane : 08/03/2021 2:34 pm
isom
 isom
(@isom)
Wpisów: 5084
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, 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
}
 
Dodane : 08/03/2021 2:57 pm
isom
 isom
(@isom)
Wpisów: 5084
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

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

 
Dodane : 08/03/2021 3:43 pm
(@gonzo19)
Wpisów: 12
Bywalec
Autor tematu
 

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 🙂

Screenshot 2022 12 17 at 10 32 38 Domoticz

 

 
Dodane : 17/12/2022 11:33 am
Udostępnij: