{"id":12,"date":"2025-03-29T18:43:08","date_gmt":"2025-03-29T17:43:08","guid":{"rendered":"https:\/\/cloudarduino.synology.me\/?page_id=12"},"modified":"2025-03-29T18:43:08","modified_gmt":"2025-03-29T17:43:08","slug":"visualizza-dati","status":"publish","type":"page","link":"https:\/\/cloudarduino.synology.me\/?page_id=12","title":{"rendered":"Visualizza Dati"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>add_shortcode('esp32_visualizza', 'esp32_render_dati');\n\nfunction esp32_render_dati() {\n    if (!isset($_GET&#91;'id'])) return 'ID dispositivo mancante.';\n    $device_id = intval($_GET&#91;'id']);\n    global $wpdb;\n\n    $device = $wpdb->get_row(\"SELECT * FROM devices WHERE id = $device_id\");\n    if (!$device || $device->user_id != get_current_user_id()) return \"Accesso negato.\";\n\n    $dati = $wpdb->get_results(\"SELECT * FROM sensor_data WHERE device_id = $device_id ORDER BY timestamp DESC LIMIT 100\");\n\n    $labels = &#91;];\n    $temp = &#91;];\n    $hum = &#91;];\n    $peso = &#91;];\n\n    foreach (array_reverse($dati) as $row) {\n        $labels&#91;] = $row->timestamp;\n        $temp&#91;] = $row->temperature;\n        $hum&#91;] = $row->humidity;\n        $peso&#91;] = $row->weight;\n    }\n\n    ob_start();\n    ?>\n    &lt;h2>Dati per dispositivo &lt;?php echo $device->mac_address; ?>&lt;\/h2>\n    &lt;canvas id=\"chart\" width=\"600\" height=\"300\">&lt;\/canvas>\n    &lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\">&lt;\/script>\n    &lt;script>\n        const ctx = document.getElementById('chart').getContext('2d');\n        new Chart(ctx, {\n            type: 'line',\n            data: {\n                labels: &lt;?php echo json_encode($labels); ?>,\n                datasets: &#91;\n                    {\n                        label: 'Temperatura',\n                        data: &lt;?php echo json_encode($temp); ?>,\n                        borderColor: 'red',\n                        fill: false\n                    },\n                    {\n                        label: 'Umidit\u00e0',\n                        data: &lt;?php echo json_encode($hum); ?>,\n                        borderColor: 'blue',\n                        fill: false\n                    },\n                    {\n                        label: 'Peso',\n                        data: &lt;?php echo json_encode($peso); ?>,\n                        borderColor: 'green',\n                        fill: false\n                    }\n                ]\n            }\n        });\n    &lt;\/script>\n    &lt;?php\n    return ob_get_clean();\n}\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-12","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cloudarduino.synology.me\/index.php?rest_route=\/wp\/v2\/pages\/12","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudarduino.synology.me\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cloudarduino.synology.me\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cloudarduino.synology.me\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudarduino.synology.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12"}],"version-history":[{"count":1,"href":"https:\/\/cloudarduino.synology.me\/index.php?rest_route=\/wp\/v2\/pages\/12\/revisions"}],"predecessor-version":[{"id":13,"href":"https:\/\/cloudarduino.synology.me\/index.php?rest_route=\/wp\/v2\/pages\/12\/revisions\/13"}],"wp:attachment":[{"href":"https:\/\/cloudarduino.synology.me\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}