{"id":3889,"date":"2022-01-20T12:00:31","date_gmt":"2022-01-20T03:00:31","guid":{"rendered":"https:\/\/www.agtech.co.jp\/blog\/?p=3889"},"modified":"2022-09-02T11:47:36","modified_gmt":"2022-09-02T02:47:36","slug":"implement-equipment-status-monitoring","status":"publish","type":"post","link":"https:\/\/www.agtech.co.jp\/blog\/2022\/01\/implement-equipment-status-monitoring\/","title":{"rendered":"Actian Zen \u3068\u7523\u696d\u7528\u30e9\u30ba\u30d1\u30a4\u300c netPI \u300d\u3067\u8a2d\u5099\u306e\u72b6\u614b\u76e3\u8996\u3092\u5b9f\u88c5\u3059\u308b"},"content":{"rendered":"<div style=\"text-align: center;\">\r\n\t\t<img loading=\"lazy\" src=\"https:\/\/www.agtech.co.jp\/blog\/wp-content\/uploads\/2022\/01\/025_actian_hilscher_2.png\" alt=\"\" width=\"750\" height=\"122\" class=\"alignnone size-full wp-image-5092\" \/>\r\n<\/div>\r\n\r\n\r\n<h2>\uff0a\u76ee\u6b21\uff0a<\/h2>\r\n<ol>\r\n\t<li><a href=\"#way1\">\u30bb\u30f3\u30b5\u30fc\u30c7\u30fc\u30bf\u3092\u6d3b\u7528\u3057\u305f\u8a2d\u5099\u306e\u72b6\u614b\u76e3\u8996\u30b7\u30b9\u30c6\u30e0<\/a><\/li>\r\n\t<li><a href=\"#way2\">\u30a8\u30c3\u30b8\u5074\u30b7\u30b9\u30c6\u30e0\u74b0\u5883<\/a><\/li>\r\n\t<li><a href=\"#way3\">\u5206\u6790\u5074\u30b7\u30b9\u30c6\u30e0\u74b0\u5883<\/a><\/li>\r\n\t<li><a href=\"#way4\">\u7d50\u679c<\/a><\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<h2><a id=\"way1\"><\/a>\uff11\uff0e\u30bb\u30f3\u30b5\u30fc\u30c7\u30fc\u30bf\u3092\u6d3b\u7528\u3057\u305f\u8a2d\u5099\u306e\u72b6\u614b\u76e3\u8996\u30b7\u30b9\u30c6\u30e0<\/h2>\r\n<p>IIoT\uff08Industrial IoT\uff09\u5206\u91ce\u3067\u306f\u3001\u6a5f\u68b0\u8a2d\u5099\u304b\u3089\u767a\u751f\u3059\u308b\u5927\u91cf\u306e\u30bb\u30f3\u30b5\u30fc\u30c7\u30fc\u30bf\u3092\u53ce\u96c6\u3057\u3066\u3001\u8a2d\u5099\u306e\u72b6\u614b\u7ba1\u7406\u3084\u4e88\u77e5\u4fdd\u5168\u306a\u3069\u306b\u6d3b\u304b\u3059\u53d6\u308a\u7d44\u307f\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059\u3002\u53ce\u96c6\u3057\u305f\u30d3\u30c3\u30b0\u30c7\u30fc\u30bf\u3092\u30af\u30e9\u30a6\u30c9\u4e0a\u3067\u51e6\u7406\u30fb\u89e3\u6790\u3057\u3001\u898b\u3048\u308b\u5316\u3059\u308b\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u304c\u591a\u304f\u306e\u30d9\u30f3\u30c0\u30fc\u304b\u3089\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\u3053\u306e\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3092\u300c\u30c7\u30fc\u30bf\u300d\u306b\u7740\u76ee\u3057\u3066\u898b\u3066\u307f\u308b\u3068\u3001\u3053\u3053\u3067\u4f7f\u308f\u308c\u308b\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u306f\u6642\u7cfb\u5217\u306e\u9023\u7d9a\u30c7\u30fc\u30bf\u3067\u3042\u308a\u3001\u3042\u304f\u307e\u3067\u3082\u50be\u5411\u3092\u6349\u3048\u308b\u305f\u3081\u306e\u8981\u7d20\u306b\u904e\u304e\u305a\u3001\uff11\u3064\uff11\u3064\u306e\u30c7\u30fc\u30bf\u306b\u305d\u308c\u307b\u3069\u306e\u610f\u5473\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u591a\u5c11\u306e\u6b20\u640d\u304c\u3042\u3063\u3066\u3082\u5927\u52e2\u306b\u5f71\u97ff\u306a\u304f\u3001\u305d\u306e\u4e2d\u306e\u7279\u5b9a\u306e\u30c7\u30fc\u30bf\u3092\u62bd\u51fa\u3057\u3066\u53c2\u7167\u307e\u305f\u306f\u66f4\u65b0\u3059\u308b\u3088\u3046\u306a\u3053\u3068\u3082\u3042\u308a\u307e\u305b\u3093\u3002\u3064\u307e\u308a\u300c\u4f7f\u3044\u6368\u3066\u300d\u306e\u30c7\u30fc\u30bf\u3067\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\u65e5\u672c\u4f01\u696d\u306f\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306b\u5bfe\u3059\u308b\u610f\u8b58\u304c\u9ad8\u304f\u3001\u7279\u306b\u88fd\u9020\u696d\u306e\u73fe\u5834\u3067\u306f\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u304b\u3089\u9694\u7d76\u3057\u3066\u3044\u308b\u30b1\u30fc\u30b9\u3082\u591a\u304f\u898b\u3089\u308c\u307e\u3059\u3002\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u51e6\u7406\u306b\u306f\u30af\u30e9\u30a6\u30c9\u306e\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306a\u30ea\u30bd\u30fc\u30b9\u8abf\u9054\u306f\u78ba\u304b\u306b\u6709\u7528\u306a\u306e\u3067\u3059\u304c\u3001\u30c7\u30fc\u30bf\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u305f\u3081\u306e\u901a\u4fe1\u56de\u7dda\u306b\u95a2\u3057\u3066\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u62c5\u4fdd\u3057\u3001\u5e38\u6642\u4e00\u5b9a\u306e\u5e2f\u57df\u3092\u5360\u6709\u3059\u308b\u5f62\u614b\u306f\u3001\u6271\u3046\u30c7\u30fc\u30bf\u304c\u300c\u4f7f\u3044\u6368\u3066\u300d\u3067\u3042\u308b\u3053\u3068\u3092\u8003\u3048\u308b\u3068\u3001\u3084\u3084\u7121\u99c4\u306a\u3088\u3046\u306b\u3082\u611f\u3058\u307e\u3059\u3002\u3053\u306e\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3092\u3082\u3063\u3068\u52b9\u7387\u7684\u306b\u5b9f\u73fe\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u306a\u3044\u306e\u3067\u3057\u3087\u3046\u304b\uff1f<\/p>\r\n\r\n\r\n\r\n<p>\u5f0a\u793e\u306e\u6271\u3046\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u88fd\u54c1\u300cActian Zen\u300d\u30d5\u30a1\u30df\u30ea\u306b\u306f\u3001IoT\/\u30a8\u30c3\u30b8\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u5206\u91ce\u5411\u3051\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u305f\u30a8\u30c7\u30a3\u30b7\u30e7\u30f3\u300cEdge\u300d\u3068\u300cCore\u300d\u304c\u3042\u308a\u307e\u3059\u3002\u9ad8\u901f NoSQL \u3068 SQL \u306e\u30c7\u30e5\u30a2\u30eb\u30a2\u30af\u30bb\u30b9\u6a5f\u69cb\u306f\u305d\u306e\u307e\u307e\u306b\u3001\u4f4e\u6d88\u8cbb\u96fb\u529b\u306e ARM \u7cfb\u30c1\u30c3\u30d7\u3092\u4f7f\u3063\u305f\u5c0f\u578b\u30c7\u30d0\u30a4\u30b9\u306b\u642d\u8f09\u3059\u308b\u3053\u3068\u3092\u60f3\u5b9a\u3057\u305f\u5c0f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30b5\u30a4\u30ba\u306e\u30a8\u30c7\u30a3\u30b7\u30e7\u30f3\u3067\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\u3053\u306e\u3046\u3061\u300cEdge\u300d\u306f\u3001\u6628\u4eca\u7523\u696d\u7528\u9014\u3067\u306e\u6d3b\u7528\u304c\u9032\u3080 Raspberry Pi \u3067\u306e\u52d5\u4f5c\u3092\u516c\u5f0f\u306b\u4fdd\u8a3c\u3057\u3066\u3044\u307e\u3059\u3002\u5c0f\u30ea\u30bd\u30fc\u30b9\u30c7\u30d0\u30a4\u30b9\u5411\u3051\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u300cEdge\u300d\u3068\u3001\u7523\u696d\u7528\u306b\u8010\u4e45\u6027\u3092\u5f37\u5316\u3057\u305f\u300c\u7523\u696d\u7528\u30e9\u30ba\u30d1\u30a4\u300d\u3092\u4f7f\u3063\u3066\u3001\u8a2d\u5099\u306e\u72b6\u614b\u76e3\u8996\u30b7\u30b9\u30c6\u30e0\u3092\u5b9f\u88c5\u3057\u3066\u307f\u307e\u3057\u305f\u3002<\/p>\r\n\r\n\r\n\r\n<div style=\"background-color: #ffffff; padding: 20px 20px 5px; margin-bottom: 30px;\">\r\n<p><strong>Actian Zen Edge \u30a8\u30c7\u30a3\u30b7\u30e7\u30f3<\/strong><\/p>\r\n<p style=\"padding-left: 10px;\">\r\n\u30fb\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30b5\u30a4\u30ba 30 MB \u306e\u8efd\u91cf\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9<br>\r\n\u30fbARM \u7cfb CPU \u30c7\u30d0\u30a4\u30b9\u306b\u5bfe\u5fdc<br>\r\n\u30fbRaspberry Pi OS \u3092\u6b63\u5f0f\u30b5\u30dd\u30fc\u30c8<br>\r\n\u30fbBtireve API \u306b\u3088\u308b\u9ad8\u901f\u9010\u6b21\u51e6\u7406\u304a\u3088\u3073 SQL \u306b\u3088\u308b\u67d4\u8edf\u306a\u30af\u30a8\u30ea\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u304c\u53ef\u80fd<br>\r\n\u30fbAutoTimeStamp \u578b\u306b\u3088\u308b\u6642\u523b\u30c7\u30fc\u30bf\u81ea\u52d5\u53d6\u5f97\u3067\u6642\u7cfb\u5217\u30c7\u30fc\u30bf\u51e6\u7406\u304c\u5bb9\u6613<\/p>\r\n<\/div>\r\n\r\n\r\n\r\n<p>\u53c2\u8003\uff1aActian Zen \u30d5\u30a1\u30df\u30ea<br class=\"sp\"> <a href=\"\/actian\/features\/#a03\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.agtech.co.jp\/actian\/features\/#a03<\/a><\/p>\r\n\r\n\r\n\r\n<h2>\u7523\u696d\u7528\u30e9\u30ba\u30d1\u30a4\u300cnetPI\u300d<\/h2>\r\n<p>\u300cnetPI\u300d\u306f IIoT\u3068\u7523\u696d\u7528\u901a\u4fe1\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u90e8\u54c1\u88fd\u9020\u306e\u5c02\u9580\u4f01\u696d\u3001\u30c9\u30a4\u30c4\u306e\u30d2\u30eb\u30b7\u30e3\u30fc\u793e\u304c\u958b\u767a\u30fb\u88fd\u9020\u3059\u308b\u7523\u696d\u7528\u9014\u5411\u3051\u306e\u5c0f\u578b\u30c7\u30d0\u30a4\u30b9\u3067\u3059\u3002\u65e5\u672c\u3067\u306f\u3001\u73fe\u5730\u6cd5\u4eba\u3067\u3042\u308b\u30d2\u30eb\u30b7\u30e3\u30fc\u30fb\u30b8\u30e3\u30d1\u30f3\u682a\u5f0f\u4f1a\u793e\u304c\u8ca9\u58f2\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\u53c2\u8003\uff1a\u7523\u696d\u7528\u30e9\u30ba\u30d1\u30a4\u300cnetPI\u300d<br class=\"sp\"> <a href=\"https:\/\/www.hilscher.com\/ja\/netpi\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.hilscher.com\/ja\/netpi\/<\/a><\/p>\r\n\r\n\r\n\r\n<p>netPI \u306e\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u306f\u3001\u7523\u696d\u7528\u9014\u5411\u3051\u306b\u6700\u9069\u8a2d\u8a08\u3057\u305f\u57fa\u677f\u3092\u91d1\u5c5e\u30cf\u30a6\u30b8\u30f3\u30b0\u306b\u53ce\u3081\u308b\u3053\u3068\u3067\u8010\u4e45\u30fb\u5805\u7262\u5316\u3057\u3001\u304b\u3064\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3068\u3057\u3066 Docker \u74b0\u5883\u3092\u6a19\u6e96\u88c5\u5099\u3059\u308b\u3053\u3068\u3067\u3001\u30b7\u30b9\u30c6\u30e0\u306e\u5c55\u958b\u30fb\u5c0e\u5165\u306e\u52b9\u7387\u6027\u3092\u9ad8\u3081\u3066\u3044\u307e\u3059\u3002\u307e\u305f\u3001IIoT \u5206\u91ce\u3067\u3088\u304f\u4f7f\u7528\u3055\u308c\u308b Node-RED \u3084 CODESYS \u306a\u3069\u306e\u30c4\u30fc\u30eb\u3082 Docker Hub \u4e0a\u306b\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8<\/span>\u3068\u3057\u3066\u7528\u610f\u3057\u3001netPI \u306b\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\u4eca\u56de\u306f\u3053\u306e\u300cnetPI\u300d\u3092\u4f7f\u3063\u3066\u30bb\u30f3\u30b5\u30fc\u304b\u3089\u306e\u30c7\u30fc\u30bf\u3092\u53d6\u308a\u8fbc\u307f\u3001\u5024\u306e\u63a8\u79fb\u3092\u53ef\u8996\u5316\u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<h2>\u30b7\u30b9\u30c6\u30e0\u30a4\u30e1\u30fc\u30b8<\/h2>\r\n\r\n<p><img src=\"https:\/\/www.agtech.co.jp\/blog\/wp-content\/uploads\/2022\/01\/025_netpi_1.png\" width=\"100%\" \/><\/p>\r\n\r\n\r\n\r\n<p>\u3010\u5b9f\u88c5\u6982\u8981\u3011<\/p>\r\n<ol style=\"margin-top:3px; list-style-type:none; text-indent:-1.35em; padding-left:2em;\">\r\n\t<li>&#9312; \u6a5f\u68b0\u306b\u53d6\u308a\u4ed8\u3051\u305f\u52a0\u901f\u5ea6\u30bb\u30f3\u30b5\u30fc\u304b\u3089\u767a\u751f\u3059\u308b\u30c7\u30fc\u30bf\u3092\uff13\u53f0\u306e netPI \u7d4c\u7531\u3067 Actian Zen Edge \u306b\u751f\u30c7\u30fc\u30bf\u3068\u3057\u3066\u53d6\u308a\u8fbc\u3080\u3002\uff08\u30c6\u30fc\u30d6\u30ebA\uff09\u3000\u203b\u3053\u306e\u751f\u30c7\u30fc\u30bf\u306f\u6bce\u65e5 0:00 \u306b\u5168\u524a\u9664\u3059\u308b\u3002<\/li>\r\n\t<li>&#9313; \u53d6\u308a\u8fbc\u3093\u3060\u751f\u30c7\u30fc\u30bf\u304b\u3089\u72b6\u614b\u76e3\u8996\u7528\u30c7\u30fc\u30bf\u3068\u3057\u3066\uff11\u5206\u9593\u9694\u306e\u5e73\u5747\u5024\u3001\u6700\u5927\u5024\u3001\u6700\u5c0f\u5024\u3092\u62bd\u51fa\u3057\u3001\u69cb\u5185\u30b5\u30fc\u30d0\u306e Actian Zen Cloud SV \u306b\u8ee2\u9001\u3059\u308b\u3002\uff08\u30c6\u30fc\u30d6\u30ebB\uff09\u3000\u203b\u3053\u306e\u72b6\u614b\u76e3\u8996\u7528\u30c7\u30fc\u30bf\u306f\u6c38\u4e45\u4fdd\u5b58\u3059\u308b\u3002<\/li>\r\n\t<li>&#9314; JavaScript \u306e UI \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u300cReact\u300d\u3067\u30b0\u30e9\u30d5\u5316\u3057\u3001\u30d6\u30e9\u30a6\u30b6\u304b\u3089\u30e2\u30cb\u30bf\u3059\u308b\u3002<\/li>\r\n<\/ol>\r\n\r\n<div style=\"background-color: #ffffff; padding: 20px 20px 5px; margin-bottom: 30px;\">\r\n<p>\u30bb\u30f3\u30b5\u30fc\u304b\u3089\u751f\u6210\u3055\u308c\u308b\u30c7\u30fc\u30bf\u3092 netPI \u5074\u3067\u4e00\u6b21\u51e6\u7406\u3059\u308b\u3053\u3068\u3067\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30c8\u30e9\u30d5\u30a3\u30c3\u30af\u3092\u524a\u6e1b\u3057\u3001\u307e\u305f\u30c7\u30fc\u30bf\u30dc\u30ea\u30e5\u30fc\u30e0\u304c\u5c0f\u3055\u304f\u306a\u308b\u3053\u3068\u3067\u30b5\u30fc\u30d0\u5074\u306e\u51e6\u7406\u3082\u52b9\u7387\u5316\u3055\u308c\u307e\u3059\u3002<\/p>\r\n<\/div>\r\n\r\n\r\n\r\n<h2><a id=\"way2\"><\/a>\uff12\uff0e\u30a8\u30c3\u30b8\u5074\u30b7\u30b9\u30c6\u30e0\u74b0\u5883<\/h2>\r\n<p><img src=\"https:\/\/www.agtech.co.jp\/blog\/wp-content\/uploads\/2022\/01\/025_netpi_2_1.png\" width=\"100%\" \/><\/p>\r\n\r\n\r\n\r\n<p>\u30bb\u30f3\u30b5\u30fc\u304b\u3089\u30c7\u30fc\u30bf\u3092\u53d6\u308a\u8fbc\u3080\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u3001\u30d2\u30eb\u30b7\u30e3\u30fc\u793e\u304c\u63d0\u4f9b\u3059\u308b Docker \u30a4\u30e1\u30fc\u30b8\uff08hilschernetpi\/netpi-raspbian\uff09\u3092\u958b\u767a\u6a5f\uff08\u5e02\u8ca9\u306e\u30e9\u30ba\u30d1\u30a4\u3092\u4f7f\u7528\uff09\u4e0a\u306b\u30b3\u30f3\u30c6\u30ca\u5c55\u958b\u3057\u3066\u74b0\u5883\u4f5c\u6210\u3057\u3001\u672c\u756a\u6a5f\uff08netPI\uff09\u7528\u306e\u30a4\u30e1\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\u3010\u958b\u767a\u6a5f\u3068\u30bb\u30f3\u30b5\u30fc\u306e\u63a5\u7d9a\u3011<\/p>\r\n<div class=\"text-gazou-box\">\r\n\t<div class=\"text-box\">\r\n\t\r\n\t\t<p>\u4eca\u56de\u4f7f\u7528\u3059\u308b\u30bb\u30f3\u30b5\u30fc\u306f\u3001\u30a2\u30ca\u30ed\u30b0\u30fb\u30c7\u30d0\u30a4\u30bb\u30ba\u793e\u88fd\u306e\u30c7\u30b8\u30bf\u30eb3\u8ef8\u30bb\u30f3\u30b5\u30fc\u300cADXL345\u300d\u3067\u3059\u3002<\/p>\r\n\r\n\t\t\r\n\r\n\t\t<p>\u958b\u767a\u6a5f\u3068\u52a0\u901f\u5ea6\u30bb\u30f3\u30b5\u30fc\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002<\/p>\r\n\t\t\t<p style=\"padding-left: 10px;\">\r\n\t\t\t\u30fbGPIO \u306e\uff11\u756a\u30d4\u30f3 \u2192 \u30bb\u30f3\u30b5\u30fc\u306e 3.3V<br>\r\n\t\t\t\u30fbGPIO \u306e\uff13\u756a\u30d4\u30f3 \u2192 \u30bb\u30f3\u30b5\u30fc\u306e SDA<br>\r\n\t\t\t\u30fbGPIO \u306e\uff15\u756a\u30d4\u30f3 \u2192 \u30bb\u30f3\u30b5\u30fc\u306e SCL<br>\r\n\t\t\t\u30fbGPIO \u306e\uff17\u756a\u30d4\u30f3 \u2192 \u30bb\u30f3\u30b5\u30fc\u306e GND<\/p>\r\n\r\n\t<\/div>\r\n\t<div class=\"gazou-box\">\r\n\t\t<img loading=\"lazy\" style=\"margin-left:10px; width: 100%;\" src=\"https:\/\/www.agtech.co.jp\/blog\/wp-content\/uploads\/2022\/01\/025_ADXL345_1.png\" target=\"_blank\" rel=\"noopener noreferrer\" alt=\"\" width=\"442\" height=\"281\" class=\"alignnone size-full wp-image-4687\" \/>\r\n\t<\/div>\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<p>\u3010\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3011<\/p>\r\n<p>\u958b\u767a\u6a5f\uff08\u5e02\u8ca9\u30e9\u30ba\u30d1\u30a4\uff09\u306b\u4ee5\u4e0b\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/p>\r\n\t\t\t<p style=\"padding-left: 10px;\">\u30fbDocker \u30b3\u30f3\u30c6\u30ca\uff08netpi-raspbian\uff09 <a href=\"https:\/\/hub.docker.com\/r\/hilschernetpi\/netpi-raspbian\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/hub.docker.com\/r\/hilschernetpi\/netpi-raspbian<\/a><br>\r\n\t\t\t\u30fbActian Zen Edge <a href=\"\/actian\/zen\/v14\/edge\/trial90\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.agtech.co.jp\/actian\/zen\/v14\/edge\/trial90\/<\/a><br>\r\n\t\t\t\u30fbBtrieve 2 API SDK <a href=\"\/actian\/support\/reference\/sdk\/access_methods\/btrieve\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.agtech.co.jp\/actian\/support\/reference\/sdk\/access_methods\/btrieve\/<\/a><br>\r\n\t\t\t\u30fbBtrieve 2 API Python \u7528\u30e9\u30a4\u30d6\u30e9\u30ea <a href=\"https:\/\/www.agtech.co.jp\/blog\/download\/025\/Btrieve2API_Python.zip\">Btrieve2API_Python.zip<\/a><\/p>\r\n\r\n\t\t\t<p class=\"indent1\">\u203bBtrieve 2 API Python \u7528\u30e9\u30a4\u30d6\u30e9\u30ea\u306f\u3001Python \u304b\u3089 Btrieve API \u3092\u4f7f\u3046\u5834\u5408\u306b\u5fc5\u8981\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002<br>\r\n\t\t\t\u8a00\u8a9e\u304a\u3088\u3073 Btrieve \u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u7570\u306a\u308b\u3068\u52d5\u4f5c\u3057\u306a\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002<br>\r\n\t\t\t\u5f53\u8a72\u30e9\u30a4\u30d6\u30e9\u30ea\u306f\u3001Python 3.7.3\u3001Actian Zen Edge v14 SP2 \u3067\u52d5\u4f5c\u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n<p>\u3010\u30bb\u30f3\u30b5\u30fc\u30c7\u30fc\u30bf\u53d6\u308a\u8fbc\u307f\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u958b\u767a\u3011<\/p>\r\n<p>\u30bb\u30f3\u30b5\u30fc\u304b\u3089\u306e\u30c7\u30fc\u30bf\u306f\u5e02\u8ca9\u30e9\u30ba\u30d1\u30a4\u306e GPIO \u30d4\u30f3\u7d4c\u7531\u3067 I2C \u898f\u683c\u306b\u3088\u3063\u3066\u53d6\u308a\u8fbc\u307f\u307e\u3059\u3002\u958b\u767a\u8a00\u8a9e\u306f\u3001\u7d71\u8a08\u51e6\u7406\u7528\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u304c\u8c4a\u5bcc\u3067 IoT \u5206\u91ce\u3068\u76f8\u6027\u306e\u826f\u3044 Python \u3092\u4f7f\u7528\u3057\u307e\u3057\u305f\u3002<\/p>\r\n\r\n\r\n\r\n<p>\u4eca\u56de\u5b9f\u88c5\u3057\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u69cb\u6210\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\r\n\r\n<p><img src=\"https:\/\/www.agtech.co.jp\/blog\/wp-content\/uploads\/2022\/01\/025_netpi_3.png\" width=\"100%\" \/><\/p>\r\n\r\n\r\n\r\n<div style=\"background-color: #ffffff; padding: 20px 20px 5px; margin-bottom: 30px;\">\r\n<p>Actian Zen \u306f\u30ed\u30fc\u30ec\u30d9\u30eb\u3067\u9ad8\u901f\u306b\u30c7\u30fc\u30bf\u30a2\u30af\u30bb\u30b9\u3059\u308b\u300cBtrieve API\u300d\u3068\u3001Btrieve \u3088\u308a\u3082\u901f\u5ea6\u306f\u52a3\u308a\u307e\u3059\u304c\u3001\u8907\u96d1\u306a\u6761\u4ef6\u306e\u30af\u30a8\u30ea\u3092\u67d4\u8edf\u306b\u4f5c\u6210\u3067\u304d\u308b\u300cSQL\u300d\u306e\uff12\u3064\u306e\u30a2\u30af\u30bb\u30b9\u30e1\u30bd\u30c3\u30c9\u3092\u5099\u3048\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u7279\u5fb4\u3092\u8003\u616e\u3057\u3001\u5927\u91cf\u306e\u6642\u7cfb\u5217\u30c7\u30fc\u30bf\u3092\u305d\u306e\u307e\u307e\u767b\u9332\u3059\u308b\u30c7\u30fc\u30bf\u53d6\u308a\u8fbc\u307f\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u306f\u9010\u6b21\u7684\u51e6\u7406\u304c\u9ad8\u901f\u306a Btrieve API \u3092\u3001\u5fc5\u8981\u306a\u30c7\u30fc\u30bf\u3092\u62bd\u51fa\u3057\u3066\u8ee2\u9001\u3059\u308b\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u306f SQL \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\u307e\u305f\u3001\u5206\u6790\u30b5\u30fc\u30d0\u5074\u306b\u5b9f\u88c5\u3059\u308b\u52d5\u7684\u306a\u30b0\u30e9\u30d5\u8868\u793a\u306b\u306f JavaScript \u3092\u5229\u7528\u3057\u305f Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u9069\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u3053\u306e\u5834\u5408\u3001Actian Zen \u3067\u306f\u300cCloud SV\u300d\u30a8\u30c7\u30a3\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"body-tbanner\">\r\n\t<div class=\"logo\";>\r\n\t\t<p style=\"font-size: 1.1em;\">\u3010\u95a2\u9023\u8a18\u4e8b\u3011<\/p>\r\n\t\t<p><img loading=\"lazy\" src=\"https:\/\/www.agtech.co.jp\/blog\/wp-content\/uploads\/2022\/07\/026_blog_historian_4-3-1-768x519.jpeg\" alt=\"\" width=\"864\" height=\"576\" class=\"alignnone size-full wp-image-3559\" \/><\/p>\r\n\t<\/div>\r\n\t<div class=\"ccopy\">\r\n\t\t<p class=\"title\"><a href=\"\/blog\/2022\/07\/data_historian_part1\/\" target=\"_blank\" rel=\"noopener\">\u306f\u3058\u3081\u3066\u306eActian Zen\u300c\u30c7\u30fc\u30bf\u30d2\u30b9\u30c8\u30ea\u30a2\u30f3\u300d\u7de8<\/a><\/p>\r\n\t\t<p class=\"detail\">\uff0a\u306a\u305c\u3001Actian Zen\u306f\u30d2\u30b9\u30c8\u30ea\u30a2\u30f3\u306b\u5411\u3044\u3066\u3044\u308b\u306e\u304b\uff1f\uff0a<\/p>\r\n        \t\t<ol class=\"list\">\r\n\t\t\t<li><a href=\"\/blog\/2022\/07\/data_historian_part2\/#reason1\" target=\"_blank\" rel=\"noopener\">NoSQL\u3068RDB\u4e21\u65b9\u306e\u7279\u5fb4\u3092\u3082\u3064<\/a><\/li>\r\n\t\t\t<li><a href=\"\/blog\/2022\/07\/data_historian_part2\/#reason2\" target=\"_blank\" rel=\"noopener\">\u30ec\u30b3\u30fc\u30c9\u3092\u633f\u5165\u3059\u308b\u6027\u80fd\u304c\u7279\u306b\u9ad8\u3044<\/a><\/li>\r\n\t\t\t<li><a href=\"\/blog\/2022\/07\/data_historian_part3\/#reason3\" target=\"_blank\" rel=\"noopener\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u6a5f\u80fd\u304c\u5145\u5b9f\u3057\u3066\u3044\u308b<\/a><\/li>\r\n\t\t\t<li><a href=\"\/blog\/2022\/07\/data_historian_part3\/#reason4\" target=\"_blank\" rel=\"noopener\">\u300c\u7121\u99c4\u300d\u3092\u7701\u304f\u3053\u3068\u306b\u6700\u9069\u3067\u3042\u308b<\/a><\/li>\r\n        \t\t<\/ol>\r\n\t\t<\/p>\r\n\t<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<h2>Sensor-collect.py \u306e\u4f5c\u6210<\/h2>\r\n<p>\u307e\u305a\u3001\u30a8\u30c3\u30b8\u5074\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30b9\u30ad\u30fc\u30de\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u3053\u3053\u3067\u4f5c\u6210\u3059\u308b\u30c6\u30fc\u30d6\u30eb\u306f\u3001SQL \u30a2\u30af\u30bb\u30b9\u3092\u53ef\u80fd\u306b\u3059\u308b\u3068\u3068\u3082\u306b\u305d\u306e\u307e\u307e Btrieve \u306e\u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\u30bb\u30f3\u30b5\u30fc\u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u3059\u308b\u30c6\u30fc\u30d6\u30eb\uff08data1\u30c6\u30fc\u30d6\u30eb\uff09\u3092\u4f5c\u6210\u3002<\/p>\r\n\r\n\r\n\r\n<div style=\"border: solid 1px #ff7f50; background: #fff8dc; margin-bottom: 30px;\">\r\n\t<div style=\"padding: 0 10px;\">\r\n\t\t<details>\r\n\t\t<summary>CODE<\/summary>\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\nCREATE TABLE \"data1\" IN DICTIONARY USING 'data1.mkd' PCOMPRESS PAGESIZE=16384 (\r\n \"rno\" BIGIDENTITY DEFAULT '0' CONSTRAINT \"UK_rno\" UNIQUE USING 1,\r\n \"instime\" AUTOTIMESTAMP DEFAULT '0' CONSTRAINT \"DK_instime\" NOT UNIQUE USING 0,\r\n \"sno\" INTEGER NOT NULL,\r\n \"xdata\" INTEGER NOT NULL,\r\n \"ydata\" INTEGER NOT NULL,\r\n \"zdata\" INTEGER NOT NULL )\r\n;\r\n\t\t\t<\/pre>\r\n\t\t<\/details>\r\n\t<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<p>\u7d9a\u3044\u3066 I2C \u30bb\u30f3\u30b5\u30fc\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u306e\u901a\u4fe1\u3092\u884c\u3046\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<div style=\"border: solid 1px #ff7f50; background: #fff8dc; margin-bottom: 30px;\">\r\n\t<div style=\"padding: 0 10px;\">\r\n\t\t<details>\r\n\t\t<summary>CODE<\/summary>\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\nsudo apt-get install python-smbus i2c-tools\r\n\r\n# \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5f8c\u3001\u518d\u8d77\u52d5\u3002\r\nsudo reboot\r\n\r\n# I2C\u63a5\u7d9a\u306e\u78ba\u8a8d\u3002\r\nsudo i2cdetect \u2013y 1\r\n\t\t\t<\/pre>\r\n\t\t<\/details>\r\n\t<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<p>\u63a5\u7d9a\u3055\u308c\u3066\u3044\u308c\u3070\u30c7\u30d0\u30a4\u30b9\u756a\u53f7\uff080x53\uff09\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\uff08\u30bb\u30f3\u30b5\u30fc\u3068\u901a\u4fe1\u3059\u308b\u969b\u306b\u5fc5\u8981\u3067\u3059\u306e\u3067\u63a7\u3048\u3066\u304a\u304d\u307e\u3059\uff09<\/p>\r\n\r\n\r\n\r\n<p><img src=\"https:\/\/www.agtech.co.jp\/blog\/wp-content\/uploads\/2022\/01\/025_0x53.png\" width=\"100%\" \/><\/p>\r\n\r\n\r\n\r\n<p>Sensor-collect.py \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3066\u3001\u30bb\u30f3\u30b5\u30fc\u60c5\u5831\u306e\u53d6\u5f97\u53ca\u3073\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\uff08Zen Edge\uff09\u3078\u767b\u9332\u3057\u307e\u3059\u3002\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u30a2\u30af\u30bb\u30b9\u306f Btrieve 2 API \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<div style=\"border: solid 1px #ff7f50; background: #fff8dc; margin-bottom: 30px;\">\r\n\t<div style=\"padding: 0 10px;\">\r\n\t\t<details>\r\n\t\t<summary>CODE<\/summary>\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\n\r\nimport btrievePython as btrv\r\nimport smbus\r\n\u00a0\r\n# \u30bb\u30f3\u30b5\u30fc\u901a\u4fe1\u306e\u521d\u671f\u5316\r\ni2c = smbus.SMBus(1)\r\naddr = 0x53 \r\ni2c.write_byte_data(addr,0x2c,0x0f)\r\ni2c.write_byte_data(addr,0x31,0x00)\r\ni2c.write_byte_data(addr,0x38,0x00)\r\ni2c.write_byte_data(addr,0x2d,0x08)\r\n\u00a0\r\nbtrieveFileName = \"\/usr\/local\/actianzen\/data\/VSENSOR\/DATA1.MKD\"\r\n\r\n# Btrieve\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u4f5c\u6210:\r\nbtrieveClient = btrv.BtrieveClient(0x4232, 0) \r\nbtrieveFile = btrv.BtrieveFile()\r\n\u00a0\r\n# \u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\r\nrc = btrieveClient.FileOpen(btrieveFile, btrieveFileName, None, btrv.Btrieve.OPEN_MODE_NORMAL)\r\nif (rc == btrv.Btrieve.STATUS_CODE_NO_ERROR):\r\n     print('\u30d5\u30a1\u30a4\u30eb\u3092\u6b63\u5e38\u306b\u958b\u304d\u307e\u3057\u305f\u3002\\n')\r\nelse:\r\n     print('\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u306e\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u30b9\u30c6\u30fc\u30bf\u30b9: ', rc, '\\n')\r\nimport struct\r\nrecordFormat = \"&lt;qqiiii\"\r\n\u00a0\r\nwhile True:\r\n     # X\u5024\u306e\u53d6\u5f97\r\n     datax = i2c.read_i2c_block_data(addr, 0x32, 2)\r\n     add_x = 256 * datax[0] + datax[1]   \r\n     # Y\u5024\u306e\u53d6\u5f97\r\n     datay = i2c.read_i2c_block_data(addr, 0x34, 2)\r\n     add_y = datay[0]+datay[1]\r\n     # Z\u5024\u306e\u53d6\u5f97\r\n     dataz = i2c.read_i2c_block_data(addr, 0x36, 2)\r\n     add_z = dataz[0]+dataz[1]\r\n\u00a0\r\n# Python\u306e\u5024\u3092C\u306e\u69cb\u9020\u4f53\u30c7\u30fc\u30bf\u306b\u5909\u63db\u3092\u3057\u307e\u3059\u3002\r\nrecord = struct.pack(recordFormat,0,0,sno,add_x,add_y,add_z)\r\n\r\n# \u4e0a\u8a18\u3067\u5909\u63db\u3057\u305f record \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u683c\u7d0d\r\nrc = btrieveFile.RecordCreate(record)\r\nif (rc == btrv.Btrieve.STATUS_CODE_NO_ERROR):\r\n  print(' \u30ec\u30b3\u30fc\u30c9\u306e\u633f\u5165\u306f\u6b63\u5e38\u306b\u5b9f\u884c\u3055\u308c\u307e\u3057\u305f\u3002')\r\nelse:\r\n  print(' \u30ec\u30b3\u30fc\u30c9\u306e\u633f\u5165\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u30b9\u30c6\u30fc\u30bf\u30b9: ', rc)\r\n\t\t\t<\/pre>\r\n\t\t<\/details>\r\n\t<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<p>\u203b\u30bb\u30f3\u30b5\u30fc\u30c7\u30fc\u30bf\u53d6\u5f97\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u4f5c\u6210\u306b\u3042\u305f\u308a\u3001\u4ee5\u4e0b\u306e\u8a18\u4e8b\u3092\u53c2\u8003\u306b\u3057\u3066\u3044\u307e\u3059\u3002<br>\r\n<a href=\"https:\/\/www.ne.senshu-u.ac.jp\/~iida\/pc\/?p=1629\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.ne.senshu-u.ac.jp\/~iida\/pc\/?p=1629<\/a>\r\n\r\n\r\n\r\n<h2>Sensor-extract.py \u306e\u4f5c\u6210<\/h2>\r\n<p>\u5206\u6790\u30b5\u30fc\u30d0\u5074\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\u30b9\u30ad\u30fc\u30de\u60c5\u5831\u306f\u4ee5\u4e0b\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>data1average\uff1a \u7d71\u8a08\u30c7\u30fc\u30bf\u7528\u306e\u30c6\u30fc\u30d6\u30eb<br>\r\ndata1manage\uff1a \u7a3c\u50cd\u4e2d\u306e\u30bb\u30f3\u30b5\u30fc\u3092\u7ba1\u7406\u3059\u308b\u30c6\u30fc\u30d6\u30eb<\/p>\r\n\r\n\r\n\r\n<div style=\"border: solid 1px #ff7f50; background: #fff8dc; margin-bottom: 30px;\">\r\n\t<div style=\"padding: 0 10px;\">\r\n\t\t<details>\r\n\t\t<summary>CODE<\/summary>\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\n\r\nCREATE TABLE \"data1average\" IN DICTIONARY USING 'data1average.mkd' PAGESIZE=4096 (\r\n \"instime\" TIMESTAMP,\r\n \"sno\" INTEGER NOT NULL,\r\n \"xavg\" DOUBLE NOT NULL, \r\n \"yavg\" DOUBLE NOT NULL,\r\n \"zavg\" DOUBLE NOT NULL,\r\n \"xmax\" INTEGER NOT NULL,\r\n \"ymax\" INTEGER NOT NULL,\r\n \"zmax\" INTEGER NOT NULL,\r\n \"xmin\" INTEGER NOT NULL,\r\n \"ymin\" INTEGER NOT NULL,\r\n \"zmin\" INTEGER NOT NULL );\r\n\r\nCREATE UNIQUE INDEX \"AVGidx1\" USING 0 IN DICTIONARY  ON \"data1average\" ( \"instime\", \"sno\" );\r\n\r\nCREATE TABLE \"data1manage\" IN DICTIONARY USING 'data1manage.mkd' PAGESIZE=4096 (\r\n \"sno\" INTEGER,\r\n\"title\" CHAR(50) );\r\n\t\t\t<\/pre>\r\n\t\t<\/details>\r\n\t<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<p>\u6b21\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<div style=\"border: solid 1px #ff7f50; background: #fff8dc; margin-bottom: 30px;\">\r\n\t<div style=\"padding: 0 10px;\">\r\n\t\t<details>\r\n\t\t<summary>CODE<\/summary>\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\n\r\n# ODBC\u7d4c\u7531\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\r\npip3 install pyodbc\u3000\r\n\r\n#\u7d71\u8a08\u60c5\u5831\u3092\u8a08\u7b97\u3059\u308b\u305f\u3081\u306e\u305f\u3081\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\r\npip3 install pandas \u3000\r\n\t\t\t<\/pre>\r\n\t\t<\/details>\r\n\t<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<p>Sensor-extract.py \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3066\u3001\u7d71\u8a08\u60c5\u5831\uff081\u5206\u3054\u3068\u306e\u5e73\u5747\u5024\u3001\u6700\u5927\u5024\u3001\u6700\u5c0f\u5024\uff09\u3092\u53d6\u5f97\u3059\u308b\u30ed\u30b8\u30c3\u30af\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u30dd\u30a4\u30f3\u30c8\u3068\u306a\u308b\u7b87\u6240\u306e\u307f\u30d4\u30c3\u30af\u30a2\u30c3\u30af\u3057\u3066\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u63a5\u7d9a\u3002\uff08\u63a5\u7d9a\u5148\u306e\u60c5\u5831\u306f\u304a\u5ba2\u69d8\u306e\u74b0\u5883\u306b\u3042\u308f\u305b\u3066\u304f\u3060\u3055\u3044\uff09<\/p>\r\n\r\n\r\n\r\n<div style=\"border: solid 1px #ff7f50; background: #fff8dc; margin-bottom: 30px;\">\r\n\t<div style=\"padding: 0 10px;\">\r\n\t\t<details>\r\n\t\t<summary>CODE<\/summary>\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\n\r\nimport pyodbc\r\nconn_str = 'Driver={Pervasive ODBC Interface};server=172.31.x.xx:1583;DBQ=vsensor'\r\ndb = pyodbc.connect(conn_str)\r\n\r\n\t\t\t<\/pre>\r\n\t\t<\/details>\r\n\t<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<p>\u7d71\u8a08\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3002\u3053\u3061\u3089\u306f DB \u64cd\u4f5c\u306b SQL \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>pandas \u306e to_datetime() \u95a2\u6570\u3092\u4f7f\u3044\u3001instime \u306e\u30ab\u30e9\u30e0\u3092 datetime \u578b\u306b\u5909\u63db\uff08\u65b0\u305f\u306b\u4f5c\u6210\u3057\u305f\u30c7\u30fc\u30bf\u306f inplace=True \u3067\u305d\u306e\u307e\u307e instime \u30ab\u30e9\u30e0\u306b\u4e0a\u66f8\u304d\uff09\u3057\u3001\u305d\u306e\u5f8c\u3001pandas \u306e resample() \u95a2\u6570\u3067\u6642\u7cfb\u5217\u30c7\u30fc\u30bf\u3092\u30b0\u30eb\u30fc\u30d4\u30f3\u30b0\u3057\u76f4\u3057\u3001\u305d\u306e\u7d50\u679c\u3092\u5143\u306b\u5e73\u5747\u5024\u3001\u6700\u5927\u5024\u3001\u6700\u5c0f\u5024\u3092\u6c42\u3081\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<div style=\"border: solid 1px #ff7f50; background: #fff8dc; margin-bottom: 30px;\">\r\n\t<div style=\"padding: 0 10px;\">\r\n\t\t<details>\r\n\t\t<summary>CODE<\/summary>\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\n\r\nimport pandas as pd\r\nquery = \"SELECT * from data1 where sno = {0} and instime between \\'{1}\\' and \\'{2}\\'\".format(sno,st_date,end_date)\r\ndf = pd.read_sql(sql = query,con =  db)\r\n\u00a0\r\ndf['instime'] = pd.to_datetime(df['instime'])\r\ndf.set_index('instime', inplace=True)\r\n\u00a0\r\ndata_range = \"{0}T\".format(key)\r\ndf.resample(data_range).mean()\r\naverage_data = df.resample(data_range).mean()\r\nmax_data = df.resample(data_range).max()\r\nmin_data = df.resample(data_range).min()\r\n\r\n\t\t\t<\/pre>\r\n\t\t<\/details>\r\n\t<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<h2>\u52d5\u4f5c\u78ba\u8a8d<\/h2>\r\n<p>\u30bb\u30f3\u30b5\u30fc\u30c7\u30fc\u30bf\u53ce\u96c6\u30d7\u30ed\u30b0\u30e9\u30e0\uff08sensor-collect.py\uff09\u306f\u3001\u30bb\u30f3\u30b5\u30fc\u756a\u53f7\u3092\u5f15\u6570\u306b\u3057\u3066\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\n\r\npython3 sensor-collect-DB.py 1111\r\n\r\n\t\t\t<\/pre>\r\n\r\n\r\n\r\n\r\n<p>\u7d71\u8a08\u30c7\u30fc\u30bf\u4f5c\u6210\u30d7\u30ed\u30b0\u30e9\u30e0\uff08sensor-extract.py\uff09\u306f\u3001\u30bb\u30f3\u30b5\u30fc\u756a\u53f7\u3068\u4efb\u610f\u306e\u30bb\u30f3\u30b5\u30fc\u540d\u3092\u5f15\u6570\u306b\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\n\r\npython3 sensor-extract-DB.py 1111 sensor1\r\n\r\n\t\t\t<\/pre>\r\n\r\n\r\n\r\n<p>\u203b\uff13\u6a5f\u306e\u5de5\u4f5c\u6a5f\u68b0\u306b\u53d6\u308a\u4ed8\u3051\u305f\u30bb\u30f3\u30b5\u30fc\u306e\u756a\u53f7\u3092\u300c1111\u300d\uff5e\u300c3333\u300d\u3001\u30bb\u30f3\u30b5\u30fc\u540d\u3092\u300csensor1\u300d\uff5e\u300csensor3\u300d\u3068\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>SQL \u6587\u304b\u3089\uff11\u5206\u3054\u3068\u306b\u7d71\u8a08\u60c5\u5831\u306e\u8a08\u7b97\u3092\u884c\u3063\u3066\u3044\u308b\u306e\u304c\u5206\u304b\u308a\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p><img src=\"https:\/\/www.agtech.co.jp\/blog\/wp-content\/uploads\/2022\/01\/025_netpi_4_2.png\" width=\"100%\" \/><\/p>\r\n\r\n\r\n\r\n<h2>netPI \u30bb\u30c3\u30c8\u30a2\u30c3\u30d7<\/h2>\r\n<p>\u958b\u767a\u6a5f\u3067\u306f GPIO \u30d4\u30f3\u7d4c\u7531\u3067\u30bb\u30f3\u30b5\u30fc\u304b\u3089\u306e\u30c7\u30fc\u30bf\u3092\u53d6\u308a\u8fbc\u307f\u307e\u3057\u305f\u304c\u3001netPI \u3067\u306f\u91d1\u5c5e\u30cf\u30a6\u30b8\u30f3\u30b0\u3092\u958b\u3051\u305a\u306b\u30b9\u30e9\u30a4\u30c9\u30a4\u30f3\u3067\u88c5\u7740\u3067\u304d\u308b\u62e1\u5f35\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u4ecb\u3057\u3066\u30c7\u30fc\u30bf\u3092\u53d6\u308a\u8fbc\u307f\u307e\u3059\u3002\uff08I2C \u901a\u4fe1\u7528\u306b\u306f\u3001\u300cI2C\/SPI\u7528\u62e1\u5f35\u30e2\u30b8\u30e5\u30fc\u30eb\u300d\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\uff09<\/p>\r\n\r\n\r\n\r\n<p>\u3010\u30bb\u30f3\u30b5\u30fc\u3068 netPI \uff0b I2C \u62e1\u5f35\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u63a5\u7d9a\u3011<\/p>\r\n<p>\u30bb\u30f3\u30b5\u30fc\u3068 I2C\/SPI \u7528\u62e1\u5f35\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002<\/p>\r\n<p style=\"padding-left: 10px;\">\r\n\u30fbI2C \u62e1\u5f35\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\uff12\u756a\u30d4\u30f3 \u2192 \u30bb\u30f3\u30b5\u30fc\u306e GND<br>\r\n\u30fbI2C \u62e1\u5f35\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\uff13\u756a\u30d4\u30f3 \u2192 \u30bb\u30f3\u30b5\u30fc\u306e SDA<br>\r\n\u30fbI2C \u62e1\u5f35\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\uff14\u756a\u30d4\u30f3 \u2192 \u30bb\u30f3\u30b5\u30fc\u306e SCL<br>\r\n\u30fbI2C \u62e1\u5f35\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\uff15\u756a\u30d4\u30f3 \u2192 \u30bb\u30f3\u30b5\u30fc\u306e 3.3V<\/p>\r\n\r\n\r\n\r\n<p>\u203b\u5b9f\u969b\u306b\u306f\u5353\u4e0a\u6247\u98a8\u6a5f\u3092\u632f\u52d5\u3059\u308b\u5de5\u4f5c\u6a5f\u68b0\u306b\u898b\u7acb\u3066\u3066\u30bb\u30f3\u30b5\u30fc\u3092\u53d6\u308a\u4ed8\u3051\u3066\u3044\u307e\u3059\u3002<\/p>\r\n\r\n<p><img src=\"https:\/\/www.agtech.co.jp\/blog\/wp-content\/uploads\/2022\/01\/025_netpi_5_3.png\" width=\"100%\" \/><\/p>\r\n\r\n\r\n\r\n<h2>\u958b\u767a\u6a5f\u3067\u4f5c\u6210\u3057\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u30b3\u30f3\u30c6\u30ca\u3054\u3068\u30a4\u30e1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u306b\u3057\u3066 netPI \u306b\u5c55\u958b\u3059\u308b<\/h2>\r\n<p>\u958b\u767a\u6a5f\u304b\u3089 netPI \u3078\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u79fb\u884c<\/span>\u3059\u308b\u65b9\u6cd5\u306f\u5e7e\u3064\u304b\u3042\u308a\u307e\u3059\u304c\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u306e\u5727\u7e2e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u308a<\/span>\u3001netPI \u306e\u7ba1\u7406\u753b\u9762\u304b\u3089\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u65b9\u6cd5\u304c\u4fbf\u5229\u3067\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u306b\u3066\u30b3\u30f3\u30c6\u30ca\u60c5\u5831\u3092\u30b3\u30df\u30c3\u30c8\u3057\u3001save \u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<div style=\"border: solid 1px #ff7f50; background: #fff8dc; margin-bottom: 30px;\">\r\n\t<div style=\"padding: 0 10px;\">\r\n\t\t<details>\r\n\t\t<summary>CODE<\/summary>\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\n\r\n# \u30b3\u30f3\u30c6\u30ca\u60c5\u5831\u306e\u30b3\u30df\u30c3\u30c8\uff08 \u5f15\u6570\u306f\u3001\u3000\u30b3\u30f3\u30c6\u30ca\u540d\u3000Docker\u30a4\u30e1\u30fc\u30b8\u540d\uff09\r\ndocker commit f38d14df0f6a netpidemo1027\r\n\r\n# tar\u30d5\u30a1\u30a4\u30eb\u4f5c\u6210\u3000\uff08\u5f15\u6570\u306f\u3001\u3000tar\u30d5\u30a1\u30a4\u30eb\u540d\u3000Docker\u30a4\u30e1\u30fc\u30b8\u540d\uff09\r\ndocker save -o netpidemo.tar netpidemo1027\r\n\t\t\t<\/pre>\r\n\t\t<\/details>\r\n\t<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<p>\u53d6\u5f97\u3057\u305f tar \u30d5\u30a1\u30a4\u30eb\u3092 netPI \u7ba1\u7406\u753b\u9762\u304b\u3089\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p><img src=\"https:\/\/www.agtech.co.jp\/blog\/wp-content\/uploads\/2022\/01\/025_netpi_6.png\" width=\"100%\" \/><\/p>\r\n\r\n\r\n\r\n<p>\u3053\u308c\u3067 netPI \u3067\u30bb\u30f3\u30b5\u30fc\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u3066\u3001\u5206\u6790\u30b5\u30fc\u30d0\u3078\u30c7\u30fc\u30bf\u3092\u9001\u308b\u74b0\u5883\u304c\u6574\u3044\u307e\u3057\u305f\u3002<\/p>\r\n\r\n\r\n\r\n<h2><a id=\"way3\"><\/a>\uff13\uff0e\u5206\u6790\u5074\u30b7\u30b9\u30c6\u30e0\u74b0\u5883<\/h2>\r\n<p>netPI \u5074\u304b\u3089\u8ee2\u9001\u3055\u308c\u305f\uff11\u5206\u3054\u3068\u306e\u5206\u6790\u5024\uff08\u5e73\u5747\u3001\u6700\u5927\u3001\u6700\u5c0f\uff09\u3092\u30b0\u30e9\u30d5\u30a3\u30c3\u30af\u8868\u793a\u3057\u3001\u30d6\u30e9\u30a6\u30b6\u304b\u3089\u30e2\u30cb\u30bf\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\u4eca\u56de\u5b9f\u88c5\u3057\u305f\u5206\u6790\u30b5\u30fc\u30d0\u30fc\u5074\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u69cb\u6210\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p><img src=\"https:\/\/www.agtech.co.jp\/blog\/wp-content\/uploads\/2022\/01\/025_netpi_7.png\" width=\"100%\" \/><\/p>\r\n\r\n\r\n\r\n<p>\u3010\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u958b\u767a\u3011<\/p>\r\n<p>\u30b0\u30e9\u30d5\u30a3\u30c3\u30af\u8868\u793a\u306b\u306f JavaScript \u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3042\u308b\u300cReact\u300d\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u307e\u305f\u3001Web \u30a2\u30d7\u30ea\u7528\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3068\u3057\u3066 FastAPI \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u3061\u3089\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u8a00\u8a9e\u306f Python \u3067\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>DB \u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u306b\u3064\u3044\u3066\u3001Web \u30b7\u30b9\u30c6\u30e0\u306e\u5834\u5408\u3001\u30af\u30e9\u30b5\u30d0\u578b\u306e\u30b7\u30b9\u30c6\u30e0\u3068\u9055\u3063\u3066 DB \u3078\u306e\u63a5\u7d9a\u304c\uff11\u3064\u306e API \u306b\u96c6\u7d04\u3055\u308c\u3066 DB \u5074\u304c\u63a5\u7d9a\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u6570\u3092\u6355\u6349\u3067\u304d\u306a\u3044\u3053\u3068\u304b\u3089\u3001\u540c\u6642\u63a5\u7d9a\u6570\u30d9\u30fc\u30b9\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002\u3088\u3063\u3066\u3001\u30d5\u30a1\u30a4\u30eb\u5bb9\u91cf\u30d9\u30fc\u30b9\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u3067\u3042\u308b\u300cZen Cloud SV\u300d\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\uff08\u300cCloud SV\u300d\u3068\u3044\u3046\u30cd\u30fc\u30df\u30f3\u30b0\u3067\u3059\u304c\u3001\u4f7f\u7528\u5834\u6240\u306e\u5236\u9650\u306f\u306a\u304f\u3001\u30aa\u30f3\u30d7\u30ec\u30df\u30b9\u3067\u3082\u4f7f\u7528\u53ef\u80fd\u3067\u3059\uff09<\/p>\r\n\r\n\r\n<h2>Main.py \u306e\u4f5c\u6210<\/h2>\r\n<p>\u30b5\u30fc\u30d0\u30fc\u5074\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u69cb\u6210\u3067\u3059\u3002<\/p>\r\n\r\n<ul class=\"tree_view\">\r\n\t<li>api\/\r\n\t\t<ul>\r\n\t\t\t<li>db.py<\/li>\r\n\t\t\t<li>main.py<\/li>\r\n\t\t\t<li>routers\r\n\t\t\t\t<ul>\r\n\t\t\t\t\t<li>read.py<\/li>\r\n\t\t\t\t<\/ul>\r\n\t\t\t<\/li>\r\n\t\t<\/ul>\r\n\t<\/li>\r\n<\/ul>\r\n\r\n<p>Web \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u300cFastAPI\u300d\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3002\uff08FastAPI \u306e\u30b5\u30fc\u30d0\u8d77\u52d5\u306f\u3001Uvicorn \u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u5229\u7528\u3057\u307e\u3059\uff09<\/p>\r\n\r\n\r\n\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\n\r\n$ pip install fastapi uvicorn\r\n\r\n\t\t\t<\/pre>\r\n\r\n\r\n\r\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30eb\u30fc\u30c8\u306b\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b api\/main.py \u3092\u8ffd\u52a0\u3057 FastAPI \u306e\u30b3\u30fc\u30c9\u3092\u8a18\u8ff0\u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\uff1cMain.py\uff1e<\/p>\r\n<div style=\"border: solid 1px #ff7f50; background: #fff8dc; margin-bottom: 30px;\">\r\n\t<div style=\"padding: 0 10px;\">\r\n\t\t<details>\r\n\t\t<summary>CODE<\/summary>\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\n\r\nfrom fastapi import FastAPI\r\n\u00a0\r\nfrom api.routers import read\r\nfrom fastapi.middleware.cors import CORSMiddleware\r\n\u00a0\r\napp = FastAPI()\r\n\t\t\t<\/pre>\r\n\t\t<\/details>\r\n\t<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30eb\u30fc\u30c8\u306b\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b api\/db.py \u3092\u8ffd\u52a0\u3057\u3001DB \u63a5\u7d9a\u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\uff1cdb.py\uff1e<\/p>\r\n<div style=\"border: solid 1px #ff7f50; background: #fff8dc; margin-bottom: 30px;\">\r\n\t<div style=\"padding: 0 10px;\">\r\n\t\t<details>\r\n\t\t<summary>CODE<\/summary>\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\n\r\nimport pyodbc\u00a0\r\n\r\n# \u5206\u6790\u30b5\u30fc\u30d0\u30fc\u3068\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306eDSN\u3092\u4f5c\u6210\u3057\u3066\u304a\u304f\u3002\r\ncnxn = pyodbc.connect(\"dsn=xxxxx\")\r\ncursor = cnxn.cursor()\r\n\r\n\t\t\t<\/pre>\r\n\t\t<\/details>\r\n\t<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<p>api\/routers\/read.py \u3092\u8ffd\u52a0\u3057\u3001DB \u306b\u63a5\u7d9a\u3059\u308b Read \u51e6\u7406\u3068\u3001API \u306b\u7e4b\u3052\u3066\u52d5\u4f5c\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\uff1cRead.py\uff1e<\/p>\r\n<div style=\"border: solid 1px #ff7f50; background: #fff8dc; margin-bottom: 30px;\">\r\n\t<div style=\"padding: 0 10px;\">\r\n\t\t<details>\r\n\t\t<summary>CODE<\/summary>\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\n\r\nfrom fastapi import APIRouter, Depends\r\nimport json\r\nfrom api.db import cursor\r\nimport time\r\n\u00a0\r\nrouter = APIRouter()\r\n\u00a0\r\n@router.get(\"\/sno\/{item_id}\")\r\ndef get_data(item_id:int):\r\n    cursor.execute('SELECT * from data1average where sno ={0} and instime = (select max(instime) from data1average where sno ={0})'.format(item_id,item_id))\r\n    row = cursor.fetchall()\r\n    users = []\r\n    for doc in row:\r\n        user = {\r\n            \"rno\": doc[1],\r\n            \"instime\": str(doc[0]),\r\n            \"sno\": doc[2],\r\n            \"xdata\": doc[3],\r\n            \"ydata\": doc[4],\r\n            \"zdata\": doc[5],\r\n        }\r\n        users.append(user)\r\n    \r\n    return user\r\n\r\n\t\t\t<\/pre>\r\n\t\t<\/details>\r\n\t<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<p>\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067 API \u3092\u7acb\u3061\u4e0a\u3052\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\n\r\nPython run uvicorn \u2013host 0.0.0.0 api.main:app\r\n\r\n\t\t\t<\/pre>\r\n\r\n\r\n\r\n<p><img src=\"https:\/\/www.agtech.co.jp\/blog\/wp-content\/uploads\/2022\/01\/025_api.png\" width=\"100%\" \/><\/p>\r\n\r\n\r\n\r\n<p>\u3053\u306e\u72b6\u614b\u3067\u3001\u30d6\u30e9\u30a6\u30b6\u3067\u4ee5\u4e0b\u306e URL \u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3059\u3002<br>\r\n<a href=\"http:\/\/localhost:8000\/docs\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/localhost:8000\/docs<\/a><\/p>\r\n\r\n<p>\u3059\u308b\u3068\u3053\u306e\u3088\u3046\u306b\u3001GET \/sno\/{item_id} \u3068\u3044\u3046\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u304c\u73fe\u308c\u307e\u3059\u3002\u3053\u308c\u3067\u30b5\u30fc\u30d0\u30fc\u304c\u7acb\u3061\u4e0a\u304c\u308a\u307e\u3057\u305f\u3002<\/p>\r\n\r\n\r\n\r\n<p><img src=\"https:\/\/www.agtech.co.jp\/blog\/wp-content\/uploads\/2022\/01\/025_endpoint_1.png\" width=\"100%\" \/><\/p>\r\n\r\n\r\n\r\n\r\n<h2>Dashboard.js \u306e\u4f5c\u6210<\/h2>\r\n<p>\u4eca\u56de\u306f create-react-app \u306e\u96db\u5f62\u3092\u7528\u3044\u307e\u3057\u305f\u3002<\/p>\r\n\r\n\r\n\r\n<p>\u30d5\u30ed\u30f3\u30c8\u5074\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u69cb\u6210\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002\uff08\u4e3b\u8981\u30d5\u30a1\u30a4\u30eb\u306e\u307f\u63b2\u8f09\uff09<\/p>\r\n\r\n<ul class=\"tree_view\">\r\n\t<li>frontend\/src\/\r\n\t\t<ul>\r\n\t\t\t<li>node_modules\/<\/li>\r\n\t\t\t<li>components\/\r\n\t\t\t\t<ul>\r\n\t\t\t\t\t<li>RealtimeLineChart.js<\/li>\r\n\t\t\t\t\t<li>xxxxxx.js<\/li>\r\n\t\t\t\t<\/ul>\r\n\t\t\t<\/li>\r\n\t\t\t<li>pages\/\r\n\t\t\t\t<ul>\r\n\t\t\t\t\t<li>Dashboard.js<\/li>\r\n\t\t\t\t\t<li>Settings.js<\/li>\r\n\t\t\t\t\t<li><\/li>\r\n\t\t\t\t<\/ul>\r\n\t\t\t<\/li>\r\n\t\t\t<li>\u30fb\u30fb\u30fb\u30fb\u30fb<\/li>\r\n\t\t\t<li>\u30fb\u30fb\u30fb\u30fb\u30fb<\/li>\r\n\t\t<\/ul>\r\n\t<\/li>\r\n<\/ul>\r\n\r\n<p>dashboard.js \u306e\u4ee5\u4e0b\u306e\u90e8\u5206\u3067\u30b5\u30fc\u30d0\u30fc\u5074\u3068\u306e\u3084\u308a\u53d6\u308a\u3092\u884c\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\r\n<p>\u203bhttp:\/\/0.0.0.0:8000\/ \u306f\u3001\u4e0a\u8a18\u3067\u69cb\u7bc9\u3057\u305f API \u30b5\u30fc\u30d0\u30fc\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\uff1cdashboard.js\uff1e<\/p>\r\n\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\n   \r\n const getSensorData =   (data,id) => {\r\n        return new Promise(async(resolve, reject)=>{\r\n          try {       \r\n              const sensor_data =  await axios.get(`http:\/\/0.0.0.0:8000\/sno\/${id}`).then((res) => {\r\n\r\n\t\t\t<\/pre>\r\n\r\n\r\n\r\n<p>\u30b0\u30e9\u30d5\u306e\u63cf\u753b\u306f React Apex-chart \u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\uff1cRealtimeLineChart.js\uff1e<\/p>\r\n\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\n\r\nimport Chart from \"react-apexcharts\"; \r\n\r\n\t\t\t<\/pre>\r\n\r\n\r\n\r\n<h2><a id=\"way4\"><\/a>\uff14\uff0e\u7d50\u679c<\/h2>\r\n<p>\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\/\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u7528\u306b\u305d\u308c\u305e\u308c\u30bf\u30fc\u30df\u30ca\u30eb\u3092\u7acb\u3061\u4e0a\u3052\u3066\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\uff1c\u30b5\u30fc\u30d0\u30fc\u5074\uff1e<\/p>\r\n\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\n\r\nPython run uvicorn \u2013host 0.0.0.0 api.main:app\r\n\r\npython server.py\r\n\r\n\t\t\t<\/pre>\r\n\r\n\r\n\r\n<p>\uff1c\u30d5\u30ed\u30f3\u30c8\u5074\uff1e<\/p>\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">\r\n\r\nnpm run start\r\n\r\n\t\t\t<\/pre>\r\n\r\n\r\n\r\n<p>\u30d6\u30e9\u30a6\u30b6\u304b\u3089 localhost:3000 \u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3053\u3068\u3067\u30a2\u30d7\u30ea\u3092\u5229\u7528\u3067\u304d\u307e\u3059\u3002\uff08npm run start \u3067\u81ea\u52d5\u3067\u7acb\u3061\u4e0a\u304c\u308a\u307e\u3059\uff09<\/p>\r\n\r\n\r\n\r\n<p><img src=\"https:\/\/www.agtech.co.jp\/blog\/wp-content\/uploads\/2022\/01\/025_web_dashboard_sensor_kai2.gif\" width=\"100%\" \/><\/p>\r\n\r\n\r\n\r\n<p>\uff13\u53f0\u306e\u8a2d\u5099\u304b\u3089\u767a\u3059\u308b\u632f\u52d5\u30c7\u30fc\u30bf\u306e\uff11\u5206\u3054\u3068\u5e73\u5747\u5024\u306e\u63a8\u79fb\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u3053\u306e\u30b0\u30e9\u30d5\u304b\u3089\u7a81\u51fa\u3057\u305f\u5024\u3084\u7570\u5e38\u306a\u5024\u306e\u63a8\u79fb\u3092\u8996\u899a\u7684\u306b\u8a8d\u8b58\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\r\n<p>\u203b\uff11\u5206\u3054\u3068\u306e\u30c7\u30fc\u30bf\u63a8\u79fb\u3092\u65e9\u9001\u308a\u3067\u8868\u793a\u3057\u3066\u3044\u307e\u3059\u3002<br>\r\n\u203b\u6700\u5927\u5024\u3001\u6700\u5c0f\u5024\u306e\u8868\u793a\u306f\u5272\u611b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\r\n\r\n\r\n\r\n<p>\u7523\u696d\u7528\u9014\u5411\u3051\u306b\u8010\u4e45\u6027\u3092\u5f37\u5316\u3057\u305f netPI \u3068 IoT \u5411\u3051\u5c0f\u578b\u30c7\u30d0\u30a4\u30b9\u306b\u642d\u8f09\u53ef\u80fd\u306a\u8efd\u91cf\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 Actian Zen \u3092\u4f7f\u3063\u305f\u30b7\u30b9\u30c6\u30e0\u306e\u4e00\u4f8b\u3092\u793a\u3057\u307e\u3057\u305f\u3002<\/p>\r\n\r\n\r\n\r\n<p>\u88fd\u9020\u73fe\u5834\u306e IT \u5316\u3084 IP \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u5bfe\u5fdc\u306e\u30a8\u30c3\u30b8\u30c7\u30d0\u30a4\u30b9\u306e\u6d3b\u7528\u306f\u4eca\u5f8c\u3082\u62e1\u5927\u3057\u3066\u3044\u304f\u3068\u601d\u308f\u308c\u307e\u3059\u3002\u5c0f\u30ea\u30bd\u30fc\u30b9\u3067\u8efd\u91cf\u30fb\u8efd\u5feb\u306a\u51e6\u7406\u3092\u5b9f\u73fe\u3059\u308b NoSQL \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30fbActian Zen \u3092\u305c\u3072\u3054\u6d3b\u7528\u304f\u3060\u3055\u3044\u3002<\/p>\r\n\r\n\r\n\r\n<p>\u203b\u5f53\u8a18\u4e8b\u306b\u63b2\u8f09\u3057\u3066\u3044\u308b\u30b3\u30fc\u30c9\u306f\u3001\u672c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d7\u30ed\u30b0\u30e9\u30e0\u304b\u3089\u4e00\u90e8\u3092\u629c\u7c8b\u3057\u305f\u3082\u306e\u3067\u3059\u3002\u5168\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u300csample.zip\u300d\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002\uff08\u88dc\u8db3\u8aac\u660e\u3092 Readme.txt \u306b\u8a18\u8f09\u3057\u3066\u3044\u307e\u3059\uff09<br>\u3054\u4e0d\u660e\u306a\u70b9\u304c\u3042\u308a\u307e\u3057\u305f\u3089\u304a\u6c17\u8efd\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002<\/p>\r\n<p style=\"padding-left: 10px;\">\r\n\u30fb<a href=\"\/blog\/download\/025\/Readme.txt\" target=\"_blank\" rel=\"noopener noreferrer\">Readme.txt<\/a><br>\r\n\u30fb<a href=\"\/blog\/download\/025\/sample.zip\">sample.zip<\/a><\/p>\r\n\r\n\r\n\r\n<p>\u25bc Actian Zen \u306e\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089<br>\r\n<a href=\"\/actian\/product\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.agtech.co.jp\/actian\/product\/<\/a><\/p>\r\n\r\n\r\n\r\n<p>\u25bc \u30d2\u30eb\u30b7\u30e3\u30fc\u30fb\u30b8\u30e3\u30d1\u30f3\u682a\u5f0f\u4f1a\u793e\u300cnetPI\u300d\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089<br>\r\n<a href=\"https:\/\/www.hilscher.com\/ja\/netpi\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.hilscher.com\/ja\/netpi\/<\/a><\/p>","protected":false},"excerpt":{"rendered":"\uff0a\u76ee\u6b21\uff0a \u30bb\u30f3\u30b5\u30fc\u30c7\u30fc\u30bf\u3092\u6d3b\u7528\u3057\u305f\u8a2d\u5099\u306e\u72b6\u614b\u76e3\u8996\u30b7\u30b9\u30c6\u30e0 \u30a8\u30c3\u30b8\u5074\u30b7\u30b9\u30c6\u30e0\u74b0\u5883 \u5206\u6790\u5074\u30b7\u30b9\u30c6\u30e0\u74b0\u5883 \u7d50\u679c \uff11\uff0e\u30bb\u30f3\u30b5\u30fc\u30c7\u30fc\u30bf\u3092\u6d3b\u7528\u3057\u305f\u8a2d\u5099\u306e\u72b6\u614b\u76e3\u8996\u30b7\u30b9\u30c6\u30e0 IIoT\uff08Industrial IoT\uff09\u5206\u91ce\u3067\u306f\u3001\u6a5f\u68b0\u8a2d\u5099\u304b\u3089 [&hellip;]","protected":false},"author":1,"featured_media":3897,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"product":[58,75],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.agtech.co.jp\/blog\/wp-json\/wp\/v2\/posts\/3889"}],"collection":[{"href":"https:\/\/www.agtech.co.jp\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.agtech.co.jp\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.agtech.co.jp\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.agtech.co.jp\/blog\/wp-json\/wp\/v2\/comments?post=3889"}],"version-history":[{"count":21,"href":"https:\/\/www.agtech.co.jp\/blog\/wp-json\/wp\/v2\/posts\/3889\/revisions"}],"predecessor-version":[{"id":7457,"href":"https:\/\/www.agtech.co.jp\/blog\/wp-json\/wp\/v2\/posts\/3889\/revisions\/7457"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.agtech.co.jp\/blog\/wp-json\/wp\/v2\/media\/3897"}],"wp:attachment":[{"href":"https:\/\/www.agtech.co.jp\/blog\/wp-json\/wp\/v2\/media?parent=3889"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.agtech.co.jp\/blog\/wp-json\/wp\/v2\/categories?post=3889"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.agtech.co.jp\/blog\/wp-json\/wp\/v2\/tags?post=3889"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.agtech.co.jp\/blog\/wp-json\/wp\/v2\/product?post=3889"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}