Домашен енергомер
История на показанията
Предстои да бъде публикувана схемата на меренето.
Използвани технологии и компоненти:
OpenWRT
Създава се /www/1w/data със следното съдържание:
#!/usr/bin/lua
print ("Content-type: Text/html\n")
function file_exists(file)
local f = io.open(file, "rb")
if f then f:close() end
return f ~= nil
end
function round(num, numDecimalPlaces)
local mult = 10^(numDecimalPlaces or 0)
return math.floor(num * mult + 0.5) / mult
end
function temp_from(file)
if not file_exists(file) then return 0 end
lines={}
for line in io.lines(file) do
lines[#lines + 1] = line
end
return round(lines[1],2)
end
local temp = temp_from('/1w/10.5090B6020800/temperature')
io.write("{\"spa\":\"")
io.write(temp)
io.write("\",")
local temp = temp_from('/1w/28.E4A323050000/temperature')
io.write("\"det\":\"")
io.write(temp)
io.write("\",")
local temp = temp_from('/1w/10.C7387F020800/temperature')
io.write("\"hol\":\"")
io.write(temp)
io.write("\"}")
Файла се прави изпълним с chmod +x /www/1w/data.
Lua
/etc/conf/uhttpd - внасяме следната конфигурация най-долу:
config uhttpd 'ow'
list listen_http '0.0.0.0:8080'
option home '/www/1w'
option cgi_prefix '/'
Сега при извикване на http://адрес:8080/data ще видите нещо подобно:
{"spa":"23","det":"19","hol":"25.94"}
JSON форматирано и готово за консумация.
На удобно място в сървър по избор създавате скрипта, който ще попълва базата данни:
dt=`curl -s http://address:8080/data`
mongo 127.0.0.1/temperature --eval "db.t.insert($dt);" > /dev/null
Настройва се за изпълнение през 5мин в Cron.
MongoDB
PHP 5.3
Nginx
Dallas Semiconductor DS1490F 2-in-1 Fob, 1-Wire USB адаптер
DS18S20, DS18B20 температурни сензори
Arduino Uno
Iskra WS0014 електромер
Google Charts
©www.kamenitza.org