obecność w domu

  • 14 Odpowiedzi
  • 10403 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

*

Offline Akronaut

  • ** 71
  • 1
  • Nazwa i wersja ID: HC 2 +HCL, 4.580
obecność w domu
« dnia: Kwiecień 27, 2015, 08:09:47 am »
Mam uruchomione sprawdzanie obecności w domu na podstawie zalogowania do sieci wifi. Na tej podstawie ustawiana jest zmienna, która odpala sceny.
Zauważyłem, że w ciągu dnia telefon jest wylogowywany i w ciągu minuty ponownie logowany. To wystarcza do np. opuszczenia rolet.
Czy możecie pomóc w przygotowaniu sceny, która sprawdza logowanie i w przypadku wylogowania sprawdza ponownie za 2 minuty.
Jeżeli drugie sprawdzenie nie wykryje zalogowania dopiero wówczas scena zmienia wartość zmiennej.
Fibaro HC2 v 4.580 + HCL v 4.580   13*RS2   6*roleta dachowa Fakro  14*MS   4*DW sensor   9*Dimmer 2   14*Switch  2*1,5kW    2*Button   3*Wall Plug    1*SmokeSensor    2*UBS   1*Keyfob   2*elektrozawór  1*czujnik deszczu   1*GERDALOCK    4*IP kamera   329 scen   68 zmienne  12*VD   3*Android Phone
*

Offline marecki_0luk1

  • Administratorzy
  • ***** 430
  • 26
  • Nazwa i wersja ID: HC3 5.070.42 / HC2 4.600
Odp: obecność w domu
« Odpowiedź #1 dnia: Kwiecień 27, 2015, 10:09:46 am »
Zrób sprawdzenie w pętli ze sleepem :)
*

Offline Akronaut

  • ** 71
  • 1
  • Nazwa i wersja ID: HC 2 +HCL, 4.580
Odp: obecność w domu
« Odpowiedź #2 dnia: Kwiecień 27, 2015, 10:26:13 am »
Kolego ja jestem inżynierem ale od budownictwa  ;D.
Może i potrafię to zrobić ale Twój opis mi nic nie mówi.
Możesz bardziej przystępnym językiem to opisać .... ;)
Fibaro HC2 v 4.580 + HCL v 4.580   13*RS2   6*roleta dachowa Fakro  14*MS   4*DW sensor   9*Dimmer 2   14*Switch  2*1,5kW    2*Button   3*Wall Plug    1*SmokeSensor    2*UBS   1*Keyfob   2*elektrozawór  1*czujnik deszczu   1*GERDALOCK    4*IP kamera   329 scen   68 zmienne  12*VD   3*Android Phone
*

Offline marecki_0luk1

  • Administratorzy
  • ***** 430
  • 26
  • Nazwa i wersja ID: HC3 5.070.42 / HC2 4.600
Odp: obecność w domu
« Odpowiedź #3 dnia: Kwiecień 27, 2015, 11:04:14 am »
Wklej to co masz - poprawię Ci.
*

Offline Akronaut

  • ** 71
  • 1
  • Nazwa i wersja ID: HC 2 +HCL, 4.580
Odp: obecność w domu
« Odpowiedź #4 dnia: Kwiecień 27, 2015, 11:27:02 am »
co minutę scena poniżej

--[[
%% autostart
%% properties
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( (tonumber(os.date("%H%M")) >= tonumber(string.format("%02d%02d", "00", "00")) and tonumber(os.date("%H%M")) <= tonumber(string.format("%02d%02d", "23", "59"))) and (math.floor(os.time()/60)-math.floor(1422831600/60))%1 == 0 )
)
then
   fibaro:call(460, "pressButton", "1");
   fibaro:call(461, "pressButton", "1");
   fibaro:call(462, "pressButton", "1");
   fibaro:call(463, "pressButton", "1");
end

setTimeout(tempFunc, 20*1000)
end
if (sourceTrigger["type"] == "autostart") then
tempFunc()
else

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
startSource["type"] == "other"
)
then
   fibaro:call(460, "pressButton", "1");
   fibaro:call(461, "pressButton", "1");
   fibaro:call(462, "pressButton", "1");
   fibaro:call(463, "pressButton", "1");
end

end
if (sourceTrigger["type"] == "other") then
    fibaro:call(460, "pressButton", "1");
   fibaro:call(461, "pressButton", "1");
   fibaro:call(462, "pressButton", "1");
   fibaro:call(463, "pressButton", "1");
end 

uruchamia urządzenie wirtualne

tcpSocket = Net.FTcpSocket("192.168.1.12", 32001)
bytes, errorCode = tcpSocket:write("test")

if errorCode == 0
then
fibaro:setGlobal("WiFi_Mariusz_WP", "1"); 
fibaro:log("Mariusz w domu"); 
else
fibaro:setGlobal("WiFi_Mariusz_WP", fibaro:getGlobal("WiFi_Mariusz_WP") - 1);
fibaro:log("Mariusz poza domem");
end

które ustawia zmienną (mam 4 takie urządzenia dla 4 zmiennych)
Fibaro HC2 v 4.580 + HCL v 4.580   13*RS2   6*roleta dachowa Fakro  14*MS   4*DW sensor   9*Dimmer 2   14*Switch  2*1,5kW    2*Button   3*Wall Plug    1*SmokeSensor    2*UBS   1*Keyfob   2*elektrozawór  1*czujnik deszczu   1*GERDALOCK    4*IP kamera   329 scen   68 zmienne  12*VD   3*Android Phone
*

Offline marecki_0luk1

  • Administratorzy
  • ***** 430
  • 26
  • Nazwa i wersja ID: HC3 5.070.42 / HC2 4.600
Odp: obecność w domu
« Odpowiedź #5 dnia: Kwiecień 27, 2015, 12:29:55 pm »
Można to ładniej zrobić, ale zadziała a na tyle mam czas :)

fibaro:debug("Start looking for phone");

local lvs_GlobalName = "WiFi_Mariusz_WP";
local lvs_Phone_IP = "192.168.XX.XXX";
local lvn_Phone_PORT = YY;
local lvb_IsPhoneOnline = false;
local lvb_TryAgain = true;
local lvn_Iterator = 1;

while lvb_TryAgain do   
fibaro:debug("Try number: " .. lvn_Iterator); 
tcpSocket = Net.FTcpSocket(lvs_Phone_IP, lvn_Phone_PORT)
bytes, errorCode = tcpSocket:write("test")

  fibaro:debug("ERROR CODE: " .. errorCode);
 
if errorCode == 0 then
lvb_IsPhoneOnline = true;
    lvb_TryAgain = false;
else
            if lvn_Iterator == 3 then
    lvb_TryAgain = false;
      lvb_IsPhoneOnline = false;
      else
fibaro:sleep(1000*60);
    end;
    lvn_Iterator = lvn_Iterator + 1;
end; 
end;

if lvb_IsPhoneOnline then
fibaro:setGlobal(lvs_GlobalName, "1");
fibaro:log("Phone founded [" .. tostring(lvb_IsPhoneOnline) .. "]");
else
fibaro:setGlobal(lvs_GlobalName, "0");
fibaro:log("Phone founded [" .. tostring(lvb_IsPhoneOnline) .. "]");
end; 

fibaro:debug("--- Script finnished ---");
« Ostatnia zmiana: Kwiecień 27, 2015, 01:29:32 pm wysłana przez marecki_0luk1 »
*

Offline Akronaut

  • ** 71
  • 1
  • Nazwa i wersja ID: HC 2 +HCL, 4.580
Odp: obecność w domu
« Odpowiedź #6 dnia: Kwiecień 27, 2015, 01:53:21 pm »
dziękuję
po powrocie do domu sprawdzę
Fibaro HC2 v 4.580 + HCL v 4.580   13*RS2   6*roleta dachowa Fakro  14*MS   4*DW sensor   9*Dimmer 2   14*Switch  2*1,5kW    2*Button   3*Wall Plug    1*SmokeSensor    2*UBS   1*Keyfob   2*elektrozawór  1*czujnik deszczu   1*GERDALOCK    4*IP kamera   329 scen   68 zmienne  12*VD   3*Android Phone
*

Offline Akronaut

  • ** 71
  • 1
  • Nazwa i wersja ID: HC 2 +HCL, 4.580
Odp: obecność w domu
« Odpowiedź #7 dnia: Kwiecień 27, 2015, 02:35:30 pm »
wpisałem szukane IP, numer portu i zmienną i w linii 11 mam komunikat:
[DEBUG] 15:35:00: Start looking for phone
[DEBUG] 15:35:00: Try number: 1
[ERROR] 15:35:00: line 12: attempt to index global 'Net' (a nil value)

pewnie to proste i macie ze mnie ubaw ;)
Fibaro HC2 v 4.580 + HCL v 4.580   13*RS2   6*roleta dachowa Fakro  14*MS   4*DW sensor   9*Dimmer 2   14*Switch  2*1,5kW    2*Button   3*Wall Plug    1*SmokeSensor    2*UBS   1*Keyfob   2*elektrozawór  1*czujnik deszczu   1*GERDALOCK    4*IP kamera   329 scen   68 zmienne  12*VD   3*Android Phone
*

Offline marecki_0luk1

  • Administratorzy
  • ***** 430
  • 26
  • Nazwa i wersja ID: HC3 5.070.42 / HC2 4.600
Odp: obecność w domu
« Odpowiedź #8 dnia: Kwiecień 27, 2015, 09:52:43 pm »
EDIT: wpisz to jako kod do urzadzenia wirtualnego. thx szytwniak za uwagę.
« Ostatnia zmiana: Kwiecień 27, 2015, 09:59:28 pm wysłana przez marecki_0luk1 »
*

Offline sztywniak

  • ***** 601
  • 23
  • Nazwa i wersja ID: HC2 3.60/ 4.37, Vera 1.7.1018
Odp: obecność w domu
« Odpowiedź #9 dnia: Kwiecień 27, 2015, 09:58:05 pm »
Wkleił do sceny
*

Offline Akronaut

  • ** 71
  • 1
  • Nazwa i wersja ID: HC 2 +HCL, 4.580
Odp: obecność w domu
« Odpowiedź #10 dnia: Kwiecień 28, 2015, 09:21:00 am »
już wkleiłem do VD i działa
dzięki
Fibaro HC2 v 4.580 + HCL v 4.580   13*RS2   6*roleta dachowa Fakro  14*MS   4*DW sensor   9*Dimmer 2   14*Switch  2*1,5kW    2*Button   3*Wall Plug    1*SmokeSensor    2*UBS   1*Keyfob   2*elektrozawór  1*czujnik deszczu   1*GERDALOCK    4*IP kamera   329 scen   68 zmienne  12*VD   3*Android Phone
*

Offline Akronaut

  • ** 71
  • 1
  • Nazwa i wersja ID: HC 2 +HCL, 4.580
Odp: obecność w domu
« Odpowiedź #11 dnia: Czerwiec 14, 2015, 08:06:31 am »
nie mam wielkich osiągnięć w programowaniu ale zainstalowałem z Waszą pomocą takie VD dla 4 telefonów i wszystko działało na WP 8.1 do czasu zamiany jednego z nich na Huawei P8
tcpSocket = Net.FTcpSocket("192.168.1.xx", 60792)
bytes, errorCode = tcpSocket:write("test")
 
if errorCode == 0
then
fibaro:setGlobal("WiFi_Mariusz_Andr", "1"); 
fibaro:log("Mariusz w domu"); 
else
fibaro:setGlobal("WiFi_Mariusz_Andr", fibaro:getGlobal("WiFi_Mariusz_Andr") - 1);
fibaro:log("Mariusz poza domem");
end
 
zmienna jest ale wartość się nie zmienia
podejrzewałem, że problem leży w wolnym porcie w telefonie ale udało mi się zeskanować wolny 60792, za chwilę był inny
jak to poprawić?
mam wiele scen zależnych od zmiennych sterowanych zalogowanymi wifi
zaczynam żałować, że zdradziłem Nokię
 
DD-WRT chyba nie wchodzi w grę - mam Fun Box z Orange
Fibaro HC2 v 4.580 + HCL v 4.580   13*RS2   6*roleta dachowa Fakro  14*MS   4*DW sensor   9*Dimmer 2   14*Switch  2*1,5kW    2*Button   3*Wall Plug    1*SmokeSensor    2*UBS   1*Keyfob   2*elektrozawór  1*czujnik deszczu   1*GERDALOCK    4*IP kamera   329 scen   68 zmienne  12*VD   3*Android Phone
*

Offline Akronaut

  • ** 71
  • 1
  • Nazwa i wersja ID: HC 2 +HCL, 4.580
Odp: obecność w domu
« Odpowiedź #12 dnia: Wrzesień 08, 2015, 05:09:13 pm »
Jakiś czas temu zamieniłem telefony na Huawei.
Jestem zadowolony ale ... nie działa sprawdzanie obecności w sposób taki jak miałem ustawiony dla Windows Phone. Poradziłem sobie z tym instalując Tasker. Stworzyłem profile, które w zależności od zalogowania do domowego wifi lub będąc w pobliżu wybranych stacji GSM wysyłają komunikat HTTP GET do HC2 uruchamiający scenę zmieniającą zmienną. Takich komunikatów i scen dla każdego telefonu mam 3 i wysyłane są co 120 sek. Uruchomienie tych scen (zmiana zmiennej na 1) od razu uruchamia odliczanie 240 sek. po których następuje zmiana wartości zmiennej na 0 (kolejna scena). Zmiana wartości zmiennych następuje cyklicznie tak długo jak telefon jest z w zasięgu domowego wifi lub stacji GSM. Jeżeli HC2 nie otrzyma komendy z taskera o zmianie zmiennej po 240 sek. wszystkie zmienne mają wartość 0. Do potwierdzenia obecności jest kolejna scena: jeżeli którakolwiek zmienna równa jest 1 to osoba jest w domu, jeżeli wszystkie zmienne są równe 0 osoba jest poza domem. W teorii wszystko jest OK. Są dni kiedy wszystko działa bez zarzutu, są dni, że HC2 zmienia zmienne co kilka minut nawet co minutę tak jakby osoba wychodziła z domu i z powrotem wchodziła. W tym czasie telefony leżą nieruchomo w pobliżu routera i HC2.
Zastanawiam się co może być przyczyną:
słaby sygnał wifi - raczej wykluczam, sygnał jest silny i stabilny,czasem telefon leży obok routera
wylogowywanie się ze stacji GSM - mało prawdopodobne aby telefon na dłużej niż 120 sek. wylogował się ze wszystkich stacji, może się mylę
nieprawidłowe działanie taskera - profile przez cały czas informują, że są aktywne więc odpowiednie komendy są wysyłane.
Od kilku dni zastanawiam się czy nie jest to spowodowane kłopotami z dostępem zdalnym i lokalnym do HC2. Tasker aktywuje profil, wysyła HTTP GET do HC2 ale komenda nie dochodzi. Po jakimś czasie komenda dochodzi i osoba "znajduje" się w domu mimo, że z niego nie wychodziła.
Może łączność wifi telefonu z routerem po jakimś czasie się zawiesza. Nie mam w telefonie funkcji, która by za to odpowiadała. Może jest jakiś sposób na symulowanie łączności wifi.

Od obecności w domu mam uzależnionych wiele urządzeń i scen. Wszyscy się do tych ułatwień przyzwyczaili i nie chcę rezygnować z powodu zmiany telefonu.
Macie jakiś pomysł? Ja się poddaję.
Dziękuję za uwagę ;) To pisałem ja, inżynier budownictwa, nie elektronik, nie informatyk więc wybaczcie.
Fibaro HC2 v 4.580 + HCL v 4.580   13*RS2   6*roleta dachowa Fakro  14*MS   4*DW sensor   9*Dimmer 2   14*Switch  2*1,5kW    2*Button   3*Wall Plug    1*SmokeSensor    2*UBS   1*Keyfob   2*elektrozawór  1*czujnik deszczu   1*GERDALOCK    4*IP kamera   329 scen   68 zmienne  12*VD   3*Android Phone
*

Offline Kamikaze

  • Administratorzy
  • ***** 105
  • 4
  • Nazwa i wersja ID: Loxone + GoogleHome + Satel + KNX
Odp: obecność w domu
« Odpowiedź #13 dnia: Wrzesień 08, 2015, 06:43:35 pm »
Włącz logowanie w taskerze i zobacz czy faktycznie wywołuje Ci tego geta. Mam podobny problem w pracy. Na podstawie taskera wysyłamy GET co 3 minuty jeśli tel podłączony jest do firmowego wifi w ten sposób sprawdzamy czas pracy. Czasem działa to rewelacyjnie czasem nalicza przerwy w pracy co kilka minut na wybranych telefonach. Z tego co udało mi się ustalić to tak jakby ten timer się rozjeżdżał w taskerze bo on odpala zadanie czasem kilka sekund przed albo po zadanym czasie nie zgadza mu się zadana godzina i przerywa zadanie. Od nowa liczy.... czasem trafi czasem nie... Nie mam na to pomysłu.... Może to kwestia telefonu lub wersji androida? U nas problemy są na galaxy s6 android 5.1.1

Edit// Wystarczyło zaznaczyć opcję kontynuuj działanie po błędzie przy scenie i wszystko jak ręką odjął. Problem był taki ze czasami wifi jeszcze było w zasięgu ale telefon geta nie był wstanie wysłać (granica zasięgu). Tasker się wykrzaczał na tym i nie wysyłał już kolejnych getów pomimo dobrego zasięgu, konieczny był restart taskera.
« Ostatnia zmiana: Październik 14, 2015, 10:01:22 pm wysłana przez Kamikaze »
https://instalacjeinteligentne.pl - Inteligentne instalacje
*

Offline wojtas810

  • *** 205
  • 3
  • Nazwa i wersja ID: wojtas810
Odp: obecność w domu
« Odpowiedź #14 dnia: Lipiec 07, 2016, 09:40:29 pm »
Hej użyłem tego kodu w VD
pytanie mam przy debugu takie coś

[DEBUG] 22:39:42: Start looking for phone
[DEBUG] 22:39:42: Try number: 1
[DEBUG] 22:39:42: ERROR CODE: 0
[DEBUG] 22:39:42: --- Script finnished ---