Способ и система для управления устройствами и контроля устройств
METHOD AND SYSTEM FOR DEVICE MANAGEMENT AND DEVICE CONTROL

Изобретение относится к области электротехники, а также к области регистрирования, обработки и передачи данных для различных, в том числе, специальных применений и может быть использована для создания децентрализованных и централизованных, в том числе автоматизированных, способов и систем удаленного управления и контроля устройств.
В настоящее время известно устройство сбора, обработки и передачи телеметрической информации (см. RU 2449346, опубл. 27.04.2012), содержащее корпус с возможностью крепления на горизонтальную и вертикальную поверхность, печатную плату, на которой расположены блок питания с супервизором питания, микроконтроллер с оперативной и постоянной памятью большого размера, часы реального времени со встроенной энергонезависимой памятью и литиевой батареей резервного питания, преобразователь интерфейса RS-232, преобразователь сигналов интерфейса RS-485 с блоком гальванической развязки, блок однопроводного интерфейса 1Wire, блок ввода дискретных сигналов телеизмерения, блоки двух интерфейсов Ethernet, блок интерфейса USB, сменный модуль интерфейсов PLC, ZigBee, WiFi, отличающееся тем, что дополнительно включает блок управления питанием датчиков, подключаемых к интерфейсу 1Wire, блок высокоскоростного универсального модема четвертого поколения LTE/UMTS/GSM, блок формирования уникального 64-битного серийного номера устройства и блок защиты от несанкционированного вскрытия или умышленного повреждения корпуса устройства.
Известен способ интеграции функций управления техническими средствами посредством сетей связи и система его реализации (см. RU 2450434, опубл. 10.05.2012), в частности, дистанционного управления техническим средством с использованием управляющего пульта в виде сотового телефона или компьютера по сети связи или эфиру, оснащенных приемопередающей аппаратурой, посредством задаваемых пользователем функций управления этим средством с упомянутого пульта, отличающийся тем, что создают для пользователя универсальный пульт управления мобильного типа, в дальнейшем именуемый центром управления, в силу увеличенных функциональных предназначений как по выбору сетей, каналов и линий связи, так и по выбору дистанционно управляемых технических средств для подсоединения их к центру управления, а также по выбору набора функций управления для каждого из этих средств, причем к центру управления подключают ряд технических средств, дистанционно управляемых, количественный состав которых изменяют посредством за счет возможности использования соответственно сменяемых информационных носителей в виде карт памяти по функциональному их предназначению подобно мульти Sim-карте и т.п., при этом карты памяти обеспечивают подключение центра управления к соответствующему дистанционно управляемому техническому средству по избранной связи для выполнения задаваемых пользователем функций управления этим техническим средством, причем производитель этого средства для последующего выполнения задаваемых пользователем функций управления создает программное обеспечение индивидуального назначения в соответствии с установленными стандартами с введением в карту памяти как соответствующего дистанционно управляемого технического средства, так и в соответствующую карту памяти, вводимую в центр управления, при этом обе карты памяти снабжают входным кодовым ключом в виде Pin-кода, обеспечивающим взаимное сопряжение этих карт при установлении связи центра управления с дистанционно управляемым техническим средством, а программное обеспечение индивидуального назначения активизируют к общему программному обеспечению центра управления самим производителем, тогда как к средствам связи применимы коммутируемые сети связи общего пользования, некоммутируемые сети, выделенные каналы и линии связи, в том числе с проводным и беспроводным доступом, корпоративные и локальные сети связи с применяемым аналоговым и цифровым методами передачи информации, а дистанционно управляемые технические средства представляют объекты промышленного, хозяйственного, бытового и иного назначения, при производстве которых соблюдают стандарты на алгоритмы программного обеспечения на дистанционное управление техническими средствами, но для осуществления дистанционного управления техническим средством пользователь изначально производит выбор надлежащей связи центра управления с техническим средством, а после установления такой связи между вызывающей и вызываемой сторонами посредством приемопередающей аппаратуры или иначе между передающей и приемной сторонами пользователь избирает соответствующий набор функций управления для избранного технического средства, представленных пользователю на табло дисплея центра управления, а затем пользователь избирает надлежащую функцию управления дистанционно управляемым техническим средством, исполнение которой отражают на табло дисплея центра управления. Причем система, состоит из блока выбора абонентом сети связи, их приемопередающей аппаратуры, блока дистанционного управления техническим средством по заданной функции управления, и отличается тем, что создают и представляют пользователю центр управления, объединяющий в себе блоки: блок выбора пользователем из ассортимента сетей связи необходимую сеть, то же относится к каналам и линиям; вновь вводимый блок выбора дистанционно управляемых технических средств и вновь вводимый блок выбора функций управления каждым из этих средств с программным обеспечением индивидуального назначения и входным кодовым ключом на каждое из этих средств, причем программное обеспечение индивидуального назначения через входные кодовые ключи сопрягают с общим программным обеспечением центра управления, тогда как при выборе сети связи абонентом выводы Sim-карт и выходы с карт памяти для технических средств соединяют с входом соответствующего вновь вводимого коммутатора, выход с которого соединяют со входом приемопередающей аппаратуры, а выходы с этой аппаратуры по сети или каналу, или эфиру соединяют с входом в приемопередающей аппаратуры приемной стороны, а в последующем соединении выход с нее в зависимости от того, на что послан вызов: абонента или на техническое средство, а также в зависимости от избранной сети связи: сотовой или коммутируемой, соответственно соединяют со входом Sim-карты вызываемого абонента или со входом АОН того же абонента, или со входом вновь вводимого имитатора приема вызова для избранного технического средства, если соединение осуществляют по коммутируемой сети; выход Sim-карты соединяют с сотовым телефоном, а выход с имитатора соединяют со входом вводимого модуля, выполняющего функцию дешифратора, подтверждающего адресный вызов, и его выход подключают ко входу вновь вводимому исполнительному блоку дистанционно управляемому техническому средству, выполняющему функцию управления этим средством, а при передаче функции управления по выделенному каналу связи, выход с приемопередающей аппаратуры соединяют напрямую со входом модуля, выход с которого подключают ко входу исполнительного блока технического средства, но при управлении техническим средством по выделенной линии связи проводного или беспроводного доступа выход с блока функций управления соединяют со входом модуля технического средства, а выход с этого модуля подключают ко входу исполнительного блока технического средства.
Известна система удаленного контроля и управления электронными устройствами "Умный дом" (см. RU 2573762, опубл. 27.01.2016), включающая N групп датчиков, М групп исполнительных устройств, глобальное хранилище команд управления пользователя, узел связи, блок управления, включающий локальное хранилище команд управления пользователя, и каналы связи, отличающаяся тем, что она дополнительно содержит WEB-сервер, модуль разработки сценариев пользователя, глобальное хранилище сценариев пользователя, устройство для управления системой пользователем, глобальное хранилище отсканированных команд устройств всех пользователей, блок управления дополнительно содержит блок сканирования команд управления, локальное хранилище отсканированных команд управления, модуль выполнения сценариев пользователя, блок хранения сценариев пользователя, модуль безопасности и шифрования, а узел связи выполнен в виде приемопередающего устройства беспроводной связи, при этом входы датчиков и исполнительных устройств связаны с выходами приемопередающего устройства беспроводной связи блока управления, а выходы датчиков связаны с входами приемопередающего устройства беспроводной связи блока управления, входы исполнительных устройств связаны с выходами приемопередающего устройства беспроводной связи блока управления, а выходы исполнительных устройств связаны с входами приемопередающего устройства беспроводной связи блока управления, входы приемопередающего устройства беспроводной связи блока управления связаны также с выходами блока сканирования команд управления и модуля выполнения сценариев пользователя, выходы блока сканирования команд управления связаны также с входом локального хранилища отсканированных команд управления и входом модуля безопасности и шифрования, а его вход связан с выходом приемопередающего устройства беспроводной связи, выход модуля выполнения сценариев пользователя связан также с входом блока хранения сценариев пользователя, а входы модуля выполнения сценариев пользователя связаны с выходами блока хранения сценариев пользователя и модуля безопасности и шифрования, выход локального хранилища отсканированных команд управления связан с входом модуля безопасности и шифрования, входы WEB-сервера связаны с выходами модуля безопасности и шифрования, глобального хранилища отсканированных команд всех пользователей, глобального хранилища команд управления пользователя, модуля разработки сценариев пользователя, глобального хранилища сценариев пользователя, а выходы WEB-сервера связаны с входами модуля безопасности и шифрования, глобального хранилища отсканированных команд всех пользователей, глобального хранилища команд управления пользователя, модуля разработки сценариев пользователя, глобального хранилища сценариев пользователя, устройство для управления системой пользователем связано беспроводной связью через локальную сеть Ethernet с блоком управления.
Известна система и способ управления внешним устройством, соединенным с устройством (см. RU 2592062, опубл. 20.07.2016), причем способ содержит этапы, на которых предоставляют в сервер информацию ввода пользователя, используемую, чтобы определять намерение пользователя, идентифицируют внешнее устройство, управляемое устройством, предоставляют информацию об устройстве идентифицированного внешнего устройства в сервер, принимают из сервера управляющую информацию относительно внешнего устройства, которая генерируется сервером на основе информации ввода пользователя и информации об устройстве, и передают управляющую команду во внешнее устройство, которая генерируется на основе принятой управляющей информации. А также способ предоставления управляющей информации для управления внешним устройством, причем способ содержит этапы, на которых принимают информацию ввода пользователя из устройства, принимают информацию об устройстве внешнего устройства, управляемого устройством, определяют намерение пользователя на основе информации ввода пользователя, генерируют управляющую информацию для внешнего устройства на основе упомянутого определенного намерения пользователя и информации об устройстве, и предоставляют управляющую информацию в устройство. А также устройство, содержащее память, выполненную с возможностью сохранения программы, и процессор, выполненный с возможностью управления внешним устройством с помощью выполнения программы, причем программа содержит команды, которые, когда выполнены процессором, предписывают процессору: идентифицировать внешнее устройство, управляемое устройством, предоставлять информацию об устройстве внешнего устройства в сервер, принимать из сервера управляющую информацию относительно внешнего устройства, которая генерируется на основе информации ввода пользователя и информации об устройстве, и передавать управляющую команду во внешнее устройство на основе принятой управляющей информации, причем информация ввода пользователя используется, когда сервер определяет намерение пользователя, и управляющая информация генерируется сервером на основе намерения пользователя. А также способ, содержащий этапы, на которых определяют намерение пользователя, выбирают внешнее устройство, конфигурируемое как управляемое, чтобы выполнять намерение пользователя, генерируют управляющую команду, чтобы управлять выбранным внешним устройством, на основе намерения пользователя, и передают управляющую команду во внешнее устройство, чтобы выполнять намерение пользователя.
Известны система и способ использования данных, собранных с датчиков интернета вещей (iot), для отключения бытовых устройств, включенных посредством iot «System and method for using data collected from internet-of-things (iot) sensors to disable iot-enabled home devices» (см. US 2016/0195859, опубл. 07.07.2016), где система включает iot-хаб/концентратор, содержащий сетевой интерфейс для подключения iot-хаба к iot-сервису посредством глобальной вычислительной сети (WAN), и iot-устройство, связанное с iot-хабом посредством беспроводного канала связи; iot-устройство содержит датчик для измерения локальных состояний, вызванных локальным устройством в доме пользователя, причем локальное устройство является потенциально опасным, если оставлено включенным, где iot-устройство передает, по крайней мере, одно измерение локальных состояний на iot-хаб посредством беспроводного канала связи; управляющую логику на iot-хабе для получения, по крайней мере, одного измерения локальных состояний с датчиков и для оценки, по крайней мере, одного измерения с целью определения факта случайного оставления локального устройства включенным, причем управляющая логика генерирует сигнал выключения локального устройства в ответ на установленный факт случайного оставления локального устройства включенным.
Недостатками существующих решений является отсутствие универсального и расширяемого протокола передачи данных (канала, потока данных) и команд, в частности, скриптов между управляемыми/контролируемыми устройствами/модулями и базовыми модулями/устройствами, а также между базовыми модулями и сервером, причем упомянутый протокол передачи данных может осуществлять передачу любых типов измерений измерителями, в частном случае, подключенными к упомянутым контролируемым/управляемым устройствам, и команд, в частном случае, скриптов, которые могут использоваться для управления упомянутыми устройствами/модулями.
Еще одним недостатком существующих решений является невозможность пользователем настраивать представление, в частности, отображение данных, например, измерений и команд, в частности, в вид, приемлемый/удобный для пользователя устройств/модулей, сервера и т.д., т.е. в существующих решениях пользователь не способен или имеет крайне ограниченную возможность изменять название измерений, способ отображения значений измерений (например, вместо отображения градусов не может настроить отображение данных в виде «холодно», «комфортно», «тепло», «жарко» и т.д.), изменять величины измерений (например, не может задать формулу перевода данных из одного формата в другой, например, градусов Цельсия в Фаренгейты).
Также, недостатками существующих решений являются ограничения требований к провайдеру сети Интернет (т.е. в существующих решениях требуется подключение к сети Интернету через определенного провайдера или через мобильный интернет, с использованием SIM-карты определенного оператора и т.д.), а также отсутствует возможность осуществления подключения модулей к любой W-Fi сети, Wi-Fi устройству и т.д.
Еще одним недостатком существующих решений является необходимость подключения к сети Интернет существующих решений для их функционирования и/или осуществления, по крайней мере, одной функциональности существующих решений. Т.е. в частном случае существующие решения требуют от пользователя покупки прямого IP-адреса, например, для управления устройствами/модулями из сети Интернет и существующие решения, например, не обеспечивают функционирование при наличии доступа к Wi-Fi.
Также, недостатками существующих решений является невозможность пользователем самостоятельно настраивать зависимости между показателями измерений различных устройств/модулей (в частности, значений измерителей таких устройств/модулей) и, в зависимости от этого, исполнять определенные команды на других устройствах.
Еще одним недостатком существующих решений является невозможность пользователю разрабатывать сценарии поведения устройств/модулей и управления устройствами/модулями, в том числе управляемых/контролируемых устройств и/или базовых модулей/устройств без необходимости доступа базы (базового модуля/устройства) к серверу. В частности, существующие решения не позволяют создавать (например, в текстовых полях/редакторах, в которые могут быть введены тексты скриптов/команд) на сервере (и/или базовом модуле) команды/скрипты, в том числе пользователем, в частности для сервера, базового модуля и/или контролируемого устройства, которые могут быть выполнены/исполнены сервером и/или базовым модулем, и/или контролируемым устройством. Также, существующие решения не позволяют загружать скрипты/команды с базы/базового модуля и/или сервера на сервер, (контролируемое) устройство/модуль и/или базу/базовый модуль, когда выполнение скрипта/команды может не зависеть от доступности базы/базового модуля и/или сервера с исполнением скрипта/команды на (контролируемом) устройстве и/или базовом модуле, и также, в частном случае, когда созданный на сервере (и/или в базовом модулем) для сервера скрипт/команда (передается на сервер и) выполняется на сервере, созданный на сервере для базового модуля скрипт/команда передается на базовый модуль и выполняется на базовом модуле и/или созданный на сервере для контролируемого устройства скрипт/команда передается на контролируемое устройство (в частности, через, по крайней мере, один базовый модуль) и выполняется на контролируемом устройстве.
Предлагаемые система и способ позволяют преодолеть, по крайней мере, часть вышеуказанных недостатков или все указанные недостатки, а также реализовать преимущества настоящего технического решения, как описано в рамках настоящего технического решения.
Технический результат, достигаемый предлагаемым изобретением, состоит в повышении точности и скорости управления устройствами и контроля устройств за счет передачи измерений и/или статусов команд, и/или управляющих программ, по крайней мере, в один управляющий модуль контролируемого модуля, по крайней мере, одним измерительным модулем, причем управление контролируемым модулем осуществляется базовым модулем посредством команд, содержащихся, по крайней мере, в управляющем модуле, причем базовый модуль получает команды и управляющие программы с сервера и/или передает статусы команд и управляющих программ и/или измерения измерительного модуля на сервер, а также за счет за счет управляющих программ, полученных контролируемым модулем с, по крайней мере, одного базового модуля, где управляющие программы являются скриптами, исполняемыми, по крайней мере, одним управляющим модулем и/или контролируемым модулем, и/или базовым модулем и/или сервером. Также технический результат заключается в удобстве управления устройствами и контроля устройств за счет удаленного управления устройствами и контроля удаленными устройствами.
Указанный технический результат достигается тем, что система для управления устройствами и контроля устройств включает по крайней мере, один контролируемый модуль, связанный, по крайней мере, с одним базовым модулем и/или другим контролируемым модулем, причем контролируемый модуль управляется управляющими программами, полученными с базового модуля, где управляющие программы являются скриптами, исполняемыми модулем исполнения скриптов в управляющем модуле и/или в контролируемом модуле, и/или в базовом модуле, и/или на сервере; по крайней мере, один управляющий модуль, являющийся частью контролируемого модуля; по крайней мере, один измерительный модуль, подключенный, по крайней мере, к одному управляющему модулю и передающий измерения и/или статусы команд и управляющих программ, по крайней мере, в один управляющий модуль контролируемого модуля; по крайней мере, один управляемый модуль, связанный с, по крайней мере, одним управляющим модулем и/или с, по крайней мере, одним контролируемым модулем и/или являющийся частью, по крайней мере, одного контролируемого модуля, и/или подключенный к, по крайней мере, одному управляющему модулю, причем управляемый модуль осуществляет управление контролируемым модулем и/или, по крайней мере, одной частью контролируемого модуля; по крайней мере, один базовый модуль, связанный, по крайней мере, с одним контролируемым модулем и/или сервером, и/или другим базовым модулем и осуществляющий управление, по крайней мере, одним контролируемым модулем и/или осуществляющий контроль, по крайней мере, одного контролируемого модуля, посредством, по крайней мере, одного управляющего модуля, причем управление контролируемым модулем осуществляется базовым модулем посредством команд, содержащихся, по крайней мере, в управляющем модуле, причем базовый модуль получает команды и управляющие программы с сервера и/или передает статусы команд и управляющих программ и/или измерения измерительного модуля на сервер; по крайней мере, один сервер, связанный с, по крайней мере, одним базовым модулем.
Технический результат также достигается тем, что пользователь преобразовывает названия параметров команд, полученных с управляемого модуля, и/или изменяет наименование команд в интерфейсе базового модуля и/или интерфейсе сервера.
Технический результат также достигается тем, что управляющие программы создаются пользователем в базовом модуле и/или на сервере с использованием шаблонного построителя, являющимся графическим построителем логики, и/или создаются посредством ввода управляющих команд в текстовое поле интерфейса базового модуля и/или сервера.
Технический результат также достигается тем, что шаблонный построитель осуществляет создание кода управляющей команды, осуществляет валидацию кода управляющей команды и осуществляет загрузку на контролируемый модуль средствами, по крайней мере, одного модуля системы.
Технический результат также достигается тем, что контролируемым модулем является цифровое устройство и/или аналоговое устройство, и/или комбинированное устройство, и/или механическое устройство, и/или электронное устройство, и/или вычислительное устройство, и/или мобильное устройство, и/или домашняя электроника, и/или бытовой прибор, и/или бытовая техника, и/или профессиональное оборудование, и/или техническое оборудование, приборы учета, в том числе приборы учета энергоресурсов, приборы отопления, водоснабжения, электроснабжения, а также любая их комбинация.
Технический результат также достигается тем, что управляющий модуль является, по крайней мере, одной микросхемой и/или микроконтроллером.
Технический результат также достигается тем, что связь между модулями системы осуществляется посредством проводной связи или беспроводной связи, в том числе, посредством локальной вычислительной сети, и/или сети Интернет, и/или мобильной или спутниковой связи, и/или USB-интерфейса, и/или интерфейса стандарта RS-232/СОМ-порта, и/или Bluetooth, и/или Wi-Fi, и/или GSM, 3G, 4G, LTE, транкинговой связи, и/или посредством каналов передачи данных со сверхнизким энергопотреблением, формирующих сложные беспроводные сети с ячеистой топологией, и/или ZigBee, а также связь между модулями системы осуществляется посредством клемм и/или проводов, и/или пайки, и/или клепки.
Технический результат также достигается тем, что связь между модулями системы осуществляется посредством, по крайней мере, одного протокола передачи данных, в том числе сетевого протокола ТСР/IP и/или HTTP/HTTPs, и/или FTP, и/или РОР3, и/или SMTP, и/или TELNET, и/или ХМРР, расширяемого протокола обмена сообщениями и информацией о присутствии.
Технический результат также достигается тем, что система дополнительно включает по крайней мере, одно вычислительное устройство пользователя, причем контролируемый модуль и/или базовый модуль, и/или сервер получает команды и/или управляющие программы от, по крайней мере, одного вычислительного устройства пользователя и/или от, по крайней мере, одного базового модуля, и/или, от, по крайней мере, одного другого контролируемого модуля, и/или от, по крайней мере, одного сервера.
Технический результат также достигается тем, что на вычислительном устройстве пользователя установлено программное обеспечение, позволяющее связываться с контролируемым модулем, и/или базовым модулем, и/или сервером для контроля пользователем параметров модулей системы и/или измерений измерительным модулем, и/или управления и/или настройки модулей системы, и/или для создания и/или отправки команд и/или управляющих программ для упомянутых модулей.
Технический результат также достигается тем, что на вычислительном устройстве пользователя установлен веб-браузер, который позволяет пользователю связываться с контролируемым модулем, и/или базовым модулем, и/или сервером для контроля пользователем параметров модулей системы и/или измерений измерительным модулем, и/или управления и/или настройки модулей системы, и/или для создания и/или отправки команд и/или управляющих программ для упомянутых модулей.
Технический результат также достигается тем, что управляющий модуль содержит модуль сбора и обработки измерений измерительного модуля, хранилище команд управляемых модулей, модуль трансляции и преобразования данных, модуль шифрования и дешифрования данных и модуль исполнения скриптов, модуль управления, осуществляющий, по крайней мере, обработку результатов выполнения команд.
Технический результат также достигается тем, что контролируемые модули и/или управляющие модули регистрируются пользователем, по крайней мере, в одном базовом модуле, причем упомянутая регистрация определяет связь зарегистрированных контролируемых модулей и/или управляющих модулей с базовыми модулями с целью получения и/или обработки данных базовыми модулями, передаваемых контролируемыми модулями и/или управляющими модулями.
Технический результат также достигается тем, что базовый модуль содержит хранилище измерений измерительных модулей контролируемых модулей, хранилище команд контролируемых модулей, хранилище настроек преобразования и отображения команд и измерений контролируемых модулей, модуль трансляции и преобразования данных и сообщений, модуль шифрования и дешифрования данных, модуль исполнения скриптов, реестр контролируемых модулей, хранилище настроек и журналов событий базового модуля, модуль шифрования и дешифрования сообщений, модуль пользовательского интерфейса.
Технический результат также достигается тем, что сервер содержит хранилище профилей пользователей, реестр базовых модулей, реестр контролируемых модулей, хранилище измерений измерительных модулей контролируемых модулей с историей измерений, серверное ядро, хранилище команд и шаблонов команд контролируемых модулей, хранилище правил управления контролируемыми модулями, модуль правил управления контролируемыми модулями, хранилище правил уведомлений пользователей, модуль правил уведомлений пользователей, модуль уведомлений пользователей.
Технический результат также достигается тем, что пользователь уведомляется о событиях в модулях системы, причем уведомление пользователя осуществляется посредством, по крайней мере, модуля правил уведомлений пользователя, где правила содержат, по крайней мере, одно условие и реакцию на условие.
Технический результат также достигается тем, что уведомление пользователя осуществляется посредством SMS-сообщений и/или писем электронной почты, и/или посредством систем и/или служб, и/или приложений для обмена сообщениями и данными/информацией, в том числе для мгновенного обмена сообщениями/обмена мгновенными сообщениями, и/или мессенджеров, и/или систем и/или служб, и/или приложений для передачи и/или получения сообщений, и/или систем и/или служб, и/или приложений для обмена данными/информацией, в том числе включая получение и передачу текстовой информации/данных, графических данных, видеоданных, изображений, звуковых данных, аудиофайлов, и/или сообщений в чатах и/или социальных сетях.
Технический результат также достигается тем, что модули системы управляются правилами автоматического управления модулями системы посредством, по крайней мере, одного модуля правил автоматического управления модулями системы, причем модулями системы осуществляется выполнение команд, в зависимости от содержания правила.
Технический результат также достигается тем, что сервер и/или контролируемый модуль, и/или базовый модуль содержат генератор событий, менеджер триггеров, хранилище скриптов, виртуальную машину, которая содержит менеджер прерываний, среду исполнения, загрузчик.
Технический результат также достигается тем, что данные на сервере хранятся в триггерной таблице и таблице байт-кодов управляющих программ базы данных; на базовом модуле данные хранятся в файлах внутри файловой системы, которые содержат триггерную таблицу и код скриптов, в контролируемом модуле данные хранятся в виде адресно-разделенных областей флеш-памяти, определенных в таблице адресации, причем под триггерную таблицу и код скриптов могут быть зарезервированы заведомо области памяти.
Технический результат также достигается тем, что система дополнительно включает на сервере модуль безопасности, осуществляющий проверку данных, полученных от базового модуля, и/или пользователя, и/или сервера, и/или контролируемого модуля, причем модуль безопасности проверяет права доступа пользовательского уровня, а также включает модуль имитации, который осуществляет проверку перечня допустимых инструкций виртуальной машины, характеристики памяти и другие программные и/или аппаратные характеристики.
Также технический результат достигается тем, что способ управления устройствами и контроля устройств включает управление и контроль, по крайней мере, одним контролируемым модулем посредством управляющих программ, полученных контролируемым модулем с, по крайней мере, одного базового модуля, где управляющие программы являются скриптами, исполняемыми модулем исполнения скриптов в, по крайней мере, одном управляющем модуле и/или в контролируемом модуле, и/или в базовом модуле, и/или на, по крайней мере, одном сервере, причем управляющий модуль, является частью контролируемого модуля, причем к управляющему модулю подключен, по крайней мере, один измерительный модуль, осуществляющий передачу измерений и/или статусы команд и управляющих программ, по крайней мере, в один управляющий модуль контролируемого модуля, причем управление, по крайней мере, одним контролируемым модулем и/или, по крайней мере, одной частью контролируемого модуля осуществляет по крайней мере, один управляемый модуль, связанный с, по крайней мере, одним управляющим модулем и/или с, по крайней мере, одним контролируемым модулем и/или являющийся частью, по крайней мере, одного контролируемого модуля, и/или подключенный к, по крайней мере, одному управляющему модулю, где по крайней мере, один базовый модуль, связанный, по крайней мере, с одним контролируемым модулем и/или сервером, и/или другим базовым модулем и осуществляющий управление, по крайней мере, одним контролируемым модулем и/или осуществляющий контроль, по крайней мере, одного контролируемого модуля, посредством, по крайней мере, одного управляющего модуля, причем управление контролируемым модулем осуществляется базовым модулем посредством команд, содержащихся, по крайней мере, в управляющем модуле, причем базовый модуль получает команды и управляющие программы с сервера и/или передает статусы команд и управляющих программ и/или измерения измерительного модуля на сервер, который связан, по крайней мере, с одним базовым модулем, причем по крайней мере, один контролируемый модуль связан, по крайней мере, с одним базовым модулем и/или другим контролируемым модулем.
Технический результат также достигается тем, что способ дополнительно включает осуществление пользователем преобразования названия параметров команд, полученных с управляемого модуля, и/или изменение наименования команд в интерфейсе базового модуля и/или интерфейсе сервера.
Технический результат также достигается тем, что управляющие программы создаются пользователем в базовом модуле и/или на сервере с использованием шаблонного построителя, являющимся графическим построителем логики, и/или создаются посредством ввода управляющих команд в текстовое поле интерфейса базового модуля и/или сервера.
Технический результат также достигается тем, что шаблонный построитель осуществляет создание кода управляющей команды, осуществляет валидацию кода управляющей команды и осуществляет загрузку на контролируемый модуль средствами, по крайней мере, одного модуля системы.
Технический результат также достигается тем, что контролируемым модулем является цифровое устройство и/или аналоговое устройство, и/или комбинированное устройство, и/или механическое устройство, и/или электронное устройство, и/или вычислительное устройство, и/или мобильное устройство, и/или домашняя электроника, и/или бытовой прибор, и/или бытовая техника, и/или профессиональное оборудование, и/или техническое оборудование, приборы учета, в том числе приборы учета энергоресурсов, приборы отопления, водоснабжения, электроснабжения, а также любая их комбинация.
Технический результат также достигается тем, что управляющий модуль является, по крайней мере, одной микросхемой и/или микроконтроллером.
Технический результат также достигается тем, что связь между модулями системы осуществляется посредством проводной связи или беспроводной связи, в том числе, посредством локальной вычислительной сети, и/или сети Интернет, и/или мобильной или спутниковой связи, и/или USB-интерфейса, и/или интерфейса стандарта RS-232/СОМ-порта, и/или Bluetooth, и/или Wi-Fi, и/или GSM, 3G, 4G, LTE, транкинговой связи, и/или посредством каналов передачи данных со сверхнизким энергопотреблением, формирующих сложные беспроводные сети с ячеистой топологией, и/или ZigBee, а также связь между модулями системы осуществляется посредством клемм и/или проводов, и/или пайки, и/или клепки.
Технический результат также достигается тем, что связь между модулями системы осуществляется посредством, по крайней мере, одного протокола передачи данных, в том числе сетевого протокола TCP/IP и/или HTTP/HTTPs, и/или FTP, и/или РОР3, и/или SMTP, и/или TELNET, и/или ХМРР, расширяемого протокола обмена сообщениями и информацией о присутствии.
Технический результат также достигается тем, что контролируемый модуль и/или базовый модуль, и/или сервер получает команды и/или управляющие программы от, по крайней мере, одного вычислительного устройства пользователя и/или от, по крайней мере, одного базового модуля, и/или, от, по крайней мере, одного другого контролируемого модуля, и/или от, по крайней мере, одного сервера.
Технический результат также достигается тем, что на вычислительном устройстве пользователя установлено программное обеспечение, позволяющее связываться с контролируемым модулем, и/или базовым модулем, и/или сервером для контроля пользователем параметров модулей системы и/или измерений измерительным модулем, и/или управления и/или настройки модулей системы, и/или для создания и/или отправки команд и/или управляющих программ для упомянутых модулей.
Технический результат также достигается тем, что на вычислительном устройстве пользователя установлен веб-браузер, который позволяет пользователю связываться с контролируемым модулем, и/или базовым модулем, и/или сервером для контроля пользователем параметров модулей системы и/или измерений измерительным модулем, и/или управления и/или настройки модулей системы, и/или для создания и/или отправки команд и/или управляющих программ для упомянутых модулей.
Технический результат также достигается тем, что управляющий модуль содержит модуль сбора и обработки измерений измерительного модуля, хранилище команд управляемых модулей, модуль трансляции и преобразования данных, модуль шифрования и дешифрования данных и модуль исполнения скриптов, модуль управления, осуществляющий, по крайней мере, обработку результатов выполнения команд.
Технический результат также достигается тем, что пользователем осуществляется регистрирование контролируемых модулей и/или управляющих модулей, по крайней мере, в одном базовом модуле, причем упомянутая регистрация определяет связь зарегистрированных контролируемых модулей и/или управляющих модулей с базовыми модулями с целью получения и/или обработки данных базовыми модулями, передаваемых контролируемыми модулями и/или управляющими модулями.
Технический результат также достигается тем, что базовый модуль содержит хранилище измерений измерительных модулей контролируемых модулей, хранилище команд контролируемых модулей, хранилище настроек преобразования и отображения команд и измерений контролируемых модулей, модуль трансляции и преобразования данных и сообщений, модуль шифрования и дешифрования данных, модуль исполнения скриптов, реестр контролируемых модулей, хранилище настроек и журналов событий базового модуля, модуль шифрования и дешифрования сообщений, модуль пользовательского интерфейса.
Технический результат также достигается тем, что сервер содержит хранилище профилей пользователей, реестр базовых модулей, реестр контролируемых модулей, хранилище измерений измерительных модулей контролируемых модулей с историей измерений, серверное ядро, хранилище команд и шаблонов команд контролируемых модулей, хранилище правил управления контролируемыми модулями, модуль правил управления контролируемыми модулями, хранилище правил уведомлений пользователей, модуль правил уведомлений пользователей, модуль уведомлений пользователей.
Технический результат также достигается тем, что осуществляется уведомление пользователя о событиях в модулях системы на основе правил уведомлений, которые содержат, по крайней мере, одно условие и реакцию на условие.
Технический результат также достигается тем, что осуществляется уведомление пользователя о событиях в модулях системы посредством SMS-сообщений и/или писем электронной почты, и/или посредством систем и/или служб, и/или приложений для обмена сообщениями и данными/информацией, в том числе для мгновенного обмена сообщениями/обмена мгновенными сообщениями, и/или мессенджеров, и/или систем и/или служб, и/или приложений для передачи и/или получения сообщений, и/или систем и/или служб, и/или приложений для обмена данными/информацией, в том числе включая получение и передачу текстовой информации/данных, графических данных, видеоданных, изображений, звуковых данных, аудиофайлов, и/или сообщений в чатах и/или социальных сетях.
Технический результат также достигается тем, что управление модулями системы осуществляется с использованием правил автоматического управления модулями системы посредством, по крайней мере, одного модуля правил автоматического управления модулями системы, причем модулями системы осуществляется выполнение команд, в зависимости от содержания правила.
Технический результат также достигается тем, что сервер и/или контролируемый модуль, и/или базовый модуль содержат генератор событий, менеджер триггеров, хранилище скриптов, виртуальную машину, которая содержит менеджер прерываний, среду исполнения, загрузчик.
Технический результат также достигается тем, что данные на сервере хранятся в триггерной таблице и таблице байт-кодов управляющих программ базы данных; на базовом модуле данные хранятся в файлах внутри файловой системы, которые содержат триггерную таблицу и код скриптов, в контролируемом модуле данные хранятся в виде адресно-разделенных областей флеш-памяти, определенных в таблице адресации, причем под триггерную таблицу и код скриптов могут быть зарезервированы заведомо области памяти.
Технический результат также достигается тем, что на сервере осуществляется проверка данных, полученных от базового модуля, и/или пользователя, и/или сервера, и/или контролируемого модуля, причем осуществляется проверка права доступа пользовательского уровня, а также осуществляется проверка перечня допустимых инструкций виртуальной машины, характеристики памяти и другие программные и/или аппаратные характеристики.
Предлагаемое изобретение поясняется чертежами:
ФИГ. 1 иллюстрирует примерный вариант системы, реализующий способ, описываемый в рамках настоящего изобретения;
ФИГ. 2 иллюстрирует общую схему настоящего изобретения и обмен данными между модулями и устройствами пользователей в рамках примерного варианта системы, реализующий способ, описываемый в рамках настоящего изобретения;
ФИГ. 3 иллюстрирует примерный вариант (контролируемого/управляемого) устройства, согласно одному из вариантов осуществления настоящего изобретения;
ФИГ. 4 иллюстрирует примерный вариант управляющего модуля/микросхемы (чипа), согласно одному из вариантов осуществления настоящего изобретения;
ФИГ. 5 иллюстрирует примерный вариант базы/базового модуля, согласно одному из вариантов осуществления настоящего изобретения;
ФИГ. 6 иллюстрирует примерный вариант сервера, согласно одному из осуществлений настоящего изобретения;
ФИГ. 7 иллюстрирует блок-схемы процесса создания и загрузки скрипта/программы, согласно одному из вариантов осуществления настоящего изобретения;
ФИГ. 8 иллюстрирует примерный вариант общей схемы окружения системы выполнения скриптов, согласно одному из вариантов осуществления настоящего изобретения.
ФИГ. 9 иллюстрирует примерный вариант общей схемы виртуальной машины, согласно одному из вариантов осуществления настоящего изобретения;
ФИГ. 10 иллюстрирует примерный вариант осуществления хранения скриптов на различных узлах сети, согласно одному из вариантов осуществления настоящего изобретения;
ФИГ. 11 иллюстрирует примерный вариант структуры триггерной записи, согласно одному из вариантов осуществления настоящего изобретения;
ФИГ. 12 иллюстрирует примерный вариант общей схемы событийно-триггерной системы, согласно одному из вариантов осуществления настоящего изобретения;
ФИГ. 13 иллюстрирует примерный вариант диаграммы общей низкоуровневой логики вызова скрипта по ивенту/событию, согласно одному из вариантов осуществления настоящего изобретения;
ФИГ. 14 - ФИГ. 16 иллюстрируют примерный вариант принципа работы загрузчика скриптов на различных узлах описываемой в настоящем изобретении системы, согласно одному из вариантов осуществления настоящего изобретения;
ФИГ. 17 иллюстрирует примерный вариант схемы «проброса» команд/запросов в модули описываемой системы, согласно одному из вариантов осуществления настоящего изобретения;
ФИГ. 18 иллюстрирует примерный вариант общей структурной схемы записи и получения данных телеметрии, согласно одному варианту осуществления настоящего изобретения;
ФИГ. 19 иллюстрирует пример компьютерной системы общего назначения.
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями, обеспеченными для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется только в объеме приложенной формулы.
Используемые в настоящем описании изобретении термины «компонент», «элемент», «система», «модуль», «часть», в частности, «составная часть», и подобные предназначены (используются) для обозначения компьютерных сущностей (сущностей/объектов, связанных с компьютером, вычислительных сущностей), которые могут являться аппаратным обеспечением/оборудованием (например, устройством, инструментом, аппаратом, аппаратурой, составной частью устройства, в частности, процессором, микропроцессором, печатной платой и т.д.), программным обеспечением (например, исполняемым программным кодом, скомпилированным приложением, программным модулем, частью программного обеспечения и/или кода и т.д.) или микропрограммой (прошивкой/firmware). Так, например, компонент может быть процессом, выполняющемся/исполняющимся на процессоре, процессором, объектом, исполняемым файлом, программой, функцией, методом, библиотекой, подпрограммой и/или вычислительным устройством (например, микрокомпьютером или компьютером) или комбинацией программного или аппаратного обеспечения. В качестве иллюстрации: как приложение, запущенное на сервере, может быть компонентом или модулем, так и сервер может быть компонентом или модулем. По крайней мере, один компонент может находиться (располагаться) внутри процесса. Компонент может располагаться на одном вычислительном устройстве (например, компьютере) и/или может быть распределен между двумя и более вычислительными устройствами. Так, например, в частном случае приложение (компонент), может быть представлено серверным компонентом (серверной частью) и клиентским компонентом (клиентской частью). В частном случае, клиентский компонент устанавливается, по крайней мере, на одно вычислительное устройство, а серверный компонент устанавливается на второе вычислительное устройство, с которого, в частном случае, производится управление и/или настройка первого вычислительного устройства (и/или его составных компонентов/частей.
Система, реализующая способ (или, по крайней мере, одну часть способа), описываемый в рамках настоящего изобретения, примерный вариант которой изображен на ФИГ. 1, содержит, по крайней мере, одно (контролируемое) устройство/модуль (110А…110N). Такими устройствами могу являться различные (в том числе цифровые, аналоговые, комбинированные, механические и т.д.) устройства, в частности, но не ограничиваясь, электронные устройства, вычислительные устройства, в том числе вычислительные устройства пользователей, в том числе смартфоны, мобильные устройства/телефоны, ноутбуки, планшеты, персональные компьютеры и т.д., и/или, по крайней мере, один компонент/модуль таких устройств, например, различные датчики, исполнительные компоненты, например, двигатели, различные механизмы и т.д. Такими устройствами (и/или модулями устройств) могут являться, например, домашняя электроника (электронные устройства, используемые человеком/пользователем в доме и его окружении), бытовые приборы/бытовая техника (например, микроволновыми печами, холодильники, тостеры, кондиционеры, лампы накаливания, насосы и т.д.), профессиональное и/или техническое (электронное) оборудование/устройства (например, синтезаторы, процессоры эффектов, различное медицинское, строительное, торговое и другое оборудование/устройства/модули и другие), модули/устройства/приборы учета, в том числе модули/устройства/ приборы учета энергоресурсов, например, воды, газа, электричества, теплоты, а также модули/устройства/приборы отопления, водоснабжения, электроснабжения и т.д., а также любая их комбинация.
Система, например, изображенная на ФИГ. 1, также может включать, по крайней мере, один базу/базовый модуль/базовое устройство (120A…120N).
Также, описываемая система, примерный вариант которой изображен на ФИГ. 1 может включать, по крайней мере, один сервер 160.
Описываемая система также может включать, по крайней мере, одно (вычислительное) устройство пользователя/пользовательское устройство (130A…130N). Вычислительное устройство (130A…130N) пользователя (135A…135N), например, мобильное устройство (130Б, 130Е) (например, телефон, планшет, смартфон и т.д.) или стационарное устройство (130А, 130Д, 130Г) (например, рабочая станция 130Д, настольный компьютер/десктоп 130A, моноблок 130Г, компьютерный стенд, в том числе демонстрационный компьютерный стенд, рекламный компьютеризированный стенд, испытательный стенд, и т.д.).
Стоит отметить, что частным случаем пользователя является, по крайней мере, один администратор/модератор, т.е., в частном случае, лицо, заинтересованные, например, в работоспособности или поддерживающее работоспособность оборудования, например, сервера 160 и/или базы (120A…120N), устройств (110A…110N), хранилищ данных (170A…170N), сетей (компьютерных, мобильных и других), в том числе между модулями/устройствами, и других компонентов (включая компьютерные компоненты или компьютеризированные компоненты, в том числе программные и аппаратные компоненты), указанных на ФИГ. 1, или которые могут являться составной частью описываемой системы и/или могут быть подключены к упомянутой системе, например, связаны тем или иным известным в настоящее время или изобретенным в будущем прямым (например, посредством клемм и/или проводов, пайки, клепки и т.д.) или косвенным способом (посредством промежуточных устройств, включая различного рода преобразователи, в частности, преобразователи/конверторы информации, в том числе, данных в аналоговом виде, цифровом виде или в любом другом известном виде информации) с упомянутой системой, например, посредством проводной связи, беспроводной связи, посредством различного типа разъемов, проводов и т.д.
Также, описываемая система может содержать, по крайней мере, одно хранилище данных 170A…170N (которое в частном случае может быть реализовано реестром, например, реестром устройств, как более подробно будет описано далее), которое в частном случае осуществления изобретения может являться временным устройством хранения данных (например, Оперативным Запоминающим Устройством (ОЗУ)), постоянным хранилищем данных (например, (Программируемое) Постоянное Запоминающее Устройство (ПЗУ/ППЗУ)), в том числе, реализуемые, по крайней мере, одной микросхемой/набором микросхем, и т.д.
Элементы (в частном случае, составные части описываемой системы, реализующей способ, описываемый в рамках настоящего изобретения), изображенные на ФИГ. 1, могут быть связаны (180) между собой (и любыми другими модулями, устройствами и сервисами, способным получать информацию от модулей описываемой системы и/или передавать данные в описываемые модули системы) посредством локальной вычислительной сети (ЛВС), сети Интернет (140), (средствами) мобильной/спутниковой связи и/или посредством любого другого вида/способа проводной связи (например, посредством USB-интерфейса, интерфейса стандарта RS-232/СОМ-порта и т.д.) и/или беспроводной связи, например, Bluetooth, Wi-Fi, мобильной сотовой связи (GSM), в том числе 3G, 4G, LTE, в частности, в диапазонах 850/900/1800/1900 МГц, спутниковой связи, транкинговой связи и каналов передачи данных со сверхнизким энергопотреблением, формирующие сложные беспроводные сети с ячеистой топологией (ZigBee) и т.д.
Стоит отметить, что, по крайней мере, одна часть описываемого в рамках настоящего изобретения способа (или способ целиком) может осуществляться на сервере 160 и/или на пользовательском устройстве (130A…130N), и/или на устройстве (110A…110N), и/или на/в базовом модуле (120A…120N), в том числе, после установления связи таких устройств (или любого другого модуля описываемой системы) с сервером 160, и/или друг с другом, например, посредством, по крайней мере, одного протокола передачи данных, в том числе сетевого протокола, например, TCP/IP, HTTP/HTTPs (англ. Hyper Text Transfer Protocol, протокол передачи гипертекста), FTP (англ. File Transfer Protocol, протокол передачи файлов), РОР3 (англ. Post Office Protocol, стандартный протокол почтового соединения), SMTP (англ. Simple Mail Transfer Protocol, протокол, который задает набор правил для передачи почты), TELNET (протокол удаленного доступа), ХМРР (от англ. Extensible Messaging and Presence Protocol - расширяемый протокол обмена сообщениями и информацией о присутствии, ранее известный как Jabber - открытый, основанный на XML, протокол для мгновенного обмена сообщениями и информацией о присутствии в режиме, близком к режиму реального времени), DTN и т.д., в том числе протоколов, регламентированных стандартами IEEE 802.15.4 и ZigBee, включая существующие надстройки, например, спецификации сетевых протоколов верхнего уровня, в частности, уровня приложений APS (от англ. application support sublayer), и сетевого уровня NWK, использующих, в частном случае, сервисы нижних уровней, уровня управления доступом к среде MAC и физического уровня PHY и т.д.
Указанный выше сервер 160 может быть реализован веб-сервером и/или специализированным вычислительным устройством (в частности, компьютером) и/или специализированным оборудованием для выполнения на нем сервисного программного обеспечения (в том числе серверов тех или иных задач).
Элемент хранилище данных (170A…170N) на ФИГ. 1 (который, в частном случае, может являться составной частью, по крайней мере, одного модуля/устройства описываемой системы) является устройством для хранения информации/данных и может быть реализовано, по крайней мере, одним накопителем на жестких магнитных дисках (НЖМД/HDD, англ. hard (magnetic) disk drive), твердотельным накопителем (SSD, англ. solid-state drive), гибридным жестким диском (SSHD, англ. solid-state hybrid drive), сетью хранения данных (СХД/SAN, англ. Storage Area Network), сетевой системой хранения данных/сетевым хранилищем (NAS, англ. Network Attached Storage) и/или любым другим устройством, позволяющим осуществлять, по крайней мере, запись на устройство, чтение с устройства и/или хранение данных на устройстве. Данные в хранилищах данных (170A…170N) могут храниться в любом известном формате, например, в базе данных (БД), например, в виде, по крайней мере, одной таблицы или набора связанных или не связанных между собой таблиц базы данных. Стоит отметить, что, по крайней мере, одна упомянутая база данных может являться иерархической, объектной, объектно-ориентированной, объектно-реляционной, реляционной, сетевой и/или функциональной базой данных, каждая из которых может быть централизованной, сосредоточенной, распределенной, неоднородной, однородной, фрагментированной/секционированной, тиражированной, пространственной, временной, пространственно-временной, циклической, сверхбольшой базой данных и т.д., причем для управления, создания и использования баз данных могут использоваться различные системы управления базами данных (СУБД).
Также данные в хранилищах данных (170A…170N) могут храниться, по крайней мере, в одном файле, в частном случае, в виде текстового файла, либо данные могут храниться в любом, по крайней мере, одном другом известном в настоящее время формате хранения данных/информации или в формате данных, изобретенном позднее.
В частном случае осуществления настоящего изобретения, по крайней мере, одна часть описываемого способа и системы может являться программным обеспечением или частью приложения. Так, в частном случае, приложение может использоваться для контроля (в том числе, отслеживания параметров, управления, передачи данных и т.д., включая их составные элементы/модули), по крайней мере, одного описываемого модуля (110-170) системы, в том числе управляющего модуля 215 (например, реализованного микроконтроллером, микросхемой устройства 110 и т.д.), измерительных модулей/измерителей/датчиков 310, управляемых модулей 330 и т.д., причем, в частном случае, описываемые модули могут являться вычислительными устройствами или содержать, по крайней мере, одну часть вычислительных устройств. Также, по крайней мере, одна часть описываемого способа и системы может являться, по крайней мере, одним сервисом, реализованные например, программным кодом, скриптом/скриптами, а также являться исполняемыми компонентами различных систем (в частности, компьютерных систем) и подсистем (например, подсистем, ввода, подсистемы вывода (в частности, графическая подсистема), хранения (в частности, дисковая подсистема), передачи данных и т.д.).
Такое программное обеспечение, сервисы и/или другие способы, в частности, реализуемые программным или аппаратным способом, а также любая их комбинация, или любая их часть способны контролировать, отслеживать, информировать, управлять, в том числе посредством передачи данных, и т.д., по крайней мере, один модуль/устройство описываемой системы или другое программное обеспечение, сервисы, аппаратное обеспечение и/или модули (программные или аппаратные).
Также, описываемые модули и/или устройства могут быть реализованы как двумя и более модулями/устройствами, так и одним модулем/устройством. Также, в частном случае, по крайней мере, один модуль или, по крайней мере, одна его составная часть могут быть реализованы, по крайней мере, одним исполняемым файлом. Причем, в частном случае, модуль может быть реализован (являться) одним исполняемым файлом, который в свою очередь может быть связан, по крайней мере, с одной программной библиотекой, например, реализованной в виде dll-файла, являющегося скомпилированной формой библиотеки динамической компоновки (от англ. Dynamic Link Library), а также, по крайней мере, с одним файлом, например, содержащим служебный данные приложения, метаданные приложения, данные, необходимые для функционирования приложения, и/или сервисом (локальным и/или удаленным, например, веб-сервисом/веб-службой), включая приложения и сервисы, построенные на сервис-ориентированной архитектуре (от англ. service-oriented architecture/SOA), включая, но не ограничиваясь, технологии REST (от англ. Representational State Transfer - «передача состояния представления»), удаленный вызов процедур (от англ. Remote Procedure Call, RPC) и другие.
На ФИГ. 2 приведена общая схема настоящего изобретения и обмен данными (потоки данных, в том числе команд, скриптов, действий (пользователей) и т.д.) между модулями описываемой системы и между устройствами пользователей и модулями в рамках примерного варианта системы, реализующий способ, описываемый в рамках настоящего изобретения.
В частном случае осуществления настоящего изобретения описываемый способ и система предоставляют возможность пользователю (135A…135N) осуществлять контроль состояния, просмотр показателей/измерений и удаленное управление устройствами (110A…110N). Контроль состояния, просмотра показателей/измерений и (удаленного) управления (например, посредством устройств пользователей (130A...130N), сервера 160, базового модуля/базы 120A…120N и/или посредством, по крайней мере, любого одного другого модуля описываемой системы, в том числе посредством взаимодействия пользователя с упомянутыми модулями, включая взаимодействие пользователя напрямую (без промежуточных модулей системы) с упомянутыми модулями системы, включая устройства (110А…110N)), по крайней мере, с одним модулем описываемой системы, в том числе устройствами (110A…110N). Такое взаимодействие пользователя с модулями/устройствами может быть реализовано посредством использования в таких устройствах/модулях, по крайней мере, одного управляющего модуля 215 (ФИГ. 2), в частном случае, реализованным, по крайней мере, одной (управляющей) микросхемой/чипом (например, микросхемой СС2530, сс2531, сс2538, ATSAMR21Е18A, ATSAMR21G18A, ATmega256RFR2, ATmega2564RFR2 и другими), микрокомпьютером/микрокомпьютерами (например, Raspberry Pi, Intel Joule и т.д.), микропроцессором/микропроцессорами (например, Intel Atom, Qualcomm Snapdragon и т.д.) и т.д.
Так, по крайней мере, один управляющий модуль 215, по крайней мере, одного устройства 110 посредством, по крайней мере, одного подключения посредством способов, средств и устройств связи (180) может взаимодействовать с базовым модулем/базой 120, в частности, обмениваться данными, в частности отправлять/передавать данные (210) базе 120 (и/или в/на устройство пользователя (130A…130N), и/или на сервер 160), например, перечень команд, (в частности набор команд, которые запрограммированы в управляющем модуле/чипе 215 для удаленного управления устройством 110А…110N, в которое встроен управляющий модуль/чип 215, причем упомянутый перечень команд может быть передан, по крайней мере, с одного устройства 110А…110N на базу/базовый модуль 120A…120N, и, например, далее на сервер 160, причем база/базовый модуль 120A…120N и/или сервер 160 упомянутый перечень команд обрабатывает и выводят пользователю, по крайней мере, одну команду, например, в виде html-формы, в которую пользователь 135A…135N для заданной (нужной пользователю) команды вводит данные и инициирует передачу, по крайней мере, одной команды, по крайней мере, на одной упомянутое устройство, например, посредством нажатия кнопки «Выполнить» в веб-интерфейсе, приложении и т.д., и такая переданная команда выполняется/исполняется на упомянутом устройстве), измерения/значения измерений (в частности, измерительных модулей/датчиков/измерителей (310А…310N)), результаты выполнения команд (результат выполнения команды может быть, по крайней мере, трех видов: в виде (просто) статуса (например, в виде булевой переменной), что команда выполнена успешно, в виде сообщения, например, об ошибке, и/или в виде выходных параметров, причем сообщение (об ошибке), например, о неверном значении параметра (например, пользователь решил в чайнике нагреть воду до 150 градусов Цельсия, на что чайник не рассчитан), а выходные параметры являются значениями измерений, например, измерителями 310А…310N, о которых должна сообщить команда (в частности, должен сообщить чип 215 и/или устройство 110A…110N посредством упомянутого чипа, в частности, посредством упомянутой команды или другой команды, содержащей данные выполнения упомянутой команды) по результатам ее (команды, в том числе, управляющей команды) выполнения, так, например, для упомянутого чайника, команда «Нагревать в течение минуты» (которая записана/прописана в чипе 215), по результатам выполнения помимо (просто) статуса успешного выполнения такой (управляющей) команды еще может возвращаться/отправляться температура (значение температуры, зарегистрированной измерителем 310A…310N, например, установленном в чайнике), до которой нагрелась вода в чайнике), и т.д., и принимать/получать данные 220, например, команды на управление, как описано выше.
Стоит также отметить, что, по крайней мере, один базовый модуль/база 120A…120N может осуществлять передачу (передавать), по крайней мере, на одно устройство 110A…110N скрипты, команды и измерения, результаты выполнения команд, причем результаты выполнения команд и команды могут быть переданы в формате JSON, что более подробно описаны далее.
В частном случае осуществления изобретения информация/данные между управляющим модулем 215 и базой 120 (и/или любым другим, по крайней мере, одним модулем/устройством или их составными частями, описанными в рамках настоящего изобретения) могут быть переданы, например, с использованием радиочастотных сигналов (например, ZigBee, Wi-Fi и т.п., в частности, в зависимости от модификации модуля 215, базы 120, устройства 110 и т.д.).
// сообщения:
---
// cmdmes - отправка команд/наборов команд (все устройства, все их команды и датчики/измерители):
//
{"id":22, "type":"cmdmes", "devs":[{"devid":''1, ''name'':''Чайник'', ''cmd'':[{''cmdid'':1, ''name":"Включение", "params":[{"id":3, "name":"Через сколько времени включить (сек)", "type":"choice", "choice":{"of'':''Выключить'', ''on'':''Выключить''}, ''val'':10, ''min'':0, ''max'':50, ''step'':5, ''required'':1}]}], "measures'':[{''id'':1, ''name'':''Термoмeтp (градусы)", ''type":"int"}]}]}
{
"id": 22, //ID (идентификатор) базы
"mesid":1223312312, //уникальный id сообщения
"type": "cmdmes", //Тип сообщения
"devs": [ //Список устройств
{
"devid": 1, //ID устройства
"name": "Чайник", //Наименование устройства для портала
"cmd": [
{
"cmdid": 1, //ID команды
"name": "Включение", //Наименование команды для портала
"params": [ //Список параметров
{
"id": 1, //ID параметра
"name": "Включение", //Наименование параметра
"type": "choice", //Тип параметра
"choice": { //Возможные значения пареметра
"on": "Включить",
"off'': "Выключить"
},
"required": 1 //Обязательность ввода данного параметра
},
{
"id": 2,
"name": "Через сколько времени включить (сек)",
"type": "int",
"min": 1, //Минимально возможное значение
"max": 50, //Максимально возможное значение
"required": 0
},
{
"id": 3,
"name": "Через сколько времени включить (сек)",
"type": "range", //Данный параметр выводится в виде слайдера с ползунком
"cmdval": 10, //Значение по умолчанию (может отсутствовать)
"min": 0,
"max": 50,
"step": 5, //Шаг передвижения ползунка
"required": 1
}
]
}
],
"measures": [ //Список датчиков
{
"id": 1, //ID датчика
"name": "Термометр (градусы)", //Наименование датчика
"type": "int" //Тип отображения данных датчика на портале
}
]
}
]
}
// cmdsend - отправка команды конкретной базе на конкретное устройство
//
{''id'':22, ''mesid'':1223312312, ''type'':''cmdsend'', ''devs'':[{"devid'':1, ''cmd'':[{''cmdid'':1, ''value'':1, ''params'':[{''id'':1, ''val'':30}]}]}]}
{
"id": 22, //ID базы
"mesid":1223312312, //уникальный id сообщения
"type": "cmdsend", //Тип сообщения
"devs": [ //Список устройств
{
"devid": 1, //ID устройства
"cmd": [
{
"cmdid": 1, //ID команды
"value": 1, //Значение команды
"params": [ //Дополнительные параметры для команды
{
"id": 1, //ID параметра
"val": 30//3начение параметра
}
]
}
]
}
]
}
// measures - измерения от базы (например, база сама присылает каждый промежуток времени, например, каждые 15 сек)
//
{"id'':22, ''mesid'':1223312312, ''type'':''measures'', "devs":[{''devid'':1, ''measures'':[{"id":1, ''val":45}, {"id":2,"val'':2000}]}]}
{
"id": 22, //ID базы
"mesid": 1223312312, //уникальный id сообщения
"type": "measures", //Тип сообщения
"devs": [ //Список устройств
{
"devid": 1, //ID устройства
"measures": [ //Список измерений
{
"id": 1, //ID датчика
"val": 45 //Значение
},
{
"id": 2, //ID датчика
"val": 2000 //Значение
}
]
}
]
}
// cmdmea - запрос измерения с устройства
//
{"id":22,"mesid":1223312312,"type":"cmdmea", "devs":[{"devid":1, "measure":1}]}
{
"id": 22, //ID базы
"mesid":1223312312, //уникальный id сообщения
"type": "cmdmea", //Тип сообщения
"devs": [ //Список устройств
{
"devid": 1, //ID устройства
"measure": 1 //ID датчика или отсутствует (тогда в ответ могут приходить измерения со всех датчиков/измерителей)
}
]
}
// cmdpass - отправка пароля базой для отображения конкретной базы в личном кабинете
// {"id": 22, "mesid":1223312312, "type": "cmdpass", "pass": "123456"}
{
"id": 22, //ID базы
"mesid":1223312312, //уникальный id сообщения
"type": "cmdpass", //Тип сообщения
"pass": "123456" //пароль базы для отображения в личном кабинете
}
// cmdmear - ответ базы на запрос cmdmea. По сути, может повторять тип measures.
//
{"id":22,"mesid":1223312312,"type":"cmdmear","devs":[{"devid":1, "measures":[{"id":1, "val":45}, {"id":2, "val":2000}]}]}
{
"id": 22, //ID базы
"mesid":1223312312, //уникальный id сообщения
"type": "cmdmear", //Тип сообщения
"devs": [ //Список устройств
{
"devid": 1, //ID устройства
"measures": [ //Список измерений
{
"id": 1, //ID датчика/измерителя
"val": 45 //Значение
},
{
"id": 2, //ID датчика
"val": 2000 //Значение
}
]
}
]
}
// error - OF в любой момент может ответить базе ошибкой, например, если база послала "битое" сообщение
// {"id": 22, "mesid":1223312312, "type": "error", "value": "Неверный формат сообщения"}
{
"id": 22, //ID базы
"mesid":1223312312, //уникальный id сообщения
"type": "error", //Тип сообщения
"value": "Неверный формат сообщения" //Значение ошибки или отсутствует
}
// cmdsendr - ответ от базы ядру на cmdsend
// {"id": 22, "mesid":1223312312, "type": "cmdsendr", "error": true, "value": "Устройство недоступно"}
{
"id": 22, //ID базы
"mesid":1223312312, //уникальный id сообщения
"type": "cmdsendr", //Тип сообщения
"error": true, //Произошла ли ошибка
"value": "Устройство недоступно" //Значение ошибки или отсутствует
}
// Остальные ответы об успешном принятии сообщения от базы или базой могут быть реализованы внутри/посредством протокола ХМРР.
Также, базовый модуль 120 может получать (230) с сервера 160, а сервер передавать в базовый модуль, такие данные, как команды управления устройствами/модулями 110А…110N, 120A…120N и т.д., описанные далее скрипты, ответы на запросы времени и обновлений прошивки базы и т.д.
- для числового значения измерения - значение измерения меньше значения, указанного пользователем;
- для числового значения измерения - значение измерения меньше или равно значению, указанному пользователем;
- для числового значения измерения - значение измерения больше значения, указанного пользователем;
- для числового значения измерения - значение измерения больше или равно значению, указанному пользователем;
- для любого значения - значение измерения совпадает со значением, введенным пользователем;
для любого значения - значение измерения не совпадает со значением, введенным пользователем;
- для любого значения - значение измерения совпадает с любым значением из списка, указанного пользователем;
- для любого значения - значение измерения не совпадает ни с одним значением из списка, указанного пользователем.
Событиями по командам могут являться:
- команда выполнена успешно;
- в процессе выполнения команды возникла ошибка;
- один или несколько параметров, возвращаемых командой, равны значениям, указанным пользователем;
- один или несколько параметров, возвращаемых командой, не равны значениям, указанным пользователем.
В частном случае осуществления изобретения, подключение к сети Интернет, по крайней мере, одного модуля описываемой системы может осуществляться посредством шлюза/Интернет-шлюза 150 (в частном случае, являющимся программным обеспечением, обеспечивающим возможность организации передачи трафика/данных между разными сетями), в частности, в случае подключения к локальной сети посредством кабеля "Витая пара" или Wi-Fi или через оператора мобильной связи (GPRS/3G/4G/LTE), в зависимости от модели/модификации/типа базового модуля (120…120N).
Также, в частном случае осуществления изобретения обмен информацией/данными между базовым модулем 120 и сервером 160 может осуществляться (может быть реализовано) любым из следующих способов: посредством сокетного соединения (от англ. Socket connections, например, сокетные соединения XML (XML Sockets) и бинарные (двоичные) сокетные соединения) и/или посредством протокола ХМРР (от англ. Extensible Messaging and Presence Protocol - расширяемый протокол обмена сообщениями и информацией о присутствии, ранее известный как Jabber - открытый, основанный на XML, протокол для мгновенного обмена сообщениями и информацией о присутствии в режиме, близком к режиму реального времени).
В частном случае осуществления изобретения управляющий модуль 215 может быть подключен/установлен (в том числе встроен, например, посредством пайки, клемм и т.д.) к устройству/в устройство 110, причем в хранилище команд управляемых модулей/компонент устройства 420 могут быть записаны команды устройства 110 (причем команды могут быть записаны, в частном случае, при программировании/«прошивке» управляющего модуля/чипа 215, например, под определенное/конкретное устройство 110A…110N, причем команды могут быть дозаписаны и/или перезаписаны позже, например, при перепрограммировании/ «перепрошивке» управляющего модуля/чипа 215), которые могут быть выполнены удаленно, как было описано выше, в частности, команды выполняемые на устройствах 110A…110N. Так, например, по крайней мере, одна упомянутая команда может быть отправлена/передана с базы 210A…210N и/или сервера 160 на управляющий модуль/чип 215, затем упомянутый чип выполняет полученную команду, в частности, посредством передачи сигналов на определенные узлы устройства (в зависимости от команды), например, на измерители 310A…310N и/или управляемые модули 330A…330N и т.д. Также, удаленное выполнение подразумевает получение, по крайней мере, одной упомянутой команды с базы или сервера. Так, на устройстве может быть реализован функционал/функциональность, который может осуществляться/выполняться непосредственно при контакте (взаимодействии) пользователя с устройством 110A…110N, что в частном случае, не является удаленным управлением такими устройствами.
Также, при подключении управляющего модуля 215 в устройство/модуль 110 к управляющему модулю 215 могут быть подключены измерители (310А-310N) и управляемые элементы/компоненты устройства (330A-330N), команды по управлению которыми записаны в управляющий модуль 215, в частности, в хранилище команд управляемых модулей/компонент устройства 420.
Стоит отметить, что, по крайней мере, одно устройство 110А…110N обладает (имеет) определенным функционалом/функциями, заложенный (в частности предопределенный/предварительно заданный, записанный и т.д.) в него, по крайней мере, производителем такого устройства. Для управления такими функциями (для осуществления упомянутого функционала) производитель создал (в частности наделил устройство, добавил в устройство, подключил к устройству и т.д.) органами управления (рычагами управления/узлами устройства/управляемыми элементами/компонентами устройства (330A-330N): механическими, электронными, и/или информационными и т.д. Причем, производитель мог предусмотреть возможность управлять такими рычагами управления устройством, в частности, посредством компонентов устройства 420 и/или компонентами устройства 420. Так, в частном случае осуществления настоящего изобретения управляющий модуль/микросхема/чип 215 (в частности, программируемый/запрограммированный/«прошитый», как описывается в рамках настоящего изобретения) может быть использован, по крайней мере, с одним из устройств 110A…110N, в частности, встроен в упомянутое устройство, например, производителем, с целью управления и контроля упомянутых контролируемых компонентов пользователем, в частности, удаленно (посредством удаленного управления, управления на расстоянии, посредством других устройств, сервисов и описываемых модулей системы и т.д.). Причем упомянутое программирование управляющего модуля может включать добавление (в частном случае, «прошивку») управляющего модуля командами, описываемыми в рамках настоящего изобретения, и настройку входов и выходов упомянутого управляющего модуля/устройства для взаимодействия с упомянутыми узлами устройства 110A…110N. Таким образом, в частном случае, управляемые компоненты, а также управление ими и их контроль могут зависеть от конкретного устройства 110A…110N и/или пожеланий/намерений пользователя, и/или пожеланий/намерений производителей устройств, и/или субъекта, осуществляющего подключение управляющего устройства/модуля (в частном случае, его установкой/встраиванием/интегрированием) по удаленному управлению устройств 110A…110N, в частном случае, реализованных описываемыми командами. В частном случае, осуществления настоящего изобретения управляемыми компонентами могут являться составные части устройств, например, дисплей телевизора, электромотор стиральной машины, таймер микроволновой печи, блок управления проектором и т.д. и/или их составные части/модули, позволяющие осуществлять управление такими составными частями, в частности, как было описано выше.
В частном случае осуществления настоящего изобретения измерители (310A-310N) и/или управляемые элементы/компоненты (330A-330N) могут являться частью устройств/модулей 110/110A…110N или являться подключаемыми/подключенными элементами (измерителями и/или управляемыми модулями), в частном случае являющиеся дополнительными измерителями, которые, например, могут быть установлены/подключены дополнительно к устройству/модулю 110 или модулю 215, например, выносные/внешние измерители либо измерители других устройств, например, устройств/модулей 110A-110N. Так, например, измерителем может являться (встроенный) датчик/измеритель температуры духовой печи или стиральной машины, датчик/измеритель движения (акселерометр) детской игрушки и т.д. либо термометр (измеритель), подключенный к системе кондиционирования помещения и расположенный за пределами системы кондиционирования, например, в противоположном от кондиционера углу помещения.
В частном случае, подключение (упомянутых выше) внешних модулей и/или измерителей может осуществляться посредством, по крайней мере, одного разъема (в том числе, где одна часть разъема присоединена, например, подпаяна, к контактам модуля/устройства 110 или модуля 215, а вторая часть разъема может быть подключена к упомянутому модулю или измерителю), например, USB-разъема, различных видов клемм и т.д.
В частном случае осуществления настоящего изобретения для обеспечения взаимодействия управляющего модуля 215 с измерителями и управляемыми модулями/компонентами в управляющий модуль 215 может содержать (могут быть использованы) модуль сбора и обработки измерений 410 и модуль управления 450. Модуль сбора и обработки измерений 410 осуществляет опрос измерителей 430 (в частности, посредством портов, в частном случае, цифровые порты, к которым подключены упомянутые выше узлы устройств/модулей, управляемые компоненты, измерители и т.д.) и сбор измерений измерителей 310 передачу их в модуль трансляции и преобразования данных 430.
Модуль управления 450 осуществляет передачу команд, полученных из модуля трансляции и преобразования данных 430 команд, а также осуществляет передачу упомянутых команд необходимым компонентам (в частности, упомянутым выше узлам устройств, на которых будет выполнена/должна быть выполнена, по крайней мере, одна описываемая команда) и осуществляет обработку результатов выполнения команд (как было описано выше, например, после передачи команды или сигнала, в частном случае, электрического тока, на упомянутый выше узел устройства в модуле управления/управляющем модуле 215 запрограммирована реакция в виде необходимости узнать/установить упомянутым устройством значение, по крайней мере, одного параметра до и после выполнения упомянутой команды с целью вычисления/установления результата выполнения такой команды, в частности, если значение изменилось, то команда выполнилась успешно, с целью узнать пользователем об успешном выполнении такой команды).
Модуль трансляции и преобразования данных 430 осуществляет преобразование полученных данных от измерителей 310A-310N и из хранилища команд управляемых компонент устройства 420 в формат Базового модуля/Базы 120 (причем, в частном случае осуществления настоящего изобретения, упомянутые данные могут храниться в текстовом формате или, в частном случае, когда сообщения о командах (сообщения с командами) передаются между модулями описываемой системы передаются, например, в формате JSON, полученные данные, в частности, команды в виде текста, например, с базового модуля/базы 120A…120N могут быть распарсены/разложены/разобраны (он англ. parsing - синтаксический анализ) на более низкий уровень, в частности, на сигналы, которые управляющий модуль/чип 215 может отправить на упомянутые выше узлы устройства 110A…110N с целью исполнения/выполнения таких команд) и осуществляет передачу преобразованных данных посредством средств модуля шифрации и дешифрации данных 440 (в частности, осуществляется шифрование/дешифрование; причем данные, которые получает управляющий модуль/чип 215, например, посредством ZigBee, передаются в модуль 440, дешифруются и дальше передается в модуль трансляции и наоборот, причем в качестве шифрования может быть использовано AES-шифрование, причем в модуле 440 могут храниться ключи для упомянутого шифрования/дешифрования), по крайней мере, в один базовый модуль/базу 120. Также модуль трансляции и преобразования данных 430 осуществляет преобразование, полученных, по крайней мере, от одного базового модуля (120A…120N) команд (в частности, как было описано выше) на управление, в формат модуля управления 450, а также осуществляет передачу преобразованных команд на управление в модуль управления 450, а также осуществляет преобразование полученных от модуля управления 450 результатов выполнения команд в формат базового модуля (120A…120N) и осуществляет их передачу посредством модуля шифрования и дешифрования данных 440, по крайней мере, в один базовый модуль (120A…120N).
Передача данных между управляющим модулем 215 и, по крайней мере, одним базовым модулем может осуществляться в зашифрованном виде (в частности, как было описано выше), которое в обоих модулях (контролируемые модули/устройства 110А…110N (или модули 215) и базовые модули/устройства 120A…120N) осуществляют соответствующие модули шифрования и дешифрования данных (440 - в контролируемых модулях/устройствах 110…110N и 590 - в базовых модулях 120A…120N).
В одном из осуществлений настоящего изобретения данные, в частности, перечни команд (в частности, как было описано выше), измерения упомянутых измерителей/модулей 310A…310N и результаты выполнения команд (в частности, как было описано выше), полученные, по крайней мере, от одного контролируемого устройства 110A…110N или от модуля 215, могут быть преобразованы, по крайней мере, в одном базовом модуле 120A…120N, в частности, в модуле трансляции и преобразования данных и сообщений 510 (ФИГ. 5), в формат, по крайней мере, одного хранилища (520, 530 и/или 560) и могут быть сохранены, по крайней мере, в одном из хранилищ данных, например, в (локальном) хранилище измерений (зарегистрированных) устройств/модулей 520, (локальном) хранилище команд (зарегистрированных) устройств 530 и/или хранилище настроек базы и журналов изменений/логов 560. Так, в хранилище измерений устройств/модулей 520 могут быть сохранены (в том числе после одного из упомянутых выше преобразований и/или обработки), по крайней мере, упомянутые измерения упомянутых измерителей/модулей 310А…310N, в хранилище команд устройств 530 могут быть сохранены, по крайней мере, упомянутые перечни команд, а в хранилище настроек базы и журналов изменений/логов 560 могут быть сохранены, по крайней мере, упомянутые результаты выполнения команд.
Стоит отметить, что хранилище 520, хранилище 530 и/или хранилище 560 могут быть реализованы по крайней мере, одним хранилищем, т.е. в частном случае являться одним хранилищем данных, в том числе, являться одной базой данных или несколькими базами данных, причем данные в базе данных могут храниться, по крайней мере, в одной таблице и/или, по крайней мере, в одном файле.
В одном из осуществлений настоящего изобретения базовые модули/базы (120A…120N) могут принимать/получать данные 210 от (контролируемых) модулей/устройств 110A…110N (или от модулей 215), которые, в частном случае, могут быть зарегистрированы, по крайней мере, в одном базовом модуле 120A…120N.
Стоит отметить, что (контролируемые) модули/устройства 110A…110N могут быть зарегистрированы, по крайней мере, в одном базовом модуле (120A…120N), например, по крайней мере, одним пользователем 135A…135N (и/или, по крайней мере, одним упомянутым выше администратором/модератором, в том числе администратором модулей/устройств 110A…110N, сервера 160, базовых модулей 120A…120N и других модулей, описываемых в рамках настоящего изобретения, причем, в частном случае, пользователь 135 может являться таким администратором/модератором) в модуле (пользовательского) (веб-)интерфейса базы 570. По крайней мере, в одном модуле интерфейса базы 570 может осуществляться регистрация, по крайней мере, одного устройства/модуля 110A…110N посредством передачи в упомянутый модуль 570 идентификационных данных (в частном случае, являющихся номером устройства/модуля 110A…110N, например, цифровым, буквенным, буквенно-цифровым и любым другим форматом, позволяющим идентифицировать упомянутое устройство), по крайней мере, одного устройства/модуля 110A…110N, которые необходимо зарегистрировать в базовом модуле 120A…120N, и посредством сохранения таких идентификационных данных. В частном случае, регистрация устройств/модулей 110A…110N является привязкой таких модулей к базовым модулям 120A…120N (связью, определяющей принадлежность устройств/модулей 110A…110N базовым модулям 120A…120N), и, в частности, к, по крайней мере, одному пользователю, что, в частном случае, позволяет базовому модулю/базе 120/120A…120N устанавливать связь/создавать сеть с зарегистрированными (на ней) устройствами 110A…110N и осуществлять с ними взаимодействие, причем упомянутый базовый модуль может осуществлять фильтрацию и обработку данных от зарегистрированных (на ней) устройств, а также осуществлять отправку на такие зарегистрированные устройства.
Так, в частном осуществлении настоящего изобретения, устройства/модули 110A…110N могут быть зарегистрированы пользователем посредством использования модуля 570.
Зарегистрированные в базовых модулях 120A…120N устройства/модули 110А…110N и их идентификационные данные сохраняются, например, средствами модуля 570 или модуля 550, в реестре зарегистрированных устройств 550. Модуль реестра (зарегистрированных) устройств 550 может быть использован модулем трансляции и преобразования данных и сообщений 510 для фильтрации данных от незарегистрированных устройств. Стоит отметить, что, в частном случае, реестр является базой данных, сохраненные данные в которой могут быть использованы (например, прочитаны, записаны, удалены, изменены и т.д.), по крайней мере, одним модулем описываемой системы. Так, в частном случае, в модуль 510 могут быть переданы данные при получении сообщений от устройств 110A…110N и/или при отправке сообщений на упомянутые устройства, в частности определения того, от какого устройства пришла/была получена информация (были получены данные), например, для того, чтобы можно быть посредством, по крайней мере, одного модуля соотнести/сопоставить их с другими данными этого же устройства (полученными данными) и/или другого устройства 110A…110N; и/или определение того, по какому каналу передавать данные конкретному устройству. Стоит также отметить, что под фильтрацией, в частном случае, понимается невозможность (или возможность) установить соединение/связь между базами/базовыми модулями 120A…120N и устройствами 110A…110N, т.е., в частном случае, с незарегистрированными упомянутыми устройствами упомянутые базы не устанавливают соединение. Таким образом, по крайней мере, один упомянутый базовый модуль может получать сообщения, по крайней мере, от одного такого незарегистрированного устройства и посредством осуществления упомянутой фильтрации не обрабатывать такие сообщения и/или отсекать, не реагировать на них и т.д.
В модуле (веб-)интерфейса пользователя 570 пользователь может осуществлять просмотр устройств/модулей 110A…110N, в том числе зарегистрированных, а также может осуществлять просмотр, по крайней мере, значений измерений таких модулей/устройств, команды устройств и т.д. Также, в модуле (веб-)интерфейса базового модуля 570 могут осуществляться различные действия (пользователем, администратором/модератором и/или средствами, по крайней мере, одного модуля описываемой системы), например, может быть осуществлено изменение наименований измерений и команд, названий параметров команд, преобразование значений измерений и параметров команд к другим величинам и т.д. Так, при упомянутом изменении наименования измерений с устройства 110A…110N может быть получено (базовым модулем 120A…120N, сервером 160 и т.д.) название измерения, например, «TempC» (в частности, соответствующее значению, зафиксированному, по крайней мере, одним измерителем 310A…310N температуры на улице), и пользователь посредством упомянутого в веб-интерфейса базового модуля 120A…120N может изменить это название на (постоянное или временное) другое название, например, название «Температура на улице». Также, при упомянутом изменении наименования команд с устройства 110A…110N приходит (может быть получена, по крайней мере одним модулем описываемой системы, в частности, базовым модулем 120A…120N, сервером 160 и т.д.) команда с названием «Off» (в частности, обозначающим значение/функцию отключения, например, устройства с которого пришла команда), и пользователь средствами веб-интерфейса базового модуля может изменить название полученной команды, по крайней мере, на одно другое название, например, «Отключить плиту», «Выключить устройство», «Отключение» и/или «Выкл.» и т.д. Также, при упомянутом изменении названий параметров команд с устройства 110А…110N может быть получена команда, у которой один из параметров называется «channel», и пользователь может изменить в веб-интерфейсе базы/базового модуля название этого параметра на другое название, например, «Номер канала» и/или «Канал» и т.д. Также, при упомянутом преобразовании значений измерений с модуля/устройства 110A…110N приходит (может быть получено) измерение (значение измерения, например, по крайней мере, одним измерителем 310A…310N) температуры в Цельсиях, а пользователь 135A…135N желает видеть (например, в веб-интерфейсе 570) эту температуру в Фаренгейтах. Пользователь в веб-интерфейсе базы 570 задает формулу для этого измерения, например, Тф=х*9/5+32, где Тф - температура в Фаренгейтах, x - температура, полученная с измерителя, например, в Цельсиях. После этого значение данного измерения выводится в Фаренгейтах, т.е., в частном случае, может быть отображена пользователю, например, в веб-интерфейсе 570. Также, упомянутое преобразование параметров команд к другим величинам, в частности, осуществляется как и для преобразований значений измерений, описанных выше, но для параметров команд. Так, например, у команды существует параметр с именем/названием «Электропитание», у которого существуют два значения «Включено» (например, значения «1», true/истина и т.д.) и «Выключено» (например, значения «1», true/истина и т.д.). Пользователь в веб-интерфейсе базы 570 может указать вместо этих значений значения (или вместо названий - названия) «On» и «Off», и теперь для задания этого параметра пользователь может вводить новые значения.
Таким образом, в частном случае осуществления изобретения пользователь может задавать правила преобразования, а далее описанные подстановки и преобразования осуществляет, например, модуль веб-интерфейса 570, например, используя/вычитывая правила преобразования из хранилища настроек преобразования и отображения данных устройств/модулей 540.
Результаты таких действий (как и сами действия, например, в виде журнала событий/изменений), в частном случае, являющиеся настройками модулей/устройств 110A…110N и/или базовых модулей 215A…215N и т.д., могут быть сохранены в хранилище настроек преобразования и отображения команд и измерений зарегистрированных устройств 540, причем в частном случае осуществления изобретения упомянутые действия и результаты таких действий/настроек (сохраненных, например, в виде команд/инструкций и/или значений) могут быть переданы в управляющие модули 215A…215N, модули/устройства 110 (или в модули 215) и т.д. либо могут не передаваться в указанные модули. Указанные выше действия/настройки могут быть использованы средствами описываемой системы (например, по крайней мере одним модулем или составным элементов/модулем таких модулей) для вывода информации в (веб-)интерфейсе 570 и ввода информации пользователем в (веб-)интерфейсе Базы, на Интернет-портале и в мобильных приложениях, причем ввод и отображение таких данных может быть осуществлено посредством текстовых элементов/интерфейсов и/или графических элементов, в частности интерфейсом пользователя, например, Графическим Интерфейсом Пользователя (ГИП). Так, например, в (веб-)интерфейсе базы 570 могут быть отображены (например, пользователю) уже преобразованные с учетом упомянутых настроек данные значения измерений устройств модулей 110А…110N.
Также, в посредством/средствами модуля (веб-)интерфейса базы 570 может быть инициировано (пользователем и/или по крайней мере, одним модулем описываемой системы) выполнение, по крайней мере, одной инструкции/команды (в том числе, программного кода, например, скриптов, и т.д.), по крайне мере, на одном из (зарегистрированных) устройств/модулей 110A…110N (или модулей 215) и/или, по крайней мере, одного базового модуля 120A…120N, например, посредством передачи (в том числе пользователем, например, посредством интерфейса, например, текстовых полей, графических элементов/кнопок и т.д.) в модуль 570, по крайней мере, одной команды (на управление) и/или входных параметров для, по крайней мере, одной команды, после чего может быть отображен (например, модулем/в модуле 570, в частности, посредством графического или текстового интерфейса в веб-браузере, на вычислительном устройстве 130A…130N пользователя 135A…135N, сервере 160 и т.д.) результат выполнения такой, по крайней мере, одной команды. В частном случае, упомянутая команда (на управление) передается в модуль трансляции и преобразования данных и сообщений 510, который преобразует ее в формат данных модуля/устройства 110A…110N (или модуля 215) и передает ее посредством модуля шифрации и дешифрации данных 590, по крайней мере, в один модуль/устройство 110A…110N (или модуль 215). Причем команда на управление может являться командой включения устройства/модуля 110А…110N (например, включения полива грядки) с определенными параметрами (в частности, заданными пользователем), например, в течение заданного времени (секунда, минута, часы, дни и т.д.), где, в частном случае, результатом (выполнения команды) может являться ошибка (что нет воды для полива) или статус успешного выполнения команды (после полива). Также, в частном случае, упомянутые преобразования могут использоваться для отображения информации в том или ином формате, виде и т.д., как описано выше. Под упомянутым выше форматом устройства/модуля, в частном случае, понимается сообщение, которое передается от баз 120A…120N к устройствам 110А…110N. Внутри базы (средствами, по крайней мере, одной из упомянутых баз) команды между модулями/составными элементами/компонентами базы могут быть переданы в формате удобном/приемлемом для работы (в частности, взаимодействия с ними) внутри базы (например, для вызова внутренних процедур, функций таких модулей и т.д.). Причем в/на устройство 110А…110N может быть отправлена (комплексная) команда, в частном случае, включающая (всю) информацию для ее идентификации на стороне устройства и выполнения. Таким образом, в частном случае, команда имеет формат, «понимаемый»/воспринимаемый (который может быть обработан) устройством. Таким образом, преобразования, которые осуществляются в веб-интерфейсе базы 570 могут не осуществлять преобразования упомянутого формата.
Посредством модуля (веб-)интерфейса 570 могут быть изменены (например, пользователем или средствами описываемой системы) настройки базового модуля/базы 120 (или любого другого модуля описываемой системы), в том числе хранящиеся/сохраненные в хранилище настроек базы и журналов событий/логов 560, например, настройки подключения к локальной сети и/или сети Интернет (например, перечень параметров для подключения, например, к сети Wi-Fi, в частности настраивается подключение базы/базового модуля к локальной сети и/или сети Интернет), взаимодействия (в частности, передача сообщения на сервер 160 и получение с сообщений с сервера 160, как было описано выше) с сервером/серверным модулем/модулем сервера/ 160, прав доступа пользователей, по крайней мере, к одному базовому модулю, например, к конкретному базовому модулю (причем права доступа пользователей могут храниться в модуле 560), в частности, к веб-интерфейсу 570 базы (причем может существовать несколько ролей пользователя, определяющих свой набор прав для доступа к веб-интерфейсу базы), а также могут быть просмотрены, например, пользователем журналы событий (в частном случае, сохраненные в файле журналов событий/лог-файлах/логах, от англ. log) взаимодействия базовых модулей 120A-120N с контролируемыми устройствами/модулями 110А-110N и сервером 160.
Стоит отметить, что модуль трансляции и преобразования данных и сообщений 510 на периодической основе (в частности, по внутреннему таймеру модуля, где периодичность может определяться при производстве, по крайней мере, одного модуля системы и может быть запрограммировано/»прошито» в «прошивке» модуля) осуществляет сбор информации/данных из (локального) хранилища измерений зарегистрированных устройств 520 и/или локального хранилища команд зарегистрированных устройств 530 с учетом настроек/данных (в частности, данные отправляются на интернет-портал 660 в преобразованном для пользователя виде, в соответствии с пользовательскими настройками преобразований в веб-интерфейсе базы, как было описано выше) из хранилища настроек преобразования и отображения команд и измерений зарегистрированных устройств 540 и далее осуществляет преобразование полученных данных в формат сервера 160, и передает преобразованные данные посредством/через (с использованием средств) модуля шифрации и дешифрации сообщений 580 на сервер 160, как описано далее.
Также модуль трансляции и преобразования данных и сообщений 510 осуществляет преобразование полученных от сервера 160 команд на управление в формат управляющего модуля 215 и передает преобразованные команды на управление в управляющий модуль 215, а также осуществляет преобразование полученных из управляющего модуля 215 результатов выполнения команд в сообщения формата сервера 160 и передает преобразованные результаты выполнения команд/сообщения посредством модуля шифрации и дешифрации сообщений 580 на сервер 160.
Стоит отметить, что передача данных (например, в виде сообщений, в соответствии с выбранным паттерном интеграции базы и сервера, согласно одной из реализаций настоящего изобретения) между базовым модулем 120A…120N и сервером 160 может осуществляться по в зашифрованном виде (по зашифрованному каналу), причем шифрование, передачу и/или прием/получение (зашифрованных) данных осуществляет, по крайней мере, один модуль, например, модуль шифрования и дешифрования сообщений 580, по крайней мере, одного базового модуля 120A…120N и/или, по крайней мере, один модуль шифрования и дешифрования сообщений сервера 160, являющегося, в частном случае частью серверного ядра 610 и являющееся шифрованием SSL/TLS (TLS от англ. Transport Layer Security - безопасность транспортного уровня, SSL от англ. Secure Sockets Layer - уровень защищенных сокетов являющихся криптографическими протоколами, обеспечивающими защищенную передачу данных между узлами в сети Интернет).
В частном варианте осуществления изобретения базовые модули 120A…120N могут взаимодействовать на сервере 160 с серверным ядром 610 (ФИГ. 6). Серверное ядро 610 (в частном случае, в котором программным кодом на языке Java под сервер приложений Apache Tomcat реализована функциональность взаимодействия с базами) осуществляет фильтрацию не зарегистрированных (процесс регистрации базовых модулей более подробно будет описан далее) на сервере 160 базовых модулей 120A…120N посредством использования данных/информации (средствами, по крайней мере, одного модуля описываемой системы) хранящихся/сохраненных в реестре баз 615 (как описано далее). Сервер 160 сохраняет в хранилище измерений устройств с историей измерений 625 и хранилище команд и шаблонов команд устройств 630 полученные от базовых модулей 120A…120N данные (например, в виде сообщений), в частности, с командами (и/или списком/перечнями команд (для баз и устройств), которые описаны выше и далее) контролируемых модулей/устройств 110A…110N и измерениями (значениями измерений) контролируемых модулей/устройств 110A…110N. Так, в частном случае осуществления изобретения, команды (и/или списки/перечень команд) контролируемых модулей/устройств 110A…110N сохраняются в хранилище команд и шаблонов команд устройств 630, а измерениями (значениями измерений) контролируемых модулей/устройств 110А…110N сохраняются в хранилище измерений устройств с историей измерений 625. Также, стоит отметить, что данные/информация о контролируемых модулях/устройствах 110A…110N из упомянутых данных/сообщений может быть сохранена в реестре контролируемых модулей/устройств 620. Причем, в частном случае осуществления настоящего изобретения, данные/информация о контролируемых модулях/устройствах вычленяется/получается/извлекается программным кодом, в частности, парсером JSON-сообщений по формату сообщений, и может являться информацией об устройстве/модуле 110A…110N, например, номер устройства, наименование/название и ссылка на базу, например, на которой оно зарегистрировано.
В частном случае осуществления изобретения пользователь (или группа пользователей) 135A…135N может зарегистрироваться (зарегистрировать свой профиль) на интернет-портале/веб-портале 660, причем регистрационные данные могут включать фамилию, имя, отчество, дату рождения, адрес электронной почты, пароль пользователя и т.д. Упомянутая регистрация пользователя позволяет (автоматически дает возможность) пользователю использовать (мобильные) приложения (в частном случае, позволяющие пользователям контролировать, управлять, по крайней мере, одним модулем описываемой системы, в частности, устройствами/модулями 110A…110N и/или базами 120A…120N и т.д.), для управления и контроля модулей системы (например, базовых модулей 120A…120N и/или контролируемых устройств 110A…110N). Причем такая регистрация и, в частности, последующая авторизация пользователя в (мобильном) приложении и/или на веб-портале позволяет пользователю ввести свои логин и пароль в приложении (или на веб-сайте, веб-портале и т.д.) и посредством приложения (или на странице веб-портала) контролировать и управлять модулями/устройствами описываемой системы.
Поскольку, в частном случае осуществления изобретения функции Интернет-портала и (мобильных) приложений одинаковы (или схожи), то далее описание настоящего изобретения будет использовать в качестве примера Интернет портал 660, однако следует учитывать, что все действия, осуществляемые пользователем 135A…135N в/на Интернет-портале 660, могут быть осуществлены, по крайней мере, в одном (мобильном) приложении, в частности, установленном, по крайней мере, на одном устройстве пользователя 130A…130N.
В частном случае осуществления изобретения на сервере может осуществляться (например, по крайней мере, одним пользователем или средствами, по крайней мере, одного модуля описываемой системы, в том числе средствами сервера 160) подключение/добавление базовых модулей 120A…120N, по крайней мере, в один в профиль пользователя. Добавление базовых модулей 120A…120N в профили пользователей позволяют таким пользователям получить доступ к устройствам/модулям 110A…110N, связанным с такими базовыми модулями 120A…120N, в частности, зарегистрированным (как описывалось ранее) на таких базовых модулях устройствам модулям 110А…110N.
В частном случае осуществления изобретения добавление базового модуля в профиль пользователя может осуществляться (например, пользователем) посредством добавления идентификационных данных (в частности, номер базы 120A…120N, наименование базы, пароль устройства 110A…110N на сервере (например, для подключения (в том числе баз и/или устройств 110A…110N) к личному кабинету пользователя) базовых модулей 120A…120N на/в Интернет-портале 660/(мобильном) приложении, причем такие идентификационные данные могут быть сохранены (в частности, средствами модулей описываемой системы) в хранилище профилей пользователей 655 (хранилище профилей пользователей Интернет-портала и мобильных приложений), и в частном случае осуществления изобретения такой, по крайней мере, один базовый модуль привязывается к профилю (ассоциируется/связывается/сопоставляется с профилем) соответствующего пользователя. Причем в упомянутом профиле, в частном случае, может храниться, по крайней мере, одна ссылка, по крайней мере, на одну базу, а список баз (в том числе их идентификационные номера, названия и/или параметры и т.д.) может храниться в описываемом реестре баз, а информация о них в реестр, в частном случае может вноситься производителями, операторами и т.д. (по крайней мере, одним пользователем), например, при изготовлении и/или программировании базы (в том числе при «прошивке» или «перепрошивке» базы).
Пользователь на Интернет-портале 660/в (мобильном) приложении может просмотреть (зарегистрированные) устройства/модули 110A…110N, значения их измерений (данных/значений измерений, устройств/модулей 110A…110N), данные базовых модулей 120A…120N, модулей команды модулей, в том числе устройств/модулей 110A…110N базовых модулей 120A…120N и т.д. Также, пользователь (135A…135N) на Интернет-портале 660/в (мобильном) приложении может просмотреть историю упомянутых измерений с глубиной от одного дня до нескольких лет (или историю измерений за последние, как минимум, несколько лет). Также, пользователь (135A…135N) Интернет-портале 660/в (мобильном) приложении может инициировать/запустить выполнение, по крайне мере, одной команды (в том числе, реализованной программным кодом, в частности, скриптом, и т.д.) одним из/на одном из (зарегистрированных) модулей/устройств 110А…110N, с пользователем/профилем пользователя и/или связанным, по крайней мере, с одним базовым модулем 120A…120N (т.е., например, модулем, подключенным к профилю такого пользователя). Причем при необходимости пользователь 135A…135N (или, по крайней мере, один модуль описываемой системы посредством, например, программных средств, в том числе алгоритма, реализованного программным кодом) может указать, например, по крайней мере, в одном из полей ввода данных (или посредством/с использованием других элементов управления, например, графических элементов) на/в Интернет-портале 660/(мобильном) приложении, по крайней мере, один входной параметр (для), по крайней мере, одной упомянутой команды, после чего результат выполнения такой, по крайней мере, одной команды может быть отображен средствами, по крайней мере, одного модуля описываемой системы, по крайней мере, в одном элементе/посредством элемента (в том числе графическом и/или текстовом и т.д.) Интернет-портала 660/(мобильного) приложения, чтобы пользователь могу просмотреть результат выполнения упомянутой команды. Упомянутая команда (в частности, включающая упомянутые входные данные) на управление модулем/устройством 110A…110N (и/или базовым модулем 120A…120N) передается из (интернет) портала 660 в Серверное ядро 610, которое преобразует такую команду (включая упомянутые входные параметры) в формат (данных) базового модуля 120A…120N (или в формат модуля/устройства 110A…110N), в частности, в сообщение (для, по крайней мере, одного базового модуля и/или, по крайней мере, одного модуля 110A…110N), и передает/отправляет ее, в частности, посредством/через сеть Интернет 140 (в частном случае через Интернет-шлюз 150), по крайней мере, в один базовый модуль 120A…120N и/или, по крайней мере, в один модуль/устройство 110A…110N. После выполнения упомянутой, по крайней мере, одной команды, по крайней мере, в одном модуле/устройстве 110A…110N (модулем/устройством 110A…110N) данные средствами (например, по крайней мере одним составным элементом/модулем) модуля/устройства 110A…110N и/или, подключенными к нему модулями (например, внешними управляемыми модулями (330Б) или управляющими модулями/микросхемами/чипами 215 и т.д.), данные, в частном случае, включающие результаты (значения) из модулей/устройств 110A…110N, отправляются/пере даются в базовые модули 120A…120N и далее средствами таких базовых модулей передаются на сервер 160 (и/или на устройство пользователя 130A…130N), в частности, в серверное ядро 610, например, в формате (в виде) сообщения. Полученные сервером 160 (или приложением пользователя 130А…130N) данные (например, в виде/формате сообщения), в частном случае содержащие результаты (значения результатов) выполнения команд(ы) упомянутыми модулями (модулями/устройствами 110A…110N и/или базовыми модулями 120A…120N) могут быть преобразованы, по крайней мере, одним модулем сервера (например, средствами серверного ядра 610) и могут быть сохранены в своем хранилище (хранилище интернет-портала). Таким образом, в частном случае осуществления изобретения пользователь (130A…130N) может средствами Интернет-портала 660/(мобильного) приложения просмотреть результаты выполнения упомянутых команд.
В одном из осуществлений настоящего изобретения (для облегчения работы с упомянутыми командами) пользователь (130A…130N) на интернет-портале 660/в (мобильном) приложении может создавать шаблоны для упомянутых команд (шаблоны команд), в частности, с предустановленными (с предварительно заданными, например, тем же пользователем) значениями входных параметров для таких команд и задавать им произвольные названия/имена. Упомянутые шаблоны команд могут быть сохранены/храниться в хранилище команд и шаблонов команд устройств 630. Выполнение шаблона команды осуществляется по тому же принципу, что и выполнение команды, как было сказано выше.
Также, пользователь на интернет-портале 660/в (мобильном) приложении может создавать и/или настраивать правила уведомления пользователя. Так, например, такое уведомление пользователя может содержать информацию/данные о том, что, по крайней мере, одно измерение (результат измерения), по крайней мере, одного устройства/модуля 110A…110N приняло указанное значение. В частном случае, настройка правил уведомлений пользователей и отслеживание их выполнение осуществляет модуль правил уведомлений пользователей 635, причем правила уведомлений пользователей могут храниться/быть сохранены в хранилище правил уведомлений пользователей 645, в частности, как было описано выше. Причем упомянутая настройка может быть осуществлена пользователем на интернет-портале в личном кабинете, где события (измерение и/или команда), которые укажет пользователь в правиле, передаются в Модуль правил уведомлений пользователей 635. Далее при получении информации сервером 160 об указанном измерении или команде «Хранилище правил уведомлений пользователей» 645 может осуществлять проверку информации на соответствие правилу. Причем, правило может содержать условие и реакцию в зависимости от условия, например, в правиле может быть указано, что если влажность в теплице понизилась ниже 20%, то отправить SMS-сообщение (например, пользователю) с указанным текстом на заданный (какой-то) номер телефона.
В частном случае, уведомление пользователей может быть осуществлено, например, посредством отправки электронных писем, SMS-сообщений, сообщений в системах и/или службах, и/или приложениях для обмена сообщениями и данными/информацией, в том числе для мгновенного обмена сообщениями/обмена мгновенными сообщениями, например, ICQ, Viber, WhatsApp, Telegram и др., в мессенджерах, и/или в системах и/или службах, и/или приложениях для передачи и/или получения сообщений, в системах и/или службах, и/или приложениях для обмена данными/информацией, включая, но не ограничиваясь, получение и передачу текстовой информации/данных, графических и/или видео- данных, в том числе в видеоформатах, в виде изображений, звуковых данных, включая аудиофайлы и т.д., и а также в чатах, социальных сетях и т.д., (причем адреса электронных почт и номера мобильных телефонов могут быть указаны/введены/определены пользователем и т.д.) средствами модуля уведомления пользователя по электронной почте и SMS 640. Причем отправка электронных писем может быть реализована за счет/посредством службы сообщений, которая может быть установлена/загружена отдельно на сервер приложений, где развернут/установлен сервер 160. Такая служба может быть вызвана, по крайней мере, одним модулем описываемой системы по своему (посредством) собственному API и может осуществлять отправку писем на указанный/заданный адрес. Отправка SMS может быть реализована посредством (с помощью) внешнего по отношению к серверу 160 сервиса, например, сервиса по отправке SMS-сообщений. Сервер 160 также использует API такого сервиса, который в свою очередь отправляет SMS-сообщение на указанный номер телефона.
Также, пользователь на интернет-портале 660/в (мобильном) приложении может настроить правила (автоматического) управления устройствами/модулями 110A…110N, например, правило отключения устройство/модуль 110A…110N, например, если, по крайней одно его измерение приняло указанное значение. Настройка правил автоматического управления у стройствами/модулями 110A…110N и отслеживание их выполнения осуществляется средствами модуля правил автоматического управления устройствами 640, причем упомянутые правила (автоматического) управления устройствами/модулями могут храниться/могут быть сохранены в хранилище правил автоматического управления устройствами 650. В частности, упомянутые настройка и отслеживание может осуществляться, как и для правил уведомлений, как было описано выше, причем в результате появления ивента/события может осуществляться выполнение команды на определенном устройстве 110A…110N вместо (или в дополнение к нему) отправки уведомления, в частности, устройстве указанном пользователем при настройке правил(а).
В частном случае, при выполнении, по крайней мере, одного правила может быть осуществлено, по крайней мере, одним модулем описываемой системы выполнение указанной (упомянутой) команды (и/или набора команд), причем выполнение упомянутых команд при выполнении правил автоматического управления устройствами/модулями 110A…110N осуществляется по тому же принципу, что и описанное выше выполнение (обычной/не автоматической) команды.
На ФИГ. 3 показан примерный вариант (контролируемого) устройства 110А-110N, согласно примерному варианту осуществления изобретения. Устройство 110 может включать, по крайней мере, один измеритель 310A-310N, в частном случае, реализованный, по крайней мере одним датчиком, и/или, по крайней мере, один управляющий модуль 330A…330N, например, осуществлять измерение температуры, определять/переключать номер канала на телевизоре, статус включения или отключения устройства 110A…110N, регулировать яркость освещения, силу тока, напряжение в (электро)сети, контролировать открыта или закрыта дверь, определять/устанавливать мощность сигнала, контролировать уровень звука в телевизоре, определять/устанавливать номер программы на стиральной машине, определять/устанавливать время работы устройства 110A…110N, определять частоту сердцебиения человека/пульс и т.п.
Причем, измеритель (310A-310N) может являться, как внутренним (310A) по отношению к контролируемому устройству 110 (например, являться составным элементом/модулем упомянутого устройства), так и внешним (310Б) по отношению к контролируемому устройству 110 (например, являться элементом/модулем, подключаемым к устройству 110, например, посредством проводных или беспроводных интерфейсов, например, посредством USB-интерфейса или Wi-Fi-интерфейса и т.д.). Также, (контролируемое) устройство 110 может включать, по крайней мере, один управляемый модуль 330A-330N. Причем, управляемый модуль (330A-330N) может являться, как внутренним (310A) по отношению к контролируемому устройству 110 (например, являться составным элементом/модулем упомянутого устройства), так и внешним (310Б) по отношению к контролируемому устройству 110 (например, являться элементом/модулем, подключаемым к устройству 110, например, посредством проводных или беспроводных интерфейсов, например, посредством USB-интерфейса или Wi-Fi-интерфейса и т.д.).
Также, как было сказано выше, (контролируемое) устройство/(контролируемый) модуль 110 (любой из модулей 110A-110N) может включать, по крайней мере, один управляющий модуль 215. Причем управляющий модуль 215 может осуществлять получение (340A-340N) данных (получать данные) из измерителей 310A-310N, а измерительный модуль/измеритель 310A-310N может осуществлять передачу (340A-340N) данных (передавать данные), по крайней мере, в один управляющий модуль 215, где упомянутые данные могут включать измерения измерителей 310А-310N, которые более подробно описаны выше.
Также, управляющий модуль 215 может осуществлять получение данных (350A-350N) из управляемых модулей 330A-330N, а управляемый модуль 330А-330N может осуществлять передачу данных (350A-350N), по крайней мере, в один управляющий модуль 215, где упомянутые данные могут включать команды на управление управляемыми модулями 330A-330N или устройствами (110A-110N) в целом, которые более подробно описаны выше.
Как было сказано выше, устройства (110A-110N) могут обмениваться данными (210, 220) с другими модулями описываемой системы, например, с базовыми модулями (120A-120N), устройствами пользователей (130A-130N), по крайней мере, одним сервером 160 и т.д.
На ФИГ. 4 изображен примерный вариант управляющего модуля 215 (контролируемого модуля/) устройства 110. Управляющий модуль 215 может включать (содержать), по крайней мере, один модуль сбора и обработки измерений 410.
Управляющий модуль 215 также может включать/содержать, по крайней мере, один модуль трансляции и преобразования данных 430.
Стоит отметить, что в частном случае осуществления изобретения данные (например, данные 340A-340N) из измерителей (310A-310N) могут быть переданы в модуль сбора и обработки измерений 410 управляющего модуля 215, которые далее могут быть переданы в модуль трансляции и преобразования данных 430.
Управляющий модуль 215 также может включать (содержать), по крайней мере, одно хранилище команд управляемых модулей 420, данные (465) из которого могут включать, например, перечень команд, и которые могут быть переданы в модуль трансляции и преобразования данных 430, как более подробно описано выше.
Управляющий модуль 215 также может включать (содержать), по крайней мере, один модуль шифрования/шифровки и дешифрования/дешифровки данных 440. Стоит отметить, что в частном случае осуществления изобретения данные (например, перечень команд, измерения, результаты выполнения команд) из модуля 430 могут быть переданы в модуль 440. Также, данные 475 (например, в виде команд на управление) из модуля 440 могут быть переданы в модуль 430.
Также, управляющий модуль 215 (который в частности, как было описано выше позволяет управлять, по крайней мере, одним устройством 110А…110N, собирать измерения и взаимодействовать, по крайней мере, одной базой 120A…120N) может включать (содержать), по крайней мере, один модуль управления 450, в который могут быть переданы данные 480 (например, команды на управление). Также данные 485 (например, результаты выполнения команд, как более подробно описано выше) из модуля управления 450 могут быть переданы в модуль 430.
Также, управляющий модуль 215 может включать модуль исполнения/выполнения скриптов 499. Модуль 499 получает скрипты (497) из хранилища команд управляемых модулей 420, получает данные (496) от модуля сбора и обработки измерений 410, передает (494) данные/информацию в модуль управления 450 и получает информацию/данные (495) от модуля управления 450, передает данные (493) в модуль трансляции и преобразования данных 430 и получает информацию (498) от модуля трансляции и преобразования данных 430. Причем модуль исполнения скриптов 499 может включать, по крайней мере, генератор событий (820, ФИГ. 8) и/или менеджер триггеров (830, ФИГ. 8), и/или хранилище скриптов (840, ФИГ. 8).
ФИГ. 5 иллюстрирует примерный вариант базы/базового модуля, согласно одному из вариантов осуществления настоящего изобретения. Базовый модуль 120/120A…120N может включать модуль шифрования/шифрации и дешифрования/дешифрации данных 590, который может передавать данные (например, перечень команд, измерения, результаты команд и т.д.) 511 в модуль трансляции и преобразования данных и сообщений 510, причем модуль 510 может отправлять данные (например, команды на управления) 512 в модуль 590. Модуль 510 также может отправлять данные (например, результаты выполнения команд и/или перечни преобразованных команд и измерений, например, устройств/модулей 110A…110N, 120A…120N и т.д.) 533 в модуль шифрования и дешифрования сообщений 580. Модуль 580 может передавать данные (например, команды на управление) 537 в модуль 510. Модуль 510 также может отправлять данные (например, результаты выполнения команд) 531 в хранилище данных (настроек и/или журналов событий) базовых модулей 560. Модуль хранения/реестр (зарегистрированных) устройств/модулей 550 может отправлять/пере давать данные (например, перечень зарегистрированных модулей/устройств 110А…110N, 120A…120N и т.д.) 529 в модуль 510. Модуль 510 также может передавать данные (например, измерения от зарегистрированных устройств) 513 в (локальное) хранилище данных (измерений) зарегистрированных устройств 520. Также, модуль 510 может принимать данные (например, измерения, в том числе преобразованные, от зарегистрированных устройств/модулей 110A…110N, 120A…120N и т.д.) 514, переданные модулем 520. Также, модуль 510 может отправлять данные (например, перечни команд от зарегистрированных модулей/устройств 110А…110N, 120A…120N и т.д.) 517 в (локальное) хранилище данных/команд (зарегистрированных) устройств 530. Также, модуль 510 может принимать переданные модулем хранения 530 данные (например, перечни (преобразованных) команд и измерений устройств/модулей 110A…110N) 519. Модуль хранения 520 может отправлять данные (например, перечни (преобразованных) команд и измерений устройств 110A…110N, 120A…120N и т.д.) 536 в модуль интерфейса (в частности, в пользовательский веб-интерфейс) 570. Хранилище (локальное)/модуль хранения 530 также может отправлять данные (например, перечень команд/команды (в том числе преобразованных/преобразованные), например, от зарегистрированных устройств 110A…110N, 120A…120N и т.д.) 543 в модуль 570. Модуль 570 может отправлять данные (например, настроек преобразования и/или отображения команд и/или измерений) 539 в хранилище/модуль хранения 540 настроек преобразования и отображения данных (в частности, команд и/или измерений) устройств/модулей 110A…110N, 120A…120N и т.д., в том числе зарегистрированных. Модуль/интерфейс 570 также может принимать отправленные модулем 540 данные (например, команды/перечни (преобразованных) команд и/или измерений устройств/модулей 110А…110N, 120A…120N и т.д.) 541. Модуль 570 также может отправлять, а модуль 550 получать/принимать данные (например, данные о регистрации устройств/модулей, в том числе модулей 110A…110N и/или модулей 120A…120N) 527. Модуль 510 также может принимать/получать отправленные модулем 570 данные (например, команды на управление) 523. Модуль 570 также может отправлять, а модуль 560 получать/принимать данные (например, данные о регистрации модулей/устройств 110A…110N, 120A…120N и т.д.) 547. Пользователь 130 (130A…130N) может взаимодействовать с модулем 120, например, просматривать измерения, команды, настройки, журналы изменений/логи устройств/модулей 110A…110N, 120A…120N и т.д. Также, пользователь может взаимодействовать с модулем 120 посредством настройки преобразований и отображения данных (в частности, команд и измерений), регистрации и/или настройки устройств/модулей 110А…110N, 120A…120N и т.д., а также посредством управления устройствами/модулями 110A…110N, 120A…120N и т.д. с помощью команд/скриптов. Также, модуль 540 может передавать в модуль 510 данные (например, команды/перечни преобразованных команд и измерений устройств/модулей 110А…110N, 120A…120N и т.д.) 521.
Также, базовый модуль 120/120A…120N может включать модуль исполнения скриптов 599. Модуль 599 получает скрипты (598) от хранилища данных базы 560, получает данные (597) от хранилища данных/измерений устройств 520, передает информацию/данные в модуль трансляции и преобразования данных и сообщений управления 510 и получает информацию от модуля трансляции и преобразования данных и сообщений (управления) 510. Причем модуль исполнения скриптов 599 может включать, по крайней мере, генератор событий (820, ФИГ. 8) и/или менеджер триггеров (830, ФИГ. 8), и/или хранилище скриптов (840, ФИГ. 8).
ФИГ. 6 иллюстрирует примерный вариант сервера, согласно одному из осуществлений настоящего изобретения. Сервер 160 может включать серверное ядро (модуль серверного ядра, в частности, реализованный программным обеспечением) 610, который может передавать данные (например, измерения устройств/модулей (пользователей), например, устройств/модулей 110А…110N, 120A…120N и т.д.) 616 в модуль хранения (625) измерений устройств/модулей 110А…110N, в частности, с историей изменений. Модуль 610 также может передавать данные (например, команды/скрипты/перечни команд устройств/модулей (пользователей), например, устройств/модулей 110A…110N, 120A…120N и т.д.) 622 в модуль хранения/хранилище (630) команд и шаблонов устройств/модулей 110A…110N, 120A…120N и т.д. Модуль 625 может передавать данные (например, текущие измерения и истории измерений устройств/модулей (пользователя), например, 110A…110N, 120A…120N и т.д.) 648 в модуль/интернет-портал 660. Модуль 630 может передавать данные (например, команды устройств/модулей (пользователя), например, 110A…110N, 120A…120N и т.д. и/или шаблоны команд) 642 в интернет-портал 660. Серверное ядро 610 также может отправлять/пере давать данные (например, устройства/модули (пользователя) устройств/модулей 110A…110N, 120A…120N и т.д., в частности, список таких устройств/модулей, включая информацию данные о них/от них, как описано в настоящем изобретении) 614 в модуль хранения/реестр 620 устройств/модулей 110А…110N, 120A…120N и т.д. Модуль 610 также может получать данные (например, зарегистрированные базовые модули 120A…120N, в частности, список таких зарегистрированных базовых модулей/баз и информацию/данные о них, как описано в настоящем изобретении) 612, передаваемые из хранилища/реестра 615 базовых модулей 120A…120N. Модуль 620 также может передавать данные (например, устройства/модули (пользователя) устройств/модулей 110А…110N, 120A…120N и т.д., в частности, список таких устройств/модулей, включая информацию данные о них/от них, как описано в настоящем изобретении) 652 в модуль 660. Интернет портал 660 может также отправлять данные (например, команды/скрипты на управление устройствами/модулями, например, 110A…110N, 120A…120N и т.д.) 646 в серверное ядро 610. Интернет портал/модуль 660 может передавать данные (например, данные о регистрации пользователей, настройки профилей пользователя, профили пользователей и т.д.) 654 в модуль/хранилище 655 данных (в частности, профилей) пользователей, в частности, пользователей интернет-портала 660 и/или мобильных приложений, и/или модулей/устройств 110A…110N, 120A…120N и т.д. Также, модуль/портал/веб-портал/интернет-портал/портал 660 может передавать данные (например, настройки правил уведомлений пользователя) 656 в модуль правил уведомлений пользователей 635. Модуль 635 может передавать данные (например, данные об успешном или не успешном выполнении правил и т.д., как описано в настоящем изобретении) 636 в модуль уведомления пользователя 640. Также, модуль/портал 660 может передавать данные (например, настройки правил (автоматического) управления устройствами/модулями 110A…110N, 120A…120N и т.д.) 638 в модуль 640 правил (автоматического) управления устройствами/модулями 110А…110N, 120A…120N и т.д. Также, модуль 635 может передавать данные (например, правила уведомлений пользователей 135/135Б) 632 в модуль/хранилище правил уведомлений пользователей 645. Модуль 635 может принимать/получать данные (например, правила уведомлений пользователей 135/135Б, которые описаны в рамках настоящего изобретения) 634, отправляемые/передаваемые модулем/хранилищем 645. Также, модуль 640 может передавать/осуществлять передачу/отправку данных (например, правила (автоматического) управления устройствами/модулями 110A…110N, 120A…120N и т.д.) 626 в модуль хранения/хранилища 650 правил (автоматического) управления устройствами/модулями 110А…110N, 120A…120N и т.д. Также, модуль 650 может отправлять/передавать данные (например, правила (автоматического) управления устройствами/модулями 110А…110N, 120A…120N и т.д.) 628 в модуль 640. Также, модуль/серверное ядро 610 может принимать/получать данные (например, команды на управление устройствами/модулями 110A…110N, 120A…120N и т.д.) 624, переданные/передаваемые модулем 650. Также, модуль 160 может передавать данные (например, предоставлять данные (в том числе для просмотра) базовых модулей 120A…120N и/или модулей/устройств 110A…110N, текущих измерений, истории измерений устройств/модулей, команд базовых модулей 120A…120N и/или модулей/устройств 110A…110N, шаблонов команд, настроек профилей пользователя/пользователей 135/135A…135N, правил автоматического управления устройствами/мо дулями, журналов событий/логов и т.д.) 270, по крайней мере, одному модулю описываемой системы и/или внешнему модулю и/или сервису, и/или пользователю 130/135Б, в частности, на вычислительное устройство (пользователя) 130A…130N. Также, модуль 160 может передавать данные (например, уведомления/данные (для) уведомлений, в частности, пользователя, например, посредством электронной почты, сообщений, в том числе SMS-сообщений, звукового сигнала/аудио-данных, видео-сигнала/видео-данных и т.д.) 280, по крайней мере, одному модулю описываемой системы и/или внешнему модулю и/или сервису, и/или пользователю 130/135Б, в частности, на вычислительное устройство (пользователя) 130A…130N. Также, модуль 160 может получать данные (например, данные о подключении базовых модулей 120A…120N к профилю/профилям пользователей/пользователя, в частности, пользователей интернет портала и/или мобильных приложений, данные настройки шаблонов команд, настройки правил уведомлений пользователя/пользователей, настройки правил (автоматического) управления устройствами/модулями, данные управления устройствами/модулями, в том числе, в виде скриптов/команд) 290 от пользователя 130/135Б, в частности, по крайней мере, одного устройства пользователя 130А…130N. Так, например, пользователь 130/135A…130N может посредством, например, вычислительного устройства (пользователя) 130/130A…130N подключать базовые модули 120A…120N, например, к профилю/профилям пользователей/пользователя, в частности, пользователей интернет портала и/или мобильных приложений, настраивать шаблоны команд/скриптов, настраивать правила уведомлений пользователя/пользователей, настраивать правила (автоматического) управления устройствами/модулями, управлять устройствами/модулями, в том числе, посредством скриптов/команд, графических элементов, текстовых элементов и т.д.
В частном случае осуществления настоящего изобретения описываемая в система предоставляет пользователю 135A…135N определенный набор возможностей/операций, в том числе заложенных/определенных производителем устройств/модулей 110A…110N и/или технологией сети, и/или любых других операций, действий и т.д., как было описано выше.
В частном случае, такие операции могут быть определены в виде (могут являться) либо атомарных/простых действий (например, включить устройство/модуль 110A…110N, получить измерение с измерителя/датчика 310A…310N и т.д.), либо как программная логика, в частности, определенная производителем устройств/модулей 110A…110N, с возможностью задавать входные и выходные значения и/или переменные (например, если/if значение датчика а=у, то/then включить выход Б). Так, в частном случае, последняя возможность позволяет описываемой системе осуществлять управления такими модулями/устройствами 110A…110N, в частности, в рамках (простейших) логических операций или (заведомо известных) правил, описываемых в рамках настоящего изобретения. Также, описываемая выше система может быть расширена посредством предоставления возможности создавать описанную логику предоставляемую производителями модулей/устройств 110A…110N и ее контролирование/управление конечному пользователю описываемой системы.
В частном случае осуществления изобретения существует, по крайней мере, три уровня осуществления описываемой системы и способа:
1) управление элементами/модулями описываемой системы осуществляется в режиме атомарных операций, которое может быть осуществлено посредством захода пользователя на интернет-портал 660/в мобильное приложение и осуществления просмотра им значения упомянутых измерителей 310A…310N, например, температуры с датчика температуры, причем пользователь нажать/выбрать графическое изображение кнопки включения-выключения какого либо устройства/модуля 110А…110N.
2) управление элементами/модулями описываемой системы в режиме шаблонных операций, причем пользователь на интернет-портале 660/в мобильном приложении может создать описанный выше шаблон команды устройства/модуля 110A…110N (шаблонную операцию). Шаблонные операции, в частном случае являются графическим построителем логики (в частности, шаблонным построителем), в частности, состоящем из трех блоков:
а) размещение скрипта - на каком узле следует разместить скрипт;
б) способ запуска - каким образом будет запускаться скрипт;
в) логика скрипта - набор блоков (операций) с логикой;
Варианты доступных действий в построителе шаблонов/шаблонном построителе приведены ниже.
Варианты размещения скриптов:
а) на устройстве/модуле 110А…110N;
б) на базовом модуле 120A…120N;
в) на сервере 160;
Варианты запуска. Под последними следует понимать триггеры запуска (см. далее по тексту описание триггерной механики).
а) Через временной интервал;
б) По возникновению события/ивента (от англ. event - событие);
в) По команде от пользователя;
г) По графику;
д) В заданное время;
Варианты упомянутых операций, которые могут быть добавлены неограниченное количество раз, включая вложенные друг в друга:
а) условие если/if
б) Условие if else (если в противном случае)
в) Условие if else if else
г) Выполнить команду
д) Получить данные с датчика
е) Получить состояние выхода
В частном случае, шаблонный построитель осуществляет создание кода скрипта, осуществляет его валидацию и загрузку на устройство/модуль 110A…110N посредством, по крайней мере, одного модуля описываемой системы.
3) управление элементами/модулями описываемой системы посредствам написания скриптов на одном из языков программирования пользователем. В данном случае пользователь может написать необходимую ему программу/скрипт в редакторе кода, в частности на интернет портале 660/в (мобильном) приложении. Данный способ обеспечивает (исчерпывающие) возможности осуществления автоматизации описываемой системы, в частности, управление модулями/устройствами 110А…110N.
Далее приведены примеры практического применения описываемой системы при использовании упомянутых скриптов.
Пример 1. У пользователя на даче установлен дизельный котел (первое устройство/модуль 110A…110N) отопления. Он хочет удаленно включать его, перед поездкой на дачу. Проблема автоматизации удаленного запуска таких устройств/модулей 110A…110N состоит в том, что у большинства недорогих котлов, нет систем холодного (за)пуска. Для их запуска требуется положительная температура в помещении, в противном случае, из-за запарафинивания дизельного топлива, может произойти повреждение топливной системы котла. Т.о. помещение нужно предварительно быстро разогреть электрическим обогревателем (второе устройство/модуль 110А…110N), а затем уже запускать сам котел. Данную задачу возможно решить обычным способом посредством удаленного включения обогревателя, по достижении положительной температуры выключить его, после чего включить котел. Но неудобства данной операции очевидны - ручное отслеживание температуры в течении длительного времени. Так же стоит задаться вопросом, а что будет, если на даче пропадает интернет-соединение? А если человек по каким либо причинам не сможет приехать после этого, а там останется работающий обогреватель и после работающий котел, которые нельзя удаленно выключить. Для решения данной практической задачи система скриптования подходит идеально. Упомянутый выше скрипт может обеспечивать следующий функционал и выполняться, например, по команде (от) пользователя: вначале включается обогреватель, по достижении заданной (положительной) температуры обогреватель выключается и включается котел. Если в процессе данной операции или после ее выполнение пропадает интернет-соединение (программа на ивенте/событии, как описано в рамках настоящего изобретения), то по крайней мере, один упомянутый выше прибор (устройство/модуль 110A…110N) выключится.
Пример 2. Пользователь выращивает овощи в зимней теплице. Данная задача не является тривиальной, так как требуется дополнительное освещение, обогрев помещения и почвы с определенной температурой, полив при достижении почвой определенного уровня влажности. Пользователь приобретает устройство/модуль 110A…110N датчики-выходы и организует на его основе систему автоматизации, описанную в рамках настоящего изобретения и осуществляемую посредством модулей описываемой системы. Обогрев помещения и почвы осуществляется описываемыми в настоящем изобретении модулями, в частности, программой (например, скриптом, принимающим решения на основании данных полученных с датчиков/измерителей 310A…310N) обрабатывающей значения с датчиков температуры воздуха и почвы (310A…310N). Автополив происходит по данным датчика влажности почвы. Досветка растений реализуется, по крайней мере, одним упомянутым скриптом на cron-триггере (который более подробно описан далее). Таким образом, возможно организовать полную автоматизацию такой теплицы описываемым в настоящем изобретении способом и средствами модулей описываемой системы.
На ФИГ. 7 показан примерный вариант (общей) блок-схемы создания и загрузки нового скрипта/программы.
В частном случае осуществления изобретения управляющие программы (в частности, скрипты) могут быть сформированы/созданы на стороне клиентского модуля 705, например, являющимся веб-интерфейсом 660/мобильным приложением, в частности пользователем 135A…135N. Как было сказано выше, создание упомянутых управляющих программ может быть реализовано двумя способами:
- посредством шаблонного построителя/построителя шаблонов (в шаге 710) или
- посредством (ручного) написания программного кода (в шаге 715).
Стоит отметить, что в частном случае шаги 710 и 715 являются опциональными и взаимозаменяемыми.
На сервер 160 отправляется сообщение об успешном выполнении операции, в частности, базовым модулем 120A…120N или конечном устройством 110A…110N, в зависимости от того, кому предназначался скрипт (какой именно модуль является целевым для скрипта), причем отправка может осуществляться после передачи скрипта, создания триггеров и сохранения в память. В частном случае, данное сообщение подтверждает факт того, что скрипт был корректно принят устройством 110A…110N. В противном случае, может быть осуществлен «откат» записи триггеров/скрипта (возвращение состояния до момента записи триггеров/скрипта) и отправка сообщения об ошибке.
Стоит отметить, что по крайней мере, на одном из указанных на ФИГ. 7 шагов веб-интерфейс Интернет портала 660/мобильное приложение/модуль пользовательского веб-интерфейса 570 (клиент) может находиться в режиме ожидания, и будет уведомлен средствами, по крайней мере, одного модуля описываемой системы о любых ошибках, возникших, по крайней мере, на одном шаге ФИГ. 7.
Упомянутый выше скрипт/программа (в частном случае, содержащий, по крайней мере, одну команду для выполнения, по крайней мере, одним модулем описываемой системы, например, (контролируемым) модулем/устройством 110A…110N и/или базовым модулем 120A…120N, и/или сервером 160) быть выполнен, например, в трех узлах системы (где узлом является (контролируемый) модуль/устройство 110A…110N и/или базовый модуль 120A…120N, и/или сервер 160). Далее термин узел используется для обозначения одного из вышеуказанных модулей/мест. На (контролируемом) модуле/устройстве 110A…110N и/или базовом модуле 120A…120N, и/или сервере 160 может быть реализована (в частности, установлена, развернута и/или запущена) стековая виртуальная машина (ВМ), некоторый набор общих инструкций и инструкции специфичные для конкретного узла (контролируемый) модуль/устройство 110A…110N и/или базовый модуль 120A…120N, и/или сервер 160) описываемой системы. В частном случае, набором общих инструкция является набор инструкций базовых операций, в частности, математических, стековых, хиповых операций, операций сравнения, возврата, функциональные вызовы и т.д. Также, в частном случае осуществления изобретения осуществляется (базовая) реализация разделения времени выполнения (процессорного времени в рамках работы виртуальной машины), позволяющая осуществлять/производить параллельное выполнение нескольких потоков инструкций (виртуальной машины (байт-кода)). Далее описаны частные особенности/характеристики описываемой системы в виде набора тезисов:
1) программы запускаются на основе, по крайней мере, одного триггера запуска, который хранится в хранилище, по крайней мере, одного из узлов. Причем, в частном варианте осуществления настоящего изобретения скрипт эквивалентен набору инструкций виртуальной машины/байт-коду в виде человеко-читаемого кода (например, Си подобный синтаксис), в то время как виртуальная машина оперирует байт-кодом, который получается посредством компиляции первого во второй. Таким образом, под скриптом следует понимать оба таких представления. Таким образом, с точки зрения пользователя программа имеет вид кода, написанного на языке программирования высокого уровня, а для конечного устройства, например, 110A…110N, имеет вид байт-код. Триггеры могут комбинироваться (могут быть скомбинированы), в частности для одного скрипта, может быть указано более одного триггера запуска. Так, например, скрипт может иметь два триггера. Первый это cron-триггер, который запускает скрипт каждый час и второй по ивенту старта устройства 110A…110N, который запустит скрипт сразу после запуска устройства. Так, триггер может являться записью в (специальные) таблицы, где может быть указан тип триггера, параметры, имя скрипта и параметры его запуска. Причем комбинированием, в частном случае, является наличие нескольких записей в такой таблице, по крайней мере, под один скрипт. Возможны следующие типы триггеров:
- запуск по ивенту/событию или группе ивентов;
- запуск по cron выражению;
- запуск по (прямой) команде с сервера 160.
Стоит отметить, что cron-выражение состоит из 6 частей, разделяемых пробелами или табуляторами. Первые пять колонок задают время выполнения (Минута, Час, День, Месяц, День недели), в них может находиться число, список чисел, разделенных запятыми, диапазон чисел, разделенных дефисом, символы '*' или '/'.
***** выполняемая команда (в данном случае номер/имя скрипта)
1-ый * - День недели (0-7) (Воскресенье =0 или =7);
2-ой * - Месяц (1-12);
3-ий * - День (1-31);
4-ый * - Час (0-23);
5-ый * - Минута (0-59).
Примеры cron-выражений:
23 */2 * * * scriptname //Выполняется в 0:23, 2:23, 4:23 и т.д.
54 * * sun scriptname //Выполняется в 4:05 в воскресенье
0 0 1 1 * scriptname //Новый год
15 10,13 * * 1,4 scriptname//В понедельник и четверг в 10:15 и 13:15
0-59 * * * * scriptname //ежеминутно
0-59/2 * * * * scriptname //по четным минутам
1-59/2 * * * * scriptname //Выполняется по нечетным минутам
*/5 * * * * scriptname //Прошло пять минут".
2) по крайней мере, один упомянутый узел осуществляет реализацию/реализует событие (понятие событие/ивента), некоторого события аппаратного или программного уровня (команды, по крайней мере, одного модуля описываемой системы и/или команды, выполняемой, по крайней мере, одним модулем описываемой системы), способного вызывать закрепленные за ним программы. В частности, вызывать скрипты, под которые определен триггер на ивент определенного типа. Т.е., например, при старте, запуске, включении и т.д. устройства 110A…110N сработает ивент «device_start» (запуск_устройства), и если в таблице ивентов определено, что при его возникновении, должен быть выполнен какой-либо скрипт, то это и будет осуществлено, в частности, будет выполнен указанный скрипт. Далее приведены примеры возможных ивентов:
- изменение статуса соединения, по крайней мере, с одним базовым модулем 120A…120N (или с модулем/устройством 110А…110N);
- изменение статуса соединения с сервером 160 (или с базовым модулем 120A…120N), где статус соединения может быть определен событиями уровня сетевого соединения, например, установление, разрыв, таймаут и другие события;
- считывание/получение данных с измерителей/датчиков 310A…310N (или с модулей/устройств 110A…110N);
- получение команды от сервера 160 (или от модуля/устройства 110A…110N);
- инициализация (запуск) (модуля/устройства 110A…110N и/или базового модуля 120A…120N), где под инициализацией (запуском), в частном случае понимается перевод устройства из выключенного состояния во включенное, в том числе, осуществлением подготовки программы к началу штатной работы (например, инициализация файловой системы, программных компонентов и пр.);
- нажатие пользователем аппаратной кнопки на устройстве (модуль/устройство 110А…110N).
Ивент/событие для упомянутой виртуальной машины узла является аналогом аппаратного прерывания. Выполнение всех прочих программ приостанавливается и выполняется программа/скрипт, закрепленная (в частном случае, прописанная, например, хранящаяся, в триггерной таблице) триггером за данным ивентом (если таковой имеется).
3) При запуске скрипта/программы в программу могут быть переданы входные параметры, в частности, описываемый в рамках настоящего изобретения. Так, например, событие изменение статуса подключение к серверу, может генерировать бинарное значение (arg, сокращенно от англ. argument - аргумент, параметр) «0» или «1». Данное значение может быть передано в управляющую программу/скрипт, в которой существует/наличествует описанное выше разветвление логики в зависимости от значения упомянутого входного параметра, например, (if (arg[0]==0) {…} else {…}).
4) Программа/скрипт (в частном случае, хранящаяся во внутренней памяти (например, хранилище или оперативной памяти) узла) может отправлять запросы на сервер 160 на получение (некоторых) данных или для выполнения (некоторых) операций, как описано в рамках настоящего изобретения и, в частности, далее. Так, например, упомянутая программа может запросить на сервере 160 (актуальное) данные, в частности, значения измерений, по крайней мере, одного измерителя/датчика на устройстве/модуле 110A…110N, относящемуся/принадлежащему к другому базовому модулю 120A…120N (в частности, зарегистрированному на другом базовом модуле). При этом на стороне сервера 160 (на сервере 160) будет осуществлена проверка прав доступа к таким данным (третий барьер безопасности), в частности, серверным (160) программным обеспечением, на основании таблицы прав доступа в базе денных.
Также, например, при достижении определенной (в частности, заданной/установленной, например, пользователем 135A…135N и/или средствами, по крайней мере, одного модуля и/или сервисом описываемой системы) величины по некоторому датчику/измерителю 310A…310N (по крайней мере, одного измерителя 310A…310N), упомянутая программа может отправить на сервер 160 команду нотификации события (в частности, не отличающейся от команд других типов). Вследствие этого действия, пользователь 135A…135N получит уведомление о данном событии, как было описано выше.
5) Программа может инициировать (осуществить), в частности, на том узле, где работает/выполняется/исполняется скрипт, отправку, по крайней мере, одной упомянутой команды на другой модуль/устройство 110A…110N, модуль 120A…120N и/или сервер 160. Если целевой модуль, сервер, устройство и т.д. (в частности, упомянутый узел) принадлежит тому же базовому модулю, что и источник упомянутой команды, то такой запрос (в частности, команда) проходит через базовый модуль 120A…120N минуя сервер 160, целевой модуль, сервер, устройство и т.д. (в частности, упомянутый узел) принадлежит другому базовому модулю, то запрос проходит через сервер с проверкой системой безопасности и отправляется на целевое устройство (модуль, сервер, устройство и т.д.). В частности, сетевая архитектура описываемой системы может состоять из трех слоев: серверного слоя, слоя базовых модулей и слоя конечных устройств. Если два устройства 110A…110N находится в подсети одного базового модуля 120A…120N, то отправляемая команда будет идти по пути source_dev (модуль-источник команды) → base (базовый модуль) → dest_dev (целевое устройство). Если целевое устройство находится в подсети другого базового модуля, то она проходит через сервер 160 по следующей схеме: source_dev (источник команды) → base1 (базовый модуль 1) → server (сервер 160) → base2 (базовый модуль 2) → dest (цель/целевое устройство). В первом случае команда доходит к цели минуя сервер.
6) Также, по крайней мере, одна упомянутая выше инструкция, например, выполнение команды на удаленном/другом устройстве могут принимать в качестве входных параметров указатель на область (оперативной) памяти (устройства, на котором выполняется скрипт), в которой будет размещен результат выполнения данной инструкции. Таким образом, реализуется возможность определения статуса выполнения той или иной упомянутой инструкции. Каждая ошибка в процессе выполнения программы протоколируется (в частности, записывается в базу данных сервера 160) на стороне сервера 160 (если есть подключение) и базового модуля 120A…120N, в частности, по крайней мере, одним составным элементом/модулем упомянутых модулей. Причем (все) операции в описываемой системе могут протоколироваться, где объектами могут являться, но не ограничиваются ими, выполнение команд, изменение статусов соединений баз/устройств, факты выполнения скриптов и т.д.
7) Пользователь 135A…135N может получить доступ к упомянутым протоколам (логам/журналам событий) выполнения скрипта посредством веб-интерфейса интернет-портала 660/(мо дульного) приложения описываемой системы, как было описано выше, так и посредством веб-интерфейса 570 базового модуля.
8) По крайней мере, одна упомянутая выше программа может инициировать запуск другой программы, включая расположенную на другом устройстве/модуле 110A…110N, базовом модуле 120A…120N и/или сервере 160, причем осуществление данной операции (механизм/механика/алгоритм данной операции) идентична отправке команды в другой модуль системы (устройство/модуль 110А…110N, базовый модуль 120A…120N и/или сервер 160).
9) По крайней мере, одна упомянутая выше программа может возвращать данные. В случае вызова/запуска упомянутой программы/скрипта в том же модуле, выполнение программы может быть остановлено (приостановлено выполнение программы) до получения возврата от вызванной программы (в частном случае, останавливается до завершения вызванного скрипта). В случае вызова удаленной (в частности, находящейся на другом узле (устройстве 110A…110N, базе 120A…120N)) программы, для получения возврата используются средства (механизм/алгоритм) указателя на область памяти результата выполнения, как было описано выше. Причем вызов скрипта в том же модуле, например, скрипта №1, может инициировать запуск (запустить) запуск, по крайней мере, одного другого скрипта №2, размещенном/хранящемся на этом же модуле (110A…110N), что и исполняемый скрипт №1 или размещенном на удаленном устройстве 110A…110N или базе 120A…120N. Причем запущенный скрипт №2 возвращает (какое-то) значение, соответствующее типизации виртуальной машины или null, в случае его отсутствия, а запустивший его скрипт №1 принимает такое значение и обрабатывает или отбрасывает/не обрабатывает.
10) Также, по крайней мере, одна упомянутая программа/скрипт может быть выполнена по прямой команде через сервер со стороны клиента. Причем, в частном случае, прямой командой (с сервера) является команда указания узлу выполнить указанный скрипт с заданными параметрами. Данная команда может быть вручную инициирована пользователем через веб-интерфейс системы, в частности, веб-интерфейс 570.
На ФИГ. 8 показан примерный вариант общей схемы окружения системы выполнения скриптов, согласно одному из вариантов осуществления настоящего изобретения. Устройство/модуль 110A…110N и/или базовый модуль 120A…120N, и/или сервер 160 может включать генератор событий (820), в частности, являющийся (обобщенным) определением/сущностью различных подсистем устройства/модуля 110A…110N, базового модуля 120A…120N, сервера 160, которые обращаются к описываемой триггерной системе, в частности, при возникновении, по крайней мере, одного события уровня указанной данной подсистемы (например, системы/подсистемы/модуля мониторинга соединений 1210, на ФИГ. 12). Устройство/модуль 110A…110N и/или базовый модуль 120A…120N, и/или сервер 160 также может включать менеджер триггеров 830 (например, в частном случае, являющимся триггерной системой 1220, на ФИГ. 12). Также, устройство/модуль 110А…110N и/или базовый модуль 120A…120N, и/или сервер 160 может включать хранилище скриптов 840 (которое более подробно описано далее, в частности, в описании к ФИГ. 10). Причем генератор событий 820 и/или менеджер триггеров 830 могут являться частью модуля правил управления устройствами 640, а хранилище скриптов 840 может являться частью хранилища правил управления устройствами 650, т.е., в частном случае, скрипты могут храниться в модуле 650.
Менеджер прерываний 870 является структурой (частью) «прошивки» модуля (модуля/устройства 110А…110N или базового модуля 120A…120N, или сервера 160), которая осуществляет обработку (реальных) аппаратных прерываний и осуществляет (какие-то) действия в качестве реакций на них. Одной из таких реакций, может быть «проводка» такого прерывания в виртуальную машину 860. Для этого менеджер прерываний 870 посредством интерфейса управления (920, ФИГ. 9) виртуальной машины 860, инициирует в системе прерываний (940, ФИГ. 9) виртуальной машины прерывание уровня виртуальной машины.
На ФИГ. 9 изображен примерный вариант общей схемы (блок-схемы) виртуальной машины 860, согласно одному из вариантов осуществления настоящего изобретения.
Данная виртуальная машина 860 может частично является (типовой) конструкцией для данного типа программного обеспечения. Интерфейс управления 920 является API управления виртуальной машиной и предоставляет функционал доступа к инфраструктуре виртуальной машины. Загрузчик 890 осуществляет загрузку байт-кода скрипта в среду выполнения 880. Система прерываний 940 отвечает за имитацию аппаратного прерывания уровня виртуальной машины. Данное прерывание может быть инициировано со стороны менеджера прерываний 870 прошивки устройства. Сборщик мусора 950 осуществляет проверку и удаление недостижимых объектов. Среда выполнения/исполнения 880 осуществляет выполнение/исполнение потока инструкции и осуществляет распределение времени их выполнения в режиме нескольких потоков выполнения. Неар/«хип» (англ. - куча, груда, множество) 970 является нетипизированной кучей для хранения переменных. Stack (англ. стек) 960 является типизированным стеком.
На ФИГ. 10 показан примерный вариант осуществления хранения скриптов на различных узлах сети, согласно одному из вариантов осуществления настоящего изобретения, в частности, способ (в частном случае, методика) хранения скриптов на трех типах узлов описываемой системы (устройстве/модуле 110А…110N, базовом модуле 120A…120N, сервере 160).
Каждый из упомянутых способов может определяться (исключительно) аппаратными возможности конкретного узла. На сервере 160 данные могут храниться, например, в двух таблицах базы данных 1040: первая таблица 1045 является триггерной таблицей (в которой, в частности, хранятся описываемые триггеры, причем таблица 1045, в частном случае, по смыслу, структуре и т.д. может быть идентична, аналогичная или схожа с 1015 и/или 1030), вторая таблица 1050 содержит (непосредственно сам) байт-код скриптов. На базовом модуле 120A…120N данные могут храниться в виде файлов внутри файловой системы 1025 развернутой поверх флеш-памяти 910. В файле tr_table 1030 хранится триггерная таблица, а код скриптов находятся в файлах с порядковой нумерацией p_1…p_N (1035A…1035N). На конечном устройстве/модуле 110А…110N, данные могут храниться в виде адресно-разделенных областей (1020A…1020N) флеш-памяти 910., определенных в таблице адресации 1010. Под триггерную таблицу 1015 и код скриптов могут быть зарезервированы заведомо определенные области памяти (1017, 1022A…1022N).
ФИГ. 11 иллюстрирует примерный вариант структуры триггерной записи, согласно одному из вариантов осуществления настоящего изобретения.
В частном случае осуществления настоящего изобретения триггерная запись может включать тип запуска 1120, выражение запуска 1130 и идентификатор запуска 1140. Тип запуска (скрипта) 1120 определяет при каких условиях запускается скрипт. Тип запуска (скрипта) 1120 может содержать битовую маску, определяющую тип запуска скрипта, где каждый следующий бит определяет свой тип:
0 - по прямой команде с сервера
1 - по CRON выражению
2 - по ивенту/событию
N - другие варианты
Выражение запуска 1130 определяет данные для триггера запуска. В выражении запуска 1130 может содержаться информация, необходимая для срабатывания триггеров, которым необходимы дополнительные данные. Например, для запуска по типам 1 и 2 запись может выглядеть следующим образом: 10-59****⎪20, т.е. запускать каждую минуту и в случае возникновения ивента/события с идентификатором 0.
Идентификатор скрипта 1140 (для устройства 110А…110N) содержит номер ячейки памяти (1020A…1020N, ФИГ. 10). Идентификатор скрипта 1140 (для базы 120A…120N) содержит имя файла (1035A…1035N, ФИГ. 10). Идентификатор скрипта 1140 (для сервера 160) содержит идентификатор записи в таблице scripts (1050, ФИГ. 10).
ФИГ. 12 иллюстрирует примерный вариант общей схемы событийно-триггерной системы, согласно одному из вариантов осуществления настоящего изобретения.
В частности, на ФИГ. 12 продемонстрирован общий принцип срабатывания триггера. В подсистеме программного обеспечения устройства 110А…110N, базового модуля/блока 120A…120N или сервера 160 возникает ситуация, при которой происходит уведомление триггерной системы 1220 о данном факте. Примерами таких фактов могут быть различные события, например, ситуации (в частности, события) на устройстве/модуле 110A…110N, базовом модуле 120A…120N, и т.д., в частности, таким фактом является потеря соединения/связи сервера 160, например, с базовым модулем 120A…120N, или базовым модулем 120A…120N с сервером 160, или базовым модулем 120A…120N с устройством/модулем 110A…110N (об этом факте может уведомляться упомянутая триггерная система 1220, причем такой факт имеет (конкретное) семантическое определение, например у рассматриваемого факта, это - baseDisconnectEvent (событие об отключении базового модуля)). Триггерная система 1220, оперируя известной информацией об источнике события, просматривает триггерную таблицу 1015, и, найдя в ней запись, относящуюся к указанному событию, производит вызов соответствующего скрипта, в частности, указанных в 1050. В частном случае, система/подсистема мониторинга соединений 1210 является надстройкой (в частности, программным модулем/компонентом), в частности, над сетевым API, так на устройстве 110А…110N элемент/модуль 1210 являются (программными) библиотеками работы/взаимодействия с ZigBee, на базовом модуле 120A…120N - ZigBee/XMPP, на сервере 160 - ХМРР. Элементы 1220A..1220N на ФИГ. 12 являются (некоторыми другими) ивентами, зарегистрированными в триггерной системе 1220. Элемент 1215 обозначает/показывает что в подсистеме мониторинга соединений 1210 произошло событие изменения статуса соединения. Тип данного события может зависеть от конкретного соединения. В качестве примера (простейшей) модели может быть представлен/взят обратный вызов, например, пропало соединение устройства 110A…110N с базовым модулем 120A…120N, причем была вызвана функция, которая обращается (стрелка 1229) в триггерную систему 1220 или, иначе говоря, информирует триггерную систему 1220 о том, что произошло данное событие (например, 1220A…1220N). Триггерная система 1220 просматривает стек зарегистрированных ивентов (1220A…1220N) и если находит в нем указанное событие, передает управление дальше, в частности, в виртуальную машину 860 (стрелка 1239).
ФИГ. 13 иллюстрирует примерный вариант диаграммы общей низкоуровневой логики вызова скрипта по ивенту/событию, в частности показана диаграмма, демонстрирующая работу ивента, согласно одному из вариантов осуществления настоящего изобретения.
Стоит отметить, что событие статуса соединения (с параметрами) в частном случае подразумевает передачу параметров событием/ивентом. Так, например, такое событие, как соединение «connectionEvent(int)» может иметь один целочисленный параметр, определяющий тип события: 1 - установлено соединение, 2 - потеря соединения (соединение потеряно/разорвано). Также, при загрузке в среду выполнения/исполнения скрипта sid и передача ему параметров param может являться загрузкой в среду выполнения/исполнения скрипта с идентификатором скрипта «sid» в рамках устройства 110A…110N, базового модуля 120A…120N, сервера 160, и передача ему параметров (param), которые передает ивент/событие, которые впоследствии передаются скрипту. Также, при загрузке кода в среду выполнения/исполнения среда исполнения, в частном случае, может создать не запущенный поток, в частности, (полностью) подготовит байт-код к выполнению, но не запустит (не стартует) выполнение потока инструкций. Также при запуске потока с id=itId и ожидании его завершения до окончания программы осуществляется запуск потока с id=itId и осуществляется ожидание его завершения. Также, при выгрузке скрипта из среды выполнения осуществляется очистка пулов кода, запуск GC и т.д., в частности, осуществляется очистка пулов инструкций байт-кода, осуществляется запуск сборщика мусора (950, ФИГ. 9) и т.д. Также, «ОК» является выполнением без ошибки, как описано ранее.
ФИГ. 14 - ФИГ. 16 иллюстрируют примерный вариант принципа работы загрузчика скриптов на различных узлах описываемой в настоящем изобретении системы, согласно одному из вариантов осуществления настоящего изобретения.
На ФИГ. 14 показан процесс реализации функционирования загрузчика скриптов в модуле/устройстве 110A…110N. В устройстве 110A…110N загрузчик 890А получает (1414) на вход номер ячейки памяти 1020A…1020N, в которой находится (нужный) скрипт. Из таблицы адресации (1010 на ФИГ. 10) определяется средствами загрузчика определяется адрес начала области памяти (например, оперативной памяти и/или флеш-памяти) заданной ячейки. Данный адрес передается в среду исполнения/среду выполнения (880, ФИГ. 8) с командой создания нового потока. В частности, из-за аппаратных ограничений на устройствах 110А…110N скрипт может не загружаться в память (например, устройства 110А…110N) сразу весь, а может интерпретироваться из флеш-памяти последовательно, например, по одной инструкции (инструкция за инструкцией), так что в упомянутую среду исполнения передается не (сам) код, а адрес первой инструкции. Также, далее может быть загружен адрес второй инструкции и т.д. Стоит отметить, что таблица адресации, в частном случае, является жестко определенной в прошивке (например, устройства/модуля 110A…110N, базы 120A…120N и/или сервера 160 и т.д.) таблица адресов ячеек в памяти (например, в оперативной памяти и/или в флеш-памяти). В частном случае, (физически) упомянутая таблица адресации может храниться в (специально) отведенной для нее области флеш-памяти. Стоит отметить, что указанный на ФИГ. 14 Адрес addr, в частном случае, является физическим адресом во флеш-памяти 910A. Стоит также отметить, что при создании потока выполнения с первой инструкции по адресу addr (как было описано выше) скрипт может не загружаться в память (оперативную память, флеш-память, SRAM хранилище и т.д.) целиком, например, из-за его значительного размера относительно размера памяти. Таким образом, чтение инструкций из флеш-памяти может осуществляться последовательно (хотя и возможна реализация параллельной загрузки), так что среда выполнения/исполнения 880А, в частности, при начале выполнения/исполнения скрипта, может получить (физический) адрес начала первой инструкции во флеш-памяти 910A.
На ФИГ. 15 показан процесс реализации функционирования загрузчика скриптов в базовом модуле 120A…120N.
На Базе загрузчик (базового модуля) 890Б получает (1515) на вход имя файла 1035A…1035N, в котором содержится код скрипта. Далее загрузчик получает данные из указанного файла и передает их с командой создания нового потока в среду выполнения/исполнения 880Б. Стоит отметить, что указанный на ФИГ. 15 Адрес addr, в частном случае, является физическим адресом во флеш-памяти. Стоит также отметить, что при создании потока выполнения с первой инструкции из данных скрипт может не загружаться в память (как и в случае с описанным выше для ФИГ. 14), или может быть загружен полностью, в частности, с использованием SRAM (от англ. SRAM, static random access memory - статическая память с произвольным доступом).
На ФИГ. 16 показан процесс реализации функционирования загрузчика скриптов на сервере 160.
На сервере 160 загрузчик получает (1616) на вход уникальный идентификатор/идентификатор (ID) записи в таблице scripts 1050 и выбирает из нее данные, которые хранятся в виде blob объекта (от англ. Binary Large Object - двоичный большой объект, массив двоичных данных), и передает их с командой создания нового потока в среду выполнения/исполнения 880В. В частном случае при получении данных из таблицы scripts 1050 по идентификатору id, id скрипта является (равен) id ключом в таблице scripts 1050. При создании потока выполнения с первой инструкции из данных, которые передаются вместе с этой командой, в частном случае, создается поток выполнения с первой инструкции из данных, которые были получены из таблицы scripts 1050.
ФИГ. 17 иллюстрирует примерный вариант схемы «проброса» команд/запросов в модули описываемой системы, в частности, данная схема демонстрирует пример порядка взаимодействия элементов сети при передаче команды от устройства/модуля 110А…110N, находящегося в одной подсети базового модуля 120A…120N, (другому) устройству 110А…110N, находящемуся в другой подсети, согласно одному из вариантов осуществления настоящего изобретения. В данном случае под пробросом понимается передача управляющей команды к устройствам 110А…110N, находящимся под управлением, по крайней мере, одной базы/базового модуля (120A…120N), которой не принадлежат устройства, которым передаются управляющие команды, в частном случае устройствам, не зарегистрированным на упомянутой базе. Поскольку у базы, которой управляется устройство-отправитель/источник нет прямого (не через другое устройство, другую базу и т.д.) доступа к устройству-получателю на другой базе, команды от устройства-отправителя, должны пройти через сервер 160, где пройдя проверку системой безопасности, как описано выше, могут быть отправлены на базу, которой принадлежит устройство-получатель. А оттуда уже соответственно на само, по крайней мере, одно целевое устройство. В частном случае осуществления настоящего изобретения архитектура описываемой системы (в частности, подсистемы, изображенной на ФИГ. 17) может состоять из трех слоев. Серверного слоя, слоя базовых модулей 120A…120N и слоя конечных устройств/модулей 110A…110N. Если два устройства/модуля (например, 110A…110N) находятся в подсети одного базового модуля, отправляемая команда может идти/передаваться по пути source_dev (источник команды) → base (базовый модуль) → dest_dev (целевой модуль). Если целевое устройство/модуль 110A…110N (и/или 120A…120N и/или 160) находится в подсети другого базового модуля 120A…120N, то она (команда) может пройти/быть передана через сервер 160 по схеме source_dev (модуль, источник команды) → base1 (базовый модуль 1 (120A…120N)) → server (сервер 160) → base2 (базовый модуль 2 (120A…120N)) → dest (целевой модуль (110A…110N, и/или 120A…120N)). В первом случае команда доставляется/передается к цели (целевому модулю) минуя сервер 160.
Как было сказано выше поступающие на сервер 160 данные (телеметрия) журналируются, как было описано выше, в частности, добавляется в журнал событий, причем упомянутые полученные данные могут храниться не менее двух лет.
Пользователь 135A…135N может запросить эти данные за любой заданный им промежуток времени, например, посредством веб-интерфейса Интернет портала 660/(мобильного) приложения/модуля пользовательского веб-интерфейса 570 (клиент) и т.д.. Ввиду большого объема поступающих данных, конечный размер базы данных с телеметрическими данным может составить более терабайта. Для предоставления данных по запросу пользователя 135A…135N может быть использован, по крайней мере, один из следующих предлагаемых механизмов/способов (реализованный средствами, по крайней мере, одного модуля описываемой системы), в частности, способов увеличения производительности получения, хранения, обработки и предоставления данных: область текущей телеметрии 1850 и область исторической телеметрии и способ прореживания хранимых данных. Причем, в частном случае, упомянутые области являются таблицами в упомянутых базах данных. Новая (любая новая) единица телеметрических данных (в частности, значения измерений измерителями 310A…310N), поступающая от любого модуля описываемой системы, например, модуля 110A…110N, вносится/сохраняется одновременно в две указанные выше области. Особенность области текущей телеметрии, заключается в том, что в ней хранится только самое последние значение полученное от упомянутого модуля для определенной его части (например, датчика и/или внутреннего источника данных). Причем внутренние данные (в частном случае, данные из внутреннего источника) являются дынными, которые вырабатывает/генерирует само устройство/модуль (например, 110A…110N). Также, данные с датчика/измерителя 310A…310N являются внешними данными, так, например, сила сигнала сети, является внутренними данными. Таким образом, размер такой области, даже при значительном количестве упомянутых модулей в системе, остается незначительным, для быстрого (с точки зрения пользователя) получения/извлечения данных, в частности, по запросу пользователя. После записи данных в этой части (в части записи данных в область текущей телеметрии) осуществляется запись в упомянутую область исторических данных, где хранится история измерений всех устройств за определенный временной промежуток, например, за упомянутые последние два года. Она (область исторических данных) может быть организована в виде группы/набора таблиц, их В-Tree индексов и общей индексной таблицы. Причем у каждой таблицы может наличествовать (может быть назначен) (собственный) индекс, в частности, организованный в формате графа типа B-Tree/Б-дерева/В-дерева. В каждой таблице может храниться телеметрия для (всех) упомянутых модулей (в частности модулей 110А…110N), закрепленных за определенным базовым модулем (120A…120N), в частности, зарегистрированных на таких базовых модулях. В упомянутой общей индексной таблице хранятся соотношения идентификаторов (ID) базовых модулей и закрепленной за ней таблиц. Причем, в частном случае, идентификатор базового модуля эквивалентен идентификатору (обычного) устройства/модуля 110A…110N и определяет адрес базового модуля в сети. При записи новой телеметрии ((наборов) данных телеметрии), осуществляется поиск по индексу необходимой таблицы, и собственно запись данных, в частности осуществляется поиск таблицы, в которой хранится историческая телеметрия от устройств/модулей (110А…110N) находящихся в подсети базового модуля с искомым идентификатором.
На ФИГ. 18 показан примерный вариант общей структурной схемы записи и получения данных телеметрии, согласно одному варианту осуществления настоящего изобретения. Запрос на выборку 1810, в частном случае, является SQL запрос СУБД, в которой хранятся телеметрия/данные с устройств 110A…110N. Поскольку СУБД могут быть разных типов, а структура телеметрии различаться в зависимости от требований детальности, данный запрос будет различным в каждом конкретном случае. Запрос на текущую телеметрию 1820, как и запрос 1810 является SQL-запросом у упомянутой СУБД. Запись телеметрии 1830, как и запросы 1810 и 1830 является SQL запросом СУБД. Индекс таблиц 1840 является частью СУБД, причем в каждой СУБД используются свои механизмы формирования и хранения индексов. Текущая телеметрия 1850 является таблицей текущей телеметрии, которая хранит/содержит, по крайней мере, пять столбцов id, devid, baseid, value и timestamp. Где id - это ключ строки; devid - идентификатор устройства, например, устройства/модуля 110A…110N, базового модуля 120A…120N и т.д.; baseid - идентификатор базового модуля 120A…120N; value - значение телеметрии; timestamp - метка времени. Элементы ФИГ. 18 1860А…1860Д являются индексами (которые были описаны выше) таблиц исторической телеметрии. Элементы ФИГ. 18 1865А…1865Д являются таблицами исторической телеметрии, причем каждая такая таблица, в частном случае, идентична элементу 1850. В частном случае осуществления изобретения
упомянутых способов увеличения производительности обработки данных бывает недостаточно, в частности для достижения приемлемых размеров, по крайней мере, одной упомянутой таблицы (при такой схеме максимальный размер таблицы может составить до 15 гб и более). Для решения данной проблемы может быть осуществлен способ/механика/механизм прореживания записей (данных) средствами, по крайней мере, одного модуля описываемой системы, в частности модулем сепарирования/фильтрации. Так, при осуществлении упомянутого способа с некоторой/определенной (в частности, заданной пользователем или заданных настройками описываемой системы, по крайней мере, в одном модуле) периодичностью, например, один раз в сутки, по крайней мере, из одной (в частном случае, из каждой) исторической таблицы (1860А-1860Д и 1865А-1865Д) осуществляется удаление части записей, в частном случае, с телеметрией (в частности, удаляется, по крайней мере, одна (соответствующая) ей строка в таблице (индексы которых могут храниться в индексе таблиц 1840) как более подробно описано ниже). Количество удаляемых записей, в частном случае, имеет линейную зависимость во времени (в прошлое). В случае возникновения неразрешимой ситуации работа модуля сепарирования (при)останавливается. В частном случае, недостатком записей для построения зон является недостаточность записей в зоне для проведения сепарации и других ситуаций, из-за которых описываемый алгоритм (в частности, часть способа) не может продолжить работу полностью или в части конкретной итерации. В частном случае осуществления изобретения средствами модуля сепарирования определяется/устанавливается временной диапазон записей в таблице, в частном случае определяемый настройками сервера 160 (устанавливаемыми/задаваемыми, например, администратором системы). От текущего момента отступается/отсчитывается (предварительно) заданный временной диапазон/промежуток времени, например, месяц, полгода, год и т.д. Причем, упомянутые значения диапазона приведены в качестве примера и размер диапазона может определяться/задаваться, например, датой самой давней записи в таблице - диапазон начального отступа.
й Полученный временной диапазон делится на десять зон, причем каждая зона может быть разделена на блоки по N записей, где N равно от 1 до заданного количества, например, до 11 записей. В зоне 1 удаляется запись номер 5, в зоне 2 удаляются записи номер 5 и номер 2, в зоне 3 удаляются записи номер 5, номер 2 и номер 7 и так далее, до последней зоны, причем в упомянутых блоках (в частности, в каждом упомянутом блоке) должна остаться, по крайней мере, одна запись (в частном случае - только одна запись). Если данная операция происходит в/над таблицей в первый раз, в специальной индексной таблице, по крайней мере, для одного блока (в частности, для каждого блока), сохраняется/запоминается информация о дате первой записи в блоке, диапазоне ключей и текущей степени сепарации блока. В частном случае, упомянутые номера записей могут быть вычислены алгоритмически и определены, например, исходя из размера блока в записях. Выше приведен пример для 11 записей, поэтому они удаляются штучно, а при больших размерах блока может быть осуществлено удаление записей группами. Также, выбор (конкретных) номеров записей может быть определен по принципу через x записей, для того чтобы удаление происходило равномерно и не образовывалось временных областей, в которых записей меньше чем в других в том же временном диапазоне. Также, в частном случае, блочная структура может быть определена один раз, например, при первом проходе алгоритма, а индексная таблица является структурой/сущностью, в которой может храниться мета-информация для блоков (каждой из) таблиц исторической телеметрии, в частности, где начало (каждого) блока, какой диапазон записей по ключам (id, идентификатор записи в (sql-)таблице) входит в данный блок, сколько раз алгоритм уже прореживал данный блок (данных телеметрии) и т.д.
Далее, при последующих таких упомянутых операциях в/над таблицей модуль сепарации/сепаратор использует отличный от предыдущего алгоритм, в частности, модуль сепарации осуществляет анализ данных, по крайней мере, в одной упомянутой таблице индексации блоков и на основании (с учетом) содержащихся в ней данных, определяет, зашел/пересек ли анализируемый в настоящее время блок во временные границы следующего уровня сепарации (временнЫе уровни сепарации), и если да, то осуществляется удаление записей из блока, а в индексную таблицу блоков, вносится соответствующая информация (информация о полности/неполности (в частности, о полноте, заполненности и т.д.) блока и количестве строк в нем, если он неполный, датах самой ранней и самой старшей записи, текущем уровне сепарации). В частности, упомянутый сепаратор/модуль сепарации просматривает/проверяет (в частности, читает/вычитывает) каждый блок последовательно (или выборочно, в зависимости от алгоритма) от настоящего в прошлое (в частности, от первой заданной даты, например, текущей даты, до, по крайней мере, одной другой даты, в частности, более ранее даты). Стоит отметить, что При обработке описываемым алгоритмом описываемых данных в первый раз, алгоритм, как правило, создает временнУю разметку, в частности, от настоящего (от по крайней мере, одной временной метки) в сторону прошлого (до, по крайней мере, одной другой временной метки) с определенным/заданным интервалом. Так, например, (первоначальный упомянутый отступ опущен для упрощения) при размере уровня сепарации равным 1 месяцу может существовать (может быть выбрано описываемым алгоритмом, в частности, реализуемым модулем сепарации), например, десять уровней сепарации (и/или любое другое количество уровней сепарации, в частности, определяемыми алгоритмом и/или администратором сервера 160, модуля 120A…120N, пользователем и т.д.). Самая ранняя запись в таблице имеет дату 3.5 месяца назад. При первом проходе, алгоритм может создать следующую разметку уровней:
1 - настоящее время - (-1 месяц):
2 - (-1 месяц) - (-2 месяца);
3 - (-2 месяца) - (-3 месяца);
4 - (-3 месяца) - (-4 месяца);
5 - (-4 месяца) - (-5 месяцев);
6 - (-5 месяцев) - (-6 месяцев);
7 - (-6 месяцев) - (-7 месяцев);
8 - (-7 месяцев) - (-8 месяцев);
9 - (-8 месяцев) - (-9 месяцев);
10 - (-9 месяцев) - (-10 месяцев).
Таким образом, самая ранняя запись, окажется внутри третьего уровня сепарации. В частном случае осуществления, единичная запись может являться, по крайней мере, одним упомянутым выше блоком, причем блок, может содержать, по крайней мере, одну запись, например, сто записей. Таким образом, по крайней мере, один упомянутый блок может быть прорежен в соответствии с данным уровнем. В индексную таблицу могут быть внесены данные об уровне сепарации, по крайней мере, одного блока. Со временем, упомянутый блок может уходить в прошлое и может оказаться уже в четвертом уровне сепарации. Как только такой блок целиком окажется внутри границ четвертого уровня, он может быть прорежен (в частности, часть записей будет удалена) а в индексной таблице блоков будет поставлена отметка/пометка/маркировка, что блок сепарирован по четвертому уровню. В частном случае, с данным блоком может не производиться никаких действий, покуда он не «постареет» до пятого уровня сепарации (пока не переместится в пятый уровень сепарации). И так далее до прохождения последнего уровня сепарации, после которого такой блок может быть удален.
Стоит также отметить, что, как было описано выше, блок может являться группой строк в таблице (содержать несколько строк в таблице). Также, количество строк в блоке может быть заранее определено. В частном случае, блок по времени не может быть длиннее одного уровня сепарации. Таким образом, упомянутый блок может быть полным или неполным. Полным блоком является блок, у которого имеется номинальное количество записей и такой блок не длиннее одного уровня сепарации (в частности, не выходит за пределы одного уровня сепарации). Неполным блоком, в частном случае, является блок, у которого количество строк было срезано (в частном случае ограничено, удалено, перенесено в другой блок, проигнорировано и т.д.), например, для того чтобы уместить его в размерах одного уровня сепараци. В частном случае, информация о полности/неполности блока и количестве строк в нем, в частности, если он неполный, датах самой ранней и самой старшей записи, а также о текущем уровне сепарации, может храниться в индексной таблице блоков. От размеров блока и его полности, в частности, зависит количество записей, которое будет из него удалятся при прохождении каждого (нового) уровня сепарации.
Стоит также отметить, что одной из особенностей хранения данных о командах (данных команд) заключается в том, что на сервере 160 могут быть сохранены не только те команды, которые выполняются модулями описываемой системы, в частности, модулями 215, но и преобразованные пользователем в веб-интерфейсе базы, как было описано выше. В частном случае, в устройстве/модуле 110A…110N не содержится о таких преобразованиях, а информация о таких преобразованиях может храниться в базовом модуле 120A…120N. В частном случае осуществления настоящего изобретения базовый модуль/база 120A...120N при получении команды от сервера 160 осуществляет преобразование полученных данных в первоначальный формат и отправляет на устройство 110А…110N.
В частном случае осуществления изобретения в связке Модуль 215 - Базовый Модуль 120 - Сервер 160 существует распределенное хранилище данных команд (о командах). В частном случае, в упомянутой связке модулей связующим звеном может являться базовый модуль 120 (120A…120N), который при (каждом) взаимодействии модуля 215 и сервера 160 (в частности, при обмене данными между упомянутыми модулями, модулями 215 и сервером/серверами 160) в части передачи или выполнения/исполнения команд осуществляет трансформацию/преобразование упомянутых команд из формата модуля 215 в формат сервера 160 и наоборот, из формата сервера 160 в формат модуля 215. Упомянутые правила трансформации/преобразования, которые были описаны выше, могут быть настроены пользователем, например, по крайней мере, в одном модуле описываемой системы, в частности, в модуле веб-интерфейса базового модуля 570.
Так, трансформации/преобразования могут быть применены (трансформациям/преобразованиям могут быть подвергнуты, в частности, модулями описываемой системы, например, модулями модулей 215, модулей 120A…120N, сервера 160 и т.д.) к наименованиям/названиям команд и/или параметров команд, и/или значения параметров команд и/или значения/величины упомянутых команд.
Стоит отметить, что в частном осуществлении изобретения передаваемые между модулями (и внутри модулей) описываемой системы данные могут быть запакованы/упакованы и/или зашифрованы. В частном случае, передача данных, например, между модулями (110А…110N), в частности, между модулями 215, и/или между модулями (120A…120N) может быть осуществлена по (с использованием) сетевому протоколу стандарта ZigBee, причем шифрование передаваемых данных может осуществляться с использованием AES (Advanced Encryption Standard, также известный как Rijndael - симметричный алгоритм блочного шифрования (размер блока 128 бит, ключ 128/192/256 бит)), в частности с использованием 128-битного ключа.
В частном случае осуществления изобретения обмен (например, между устройствами/модулями 110A…110N и/или базовыми модулями 120A…120N) упомянутыми ключами (в частности, для того чтобы установить зашифрованную сеть между базовым модулем и устройством/модулем 110A…110N (или модулем 215) на этих ключах/с использованием данных ключей, как описано выше) осуществляется следующим примерным вариантом/способом: базовый модуль 120 (120A…120N) ожидает запросов на поиск сети по стандарту ZigBee от модулей 110 (110А…110N)/модулей 215, в частности, зарегистрированных в упомянутом модуле 120 с целью начала осуществления процесса авторизации (причем, в частном случае авторизация является процессом установления сети/связи между устройством/модулем 110A…110N и базовым модулем 120A…120N, как более подробно описано далее).
В частном случае осуществления настоящего изобретения неавторизованные модули 110 могут осуществлять шифрование запросов на поиск сети с помощью/с использованием упомянутого AES со 128-битным ключом, основанном на номере (в частности, номере, присвоенному модулю 215, например, при его создании/производстве, который является уникальным номером/идентификатором, и может являться буквенно-цифровым, причем может использоваться при регистрации модуля 110A…110N (в частном случае, модуля 215) на базовом модуле) модуля 110 или, в частном случае, модуля 215, (номер модуля, в частном случае дополненный слева/спереди от номера нулями, в данном случае до общего количества символов, равных 26 (до 26 символов)). Базовый модуль 120, получив запрос на поиск сети от модуля 100 или, в частном случае, модуля 215, зарегистрированного, но неавторизованного, обрабатывает полученный запрос и отправляет ответ по стандарту ZigBee, зашифрованный посредством упомянутого ключа (на ключе) модуля 110 или, в частном случае, модуля 215. Далее базовый модуль 120 формирует 128-битный ключ и отправляет его в сообщении модулю 110 или, в частном случае, модуля 215, (в частном случае, с (некоторой) задержкой после отправки предыдущего сообщения в модуль 110) по стандарту ZigBee, зашифрованному на ключе модуля 110 или, в частном случае, модуля 215. Стоит отметить, что упомянутая задержка может использоваться для того, чтобы модуль 110A…110N (в частном случае, модуль 215) успел получить и обработать предыдущее сообщение, причем значение задержки может различаться и составлять доли секунды, секунду, несколько секунд и т.д.
Базовый модуль 120 сохраняет полученный ключ («ключ сети») в привязке к номеру модуля 110 или, в частном случае, модуля 215 (вместе/в совокупности с номером модуля 110). Далее шифрование данных, передаваемых между модулями 110 или, в частном случае, модуля 215, и/или модулями 120 осуществляется на ключе сети (посредством использования упомянутого ключа сети).
Пример сообщения с информацией о командах, упомянутой выше:
«
{
"cmd": [
{
"cmdid": 1, //ID команды
"name": "Включение", //Наименование команды для портала
"params": [ //Список параметров
{
"id": 1, //ID параметра
"name": "Включение", //Наименование параметра
"type": "choice", //Тип параметра
"choice": { //Возможные значения параметра
"on": 0,
"off'': 1
},
"required": 1 //Обязательность ввода данного параметра
},
{
"id": 2,
"name": "Через сколько времени включить (сек)",
"type": "int", //Тип параметра
"required": 0
}
]
}
]
}
»
С целью уменьшения/снижения трафика между модулем 110 или, в частном случае, модулем 215, и базовым модулем 120 и уменьшения/снижения времени, затрачиваемого модулями на формирование и обработку сообщений, сообщения об измерениях между модулем 110 или, в частном случае, модуля 215, и базовым модулем 120 могут быть переданы не в упомянутом формате JSON, а в виде байт-кода. Так, текстовое описание упомянутых сообщений (структура сообщения) может иметь следующий вид:
В частном варианте осуществления изобретения осуществляется разбиение (больших) сообщений, передаваемых между базовым модулем 120 и модулем 110 или, в частном случае, модуля 215, на пакеты данных, в частном случае, размеры которых не превышают 256 байт. Также, (каждый) упомянутый пакет данных снабжается/содержит номером сообщения, номером пакета данных в сообщении и общим количеством пакетов данных (в сообщении). На стороне получателя (в частности, получателем является один из модулей описанной системы, например, модуль 110 или, в частном случае, модуля 215, и/или модуль 120) производится/осуществляется сборка (в частности, средствами, по крайней мере, одного упомянутого модуля) исходного (отправленного) сообщения, в частном случае, которому принадлежат эти пакеты данных. В случае обнаружения средствами модулей отсутствие, по крайней мере, одного пакета данных, то получатель не отправляет ответного сообщения об успешном получении сообщения отправителю (в частном случае, модулю, отправившему такое сообщение с пакетами данных, например, модуль 110 или, в частном случае, модуля 215, или модуль 120). В этом случае, не получив ответного сообщения через заданный промежуток времени (например, заданный/установленный (в том числе пользователем) в настройках модуля отправителя, либо на сервере 160, либо в модуле 120 и т.д.), например, через 3 секунды после отправки последнего пакета данных, отправитель повторяет отправку всех пакетов данных или по крайней мере, неполученных пакетов данных. Стоит отметить, что отправитель может осуществлять повторную отправку (попытку отправки) пакетов данных (в том числе, неполученных) или сообщения целиком заданное количество раз, например, 3 раза.
В частном варианте осуществления изобретения для модуля 215 может использоваться собственный модуль/источник питания (независимый от модуля/источника питания модуля 110), в частном случае реализованный аккумулятором/аккумуляторной батареей. Данная отличительная особенность используется в тех устройствах/модулях 110, в которых присутствует большая вероятность отключения/нестабильной работы основного источника питания устройства/модуля 110, через который также возможно осуществление питания (подача электроэнергии) модуля 215. Стоит отметить, что упомянутый независимый источник питания модуля 215 может быть встроен в модуль 215, который также может быть подключен к источнику питания модуля/устройства 110.
В частном варианте осуществления изобретения базовый модуль может поддерживать/осуществлять одновременное соединение, по крайней мере, с 20 устройствами модулями 110, в частности, модулями 215. Данная возможность, в частности, осуществляется/обеспечивается за счет (посредством) динамического пула (от англ. pool - объединение) активных соединений и интеллектуального распределения памяти между ними. Интеллектуальное распределение памяти, в частном случае, основывается на (осуществляется посредством) фиксированных периодах активностях модулей 215 (в частности, модулей 110A…110N) которые при подключении к базовым модулям 120A…120N передают (большой) объем информации/данных по упомянутым ключам шифрования и командам управления модуля 110A…110N. Так, например, модули 215 один раз за установленный/заданный промежуток времени, например, равный 15 секундам, осуществляют передачу информации/данных об измерениях модуля (110A…110N). На основе этой информации/данный для каждого соединения выделяется разный объем памяти (например, в оперативной памяти базы 120A…120N) в зависимости от периода активности модуля 215.
В частном варианте осуществления изобретения для обеспечения видимости базового модуля (120A…120N) сервером 160 и отправки сервером 160 в базовый модуль сообщений, команд и другой информации/данных может быть использован протокол ХМРР, в частности, для взаимодействия базовых модулей 120A…120N и сервера 160. Таким образом, в частном случае отсутствует необходимость использования прямого IP-адреса при взаимодействии базовых модулей 120A…120N и, по крайней мере, одного сервера 160.
В частном варианте осуществления изобретения на сервере 160 может осуществляться обработка порядка 40000 (и более) сообщений в минуту на одном инстансе ХМРР-шлюза. В частном случае, обработка такого количества сообщений обеспечивается посредством использования технологий SOA (от англ. Service-oriented Architecture - сервис-ориентированная архитектура, подход к разработке программного обеспечения на основе слабосвязанных компонентов, взаимодействующих посредством стандартизованных интерфейсов) на сервере 160.
Так, в частном варианте осуществления изобретения для ХМРР-шлюза используется компонента/модуль, который помимо выполнения (стандартных) операций для взаимодействия с транспортной шиной при увеличении нагрузки на шлюз обеспечивает временный перевод очередей сообщений в режим не персистентности и, при необходимости, осуществляет, создание дополнительных очередей сообщений. При снижении нагрузки на шлюз персистентность (где персистентный - сохраняющий (все) свои предыдущие состояния) очередей восстанавливается, а дополнительные очереди удаляются. Описанный механизм/способ, реализуемый модулем системы, может быть запущен при достижении заданной/у станов ленной нагрузки в сообщениях в минуту на один инстанс ХМРР-шлюза, например, при достижении нагрузки в 30000 сообщений в минуту на один инстанс ХМРР-шлюза.
В частном варианте осуществления изобретения взаимодействие базовых модулей 120A…120N с упомянутым ХМРР-шлюзом осуществляется посредством концентратора/хаба (от англ. hub - центр), который обеспечивает автоматическое развертывание нового инстанса ХМРР-шлюза при каждом кратном превышении нагрузки в упомянутые 40000 сообщений в минуту на хаб, т.е. кратном заданной нагрузке. Далее при каждом кратном снижении нагрузки хаб «гасит» (останавливает и/или удаляет из основной и оперативной памяти, например, чтобы не занимал места и не отнимал процессорное время) один экземпляр/инстанс (от англ. Instance - экземпляр) ХМРР-шлюза.
Хаб также обеспечивает равномерное распределение сообщений между развернутыми инстансами ХМРР-шлюза.
В частном варианте осуществления изобретения реализовано предотвращение «залипания» реле (в частности, электромагнитного реле, являющегося частью реализации конечного устройства/модуля, например, модуля 110A…110N) при включении (емкостных) нагрузок, например, реактивных нагрузок. Так, при включении нагрузок, в частности, (значительных) реактивных нагрузок, например, емкостных нагрузок через реле, в последнем может происходить кратковременный пробой зазора между контактами. Причем частным случаем упомянутых нагрузок являются нагрузки при подключении широкого спектра (бытовых) приборов, например, электродвигателей, энергосберегающих ламп и т.д. Вследствие этого возникает их пригорание (залипание), которое в существующих решениях устраняется посредством механического воздействия/механическим способом. Для предотвращения пригорания контактов и необходимости механического вмешательства человека осуществляется следующий способ устранения такого рода индицентов: в первый момент включения нагрузки, она коммутируется через симистор, далее через определенный/заданный (незначительный, например, от 400 до 700 миллисекунд) промежуток времени осуществляется (в частности, средствами контроллера) коммутация реле. Выключение нагрузки происходит в обратном порядке, что позволяет избежать токов коммутации на реле, а незначительное время работы симистора, позволяет ему полностью поглотить рассеиваемую мощность без вреда для конструкции компонента (в частности, семистора) даже при максимально допустимых токах. Причем, максимально допустимая величина тока, в частном случае, зависит от конфигурации конечного устройства 110A…110N и может быть ограничена используемой парой реле-симистор. В одной из реализаций/осуществления настоящего изобретения, в частности, в устройствах/модулях 110A.. 110N, максимальная величина тока может составлять 10 Ампер и выше.
В частном варианте осуществления изобретения осуществляется стабилизация упомянутого ZigBee, в частности, над протоколом ZigBee реализован дополнительный уровень стабилизации, который реализован/осуществляется с использованием дополнительных попыток отправки, по крайней мере, одного пакета данных (как было сказано выше) не дошедшего до цели (упомянутого выше получателя), с большим интервалом, чем осуществляет ZigBee по умолчанию.
Один из примеров осуществления настоящего изобретения приведен далее. По крайней мере, один управляющий модуль/чип/микросхема (215A…215N) устанавливается/встраивается (или подключается к), по крайней мере, в один модуль/устройство (110A…110N), например, в (электрический) чайник. Чайник может содержать (или в него может быть установлен/встроен), по крайней мере, один измеритель (310A…310N), например, датчик температуры, в частности, позволяющий регистрировать/фиксировать температуру нагреваемой в чайнике/чайником жидкости (воды), причем нагрев воды может осуществляться, по крайней мере, одним управляемым модулем (330A…330N), например, имеющим в своем составе нагревательный элемент типа ТЭН (трубчатый электронагреватель). По крайней мере, один пользователь (135A…135N) посредством средств (модуля) веб-интерфейса 570 базового модуля (120A…120N) может осуществить (как описано в рамках настоящего изобретения) включение чайника и отслеживать в реальном времени увеличение температуры (нагрев) воды в чайнике. При достижении температуры воды необходимого значения пользователь посредством упомянутого веб-интерфейса базового модуля (включая использование пользователем устройства пользователя 130A…130N) может отключить чайник либо чайник может быть отключен средствами, в частности, скриптами и/или командами/инструкциями, по крайней мере, одного модуля описываемой системы автоматически по достижению заданной (например, пользователем) температуры.
Второй пример осуществления настоящего изобретения: модуль 215 встроен в модуль 110, являющийся телевизором (например, LCD-телевизором, OLED-телевизором, плазменной панелью, проектором и т.д.). На интернет-портале 660 (или в (мобильном) приложении) пользователь (в частности, отец ребенка) 135 настраивает правило автоматического управления устройством: в период с 14:00 до 18:00 в будние дни при включении телевизора и переключении на канал отличный от 5 (пятого) переключать телевизор на канал 5 (пояснение: после прихода ребенка домой после школы и до прихода родителей ребенку запрещено/не рекомендуется смотреть не познавательные каналы (то есть отличные от 5)). Если в обозначенный период телевизор будет переключен на канал отличный от 5, то сервер 160 автоматически отправит команду на переключение телевизора на канал 5.
Еще одним примером осуществления настоящего изобретения является совместное использование модуля 215 с модулем/устройством 110, в частности, встраивание модуля 215 в датчик температуры почвы на даче. На интернет-портале 660 (или в (мобильном) приложении) пользователь 135 настроил правила уведомлений пользователя: если температура опустится ниже 2 градусов Цельсия, то прислать SMS-сообщение на мобильный телефон пользователя, и указал текст сообщения, например, «Температура - ниже заданной отметки в 2 градуса Цельсия». Пользователь будет проинформирован интернет-порталом о приближении заморозков, когда температура, зарегистрированная датчиком температуры опустится ниже заданного им значения.
Примерный вариант программного кода/скрипта для управления обогревом:
«
{
boolean heat=false;
int temp=0;
while(true) {
temp=getSensorValue(0); //Получить данные с датчика 0
if (heat==false) {
if (temp<17) {
setOutValue(0, 1); //Включить обогреватель на выходе 0
heat=true;
}
} else {
if(temp>20) {
setOutValue(0, 0); //Выключить обогреватель на выходе 0
heat=false;
}
}
}
}
».
Примерный вариант программного кода для аварийных действий при потере соединения с сервером 160 (вызывает ивентом с передачей входного параметра) с передачей команды устройству внутри сети:
«
{
if (sysargs[0]==0) { //Если входящий параметр 0 указывает на разрыв соединения
sendCmd("1958", "15А04403004В1200", "0", "0.5");
//Отправить на устройство 15А04403004В1200 через базу 1958 команду 0 с аргументом 0.5
}
}
»
Примерный вариант программного кода для удаленного вызова программы с ожиданием результата и повторными попытками отправки, после которых происходит вызов нотификационной команды на сервере 160:
«
{
int rc=0;
execProgRemote("1958", "15А04403004В1200", "scriptname", 0);
//Выполнить команду на устройстве ID/№15А04403004В1200 через базовый модуль ID/№1958 с именем scriptname и разместить возврат программы в ячейке памяти 0
while(rc<3) {
sleep(1000);
if (sysrsp[0]==null) {
rc=rc+1;
execProgRemote("1958", "15A04403004B1200", "scriptname");
} else {
sendCmd("server", "nonify", "uid", "OK"); //Отправить уведомление пользователю
exit 0;
}
}
sendCmd("server", "nonify", "uid", "OK");
exit 1;
}
».
В частном варианте осуществления настоящего изобретения (управляющий) модуль/чип/микросхема 215 и/или устройство/модуль 110A…110N может быть изготовлен на базе (или может включать), по крайней мере, одной микросхемы, например, сс2530 или сс2538, ATSAMR21E18A, ATSAMR21G18A, ATmega256RFR2, и/или ATmega2564PvFR2 и т.д.
В частном варианте осуществления настоящего изобретения (базовый) модуль 120A…120N может быть изготовлен на базе (или может включать), по крайней мере, одной микросхем сс3200, сс2530, сс3100, ATSAMW25, ATWINC1500, сс2531, сс2538, ATSAMR21E18A, ATSAMR21G18А, ATmega256RFR2, и/или ATmega2564RFR2. В частности, (базовый) модуль 120A…120N может быть изготовлен на базе (или может включать), по крайней мере, одной микросхемы, например, сс3200, сс3100, ATSAMW25 или ATWINC1500 в совокупности с одной из микросхем, например, сс2531, сс2538, ATSAMR21Е18A, ATSAMP21G18A, ATmega256RFR2 или ATmega2564RFR2.
В решении Сервер может быть изготовлен на базе компьютерных систем семейств х64 или х86, а функциональная часть может быть разработана на программном обеспечении класса серверов приложений, например, Apache Tomcat, Apache HTTP Server, nginx, GlassFish, Oracle WebLogic, и/или IBM WebSphere Application Server и т.д.
Описываемое изобретение (в частности, для контроля состояния, просмотра показателей/измерений и удаленного управления домашней электроникой, бытовыми приборами, профессиональным и техническим оборудованием «Электронный домовой») может быть изготовлено на известном оборудовании и с использованием известных материалов и средств, что подтверждает ее промышленную применимость.
На ФИГ. 19 показан пример компьютерной системы общего назначения, которая включает в себя многоцелевое вычислительное устройство в виде компьютера 20 или сервера, или модуля описываемой в настоящем изобретении системы, включающего в себя процессор 21, системную память 22 и системную шину 23, которая связывает различные системные компоненты, включая системную память с процессором 21.
Системная шина 23 может быть любого из различных типов структур шин, включающих шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из множества архитектур шин. Системная память включает постоянное запоминающее устройство (ПЗУ) 24 и оперативное запоминающее устройство (ОЗУ) 25. В ПЗУ 24 хранится базовая система ввода/вывода 26 (БИОС), состоящая из основных подпрограмм, которые помогают обмениваться информацией между элементами внутри компьютера 20, например, в момент запуска.
Компьютер 20 также может включать в себя накопитель 27 на жестком диске для чтения с и записи на жесткий диск, не показан, накопитель 28 на магнитных дисках для чтения с или записи на съемный магнитный диск 29, и накопитель 30 на оптическом диске для чтения с или записи на съемный оптический диск 31 такой, как компакт-диск, цифровой видео-диск и другие оптические средства. Накопитель 27 на жестком диске, накопитель 28 на магнитных дисках и накопитель 30 на оптических дисках соединены с системной шиной 23 посредством, соответственно, интерфейса 32 накопителя на жестком диске, интерфейса 33 накопителя на магнитных дисках и интерфейса 34 оптического накопителя. Накопители и их соответствующие читаемые компьютером средства обеспечивают энергонезависимое хранение читаемых компьютером инструкций, структур данных, программных модулей и других данных для компьютера 20.
Хотя описанная здесь типичная конфигурация использует жесткий диск, съемный магнитный диск 29 и съемный оптический диск 31, специалист примет во внимание, что в типичной операционной среде могут также быть использованы другие типы читаемых компьютером средств, которые могут хранить данные, которые доступны с помощью компьютера, такие как магнитные кассеты, карты флеш-памяти, цифровые видеодиски, картриджи Бернулли, оперативные запоминающие устройства (ОЗУ), постоянные запоминающие устройства (ПЗУ) и т.п.
Различные программные модули, включая операционную систему 35, могут быть сохранены на жестком диске, магнитном диске 29, оптическом диске 31, ПЗУ 24 или ОЗУ 25. Компьютер 20 включает в себя файловую систему 36, связанную с операционной системой 35 или включенную в нее, одно или более программное приложение 37, другие программные модули 38 и программные данные 39. Пользователь может вводить команды и информацию в компьютер 20 при помощи устройств ввода, таких как клавиатура 40 и указательное устройство 42. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, геймпад, спутниковую антенну, сканер или любое другое.
Эти и другие устройства ввода соединены с процессором 21 часто посредством интерфейса 46 последовательного порта, который связан с системной шиной, но могут быть соединены посредством других интерфейсов, таких как параллельный порт, игровой порт или универсальная последовательная шина (УПШ). Монитор 47 или другой тип устройства визуального отображения также соединен с системной шиной 23 посредством интерфейса, например, видеоадаптера 48. В дополнение к монитору 47, персональные компьютеры обычно включают в себя другие периферийные устройства вывода (не показано), такие как динамики и принтеры.
Компьютер 20 может работать в сетевом окружении посредством логических соединений к одному или нескольким удаленным компьютерам 49. Удаленный компьютер (или компьютеры) 49 может представлять собой другой компьютер, сервер, роутер, сетевой ПК, пиринговое устройство или другой узел единой сети, а также обычно включает в себя большинство или все элементы, описанные выше, в отношении компьютера 20, хотя показано только устройство хранения информации 50. Логические соединения включают в себя локальную сеть (ЛВС) 51 и глобальную компьютерную сеть (ГКС) 52. Такие сетевые окружения обычно распространены в учреждениях, корпоративных компьютерных сетях, Интернете.
Компьютер 20, используемый в сетевом окружении ЛВС, соединяется с локальной сетью 51 посредством сетевого интерфейса или адаптера 53. Компьютер 20, используемый в сетевом окружении ГКС, обычно использует модем 54 или другие средства для установления связи с глобальной компьютерной сетью 52, такой как Интернет.
Модем 54, который может быть внутренним или внешним, соединен с системной шиной 23 посредством интерфейса 46 последовательного порта. В сетевом окружении программные модули или их части, описанные применительно к компьютеру 20, могут храниться на удаленном устройстве хранения информации. Надо принять во внимание, что показанные сетевые соединения являются типичными, и для установления коммуникационной связи между компьютерами могут быть использованы другие средства.
В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой. Специалисту в данной области становится понятным, что могут существовать и другие варианты осуществления настоящего изобретения, согласующиеся с сущностью и объемом настоящего изобретения.