IoMT — интернет вещей от Minecraft: управляем реальными объектами в виртуальном мире
Виртуальный компьютер, управляющий выключателем лампочки в виртуальном мире
Minecraft уже больше, чем игра. Это стиль жизни и среда обитания многих, многих геймеров. Среда Minecraft может использоваться и для инженерных целей. К примеру, почему бы не научиться включать и выключать свою лампочку в комнате, разместив выключатель в игре?
Так и поступил один из игроков, ник которого — giannoug. Он работал со своим другом, создавая систему, управляющую noname WiFi лампочкой. Сейчас это не редкость, и купить их можно по относительно невысокой цене. Работал giannoug со своим другом, который провел реверс-инжиниринг протокола лампочки. Сам же автор идеи строил выключатель на основе OpenComputers мода.
Спустя некоторое время компьютер был готов, и автор смог открыть его всему миру через TCP/IP.
Протокол, который используется лампочкой, довольно прост. Байт заголовка, три дополнительных байта для определение RGB-цвета, байт для определения яркости, байт для переключения режима работы и конечный байт.
0x56 RED GREEN BLUE WHITE MODE 0xAA
В игре есть и минерал — аналог электричества в нашем мире. По умолчанию, блоки можно использовать как элементы электрической цепи. При помощи таких блоков создавались даже аналоги реальных процессоров.
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
И демонстрация работы всей схемы:
В Minecraft многие геймеры еще воссоздают модели реальных мест. Например, Антарктиды.
Мартин О'Лири (Martin O’Leary), гляциолог из Университета Суонси, воссоздал Антарктиду в Minecraft. Сейчас модель, с размером 1:1000 от реального континента, содержит более 3 миллиардов блоков. Мартин решился на такую масштабную работу после того, как в Minecraft стали появляться ученые, которые создавали различные модели, включая Манхэттен 19-го века.
Дополнительная информация по проекту «включи лампочку из Minecraft» — на сайте автора.