Уважаемые посетители сайта esp8266.ru!
Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram
@PavelAndreev
Зайти на сайт документации nodemcu и найти раздел dht dht - NodeMCU Documentation
Там есть пример для dht11, убрать все лишнее от ds18b20 и добавить нужное от dht11
@PavelAndreev
Зайти на сайт документации nodemcu и найти раздел dht dht - NodeMCU Documentation
Там есть пример для dht11, убрать все лишнее от ds18b20 и добавить нужное от dht11
Warning, deprecated API! net.createConnection with secure flag.
вместо неё надо писать
Код:
conn=tls.createConnection()
А это вот отсыльщик который мне удалось найти на просторах, немного поправил его, но что-то с логином еще надо пошаманить (никак руки не дойдут) может кто-то все-же заставит его работать.
gamiltest.lua :
Код:
-- Modifications for GMAIL by Andreas "Andy" Reischle: www.AReResearch.net
-- http://www.areresearch.net/2016/04/how-to-send-emails-via-gmail-from.html
-- configure ESP as a station
local SSID = "AP name"
local SSID_PASSWORD = "AP pass"
wifi.setmode(wifi.STATION)
wifi.sta.config{ssid=SSID, pwd=SSID_PASSWORD}
wifi.sta.autoconnect(1)
-- The email and password from the account you want to send emails from
--If you have Firmware with crypto module
local MY_EMAIL = crypto.toBase64("mailfrom@gmail.com")
local EMAIL_PASSWORD = crypto.toBase64("mailpass")
--or wo cripto , must be ecoded to base 64 somewere else
--local MY_EMAIL = "base64login"
--local EMAIL_PASSWORD = "base64password"
-- The SMTP server and port of your email provider.
-- If you don't know it google [my email provider] SMTP settings
local SMTP_SERVER = "smtp.gmail.com"
local SMTP_PORT = "465" --local SMTP_PORT = "993" --local SMTP_PORT = "587"
-- The account you want to send email to
local mail_to = "mailfrom@blabla.com"
-- These are global variables. Don't change their values
-- they will be changed in the functions below
local email_subject = ""
local email_body = ""
local count = 0
local conn = nil -- will be used as socket to email server
-- The display() function will be used to print the SMTP server's response
function display(conn,response)
print("Got a response: ")
print(response)
end
-- The do_next() function is used to send the SMTP commands to the SMTP server in the required sequence.
-- I was going to use socket callbacks but the code would not run callbacks after the first 3.
function do_next()
if(count == 0)then
count = count+1
local IP_ADDRESS = wifi.sta.getip()
print ("Send my IP: " .. IP_ADDRESS)
--conn:send("EHLO\r\n");
conn:send("HELO "..IP_ADDRESS.."\r\n")
elseif(count==1) then
count = count+1
conn:send("AUTH LOGIN\r\n")
elseif(count == 2) then
count = count + 1
conn:send(MY_EMAIL.."\r\n")
elseif(count == 3) then
conn:send(EMAIL_PASSWORD.."\r\n")
count = count + 1
elseif(count==4) then
count = count+1
conn:send("MAIL FROM:<" .. MY_EMAIL .. ">\r\n")
elseif(count==5) then
count = count+1
conn:send("RCPT TO:<" .. mail_to ..">\r\n")
elseif(count==6) then
count = count+1
conn:send("DATA\r\n")
elseif(count==7) then
count = count+1
local message = string.gsub(
"From: \"".. MY_EMAIL .."\"<"..MY_EMAIL..">\r\n" ..
"To: \"".. mail_to .. "\"<".. mail_to..">\r\n"..
"Subject: ".. email_subject .. "\r\n\r\n" ..
email_body,"\r\n.\r\n","")
conn:send(message.."\r\n.\r\n")
elseif(count==8) then
count = count+1
tmr.stop(0)
conn:send("QUIT\r\n")
else
conn:close()
end
end
-- The connectted() function is executed when the SMTP socket is connected to the SMTP server.
-- This function will create a timer to call the do_next function which will send the SMTP commands
-- in sequence, one by one, every 5000 seconds.
-- You can change the time to be smaller if that works for you, I used 5000ms just because.
function connected(conn)
print("Connected - Starting Timer")
tmr.alarm(0,2000,1,do_next)
end
-- @name send_email
-- @description Will initiated a socket connection to the SMTP server and trigger the connected() function
-- @param subject The email's subject
-- @param body The email's body
function send_email(subject,body)
count = 0
email_subject = subject
email_body = body
print ("Open Connection")
--conn = net.createConnection(net.TCP,1)
conn = tls.createConnection()
conn:on("connection",connected)
conn:on("receive",display)
conn:connect(SMTP_PORT,SMTP_SERVER)
end
-- Send an email
print ("Sending started...")
send_email("ESP8266-GMailSender","Hi there!")
Недавно библиотека ds18b20 перекочевала из C modules в Lua modules. Кто знает как с ней теперь работать? Если в наглую пытаться залить файл ds18b20.lua в esp8266, выводится сообщение "недостаточно памяти"
Вы, конечно правы но, мне кажется, лучше начинать с начала. И в сборке NodeMCU должна быть поддержка 1-wire. Ошибка, про которую писал Tantrum появляется на дефолтной сборке ESP8266Flasher версии 0.9, так что нужна либо собственная, либо собранная в облаке.
Приветствую форумчане, всех с прошедшими праздниками. Выдались длинные выходные и что-бы себя занять запилил два сканера, для шин 1-wire и i2c. Протестировал на ESP-01S - работает, скрипты заливаются через ESPlorer. 1-wire шину проверял с далласовским датчиком температуры DS18B20. i2c шину с LCD дисплеем. Кому интересно скрипты в архиве
Доброго времени всем
До недавних пор работал на сборке 2.2.0-master_20180608 , цели минималистичные и решения соответственные.
Вздумалось прикрутить DSS1306 ну и заодно сборку сменить 3.0.0-release_20210201.
Начал с проверки работоспособности старого кода на новой сборке не добавляя пока модуль 8ug2 и используя только те что исползовались с предыдущей сборкой.
Обнаружилось что таймеры сменились ну да ладно.
Подозрительно стало меньше памяти при одинаковом числе и типе используемых модулей.
Отказывается напрочь работать телнет сервер , при подключении контроллер ре стартует.
Код телнет сервера такой.
Код:
s=net.createServer(net.TCP)
s:listen(23,function(c)
con_std = c
function s_output(str)
if(con_std~=nil)
then
con_std:send(" \r")
con_std:send(str)
end
end
node.output(s_output, 0)
c:on("receive",function(c,l)
node.input(l)
end)
c:on("disconnection",function(c)
con_std = nil
node.output(nil)
end)
print(("Connected to Node_T124 build 310321. (%d mem free, %s)"):format(node.heap(), wifi.sta.getip()))
end)
это несколько меньше чем присутствующий в сборке telnet.lua который хоть и работает, но при обращении к ds18b20 вызывает переполнение памяти.
Кроме того даже если б он не вызывал переполнение - текс в хипер терминал он выводит с какой-то непонятной табуляцией примерно так
Код:
P1
: OFF
P2: OFF
LT: 19
HT: 20
(16200 mem free, 10.0.1.124)
19384
> Boiler Idle
GMT: 2021/
04/01 05:58:37
Uptime: 0395 Sec
T124: 99.123400
P1: OFF
P2: OFF
LT: 19
HT: 20
(16200
в то время как приведённый код сервера на старом билде выводит его нормально и работает сколь угодно долго минимум 1час (раз в час делаю рестарт на всякий случай)
Код:
Connected to Node_T123 build 090321. (23896 mem free, 192.168.147.123)
Boiler Idle
GMT: 2021/04/01 10:26:40
Uptime: 0725 Sec
T123: 16.937500
P1: OFF
P2: OFF
LT: 6
HT: 7
(11216 mem free, 192.168.147.123)
В прикреплении весь код поделки.
Пожалуйста, подскажите кто может - что не нравится сборке 3.0.0 в старом коде нет.сервера?
Ну кто же так делает?
Новая сборка прошивки для проекта - это кладезь подводных камней... Как вариант - откатитесь на стабильную старую прошивку, проверьте DSS1306, а уж потом экскременты с новыми версиями.
УПС, тема притухла, так что Вы, скорее всего, один на один со своими эксперементами.
...
INTRET написал(а):
Отказывается напрочь работать телнет сервер , при подключении контроллер ре стартует.
Ну кто же так делает?
Новая сборка прошивки для проекта - это кладезь подводных камней... Как вариант - откатитесь на стабильную старую прошивку, проверьте DSS1306, а уж потом экскременты с новыми версиями.
УПС, тема притухла, так что Вы, скорее всего, один на один со своими эксперементами.
...
А на что жалуется перед ребутом, может тут и есть корень проблемы?
Ну я согласен, просто ожидал что камней этих будет минимум соразмерно с простотой моего проекта.
Также ожидал что если соберу 3.00 с теми же модулями 1 в 1 как в старой 2.2.0 и не меняя пока код протестирую старый и если всё будет нормально тогда начу эксперименты с добавлением дисплея итд...., но до этого дело пока не дошло.
А куда можно перепостить вопрос чтоб не быть тут один на один? кроме того как минимум вы тут уже хороше
дело в том что стандартных жалоб как если ошибки в коде таких нет, просто перегружается с козом и бут мод номерами как только я пытаюсь подключиться терминалом на порт 23
Код:
Boiler Idle
GMT: 2021/04/01 13:20:46
Uptime: 0405 Sec
T124: 21.812500
P1: OFF
P2: OFF
LT: 18
HT: 19
(13352 mem free, 10.0.1.124)
ets Jan 8 2013,rst cause:2, boot mode:(3,7)
load 0x40100000, len 28252, room 16
tail 12
chksum 0xbc
ho 0 tail 12 room 4
load 0x3ffe8000, len 2568, room 12
tail 12
chksum 0x51
ho 0 tail 12 room 4
load 0x3ffe8a08, len 8, room 12
tail 8
chksum 0xce
csum 0xce
Ћ{ѓ››oд“lЊ�Њ
может я могу собрать прошивку с каким-нибудь включенным дебаг режимом и попробую получить какуюто инфу более подробную с ним?
вот юзер конфиг в котором дебуг опция в 2 выставлена
попробую включить 0 или 1 пересобрать.
// LUAI_OPTIMIZE_DEBUG 0 = Keep all debug; 1 = keep line number info; 2 = remove all debug
#define LUAI_OPTIMIZE_DEBUG 2
со сборкой старого билда 2.2.0 у меня возникли проблемы
исходник старый есть но как его пересобрать с одним дополнительным модулем я не знаю точнее пока не пробовал, пробовал на виртуалке дебиан собирать новый, но мейк затыкается на строке 334:
Пришлось откопать докер контейнер на котором собирал старый билд, но не сохранил его слепок :-(
новый 3.0.0 собираю на этом же докер контейнере, но он обновил билд на 3.0.0 от marcelstoer https://hub.docker.com/r/marcelstoer/nodemcu-build/,
при попытке оттуда же собрать старый исходник ругается
такая котовасия
Уважаемые, подскажите...
В 2017 на продолговатой борде темного цвета с нодемцу на lua (благодаря коду товарища с амперки) сделал поделку, работающую до сих пор по замеру с дс18б20 и дхт22, получение через мктт. Модуль в слое пыли/штукатурки на объекте работает до сих пор, трогать не хочу. После на модуле от вемоса баловался дисплейчиками, пвм, реле - каждый раз генерил новую прошивку от нодемцу и в курсе про изменения в подключении к вайфай и работе с u8gt и т.д.
Короче, понадобилось на этот вемос два дс18б20: взял прошивку 20-го года с ним (стоял крыжик на ds18b20 при генерации прошивки), взял официальный пример (почему-то 2014 года) и получил ошибку вызова read_temp. Не стал вникать, подгрузил файл ds18b20.lua и олдскульный вариант на базе амперки, и... тоже получил уже другую ошибку (что-то про Си). Нашел старую прошивку, залил - все работает. Но есть минус - нужно помнить, что старые команды подключения к вайфай (а у меня там контроль самого вайфая и контроль наличия интернета на 4Г свистке, и пересброс всего этого хозяйства) и если захочу дисплейчики, опять же старые команды u8gt нужно в голове держать.
Вопрос, как на свежих прошивках nodemcu ОБЫЧНЫЕ!!! ds18b20 использовать?
З.Ы. спасибо, что дочитали до конца)
Разобрался, не работало на прошивке из облака сделанной в январе 2019 еще на sdk 2... и с выбранным модулем для ds18b20, причину не понял. На более старой прошивке (sdk 2.0.0) без выбранного модуля и на свежей с sdk 3.0.1 все работает норм, с предварительно загруженным на esp файлом ds18b20.lua.
З.Ы. на последней sdk еще и работа с таймерами несколько изменилась.