Lubię wiedzieć co się dzieje. Czy to w domu czy na świecie. Jako że nad światem nie zapanuję, można się chociaż starać sprawdzić co się dzieje w domu ;)
Większość urządzeń ma teraz połączenie bezprzewodowe i je możemy bez problemu monitorować. Laptop, konsole, tablety, drukarki - gdy są włączone na komendę arp-scan odpowiada ich adres MAC. To dzisiaj zrobimy.
Jest co prawda natywny System Alive Checker (Ping), ale u mnie więcej oszukiwał, niż podawał prawdziwe dane. Ostatnio chyba został poprawiony, ale skoro już swoje skrypty mam...
Ruszamy.
Na początek - definiowanie nowej zmiennej w Domoticz.
Później konieczne będzie doinstalowanie arp-scan:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install arp-scan
I przechodzimy do sedna, czyli naszych funkcji badających obecność urządzeń w sieci.
cd domoticz
sudo nano scripts/Check_MAC.sh
I tam wstawiamy:
#!/bin/bash
MAC=$1
IDX=$2
sudo arp-scan --localnet | grep -e $MAC
if [ $? -eq 1 ]
then
echo "Device $MAC Not in LOCAL LAN"
curl "http://IP_Domoticz:Port/json.htm?type=command¶m=switchlight&idx=$IDX&switchcmd=Off"
else
echo "Device $MAC in LOCAL LAN"
curl "http://IP_Domoticz:Port/json.htm?type=command¶m=switchlight&idx=$IDX&switchcmd=On"
fi
Zamieniając IP_Domoticz:Port na własne IP i port
I WAŻNE, prawa do uruchamiania
sudo chmod +x /home/pi/domoticz/scripts/Check_MAC.sh
sudo nano scripts/lua/script_time_Presence.lua
A tutaj to:
function splitString(str, delim, maxNb)
-- Eliminate bad cases...
if string.find(str, delim) == nil then
return { str }
end
if maxNb == nil or maxNb < 1 then
maxNb = 0 -- No limit
end
local result = {}
local pat = "(.-)" .. delim .. "()"
local nb = 0
local lastPos
for part, pos in string.gmatch(str, pat) do
nb = nb + 1
result[nb] = part
lastPos = pos
if nb == maxNb then break end
end
-- Handle the last field
if nb ~= maxNb then
result[nb + 1] = string.sub(str, lastPos)
end
return result
end
commandArray = {}
maclist= uservariables['PRESENCE_LIST']
Lines=splitString(maclist,"|")
for i,line in pairs(Lines) do
--print (i.." "..line)
macs=splitString(line,";")
print ("MAC Address to Poll: "..macs[1].." On IDX:"..macs[2])
execcommand="sudo /home/pi/domoticz/scripts/Check_MAC.sh "..macs[1].." "..macs[2].." &"
os.execute(execcommand)
end
I na koniec dla KAŻDEGO urządzenia:
sudo nano scripts/lua/script_time_playstation_update.lua
local timer_device_ID = 8 <---- Tu wstawiamy IDX naszego Device z Counter incremental
commandArray = {}
commandArray['UpdateDevice'] = timer_device_ID .. '|0|0'
local TotalMinutesOn = otherdevices_svalues['Playstation timer']
if otherdevices['Playstation 4'] == 'On' then
TotalMinutesOn = TotalMinutesOn + 1
end
commandArray['UpdateDevice'] = timer_device_ID .. '|0|' .. tostring(TotalMinutesOn)
return commandArray
Co robi powyższa funkcja? Sprawdza, czy urządzenie Playstation 4 (czyli to musicie zmienić na nazwę u siebie) jest dostępna w sieci. Jeżeli tak, zwiększy licznik Playstation timer o 1, czyli i jedną minutę.
I tyle. Koniec. Tutaj jednak należy się Wam wytłumaczenie. Nazwy plików MUSZĄ rozpoczynać się od script_time_*, ponieważ jest to wewnętrzny mechanizm Domoticz, który uruchamia skrypty.
Co teraz zrobiliśmy? Napisaliśmy skrypt, który co minutę się uruchomi i sprawdzi, czy urządzenia zapisane na naszej zmiennej użytkownika są widoczne w sieci. Jeżeli tak, zwiększamy licznik.
Efekt?
Jak poniżej.
Pozdrawiam! Miłej zabawy!
EDIT.
Jak widać w komentarzach, są z tym czasem problemy, jednak ciężko mi określić, czemu może u niektórych z Was nie działać ta funkcja. Dla próby dodałem przed chwilą dzisiaj podłączony czujnik smogu na ESP. Świeża rzecz, nie ma więc prawa być w systemie, działać z tytułu zaszłości, itp. Po kolei:
1. Skoro działa, bo buczy i go słyszę, zbadajmy jaki ma adres MAC:
2. Dodaję wirtualny Switch, na Hardware typu Dummy. Zrobiłem to na istniejącym o nazwie Telefony:
3. Sprawdzam jaki ma IDX:
4. Dodaję adres MAC i IDX do zmiennej (fakt, adres MAC MAŁYMI literami):
5. Po chwili Switch odpowiada:
Idę spać, wyłączam testowy czujnik, po chwili:
Większość urządzeń ma teraz połączenie bezprzewodowe i je możemy bez problemu monitorować. Laptop, konsole, tablety, drukarki - gdy są włączone na komendę arp-scan odpowiada ich adres MAC. To dzisiaj zrobimy.
Jest co prawda natywny System Alive Checker (Ping), ale u mnie więcej oszukiwał, niż podawał prawdziwe dane. Ostatnio chyba został poprawiony, ale skoro już swoje skrypty mam...
Ruszamy.
Na początek - definiowanie nowej zmiennej w Domoticz.
Niech się nazywa PRESENCE_LIST (jak w przykładzie z forum Domoticz). Format jest następujący: Adres_MAC;ID_Z_Domoticz_TEGO_CZEGO_STAN_SPRAWDZAMY| (pionowa kreska!). Na końcu łańcucha już jej nie dajemy. Czyli na przykład: aa:bb:cc:dd:ee:ff;73|bb:cc:dd:ee:ff:gg;122. Adres MAC urządzeń możemy poznać na przykład za pomocą aplikacji ipscan24.
Cyfra po średniku to IDX naszego urządzenia (które chcemy testować na obecność w sieci!) w Domoticz. Wcześniej należy pamiętać, aby stworzyć odpowiedni sprzęt w sekcji Hardware!
Czyli na przykład Playstation timer jako Dummy w Sekcji Hardware i tam tworzymy dwa Virtual sensors: jeden Switch i drugi Counter Incremental
Później konieczne będzie doinstalowanie arp-scan:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install arp-scan
I przechodzimy do sedna, czyli naszych funkcji badających obecność urządzeń w sieci.
cd domoticz
sudo nano scripts/Check_MAC.sh
I tam wstawiamy:
#!/bin/bash
MAC=$1
IDX=$2
sudo arp-scan --localnet | grep -e $MAC
if [ $? -eq 1 ]
then
echo "Device $MAC Not in LOCAL LAN"
curl "http://IP_Domoticz:Port/json.htm?type=command¶m=switchlight&idx=$IDX&switchcmd=Off"
else
echo "Device $MAC in LOCAL LAN"
curl "http://IP_Domoticz:Port/json.htm?type=command¶m=switchlight&idx=$IDX&switchcmd=On"
fi
Zamieniając IP_Domoticz:Port na własne IP i port
I WAŻNE, prawa do uruchamiania
sudo chmod +x /home/pi/domoticz/scripts/Check_MAC.sh
sudo nano scripts/lua/script_time_Presence.lua
A tutaj to:
function splitString(str, delim, maxNb)
-- Eliminate bad cases...
if string.find(str, delim) == nil then
return { str }
end
if maxNb == nil or maxNb < 1 then
maxNb = 0 -- No limit
end
local result = {}
local pat = "(.-)" .. delim .. "()"
local nb = 0
local lastPos
for part, pos in string.gmatch(str, pat) do
nb = nb + 1
result[nb] = part
lastPos = pos
if nb == maxNb then break end
end
-- Handle the last field
if nb ~= maxNb then
result[nb + 1] = string.sub(str, lastPos)
end
return result
end
commandArray = {}
maclist= uservariables['PRESENCE_LIST']
Lines=splitString(maclist,"|")
for i,line in pairs(Lines) do
--print (i.." "..line)
macs=splitString(line,";")
print ("MAC Address to Poll: "..macs[1].." On IDX:"..macs[2])
execcommand="sudo /home/pi/domoticz/scripts/Check_MAC.sh "..macs[1].." "..macs[2].." &"
os.execute(execcommand)
end
I na koniec dla KAŻDEGO urządzenia:
sudo nano scripts/lua/script_time_playstation_update.lua
local timer_device_ID = 8 <---- Tu wstawiamy IDX naszego Device z Counter incremental
commandArray = {}
commandArray['UpdateDevice'] = timer_device_ID .. '|0|0'
local TotalMinutesOn = otherdevices_svalues['Playstation timer']
if otherdevices['Playstation 4'] == 'On' then
TotalMinutesOn = TotalMinutesOn + 1
end
commandArray['UpdateDevice'] = timer_device_ID .. '|0|' .. tostring(TotalMinutesOn)
return commandArray
Co robi powyższa funkcja? Sprawdza, czy urządzenie Playstation 4 (czyli to musicie zmienić na nazwę u siebie) jest dostępna w sieci. Jeżeli tak, zwiększy licznik Playstation timer o 1, czyli i jedną minutę.
I tyle. Koniec. Tutaj jednak należy się Wam wytłumaczenie. Nazwy plików MUSZĄ rozpoczynać się od script_time_*, ponieważ jest to wewnętrzny mechanizm Domoticz, który uruchamia skrypty.
Co teraz zrobiliśmy? Napisaliśmy skrypt, który co minutę się uruchomi i sprawdzi, czy urządzenia zapisane na naszej zmiennej użytkownika są widoczne w sieci. Jeżeli tak, zwiększamy licznik.
Efekt?
Jak poniżej.
Pozdrawiam! Miłej zabawy!
EDIT.
Jak widać w komentarzach, są z tym czasem problemy, jednak ciężko mi określić, czemu może u niektórych z Was nie działać ta funkcja. Dla próby dodałem przed chwilą dzisiaj podłączony czujnik smogu na ESP. Świeża rzecz, nie ma więc prawa być w systemie, działać z tytułu zaszłości, itp. Po kolei:
1. Skoro działa, bo buczy i go słyszę, zbadajmy jaki ma adres MAC:
2. Dodaję wirtualny Switch, na Hardware typu Dummy. Zrobiłem to na istniejącym o nazwie Telefony:
3. Sprawdzam jaki ma IDX:
4. Dodaję adres MAC i IDX do zmiennej (fakt, adres MAC MAŁYMI literami):
5. Po chwili Switch odpowiada:
Idę spać, wyłączam testowy czujnik, po chwili:
Witam po podaniu polecenia sudo apt-get arp-scan pojawia się błąd
OdpowiedzUsuńE: Invalid operation arp-scan co moze być przyczyną?
Ah! Mój błąd, poprawione! Dziękuję za zgłoszenie.
UsuńW drugim poleceniu też jest błąd sudo apt-get ugrade
OdpowiedzUsuńRobię wszystko według poradnika jednak nie pokazuje mi ze urządzenie jest włączone można prosić o skrypt w pliku gotowym do wklejenia może podczas kopiowania coś cie miesza
Proszę bardzo, w załączniku trzy pliki, które musisz dostosować do swoich potrzeb: https://drive.google.com/file/d/1yg8_R4fJfS9MNZCmCwodg5Cw773mGfQB/view?usp=sharing
UsuńDalej nie widać urzadzen nie wiem w czym problem
UsuńDobra, w takim razie po kolei:
Usuń1. Co odpowiada arp-scan? Dokładnie komenda sudo arp-scan --localnet | grep -e xx:xx:xx:xx:xx:xx - w miejsce xx:xx wstaw adres MAC tego, co chcesz zbadać - na przykład laptop na którym pracujesz
2. Jeżeli poda adres IP a za nim na czerwono adres MAC, to już jesteśmy do przodu.
3. Kolejny krok: jaki wynik daje w przeglądarce podanie http://192.168.1.200/json.htm?type=command¶m=switchlight&idx=xx&switchcmd=Off? Adres IP zamień na swój, xx na numer IDX wirtual switch, który ma przejść na On, jeżeli sprzęt jest włączony. Czyli na przykład virtual switch o nazwie Laptop.
4. Powinieneś dostać komendę:
{
"status" : "OK",
"title" : "SwitchLight"
}
5. Status urządzenia powinien się zmienić na On
Odpowiada adresem ip czyli ok ale nastęny krok juz nie odpowiada
OdpowiedzUsuń{
"message" : "Error sending switch command, check device/hardware!",
"status" : "ERROR",
"title" : "SwitchLight"
}
W takim wypadku znaczy to najprawdopodobniej, że próbujesz włączyć coś, czego nie ma, albo co nie może zostać włączone. Możesz załączyć zrzuty ekranu z Devices?
OdpowiedzUsuńMogę tylko nie da się dołączyć załcznika
OdpowiedzUsuńWrzuć link do imgur czy czegoś podobnego.
UsuńCo do samego rozwiązania - na pewno działa, bo dwa tygodnie temu przechodziłem tą ścieżkę z innym kolegą :) Jeżeli będzie trzeba to jakiś komunikator wykorzystamy.
https://www.fotosik.pl/zdjecie/pelne/fe46535e8fb06d38
OdpowiedzUsuńNo to nie ma opcji. Po podaniu IDX = 50, zmianie w podanym wyżej json na On musi przejść na On.
UsuńPrzychodzi mi jeszcze jedna rzecz do głowy - masz wpisaną maskę sieci domowej w Settings -> Local Networks? Bo może Domoticz Ci nie akceptuje wywołań z sieci wewnętrznej bez konieczności logowania.
Mam wpisane 192.168.1.*
OdpowiedzUsuńok po wpisaniu
OdpowiedzUsuńhttp://192.168.1.208:8080/json.htm?type=command¶m=switchlight&idx=50&switchcmd=On
odpowiedż jest
{
"status" : "OK",
"title" : "SwitchLight"
}
Super. W takim razie teraz ikona powinna się świecić na żółto. A jeżeli tak, to teraz kolejny skrypt będzie liczył czas. Ważne, aby dobra nazwa była podana
UsuńTylko nie wiem czemu po około 30 sek wyłącza sie samoczynnie
OdpowiedzUsuńNo to kolejne pytanie - czy NA PEWNO masz dobrze przypisany adres MAC do IDX? Wklej może również tutaj zawartość zmiennej PRESENCE_LIST (lub takiej jaka jest u Ciebie). Wygląda na to, że włączasz włącznik ręcznie, jest ok, później skrypt wykrywa, że jednak na podstawie MAC go nie widzi i ustawia go na wyłączony.
UsuńPRESENCE_LIST Ciąg znaków 1c:5a:3e:3d:fa:1e;50|1C:23:2C:8D:B5:1D;51
OdpowiedzUsuńKurde no... Dobrze jest...
UsuńLUA: MAC Address to Poll: 1C:23:2C:8D:B5:1D On IDX:57
OdpowiedzUsuńTakie coś mam w logach ale dalej nie pokazuje urządzeń
No ale chwila... W PRESENCE_LIST masz inne IDX...
UsuńNo nie dodałem nowe urzadzenie i zmienł sie idx i zmienilem tez w presence_list ale dalej nie pokazuje stanu juz tego nie ogarniam
OdpowiedzUsuńRozumiem. To jest w sumie bardzo prosty mechanizm:
Usuń1. Na podstawie adresu MAC sprawdzamy czy sprzęt odpowiada
2. Jeżeli tak - włączamy przełącznik na On
3. Skrypt sprawdza na podstawie nazwy czy jest włączony
4. Jest włączony -> Dodaj minutę do czasu używania
I tak w kółko. Działa mi to dla 10 urządzeń bez problemów -
konsole, komputery, drukarka, telefony. Jedynie tygodniowe wykresy w Domoticz są błędne, ale miesięczne i roczne się rysują.
Jeżeli jeszcze się nie poddałeś, to starałbym się maksymalnie to na początek uprościć, czyli:
1. W zmiennej wyłącznie jeden adres
2. Jeden włącznik
3. Bez skryptu sumującego czas
Jeżeli przełącznik włączony pozostanie włączony - to już dobry start. Jeżeli chcesz możemy popisać na jakimś komunikatorze, czy na e-mail - wtedy można więcej i szybciej wiadomości przekazać. FB? What's app?
jakieś namiary na fb
OdpowiedzUsuńjankes2008@gmail.com czekam na jakieś namiary
OdpowiedzUsuńWitam. Mam ten sam problem co Ty. Zauważyłem że u Ciebie w PRESENCE_LIST adres MAC ma duże litery. U mnie komenda sudo arp-scan --localnet | grep -e 1c:5a:3e:f5:d0:6e gdy MAC był z dużymi literami nie działała. Po zmianie na małe litery daje wynik: 192.168.0.3 1c:5a:3e:f5:d0:6e (Unknown). Ale i tak nie włącza mi urządzenia, gdy włączę go ręcznie to czas jest zliczany. Co to może być? Dziękuję za pomoc
UsuńPanowie, dodałem mały komentarz z objaśnieniem. Może to coś rozjaśni...
UsuńDzięki za pomoc ale u mnie niestety nie włącza urządzenia gdy jest w sieci. Znalazłem takie logi w Domoticzu:
OdpowiedzUsuń2017-11-28 17:48:00.174 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_Presence.lua: /home/pi/domoticz/scripts/lua/script_time_Presence.lua:34: attempt to concatenate field '?' (a nil value)
Tu jest problem, jak sprawdzić czy z Presence_List prawidłowo odczytuje MAC i Idx?
Na przykład: sudo /home/pi/domoticz/scripts/Check_MAC.sh e0:2a:82:a7:0e:d0 72
UsuńGdzie pierwsze to MAC, drugie IDX Switcha.
Ale coraz bardziej mnie to wszystko dziwi. Nawet ostatnio stawiałem Raspbiana od nowa i wszystko to poszło 'od strzału'
I jeszcze taki wpis w logach:
OdpowiedzUsuń2017-11-28 19:26:00.214 EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_time_TV_update.lua
2017-11-28 19:26:00.226 LUA: MAC Address to Poll: 1c:5a:3e:f5:d0:6e On IDX:215
Jak włączę ręcznie urządzenie to zlicza czas.
Wszystko się wyjaśniło:
OdpowiedzUsuńcd domoticz/scripts
sudo chmod +x Check_MAC.sh
Nie było praw dostępu do pliku
Wielkie dzięki za pomoc wszystko działa.
Aaahhh. Fakt! Mam to na liście ‚to do’ przy stawianiu nowej instalacji, zapomniałem tutaj wstawić. Dziękuję bardzo, zaraz poprawię wpis i przy okazji dodam do wpisu o backupie. Tam też brakuje
UsuńWitaj,
Usuńmam problem z tym skryptem :( W logach pojawia mi się coś takiego: rror: EventSystem: in /home/domoticz/domoticz/scripts/lua/script_time_dell__update.lua: ...moticz/domoticz/scripts/lua/script_time_dell__update.lua:4: attempt to concatenate global 'timer_device_ID' (a nil value)
i nie wiem o co chodzi....
Cześć. Literówka się wkradła. W deklaracji zmiennej powinno być: local timer_device_ID = 8. Poprawiłem w blogu, dziękuję za zwrócenie uwagi
UsuńUdało mi się usunąć błędy z logów, ale skrypt nadal nie zmienia stanu urządzenia, a co z tym idzie licznik nie nalicza minut :(
OdpowiedzUsuńMoże komentarze wcześniej naprowadzą Cię na trop? Krok po kroku robiliśmy to tutaj z innymi osobami.
UsuńCheck_MAC.sh działa prawidłowo, po jego wywołaniu przez sudo w domoticz zmienia się stan przełącznika. Natomiast skrypt script_time_Presence.lua nie wiedzieć czemu nie wywołuje skryptu Check_MAC :(
UsuńE-mail poszedł. Ale - nadałeś prawa do uruchamiania dla pliku?
Usuńpodałbyś mi do siebie e-mail na adres wojtek@majki.xyz? Cobyśmy komentarzy nie zaśmiecali.....
OdpowiedzUsuńja mam taki bład w logach:
OdpowiedzUsuń2018-04-13 12:23:00.346 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_Presence.lua: /home/pi/domoticz/scripts/lua/script_time_Presence.lua:33: attempt to concatenate field '?' (a nil value)
Problem błedu rozwiazany , lecz dalej nie zlicza mi czasu ani stanu.Wojtem Maj rozwiazałes ten problem?
OdpowiedzUsuńPonownie: co się dzieje gdy odpalisz http://192.168.1.200/json.htm?type=command¶m=switchlight&idx=xx&switchcmd=Off? Adres IP zamień na swój, xx na numer IDX wirtual switch, który ma przejść na On, jeżeli sprzęt jest włączony. Czyli na przykład virtual switch o nazwie Laptop.
UsuńPo odpaleniu komendy switch(lampka sygnalizujaca zapalenie w domoticzu) się zapala lecz wyłacza się samoczynnie po minucie .Czasu dalej nie zlicza.
OdpowiedzUsuńW takim razie oznacza to, że jednak nie znajduje działającego urządzenia w sieci i skrypt uznaje, że powinien ustawić Switch jako Off. Adresy MAC są poprawnie wpisane w zmienną użytkownika?
UsuńA mógłbyś mi podesłać swoje skrypty na email?Albo upchnąć na dysk google
OdpowiedzUsuńOczywiście. Nawet kiedyś tu były, ale je usunąłem z jakiegoś powodu. https://drive.google.com/open?id=1eF-xJHcdSnQTXsspV3utLs4jkGr2F-MM
UsuńJuż ogarnełem .Wszystko działa .Serdeczne dzieki!!!
OdpowiedzUsuńHej, super stronka i bardzo cenne rozwiązania! :)
OdpowiedzUsuńZacząłem dopiero przygodę z Domoticzem i staram się wdrożyć to rozwiązanie powyżej - przełącznik działa ale ma problem ze skryptem czytającym czas - dostaje komunikat jak niżej w logach:
"2018-08-14 01:50:00.434 Error: EventSystem: in /home/pi/domoticz/script_s/lua/script__time_iphone_asia_update.lua: .../domoticz/script_s/lua/script__time_iphone_asia_update.lua:3: unexpected symbol near '='" Podpowiesz coś? Skrypt skopiowany ze strony tylko nazwy zmienione i oczywiście IDX:) Z góry dzięki!:)
Cześć, miło słyszeć, że informacje są przydatne.
UsuńNa początek polecam pobrać skrypty z google drive umieszczone w linku powyżej, wydaje mi się, że wiele się wtedy wyjaśni. Oczywiście służę pomocą, jeżeli będzie inaczej.
Cześć,
OdpowiedzUsuńNie wiem czemu, ale u mnie ten arp-scan trwa w nieskończoność. Przerobiłem skrypty na arping, ale prawdę mówiąc mam duże wątpliwości, czy skuteczność jest równie dobra.
Druga sprawa, to czy coś specjalnego trzeba zrobić, żeby na sensorze z licznikiem pojawiła się sekcja "Today" ?
Specem nie jestem, ale apr-scan powinien szybko zakończyć działanie, może ma problem z jakimś adresem MAC?
UsuńCo do 'Today' - nic nie robiłem w tym celu - Domoticz sam mi wstawił tę wartość. Ja jednak ciągle jestem na poprzedniej stabilnej wersji, może coś się w tym kontekście zmieniło. Dopiero powoli stawiam wszystko od nowa na Stretch z zamiarem przejścia na nową wersję Domoticz.
Dzięki za info, faktycznie ja używam aktualnie do testów najnowszej wersji z bety i może usunęli ten ficzer, a szkoda.
UsuńZ arp-scan'em to nie mam pojęcia skąd u mnie ten problem ale może jeszcze powalczę, w każdym razie dzięki za info i za całego bloga - jest motywujący do grzebania :)
Będzie jeszcze dużo ciekawostek, solennie obiecuję!
UsuńMam ten sam problem. Nie pokazuje czasu 'Today' tylko zlicza wszystko w jedną wartość.
UsuńW urządzaniu masz ustawiony Typ Counter i uzupełnione 'Value Units' jako Minuty?
Jest dostępny typ 'Time', lecz on nie pokazuje wartości tylko pytajnik '?', tak jakby był jakiś błąd z tym.
Czy może testowałeś to już na nowym Stretch ?
Wydaje mi się, że brak Today może mieć coś wspólnego z nową wersją Domoticz. Type: Counter, Value Units jako Minutes (Domoticz trzymam cały po angielsku). Ja nawet nie mam typu Time ;)
UsuńNa Stretch nie przeszedłem, bo nie udało mi się w normalnym czasie (dwa wieczory) wszystkiego skonfigurować tak jak chciałem, a na rok 2019 mam inne plany ;)
Cześć dzięki za super blog!
OdpowiedzUsuńZrobiłem wszystko wg Twojego poradnika, a w logach pojawia się coś takiego
2018-10-08 20:30:00.121 Status: LUA: MAC Address to Poll: b0:c0:90:9f:d7:a4 On IDX:95
2018-10-08 20:30:00.220 Status: EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_time_dellewa_update.lua
więc wydaje się że wszystko dobrze, ale po 4 sekundach taki log:
2018-10-08 20:30:04.655 Status: User: Admin initiated a switch command (95/Dell Ewa/Off)
Czemu się przełącza na OFF?
Wydaje mi się, że będzie to problem opisywany w jednym z komentarzy: http://cezarowy.blogspot.com/2017/10/monitorowanie-aktywnosci-urzadzen-w.html?showComment=1524482911424#c7508971726931756442
UsuńWitam
OdpowiedzUsuńSkrypt ciekawy, u mnie na początku nie działał do końca, doinstalowałem culr i poszło. Jeśli chodzi o status wł/wył to działa OK. Problem u mnie wystąpił, gdy do folderu lua zapisałem skrypty dla pomiaru czasu dla każdego komputera stacjonarnego. Skończyło się to najpierw wyczyszczeniem ustawień ( tak jakbym miał nową instalkę Domoticz ), a później przeszedł do Offline. W sumie za pierwszym razem myślałem, że to przypadek. Ale zainstalowałem od nowa całego Armbiana i Domoticza i ponownie dodałem te skrypty i stało się to samo. Samo Orange Pi działa, jak również zainstalowane na nim usługi np. nginx.
Ja takie przypadki miałem na Raspberry Pi, po instalacji pluginów. Tutaj wydaje mi się, że problemem może być mechanizm uruchamiający skrypty automatycznie (a tak Domoticz robi, gdy pojawia się przedrostek script_time). Wydaje mi się, że zamiast reinstalacji wystarczyłoby skasować 'felerne' pliki z folderu. Przy okazji - jak sprawuje Ci się Orange Pi? Dopiero kilka miesięcy użytkuję Orange Pi Zero Plus i mimo braku wsparcia - jestem całkiem zadowolony.
UsuńJa użytkuję Orange Pi Zero już koło roku. Nie narzekam, działa nieźle ( nie licząc tego skryptu do sprawdzania aktywności :-) ). Udało mi się uruchomić na jego karcie muzycznej radio internetowe sterowane z Domoticza ( wł/wył, wybór stacji, głośność ), integracja z Airly ( sieć czujników zanieczyszczenie PM10/PM2.5), integracja z Burze.dzis.net, nawet ruszył chiński wyświetlacz 320x240 po SPI, udało mi się zaimportować GPIO ( tutaj nieco trudniej było z GPIO niż w Raspberry Pi ) i sterować wentylatorem w oparciu o odczyt temperatury z Orange PI, no i ostatnio napisałem sobie skrypt w Pyhonie, który odczytuje dane z konwertera USB/Uart i dopisuje je do wybranych czujników ( działa, tylko temperatura CPU skoczyła z 37 do 54 stopni i zwiększyło się zużycie CPU z 6% do 27% ).
UsuńWracając do skryptu - kiedyś używałem skryptu do sterowania pinami ESPEasy - dimmer. Zaczynał się od script_device. Nie było z nim problemu.
Chyba zrezygnuję z tego skryptu, wczoraj na początek dałem tylko samo sprawdzanie aktywności, bez liczenia czasu i w nocy się rozłożył Domoticz. Na szczęście usunięcie plików z katalogu pomogło
UsuńNo widzę, że się napracowałeś na Orange Pi. Bardzo mnie to pocieszyło, bo dobrze wróży mojemu NAS. Będę wszystko spinał w kolejnych dniach. Co do skryptu - wybieramy to co nam pasuje :) Ma działać stabilnie i cieszyć, a nie stresować. Może spróbuj wbudowanej funkcjonalności w Domoticz? Alive checker się chyba nazywa.
Usuńjuz nie daje rady
OdpowiedzUsuń{
"message" : "Error sending switch command, check device/hardware !",
"status" : "ERROR",
"title" : "SwitchLight"
}
http://192.168.2.109:8080/json.htm?type=command¶m=switchlight&idx=10&switchcmd=on
OdpowiedzUsuńcoś nie tak z tym poleceniem (ip, port, idx) wszystko się zgadza
Co dokładnie masz pod IDX=10 na zakładce Devices?
Usuńno właśnie cały artykuł jest o tym jak zastąpić standardową funkcjonalność domoticza System Alive Checker która nie działa poprawnie !
OdpowiedzUsuńgeneruje mnóstwo fake'owych komunikatów
a może pójść w tą stronę żeby poprawić tą funkcję w domoticzu
ja niestety mam go uruchomionego na Synology NAS i nie mam zielonego pojęcia jak tam doinstalować arp-scan
aczkolwiek bardzo mi zależy żeby np. wiedzieć ile czasu moje dziecko gra na PlayStation
Może namp się nada? https://github.com/SynoCommunity/spksrc/issues/3519
UsuńJak zmienić jednostkę w Counter Incremental z Kwh na minuty ?
OdpowiedzUsuńNie mogę znaleźć takiej opcji.
Pozdrawiam
Krzysztof
Użytkowe>edycja na odpowiednim liczniku.
UsuńTen komentarz został usunięty przez autora.
OdpowiedzUsuńCzu urządzenia podpięte do WiFi też powinien pokazywać ? U mnie pokazuje tylko sprzęty podpięte kablem, telefon córki, mimo, iż jest zalogowany do routera - widzę go w liści klientów DHCP i mam go w ręku, to pokazuje, że jest wyłączony.
OdpowiedzUsuńNie widzi żadnego urządzenie podpiętego przez WiFi,
Usuńjak wpiszę:
sudo /home/domoticz/domoticz/scripts/Check_MAC.sh d0:f8:8c:8c:57:bf 48
to mam odpowiedź:
Device 60:01:94:20:2b:97 Not in LOCAL LAN
{
"status" : "OK",
"title" : "SwitchLight"
}
po kablu OK
Witam
OdpowiedzUsuńZainstalowałem ten skrypt. Błędów nie ma, tylko że nie działa z automatu.
W logach mam:
2019-11-30 13:11:00.037 Status: EventSystem: Script event triggered: /home/domoticz/domoticz/scripts/lua/script_time_Ania_tel_update.lua
2019-11-30 13:11:00.053 Status: LUA: MAC Address to Poll: 90:2b:34:1f:bb:40 On IDX:23
2019-11-30 13:11:00.068 Status: LUA: MAC Address to Poll: 90:2b:34:1f:bb:4e On IDX:27
2019-11-30 13:11:00.083 Status: LUA: MAC Address to Poll: d0:f8:8c:8c:3b:eb On IDX:29
2019-11-30 13:11:00.100 Status: LUA: MAC Address to Poll: d0:f8:8c:8c:57:bf On IDX:25
2019-11-30 13:11:00.118 Status: LUA: MAC Address to Poll: 90:2b:34:1d:b5:03 On IDX:31
2019-11-30 13:11:00.184 Status: EventSystem: Script event triggered: /home/domoticz/domoticz/scripts/lua/script_time_Piotr_komp_update.lua
2019-11-30 13:11:00.202 Status: EventSystem: Script event triggered: /home/domoticz/domoticz/scripts/lua/script_time_Basia_komp_update.lua
2019-11-30 13:11:00.215 Status: EventSystem: Script event triggered: /home/domoticz/domoticz/scripts/lua/script_time_Ania_komp_update.lua
2019-11-30 13:11:00.228 Status: EventSystem: Script event triggered: /home/domoticz/domoticz/scripts/lua/script_time_Basia_tel_update.lua
ale nie przełącza.
Jak zrobię ręcznie:
sudo /home/domoticz/domoticz/scripts/Check_MAC.sh 90:2b:34:1f:bb:40 23
to działa i przełącza ( jeśli jest dostępny )
Zastanawiam się jak ma być z właścicielem i grupą do które nalezą pliki skryptu. U mnie jest zarówno user jak i grupa domoticz.
Witam
OdpowiedzUsuńNiestety w nowej wersji Domoticz 2020.1 pod Armbian Buster na Orange Pi PC licznik dodaje więcej niż 1 minuta - 7 do 10 "na minutę". Efekt - po 10 prawdziwych minutach mam na liczniku 107 minut aktywności.
Jako że nie aktualizuję już od dawna, myślałem, że te poprawiono tę funkcjonalność w Domoticz ;)
UsuńWitam. Zamiast „Licznika przyrostowego” wybierz „Licznik” i skrypt znowu działa poprawnie.
UsuńTen komentarz został usunięty przez autora.
OdpowiedzUsuńMam to samo :(
OdpowiedzUsuńA taki fajny skrypt :(
Witam, jak wydłużyć czas oczekiwania na odpowiedź urządzenia. Z kilku tylko jedno mi nie działa. Jest one najbardziej oddalone od routera a w windows jako jedyne ping'uje powyżej 100ms
OdpowiedzUsuń