{"id":639,"date":"2015-03-18T00:25:27","date_gmt":"2015-03-17T21:25:27","guid":{"rendered":"http:\/\/www.dinux.lt\/blog\/?p=639"},"modified":"2015-03-18T22:40:43","modified_gmt":"2015-03-18T19:40:43","slug":"protingas-namas-1-dalis","status":"publish","type":"post","link":"http:\/\/www.dinux.lt\/blog\/?p=639","title":{"rendered":"Protingas namas. 1 Dalis. Temperat\u016bra."},"content":{"rendered":"<p>Protingas, i\u0161manus, bet turb\u016bt <em>automatizuotas namas<\/em> labiausiai tinka nusakyti \u0161iai sistemai.<\/p>\n<p>Mano galvoje sukasi labiau <em>informatyvaus namo<\/em> terminas nei auk\u0161\u010diau pamin\u0117ti, nes ka\u017ekokio labai didelio valdymo galvoje neturiu. Tod\u0117l pirmos mintys\/tikslai yra tai, kad namas (\u0161iuo atveju butas) informuotu apie save, savo b\u016bkl\u0119 \u0161eiminink\u0105.<\/p>\n<p>Apra\u0161ymuose gali trukti vienos ar kitos smulkesn\u0117s ar nelabai smulkios detal\u0117s, palieku erdv\u0117s patiems pagalvoti, pasinaudoti paie\u0161kos sistemomis \ud83d\ude09<\/p>\n<p>Taigi, pats pirmas dalykas ko mums reik\u0117s, tai sistemos serverio\/kompiuterio. Jo funkcijas atlieka Raspberry Pi model B<br \/>\n<a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/43W5302-lado.jpg\" rel=\"lightbox[639]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/43W5302-lado-300x300.jpg\" alt=\"43W5302 lado\" width=\"300\" height=\"300\" class=\"alignnone size-medium wp-image-641\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/43W5302-lado-300x300.jpg 300w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/43W5302-lado-150x150.jpg 150w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/43W5302-lado-1024x1024.jpg 1024w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/43W5302-lado.jpg 1500w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Operacin\u0117 sistema (pati distribucija) gal nelabai tinka tokio tipo kompiuteriui, tam turb\u016bt reiktu rinktis debian ar ka\u017ek\u0105 pana\u0161aus, bet a\u0161 pasirinkau Archlinux. Vienintel\u0117 ir pagrindin\u0117 to prie\u017eastis, \u0161i\u0105 distribucij\u0105 naudoju visuose savo (ir \u017emonos) kompiuteriuose, gerai \u017einau jos sud\u0117ti ir valdym\u0105.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n[dinux@alarmpi ~]$ uname -a\r\nLinux alarmpi 3.12.35-1-ARCH #1 PREEMPT Tue Dec 23 07:14:51 MST 2014 armv6l GNU\/Linux\r\n<\/pre>\n<p>Kompiuteris maitinamas nuo po ranka papuolusio mobilaus telefono pakrov\u0117jo (atrodo Huawei), pradin\u0117je stadijoje buvo naudojama v\u0117lgi po ranka papuolusios 2Gb microSD kortel\u0117s \u012fd\u0117tos \u012f SD per\u0117jim\u0105. V\u0117liau dariau visokius bandymus tad prireik\u0117 vietos ir kortel\u0117 buvo pakeista \u012f 4Gb.<\/p>\n<p>Pirmasis link i\u0161manumo \u017eingsnis buvo termometr\u0173 pajungimas. Kaip pasijungti termometr\u0105\/termometrus labai puikiai apra\u0161yta \u010dia <a href=\"http:\/\/www.sbprojects.com\/projects\/raspberrypi\/temperature.php\" target=\"_blank\">http:\/\/www.sbprojects.com\/projects\/raspberrypi\/temperature.php<\/a>, pasinaudojus google, galima rasti daug \u012fvairi\u0173 pavyzd\u017ei\u0173.<\/p>\n<p>Kaip ir \u0161ioje nuorodoje parodyta naudoju DS18B20+ termometrus kurie \u012fd\u0117ti \u012f d\u0117\u017eutes nuo foto juostel\u0117s. D\u0117jau tam, kad termometras neb\u016bt\u0173 plikas ir nereaguotu \u012f trumpalaikius temperat\u016bros svyravimus.<\/p>\n<p>Duomenis pradiniam variante saugojau RRD baz\u0117je. Tai lyg duomen\u0173 baz\u0117 kartu su atvaizdavimo varikliu. Archlinux&#8217;e instaliuojam:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo pacman -Sy rrdtool\r\n<\/pre>\n<p>Pateikiu baz\u0117s k\u016brimo komandin\u0119 eilut\u0119:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n rrdtool create temp.rrd --start N --step 60 \\\r\n  DS:laukas:GAUGE:900:-50:50 \\\r\n  DS:svetaine:GAUGE:900:-50:50 \\\r\n  DS:kambarys:GAUGE:900:-50:50 \\\r\n  RRA:AVERAGE:0.5:1:12 \\\r\n  RRA:AVERAGE:0.5:1:288 \\\r\n  RRA:AVERAGE:0.5:12:168 \\\r\n  RRA:AVERAGE:0.5:12:720 \\\r\n  RRA:AVERAGE:0.5:288:365\r\n<\/pre>\n<p>\u0160ia komanda sukuriam baz\u0119, kurioje bus trys termometrai, jie pavadinti laukas &#8211; lauko temperat\u016brai, svetaine &#8211; svetain\u0117s kambario temperat\u016brai ir kambarys &#8211; darbo kambario temperat\u016brai saugoti.<\/p>\n<p>Kas minut\u0119 pasileid\u017eia cron job&#8217;as kuris nuskaito termometr\u0173 reik\u0161mes ir jas \u012fra\u0161o \u012f min\u0117ta baz\u0119:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nrrdtool update \/root\/rrd\/temp.rrd N:$LAUKAS:$SVETAINE:$KAMBARYS\r\n<\/pre>\n<p>Kas penkias minutes cron job&#8217;as paleid\u017eia skript\u0105 kuris sugeneruoja grafikus:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n   rrdtool graph \/srv\/http\/temp_h.png --start -1h \\\r\n             DEF:laukas=\/root\/rrd\/temp.rrd:laukas:AVERAGE \\\r\n             DEF:svetaine=\/root\/rrd\/temp.rrd:svetaine:AVERAGE \\\r\n             DEF:kambarys=\/root\/rrd\/temp.rrd:kambarys:AVERAGE \\\r\n             LINE1:laukas#0000FF:&quot;Lauko temperat\u016bra [C]&quot; \\\r\n             LINE1:svetaine#FF0000:&quot;Svetain\u0117s temperat\u016bra [C]&quot; \\\r\n             LINE1:kambarys#00FF00:&quot;Dainiaus kambario temperat\u016bra [C]&quot;\r\n\r\n   rrdtool graph \/srv\/http\/temp_d.png --start -1d \\\r\n             DEF:laukas=\/root\/rrd\/temp.rrd:laukas:AVERAGE \\\r\n             DEF:svetaine=\/root\/rrd\/temp.rrd:svetaine:AVERAGE \\\r\n             DEF:kambarys=\/root\/rrd\/temp.rrd:kambarys:AVERAGE \\\r\n             LINE1:laukas#0000FF:&quot;Lauko temperat\u016bra [C]&quot; \\\r\n             LINE1:svetaine#FF0000:&quot;Svetain\u0117s temperat\u016bra [C]&quot; \\\r\n             LINE1:kambarys#00FF00:&quot;Dainiaus kambario temperat\u016bra [C]&quot;\r\n\r\n   rrdtool graph \/srv\/http\/temp_w.png --start -1w \\\r\n             DEF:laukas=\/root\/rrd\/temp.rrd:laukas:AVERAGE \\\r\n             DEF:svetaine=\/root\/rrd\/temp.rrd:svetaine:AVERAGE \\\r\n             DEF:kambarys=\/root\/rrd\/temp.rrd:kambarys:AVERAGE \\\r\n             LINE1:laukas#0000FF:&quot;Lauko temperat\u016bra [C]&quot; \\\r\n             LINE1:svetaine#FF0000:&quot;Svetain\u0117s temperat\u016bra [C]&quot; \\\r\n             LINE1:kambarys#00FF00:&quot;Dainiaus kambario temperat\u016bra [C]&quot;\r\n\r\n   rrdtool graph \/srv\/http\/temp_m.png --start -1m \\\r\n             DEF:laukas=\/root\/rrd\/temp.rrd:laukas:AVERAGE \\\r\n             DEF:svetaine=\/root\/rrd\/temp.rrd:svetaine:AVERAGE \\\r\n             DEF:kambarys=\/root\/rrd\/temp.rrd:kambarys:AVERAGE \\\r\n             LINE1:laukas#0000FF:&quot;Lauko temperat\u016bra [C]&quot; \\\r\n             LINE1:svetaine#FF0000:&quot;Svetain\u0117s temperat\u016bra [C]&quot; \\\r\n             LINE1:kambarys#00FF00:&quot;Dainiaus kambario temperat\u016bra [C]&quot;\r\n\r\n   rrdtool graph \/srv\/http\/temp_y.png --start -1y \\\r\n             DEF:laukas=\/root\/rrd\/temp.rrd:laukas:AVERAGE \\\r\n             DEF:svetaine=\/root\/rrd\/temp.rrd:svetaine:AVERAGE \\\r\n             DEF:kambarys=\/root\/rrd\/temp.rrd:kambarys:AVERAGE \\\r\n             LINE1:laukas#0000FF:&quot;Lauko temperat\u016bra [C]&quot; \\\r\n             LINE1:svetaine#FF0000:&quot;Svetain\u0117s temperat\u016bra [C]&quot; \\\r\n             LINE1:kambarys#00FF00:&quot;Dainiaus kambario temperat\u016bra [C]&quot;\r\n<\/pre>\n<p>Reiktu atkreipti d\u0117mes\u012f, kad pagal mano pateikta pavyzd\u012f paveiksliukai saugomi \/srv\/http\/ kataloge.<\/p>\n<p>Rezultate turime grafikus. Pateikiu tik kelis t.y. dienos bei m\u0117nesio:<br \/>\n<a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/temp_d.png\" rel=\"lightbox[639]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/temp_d.png\" alt=\"temp_d\" width=\"481\" height=\"169\" class=\"alignnone size-full wp-image-648\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/temp_d.png 481w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/temp_d-300x105.png 300w\" sizes=\"(max-width: 481px) 100vw, 481px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/temp_m.png\" rel=\"lightbox[639]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/temp_m.png\" alt=\"temp_m\" width=\"481\" height=\"169\" class=\"alignnone size-full wp-image-649\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/temp_m.png 481w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/temp_m-300x105.png 300w\" sizes=\"(max-width: 481px) 100vw, 481px\" \/><\/a><\/p>\n<p>V\u0117liau atsiradus poreikiui patogiai select&#8217;int duomenis nusprend\u017eiau juos saugoti prad\u017eioje sqlite baz\u0117je, bet pasteb\u0117jau, kad duomen\u0173 ra\u0161ymo metu baz\u0117s byla yra u\u017erakinama. Po nes\u0117kming\u0173 bandym\u0173 i\u0161vengti rakinimo (i\u0161vengti visgi pavyko, bet \u012fra\u0161o metu traukiant duomenis operacija u\u017etrukdavo, nes pirma palaukdavo kol pilnai \u012fra\u0161omi duomenys) per\u0117jau prie Mysql, o tiksliau mariaDB.<\/p>\n<p>Komanda su kuria ra\u0161au duomenis:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n    mysql -u manonamai -pmanoslaptazodis  manonamai  -e &quot;INSERT INTO tbl_sensors_data (sd_sensor_id, sd_data) values (\\&quot;1\\&quot;,$KAMBARYS);&quot;\r\n    mysql -u manonamai -pmanoslaptazodis  manonamai  -e &quot;INSERT INTO tbl_sensors_data (sd_sensor_id, sd_data) values (\\&quot;2\\&quot;,$SVETAINE);&quot;\r\n    mysql -u manonamai -pmanoslaptazodis  manonamai  -e &quot;INSERT INTO tbl_sensors_data (sd_sensor_id, sd_data) values (\\&quot;3\\&quot;,$LAUKAS);&quot;\r\n<\/pre>\n<p>Pritaikius savo reikm\u0117ms amCharts (<a href=\"http:\/\/www.amcharts.com\" target=\"_blank\">http:\/\/www.amcharts.com<\/a>) turime gra\u017eesn\u0119 ir dinami\u0161kesn\u0119 (u\u017esikrovus pusulapiui rodykl\u0117s sujuda) vizualizacij\u0105:<br \/>\n<a href=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/Ekranvaizdis_2015-03-17_23-11-30.jpg\" rel=\"lightbox[639]\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/Ekranvaizdis_2015-03-17_23-11-30.jpg\" alt=\"Ekranvaizdis_2015-03-17_23-11-30\" width=\"900\" height=\"222\" class=\"alignnone size-full wp-image-653\" srcset=\"http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/Ekranvaizdis_2015-03-17_23-11-30.jpg 900w, http:\/\/www.dinux.lt\/blog\/wp-content\/uploads\/2015\/03\/Ekranvaizdis_2015-03-17_23-11-30-300x74.jpg 300w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<p>Reiktu pamin\u0117ti, kad lauko temperat\u016bra rodoma apie du laipsnius auk\u0161tesn\u0117 nei yra realyb\u0117je, nes daviklis \u012f lauk\u0105 patenka per liaudyje vadinama <em>fortk\u0119<\/em> (orlaid\u0119) ir yra pakankamai arti namo sienos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Protingas, i\u0161manus, bet turb\u016bt automatizuotas namas labiausiai tinka nusakyti \u0161iai sistemai. Mano galvoje sukasi labiau informatyvaus namo terminas nei auk\u0161\u010diau pamin\u0117ti, nes ka\u017ekokio labai didelio valdymo galvoje neturiu. Tod\u0117l pirmos mintys\/tikslai yra tai, kad namas (\u0161iuo atveju butas) informuotu apie save, savo b\u016bkl\u0119 \u0161eiminink\u0105. Apra\u0161ymuose gali trukti vienos ar kitos smulkesn\u0117s ar nelabai smulkios detal\u0117s, &#8230; <a title=\"Protingas namas. 1 Dalis. Temperat\u016bra.\" class=\"read-more\" href=\"http:\/\/www.dinux.lt\/blog\/?p=639\" aria-label=\"More on Protingas namas. 1 Dalis. Temperat\u016bra.\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false},"categories":[3,12],"tags":[],"_links":{"self":[{"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/posts\/639"}],"collection":[{"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=639"}],"version-history":[{"count":15,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/posts\/639\/revisions"}],"predecessor-version":[{"id":659,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=\/wp\/v2\/posts\/639\/revisions\/659"}],"wp:attachment":[{"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=639"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=639"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.dinux.lt\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=639"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}