рдореИрдВрдиреЗ рдПрдХ "рдЙрдкрдирдЧрд░реАрдп" рдШрд░ рдмрдирд╛рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕рдореЗрдВ рдирд╣реАрдВ рд░рд╣рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рддрд╛рдкрдорд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдерд╛ред рдПрдХ рд╕рд╛рд╕ рдПрдХ рдирд┐рд░реНрдорд╛рдг рд╕реНрдерд▓ рдкрд░ рд░рд╣рддреА рд╣реИред рдкрд╛рдиреА рдХреЛ рд╣реАрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдШрд░ рдореЗрдВ +8 рдкрд░, рдбреНрд░рд╛рдИрд╡рд╛рд▓ рдХреЗ рдкреАрдЫреЗ рдХреА рджреАрд╡рд╛рд░реЛрдВ рдкрд░ рдкрд╛рдЗрдк рдЬрдордиреЗ рд▓рдЧрддреЗ рд╣реИрдВ рдФрд░ +18 рдкрд░ рд╕рд╛рд╕ рдмреАрдорд╛рд░ рд░рд╣рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд┐рдЪрд╛рд░ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рддрд╛рдкрдорд╛рди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рд╣реБрдЖред
рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, 2
рдбрд┐рд╡рд╛рдЗрд╕ рдЦрд░реАрджреЗ рдЧрдП: рдШрд░реЗрд▓реВ рдЙрддреНрдкрд╛рджрди
BM1707 рдФрд░ рдЪреАрдиреА
рдЯрд░реНрдореЛрдЗрдб ред рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рджреЛрдиреЛрдВ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдерд╛ред рдЪреАрдиреА рд░рдЪрдирд╛рддреНрдордХрддрд╛ рд╢рд░рд╛рд░рддреА рдереА, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдереЛрдбрд╝реА рдмреЗрд╣рддрд░ рдереА, рд▓реЗрдХрд┐рди 10 DS18B20 рд╕реЗрдВрд╕рд░ рд╣рдорд╛рд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рддрд░реНрдХ рдирд┐рд░реНрдгрд╛рдпрдХ рдерд╛ред
рдЕрдм рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ 4 рд╕реЗрдВрд╕рд░ рд╣реИрдВ, рд╕рдбрд╝рдХ, рдкрд╣рд▓реА рдордВрдЬрд┐рд▓, рджреВрд╕рд░реА рдордВрдЬрд┐рд▓ рдФрд░ рдЕрдЯрд╛рд░реАред рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рдПрдХ рд╕рд╛рд▓ рдЬрдорд╛ рд╣реБрдЖ рд╣реИред рд╕рд╛рдордиреЗ рд╡рд╛рд▓рд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рдПрдЯреАрд╡реА рдбреЗрдиреНрд╕реНрдХреА рдерд░реНрдорд╛рдореАрдЯрд░
рдУрдкрдирд╡рд╛рд░реНрдЯрд░рдореИрдк .org рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ,
рдпрд╣рд╛рдВ рд╕реНрдЯреЗрд╢рдиред
рдПрдЯреАрдкреА
SSAR рдерд░реНрдорд╛рдореАрдЯрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ narodmon.ru,
рдпрд╣рд╛рдБ рд╕реНрдЯреЗрд╢рдиред
рдореВрд▓ рд╕рд╛рдЗрдЯ tarasii.dyndns.org, рд╡рд┐рдВрдбреЛрдЬрд╝ xp рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг, 10 рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЗ рд╕рд╛рде рдиреАрдЪреЗ рдЬрд╛рддреА рд╣реИред
BM1707 рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд╛рда рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдк рдкрд░рд┐рдгрд╛рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдмрд┐рдирд╛ рд╕реЛрдЪреЗ-рд╕рдордЭреЗ, рдПрдПрд╕рдкреА рдкрд░ рдЯреЗрдмрд▓ рдХрдирд╡рд░реНрдЯрд░ рдХреА рдлрд╛рдЗрд▓ рдлреЗрдВрдХ рджреА рдЧрдИред рдРрд╕реА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рдерд╛, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЙрд╕ рдХреНрд╖рдг рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдЬрдм рд╕рднреА рд╕рдорд╛рди рддрд╛рдкрдорд╛рди рд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╕рд╣рдХрд░реНрдореА (рдПрдЯреАрдкреА рдХреЛрдЬреАрд╕реАрдЖрдИ) рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрдП, рдФрд░ рд╕рд╣реА рд╕рдбрд╝рдХ рдкрд░ рдзрдХреНрдХрд╛ рджрд┐рдпрд╛ред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рд╛рдИрд╕реНрдЯреЙрдХ рджреЗрдЦрдиреЗ рдореЗрдВ рдЖрдпрд╛ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ
рд╣рд╛рдИрд╕реНрдЯреЙрдХ рдХреЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
: рд╣рд╛рдИрд╕реНрдЯреЙрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд░рдирдЯ рдЕрд╡рд╛рд░реНрдб рдФрд░
рдбрд╛рдпрдирд╛рдорд┐рдХ рдЪрд╛рд░реНрдЯ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВ ред
рдХреБрдЫ рд╕рддрд░реНрдХрддрд╛ рдХреЗ рдмрд╛рдж, рдПрдПрд╕рдкреА рдкрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдЬреЗрдПрд╕ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЕрдм рдЬреИрд╕реЗ рд╣реА рдереЗ, рд▓реЗрдХрд┐рди рд╡реЗ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрдирд╛рдП рдЧрдП рдереЗред рджреЛ рдорд╣реАрдиреЗ рдХреЗ рдХрд╛рдо рдХреЗ рдмрд╛рдж, рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛ред рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓реАред рдирд┐рд░реНрдгрдп рддреЗрдЬреА рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рд╣рдо MySQL рд╕реЗ рд░реЗрдЦрд╛рдВрдХрди рдкрдврд╝рддреЗ рд╣реИрдВред BM1707 рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЖрдкрдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рд╕реЗрдВрд╕рд░ рд╕реЗ рдкреВрдЫрддрд╛рдЫ рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ рдмреИрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред VBScript рдХреЛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ MySQL рдореЗрдВ рдорд╛рдк рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ 1970 рдХреЗ рдмрд╛рдж рд╕реЗ рд╕реЗрдХрдВрдб рдореЗрдВ рддрд┐рдерд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рда рддрд┐рдерд┐ рдХрд╛ рд░реВрдкрд╛рдВрддрд░рдг рд╣реИ, рд╕рд╛рде рд╣реА рдРрд╕реЗ рд╕рдордп рдХреЗ рд╕рд╛рде рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред
Const ForReading = 1 Const TristateUseDefault = -2 Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") Dim FilePath FilePath = "C:\BM1707\bm1707.temp" set cn = CreateObject("ADODB.Connection") cn.connectionstring = "Driver={MySQL ODBC 5.1 Driver};Server=localhost;DataBase=test; " &_ "USER=usr;PASSWORD=psw;" cn.open If FSO.FileExists(FilePath) Then Dim file Set file = FSO.GetFile(FilePath) Dim TextFileStream Set TextFileStream = file.OpenAsTextStream(ForReading,TristateUseDefault) Do While Not TextFileStream.AtEndOfStream Dim line line = TextFileStream.ReadLine curday = Mid(Line,2,2) curmnth = Mid(Line,5,2) curyear = Mid(Line,8,4) curData = Mid(Line,2,10) curhour = Mid(Line,13,2) curmin = Mid(Line,16,2) cursec = Mid(Line,19,2) curdt = curyear & curmnth & curday & curhour & curmin & cursec curhour = Cint(curhour) curmin = Cint(curmin) cursec = Cint(cursec) aspdate = CDate(curData) javadt = ((((aspdate - 25569) * 24 + curhour) * 60 + curmin) * 60 + cursec) * 1000 sqlStr = "SELECT Count( * ) FROM temperatures WHERE javadatetime = " & javadt res = cn.execute(sqlStr) if res(0)="0" then line = trim(Mid(Line,24)) cnt = 1 lst = Split(line) for each str in lst nm = "" val = "" vals = Split(str,"=") for each z in vals if nm = "" then nm = z else val = Replace(z,",",".") end if next if (nm <> "") and (val <> "") then cmdStr = "INSERT INTO temperatures" &_ "(measurementdatetime, thermometerid, value, javadatetime, thermometername)" &_ "VALUES ('" & curdt & "','" & cnt & "','" & val & "','" & javadt & "','" & nm & "')" cn.execute cmdStr End If cnt = cnt + 1 next End if Loop TextFileStream.Close Set TextFileStream = Nothing End If cn.close
рдЕрдЧрд▓рд╛ рдПрдХ PHP рдЕрдбреИрдкреНрдЯрд░ рд╣реИ рдЬреЛ рд╣рд╛рдИрд╕реНрдЯреЙрдХ рдХреЗ рд▓рд┐рдП JSON рдмрдирд╛рддрд╛ рд╣реИред
$rcn = mysql_connect("localhost","usr","psw"); mysql_select_db("test"); $termid = " and `thermometerid` = 2"; $last = "order by `measurementdatetime`"; $from = ""; $to = ""; $funk = "MIN"; if (isset($_GET['termid'])) $termid=" and `thermometerid` = ".$_GET['termid']; if (isset($_GET['last'])) $last="order by `measurementdatetime` desc, 'termid' limit ".$_GET['last']; if (isset($_GET['from'])) $from=" and `measurementdatetime` >= ".$_GET['from']; if (isset($_GET['to'])) $to=" and `measurementdatetime` <= ".$_GET['to']; if (isset($_GET['funk'])) $funk="".$_GET['funk']; $sqlstr = "SELECT MIN(`javadatetime`) as javadatetime, ROUND(".$funk."(`value`),1) as value FROM `temperatures` WHERE 1 ".$termid." ".$from." ".$to." group by TO_DAYS(`measurementdatetime`) ".$last; $res = mysql_query($sqlstr); $number = mysql_num_rows($res); printf("["); $first = false; if ($number > 0) { while ($row=mysql_fetch_array($res)) { if ($first) printf(","); printf("["); printf($row['javadatetime']); printf(", "); printf($row['value']); printf("]"); $first = true; } } printf("]"); mysql_close();
рдЧреНрд░рд╛рдлрд╝ рдЖрдЙрдЯрдкреБрдЯ рдЙрджрд╛рд╣рд░рдг:
var cnt = 0, seriesOptions = [], names = ['MAX','AVG', 'MIN']; createAll(); function createAll() { cnt = 0; $.each(names, function(i, name) { $.getJSON('http://tarasii.dyndns.org/minmax.php?termid=2&funk='+name, function(data) { seriesOptions[i] = {name: name, data: data, tooltip: { yDecimals: 1}}; cnt++; if (cnt == names.length) { createChart(); } }); }); } function createChart() { window.chart = new Highcharts.StockChart({ chart : { renderTo : 'container'}, title : { text : 'Day Temperature Statistics'}, xAxis : { maxZoom : 1 * 24 * 3600000
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдлрд┐рд░ рд╕реЗ, рдХреЙрд▓реЗрдЬрд┐рдпрдо рдиреЗ рдореБрдЭреЗ jQuery рдЧреЗрдЬ рд╡рд┐рдЬреЗрдЯ (рдПрдЯреАрдкреА рдПрдПрд╕рдПрдо) рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рдпрд╣ рдПрдирд╛рд▓реЙрдЧ рдерд░реНрдорд╛рдореАрдЯрд░ рдФрд░ рдШрдбрд╝рд┐рдпрд╛рдВ рдирд┐рдХрд▓рд╛
function createGauge(inGauge) { inGauge.jqxLinearGauge({ orientation: 'vertical', width: 80, height: 150, ticksMajor: { size: '10%', interval: 10 }, ticksMinor: { size: '5%', interval: 2.5, style: { 'stroke-width': 1, stroke: '#aaaaaa'} }, max: 40, min: -40, pointer: { size: '5%' }, colorScheme: 'scheme05', labels: {position: 'far', interval: 20, formatValue: function (value, position) { if (value === -40) { return '┬░C'; } return value + '┬░'; } }, animationDuration: 100 }); };
рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛ рдУрдкрдирд╡рд╛рд░реНрдЯрд░рдореИрдк рдХреЛ рдкрд░рд┐рдгрд╛рдо рднреЗрдЬрддреА рд╣реИ
On Error Resume Next set cn = CreateObject("ADODB.Connection") cn.connectionstring = "Driver={MySQL ODBC 5.1 Driver};Server=localhost;DataBase=test; " &_ "USER=usr;PASSWORD=pwd;" cn.open sqlStr = "SELECT t.value as vl, transactiondatetime,thermometername FROM temperatures t where thermometername='Outdor' order by transactiondatetime desc limit 1; " res = cn.execute(sqlStr) str = FormatNumber(res(0),1,-1,0,0) str = Replace(Str,",",".") cn.close Set cn = Nothing strURL = "http://openweathermap.org/data/post" strDatatoSend ="user=usr&password=pwd&temp="&str&"&lat=50.5193&long=30.5915&alt=100" Dim objHTTP Set objHTTP = CreateObject("Microsoft.XMLHTTP")
Windows7 рдХреЗ рд▓рд┐рдП рдПрдХ
рдЧреИрдЬреЗрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЬреЛ рдПрдХ рдУрдкрдирд╡рд╛рд░реНрдЯрд░рдореИрдк рд╕реНрдЯреЗрд╢рди рд╕реЗ рддрд╛рдкрдорд╛рди рджрд┐рдЦрд╛рддрд╛ рд╣реИ
рдбреЗрдЯрд╛ рд░реАрдбрд┐рдВрдЧ jquery рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
function updateList() { $.getJSON('http://openweathermap.org/data/2.1/weather/station/46933?type=json&callback=?', function(json) { $.each(json, function(i, head) { if(i=="main"){ curTmp = Math.round((head.temp-273)*10)/10; if (curTmp>0){ $('#main').html('<p>+'+curTmp+'┬░C</p>'); }else{ $('#main').html('<p>-'+curTmp+'┬░C</p>'); } } }); }); }
рдЙрдкрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ред
BM1707 рдирд┐рдпрдВрддреНрд░рдХ DS18B20 рдореБрдбрд╝ рдЬреЛрдбрд╝реА рд╕реЗрдВрд╕рд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ, рд╕реЗрдВрд╕рд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рдЯрд╛рдпрд░ рдХреА рд▓рдВрдмрд╛рдИ рд▓рдЧрднрдЧ 10 рдореАрдЯрд░ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рд░реНрд╡рд░ рдПрдХ EeePC900H рдиреЗрдЯрдмреБрдХ рдерд╛ рдЬреЛ рд╡рд┐рди XP рдЪрд▓рд╛ рд░рд╣рд╛ рдерд╛ред рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рд╕рд░реНрд╡рд░ рдкреБрд░рд╛рдиреЗ AT рдХреЗрд╕ рдореЗрдВ miniITX VIA C7-D 1800MHz рдкрд░ рдЪрд▓рд╛ рдЧрдпрд╛ред

"рд╕рд░реНрд╡рд░" рд╕рд╣рд┐рдд рдШрдЯрдХреЛрдВ рдХреА рд▓рд╛рдЧрдд рдкрд░, рдЖрдк $ 100 рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВ
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд▓реЗрдЦ
UniPing RS-485 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рд╡реЗрдм-рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдерд░реНрдорд╛рдореАрдЯрд░ рдХрд╛ рдкреВрд░рдХ рд╣реЛрдЧрд╛