«Почта России» наносит ответный удар

Как сообщается на сайте «Почты России», массированной спам-атаке подвергается сайт Роскомнадзора.

«Спланированной акцией спамеров», по мнению ФГУП, является отправка жалоб на работу почтовой сети. Если ранее сайт Роскомнадзора получал не более десятка таких заявлений в день, то с середины марта в службу ежедневно приходит до 1000 обращений клиентов интернет-магазинов о проблемах с доставкой по покупок.

К счастью «Почта России» быстро отреагировала на провокацию и уже готовит заявление в МВД:

Федеральный почтовый оператор создал для расследования инцидента оперативный штаб с привлечением служб безопасности и клиентского сервиса и будет добиваться экспертизы сообщений, поиска и привлечения к ответственности лиц, цинично вводивших в заблуждение людей и использовавших их в своих целях. Предприятие готовит заявление в Управление «К» МВД России.

В «Почте России» не исключает, что рассылка связана «с предстоящим принятием стратегических решений по реформированию почтовой отрасли». Какие именно решения имеются ввиду, не уточняется (хотя догадки есть).

Самое забавное, что Роскомнадзор, видимо, не посчитал жалобы на «Почту России» спамом и уже обратился к руководству почтовой сети с требованием принять срочные меры по устранению недостатков в работе с клиентами.

ссылка на оригинал статьи http://habrahabr.ru/post/174831/

Stat 2.1 На edX – Мои впечатления и советы для новичков в дистанционном обучении

У каждого из нас есть свое увлечение. Кто-то увлекается коллекционированием денежных номиналов на банковском счете (так сказать, в чистом виде), кого-то интересуют конкретные носители (нумизматика). Кто-то погрузился в новую онлайн- игру, а я прошел очередной курс на edX.

Где-то полгода назад я записался на свой первый курс на edX. Он оказался слишком сложным испытанием. Пришлось освоить новый язык программирования, были большие объемы лекций и в итоге где-то после середины курса я просто «забил». Каково же было мое удивление после окончания курса, что за выполненные практические работы я получил такой высокий грейд – что мне было достаточно просто заполнить остальные тесты и я бы получил сертификат! Из этого я сделал два вывода – необходимо четко знать систему выставления грейда и следить за ней постоянно. И второе – все таки нужно еще раз взять какой либо интересный курс.

В самом деле, в самой системе edX нет ничего сложного, видео-лекции и задачи на контроль. Наверно, такой функционал возможно было реализовать еще 10 лет назад, но ведь и Фейсбук появился совсем не сразу. В таких системах, видимо, должно совпасть сразу несколько факторов, и получается, что техническая сложность конструкции – далеко не главное даже сейчас.

По завершению курса Stat 2.1 – я могу сказать, что начинать свою «подсадку» на удаленное обучение надо с простых курсов. Вот только незадача – нигде не указана степень сложности курса. А низкий грейд на сдачу экзамена – 35% — это просто подарок для новичка в интернет — обучении. В итоге я закончил курс с грейдом порядка 70%.

Что можно сказать конкретно по этому курсу:
• Для меня стало открытием как просто и понятно были изложены основные данные курса.
• Простой и понятный английский у преподавателя (я слушал с ускорением 1,5 раза)
• Для всех лекций доступен материал в напечатанном виде
• Все тестовые работы выполняются онлайн и результат доступен сразу же

Что я бы хотел сказать в резюме:

• Рекомендую всем, кто знаком с английским языком, использовать edX и Coursera
• Начинайте с легких курсов, следите за грейдом, не бросайте обучение при первых сложностях
• Вы можете пройти Stat 2.1 и сейчас, все функции должны быть доступны – недоступен только вопрос сертификации – но откровенно говоря это не самое главное. Главное – знания.
• Скоро стартует продолжение курса – Stat 2.2, ждем анонса в ближйшее время на edX.

Удачи в обучении!

ссылка на оригинал статьи http://habrahabr.ru/post/174837/

Дайджест новостей из мира мобильной разработки за последнюю неделю №8 (25 — 31 марта 2013)

На этой неделе много информации о новых игровых движках, GDC как-никак — WP получил поддержку Unity 3D, Marmalade, Havok, Havok анонсировал Project Anarchy, Ludei реализовала 3D графику в своем HTML5-движке. Кроме того открылась платформа App Publish для публикации Android-приложений в 130 магазинах, есть интересное исследование о том, что идентифицировать человека среди 1.5 млн пользователей можно всего по 4 точкам и статья о создании первого национального спорт-трекера.

iOS

Познавательная анатомия языков в iTunes
Рус
Те, кто сталкивался с локализацией ios приложений на разные языки, не могли не обратить внимание на все пышное разнообразие языковых настроек в Itunes Store и в Itunes Connect. Их настолько много, что сходу не поймешь, где, что и на каком языке будет отображаться. Этим постом я попытаюсь провести интересующихся неискушенных через языковые измерения не всегда понятного и удобного Itunes хозяйства.

Аэробия — первый национальный спорт-трекер
Рус
image
С массовым, еще и аэробным спортом ситуация в России обстоит очень плохо, и никто не хотел связываться с трудоемкой, дорогой и очень долгой разработкой. Должно было совпасть много факторов, чтобы на это решиться. Но наша мозаика сложилась. Поэтому мы и сделали ПЕРВЫЙ НАЦИОНАЛЬНЫЙ СПОРТ-ТРЕКЕР отечественного производства.

«Скороговорки на картонке». Часть 1: От идеи до разработки
Рус
Давайте вместе с нами посмотрим этапы создания нашего последнего приложения — «Скороговорки на картонке».

У iPhone больше уязвимостей, чем у Android, BlackBerry и Windows Phone вместе взятых
Рус
Когда дело касается мобильной безопасности, то мы чаще всего обсуждаем Android с его вирусами и троянами, живущими в основном за пределами Google Play Store. Однако новое исследование SourceFire легко показало, что у iPhone больше проблем с безопасностью, чем у Android, BlackBerry и Windows Phone вместе взятых.

Android

Использование драйверов из Android приложения
Рус
Рут даёт практически абсолютную власть над Android устройством. Сегодня я расскажу вам как получить еще больше имея склонность к программированию и желание исследовать систему на своём устройстве.

App Publish: публикация в 130+ магазинах для Android
Англ / Рус
Мобильная рекламная сеть InMobi сделала еще один шаг к тому, чтобы стать универсальным средством для удовлетворения нужд разработчиков приложений. Она запустила App Publish, платформу распространения для приложений Android, которая позволит разработчикам разом публиковать свои бесплатные, платные или freemium приложения в множестве различных магазинов приложений для Android. Бесплатный для использования App Publish предлагает доступ примерно к 130 магазинам приложений по всему миру, и, по словам Чарльза Маклеода, директора InMobi по бизнес-развитию, они будут добавлять новые, примерно по одному в неделю.

Новый дом Facebook на Android: с 4 апреля
Рус
Facebook 4 апреля пригласил прессу на мероприятие в своей штаб-квартире, которое называется «Come See Our New Home On Android” («Приходите и посмотрите наш новый Дом на Android»).

Windows Phone

Новые инструменты для разработки игр на Windows Phone
Рус
На проходящей в Сан-Франциско конференции GDC был сделан ряд анонсов о новых инструментах для разработки игр на платформе Microsoft. Теперь, помимо существующих средств, таких как DirectX, разработчики могут использовать Unity 3D, Marmalade, Havok.

BlackBerry

BlackBerry 10: Android лучше, чем Android?
Рус
image
Чем больше я думаю об этом, тем больше чувствую ощущение дежа-вю. На самом деле такое было 20 лет назад. Вендор, который последний раз пытался это сделать, был IBM со своей операционной системой OS/2 2.0. Для меня это как соль на рану, и наверняка меня будут критиковать, но поскольку эта битва между Microsoft и IBM давно закончена, я все же продолжу.

Разработка

Havok анонсирует Project Anarchy: бесплатный кросс-платформенный 3D движок
Англ / Рус
Havok на GDC анонсировал Project Anarchy – новый кросс-платформенный мобильный 3D движок со своей физикой, анимацией и AI. Его примеры вне мобильного мира — Skyrim, Assassin’s Creed и Skylanders.

Ludei переносит WebGL на мобильные платформы
Рус
Компания Ludei, занимающаяся создание игрового движка на HTML5, объявила о внедрении в него поддержки 3D графики, что дает возможность разработчикам создавать 3D игры для смартфонов и планшетов.

Mozilla проводит семинары по разработке для Firefox OS
Рус
Mozilla анонсировала новую серию семинаров, посвященных созданию приложений для грядущей Firefox OS. Первые три пройдут в Мадриде (Испания) 20 апреля, в Боготе (Колумбия) 18 мая и в Варшаве (Польша) 1 июня.

GamePlay 3D Framework — лёгкий старт в кроссплатформенную разработку 3D игр
Рус
Это open source фреймворк написанный на C++ для программирования игр на C++ со всеми вытекающими из этого достоинствами и недостатками. Авторы проекта позиционируют его как универсальный инструмент, эдакий аналог cocos2d для 3D игр. Чтобы начать писать на GamePlay 3D не нужно обладать глубокими знаниями OpenGL, GLSL или математики 3D графики, однако все мы понимаем, что для достижения хорошего результата от этого никуда не деться.

Google запускает Universal Analytics
Англ / Рус
В прошлом октябре Google анонсировал ограниченную бета-версию Universal Analytics, своей попытки ввести в Google Analytics новые функции: кроссплатформенную аналитику, аналитику мобильных приложений, а так же возможность использовать данные из оффлайновых источников. Сегодня Universal Analytics стал доступен всем клиентам Google Analytics.

YouTube открывает API прямой трансляции для разработчиков игр
Англ / Рус
YouTube анонсировал функцию «живой трансляции» для разработчиков игр. На GDC 2013 YouTube объявил о выпуске новых API, которые, будучи встроенными в игру, позволят транслировать игровой поток в свой канал.

Удачный мобильный арт: паззл из мелких деталей
Рус
Не смолкают рассуждения о том, что же делает мобильную игру хитом. В данной статье мы хотим поделиться нашими соображениями касательно роли арта в этом вопросе. На наш взгляд, для успеха игры важна совокупность всех нижеперечисленных факторов.

Уязвимость графического пароля
Рус
Предыстория: моя жена постоянно норовит как-нибудь мне напортачить: поставить будильник на 3 часа ночи, поменять мелодию звонка, снести настройки синхронизации, удалить свою смс и потом доказывать, что она этого не говорила. Шутки шутками, но в какой-то момент я решил: “Довольно!” — и поставил графический пароль на свой андроид.

Yodo1: не надо переводить свои приложения на китайский
Англ / Рус
«Ни одна из систем, на которую полагаются западные разработчики – будь то реклама, платежи, открытие приложений или дистрибуция – недоступна в Китае», — начал свою речь на GDC 2013 глава компании Yodo1 Генри Фонг. В то время как китайский рынок остается загадкой для многих западных разработчиков, его размеры означают, что игнорировать его невозможно.

Безопасность

Идентифицировать человека среди 1 500 000 пользователей мобильной связи можно всего по 4 точкам во времени и пространстве
Рус
image
Каждый из нас изо дня в день бывает в одних и тех же местах примерно в одно и то же время — дом, работа, спортзал, магазин, снова дом… Наш ежедневный маршрут достаточно стабилен и в то же время уникален. Совместное исследование американских и бельгийских учёных продемонстрировало, что степень его уникальности гораздо выше, чем можно предположить.

Деньги

Google создал калькулятор для подсчета ценности мобильного мира
Англ / Рус
Full Value of Mobile Calculator (калькулятор всей ценности мобайла) создан для того, чтобы маркетологи могли следить за звонками, приложениями, внутренними продажами, посещениями мобильного сайта и активностью на разных устройствах и продажах вследствие всего этого.

Facebook улучшил таргетирование мобильной рекламы
Рус
Компания Facebook объявила о некоторых улучшениях рекламного сервиса mobile app install ads, запущенного прошлой осенью. Теперь разработчики смогут лучше таргетировать свою рекламу благодаря некоторым нюансам.

Yahoo! приобрело стартап 17-летнего парня за $30 000 000
Рус
image
Summly – необычное приложение под iPhone. На сегодняшний день Андроид версия находится пока в разработке. Программа помогает пользователям быстро искать новости по интересующим им темах и использует некоторое ноу-хау и искусственный интеллект сжимания произвольную статью в резюме до 400 знаков и подбирает подходящие и привлекательные картинки для оформления на экране мобильного устройства.

Успех Candy Crush Saga в кросс-платформенности и обновлениях
Рус
Все сообщество разработчиков заинтересовалось тем, как Candy Crush Saga так быстро добилась успеха. На встрече «Free to Play Game Design: A Year in Review» докладчики анализировали тренды, замеченные ими в сфере применения модели free-to-play для мобильных и социальных игр, включая тренды, связанные с Candy Crush Saga и Bubble Witch Saga от King.com.

ссылка на оригинал статьи http://habrahabr.ru/company/apps4all/blog/174835/

Жизнь разработчика в картинках

Когда вы отправляете правку в продакшн:
image
Осторожно, много GIF.

Когда вы решаете задачу без Google:
image

Когда вы закрываете IDE, забыв сохранить код:
image

Когда вы пытаетесь пофиксить баг в 4 утра:
image

Когда регулярное выражение наконец-то возвращает ожидаемый результат:
image

Когда начальник сообщает вам, что модуль, который вы разработали, никогда не будет использован:
image

Когда вы показываете начальнику, что наконец-то поправили баг:
image

Когда вы выкладываете код без тестов и он с первого раза работает как надо:
image

Когда вы в первый раз использовали CSS на своей странице:
image

Когда сисадмин дает рута:
image

Когда вы в первый раз запускаете скрипт, над которым трудились несколько часов:
image

Когда вы на выходных, а все остальные в это время сидят на работе и пытаются исправить проблемы:
image

Когда ваш начальник ищет кого-то, кто будет исправлять критический баг:
image

Когда вы получаете бонус за то, что закончили проект раньше дедлайна:
image

Когда то, что так прекрасно работало в пятницу, не работает в понедельник:
image

Когда вы разрабатываете что-то без ТЗ:
image

Когда начальник говорит вам, что «тесты созданы для тех, кто не умеет программировать»:
image

ссылка на оригинал статьи http://habrahabr.ru/post/174829/

RaZberry — умный дом на базе Z-Wave и Raspberry Pi

Raspberri Pi with RaZberry extention boardМногие пытаются собрать «Умный дом» своими руками. При выборе системы стоит учитывать не только ассортимент и стоимость конченых устройств, но и возможности контроллера. Большинство контроллеров сразу готовы к работе «из коробки», но представляют ограниченные возможности. Однако нередко именно гибкость и возможность лёгкой интеграции является основополагающим критерием при выборе.

И вот, появился долгожданный «кубик Lego» для систем автоматизации на базе технологии Z-Wave, который обладает желаемой гибкостью и в то же время большим функционалом и низкой ценой.

Плата расширения RaZberry для Raspberry Pi, превращает самый популярный и дешёвый мини-компьютер в Z-Wave контроллер домашней автоматизации.

RaZberry — это решение три в одном:

  • плата с трансивером Z-Wave ZM3102
  • прошивка для ZM3102, расширяющая возможности стандартных прошивок для стиков
  • ПО Z-Way

RaZberry

Железо

В ОС Linux RaZberry виден как com-порт /dev/ttyAMA0. Плата по сути состоит из трансивера ZM3102, памяти EEPROM для хранения данных сети Z-Wave, PCBA антенны и коннектора ножек UART для GPIO Raspberry Pi. Реально используется только ножки Vcc, Gnd, TX и RX. Остальные ножки не используется для работы платы и лишь помогают её крепче зафиксировать. В теории эти ножки можно использовать для других нужд.

Прошивка

Плата предоставляет интерфейс полностью совместимый с Sigma Designs Serial API, что даёт возможность использовать не только прилагаемое ПО Z-Way, но и любое другое ПО для Z-Wave (Open Z-Wave, LinuxMCE, FHEM или самописное), а также облачный сервис Z-Cloud (см. инструкцию). Плата также предоставляет расширение протокола Sigma Designs Serial API от Z-Wave.Me, которое необходимо для работы ПО Z-Way.

Прошивка также позволяет обновлять себя по UART, что позволит не только исправить возможные баги в будущем, но и сменить версию прошивки с той, что установлена по умолчанию (SDK 4.54.01) на более старую 5.03, не имеющую полезных функций NWI, Explorer Frame и Random HomeId, но включающую функционал SUC/SIS. (Для внимательных: да, я не ошибся, 4 > 5 😉

Программное обеспечение

Z-Way устанавливается поверх Raspbian wheezy путём запуска команды
wget ‐q ­‐O ­‐ http://razberry.z-­wave.me/install | sudo bash

Скрипт установки поставит Z-Way в /opt/z-way-server, пропишет в /etc/init.d/Z-Way скрипт для запуска, добавит его в авто запуск и настроит порт ttyAMA0. После перезагрузки (для применения настроек ядра для ttyAMA0 — по умолчанию Raspbian использует UART для консоли) сервер готов к работе. В браузере откройте http://IP_OF_RASPBERRY:8083 и начните строить сеть Z-Wave.

Рассмотрим подробней поставляемое в комплекте с RaZberry ПО Z-Way. Оно состоит из нескольких частей:

  • библиотека libzway — основа движка Z-Wave, предоставляющая C API для простой работы с Z-Wave (зависит от pthreads, zlib, openssl)
  • библиотека libzwayjs — биндинг между C и JavaScript движком Google V8. Предоставляет простое JS API для работы с сетью Z-Wave (зависит от libv8 и libzway)
  • библиотека libzwayhttp — HTTP сервис для обслуживания внешних клиентов, в том числе пользовательские интерфейсы. Предоставляет JSON API (зависит от libmicrohttpd, openssl, libzwayjs и libzway)
  • main.cpp — обвязка для запуска всех сервисов вместе, чтения конфигов и параметров командной строки

Такая структура позволяет использовать разные уровни интеграции с составными частями Z-Way. Для проектов, где важна производительность, доступен API уровня C (в комплекте есть заголовочные .h файлы для libzway), для проектов, где нужна оперативная разработка, проще использовать JS API. Важно, что оба интерфейса имеют сходную структуру, что позволяет просто портировать код с JavaScript на C после быстрого прототипирования.

Далее я опишу API уровня JavaScript и покажу, как создавать простые правила автоматизации. Интерфейс уровня C останется за рамками данной статьи. Стоит заметить, что синтаксис в движке JavaScript Z-Way на стороне сервера сделан по аналогии с тем, что было реализовано для Z-Cloud на стороне клиента — см. описание API Z-Cloud. Для дальнейшего чтива предполагается, что читатель уже знаком с особенностями протокола Z-Wave (см. подробное описание протокола Z-Wave).

Всё относящееся к Z-Wave в пространстве имён JavaScript находится в глобальном объекте zway, который предоставляет полное дерево данных и методов над устройствами Z-Wave.

Дочерний объект controller, содержит данные специфические для контроллера Z-Wave, а также список устройств devices. Каждое устройство содержит структуру данных (data), а также список каналов устройства (instances). Каждый канал имеет список Классов Команд Z-Wave, поддерживаемых устройством. На Классе Команд имеются методы для вызова функций (Set, Get, …), а также дерево данных (data), где хранится вся информация о Классе.

Графически это можно иллюстрировать примерно так (картинка из документации):

Структура API асинхронна и делится на две части:

  • отправка команд и запросов
  • получение событий изменения состояний

Отправка команд осуществляется запросами вида zway.devices[2].instances[0].commandClasses.Basic.Set(0) (этот пример выключит свет). Функция .Get() отправит запрос значения устройству. zway.devices[2].RequestNodeNeighbourUpdate() попросит устройство обновить соседей, а команда zway.AddNodeToNetwork(1) запустит процесс добавления нового устройства к сети. Более подробно все команды описаны в документации на странице документации проекта RaZberry. Каждому запросу можно добавить два дополнительных параметра: callback-функции для успешной и неудачной отправки.

Команды ставят в очередь на отправку соответствующие пакеты. Отправка осуществляется через Sigma Designs Serial API, реализованную на плате расширения RaZberry. Вся магия Z-Wave скрыта под этим уровнем абстракции: для устройств на батарейках эти пакеты помечаются как ожидающие пробуждения, для шифрования идёт предварительный обмен ключами, для экономии заряда батареек и времени в эфире некоторые пакеты стыкуются вместе и многое другое… Как и в любом протоколе, в Z-Wave много своих тараканов, которые все находятся под ковром API Z-Way и не вылезают оттуда.

Все полученные от устройств данные записываются в дерево data, относящееся к устройству или Классу Команд. Каждый элемент дерева data имеет атрибуты value (значение элемента), updateTime и invalidateTime (timestamp дат обновления и устаревания значения), name (имя). Структура дерева тоже подробно описана в документации. Для получения уведомлений об изменении значений дерева существует система подписок на события. Функция bind для каждого элемента дерева позволяет привязать callback функцию к изменению данных.

zway.devices[2].instances[0].commandClasses.Basic.data.level.bind(function (type[, arg]) {}, [arg, [watchChildren=false]]);

Опциональный аргумент arg, передаваемый bind будет передан в callback функцию и пригодится для передачи дополнительных параметров для разделения разных событий, имеющих общий callback-обработчик. Параметр watchChildren (true или false) позволяет отслеживать не только изменения данного элемента дерева, но и дочерних. Объект this в callback функции — это элемент дерева data, на котором запускается bind: this.value — значение, this.updateTime — дата последнего обовления и т.д. Аргумент type содержит битовую маску типа изменения (изменён, обновлён, удалён, устарел,… — подробно все значения описаны в ZDefsPublic.h, который входит в комплект ПО).

Аналогично есть функция bind на глобальном объекте zway, которая позволяет отслеживать изменения в массивах devices, instances и commandClasses:

zway.bind(function(type, nodeId, instanceId, commandClassId) {}, [mask = 0xffff])

Аргумент type указывает на характер изменения (добавлено/удалено устройство/канал/класс команд или сохранён файл с деревом данных на диск (ZDDX-файл). Триплет nodeId, instanceId, commandClassId указывает на изенённый объект.

Отписаться от событий можно функцией unbind.

Для упрощения синтаксиса можно опускать слова commandClasses, instances[0] (именно нулевой канал!), .value (level == 0 аналогично level.value == 0, но при JSON-сериализации без .value будет сериализован весь элемент дерева с его атрибутами, а только значение).

Стоит обратить внимание, что глобальный объект zway является нативным в v8, т.е. это не обычный JavaScript объект: у него можно лишь менять данные элементов дерева. Все остальные изменения в дереве игнорируются.

Приведём несколько примеров:

Запуск shell-команд при получении контроллером событий Basic Set от других устройств сети (например, выключатель ассоциирован с контроллером с каналом 1 при помощи MultiChannelAssociation)

var instanceId = 1;  var ctrlNodeId = zway.controller.data.nodeId.value; // Get controler Node Id if (zway.devices[ctrlNodeId] && zway.devices[ctrlNodeId].instances[instanceId]) { // Check that instance object exists 	var basicCC = zway.devices[ctrlNodeId].instances[instanceId].Basic; 	if (basicCC) { // check that Basic exists 		basicCC.data.level.bind(function() { // bind to Basic level value 			system("echo " + this.value); 		}); 	} } 

Автоматическое отключение диммера света через 10 секунд после включения (для реле используйте SwitchBinary вместо SwitchMultilevel). (Здесь предполагается, что устройство умеет отправлять отчёты и ассоциировано с контроллером)

var nodeId = 2; var instanceId = 0;  var _tmr = null zway.devices[nodeId].instances[instanceId].SwitchMultilevel.data.level.bind(function() { 	var node = args[0]; 	var instance = args[1]; 	if (_tmr) { 		clearTimeout(_tmr); 	} 	_tmr = null; 	if (this.value > 0) { 		_tmr = setTimeout(function () { 			zway.devices[nodeId].instances[instanceId].SwitchMultilevel.Set(0); 			_tmr = null; 		}, 10*1000); 	} }); 

(тут стоит обратить внимание, что для запуска данного кода несколько раз нужно вводить массив _tmr для каждого устройства/канаоа)

Выполнение JavaScript кода

Куда вставлять этот JavaScript код? Есть несколько способов выполнить данный код:

  • Записать код в файл и положить его на SD-карту Raspberry Pi в папку /opt/z-way-server/[ваша папка]. Далее этот код можно исполнить из automation/main.js: executeFile(pathToJavaScriptFile).
  • Вы также можете прописать ваш собственный JavaScript файл в config.xml вместо родного файла RaZberry.
  • Отправить его по HTTP через Z-Way JSON API
Теперь опишем Z-Way HTTP/JSON API

Данный интерфейс взаимодействия с сервером Z-Way использует протокол HTTP и формат JSON для передачи данных. С его помощью не сложно создать графические интерфейс для сервера автоматизации.

Команды кодируются прямо в URL запроса, а ответы приходят в привычном аяксерам JSON формате.

Запрос /ZWaveAPI/Data/<timestamp> предоставляет JSON структуру полного дерева обновлений с момента времени <timestamp>. Она имеет вид
{ path1: object1, path2: object2, ... updateTime: <timestamp> }
Здесь pathN — это путь к изменившемуся элементу дерева, objectN — новое значение этого элемента. updateTime — время формирования обновлений (его нужно указать в следующем запросе, чтоб получить обновления)

Если запросить /ZWaveAPI/Data/0, то сервер вернёт полную структуру данных.

Запрос /ZWaveAPI/Run/<cmd> запускает JavaScript код zway.<cmd>. Этот запрос аналогичен более общему /JS/Run/ и создан для совместимости с API сервиса Z-Cloud.

Запрос /JS/Run/<cmd> выполняет <cmd> в v8 движке и возвращает в виде JSON результат выполнения этой команды.

Другие команды описаны в документации.

Несколько примеров:

  • http://localhost:8083/ZWaveAPI/Run/devices[2].SwitchMultilvel.data.level.value — возвращает последний полученный от устройства уровень яркости (стоит перед чтением послать SwitchMultilevel.Get())
  • http://localhost:8083/ZWaveAPI/Run/devices[3].instances[1].SensorMultilvel.data.level.value — возвращает последнее полученный от устройства значение датчика (стоит перед чтением послать SensorMultilevel.Get())
  • http://localhost:8083/ZWaveAPI/Run/devices[2].Basic.Set(0) — выключает устройство

Напомним, instances[0], commandClasses и value можно опустить.

! Не забывайте, что некоторые символы требуется явно кодировать перед отправкой (url encode): например, + { }.

Вместе с софтом поставляется базовый интерфейс для браузера. Он тоже использует Z-Way JSON API для взаимодействия с сервером. Его код удобно использовать для изучения работы API. Также может оказаться полезным расширение для jQuery для отслеживания обновлений дерева, полученных запросом /ZWaveAPI/Data/<timestamp>

Вот так выглядит взаимодействие разных слоёв системы (картинка из документации):

Через некоторое время планируется написание JS скриптов для автоматизации, предназначенных для простых пользователей (кривые заготовки уже лежат в папке automation). Их можно будет использовать совместно с собственными скриптами пользователя, т.е. собственные скрипты можно уже начинать писать и использовать в ваших проектах.

Где взять?

Raspberry Pi продаются на сайтах RS components или Farnell.
Плата RaZberry и другое Z-Wave оборудование доступно в интернет-магазине Z-Wave.Me и других.

Пора автоматизировать!

Уверен, RaZberry станет удобным решением для построения бюджетных систем автоматизации на базе Z-Wave.

ссылка на оригинал статьи http://habrahabr.ru/post/174825/