{"id":1021,"date":"2025-03-26T12:06:32","date_gmt":"2025-03-26T11:06:32","guid":{"rendered":"https:\/\/alfard.ovh\/?page_id=1021"},"modified":"2025-03-28T00:17:09","modified_gmt":"2025-03-27T23:17:09","slug":"zapis-pomiarow-do-bazy","status":"publish","type":"page","link":"https:\/\/alfard.ovh\/index.php\/zapis-pomiarow-do-bazy\/","title":{"rendered":"Zapis pomiar\u00f3w do bazy"},"content":{"rendered":"\n<div class=\"wp-block-group alignfull has-accent-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-669513ed wp-block-group-is-layout-constrained\" style=\"margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--50);padding-right:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--50)\">\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-1da03c2a wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-stretch is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<div class=\"wp-block-group is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-444d5ee8 wp-block-group-is-layout-flex\" style=\"min-height:100%\">\n<p class=\"has-heading-font-family has-x-large-font-size\" style=\"line-height:1.2\">Temat dotyczy skryptu PHP, kt\u00f3ry ma za zadanie archiwizowa\u0107 dane pomiarowe w bazie danych SQL.<\/p>\n\n\n\n<p>Pomiary wykonuje ESP8266 lub lepiej ESP32 i wysy\u0142a je co <strong><em>interval <\/em><\/strong>do bazy SQL. Robi to za pomoc\u0105 skryptu <strong><em>ZapisAvgMax.php<\/em><\/strong>. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jakie czynno\u015bci wykonuje skrypt:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ESP przekazuje a skrypt pobiera nazwy: tabeli, kolumny\/kolumn i warto\u015bci, kt\u00f3re ma do nich wpisa\u0107<\/li>\n\n\n\n<li>sprawdza czy w bazie jest ju\u017c rekord z aktualnego zakresu czasowego okre\u015blonego parametrem <strong><em>tim<\/em><\/strong><\/li>\n\n\n\n<li>je\u017celi nie ma to inicjuje rekord z warto\u015bciami jakie ma<\/li>\n\n\n\n<li>je\u017celi jest to wyznacza \u015bredni\u0105 z warto\u015bci w bazie oraz tej kt\u00f3r\u0105 ma<\/li>\n\n\n\n<li>je\u017celi warto\u015b\u0107 dotyczy kolumny UV to sprawdza te\u017c czy nowa warto\u015b\u0107 jest wi\u0119ksza i je\u017celi tak to uaktualnia j\u0105 w bazie w kolumnie UVmax<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-group has-global-padding is-content-justification-left is-layout-constrained wp-container-core-group-is-layout-9fe8ed88 wp-block-group-is-layout-constrained\">\n<p class=\"wp-container-content-0733e5d0\">ci\u0105g dalszy powinien nast\u0105pi\u0107<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image size-large is-style-rounded is-style-rounded--1\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" src=\"https:\/\/alfard.ovh\/wp-content\/uploads\/2025\/03\/ZapisAvgMax-768x1024.jpg\" alt=\"\" class=\"wp-image-1029\" style=\"aspect-ratio:3\/4;object-fit:cover\" srcset=\"https:\/\/alfard.ovh\/wp-content\/uploads\/2025\/03\/ZapisAvgMax-768x1024.jpg 768w, https:\/\/alfard.ovh\/wp-content\/uploads\/2025\/03\/ZapisAvgMax-225x300.jpg 225w, https:\/\/alfard.ovh\/wp-content\/uploads\/2025\/03\/ZapisAvgMax-1152x1536.jpg 1152w, https:\/\/alfard.ovh\/wp-content\/uploads\/2025\/03\/ZapisAvgMax.jpg 1300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-base-color has-contrast-background-color has-text-color has-background has-link-color wp-elements-19cb5f3f38c32a628c8fda9fb25ebf04 has-global-padding is-layout-constrained wp-container-core-group-is-layout-d89aad35 wp-block-group-is-layout-constrained\" style=\"margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--50);padding-right:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--50)\">\n<h2 class=\"wp-block-heading alignwide has-base-color has-text-color has-link-color wp-elements-c9b5699bdecff18878afa112249018b5\" style=\"font-size:clamp(4.509rem, 4.509rem + ((1vw - 0.2rem) * 9.152), 10rem);letter-spacing:-0.02em\">FAQs<\/h2>\n\n\n\n<div class=\"wp-block-group alignwide is-layout-flow wp-block-group-is-layout-flow\">\n<hr class=\"wp-block-separator has-text-color has-base-color has-alpha-channel-opacity has-base-background-color has-background is-style-wide\" style=\"margin-top:var(--wp--preset--spacing--30);margin-bottom:var(--wp--preset--spacing--30)\"\/>\n\n\n\n<h3 class=\"wp-block-heading alignwide has-base-2-color has-text-color has-link-color wp-elements-8d00210af61c0a1f96f16cb4a118a609\">czy ka\u017cdy pomiar, co 12s albo co 1s, idzie do tabeli&nbsp;w bazie ?<\/h3>\n\n\n\n<p class=\"has-contrast-1-color has-text-color has-link-color wp-elements-698e40e9c73faae6a2b49be09c5c53ea\">Tak ka\u017cdy wysy\u0142any pomiar korzystaj\u0105c ze skryptu ZapisAvgMax.php jest wpisywany do kolumny w tabeli bazy. Przed zapisem sprawdzana jest obecno\u015b\u0107 rekordu wed\u0142ug klucza data i czas. Dla istniej\u0105cych rekord\u00f3w pobierana jest warto\u015b\u0107, skrypt oblicza \u015bredni\u0105 i uaktualnia rekord. Kiedy rekord nie istnieje to tworzony jest nowy z aktualn\u0105 warto\u015bci\u0105.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-base-color has-alpha-channel-opacity has-base-background-color has-background is-style-wide\" style=\"margin-top:var(--wp--preset--spacing--30);margin-bottom:var(--wp--preset--spacing--30)\"\/>\n\n\n\n<h3 class=\"wp-block-heading alignwide has-base-2-color has-text-color has-link-color wp-elements-fb22f969a8c0dc2064c42fc2272a34b5\">dlaczego kiedy tim=900, rekordy tworzone s\u0105&nbsp;co&nbsp;15&nbsp;min.?<\/h3>\n\n\n\n<p class=\"has-contrast-1-color has-text-color has-link-color wp-elements-124136c75aee5c75584e4e689bfb3ea7\">zacznijmy od tego, \u017ce 900 sek to jest 15 minut i ten przedzia\u0142 czasowy ustawiamy w celu kumulowania wielu pomiar\u00f3w w tych okresach. Kumulowanie nast\u0119puje przez u\u015brednianie. Zastosowanie kolumny o nazwie &#8222;UV&#8221; powoduje, \u017ce skrypt ZapisAvgMax.php szuka maksymalnych warto\u015bci w przedzia\u0142ach czasowych definiowanych przez &#8222;tim&#8221; i zapisuje wynik w kolumnie UVmax<\/p>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-base-color has-alpha-channel-opacity has-base-background-color has-background is-style-wide\" style=\"margin-top:var(--wp--preset--spacing--30);margin-bottom:var(--wp--preset--spacing--30)\"\/>\n\n\n\n<h3 class=\"wp-block-heading alignwide has-base-2-color has-text-color has-link-color wp-elements-89a66e6e424ace55e724de7a951acb46\">Czy pierwsza wymiana danych z pomiaru, po czasie interval, tworzy nowy rekord w OVH<\/h3>\n\n\n\n<p class=\"has-contrast-1-color has-text-color has-link-color wp-elements-0a94d92c2b9a82dfc63fc89af72a4634\">Ka\u017cda wymiana danych uaktualnia baz\u0119 stosuj\u0105c albo SQL update albo SQL insert. Patrz <a href=\"#przyklad1\">przyk\u0142ad1<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-base-color has-alpha-channel-opacity has-base-background-color has-background is-style-wide\" style=\"margin-top:var(--wp--preset--spacing--30);margin-bottom:var(--wp--preset--spacing--30)\"\/>\n\n\n\n<h3 class=\"wp-block-heading alignwide has-base-2-color has-text-color has-link-color wp-elements-78f520ac6cd959b539da8bed9b65b7a2\">Can I apply to be a part of the team or work as a contractor?<\/h3>\n\n\n\n<p class=\"has-contrast-1-color has-text-color has-link-color wp-elements-c7a6a2949ec955eb29254d2d7fb719b9\">\u00c9tudes offers comprehensive consulting, management, design, and research solutions. Our vision is to be at the forefront of architectural innovation, fostering a global community of architects and enthusiasts united by a passion for creating spaces. Every architectural endeavor is an opportunity to shape the future.<\/p>\n\n\n\n<div style=\"margin-top:var(--wp--preset--spacing--10);margin-bottom:0;height:var(--wp--preset--spacing--10)\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-global-padding is-layout-constrained wp-container-core-group-is-layout-d89aad35 wp-block-group-is-layout-constrained\" style=\"margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--50);padding-right:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--50)\">\n<div class=\"wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-47c06fe3 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<h2 class=\"wp-block-heading\" id=\"przyklad1\">Przyk\u0142ad<\/h2>\n\n\n\n<ul style=\"line-height:1.75\" class=\"wp-block-list is-style-checkmark-list\">\n<li>ESPeasy wysy\u0142a co interval=12<\/li>\n\n\n\n<li>Baza ma rekordy co tim=60<\/li>\n\n\n\n<li>mamy dwie kolumny: DataCzas i pomiar<\/li>\n\n\n\n<li>jest 8:00 nast\u0119puje wysy\u0142ka czyli kontroler uruchamia po\u0142\u0105czenie i wykonanie skryptu ZapisAvgMax.php na serwerze OVH<\/li>\n\n\n\n<li>zostaje utworzony rekord &#8222;2025-03-26 08:00&#8221;<\/li>\n\n\n\n<li>jest 8:00:12 kolejny pomiar idzie do bazy ale rekord &#8222;2025-03-26 08:00&#8221; ju\u017c istnieje dlatego jest pobierany z bazy i u\u015bredniany razem z pomiarem nowym aktualnym po czym uaktualniany jest istniej\u0105cy rekord<\/li>\n\n\n\n<li>potem kolejne pomiary 8:00:24, 8:00:36 i 8:00:48<\/li>\n\n\n\n<li>o 8:01:00 tworzony jest nowy rekord &#8222;2025-03-26 08:01&#8221; i cykl si\u0119 powtarza, kolejne pi\u0119\u0107 pomiar\u00f3w jest u\u015brednianych, kt\u00f3re od 8:01 do 8:02 b\u0119d\u0105 co 12 sek dociera\u0142y do bazy.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button is-style-outline is-style-outline--2\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/alfard.ovh\/index.php\/pomiary-ultrafioletu\/\">pomiary \u015bwiat\u0142a ultrafioletowego UV<\/a><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image size-full is-style-rounded is-style-rounded--3\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"800\" src=\"http:\/\/alfard.ovh\/wp-content\/uploads\/2025\/03\/ZapisAvgPrzyklad-1.jpg\" alt=\"\" class=\"wp-image-1042\" style=\"aspect-ratio:4\/3;object-fit:cover\" srcset=\"https:\/\/alfard.ovh\/wp-content\/uploads\/2025\/03\/ZapisAvgPrzyklad-1.jpg 1200w, https:\/\/alfard.ovh\/wp-content\/uploads\/2025\/03\/ZapisAvgPrzyklad-1-300x200.jpg 300w, https:\/\/alfard.ovh\/wp-content\/uploads\/2025\/03\/ZapisAvgPrzyklad-1-1024x683.jpg 1024w, https:\/\/alfard.ovh\/wp-content\/uploads\/2025\/03\/ZapisAvgPrzyklad-1-768x512.jpg 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Temat dotyczy skryptu PHP, kt\u00f3ry ma za zadanie archiwizowa\u0107 dane pomiarowe w bazie danych SQL. Pomiary wykonuje ESP8266 lub lepiej ESP32 i wysy\u0142a je co interval do bazy SQL. Robi to za pomoc\u0105 skryptu ZapisAvgMax.php. Jakie czynno\u015bci wykonuje skrypt: ci\u0105g dalszy powinien nast\u0105pi\u0107 FAQs czy ka\u017cdy pomiar, co 12s albo co 1s, idzie do tabeli&nbsp;w [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1021","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/alfard.ovh\/index.php\/wp-json\/wp\/v2\/pages\/1021","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alfard.ovh\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/alfard.ovh\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/alfard.ovh\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alfard.ovh\/index.php\/wp-json\/wp\/v2\/comments?post=1021"}],"version-history":[{"count":13,"href":"https:\/\/alfard.ovh\/index.php\/wp-json\/wp\/v2\/pages\/1021\/revisions"}],"predecessor-version":[{"id":1069,"href":"https:\/\/alfard.ovh\/index.php\/wp-json\/wp\/v2\/pages\/1021\/revisions\/1069"}],"wp:attachment":[{"href":"https:\/\/alfard.ovh\/index.php\/wp-json\/wp\/v2\/media?parent=1021"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}