@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 еще и работа с таймерами несколько изменилась.