niedziela, 29 maja 2016

JSON i wymiana danych w Domoticz

JSON (JavaScript Object Notation) to format wymiany danych i może być przetwarzany przez wiele języków programowania, w tym język Python, popularny dla Rasberry Pi.

JSON może wymieniać dane między serwerem, czyli np. Rasberry Pi, a aplikacją klienta, czyli np. Domoticz.

Format ten możemy wykorzystać w projektach na Rasberry Pi pisanych np. w Pythonie lub innym języku programowania i wykorzystać np. do obsługi nietypowych czujników, których nie obsługuje sam Domoticz lub innych urządzeń.

Komendy JSON dla Domoticz opisane są na stronie WIKI Domoticz -> Link

Komunikację JSON możemy sprawdzić wpisując w adres przeglądarki internetowej:

Ogólny adres:
http://ip-domoticz:port/json.htm?type=rodzaj_komendy

Komendy jakie możemy wykorzystać w Domoticz pokazuje poniższy obrazek


Czyli, w moim przypadku będzie, to: http://192.168.3.105:8080/json.htm?type=rodzaj_komendy

Wpisując: http://192.168.3.105:8080/json.htm?type=devices&rid
zobaczymy wszystkie urządzenia, jakie mamy w Domoticz

Możemy też zobaczyć status konkretnego urządzenia wpisując jego IDX, odczytamy go wchodząc w Konfiguracja -> Urządzenia w Domoticz


Jak widać np. dla urządzenia Kwiatki Idx wynosi 38, więc po wpisaniu:

http://192.168.3.105:8080/json.htm?type=devices&rid=38

zobaczymy status urządzenia Kwiatki

Można również odczytać status grupy urządzeń widocznych w menu Domoticz, czyli Przełączniki, Temperatura, Pogoda, Użytkowe, wpisując dla:

np. dla przełączników:
http://192.168.3.105:8080/json.htm?type=command¶m=getlightswitches

lub odczytać wschód i zachód słońca:
http://192.168.3.105:8080/json.htm?type=command¶m=getSunRiseSet

Bardziej przydatne może być sterowanie przełącznikami, np dla przełącznika o idx = 21, komenda będzie taka:

Włączenie:
http://192.168.3.105:8080/json.htm?type=command¶m=switchlight&idx=21&switchcmd=On

Wyłączenie:
http://192.168.3.105:8080/json.htm?type=command¶m=switchlight&idx=21&switchcmd=Off

W Pythonie do pobierania i przesyłania adresów sieciowych służy moduł urllib2, więcej o tym module możemy poczytać na tej stronie -> Link

Możemy napisać dowolny program, który będzie pobierał i przesyłał dane do Domoticz.

Prosty program, który włączy lampkę, odczeka 2 sekundy i wyłączy wygląda tak:


Kod programu jest do pobrania stąd -> Link

4 komentarze:

  1. Ten komentarz został usunięty przez autora.

    OdpowiedzUsuń
  2. Witam ja potrzebuje pomocy w napisaniu programu wysyłającego z arduino do domoticz i z powrotem informacji o właczeniu diody przyciskem fizycznym lub z domoticz tak jak tu https://goo.gl/45bRCv
    ale nie chce mi działac mam arduino mega i ethernet shield w5100 domoticz chce postawic na zewnetrznej maszynie z gory dziekuje za pomoc Pozdrawiam

    OdpowiedzUsuń
  3. Witam, Mam problem z tym probnym scryptem

    Traceback (most recent call last):
    File "dioda.py", line 8, in
    response = urllib2.request.urlopen(url)
    AttributeError: 'module' object has no attribute 'request'

    możesz coś podpowiedzieć?

    OdpowiedzUsuń
  4. Jestem pod wrażeniem. Świetny artykuł.

    OdpowiedzUsuń