IoMT — интернет вещей от Minecraft: управляем реальными объектами в виртуальном мире

5deecdf4b1cd48f339a76827383c8017.jpg
Виртуальный компьютер, управляющий выключателем лампочки в виртуальном мире

Minecraft уже больше, чем игра. Это стиль жизни и среда обитания многих, многих геймеров. Среда Minecraft может использоваться и для инженерных целей. К примеру, почему бы не научиться включать и выключать свою лампочку в комнате, разместив выключатель в игре?

Так и поступил один из игроков, ник которого — giannoug. Он работал со своим другом, создавая систему, управляющую noname WiFi лампочкой. Сейчас это не редкость, и купить их можно по относительно невысокой цене. Работал giannoug со своим другом, который провел реверс-инжиниринг протокола лампочки. Сам же автор идеи строил выключатель на основе OpenComputers мода.
Спустя некоторое время компьютер был готов, и автор смог открыть его всему миру через TCP/IP.

Протокол, который используется лампочкой, довольно прост. Байт заголовка, три дополнительных байта для определение RGB-цвета, байт для определения яркости, байт для переключения режима работы и конечный байт.

0x56 RED GREEN BLUE WHITE MODE 0xAA

В игре есть и минерал — аналог электричества в нашем мире. По умолчанию, блоки можно использовать как элементы электрической цепи. При помощи таких блоков создавались даже аналоги реальных процессоров.

Скрипт для работы лампочки:
local event = require ('event')
local net = require ('internet')

local myEventHandlers = {}
local running = true

local con = net.open ('192.168.1.110', 5577)

function myEventHandlers.key_up (address, char, code, playerName)

if (char == 'q') then
running = false
print ('Goodbye '… playerName… '!')
end

end

function myEventHandlers.redstone_changed (_, address, side)

local brightness = 0xff;

if side > 0 then
brightness = 0xff
else
brightness = 0×00
end

print ('Sending '… brightness… ' to lamp…')

con: write (string.char (0×56))
con: write (string.char (0×00))
con: write (string.char (0×00))
con: write (string.char (0×00))
con: write (string.char (brightness))
con: write (string.char (0×0f))
con: write (string.char (0xaa))

con: flush ()

end

function handleEvent (eventID, …)

local event = myEventHandlers[eventID]

if (event) then
event (…)
end

end

if con then
print ('Connected to the bulb!')
end

while running do
handleEvent (event.pull ())
end


И демонстрация работы всей схемы:

c33b6755e9a3fa675ec08f0680e8c893.gif

В Minecraft многие геймеры еще воссоздают модели реальных мест. Например, Антарктиды.
Мартин О'Лири (Martin O’Leary), гляциолог из Университета Суонси, воссоздал Антарктиду в Minecraft. Сейчас модель, с размером 1:1000 от реального континента, содержит более 3 миллиардов блоков. Мартин решился на такую масштабную работу после того, как в Minecraft стали появляться ученые, которые создавали различные модели, включая Манхэттен 19-го века.

Дополнительная информация по проекту «включи лампочку из Minecraft» — на сайте автора.

© Geektimes