From f9d39e533e35c4a377075bc922ee921b25bd6644 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A2=D0=B0=D1=82=D1=8C=D1=8F=D0=BD=D0=B0=20=D0=A4=D0=B0?= =?UTF-8?q?=D1=80=D0=B1=D0=B5=D1=80?= Date: Mon, 9 Mar 2026 14:13:34 +0400 Subject: [PATCH] alpha --- README.md | 4 +++ init.lua | 91 ++++++++++++++++++++++++------------------------------- 2 files changed, 43 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index 8805b0a..a9e11a7 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # Бродильная камера на ESP 8266 +# Формат передачи данных + + + ## Необходимые детали 1. Wemos D1 Mini diff --git a/init.lua b/init.lua index a8175d9..3871d6c 100644 --- a/init.lua +++ b/init.lua @@ -1,70 +1,69 @@ -timing = 5000 -- Sending timer +local t = require("DS1820") +timing = 60000 -- Sending timer srv = nil -- TCP client uid = '' -- MAC UID -dhtpin = 1 -- DHT11 pin -sda, scl = 3, 4 -- BME280 pins -alt = 320 -- altitude of the measurement place +dhtpin_room = 1 -- DHT11 room pin +dhtpin_cellar = 2 -- DHT11 cellar pin +dhtpin_weather = 5 -- DHT11 weather pin +ds_pin = 6 + +local results = {} -- DS1822 results -- Weather vars -T = - 300 -- BME temp -P = - 300 -- BME pressure -curAlt = - 300 -- BME altitude -TB = - 300 -- DHT temp -TH = - 300 -- DHT humidity -UF = 0 -- UF index +TB_room = - 300 -- DHT temp +TH_room = - 300 -- DHT humidity +TB_cellar = - 300 -- DHT temp +TH_cellar = - 300 -- DHT humidity +TB_weather = - 300 -- DHT temp +TH_weather = - 300 -- DHT humidity --- Read the solar sensor +-- Read DS1822 -function adc_read() - UF = adc.read(0) - print('UF index: '..UF) +local function readout(temp) + for addr, temp in pairs(temp) do + local uid = string.format('%s',('%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X'):format(addr:byte(1,8))) + results[uid] = temp + print(uid,temp) + end end --- Read the BME280 sensor - -function bme_read() - T, P, H, QNH = bme280.read(alt) - local Tsgn = (T < 0 and -1 or 1); T = Tsgn*T - print(string.format("T=%s%d.%02d", Tsgn<0 and "-" or "", T/100, T%100)) - print(string.format("QFE=%d.%03d", P/1000, P%1000)) - print(string.format("QNH=%d.%03d", QNH/1000, QNH%1000)) - P = bme280.baro() - curAlt = bme280.altitude(P, QNH) - local curAltsgn = (curAlt < 0 and -1 or 1); curAlt = curAltsgn*curAlt - print(string.format("altitude=%s%d.%02d", curAltsgn<0 and "-" or "", curAlt/100, curAlt%100)) +local function read_sensors() + t:read_temp(readout, ds_pin, t.C) end -- Read the DHT11 sensor -function dht_read() - status, temp, humi, temp_dec, humi_dec = dht.read(dhtpin) +local function dht_read(dhtpin) + local status, temp, humi, temp_dec, humi_dec = dht.read(dhtpin) if status == dht.OK then - TB = temp - TH = humi print("DHT Temperature:"..temp..";".."Humidity:"..humi) + return {['temp'] = temp, ['humi'] = humi} elseif status == dht.ERROR_CHECKSUM then print( "DHT Checksum error." ) elseif status == dht.ERROR_TIMEOUT then print( "DHT timed out." ) end + return {} end --- Prepare data for TCP server +-- Data for TCP server function data_out() + read_sensors() local pack = {} - pack['id'] = uid - pack['bme'] = {['temp'] = T,['press'] = P,['alt'] = curAlt} - pack['dht'] = {['temp'] = TB,['humi'] = TH} - pack['uf'] = UF + pack['id'] = uid + pack['room'] = dht_read(dhtpin_room) + pack['cellar'] = dht_read(dhtpin_cellar) + pack['weather'] = dht_read(dhtpin_weather) + pack['sensors'] = results return encoder.toBase64(sjson.encode(pack)) end -- Exchange data with server -function tcp() - srv:connect(4999,"braga.ulgrad.ru") +local function send() + srv:connect(4999,"chan.ulgrad.ru") srv:on("connection", function(sck, c) print('connection') sck:send(data_out().."\r\n") @@ -100,30 +99,18 @@ function on_connect() end end --- Setup ADC - -if adc.force_init_mode(adc.INIT_ADC) -then - node.restart() - return -- don't bother continuing, the restart is scheduled -end - -- Setup sensors -i2c.setup(0, sda, scl, i2c.SLOW) -- call i2c.setup() only once bme280.setup() -- Setup timers tcptimer = tmr.create() -tcptimer:register(12000, tmr.ALARM_AUTO,tcp) +tcptimer:register(timing, tmr.ALARM_AUTO,send) inittimer = tmr.create() -inittimer:register(5000, tmr.ALARM_SINGLE, function() - adc_read() - bme_read() - dht_read() - enduser_setup.start('meteo',on_connect) +inittimer:register(5000, tmr.ALARM_SINGLE, function() + enduser_setup.start('chan',on_connect) end) inittimer:start()