{"id":8093,"date":"2024-01-20T17:01:03","date_gmt":"2024-01-20T08:01:03","guid":{"rendered":"https:\/\/arakoki70.com\/?p=8093"},"modified":"2024-01-22T09:26:16","modified_gmt":"2024-01-22T00:26:16","slug":"raspberry-pi-%e8%a8%88%e6%b8%ac%e3%81%97%e3%81%9f%e6%b8%a9%e5%ba%a6%e3%82%92%e3%83%87%e3%83%bc%e3%82%bf%e3%83%99%e3%83%bc%e3%82%b9%e3%81%ab%e6%a0%bc%e7%b4%8d%e3%81%97%e3%80%81web%e3%83%96%e3%83%a9","status":"publish","type":"post","link":"https:\/\/arakoki70.com\/?p=8093","title":{"rendered":"Raspberry Pi \u8a08\u6e2c\u3057\u305f\u6e29\u5ea6\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u683c\u7d0d\u3057\u3001Web\u30d6\u30e9\u30a6\u30b6\u306b\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308b"},"content":{"rendered":"<div style=\"background: #f5f5f5; padding: 10px; border: 2px solid #800000; text-align: center; box-shadow: 5px 5px 5px #aaa; font-size: 16px;\"><span style=\"font-size: 14pt;\"><strong><span style=\"font-size: 12pt;\">Raspberry Pi \u4f5c\u54c1\u96c6<\/span><br \/>\r\nPython Flask + MySQL + Google Chart<br \/>\r\n\u6e29\u5ea6\u3092\u8a18\u9332\u3057\u3001Web\u30b5\u30fc\u30d0\u30fc\u3067\u30b0\u30e9\u30d5\u5316\u3059\u308b<\/strong><\/span><\/div>\r\n<div>\u00a0<\/div>\r\n<div>Raspberry Pi \u306b\u63a5\u7d9a\u3057\u305f\u6e29\u5ea6\u30bb\u30f3\u30b5\u30fc\u3067\u6e29\u5ea6\u3092\u5b9a\u671f\u7684\u306b\u8a08\u6e2c\u3057\u3001\u305d\u306e\u7d50\u679c\u3092\u300cMySQL\u300d\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u8a18\u9332\u3002<br \/>\r\n\u300cMySQL\u300d\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u8a18\u9332\u3055\u308c\u305f\u6e29\u5ea6\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3001\u300cPython Flask Web\u30b5\u30fc\u30d0\u30fc\u300d\u3067\u3001\u30d6\u30e9\u30a6\u30b6\u306b\u300cGoogle Chart\u300d\u3092\u4f7f\u3063\u3066\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308b\u3002<\/div>\r\n<div>\u00a0<\/div>\r\n<div><a href=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0611.png\" data-rel=\"lightbox-gallery-fHJ93wMo\" data-rl_title=\"flask-chart_0611\" data-rl_caption=\"\" title=\"flask-chart_0611\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8095 size-full\" src=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0611.png\" alt=\"Raspberry Pi - Python \u6e2c\u5b9a\u3057\u305f\u6e29\u5ea6\u3092\u30b0\u30e9\u30d5\u3067\u8868\u793a\" width=\"1142\" height=\"588\" \/><\/a><\/div>\r\n<div style=\"text-align: center;\"><span style=\"font-size: 10pt;\">Raspberry Pi - Python \u6e2c\u5b9a\u3057\u305f\u6e29\u5ea6\u3092\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3002<\/span><\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u4ee5\u4e0b\u3001\u30e9\u30ba\u30d9\u30ea\u30fc\u30d1\u30a4\u3067\u6e29\u5ea6\u3092\u8a18\u9332\u3057\u3001Web\u30b5\u30fc\u30d0\u30fc\u3067\u30b0\u30e9\u30d5\u5316\u3057\u305f\u8a18\u9332\u3002<\/div>\r\n<div><!--more--><\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\t<p>&nbsp;<\/p>\n\t<div align=\"center\" style=\"font-size:8pt;\">\u30b9\u30dd\u30f3\u30b5\u30fc \u30ea\u30f3\u30af<br \/>\n<!-- \t<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script> -->\n\t<!-- \u8a18\u4e8b\u30fb\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6-7 -->\n\t<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-client=\"ca-pub-3816629014893825\"\n     data-ad-slot=\"1428770894\"\n     data-ad-format=\"auto\"\n     data-full-width-responsive=\"true\"><\/ins>\n\t<script>\n\t(adsbygoogle = window.adsbygoogle || []).push({});\n\t<\/script>\n\t<amp-ad width=\"100vw\" height=\"320\"\n     type=\"adsense\"\n     data-ad-client=\"ca-pub-3816629014893825\"\n     data-ad-slot=\"1428770894\"\n     data-auto-format=\"rspv\"\n     data-full-width=\"\">\n\t <div overflow=\"\"><\/div>\n\t<\/amp-ad>\n\t<\/div>\n\t<p>&nbsp;<\/p>\n<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u00a0<\/div>\r\n<div style=\"border: 1px solid #c0c0c0; padding: 7px; background: #f5f5f5; border-radius: 8px; position: relative; top: 0px; font-family: Arial, Helvetica, sans-serif; font-size: 16px;\">\r\n<div><strong><span style=\"font-size: 14pt;\">\u3000\u76ee\u3000\u6b21<\/span><\/strong><\/div>\r\n<div style=\"margin-left: 20pt; line-height: 200%;\"><span style=\"color: magenta;\">1.\u3000<\/span><a href=\"#title1\"><strong>\u5168\u4f53\u30a4\u30e1\u30fc\u30b8<\/strong><\/a><br \/>\r\n<span style=\"color: magenta;\">2.\u3000<\/span><a href=\"#title2\"><strong>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4f5c\u6210<\/strong><\/a><br \/>\r\n<span style=\"color: magenta;\">3.\u3000<\/span><a href=\"#title3\"><strong>temperature.py\uff1a\u6e29\u5ea6\u6e2c\u5b9a\u3068DB\u66f8\u8fbc\u307f\u30d7\u30ed\u30b0\u30e9\u30e0<\/strong><\/a><br \/>\r\n<span style=\"color: magenta;\">4.\u3000<\/span><a href=\"#title4\"><strong>app_05.py\uff1aFlask\u306b\u3088\u308bWeb\u30a2\u30d7\u30ea<\/strong><\/a><br \/>\r\n<span style=\"color: magenta;\">5.\u3000<\/span><a href=\"#title5\"><strong>template.html\uff1a\u6e29\u5ea6\u3092\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308bHTML<\/strong><\/a><br \/>\r\n<span style=\"color: magenta;\">6.\u3000<\/span><a href=\"#title6\"><strong>\u5b9f\u884c\u7d50\u679c\uff1a\u6e29\u5ea6\u306e\u30b0\u30e9\u30d5\u8868\u793a<\/strong><\/a><\/div>\r\n<\/div>\r\n<div>\u00a0<\/div>\r\n<div id=\"title1\">\u00a0<\/div>\r\n<div>\u00a0<\/div>\r\n<div style=\"border: 1px solid #800000; padding: 5px 10px 3px 10px; background: #c5ff88;\"><strong>1. \u5168\u4f53\u30a4\u30e1\u30fc\u30b8<\/strong><\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u30bb\u30f3\u30b5\u306e\u8a18\u9332\u3092\u30b0\u30e9\u30d5\u5316\u3059\u308b\u3001\u5168\u4f53\u30a4\u30e1\u30fc\u30b8\u3002<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u2460\uff0eRaspberry Pi \u306b\u6e29\u5ea6\u30bb\u30f3\u30b5\u30fc\u3092\u63a5\u7d9a\u3057\u3001\u5ba4\u5185\u306e\u6e29\u5ea6\u3092\u5b9a\u671f\u7684\u306b\u8a08\u6e2c\u3057\u3001\u7d50\u679c\u3092\u300cMySQL\u300d\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u8a18\u9332\u3059\u308b\u3002<br \/>\r\n\u2461\uff0e\u300cPython Flask\u300d\u306b\u3088\u308bWeb\u30b5\u30fc\u30d0\u30fc\u3067\u3001\u300cMySQL\u300d\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u8a18\u9332\u3055\u308c\u305f\u6e29\u5ea6\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3001HTML\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u300crender\u300d\u3059\u308b\u3002<br \/>\r\n\u2462\uff0eHTML\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u306f\u3001\u300cGoogle Chart\u300d\u3092\u4f7f\u3063\u3066\u30d6\u30e9\u30a6\u30b6\u306b\u30b0\u30e9\u30d5\u3092\u8868\u793a\u3059\u308b\u3002<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u30d7\u30ed\u30b0\u30e9\u30e0\u69cb\u6210\u3002<br \/>\r\n<a href=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0011.png\" data-rel=\"lightbox-gallery-fHJ93wMo\" data-rl_title=\"flask-chart_0011\" data-rl_caption=\"\" title=\"flask-chart_0011\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8094 size-full\" src=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0011.png\" alt=\"Raspberry Pi \u306e\u30bb\u30f3\u30b5\u30fc\u3067\u6e2c\u5b9a\u3057\u305f\u6e29\u5ea6\u3092 Python \u3067 \u30b0\u30e9\u30d5\u5316\" width=\"800\" height=\"340\" \/><\/a><\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3068\u30d5\u30a1\u30a4\u30eb\u69cb\u6210\u3002<br \/>\r\n\/ondo-fdb\u3000\u3000\u3000\u3000\u3000\u3000 \u3000\uff08\u30db\u30fc\u30e0\u76f4\u4e0b\u306b\u4f5c\u6210\uff09<br \/>\r\n\u251c\u2500\u2500 temperature.py \u3000\u3000\uff08\u6e29\u5ea6\u306e\u6e2c\u5b9a\u3068\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u66f8\u8fbc\u307f\uff09<br \/>\r\n\u251c\u2500\u2500 app_05.py \u3000\u3000\u3000\u3000\uff08\u30c7\u30fc\u30bf\u306e\u8aad\u8fbc\u3068 html \u3078\u306e render\uff09<br \/>\r\n\u2514\u2500\u2500 templates<br \/>\r\n\u3000\u3000\u2514\u2500\u2500 template.html\u3000\uff08Google Chart\u3092\u4f7f\u3063\u3066\u30b0\u30e9\u30d5\u3092\u8868\u793a\uff09<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u53c2\u8003\uff1a<\/div>\r\n<div>\n <div class=\"blog-card\"><a href=\"https:\/\/arakoki70.com\/?p=8084\">\n <div class=\"blog-card-thumbnail\"><img src='https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask_0621-100x100.png' alt='Raspberry Pi \u6e29\u5ea6\u3092\u6e2c\u5b9a\u3057 Flask \u3067\u30d6\u30e9\u30a6\u30b6\u30fc\u306b\u8868\u793a\u3059\u308b' width=90 height=90 \/><\/div>\n <div class=\"blog-card-content\">\n <div class=\"blog-card-title\">Raspberry Pi \u6e29\u5ea6\u3092\u6e2c\u5b9a\u3057 Flask \u3067\u30d6\u30e9\u30a6\u30b6\u30fc\u306b\u8868\u793a\u3059\u308b <\/div>\n <div class=\"blog-card-excerpt\">Raspberry Pi \u4f5c\u54c1\u96c6\r\nPython Flask\r\n\u6e29\u5ea6\u306e\u6e2c\u5b9a\u5024\u3092 Web\u3067\u53c2\u7167\u3059\u308b\r\n\u00a0\r\nRaspberry Pi \u306b\u63a5\u7d9a\u3057\u305f\u6e29\u5ea6\u30bb\u30f3\u30b5\u30fc\u3067\u5ba4\u6e29\u3092\u6e2c\u5b9a\u3057\u3001\u305d\u306e\u6e29\u5ea6\u3092 Python Fl<\/div>\n <\/a>\n <div class=\"blog-card-date\">2024-01-13<\/div>\n <div class=\"blog-card-mdate\">2024-01-14<\/div>\n <\/div>\n <div class=\"clear\"><\/div>\n <div style=\"clear:both;\"> <\/div>\n <\/div><\/div>\r\n<div>\u00a0<\/div>\r\n<div id=\"title2\">\u00a0<\/div>\r\n<div>\u00a0<\/div>\r\n<div style=\"border: 1px solid #800000; padding: 5px 10px 3px 10px; background: #c5ff88;\"><strong>2. \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4f5c\u6210<\/strong><\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u306f\u300cMySQL\u300d\u306e\u4fee\u6b63\u7248\u3067\u3042\u308b\u300c<strong><span style=\"color: #ff0000;\">MariaDB<\/span><\/strong>\u300d\u3092\u4f7f\u7528\u3057\u305f\u3002<\/div>\r\n<div>\u00a0<\/div>\r\n<div style=\"border: 1px solid #4169e1; padding: 5px 10px 3px 10px; color: #ffffff; background: #191970; border-radius: 5px; position: relative; top: 0px;\">\u2460\uff0eMariaDB \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/div>\r\n<div>\u00a0<\/div>\r\n<div>MariaDB \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3002<\/div>\r\n<div style=\"border: 1px solid #4169e1; padding: 5px 10px 3px 10px; background: #f0f8ff; border-radius: 5px; position: relative; top: 0px;\"><strong>sudo apt update<br \/>\r\nsudo apt install mariadb-server -y<\/strong><\/div>\r\n<div>\u00a0<\/div>\r\n<div>MariaDB \u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u78ba\u8a8d\u3059\u308b\u3002<\/div>\r\n<div style=\"border: 1px solid #4169e1; padding: 5px 10px 3px 10px; background: #f0f8ff; border-radius: 5px; position: relative; top: 0px;\"><strong>mariadbd --version<\/strong><\/div>\r\n<div>\u00a0<\/div>\r\n<div>MariaDB \u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u306a\u3051\u308c\u3070\u3001\u300c-bash: mariadbd: \u30b3\u30de\u30f3\u30c9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u300d\u3068\u8868\u793a\u3055\u308c\u308b\u3002<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8a2d\u5b9a\u3092\u884c\u3046\u3002<\/div>\r\n<div style=\"border: 1px solid #4169e1; padding: 5px 10px 3px 10px; background: #f0f8ff; border-radius: 5px; position: relative; top: 0px;\"><strong>sudo mysql_secure_installation<\/strong><\/div>\r\n<div>\u00a0<\/div>\r\n<p>\u30fbEnter current password for root (enter for none):<br \/>\r\n<span style=\"font-size: 10pt; color: #0000ff;\">\u30ab\u30ec\u30f3\u30c8\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u7a7a\u306a\u306e\u3067\u3001\u4f55\u3082\u62bc\u3055\u305a\u306b\u30a8\u30f3\u30bf\u30fc\u30ad\u30fc\u3092\u62bc\u3059\u3002<\/span><\/p>\r\n<p>\u30fbSwitch to unix_socket authentication [Y\/n]<br \/>\r\n<span style=\"font-size: 10pt; color: #0000ff;\">\u300cunix_socket authentication\u300d\u306f\u7121\u52b9\u5316\u3057\u305f\u3044\u306e\u3067\u3001\u300cn\u300d\u3092\u5165\u529b\u3057\u3001\u30a8\u30f3\u30bf\u30fc\u30ad\u30fc\u3092\u62bc\u3059\u3002<\/span><\/p>\r\n<p>\u30fbYou already have your root account protected, so you can safely answer 'n'.<br \/>\r\n<span style=\"font-size: 10pt; color: #0000ff;\">root\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5909\u66f4\u3057\u305f\u3044\u306e\u3067\u3001\u300cY\u300d\u3092\u5165\u529b\u3057\u3001\u30a8\u30f3\u30bf\u30fc\u30ad\u30fc\u3092\u62bc\u3059\u3002<\/span><br \/>\r\n<span style=\"font-size: 10pt; color: #0000ff;\">\u8a2d\u5b9a\u3057\u305f\u3044root\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3057\u3001\u30a8\u30f3\u30bf\u30fc\u30ad\u30fc\u3092\u62bc\u3059\u3002<br \/>\r\n\u5165\u529b\u78ba\u8a8d\u3067\u3001\u8a2d\u5b9a\u3057\u305f\u3044root\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u518d\u5ea6\u5165\u529b\u3057\u3001\u30a8\u30f3\u30bf\u30fc\u30ad\u30fc\u3092\u62bc\u3059\u3002<\/span><\/p>\r\n<p>\u30fbRemove anonymous users? [Y\/n]<br \/>\r\n<span style=\"font-size: 10pt; color: #0000ff;\">\u30a2\u30ce\u30cb\u30de\u30b9\u30e6\u30fc\u30b6\u30fc\u3092\u524a\u9664\u3057\u305f\u3044\u306e\u3067\u3001\u300cY\u300d\u3092\u5165\u529b\u3057\u3001\u30a8\u30f3\u30bf\u30fc\u30ad\u30fc\u3092\u62bc\u3059\u3002<\/span><\/p>\r\n<p>\u30fbDisallow root login remotely? [Y\/n]<br \/>\r\n<span style=\"color: #0000ff; font-size: 10pt;\">\u30eb\u30fc\u30c8\u306e\u30ea\u30e2\u30fc\u30c8\u30ed\u30b0\u30a4\u30f3\u306f\u8a31\u53ef\u3057\u305f\u304f\u306a\u3044\u306e\u3067\u3001\u300cY\u300d\u3092\u5165\u529b\u3057\u3001\u30a8\u30f3\u30bf\u30fc\u30ad\u30fc\u3092\u62bc\u3059\u3002<\/span><\/p>\r\n<p>\u30fbRemove test database and access to it? [Y\/n]<br \/>\r\n<span style=\"color: #0000ff; font-size: 10pt;\">\u30c6\u30b9\u30c8\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u524a\u9664\u3057\u305f\u3044\u306e\u3067\u3001\u300cY\u300d\u3092\u5165\u529b\u3057\u3001\u30a8\u30f3\u30bf\u30fc\u30ad\u30fc\u3092\u62bc\u3059\u3002<\/span><\/p>\r\n<p>\u30fbReload privilege tables now? [Y\/n]<br \/>\r\n<span style=\"color: #0000ff; font-size: 10pt;\">\u6a29\u9650\u30c6\u30fc\u30d6\u30eb\u3092\u3059\u3050\u306b\u53cd\u6620\u3055\u305b\u305f\u3044\u306e\u3067\u3001\u300cY\u300d\u3092\u5165\u529b\u3057\u3001\u30a8\u30f3\u30bf\u30fc\u30ad\u30fc\u3092\u62bc\u3059\u3002<\/span><\/p>\r\n<div>\u30b5\u30fc\u30d3\u30b9\u306e\u72b6\u614b\u3092\u78ba\u8a8d\u3002<\/div>\r\n<div style=\"border: 1px solid #4169e1; padding: 5px 10px 3px 10px; background: #f0f8ff; border-radius: 5px; position: relative; top: 0px;\"><strong>systemctl status mariadb<\/strong><\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u00a0<\/div>\r\n<div style=\"border: 1px solid #4169e1; padding: 5px 10px 3px 10px; color: #ffffff; background: #191970; border-radius: 5px; position: relative; top: 0px;\">\u2461\uff0e\u65b0\u3057\u3044\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4f5c\u6210<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u30eb\u30fc\u30c8\u6a29\u9650\u3067\u5b9f\u884c\u3002<\/div>\r\n<div style=\"border: 1px solid #4169e1; padding: 5px 10px 3px 10px; background: #f0f8ff; border-radius: 5px; position: relative; top: 0px;\"><strong>mysql -u root -p<\/strong><\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4f5c\u6210\u3002\uff08\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d\uff1aondodb\uff09<br \/>\r\n<span style=\"color: #0000ff;\">MariaDB [(none)]&gt;<\/span> create database <strong><span style=\"color: #0000ff;\">ondodb<\/span><\/strong>;<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u4f5c\u6210\u3057\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u3001\u30e6\u30fc\u30b6\u30fc\u540d\uff08 flaskpy\uff09\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\uff08xxxxxxx\uff09\u3092\u8a2d\u5b9a\u3002<br \/>\r\n<span style=\"color: #0000ff;\">MariaDB [mysql]&gt;<\/span> grant all on <strong><span style=\"color: #0000ff;\">ondodb<\/span><\/strong>.* to <strong><span style=\"color: #ff0000;\">flaskpy<\/span><\/strong>@localhost identified by'<strong><span style=\"color: #ff00ff;\">xxxxxxx<\/span><\/strong>';<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u4f5c\u6210\u3055\u308c\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u78ba\u8a8d\u3002<br \/>\r\n<span style=\"color: #0000ff;\">MariaDB [mysql]&gt;<\/span> show databases;<\/div>\r\n<div>\u00a0<\/div>\r\n<div><a href=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0211.png\" data-rel=\"lightbox-gallery-fHJ93wMo\" data-rl_title=\"flask-chart_0211\" data-rl_caption=\"\" title=\"flask-chart_0211\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8096\" src=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0211.png\" alt=\"\u4f5c\u6210\u3055\u308c\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u78ba\u8a8d\" width=\"400\" height=\"292\" \/><\/a><\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u9078\u629e\u3002<br \/>\r\n<span style=\"color: #0000ff;\">MariaDB [(none)]&gt;<\/span> use <strong><span style=\"color: #0000ff;\">ondodb<\/span><\/strong>;<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u30c6\u30fc\u30d6\u30eb\u306e\u4f5c\u6210\u3002\uff08\u30c6\u30fc\u30d6\u30eb\u540d\uff1ameas_value\uff09<br \/>\r\n<span style=\"color: #0000ff;\">MariaDB [ondodb]&gt;<\/span> CREATE TABLE <strong><span style=\"color: #ff0000;\">meas_value<\/span><\/strong> (<br \/>\r\nnitiji DATETIME NOT NULL,<br \/>\r\ntemp1 DECIMAL(10,2) NOT NULL,<br \/>\r\ntemp2 DECIMAL(10,2) NOT NULL,<br \/>\r\ntemp3 DECIMAL(10,2) NOT NULL,<br \/>\r\ntemp4 DECIMAL(10,2) NOT NULL,<br \/>\r\nPRIMARY KEY(nitiji)<br \/>\r\n);<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u300c<strong><span style=\"color: #ff0000;\">nitiji<\/span><\/strong>\u300d\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30ad\u30fc\u9805\u76ee\u306b\u6307\u5b9a\u3002<br \/>\r\n\u203b\uff1aDECIMAL(<strong><span style=\"color: #ff00ff;\">10,2<\/span><\/strong>) \u3092\u6307\u5b9a\u3057\u306a\u3044\u3068\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f DECIMAL(10,0) \u306b\u306a\u308b\u3002<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u30c6\u30fc\u30d6\u30eb\u304c\u4f5c\u6210\u3067\u304d\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3002<br \/>\r\n<span style=\"color: #0000ff;\">MariaDB [ondodb]&gt;<\/span> show tables;<\/div>\r\n<div>\u00a0<\/div>\r\n<div><a href=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0221.png\" data-rel=\"lightbox-gallery-fHJ93wMo\" data-rl_title=\"flask-chart_0221\" data-rl_caption=\"\" title=\"flask-chart_0221\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8097\" src=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0221.png\" alt=\"\u30c6\u30fc\u30d6\u30eb\u304c\u4f5c\u6210\u3067\u304d\u3066\u3044\u308b\u304b\u78ba\u8a8d\" width=\"600\" height=\"252\" \/><\/a><\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u4f5c\u6210\u3057\u305f\u30c6\u30fc\u30d6\u30eb\u306e\u4e2d\u8eab\u3092\u78ba\u8a8d\u3002<br \/>\r\n<span style=\"color: #0000ff;\">MariaDB [ondodb]&gt;<\/span> describe <strong><span style=\"color: #ff0000;\">meas_value<\/span><\/strong>;<\/div>\r\n<div>\u00a0<\/div>\r\n<div><a href=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0231.png\" data-rel=\"lightbox-gallery-fHJ93wMo\" data-rl_title=\"flask-chart_0231\" data-rl_caption=\"\" title=\"flask-chart_0231\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8098\" src=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0231.png\" alt=\"\u4f5c\u6210\u3057\u305f\u30c6\u30fc\u30d6\u30eb\u306e\u4e2d\u8eab\u3092\u78ba\u8a8d\" width=\"600\" height=\"265\" \/><\/a><\/div>\r\n<div>\u00a0<\/div>\r\n<div id=\"title3\">\u00a0<\/div>\r\n<div>\u00a0<\/div>\r\n<div style=\"border: 1px solid #800000; padding: 5px 10px 3px 10px; background: #c5ff88;\"><strong>3. temperature.py\uff1a\u6e29\u5ea6\u6e2c\u5b9a\u3068DB\u66f8\u8fbc\u307f\u30d7\u30ed\u30b0\u30e9\u30e0<\/strong><\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u6e29\u5ea6\u30bb\u30f3\u30b5\u30fc\u3067\u5ba4\u6e29\u3092\u8a08\u6e2c\u3057\u3001\u305d\u306e\u7d50\u679c\u3092\u300cMySQL\u300d\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u8a18\u9332\u3059\u308b\u30d7\u30ed\u30b0\u30e9\u30e0\u3002\uff08\u30bb\u30f3\u30b5\u30fc\uff1aDHT22 \u6e29\u5ea6\u6e7f\u5ea6\u30bb\u30f3\u30b5\u30e2\u30b8\u30e5\u30fc\u30eb x 4\u500b\uff09<\/div>\r\n<pre><code class=\u201dhljs python\"><span class=\"hljs-comment\">#!\/usr\/bin\/python<\/span>\r\n<span class=\"hljs-comment\"># -*- coding: utf-8 -*<\/span>\r\n\r\n<span class=\"hljs-keyword\">from<\/span> time <span class=\"hljs-keyword\">import<\/span> sleep\r\n<span class=\"hljs-keyword\">import<\/span> datetime <span class=\"hljs-comment\">#\u65e5\u4ed8\u30e9\u30a4\u30d6\u30e9\u30ea\u8aad\u307f\u8fbc\u307f<\/span>\r\n<span class=\"hljs-keyword\">import<\/span> Adafruit_DHT <span class=\"hljs-comment\">#\u6e29\u5ea6\u30bb\u30f3\u30b5\u30fc\u30e9\u30a4\u30d6\u30e9\u30ea\u8aad\u307f\u8fbc\u307f<\/span>\r\n<span class=\"hljs-keyword\">import<\/span> MySQLdb <span class=\"hljs-comment\">#DB\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u8aad\u307f\u8fbc\u307f<\/span>\r\n\r\n<span class=\"hljs-comment\"># DHT22\u30bb\u30f3\u30b5\u30fc\u304b\u3089\u6e29\u5ea6\u3068\u6e7f\u5ea6\u3092\u8aad\u307f\u53d6\u308b\u95a2\u6570<\/span>\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">read_dht22<\/span><span class=\"hljs-params\">(pin)<\/span>:<\/span>\r\n    sensor = Adafruit_DHT.DHT22 <span class=\"hljs-comment\"># \u30bb\u30f3\u30b5\u30fc\u306e\u7a2e\u985e<\/span>\r\n    humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)\r\n    <span class=\"hljs-keyword\">return<\/span> humidity, temperature\r\n\r\n<span class=\"hljs-comment\"># GPIO\u30d4\u30f3\u756a\u53f7<\/span>\r\npin1 = <span class=\"hljs-number\">17<\/span> <span class=\"hljs-comment\"># GPIO\u30dd\u30fc\u30c8\u756a\u53f7 \uff1d \u63a5\u7d9a\u3059\u308b\u30d4\u30f3\u756a\u53f7 11<\/span>\r\npin2 = <span class=\"hljs-number\">27<\/span> <span class=\"hljs-comment\"># GPIO\u30dd\u30fc\u30c8\u756a\u53f7 \uff1d \u63a5\u7d9a\u3059\u308b\u30d4\u30f3\u756a\u53f7 13<\/span>\r\npin3 = <span class=\"hljs-number\">4<\/span> <span class=\"hljs-comment\"># GPIO\u30dd\u30fc\u30c8\u756a\u53f7 \uff1d \u63a5\u7d9a\u3059\u308b\u30d4\u30f3\u756a\u53f7 7<\/span>\r\npin4 = <span class=\"hljs-number\">26<\/span> <span class=\"hljs-comment\"># GPIO\u30dd\u30fc\u30c8\u756a\u53f7 \uff1d \u63a5\u7d9a\u3059\u308b\u30d4\u30f3\u756a\u53f7 37<\/span>\r\n\r\n<span class=\"hljs-comment\">##---------------------------------------------------------------------------------------<\/span>\r\n\r\n<span class=\"hljs-comment\">#\u25cf\u65e5\u4ed8\u6642\u523b\u60c5\u5831\u306e\u53d6\u5f97--------------------------------------------------------------------<\/span>\r\n\r\ndtime = datetime.datetime.now() <span class=\"hljs-comment\">#\u65e5\u4ed8\u3001\u65e5\u6642\u306e\u53d6\u5f97<\/span>\r\ndate = dtime.strftime(<span class=\"hljs-string\">'%Y-%m-%d'<\/span>) <span class=\"hljs-comment\">#\u65e5\u4ed8\u306e\u6574\u5f62 yyyy-mm-dd<\/span>\r\njikok = dtime.strftime(<span class=\"hljs-string\">'%H:%M'<\/span>) <span class=\"hljs-comment\">#\u6642\u9593\u306e\u6574\u5f62 hh:mm<\/span>\r\ndayjikoku = dtime.strftime(<span class=\"hljs-string\">'%Y-%m-%d %H:%M:%S'<\/span>)\r\n\r\n<span class=\"hljs-comment\">#\u25cf2\u3064\u306e\u30bb\u30f3\u30b5\u30fc\u304b\u3089\u6e29\u5ea6\u3068\u6e7f\u5ea6\u3092\u8aad\u307f\u53d6\u308b--------------------------------------------------------------<\/span>\r\n\r\nhumidity1, temperature1 = read_dht22(pin1)\r\nhumidity2, temperature2 = read_dht22(pin2)\r\nhumidity3, temperature3 = read_dht22(pin3) <span class=\"hljs-comment\">#\u30bb\u30f3\u30b5\u30fc No-3 \u5916\u5074<\/span>\r\nhumidity4, temperature4 = read_dht22(pin4) <span class=\"hljs-comment\">#\u30bb\u30f3\u30b5\u30fc No-4 \u5ba4\u5185<\/span>\r\n\r\n<span class=\"hljs-comment\">#humidity\u306b\u6e7f\u5ea6\u3092\u4ee3\u5165<\/span>\r\nhumidity1 = <span class=\"hljs-string\">\"{:.2f}\"<\/span> . format(humidity1) <span class=\"hljs-comment\">#\u6e7f\u5ea6\uff08\u5c0f\u6570\u70b9\u7b2c2\u4f4d\u307e\u3067\uff09<\/span>\r\nhumidity2 = <span class=\"hljs-string\">\"{:.2f}\"<\/span> . format(humidity2) <span class=\"hljs-comment\">#\u6e7f\u5ea6\uff08\u5c0f\u6570\u70b9\u7b2c2\u4f4d\u307e\u3067\uff09<\/span>\r\nhumidity3 = <span class=\"hljs-string\">\"{:.2f}\"<\/span> . format(humidity3) <span class=\"hljs-comment\">#\u6e7f\u5ea6\uff08\u5c0f\u6570\u70b9\u7b2c2\u4f4d\u307e\u3067\uff09<\/span>\r\nhumidity4 = <span class=\"hljs-string\">\"{:.2f}\"<\/span> . format(humidity4) <span class=\"hljs-comment\">#\u6e7f\u5ea6\uff08\u5c0f\u6570\u70b9\u7b2c2\u4f4d\u307e\u3067\uff09<\/span>\r\n\r\n<span class=\"hljs-comment\">#temperature\u306b\u6c17\u6e29\u3092\u4ee3\u5165<\/span>\r\ntemperature1 = <span class=\"hljs-string\">\"{:.2f}\"<\/span> . format(temperature1) <span class=\"hljs-comment\">#\u6c17\u6e29\uff08\u5c0f\u6570\u70b9\u7b2c2\u4f4d\u307e\u3067\uff09<\/span>\r\ntemperature2 = <span class=\"hljs-string\">\"{:.2f}\"<\/span> . format(temperature2) <span class=\"hljs-comment\">#\u6c17\u6e29\uff08\u5c0f\u6570\u70b9\u7b2c2\u4f4d\u307e\u3067\uff09<\/span>\r\ntemperature3 = <span class=\"hljs-string\">\"{:.2f}\"<\/span> . format(temperature3) <span class=\"hljs-comment\">#\u6c17\u6e29\uff08\u5c0f\u6570\u70b9\u7b2c2\u4f4d\u307e\u3067\uff09<\/span>\r\ntemperature4 = <span class=\"hljs-string\">\"{:.2f}\"<\/span> . format(temperature4) <span class=\"hljs-comment\">#\u6c17\u6e29\uff08\u5c0f\u6570\u70b9\u7b2c2\u4f4d\u307e\u3067\uff09<\/span>\r\n\r\n<span class=\"hljs-comment\">#\u25cfDB\u306b\u66f8\u304d\u8fbc\u3080-------------------------------------------------------------------------<\/span>\r\n<span class=\"hljs-comment\"># MySQL\u63a5\u7d9a<\/span>\r\nconnector = MySQLdb.connect(\r\n\thost = <span class=\"hljs-string\">\"localhost\"<\/span>,\r\n\tdb = <span class=\"hljs-string\">\"ondodb\"<\/span>,\r\n\tuser = <span class=\"hljs-string\">\"flaskpy\"<\/span>,\r\n\tpasswd = <span class=\"hljs-string\">\"dht22x4\"<\/span>,\r\n<span class=\"hljs-comment\"># \u30c6\u30fc\u30d6\u30eb\u5185\u90e8\u3067\u65e5\u672c\u8a9e\u3092\u6271\u3046\u305f\u3081\u306b\u8ffd\u52a0<\/span>\r\n\tcharset = <span class=\"hljs-string\">\"utf8\"<\/span>\r\n)\r\n\r\n<span class=\"hljs-comment\"># \u30ab\u30fc\u30bd\u30eb\u53d6\u5f97<\/span>\r\ncursor = connector.cursor()\r\n\r\n<span class=\"hljs-comment\"># SQL\u30af\u30a8\u30ea\u5b9f\u884c\uff08\u30c7\u30fc\u30bf\u8ffd\u52a0\uff09<\/span>\r\nsql = <span class=\"hljs-string\">\"insert into meas_value (nitiji, temp1, temp2, temp3, temp4) VALUES (%s, %s, %s, %s, %s)\"<\/span>\r\nval = (dayjikoku, temperature4, temperature1,temperature2,temperature3)\r\ncursor.execute(sql, val)\r\n\r\nconnector.commit()\r\n\r\n<span class=\"hljs-comment\"># \u30ab\u30fc\u30bd\u30eb\u7d42\u4e86<\/span>\r\ncursor.close()\r\n<span class=\"hljs-comment\"># MySQL\u5207\u65ad<\/span>\r\nconnector.close()\r\n\r\n<span class=\"hljs-comment\">#\u25cfDB\u66f8\u8fbc\u307f\u5185\u5bb9\u306e\u8868\u793a--------------------------------------------------------------------------<\/span>\r\n\r\n<span class=\"hljs-keyword\">print<\/span> (\r\n\tdayjikoku,\r\n\ttemperature4,\r\n\ttemperature1,\r\n\ttemperature2,\r\n\ttemperature3\r\n)\r\n\r\n<span class=\"hljs-comment\">##---------------------------------------------------------------------------------------<\/span><\/code><\/pre>\r\n<div>\u00a0<\/div>\r\n<div>\u3053\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u306e\u30dd\u30a4\u30f3\u30c8\u3002<\/div>\r\n<pre><code class=\u201dhljs python\">sql = <span class=\"hljs-string\">\"insert into meas_value (nitiji, temp1, temp2, temp3, temp4) VALUES (%s, %s, %s, %s, %s)\"<\/span> \r\nval = (dayjikoku, temperature4, temperature1,temperature2,temperature3) \r\ncursor.execute(sql, val)<\/code><\/pre>\r\n<div>\u00a0<\/div>\r\n<div>\u2460\uff0esql\u3067\u30c6\u30fc\u30d6\u30eb\u540d\u3010meas_value\u3011\u3068\u30ab\u30e9\u30e0\u540d\uff08nitiji, temp1,\u30fb\u30fb\u30fb\uff09\u3092\u6307\u5b9a\u3057\u3066\u3001VALUES \u3067\u30ab\u30e9\u30e0\u306e\u30c7\u30fc\u30bf\u578b\u3092\u6307\u5b9a\u3002 <br \/>\r\n\u2461\uff0eval\u3067\u66f8\u304d\u8fbc\u3080\u30c7\u30fc\u30bf\uff08dayjikoku, temperature4,\u30fb\u30fb\u30fb\uff09\u3092\u6307\u5b9a\u3002<\/div>\r\n<div style=\"border: 1px solid #800000; padding: 10px; background: #FFF0F5;\">\u2460\uff0e'sql' \u30b3\u30fc\u30c9\u306e\u4e2d\u3067\u3001\u300c VALUES\u300d\u306b\u5024\u306e\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u3068\u3057\u3066 '<strong><span style=\"color: #ff0000;\">%s'<\/span><\/strong> \u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u3002<br \/>\r\n\u3000Python \u306e MySQL Connector \u3067\u306f (\u6587\u5b57\u5217\u3001\u6574\u6570\u3001\u65e5\u4ed8\u306a\u3069\u306e) \u3059\u3079\u3066\u306e\u30c7\u30fc\u30bf\u578b\u306b '<strong><span style=\"color: #ff0000;\">%s'<\/span><\/strong> \u3092\u4f7f\u7528\u3059\u308b\u3002<br \/>\r\n\u2461\uff0e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u66f8\u304d\u8fbc\u3080\u5024\u306f\u3001\u3010val\u3011\u3067\u6307\u5b9a\u3057\u305f\u3002<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u5b9a\u671f\u7684\u306b\u8a08\u6e2c\u3059\u308b\u305f\u3081\u306b\u300ccron\u300d\u3067\u3001\u6e29\u5ea6\u306e\u8a08\u6e2c\u3068DB\u3078\u306e\u66f8\u8fbc\u307f\u3092\u300c10\u5206\u9593\u9694\u300d\u3067\u5b9f\u884c\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3002<\/div>\r\n<div style=\"border: 1px solid #4169e1; padding: 5px 10px 3px 10px; background: #f0f8ff; border-radius: 5px; position: relative; top: 0px;\"><strong>crontab -e<br \/>\r\n*\/10 * * * * python3 \/home\/yaopi\/ondo-fdb\/temperature.py<\/strong><\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u2605Cron\u306e\u8d77\u52d5\u3001\u518d\u8d77\u52d5\u3001\u505c\u6b62\u3001\u30b9\u30c6\u30fc\u30bf\u30b9\u78ba\u8a8d\u30b3\u30de\u30f3\u30c9\u3002<br \/>\r\nCron\u306e\u8d77\u52d5<br \/>\r\nsudo \/etc\/init.d\/cron start<br \/>\r\nCron\u306e\u518d\u8d77\u52d5<br \/>\r\nsudo \/etc\/init.d\/cron restart<br \/>\r\nCron\u306e\u505c\u6b62<br \/>\r\nsudo \/etc\/init.d\/cron stop<br \/>\r\nCron\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u78ba\u8a8d<br \/>\r\nsudo \/etc\/init.d\/cron status<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u30c7\u30fc\u30bf\u306e\u633f\u5165\u3092\u78ba\u8a8d\u3059\u308b\u3002<br \/>\r\n<span style=\"color: #0000ff;\">MariaDB [mydb]&gt;<\/span> SELECT * FROM <strong><span style=\"color: #ff0000;\">meas_value<\/span><\/strong>;<\/div>\r\n<div>\u00a0<\/div>\r\n<div><a href=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0311.png\" data-rel=\"lightbox-gallery-fHJ93wMo\" data-rl_title=\"flask-chart_0311\" data-rl_caption=\"\" title=\"flask-chart_0311\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8099\" src=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0311.png\" alt=\"\u30c7\u30fc\u30bf\u306e\u633f\u5165\u3092\u78ba\u8a8d\u3059\u308b\" width=\"600\" height=\"338\" srcset=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0311.png 600w, https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0311-100x57.png 100w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/div>\r\n<div>\u00a0<\/div>\r\n<div id=\"title4\">\u00a0<\/div>\r\n<div>\u00a0<\/div>\r\n<div style=\"border: 1px solid #800000; padding: 5px 10px 3px 10px; background: #c5ff88;\"><strong>4. app_05.py\uff1aFlask\u306b\u3088\u308bWeb\u30a2\u30d7\u30ea<\/strong><\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u300cPython Flask\u300d\u306b\u3088\u308bWeb\u30b5\u30fc\u30d0\u30fc\u3067\u3001\u300cMySQL\u300d\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u6c17\u6e29\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3001HTML\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u300crender\u300d\u3059\u308b\u30d7\u30ed\u30b0\u30e9\u30e0\u3002<\/div>\r\n<pre><code class=\u201dhljs python\"><span class=\"hljs-comment\"># app.py<\/span>\r\n<span class=\"hljs-comment\"># -*- coding: utf-8 -*-<\/span>\r\n\r\n<span class=\"hljs-keyword\">from<\/span> flask <span class=\"hljs-keyword\">import<\/span> Flask, render_template\r\n<span class=\"hljs-keyword\">import<\/span> MySQLdb\r\n<span class=\"hljs-keyword\">import<\/span> datetime\r\n\r\n<span class=\"hljs-comment\"># Flask\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u4f5c\u6210<\/span>\r\napp = Flask(__name__)\r\n\r\n<span class=\"hljs-meta\">@app.route('\/')<\/span>\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">index<\/span><span class=\"hljs-params\">()<\/span>:<\/span>\r\n\r\n\t<span class=\"hljs-comment\"># 2\u6b21\u5143\u30ea\u30b9\u30c8\u3092\u5b9a\u7fa9<\/span>\r\n\ttemp_list = []\r\n\r\n\t<span class=\"hljs-comment\"># MySQL\u306b\u63a5\u7d9a<\/span>\r\n\tconnector = MySQLdb.connect(\r\n\t\thost = <span class=\"hljs-string\">\"localhost\"<\/span>,\r\n\t\tdb = <span class=\"hljs-string\">\"ondodb\"<\/span>,\r\n\t\tuser = <span class=\"hljs-string\">\"flaskpy\"<\/span>,\r\n\t\tpasswd = <span class=\"hljs-string\">\"dht22x4\"<\/span>,\r\n\t<span class=\"hljs-comment\"># \u30c6\u30fc\u30d6\u30eb\u5185\u90e8\u3067\u65e5\u672c\u8a9e\u3092\u6271\u3046\u305f\u3081\u306b\u8ffd\u52a0<\/span>\r\n\t\tcharset = <span class=\"hljs-string\">\"utf8\"<\/span>\r\n\t)\r\n\r\n\t<span class=\"hljs-comment\"># \u30ab\u30fc\u30bd\u30eb\u53d6\u5f97<\/span>\r\n\tcursor = connector.cursor()\r\n\r\n\t<span class=\"hljs-comment\"># SQL\u30af\u30a8\u30ea\u5b9f\u884c\uff08\u30c7\u30fc\u30bf\u306e\u8aad\u8fbc\uff09<\/span>\r\n\tsql = <span class=\"hljs-string\">\"select * from meas_value where DATE_ADD(nitiji, INTERVAL 24 HOUR) &gt; NOW()\"<\/span>\r\n\tcursor.execute(sql)\r\n\r\n\t<span class=\"hljs-comment\"># \u7d50\u679c\u3092\u53d6\u5f97\u3057\u30012\u6b21\u5143\u30ea\u30b9\u30c8\u306e\u5f62\u5f0f\u306b\u5909\u63db<\/span>\r\n\trecords = cursor.fetchall()\r\n\t<span class=\"hljs-keyword\">for<\/span> record <span class=\"hljs-keyword\">in<\/span> records:\r\n\t\ttemp_list.append(\r\n\t\t{<span class=\"hljs-string\">'nitiji'<\/span>:record[<span class=\"hljs-number\">0<\/span>].strftime(<span class=\"hljs-string\">\"%Y-%m-%d %H:%M\"<\/span>),\r\n\t\t <span class=\"hljs-string\">'temp1'<\/span>:record[<span class=\"hljs-number\">1<\/span>],\r\n\t\t <span class=\"hljs-string\">'temp2'<\/span>:record[<span class=\"hljs-number\">2<\/span>],\r\n\t\t <span class=\"hljs-string\">'temp3'<\/span>:record[<span class=\"hljs-number\">3<\/span>],\r\n\t\t <span class=\"hljs-string\">'temp4'<\/span>:record[<span class=\"hljs-number\">4<\/span>]}\r\n\t\t)\r\n\r\n\t<span class=\"hljs-comment\"># \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3068\u306e\u63a5\u7d9a\u3092\u9589\u3058\u308b<\/span>\r\n\tcursor.close()\r\n\tconnector.close()\r\n\r\n\t<span class=\"hljs-comment\">#\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3078\u633f\u5165\u3059\u308b\u30c7\u30fc\u30bf\u306e\u4f5c\u6210<\/span>\r\n\ttitle = <span class=\"hljs-string\">\"Raspberry Pi \u3067\u6e2c\u5b9a\u3057\u305f\u6e29\u5ea6\u306e\u63a8\u79fb\uff0810min x 24H\uff09\u30b0\u30e9\u30d5\"<\/span>\r\n\r\n\t<span class=\"hljs-keyword\">return<\/span> render_template(<span class=\"hljs-string\">'template.html'<\/span>, title=title, temp_list=temp_list)\r\n\r\n<span class=\"hljs-keyword\">if<\/span> __name__ == <span class=\"hljs-string\">'__main__'<\/span>:\r\n    app.run(<span class=\"hljs-string\">\"0.0.0.0\"<\/span>,debug=<span class=\"hljs-literal\">True<\/span>)<\/code><\/pre>\r\n<div>\u00a0<\/div>\r\n<div>\u30b0\u30e9\u30d5\u306b\u8868\u793a\u3059\u308b\u6e29\u5ea6\u30c7\u30fc\u30bf\u306e\u671f\u9593\u3092\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30ad\u30fc\u3067\u3042\u308b\u300cnitiji\u300d\u3067\u3001\u300c\u73fe\u5728\u6642\u523b\u3088\u308a\u301024\u6642\u9593\u3011\u4ee5\u5185\u300d\u306b\u9650\u5b9a\u3057\u305f\u3002<\/div>\r\n<pre><code class=\u201dhljs python\">sql = <span class=\"hljs-string\">\"select * from meas_value where DATE_ADD(nitiji, INTERVAL 24 HOUR) &gt; NOW()\"<\/span> <\/code><\/pre>\r\n<div>SELECT\u69cb\u6587\u3067\u306eWHERE\u53e5\u3002<br \/>\r\n\u300cnitiji\u300d\u306b\u5bfe\u3057\u306624\u6642\u9593\u3092\u52a0\u7b97\u3057\u3001\u73fe\u5728\u6642\u523b\u3088\u308a\u5927\u304d\u3044\u5024\u306e\u30ec\u30b3\u30fc\u30c9\u3092\u62bd\u51fa\u3002<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u8aad\u307f\u8fbc\u3093\u3060\u30ec\u30b3\u30fc\u30c9\u306e\u5185\u5bb9\u3092\u3001\u30ab\u30e9\u30e0\u540d\u6bce\u306b2\u6b21\u5143\u306e\u3010temp_list\u3011\u306b\u683c\u7d0d\u3002<\/div>\r\n<pre><code class=\u201dhljs python\">\t<span class=\"hljs-keyword\">for<\/span> record <span class=\"hljs-keyword\">in<\/span> records:\r\n\t\ttemp_list.append(\r\n\t\t{<span class=\"hljs-string\">'nitiji'<\/span>:record[<span class=\"hljs-number\">0<\/span>].strftime(<span class=\"hljs-string\">\"%Y-%m-%d %H:%M\"<\/span>),\r\n\t\t <span class=\"hljs-string\">'temp1'<\/span>:record[<span class=\"hljs-number\">1<\/span>],\r\n\t\t <span class=\"hljs-string\">'temp2'<\/span>:record[<span class=\"hljs-number\">2<\/span>],\r\n\t\t <span class=\"hljs-string\">'temp3'<\/span>:record[<span class=\"hljs-number\">3<\/span>],\r\n\t\t <span class=\"hljs-string\">'temp4'<\/span>:record[<span class=\"hljs-number\">4<\/span>]}\r\n\t\t)<\/code><\/pre>\r\n<div>\u00a0<\/div>\r\n<div>HTML\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3078\u306e\u300crender\u300d\u306f\u3001\u3010title\u3011\u3068\u30ec\u30b3\u30fc\u30c9\u306e2\u6b21\u5143\u30ea\u30b9\u30c8\u304c\u5165\u3063\u305f\u3010temp_list\u3011\u3002<\/div>\r\n<pre><code class=\u201dhljs python\"><span class=\"hljs-keyword\">return<\/span> render_template(<span class=\"hljs-string\">'template.html'<\/span>, title=title, temp_list=temp_list)<\/code><\/pre>\r\n<div>\u00a0<\/div>\r\n<div id=\"title5\">\u00a0<\/div>\r\n<div>\u00a0<\/div>\r\n<div style=\"border: 1px solid #800000; padding: 5px 10px 3px 10px; background: #c5ff88;\"><strong>5. template.html\uff1a\u6e29\u5ea6\u3092\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308bHTML<\/strong><\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u300cGoogle Chart\u300d\u3092\u4f7f\u3063\u3066\u3001\u6e29\u5ea6\u3092\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308bHTML\u3002<\/div>\r\n<pre><code class=\u201dhljs html\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">html<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">head<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">title<\/span>&gt;<\/span>Temperature Chart<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">title<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">meta<\/span> <span class=\"hljs-attr\">http-equiv<\/span>=<span class=\"hljs-string\">\"content-type\"<\/span> <span class=\"hljs-attr\">content<\/span>=<span class=\"hljs-string\">\"text\/html; charset=utf-8\"<\/span> \/&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">script<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"text\/javascript\"<\/span> <span class=\"hljs-attr\">src<\/span>=<span class=\"hljs-string\">\"https:\/\/www.google.com\/jsapi\"<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">script<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">script<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"text\/javascript\"<\/span>&gt;<\/span><span class=\"javascript\">\r\n      google.load(<span class=\"hljs-string\">\"visualization\"<\/span>, <span class=\"hljs-string\">\"1\"<\/span>, {<span class=\"hljs-attr\">packages<\/span>:[<span class=\"hljs-string\">\"corechart\"<\/span>]});\r\n      google.setOnLoadCallback(drawChart);\r\n      <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">drawChart<\/span>(<span class=\"hljs-params\"><\/span>) <\/span>{\r\n        <span class=\"hljs-keyword\">var<\/span> data = google.visualization.arrayToDataTable([\r\n          [<span class=\"hljs-string\">'Date'<\/span>, <span class=\"hljs-string\">'\u5ba4\u5185'<\/span>, <span class=\"hljs-string\">'\u30ab\u30fc\u30c6\u30f3'<\/span>, <span class=\"hljs-string\">'\u5185\u7a93'<\/span>, <span class=\"hljs-string\">'\u7a93\u969b'<\/span>],\r\n        {% <span class=\"hljs-keyword\">for<\/span> record <span class=\"hljs-keyword\">in<\/span> temp_list %}\r\n          [<span class=\"hljs-string\">'{{record.nitiji}}'<\/span>,  {{record.temp1}},  {{record.temp2}},  {{record.temp3}},  {{record.temp4}}],\r\n        {% endfor %}\r\n        ]);\r\n        <span class=\"hljs-comment\">\/\/ \u30b0\u30e9\u30d5\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a<\/span>\r\n        <span class=\"hljs-keyword\">var<\/span> options = {\r\n\t\t<span class=\"hljs-attr\">title<\/span>: <span class=\"hljs-string\">'{{title}}'<\/span>,\r\n\t\t\t<span class=\"hljs-attr\">titleTextStyle<\/span>: {\r\n        \t        <span class=\"hljs-attr\">color<\/span>: <span class=\"hljs-string\">'#444'<\/span>,    <span class=\"hljs-comment\">\/\/ \u30bf\u30a4\u30c8\u30eb\u306e\u6587\u5b57\u306e\u8272\u3092\u8a2d\u5b9a<\/span>\r\n                \t<span class=\"hljs-attr\">fontSize<\/span>: <span class=\"hljs-number\">24<\/span>      <span class=\"hljs-comment\">\/\/ \u30bf\u30a4\u30c8\u30eb\u306e\u6587\u5b57\u306e\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a<\/span>\r\n\t\t\t},\r\n\t\t<span class=\"hljs-attr\">fontSize<\/span>: <span class=\"hljs-number\">14<\/span>,     <span class=\"hljs-comment\">\/\/ \u30b0\u30e9\u30d5\u5185\u306e\u6587\u5b57\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a<\/span>\r\n\t\t<span class=\"hljs-attr\">vAxis<\/span>: {\r\n                <span class=\"hljs-attr\">title<\/span>: <span class=\"hljs-string\">'\u6e29\u5ea6'<\/span>,   <span class=\"hljs-comment\">\/\/ \u7e26\u8ef8\u306e\u30bf\u30a4\u30c8\u30eb\u3092\u8a2d\u5b9a<\/span>\r\n                <span class=\"hljs-attr\">maxValue<\/span>: <span class=\"hljs-number\">35<\/span>     <span class=\"hljs-comment\">\/\/ \u7e26\u8ef8\u306e\u6700\u5927\u5024\u309240\u306b\u8a2d\u5b9a<\/span>\r\n                },\r\n\t\t<span class=\"hljs-attr\">colors<\/span>: [<span class=\"hljs-string\">'#FF0000'<\/span>, <span class=\"hljs-string\">'#ffa500'<\/span>, <span class=\"hljs-string\">'#008000'<\/span>, <span class=\"hljs-string\">'#0000FF'<\/span>]\r\n        };\r\n        <span class=\"hljs-keyword\">var<\/span> chart = <span class=\"hljs-keyword\">new<\/span> google.visualization.LineChart(<span class=\"hljs-built_in\">document<\/span>.getElementById(<span class=\"hljs-string\">'chart_div'<\/span>));\r\n        chart.draw(data, options);\r\n      }\r\n    <\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">script<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">head<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">body<\/span>&gt;<\/span>\r\n \r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">style<\/span>=<span class=\"hljs-string\">\"text-align:center;\"<\/span>&gt;<\/span> \r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"chart_div\"<\/span> <span class=\"hljs-attr\">style<\/span>=<span class=\"hljs-string\">\"width: 100%; height: 500px;\"<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">br<\/span> \/&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">hr<\/span> <span class=\"hljs-attr\">style<\/span>=<span class=\"hljs-string\">\"height: 6px; width: 900px; background-color: blue;\"<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">input<\/span> <span class=\"hljs-attr\">style<\/span>=<span class=\"hljs-string\">\"width:100px;height:50px; font-size: 200%;\"<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"button\"<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"\u66f4\u65b0\"<\/span> <span class=\"hljs-attr\">onclick<\/span>=<span class=\"hljs-string\">\"location.reload()\"<\/span>&gt;<\/span>\r\n  <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\r\n\r\n  <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">body<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">html<\/span>&gt;<\/span><\/code><\/pre>\r\n<div>\u00a0<\/div>\r\n<div>\u300cGoogle Chart\u300d\u3067\u8868\u793a\u3059\u308b\u9805\u76ee\u3068\u305d\u306e\u5024\u306e\u8a2d\u5b9a\u3002<\/div>\r\n<pre><code class=\u201dhljs html\">function drawChart() {\r\n        var data = google.visualization.arrayToDataTable([\r\n          ['Date', '\u5ba4\u5185', '\u30ab\u30fc\u30c6\u30f3', '\u5185\u7a93', '\u7a93\u969b'],\r\n        {% for record in temp_list %}\r\n          ['{{record.nitiji}}',  {{record.temp1}},  {{record.temp2}},  {{record.temp3}},  {{record.temp4}}],\r\n        {% endfor %}\r\n        ]);<\/code><\/pre>\r\n<div>\u00a0<\/div>\r\n<div>\u00a0['Date', '\u5ba4\u5185', '\u30ab\u30fc\u30c6\u30f3', '\u5185\u7a93', '\u7a93\u969b'],\uff1a\u30b0\u30e9\u30d5\u306b\u8868\u793a\u3059\u308b\u9805\u76ee\u540d\u3092\u6307\u5b9a\u3002<\/div>\r\n<div>\u00a0<\/div>\r\n<div>['{{record.nitiji}}', {{record.temp1}}, \u30fb\u30fb\u30fb],\uff1a\u8868\u793a\u3059\u308b\u5024\u3092\u8a2d\u5b9a\u3002<br \/>\r\n{{record.<strong><span style=\"color: #ff0000;\">nnnnn<\/span><\/strong>}}\u306f\u3001render\u300d\u3055\u308c\u308b\u3010temp_list\u3011\u306e\u30ab\u30e9\u30e0\u540d\u306b\u5408\u308f\u305b\u308b\u3002<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u30b0\u30e9\u30d5\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u306f\u3001\u300c <strong><span style=\"color: #ff0000;\">var options<\/span><\/strong> = { , , , };\u300d\u306b\u300c,\u300d\u3067\u533a\u5207\u3063\u3066\u8a18\u8ff0\u3059\u308b\u3002<\/div>\r\n<pre><code class=\u201dhljs html\">\/\/ \u30b0\u30e9\u30d5\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\r\n        var options = {\r\n\t\ttitle: '{{title}}',\r\n\t\t\ttitleTextStyle: {\r\n        \t        color: '#444',    \/\/ \u30bf\u30a4\u30c8\u30eb\u306e\u6587\u5b57\u306e\u8272\u3092\u8a2d\u5b9a\r\n                \tfontSize: 24      \/\/ \u30bf\u30a4\u30c8\u30eb\u306e\u6587\u5b57\u306e\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a\r\n\t\t\t},\r\n\t\tfontSize: 14,     \/\/ \u30b0\u30e9\u30d5\u5185\u306e\u6587\u5b57\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a\r\n\t\tvAxis: {\r\n                title: '\u6e29\u5ea6',   \/\/ \u7e26\u8ef8\u306e\u30bf\u30a4\u30c8\u30eb\u3092\u8a2d\u5b9a\r\n                maxValue: 35     \/\/ \u7e26\u8ef8\u306e\u6700\u5927\u5024\u309240\u306b\u8a2d\u5b9a\r\n                },\r\n\t\tcolors: ['#FF0000', '#ffa500', '#008000', '#0000FF']\r\n        };<\/code><\/pre>\r\n<div>\u00a0<\/div>\r\n<div>\u753b\u9762\u306e\u4e0b\u90e8\u306b\u300c\u66f4\u65b0\u300d\u30dc\u30bf\u30f3\u3092\u8a2d\u7f6e\u3057\u305f\u3002<\/div>\r\n<pre><code class=\u201dhljs html\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">input<\/span> <span class=\"hljs-attr\">style<\/span>=<span class=\"hljs-string\">\"width:100px;height:50px; font-size: 200%;\"<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"button\"<\/span> <span class=\"hljs-attr\">value<\/span>=<span class=\"hljs-string\">\"\u66f4\u65b0\"<\/span> <span class=\"hljs-attr\">onclick<\/span>=<span class=\"hljs-string\">\"location.reload()\"<\/span>&gt;<\/span><\/code><\/pre>\r\n<div>\u00a0<\/div>\r\n<div id=\"title6\">\u00a0<\/div>\r\n<div>\u00a0<\/div>\r\n<div style=\"border: 1px solid #800000; padding: 5px 10px 3px 10px; background: #c5ff88;\"><strong>6. \u5b9f\u884c\u7d50\u679c\uff1a\u6e29\u5ea6\u306e\u30b0\u30e9\u30d5\u8868\u793a<\/strong><\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u30e1\u30a4\u30f3\u30eb\u30fc\u30c1\u30f3\u306e\u300cmain.py\u300d\u3092\u5b9f\u884c\u3059\u308b\u3002<\/div>\r\n<div style=\"border: 1px solid #4169e1; padding: 5px 10px 3px 10px; background: #f0f8ff; border-radius: 5px; position: relative; top: 0px;\"><strong>cd ~\/ondo<br \/>\r\npython3 app_05.py<\/strong><\/div>\r\n<div>\u00a0<\/div>\r\n<div>Web \u30b5\u30fc\u30d0\u30fc\u304c\u8d77\u52d5\u3059\u308b\u3068\u3001<br \/>\r\n<strong><span style=\"color: #0000ff;\">* Running on http:\/\/0.0.0.0:5000\/ (Press CTRL+C to quit)<\/span><\/strong><br \/>\r\n\u3068\u3001\u8868\u793a\u3055\u308c\u308b\u3002<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u30d1\u30bd\u30b3\u30f3\u304b\u3089\u3001Raspberry Pi \u306eIP\u30a2\u30c9\u30ec\u30b9\uff08\u56fa\u5b9a\u30a2\u30c9\u30ec\u30b9\u306b\u3057\u3066\u304a\u3051\u3070\u4fbf\u5229\uff09<br \/>\r\n\u300c<span style=\"color: #ff0000;\"><strong>http:\/\/192.168.11.113:5000\/<\/strong><\/span>\u300d\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3002<\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u30d6\u30e9\u30a6\u30b6\u306b\u8868\u793a\u3055\u308c\u305f\u6e29\u5ea6\u306e\u63a8\u79fb\u30b0\u30e9\u30d5\u3002<br \/>\r\n<a href=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0611.png\" data-rel=\"lightbox-gallery-fHJ93wMo\" data-rl_title=\"flask-chart_0611\" data-rl_caption=\"\" title=\"flask-chart_0611\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8095\" src=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0611.png\" alt=\"\u30d6\u30e9\u30a6\u30b6\u306b\u8868\u793a\u3055\u308c\u305f\u6e29\u5ea6\u306e\u63a8\u79fb\u30b0\u30e9\u30d5\" width=\"1142\" height=\"588\" \/><\/a><\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u30bf\u30fc\u30df\u30ca\u30eb\u306a\u3069\u304b\u3089 SSH \u63a5\u7d9a\u3067 Python \u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u5834\u5408\uff0cSSH \u63a5\u7d9a\u3092\u5207\u65ad\u3059\u308b\u3068\u30d7\u30ed\u30b0\u30e9\u30e0\u3082\u6b62\u307e\u3063\u3066\u3057\u307e\u3046\u3002<\/div>\r\n<div>\u00a0<\/div>\r\n<div>SSH \u3067 Flask \u30a2\u30d7\u30ea\u3092\u8d77\u52d5\u3057\u305f\u5f8c\u3001\u30bb\u30c3\u30b7\u30e7\u30f3\u7d42\u4e86\u5f8c\u3082\u8d77\u52d5\u3057\u7d9a\u3051\u308b\u65b9\u6cd5\u3002<\/div>\r\n<div style=\"border: 1px solid #4169e1; padding: 5px 10px 3px 10px; background: #f0f8ff; border-radius: 5px; position: relative; top: 0px;\"><strong>nohup python3 app_05.py &amp;<\/strong><\/div>\r\n<div>\u00a0<\/div>\r\n<div><a href=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0621.png\" data-rel=\"lightbox-gallery-fHJ93wMo\" data-rl_title=\"flask-chart_0621\" data-rl_caption=\"\" title=\"flask-chart_0621\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8100\" src=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0621.png\" alt=\"SSH \u3067 Flask \u30a2\u30d7\u30ea\u3092\u8d77\u52d5\u3057\u305f\u5f8c\u3001\u30bb\u30c3\u30b7\u30e7\u30f3\u7d42\u4e86\u5f8c\u3082\u8d77\u52d5\u3057\u7d9a\u3051\u308b\u65b9\u6cd5\" width=\"600\" height=\"69\" \/><\/a><\/div>\r\n<div>\u00a0<\/div>\r\n<div>nohup\u3092\u3064\u3051\u3066\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u305f\u969b\u3001\u30ab\u30ec\u30f3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b nohup.out \u3068\u3044\u3046\u30d5\u30a1\u30a4\u30eb\u304c\u51fa\u529b\u3055\u308c\u308b\u3002<\/div>\r\n<div>\u00a0<\/div>\r\n<div>nohup.out \u306e\u5185\u5bb9\u3092\u898b\u308b\u3002<\/div>\r\n<div style=\"border: 1px solid #4169e1; padding: 5px 10px 3px 10px; background: #f0f8ff; border-radius: 5px; position: relative; top: 0px;\"><strong>sudo nano ondo-fdb\/nohup.out<\/strong><\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u00a0<\/div>\r\n<div>nohup\u3067\u8d77\u52d5\u3057\u305f\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u306e\u30d7\u30ed\u30bb\u30b9\u3092\u6b62\u3081\u308b\u306b\u306f\u3001<br \/>\r\nps\u30b3\u30de\u30f3\u30c9\u3067\u30d7\u30ed\u30bb\u30b9ID\u3092\u8abf\u3079\u308b\u3002<\/div>\r\n<div style=\"border: 1px solid #4169e1; padding: 5px 10px 3px 10px; background: #f0f8ff; border-radius: 5px; position: relative; top: 0px;\"><strong>ps -x<\/strong><\/div>\r\n<div>\u00a0<\/div>\r\n<div><a href=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0631.png\" data-rel=\"lightbox-gallery-fHJ93wMo\" data-rl_title=\"flask-chart_0631\" data-rl_caption=\"\" title=\"flask-chart_0631\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8101\" src=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0631.png\" alt=\"ps\u30b3\u30de\u30f3\u30c9\u3067\u30d7\u30ed\u30bb\u30b9ID\u3092\u8abf\u3079\u308b\" width=\"400\" height=\"415\" \/><\/a><\/div>\r\n<div>\u00a0<\/div>\r\n<div>kill\u30b3\u30de\u30f3\u30c9\u3092\u7528\u3044\u3066\u8abf\u3079\u305f\u30d7\u30ed\u30bb\u30b9ID\u3092\u4e2d\u65ad\u3002<\/div>\r\n<div style=\"border: 1px solid #4169e1; padding: 5px 10px 3px 10px; background: #f0f8ff; border-radius: 5px; position: relative; top: 0px;\"><strong>kill 16161<\/strong><\/div>\r\n<div>\u00a0<\/div>\r\n<div>\u00a0<\/div>\r\n<div style=\"text-align: right;\">\u4ee5\u4e0a\u3002<br \/>\r\n(2024.01.20)<\/div>\r\n<div style=\"clear: both;\">\u00a0<\/div>\r\n<div>\t<p>&nbsp;<\/p>\n\t<div align=\"center\" style=\"font-size:8pt;\">\u30b9\u30dd\u30f3\u30b5\u30fc \u30ea\u30f3\u30af<br \/>\n<!-- \t<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script> -->\n\t<!-- \u8a18\u4e8b\u30fb\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6-7 -->\n\t<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-client=\"ca-pub-3816629014893825\"\n     data-ad-slot=\"1428770894\"\n     data-ad-format=\"auto\"\n     data-full-width-responsive=\"true\"><\/ins>\n\t<script>\n\t(adsbygoogle = window.adsbygoogle || []).push({});\n\t<\/script>\n\t<amp-ad width=\"100vw\" height=\"320\"\n     type=\"adsense\"\n     data-ad-client=\"ca-pub-3816629014893825\"\n     data-ad-slot=\"1428770894\"\n     data-auto-format=\"rspv\"\n     data-full-width=\"\">\n\t <div overflow=\"\"><\/div>\n\t<\/amp-ad>\n\t<\/div>\n\n\t<p>&nbsp;<\/p>\n\n\t<p align=\"center\">\n\t<amp-social-share type=\"email\"><\/amp-social-share>\n\t&nbsp;<amp-social-share type=\"facebook\" data-param-app_id=\"131027923993169\"><\/amp-social-share>\n\t&nbsp;<amp-social-share type=\"linkedin\"><\/amp-social-share>\n\t&nbsp;<amp-social-share type=\"pinterest\"><\/amp-social-share>\n\t&nbsp;<amp-social-share type=\"tumblr\"><\/amp-social-share>\n\t&nbsp;<amp-social-share type=\"twitter\"><\/amp-social-share>\n\t&nbsp;<amp-social-share type=\"whatsapp\"><\/amp-social-share>\n\t&nbsp;<amp-social-share type=\"line\"><\/amp-social-share>\n\t<\/p>\n\n\t<p>&nbsp;<\/p>\n\t\n\t<!-- \u95a2\u9023\u30fb\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6 kanren-70 -->\n\t<div align=\"center\">\n\t\n\t<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-format=\"autorelaxed\"\n     data-ad-client=\"ca-pub-3816629014893825\"\n     data-ad-slot=\"8839675487\"><\/ins>\n\t<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n\t<\/script>\n\t\n\t<amp-ad width=\"100vw\" height=\"320\"\n\t\ttype=\"adsense\"\n\t\tdata-ad-client=\"ca-pub-3816629014893825\"\n\t\tdata-ad-slot=\"8839675487\"\n\t\tdata-auto-format=\"mcrspv\"\n\t\tdata-full-width=\"\">\n\t\t<div overflow=\"\"><\/div>\n\t<\/amp-ad>\n\t\n\t<\/div>\n\t\n\t<div> <\/div>\n\n\t<p>&nbsp;<\/p>\n<\/div>\r\n<div>\u00a0<\/div>","protected":false},"excerpt":{"rendered":"Raspberry Pi \u4f5c\u54c1\u96c6 Python Flask + MySQL + Google Chart \u6e29\u5ea6\u3092\u8a18\u9332\u3057\u3001Web\u30b5\u30fc\u30d0\u30fc\u3067\u30b0\u30e9\u30d5\u5316\u3059\u308b \u00a0 Raspberry Pi \u306b\u63a5\u7d9a\u3057\u305f\u6e29\u5ea6\u30bb\u30f3\u30b5\u30fc\u3067\u6e29\u5ea6\u3092\u5b9a\u671f\u7684\u306b\u8a08 &hellip; <p class=\"link-more\"><a href=\"https:\/\/arakoki70.com\/?p=8093\" class=\"more-link\"><span class=\"screen-reader-text\">&#8220;Raspberry Pi \u8a08\u6e2c\u3057\u305f\u6e29\u5ea6\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u683c\u7d0d\u3057\u3001Web\u30d6\u30e9\u30a6\u30b6\u306b\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308b&#8221; \u306e<\/span>\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>","protected":false},"author":1,"featured_media":8095,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-8093","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-03sakuhin"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Raspberry Pi \u8a08\u6e2c\u3057\u305f\u6e29\u5ea6\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u683c\u7d0d\u3057\u3001Web\u30d6\u30e9\u30a6\u30b6\u306b\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308b - \u30a2\u30e9\u30b3\u30ad\u304b\u3089\u306e Raspberry Pi \u96fb\u5b50\u5de5\u4f5c<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/arakoki70.com\/?p=8093\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Raspberry Pi \u8a08\u6e2c\u3057\u305f\u6e29\u5ea6\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u683c\u7d0d\u3057\u3001Web\u30d6\u30e9\u30a6\u30b6\u306b\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308b - \u30a2\u30e9\u30b3\u30ad\u304b\u3089\u306e Raspberry Pi \u96fb\u5b50\u5de5\u4f5c\" \/>\n<meta property=\"og:description\" content=\"Raspberry Pi \u4f5c\u54c1\u96c6 Python Flask + MySQL + Google Chart \u6e29\u5ea6\u3092\u8a18\u9332\u3057\u3001Web\u30b5\u30fc\u30d0\u30fc\u3067\u30b0\u30e9\u30d5\u5316\u3059\u308b \u00a0 Raspberry Pi \u306b\u63a5\u7d9a\u3057\u305f\u6e29\u5ea6\u30bb\u30f3\u30b5\u30fc\u3067\u6e29\u5ea6\u3092\u5b9a\u671f\u7684\u306b\u8a08 &hellip; &quot;Raspberry Pi \u8a08\u6e2c\u3057\u305f\u6e29\u5ea6\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u683c\u7d0d\u3057\u3001Web\u30d6\u30e9\u30a6\u30b6\u306b\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308b&quot; \u306e\u7d9a\u304d\u3092\u8aad\u3080\" \/>\n<meta property=\"og:url\" content=\"https:\/\/arakoki70.com\/?p=8093\" \/>\n<meta property=\"og:site_name\" content=\"\u30a2\u30e9\u30b3\u30ad\u304b\u3089\u306e Raspberry Pi \u96fb\u5b50\u5de5\u4f5c\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-20T08:01:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-22T00:26:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0611.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1142\" \/>\n\t<meta property=\"og:image:height\" content=\"588\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"tacsan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hermione2207\" \/>\n<meta name=\"twitter:site\" content=\"@hermione2207\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"tacsan\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"25\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/arakoki70.com\\\/?p=8093#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/arakoki70.com\\\/?p=8093\"},\"author\":{\"name\":\"tacsan\",\"@id\":\"https:\\\/\\\/arakoki70.com\\\/#\\\/schema\\\/person\\\/d5fdbdb63e731d3f2d43880ccade4451\"},\"headline\":\"Raspberry Pi \u8a08\u6e2c\u3057\u305f\u6e29\u5ea6\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u683c\u7d0d\u3057\u3001Web\u30d6\u30e9\u30a6\u30b6\u306b\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308b\",\"datePublished\":\"2024-01-20T08:01:03+00:00\",\"dateModified\":\"2024-01-22T00:26:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/arakoki70.com\\\/?p=8093\"},\"wordCount\":402,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/arakoki70.com\\\/#\\\/schema\\\/person\\\/d5fdbdb63e731d3f2d43880ccade4451\"},\"image\":{\"@id\":\"https:\\\/\\\/arakoki70.com\\\/?p=8093#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/arakoki70.com\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/flask-chart_0611.png\",\"articleSection\":[\"03 \u4f5c\u54c1\u96c6\"],\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/arakoki70.com\\\/?p=8093#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/arakoki70.com\\\/?p=8093\",\"url\":\"https:\\\/\\\/arakoki70.com\\\/?p=8093\",\"name\":\"Raspberry Pi \u8a08\u6e2c\u3057\u305f\u6e29\u5ea6\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u683c\u7d0d\u3057\u3001Web\u30d6\u30e9\u30a6\u30b6\u306b\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308b - \u30a2\u30e9\u30b3\u30ad\u304b\u3089\u306e Raspberry Pi \u96fb\u5b50\u5de5\u4f5c\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/arakoki70.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/arakoki70.com\\\/?p=8093#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/arakoki70.com\\\/?p=8093#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/arakoki70.com\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/flask-chart_0611.png\",\"datePublished\":\"2024-01-20T08:01:03+00:00\",\"dateModified\":\"2024-01-22T00:26:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/arakoki70.com\\\/?p=8093#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/arakoki70.com\\\/?p=8093\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/arakoki70.com\\\/?p=8093#primaryimage\",\"url\":\"https:\\\/\\\/arakoki70.com\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/flask-chart_0611.png\",\"contentUrl\":\"https:\\\/\\\/arakoki70.com\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/flask-chart_0611.png\",\"width\":1142,\"height\":588,\"caption\":\"\u30d6\u30e9\u30a6\u30b6\u306b\u8868\u793a\u3055\u308c\u305f\u6e29\u5ea6\u306e\u63a8\u79fb\u30b0\u30e9\u30d5\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/arakoki70.com\\\/?p=8093#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u30db\u30fc\u30e0\",\"item\":\"https:\\\/\\\/arakoki70.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Raspberry Pi \u8a08\u6e2c\u3057\u305f\u6e29\u5ea6\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u683c\u7d0d\u3057\u3001Web\u30d6\u30e9\u30a6\u30b6\u306b\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308b\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/arakoki70.com\\\/#website\",\"url\":\"https:\\\/\\\/arakoki70.com\\\/\",\"name\":\"\u30a2\u30e9\u30b3\u30ad\u304b\u3089\u306e Raspberry Pi \u96fb\u5b50\u5de5\u4f5c\",\"description\":\"Around 70&#039;s \u30d6\u30ed\u30b0\u3078\u306e\u8a18\u4e8b\u6295\u7a3f\u304c\u751f\u6d3b\u76ee\u6a19\u306b \u30fb\u30fb\u30fb \u307e\u3060\u307e\u3060\u8f1d\u304f\",\"publisher\":{\"@id\":\"https:\\\/\\\/arakoki70.com\\\/#\\\/schema\\\/person\\\/d5fdbdb63e731d3f2d43880ccade4451\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/arakoki70.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/arakoki70.com\\\/#\\\/schema\\\/person\\\/d5fdbdb63e731d3f2d43880ccade4451\",\"name\":\"tacsan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/arakoki70.com\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/raspberry-toumei_4.png\",\"url\":\"https:\\\/\\\/arakoki70.com\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/raspberry-toumei_4.png\",\"contentUrl\":\"https:\\\/\\\/arakoki70.com\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/raspberry-toumei_4.png\",\"width\":80,\"height\":102,\"caption\":\"tacsan\"},\"logo\":{\"@id\":\"https:\\\/\\\/arakoki70.com\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/raspberry-toumei_4.png\"},\"sameAs\":[\"https:\\\/\\\/arakoki70.com\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Raspberry Pi \u8a08\u6e2c\u3057\u305f\u6e29\u5ea6\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u683c\u7d0d\u3057\u3001Web\u30d6\u30e9\u30a6\u30b6\u306b\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308b - \u30a2\u30e9\u30b3\u30ad\u304b\u3089\u306e Raspberry Pi \u96fb\u5b50\u5de5\u4f5c","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/arakoki70.com\/?p=8093","og_locale":"ja_JP","og_type":"article","og_title":"Raspberry Pi \u8a08\u6e2c\u3057\u305f\u6e29\u5ea6\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u683c\u7d0d\u3057\u3001Web\u30d6\u30e9\u30a6\u30b6\u306b\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308b - \u30a2\u30e9\u30b3\u30ad\u304b\u3089\u306e Raspberry Pi \u96fb\u5b50\u5de5\u4f5c","og_description":"Raspberry Pi \u4f5c\u54c1\u96c6 Python Flask + MySQL + Google Chart \u6e29\u5ea6\u3092\u8a18\u9332\u3057\u3001Web\u30b5\u30fc\u30d0\u30fc\u3067\u30b0\u30e9\u30d5\u5316\u3059\u308b \u00a0 Raspberry Pi \u306b\u63a5\u7d9a\u3057\u305f\u6e29\u5ea6\u30bb\u30f3\u30b5\u30fc\u3067\u6e29\u5ea6\u3092\u5b9a\u671f\u7684\u306b\u8a08 &hellip; \"Raspberry Pi \u8a08\u6e2c\u3057\u305f\u6e29\u5ea6\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u683c\u7d0d\u3057\u3001Web\u30d6\u30e9\u30a6\u30b6\u306b\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308b\" \u306e\u7d9a\u304d\u3092\u8aad\u3080","og_url":"https:\/\/arakoki70.com\/?p=8093","og_site_name":"\u30a2\u30e9\u30b3\u30ad\u304b\u3089\u306e Raspberry Pi \u96fb\u5b50\u5de5\u4f5c","article_published_time":"2024-01-20T08:01:03+00:00","article_modified_time":"2024-01-22T00:26:16+00:00","og_image":[{"width":1142,"height":588,"url":"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0611.png","type":"image\/png"}],"author":"tacsan","twitter_card":"summary_large_image","twitter_creator":"@hermione2207","twitter_site":"@hermione2207","twitter_misc":{"\u57f7\u7b46\u8005":"tacsan","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"25\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/arakoki70.com\/?p=8093#article","isPartOf":{"@id":"https:\/\/arakoki70.com\/?p=8093"},"author":{"name":"tacsan","@id":"https:\/\/arakoki70.com\/#\/schema\/person\/d5fdbdb63e731d3f2d43880ccade4451"},"headline":"Raspberry Pi \u8a08\u6e2c\u3057\u305f\u6e29\u5ea6\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u683c\u7d0d\u3057\u3001Web\u30d6\u30e9\u30a6\u30b6\u306b\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308b","datePublished":"2024-01-20T08:01:03+00:00","dateModified":"2024-01-22T00:26:16+00:00","mainEntityOfPage":{"@id":"https:\/\/arakoki70.com\/?p=8093"},"wordCount":402,"commentCount":0,"publisher":{"@id":"https:\/\/arakoki70.com\/#\/schema\/person\/d5fdbdb63e731d3f2d43880ccade4451"},"image":{"@id":"https:\/\/arakoki70.com\/?p=8093#primaryimage"},"thumbnailUrl":"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0611.png","articleSection":["03 \u4f5c\u54c1\u96c6"],"inLanguage":"ja","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/arakoki70.com\/?p=8093#respond"]}]},{"@type":"WebPage","@id":"https:\/\/arakoki70.com\/?p=8093","url":"https:\/\/arakoki70.com\/?p=8093","name":"Raspberry Pi \u8a08\u6e2c\u3057\u305f\u6e29\u5ea6\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u683c\u7d0d\u3057\u3001Web\u30d6\u30e9\u30a6\u30b6\u306b\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308b - \u30a2\u30e9\u30b3\u30ad\u304b\u3089\u306e Raspberry Pi \u96fb\u5b50\u5de5\u4f5c","isPartOf":{"@id":"https:\/\/arakoki70.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/arakoki70.com\/?p=8093#primaryimage"},"image":{"@id":"https:\/\/arakoki70.com\/?p=8093#primaryimage"},"thumbnailUrl":"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0611.png","datePublished":"2024-01-20T08:01:03+00:00","dateModified":"2024-01-22T00:26:16+00:00","breadcrumb":{"@id":"https:\/\/arakoki70.com\/?p=8093#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/arakoki70.com\/?p=8093"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/arakoki70.com\/?p=8093#primaryimage","url":"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0611.png","contentUrl":"https:\/\/arakoki70.com\/wp-content\/uploads\/2024\/01\/flask-chart_0611.png","width":1142,"height":588,"caption":"\u30d6\u30e9\u30a6\u30b6\u306b\u8868\u793a\u3055\u308c\u305f\u6e29\u5ea6\u306e\u63a8\u79fb\u30b0\u30e9\u30d5"},{"@type":"BreadcrumbList","@id":"https:\/\/arakoki70.com\/?p=8093#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u30db\u30fc\u30e0","item":"https:\/\/arakoki70.com\/"},{"@type":"ListItem","position":2,"name":"Raspberry Pi \u8a08\u6e2c\u3057\u305f\u6e29\u5ea6\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u683c\u7d0d\u3057\u3001Web\u30d6\u30e9\u30a6\u30b6\u306b\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3059\u308b"}]},{"@type":"WebSite","@id":"https:\/\/arakoki70.com\/#website","url":"https:\/\/arakoki70.com\/","name":"\u30a2\u30e9\u30b3\u30ad\u304b\u3089\u306e Raspberry Pi \u96fb\u5b50\u5de5\u4f5c","description":"Around 70&#039;s \u30d6\u30ed\u30b0\u3078\u306e\u8a18\u4e8b\u6295\u7a3f\u304c\u751f\u6d3b\u76ee\u6a19\u306b \u30fb\u30fb\u30fb \u307e\u3060\u307e\u3060\u8f1d\u304f","publisher":{"@id":"https:\/\/arakoki70.com\/#\/schema\/person\/d5fdbdb63e731d3f2d43880ccade4451"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/arakoki70.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":["Person","Organization"],"@id":"https:\/\/arakoki70.com\/#\/schema\/person\/d5fdbdb63e731d3f2d43880ccade4451","name":"tacsan","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/arakoki70.com\/wp-content\/uploads\/2019\/12\/raspberry-toumei_4.png","url":"https:\/\/arakoki70.com\/wp-content\/uploads\/2019\/12\/raspberry-toumei_4.png","contentUrl":"https:\/\/arakoki70.com\/wp-content\/uploads\/2019\/12\/raspberry-toumei_4.png","width":80,"height":102,"caption":"tacsan"},"logo":{"@id":"https:\/\/arakoki70.com\/wp-content\/uploads\/2019\/12\/raspberry-toumei_4.png"},"sameAs":["https:\/\/arakoki70.com\/"]}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/arakoki70.com\/index.php?rest_route=\/wp\/v2\/posts\/8093","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arakoki70.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arakoki70.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arakoki70.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/arakoki70.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8093"}],"version-history":[{"count":1,"href":"https:\/\/arakoki70.com\/index.php?rest_route=\/wp\/v2\/posts\/8093\/revisions"}],"predecessor-version":[{"id":8102,"href":"https:\/\/arakoki70.com\/index.php?rest_route=\/wp\/v2\/posts\/8093\/revisions\/8102"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/arakoki70.com\/index.php?rest_route=\/wp\/v2\/media\/8095"}],"wp:attachment":[{"href":"https:\/\/arakoki70.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8093"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arakoki70.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8093"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arakoki70.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8093"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}