Перейти к содержимому
Chebuya

Мониторинг температуры из реального мира

Рекомендуемые сообщения

Видел я на хабре пост четырёхлетней давности о включении лампы(в реальном мире) из майнкрафта. 

Вот он, если что: https://habr.com/ru/post/271527/

Тут я подумал - "А чем я собственно хуже? Почему нельзя контроллировать температуру реактора/дроноферму/дом датчиками движением?"

Переходим к практике.

Я имею вот такой дисплей купленный в поднебесной(За всеми ссылками и подробной помощью если заинтересуетесь обращаться в личку)

 

GuIPAZd.jpg

Так же, я обладаю платой NodeMcu Lolin V3(Если грубо - это ардуинка с вай-файкой, но нет, это самостоятельный чип esp8266)

 

HhFucln.jpg

В общем это всё, что нам сейчас понадобится(Еще понадобится роутер (и белый айпи, если вы играете на сервере))

Я хочу контролировать температуру своего реактора из IC2(но пристроить можно всё что угодно), поэтому берём его.

Как это выглядит в игре: 

 

WGybAdz.png

Схема реактора(Хотя ничего особо интересного тут нет): 

 

LfSzcGW.png

Переходим к реальному миру. 
Нам нужно открыть порт, в моём случае это 4536, к тому же нам нужен постоянный адрес в интернете. Для этого я использую DDNS. Об этом и остальном можно узнать в гугле.

Теперь, всё готово чтобы наконец-то смотреть температуру реактора из реально мира! 
Есть такой простой код(Сейчас говорим про реальный мир):

--Если кому будет интересно, вот полная документация по прошивке NodeMcu: https://nodemcu.readthedocs.io/en/master/
wifi.sta.config({ssid = "Xiaomi_2.4G", pwd = "xBfYHR33Le"}) --Мой SSID и пароль моего wi-fi =D
wifi.sta.autoconnect(1) --Автоподключение Wi-Fi
wifi.setmode(wifi.STATION) --Сейчас ESP8266 Будет работать в режиме клиента)
spi.setup(1, spi.MASTER, spi.CPOL_LOW, spi.CPHA_LOW, 8, 8) --Настройка дисплея
oled = u8g2.ssd1309_128x64_noname0(1, 8, 4, 0)
oled:setFont(u8g2.font_haxrcorp4089_t_cyrillic) --Выставляем шрифт
oled:setContrast(255) --Контрастность дисплея)

server = net.createServer(net.TCP, 30) --Создаём сервер с тайм-аутом в 30 секунд по TCP протоколу

function receiver(socket, temp) --Функция, которая вызывается при подключении 
	oled:clearBuffer() --Очищаем буфер
  	oled:drawUTF8(1, 7, "Темп. Реактора: " .. temp .. "%") --Пишем 
  	oled:sendBuffer() --Уже рисуем
  	socket:close() --Разрываем подключение
end

server:listen(4536 , function(conn) --Выставляем на прослушку порт 4536
    conn:on("receive", receiver)
end)

wifi_check = tmr.create() --Создаём динамический объект таймера

wifi_check:alarm(1000, 1, function() --Эта функция - аналог event.timer в OpenComputers, которая так же вызывает функцию. В данном случае мы каждую секунду проверяем Wi-Fi.
	if not wifi.sta.getip() then --Если мы не имеем айпи, тогда
		wifi_connect = false
        oled:clearBuffer() --Очищаем буфер
        oled:drawUTF8(1, 7, "Подключение к Wi-Fi...") --Пишем
        oled:sendBuffer() --Рисуем
    elseif not wifi_connect then --Если мы только что подключились и не получили температуру реактора, тогда рисуем просто текст без температуры
    	wifi_connect = true
    	oled:clearBuffer() --Очищаем буфер
    	oled:drawUTF8(1, 7, "Темп. Реактора: ожидание...") --Пишем
  		oled:sendBuffer() --Рисуем
  	end
end)

Код в майнкрафте(Очень простой):

local component = require("component")
local internet = require("internet")
local reactor = component.reactor

while true do 
	local connection = internet.open("ip", 4536)
	connection:write(string.sub(reactor.getHeat(), 1, 2))
	connection:close()
	os.sleep(5)
end

Теперь посмотрим что получилось!

Подключение к Wi-Fi:

 

X1aCXvG.jpg

Ожидание температуры:

 

ZHLJY5Q.jpg

Итог:

 

aExE473.jpg

В общем то тут довольно всё криво сделано, тут надо много чего доделать, на самом деле. Но в целом, работает же=)
Мне кажется, что это очень круто(Жаль что всё это без чанклодеров так себе работает).
Такие дела.

P. s @cyber01 Я сидел в редакторе долго, появилась ошибка "Произошла ошибка конфигурации или сервера". Пришлось вручную редактировать всё=(
 

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, Bit сказал:

Все-таки подключил экранчик) +rep!

Я либо плохо пины припаял, либо где-то еще накосячил. Но по тутору с вики всё таки завёл.

P. S На фотографиях можно заметить следы плохой пайки XDD

 

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...