Forum użytkowników automatyki budynkowej

Z-wave => Fibaro - urządzenia wirtualne, pluginy => Wątek zaczęty przez: marecki_0luk1 w Marzec 31, 2015, 09:50:56 pm

Tytuł: Battery check [narzędzia HC2]
Wiadomość wysłana przez: marecki_0luk1 w Marzec 31, 2015, 09:50:56 pm
W załączeniu urządzenie wirtualne weryfikujące stan bateterii. Urządzenie powiadamia nas Pushem (iOS) o niskim poziomie baterii. Weryfikuje jedynie urządzenia nadrzędne, więc dla MotionSensora będzie to jedno powiadomienie a nie 3.

1) Wymagane jedynie stworzenie zmiennej globalnej Phone_M_ID z ID telefonu, który ma być powiadomiony o niskim stanie baterii.

Dodatkowo zamieszczam kod, gdyby ktoś chciał wykorzystać w scenie.

-- ustaw poziom informowania o stanie baterii
battery_level_notify = 10; 
-- pobierz tel, który należy poinformować
notify_phone = fibaro:getGlobalValue("Phone_M_ID");


-- pobierz dane o urzadzeniach z HC2
HC2 = Net.FHttp("127.0.0.1", 11111);
response ,status, errorCode = HC2:GET("/api/devices/")

if (tonumber(status) == 200) then
jsonTable = json.decode(response);
  for key,value in pairs(jsonTable) do   
    -- wybierz urzadzenia nadrzedne i takie ktore moga posiadac atrybut battery
    if jsonTable[key].interfaces ~= nil and tonumber(jsonTable[key].parentId) == 1 then
    interfaceTable = jsonTable[key].interfaces;       
    for ikey, ivalue in pairs(interfaceTable) do
        propertiesTable = jsonTable[key].properties;     
        -- weryfikacja czy urządzenie jest bateryjne
      if interfaceTable[ikey] == "battery" then
          notifier = jsonTable[key].name .. " - battery level: " .. jsonTable[key].properties.batteryLevel;
          fibaro:debug(notifier);
          if tonumber(jsonTable[key].properties.batteryLevel) < battery_level_notify then
            notifier = "Warning - " .. notifier;
            fibaro:log(notifier);
            fibaro:call(tonumber(notify_phone), "sendPush", notifier);
            end;
          end;
    end;
      end;
  end;
end;
Tytuł: Odp: Battery check [narzędzia HC2]
Wiadomość wysłana przez: iBambusek w Grudzień 24, 2016, 01:40:42 am
Skopiowałem wszytsko co tu podałes, nawet ikonke zaimportowałem. W zmienych utowrzylem co podales, ale po naduszeniu przycisku na wirtualnym urzadzeniu nic sie nie dzieje i dodatkowo znika ikonka baterii:)
Tytuł: Odp: Battery check [narzędzia HC2]
Wiadomość wysłana przez: confesor w Luty 16, 2017, 01:58:39 am
witam - nie dochodza mi powiadomienia push - zastanawiam sie - moze zle id telefonu podaje w zmiennej globalnej ( czy to chodzi o numer urzadzenia czy nazwe ktora moge znalezc w opcjach przydzielanych uprawnien??)
Tytuł: Odp: Battery check [narzędzia HC2]
Wiadomość wysłana przez: marecki_0luk1 w Luty 22, 2017, 04:13:18 pm
wrzuc co wypluwa debug
Tytuł: Odp: Battery check [narzędzia HC2]
Wiadomość wysłana przez: amis w Listopad 13, 2017, 02:51:23 pm
Cześć,
jestem w tym trochę zielony ...
u mnie też nic się nie dzieje.
w scenie debug pisze:
"[DEBUG] 14:49:33: line 14: attempt to index global 'Net' (a nil value)"
natomiast w urządzeniu wirtualnym debug wypisuje urządzenia, ale nie przychodzi powiadomienie
Prośba o info.
Pozdr.
Tytuł: Odp: Battery check [narzędzia HC2]
Wiadomość wysłana przez: tom3sko w Listopad 20, 2017, 08:26:41 pm
nie przychodzi ci powiadomienie gdyż nie masz slabszej bateri niż 10 %.
W pierwszej linijce zwiększ minimalny poziom bateri na np 98 i zobaczysz ile Ci przyjdzie powiadomień.
Tytuł: Odp: Battery check [narzędzia HC2]
Wiadomość wysłana przez: bsmart w Listopad 21, 2017, 10:13:00 pm
Witam,
a skąd wziąć ID telefonu i jak wpisać do zmiennej oraz czy zadziała to na androidzie?
notify_phone = fibaro:getGlobalValue("Phone_M_ID");

i kolejne pytanie, skąd wziąć dane połączenia Net.FHttp?
-- pobierz dane o urzadzeniach z HC2
HC2 = Net.FHttp("127.0.0.1", 11111);

z góry dzięki za info.
Tytuł: Odp: Battery check
Wiadomość wysłana przez: tom3sko w Listopad 22, 2017, 08:58:33 am
Najprostszą metodą poznania kodu bądź niektórych danych jak w twoim przypadku jest stworzenie sceny bloczkowej, zapisanie jej a potem przeksztalcenie w scenę LUA.
Zrób scenę chwilowa np opartą na jakimś interwale
Następnie z dalszej akcji wybierz "To"
Potem użyj powiadomienia i wybierz z listy swój telefon.
Zapisz scene, przełącz ją w tryb edycji i podejzyj swoje ID.

Oczywiście że dziala na androidzie.
Wartości do pobrania danych nie zmieniasz.
Tytuł: Odp: Battery check [narzędzia HC2]
Wiadomość wysłana przez: bsmart w Listopad 23, 2017, 12:10:43 am
a jak dokładnie ma wyglądać ta zmienna jeśli w kodzie lua mam fibaro:call(7, "sendDefinedPushNotification", "302")?
Tytuł: Odp: Battery check
Wiadomość wysłana przez: tom3sko w Listopad 23, 2017, 01:25:37 pm
7 to ID telefonu
302 to wiadomość która utwozyles w panelu powiadomień.
Ciebie interesuje tylko ID które musisz wpisać w panelu zmiennych w utworzonej przez Ciebie zniennej Phone_M_ID
Tytuł: Odp: Battery check [narzędzia HC2]
Wiadomość wysłana przez: bsmart w Listopad 24, 2017, 12:31:39 am
A czy ta część kodu powinna pozostać bez zmian?

-- pobierz dane o urzadzeniach z HC2
HC2 = Net.FHttp("127.0.0.1", 11111);
Tytuł: Odp: Battery check [narzędzia HC2]
Wiadomość wysłana przez: kvothe w Listopad 25, 2017, 10:44:38 am
Działa :) świetne i przydatne urządzenie virtualne.

Próbowałem trochę to przerobić aby HC2 wysyłał powiadomienie "Wszystkie baterie OK"  w przypadku gdy stan baterii wszystkich urządzeń jest wyższy niż założony w zmiennej, ale niestety wymiękłem, za cienki jestem w tym.

Ale może kiedyś znajdzie się ktoś, komu się to uda i będzie miał chęci:)
Tytuł: Odp: Battery check [narzędzia HC2]
Wiadomość wysłana przez: bsmart w Grudzień 01, 2017, 12:07:30 am
A czy jest opcja aby stworzyć podobny kod do sprawdzania sterowników rolet a dokładniej poziomu ich zamknięcia?
Tytuł: Odp: Battery check [narzędzia HC2]
Wiadomość wysłana przez: bsmart w Grudzień 19, 2017, 11:02:49 pm
Ponawiam zapytanie ;)

A czy jest opcja aby stworzyć podobny kod do sprawdzania sterowników rolet a dokładniej poziomu ich zamknięcia?
Tytuł: Odp: Battery check [narzędzia HC2]
Wiadomość wysłana przez: viperlodz w Grudzień 20, 2017, 08:43:06 am
Ponawiam zapytanie ;)

A czy jest opcja aby stworzyć podobny kod do sprawdzania sterowników rolet a dokładniej poziomu ich zamknięcia?
Tak
Tytuł: Odp: Battery check [narzędzia HC2]
Wiadomość wysłana przez: bsmart w Grudzień 20, 2017, 10:48:04 pm
W takim razie posiada ktoś gotowe urządzenie wirtualne do sprawdzania stanu innych urządzeń np typu roleta?
Tytuł: Odp: Battery check [narzędzia HC2]
Wiadomość wysłana przez: marecki_0luk1 w Styczeń 18, 2018, 06:18:36 pm
mozesz sobie przerobic - to sluzy do zamykania rolet niezaleznie od tego jakie maja ID.
--[[
%% properties
%% globals
--]]
function f_MyDebug(ip_message, ip_color, ip_date)
if ip_date then
ip_message = '[' .. os.date('%Y-%m-%d') .. '] ' .. ip_message;
end;
  if ip_color == nil then
    ip_color = 'yellow';
    end;
fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', 'span', ip_color, ip_message, 'span'));
end;


local lvs_alertColor = 'red';
local lvs_okColor = 'green';
local lvs_confColor = 'white';
local lvs_triggerType = fibaro:getSourceTriggerType();
local lvt_trigger = fibaro:getSourceTrigger();

local lva_Blinds = fibaro:getDevicesId({baseType = 'com.fibaro.FGR221'});

f_MyDebug('-- Roller Shutter Close Scene --', 'green', true);

for i = 1, # lva_Blinds do
f_MyDebug('Zamykam roletę [ID:'..lva_Blinds[i] .. ']['
    .. fibaro:getRoomName(fibaro:getRoomID(lva_Blinds[i])) .. ']['
    .. fibaro:getName(lva_Blinds[i]) ..']', lvs_confColor);
    fibaro:call(lva_Blinds[i], 'close');
  fibaro:sleep(100);
end;

Zaden problem zeby zamiast fibaro:call(xxx, 'close'); zrobic w tym miejscu powiadomienie, debug cokolwiek