Możliwości komunikacyjnych Domoticz ma bardzo dużo, od maila, poprzez powiadomienia na telefon Pushbullet czy Pushover, kombajn IFTTT czy komunikator Telegram. W takiej ilości możliwości komunikacja SMS wydaje się już trochę archaiczna, jednakże jak dla mnie warta zastosowania. Mam np. piec centralnego ogrzewania działający na GSM, który ma możliwość obsługi przy użyciu komend SMS. Dzięki temu mogę z głównego Domoticza uruchamiać i wyłączać urządzenie jednym przyciskiem, korzystając z planów czasowych i zdarzeń.
W Domoticzu domyślnie jest dodana usługa SMS Clickatell, która powinna odpowiadać za powyższą komunikację. Jednak jak to często bywa, nie jest tak łatwo. Po długich zmaganiach i braku sukcesu w uruchomieniu doczytałem, że po zmianie API, od jakiegoś czasu usługa nie jest dostępna dla nowych użytkowników. Pozostawiono ją w systemie, iż podobno cały czas działa ze starymi kluczami. Tak łatwo nie można się jednak poddawać. Z pomocą oczywiście przychodzi LUA.
- Zakładanie konta w usłudze SMS Clickatell.
Bez tego się oczywiście nie obejdzie. Przechodzimy na https://www.clickatell.com/. Rejestrujemy się i logujemy. Po zalogowaniu się w pierwszej kolejności musimy dostać się do API.
2. Uruchomienie usługi
Wchodzimy w zakładkę CONNECT.
Otrzymaliśmy API key. To jednak tylko początek. Usługa jest oczywiście płatna. Na szczęście jest też opcja testowa. Pozwala na wysłanie chyba 30 SMS dziennie i jak na razie nie zauważyłem, żeby była ograniczona czasowo. Mam ją już uruchomioną 2 miesiące i nadal działa. Ilość SMS jest dla mnie wystarczająca, więc nie planuję przejścia na wersję płatną. Dodajemy więc nasz telefon testowy.
Na podany numer telefonu dostaniemy kod SMS, który wpisujemy w kolejnym oknie, wpisujemy i mamy dodany nasz testowy numer telefonu. Następnie ustawiamy nową integracje.
Przeklikujemy do końca, jeżeli domyślne ustawienia nam pasują. I już możemy przetestować czy wszystko działa.
Testujemy naszą integracje.
Wybieramy podaną wcześniej integracje, numer testowy telefonu ( doda nam się automatycznie ) i wpisujemy tekst wiadomości.
I pięknie. Przyszedł SMS o treści TEST, na podany wcześniej numer. Jesteśmy w domu. Teraz przechodzimy do Domoticza.
3. Konfiguracja Domoticza.
Pozostaje mam tylko napisać skrypt LUA, który wyślę nam SMS po zmianie stanu przełącznika. Tworzymy standardowy przełącznik w systemie.
W Zdarzeniach tworzymy skrypt LUA.
commandArray = {} if (devicechanged['SMS'] == 'On') then os.execute ('curl "https://platform.clickatell.com/messages/http/send?apiKey=xxxxxxxxxxxxxxxxxxx==&to=48xxxxxxxx&content=Przełacznik włączony"') end return commandArray
Pamiętajmy aby nazwa urządzenia była prawidłowa. A skąd wziąć „curl” ? Wygenerował nam się w okienku CURL podczas testowania integracji ( 3 obrazy wyżej ).
Teraz po naciśnięciu przełącznika, zmienia się jego stan na ON i wykonywana jest komenda curl wysyłająca SMS na testowy numer telefonu o treści podanej za &content=. Oczywiście możemy treść modyfikować już ze skrypcie. Nie ma konieczności testowania integracji za każdym razem.
Przełącznik możemy wykorzystać w bardziej złożonych zdarzeniach np. jeżeli temp. w salonie spadnie poniżej 18 st. to włącz przełącznik SMS. Ustawiamy tylko odpowiednią treść „Temperatura w salonie za niska” i mamy powiadomienie SMS o zmianie temperatury w salonie.
Dla mnie bomba.
Cześć,
założyłem konto, SMS testowy dotarł. Niestety z domoticza sms nie przychodzi. Mógłbyś rozwinąć szczegółowo punkt trzeci, bo słaby w tym jestem.
Robię tak:
Konfiguracja->Sprzęt->Dummy (dodaj, nazwa „SMS”),
Utwórz wirtualne czujniki (nazwa „SMS”, typ przełącznik),
Konfiguracja->więcej opcji->zdarzenia
Tworzę skrypt o nazwie „Wyslij SMS” z mioim nr tel i kluczem, zapisuję.
Nie działa, jeszcze coś powinienem zrobić?
PolubieniePolubienie
jak zrobić to zdarzenie
PolubieniePolubienie
Sprawa rozwiązana. Skopiowałem skrypt według opisu, a okazuje się że jest w nim błąd. W skrypcie nie można w sposób bezpośredni używać spacji w treści sms-a, Można użyć „%20” sprawdzone.
Dobra robota
PolubieniePolubienie
Cześć. Takie proste pytanie – jak skonfigurować wersję testową Clickatell? Od razu wymagają ode mnie przedpłaty za smsy, nie mam możliwości wyboru testowej wersji darmowej.
PolubieniePolubienie
Część. Musisz dodać telefon testowy. Wtedy masz za darmo chyba 30 SMS dziennie.
PolubieniePolubienie
Cześć . Dzisiaj testowałem oczywiście wszystko działa , zauważyłem że nie trzeba pisać skryptu wystarczy wkleić link do pola „włącz akcje” w przełączniku i tez dział
Pozdrawiam
PolubieniePolubienie
Dziękuję za informację. Widocznie coś namieszałem i mi nie poszło. Fajnie że działa. Pozdrawiam
PolubieniePolubienie
Może przez tą spacje ja zrobiłem odrazu z „%20”
pozdrawiam
PolubieniePolubienie
Hej. Ja wpisuje sam link(w Włącz akcję ) z przeglądarki(działa wysyłanie) i nic 😦 ()
Moja składnia :
https://platform.clickatell.com/messages/http/send?apiKey=DPsEpFAdQqujDLm3vr9MPw==&to=48700xx0710&content=TempPokojPonizej21
PolubieniePolubienie
Mi działa przed chwila sprawdzałem składnia wydaje się ok nie wiem co jest nie tak ,ale w miedzy czasie odkryłem plus skryptu , można dodać np. aktualną wartość temperatury na grupie FB domosticz polska to było ale ja nie sprawdzałem jeszcze.
U mnie wygląda tak
https://platform.clickatell.com/messages/http/send?apiKey=xxxxxxxxxxxxxx==&to=48xxxxxxxxx&content=temperatura%20piec
PolubieniePolubienie
You can position your bets in every of these, transport the money in one to another as
a way to be simply used and welcoming.
PolubieniePolubienie
Witam,
pytanko takie
Po uruchomieniu funkcji sms mam taki problem,że gdy odpala się skrypt lua to wysyła mi sms dopóki nie wyłączy się przełącznik który go uruchamia.
czy jest jakaś metoda na dodanie do skryptu polecenia ,żeby wykonał go np. przez 2 sekundy
PolubieniePolubienie
w przelaczniku SMS (edycja) ustawiasz Opóźnienie wył.: 1
cały skrypt podający temperaturę w wiadomości
komendy (-s –connect-timeout 2 –max-time 5) maja zapobiegać zapętleniu gdyby nie można było wysłać wiadomości np. brak internetu
commandArray = {}
if (devicechanged[‚SmS’] == ‚On’) then
local temperature = tonumber(otherdevices[‚Piec’])
command =’curl -s –connect-timeout 2 –max-time 5 „https://platform.clickatell.com/messages/http/send?apiKey=xxxxxxxxx_SPew==&to=48xxxxxxx&content=temperatura%20piec%20″‚..temperature
os.execute(command)
end
return commandArray
PolubieniePolubienie
zrobiłem coś takiego wg. twojej sugestii , nie działa to.
Powiem Ci o co chodzi :
Mam zrobione sterowanie zraszaczami i chcę mieć kontrolę nad stanem przekaźników w czasie kiedy one nie powinny się załączyć.
zauważyłem że malina czasami z niewiadomych przyczyn załączy przekaźnik sterujący elektrozawór a tego nie chcę więc chcę dostać sms lub e-maila ,ale ani jedno ani drugi e nie działa jak należy,
Jeżeli ustawię ,żeby po zmianie stanu przełącznika wykonał akcję to owszem wykonuje ale wysyła co 20 sekund co jest nie do przyjęcia.
Skrypt skopiowałem i co robię źle ,że nie działa
commandArray = {}
if (devicechanged[‚alarm’] == ‚On’) then
command =’curl -s –connect-timeout 2 –max-time 5 „https://platform.clickatell.com/messages/http/send?apiKey=xxxxxxxxxxxxx_4ZApxarA==&to=48501xxxxxx&content=zraszaczon
os.execute(command)
end
return commandArray
w trzeciej linii jest czerwony krzyżyk
PolubieniePolubienie
Szczerze powiem ze nie jestem specjalistą do wszystkiego dochodzę metodą prób albo czytając takie blogi jak ten. 🙂
1.Jaki ty przełącznika masz, ja mam on/of
2, w zdarzeniach przy skrycie ustaw (Trigger ) na Device mi kiedyś skryp działał losowo i to pomogło
PolubieniePolubienie
2019-10-12 12:20:42.472 Error: EventSystem: in Script #2: [string „commandArray = {}…”]:2: unexpected symbol near char(226)
2019-10-12 12:20:42.616 Error: EventSystem: in Script #2: [string „commandArray = {}…”]:2: unexpected symbol near char(226)
2019-10-12 12:20:42.687 Error: EventSystem: in Script #2: [string „commandArray = {}…”]:2: unexpected symbol near char(226)
2019-10-12 12:20:42.730 Error: EventSystem: in Script #2: [string „commandArray = {}…”]:2: unexpected symbol near char(226)
2019-10-12 12:20:42.774 Error: EventSystem: in Script #2: [string „commandArray = {}…”]:2: unexpected symbol near char(226)
2019-10-12 12:20:42.911 Error: EventSystem: in Script #2: [string „commandArray = {}…”]:2: unexpected symbol near char(226)
2019-10-12 12:20:42.992 Error: EventSystem: in Script #2: [string „commandArray = {}…”]:2: unexpected symbol near char(226)
cześć,witam
Taki mam błąd
commandArray = {}
if (devicechanged[‚PK-1-ESP’] == ‚On’) then
command =’curl -s –connect-timeout 2 –max-time 5 „https://platform.clickatell.com/messages/http/send?apiKey=QQ0ZKIagQeKuU_xxxxxxx==&to=48501746907&content=zraszacz%20on%20
os.execute(command)
end
return commandArray
W drugim wierszu (czerowny krzyżyk)
ten skrypt ,który wkjejasz mógłbyć zrobić zrzut ekranu i wysłać mi e-mailem
PolubieniePolubienie
na koncu 3 lini brakuje ( ” ‚ )
PolubieniePolubienie
Cześć,
Jeżeli mógłbyś wstawić, to czego brakuje w tym skrypcie ,to bardzo bym prosił
Nie ogarniam już tego
Skrypt mimo wszelkich prób nadal się nie kompiluje
commandArray = {}
if (devicechanged[‚PK-1-ESP’] == ‚On’) then
command =’curl -s –connect-timeout 2 –max-time 5 „https://platform.clickatell.com/messages/http/send?apiKey=QQ0ZKIagQeKuU_4ZApxarA==&to=4850xxxxxxx&content=zraszacz%20on
os.execute(command)
end
return commandArray
PolubieniePolubienie
commandArray = {}
if (devicechanged[‚PK-1-ESP’] == ‚On’) then
command =’curl -s –connect-timeout 2 –max-time 5 „https://platform.clickatell.com/messages/http/send?apiKey=QQ0ZKIagQeKuU_4ZApxarA==&to=4850xxxxxxx&content=zraszacz%20on” ’
os.execute(command)
end
return commandArray
chodzi o cudzysłów i apostrof na końcu 3 wiersza tu jest to 4 wiersz bo się nie mieści
PolubieniePolubienie
https://www.lua.org/cgi-bin/demo
to jest link do programu, który sprawdza poprawność skryptu
ten :
commandArray = {}
if (devicechanged[‚PK-1-ESP’] == ‚On’) then
command =’curl -s –connect-timeout 2 –max-time 5 „https://platform.clickatell.com/messages/http/send?apiKey=QQ0ZKIagQeKuU_4ZApxarA==&to=4850xxxxxxx&content=zraszacz%20on” ’
os.execute(command)
end
return commandArray
dalej wywala błąd:(
PolubieniePolubienie
pisz swój adres mail
PolubieniePolubienie
emil.paczka@gmail.com
PolubieniePolubienie