{"id":621,"date":"2020-03-04T04:59:39","date_gmt":"2020-03-04T06:59:39","guid":{"rendered":"http:\/\/vejas.defas.lt\/?p=621"},"modified":"2022-12-21T10:22:48","modified_gmt":"2022-12-21T12:22:48","slug":"suvartojamos-energijos-matuoklis","status":"publish","type":"post","link":"http:\/\/vejas.defas.lt\/?p=621","title":{"rendered":"Suvartojamos energijos matuoklis"},"content":{"rendered":"<p>\u0160iame straipsnyje apra\u0161ysiu atskir\u0105 darb\u0105, kuriame su RPI ir Arduino bei operaciniu stiprintuvu atliekamas kintamos formos srov\u0117s ir \u012ftampos matavimas, \u012fvertinamas statistinis duomen\u0173 i\u0161barstymas ir rezultatai patiekiami WEB puslapyje.<\/p>\n<p>Turinys. Darbo atskiros dalys:<br \/>\n1. Trumpas apra\u0161ymas.<br \/>\n2. Davikliai<br \/>\n3. Strukt\u016brin\u0117, principin\u0117 schemos bei plo\u0161t\u0117s konstruktyvas.<br \/>\n4. Arduino programos diagrama ir listingas, duomen\u0173 strukt\u016bra<br \/>\n5. RPI C programos listingas ir paleidimo apra\u0161ymas<br \/>\n6. PHP, JS listingai duomen\u0173 pri\u0117mimui ir atvaizdavimui.<br \/>\n7. I\u0161vados.<\/p>\n<p>1. Trumpas apra\u0161ymas.<\/p>\n<p>2. Davikliai<br \/>\n3. Strukt\u016brin\u0117, principin\u0117 schemos bei plo\u0161t\u0117s konstruktyvas.<br \/>\n4. Arduino programos diagrama ir <a href=\"http:\/\/vejas.defas.lt\/wp-content\/uploads\/2020\/03\/Sratavimas_listingas_Arduino.txt\">listingas<\/a>.<br \/>\n<b>Duomen\u0173 strukt\u016bra<\/b><br \/>\n<b>Greitaveika<\/b><br \/>\nReikia atsakyti \u012f klausim\u0105: Kaip greit galima fiksuoti duomenis? Vienas i\u0161 i\u0161eities argument\u0173 yra Arduino perdavimo greitis. \u0160iuo atveju naudojame USB to Serial chip\u0105 Arduino plok\u0161t\u0117je CH341. Pagal Arduino <a href=\"https:\/\/docs.arduino.cc\/learn\/built-in-libraries\/software-serial\">manual\u0105<\/a> did\u017eiausias perduodamas greitis yra 115200 bit\/sek.. Duomen\u0173 paketas sudaro 8 rei\u0161mes atskirtas SPACE 20H simboliu ir milis() funkcijos gr\u0105\u017einama reik\u0161me (integer) milisekundes. Kol kas realizuota viena i\u0161 a\u0161tuoni\u0173 duomen\u0173 yra FLOAT, kitos Integer. Taigi maksimalus eilut\u0117s ilgis: 7&#215;4(INT 0&#8230;1024) + 4(FLOAT) + 7 (20H) + milis()+ 2(ODH, OAH &#8211; eilut\u0117s pabaiga):<br \/>\nxxxx x.xx xxxx xxxx xxxx xxxx xxxx xxxx xxxx OAH ODH<br \/>\nDar vienas i\u0161eities argumentas yra analoginio keitiklio greitaveika. \u017dr. teorinius parametrus: <a>TODO<\/a>.<\/p>\n<p><b>Sunaudojama vieta kaupiklyje, duomen\u0173 baz\u0117s \u012fra\u0161\u0173 kiekis<\/b><\/p>\n<p>5. RPI C programos <a href=\"http:\/\/vejas.defas.lt\/wp-content\/uploads\/2020\/03\/Sratavimas_listingas_RPI.zip\">listingas<\/a> ir paleidimo apra\u0161ymas<\/p>\n<p>Prie RPI jungiames WiFi, putty, IP adresas: 192.168.3.95 (pi\/vejojegaines), hostname sratavimas &#8211; kadangi IP adresas n\u0117ra fiksuotas, bandau su putty jungtis naudodamas hostaname vietoj IP adreso. Neveikia. TODO kod\u0117l?. Tr\u016bksta proftpd. Instaliuojam: apt-get install proftpd. Pasi\u016blo atnaujinti: apt-get update. bandau dar. Padar\u0117. Nenurod\u017eius katalogo, sujungia \u0161akniniame kataloge. Taisau: nuimu kompentar\u0105 DefaultRoot ~ eilutei. \/etc\/proftpd\/proftpd.conf faile. Perstartuoju proftpd: \/etc\/init.d\/proftpd restart<\/p>\n<p>sukuriame i\u0161eities fail\u0105. pasinaudosime ankstesniu darbu ir nukopijuosime kod\u0105 i\u0161:<\/p>\n<p>http:\/\/vejas.defas.lt\/wp-content\/uploads\/2018\/02\/ziogas.c<\/p>\n<p>ziogas.c pervardiname failu sratavimas.c<\/p>\n<p>Pakei\u010diam prisijungimo prie mysql duomenis:<br \/>\nconst char *user=&#8221;sratavimas&#8221;;<br \/>\nconst char *password=&#8221;sratavimas&#8221;;<br \/>\nconst char *database=&#8221;sratavimas&#8221;;<\/p>\n<p>kompiliavimo eilut\u0117:<\/p>\n<pre>gcc -o sratavimas.o -I \/usr\/include\/ `mysql_config --cflags --libs` sratavimas.c<\/pre>\n<p>Gaunu klaid\u0105:<\/p>\n<p>sratavimas.c:10:10: fatal error: mysql\/mysql.h: Toks failas ar aplankas neegzistuoja<br \/>\n#include &lt;mysql\/mysql.h&gt; \/\/used by mysql<\/p>\n<p>sukompiliuojam:<\/p>\n<pre>apt-get install mariadb-server<\/pre>\n<p>po \u0161io instaliavimo konfig\u016bruojam mysql server\u012f komanda:<\/p>\n<pre>root@sratavimas:\/home\/pi# mysql_secure_installation<\/pre>\n<p>\u010cia sukuriame root slapta\u017eod\u012f (sratavimas) ir pa\u0161aliname anonymous vartotoj\u0105, leid\u017eiam prisijungti nuotoliniu, taisome fail\u0105: \/etc\/mysql\/mariadb.conf.d\/50-serv.cnf<\/p>\n<pre>#bind-address = 127.0.0.1<\/pre>\n<p>papildomai instaliuojame:<\/p>\n<pre>apt-get install libmariadb-dev<\/pre>\n<pre>apt-get install libmariadb-dev-compat<\/pre>\n<p>dabar fail\u0105 mysql.h randa:<br \/>\n\/usr\/include\/mariadb\/mysql.h<br \/>\n\/usr\/include\/mariadb\/server\/mysql.h<br \/>\nPataisome kod\u0105 sratavimas.c vietoj mysql \u012fra\u0161ydami mariadb\/mysql.h<\/p>\n<p>Sukuriame duomen\u0173 baz\u0119 sratavimas, sukuriame vartotoj\u0105 sratavimas, jam suteikiame teis\u0119 prie DB sratavimas:<\/p>\n<pre>MariaDB [(none)]&gt; grant all on sratavimas.* to sratavimas identified by 'sratavimas';<\/pre>\n<p>Joje sukuriame dvi lenteles: Duomenys ir Forma. J\u0173 strukt\u016bra:<\/p>\n<pre>CREATE TABLE `sratavimas`.`Duomenys` (\r\n`id` int(10) unsigned NOT NULL AUTO_INCREMENT,\r\n`A0` int(10) unsigned NOT NULL COMMENT 'Srove',\r\n`A1` int(10) unsigned NOT NULL COMMENT 'Itampa',\r\n`TS` int(10) unsigned NOT NULL COMMENT 'Timestamp from Arduino',\r\n`Laikas` datetime NOT NULL DEFAULT current_timestamp(),\r\nPRIMARY KEY (`id`)\r\n) ENGINE=InnoDB AUTO_INCREMENT=2282 DEFAULT CHARSET=utf8mb4;<\/pre>\n<pre>CREATE TABLE `sratavimas`.`Forma` (\r\n`id` int(10) unsigned NOT NULL AUTO_INCREMENT,\r\n`KreivesTaskai` varchar(6144) NOT NULL,\r\n`TS` int(10) unsigned NOT NULL,\r\n`Laikas` datetime NOT NULL DEFAULT current_timestamp(),\r\nPRIMARY KEY (`id`)\r\n) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8mb4;<\/pre>\n<p>&nbsp;<\/p>\n<p>Dabar kompiliavimas vyksta be klaid\u0173. pataisysiu kod\u0105 formuodamas dvi mysql insert komandas: viena kas sekund\u0119 prane\u0161a srov\u0117s ir \u012ftampos reik\u0161mes ir yra trumpa, kita ilga ir kas minut\u0119 perduoda \u012ftampos ir srov\u0117s kreivi\u0173 form\u0105. Maksimalus eilut\u0117s ilgis= (4(vieno matavimo reik\u0161m\u0117 0&#8230;1023)+2(&#8216;, &#8216;))* MAsize (const unsigned int MAsize=96; &#8211; arduino kodas)=1024*6=6144 bait\u0173. sratavimas.c faile u\u017eknisa skai\u010diuoti, kiek yra raid\u017ei\u0173 eilut\u0117je. Tam yra online priemon\u0117: https:\/\/www.lettercount.com\/<\/p>\n<p>Trumpos eilut\u0117s formatas:<\/p>\n<pre>insert into sratavimas.Duomenys (A0, A1, TS) values (128, 0, 1006907 );<\/pre>\n<p>Ilgos eilut\u0117s formatas:<\/p>\n<pre>insert into sratavimas.Forma (KreivesTaskai, TS) values ('528, 528, 528, 529, 528, 529, 529, 529, 529, 528, 529, 529, 529, 528, 528, 528, 528, 528, 528, 527, 528, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 528, 527, 527, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 529, 528, 529, 528, 528, 529, 529, 529, 529, 529, 528, 528, 528, 528, 528, 528, 528, 527, 528, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 528, 528, 528, 528, 528, 528, 528, 528, 529, 528, 528, 529, 529, 528, 529, 529, 528, 529, ', 1005867);<\/pre>\n<p>taigi:<\/p>\n<p>&nbsp;<\/p>\n<p>6. PHP, JS listingai duomen\u0173 pri\u0117mimui ir atvaizdavimui.<\/p>\n<p>Konfig\u016bruojame proftps, kad pasiektume katalog\u0105 \/var\/www\/html\/ kuriame leid\u017eiamas apache2. Taisome fail\u0105 \/etc\/proftpd\/proftpd.conf:<\/p>\n<p>&nbsp;<\/p>\n<p>Pagal nutyl\u0117jim\u0105 n\u0117ra suinstaliuota PHP: Instaliuojam:<\/p>\n<p>&nbsp;<\/p>\n<pre>apt install libapache2-mod-php\r\napt-get install php7.3-mysql<\/pre>\n<p>taisome \/etc\/php\/7.3\/apache2\/php.ini:<\/p>\n<p>short_open_tag=on<\/p>\n<p>&nbsp;<\/p>\n<p>Atsargin\u0119 SD kortel\u0117s kopij\u0105 darau su win32diskimager programa. Matomai ji kopijuoja sektoriais, ne failais, i\u0161 16GB kortel\u0117s gavosi 15GB atvaizdo failas. Bet kompresuojasi gerai. Archyvas sudaro 4GB fail\u0105.<\/p>\n<p>&nbsp;<\/p>\n<p>7. Bandymai ir i\u0161vados.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0160iame straipsnyje apra\u0161ysiu atskir\u0105 darb\u0105, kuriame su RPI ir Arduino bei operaciniu stiprintuvu atliekamas kintamos formos srov\u0117s ir \u012ftampos matavimas, \u012fvertinamas statistinis duomen\u0173 i\u0161barstymas ir rezultatai patiekiami WEB puslapyje. Turinys. Darbo atskiros dalys: 1. Trumpas apra\u0161ymas. 2. Davikliai 3. Strukt\u016brin\u0117, principin\u0117 schemos bei plo\u0161t\u0117s konstruktyvas. 4. Arduino programos diagrama ir listingas, duomen\u0173 strukt\u016bra 5. RPI &hellip; <a href=\"http:\/\/vejas.defas.lt\/?p=621\" class=\"more-link\">Skaityti toliau: <span class=\"screen-reader-text\">Suvartojamos energijos matuoklis<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_forum_subforum_count":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-621","post","type-post","status-publish","format-standard","hentry","category-be-kategorijos"],"acf":[],"_links":{"self":[{"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=\/wp\/v2\/posts\/621","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=621"}],"version-history":[{"count":11,"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=\/wp\/v2\/posts\/621\/revisions"}],"predecessor-version":[{"id":1080,"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=\/wp\/v2\/posts\/621\/revisions\/1080"}],"wp:attachment":[{"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=621"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=621"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/vejas.defas.lt\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=621"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}