{"id":16,"date":"2021-04-27T10:31:14","date_gmt":"2021-04-27T02:31:14","guid":{"rendered":"http:\/\/iot.osvlabs.com\/?p=16"},"modified":"2021-11-01T17:34:41","modified_gmt":"2021-11-01T09:34:41","slug":"iot%e5%bc%80%e6%ba%90%e9%a1%b9%e7%9b%aethingsboard%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e6%90%ad%e5%bb%ba","status":"publish","type":"post","link":"https:\/\/blog.osvlabs.com\/?p=16","title":{"rendered":"IOT\u5f00\u6e90\u9879\u76eeThingsboard\u73af\u5883\u642d\u5efa"},"content":{"rendered":"\n<p>Thingsboard\u793e\u533a\u7248\u672c\u5730\u5f00\u53d1\u73af\u5883\u642d\u5efa\uff0cJava\u5c0f\u767d\u7684\u4e0d\u5b8c\u5168\u653b\u7565\uff0c\u9646\u7eed\u8865\u5145<\/p>\n\n\n<h3 id=\"\u7cfb\u7edf\u73af\u5883\">\u7cfb\u7edf\u73af\u5883<\/h3>\n\n\n<p>\u672c\u673a\u5df2\u6709\u7684\u7cfb\u7edf\u73af\u5883<\/p>\n\n\n<ol><li>MacOS 10.15.6<\/li><li>JDK 1.8<\/li><li>Git 2.24.3<\/li><li>Node 10.16.0<\/li><li>IDEA<\/li><\/ol>\n\n\n<h3 id=\"\u5b89\u88c5maven\">\u5b89\u88c5maven<\/h3>\n\n\n<p>\u4f7f\u7528HomeBrew\u5b89\u88c5<\/p>\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>1<\/td><td>brew install maven<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<h3 id=\"\u4ee3\u7801\u7f16\u8bd1\">\u4ee3\u7801\u7f16\u8bd1<\/h3>\n\n\n<p>github\u62c9\u53d6\u4ee3\u7801\uff0c\u5e76\u5207\u6362\u5230\u6700\u65b0\u5206\u652f<\/p>\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>1<br>2<\/td><td>git clone https:\/\/github.com\/thingsboard\/thingsboard.git<br>git checkout release-3.1<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p>maven\u7f16\u8bd1<\/p>\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>1<\/td><td>mvn clean install -DskipTests<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<blockquote class=\"wp-block-quote\"><p>\u65f6\u95f4\u8f83\u957f\uff0c\u4e3a\u4e86\u907f\u514dyarn\u5b89\u88c5\u62a5\u9519\uff0c\u53ef\u4ee5\u5148cd\u5230ui-ngx\u76ee\u5f55\u4e0b\u6267\u884cyarn install\uff0c\u7b49\u5f85\u7684\u540c\u65f6\u53ef\u4ee5\u5148\u5b89\u88c5\u4e0bpostgresql<\/p><\/blockquote>\n\n\n<h3 id=\"\u5b89\u88c5postgresql\">\u5b89\u88c5postgresql<\/h3>\n\n\n<p>\u4f7f\u7528HomeBrew\u5b89\u88c5<\/p>\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>1<\/td><td>brew install postgresql<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p>\u5b89\u88c5\u5b8c\u6210\u540e\u672c\u5730\u521b\u5efapostgresql\u6570\u636e\u5e93\uff0c\u5e76\u4fee\u6539\/application\/src\/main\/resources\u76ee\u5f55\u4e0bthingsboard.yml\u6587\u4ef6\u4e2d\u7684\u6570\u636e\u5e93\u914d\u7f6e<\/p>\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br>13<br>14<br>15<br>16<br>17<br>18<\/td><td># SQL DAO Configuration<br>spring:<br>data:<br>jpa:<br>repositories:<br>enabled: &#8220;true&#8221;<br>jpa:<br>open-in-view: &#8220;false&#8221;<br>hibernate:<br>ddl-auto: &#8220;none&#8221;<br>database-platform: &#8220;${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.PostgreSQLDialect}&#8221;<br>datasource:<br>driverClassName: &#8220;${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}&#8221;<br>url: &#8220;${SPRING_DATASOURCE_URL:jdbc:postgresql:\/\/localhost:5432\/thingsboard}&#8221; \/\/\u6570\u636e\u5e93\u8fde\u63a5<br>username: &#8220;${SPRING_DATASOURCE_USERNAME:postgres}&#8221; \/\/ \u7528\u6237\u540d<br>password: &#8220;${SPRING_DATASOURCE_PASSWORD:postgres}&#8221; \/\/ \u5bc6\u7801<br>hikari:<br>maximumPoolSize: &#8220;${SPRING_DATASOURCE_MAXIMUM_POOL_SIZE:16}&#8221;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<h3 id=\"Maven\u6784\u5efa\">Maven\u6784\u5efa<\/h3>\n\n\n<p>\u4f7f\u7528IDEA\u6253\u5f00\u9879\u76ee\uff0c\u53f3\u952e\u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u7684pom.xml\u6587\u4ef6\uff0c\u6dfb\u52a0\u4e3amaven\u9879\u76ee\uff0c\u4e4b\u540e\u53f3\u952eMaven-&gt;Reload project<br><a href=\"http:\/\/localhost:8009\/img\/thingsboard1.png\"><\/a><\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"445\" height=\"696\" src=\"http:\/\/www.osvlabs.com\/blog\/wp-content\/uploads\/2021\/04\/thingsboard1.jpg\" alt=\"\" class=\"wp-image-18\" srcset=\"https:\/\/blog.osvlabs.com\/wp-content\/uploads\/2021\/04\/thingsboard1.jpg 445w, https:\/\/blog.osvlabs.com\/wp-content\/uploads\/2021\/04\/thingsboard1-192x300.jpg 192w\" sizes=\"(max-width: 445px) 100vw, 445px\" \/><\/figure>\n\n\n<h3 id=\"\u586b\u5145\u6570\u636e\">\u586b\u5145\u6570\u636e<\/h3>\n\n\n<p>\u9879\u76ee\u7684\u6570\u636e\u8868sql\u6587\u4ef6\u4f4d\u4e8e\/dao\/src\/main\/resources\/sql\u76ee\u5f55\u4e0b\uff0c\u7528\u6237\u6570\u636e\u586b\u5145\u6587\u4ef6\u662f\/dao\/src\/test\/resources\/sql\u76ee\u5f55\u4e0b\u7684system-data.sql\uff0c\u6700\u521d\u7684\u65f6\u5019\u6211\u662f\u624b\u52a8\u5bfc\u5165\u7684sql\u6587\u4ef6\uff0c\u540e\u6765\u53d1\u73b0\u4e86\u6b63\u786e\u7684\u6253\u5f00\u65b9\u5f0f<\/p>\n\n\n<p>\u63d0\u4f9b\u4e86\u6709\u4e00\u4e2a\u811a\u672c\u6587\u4ef6\u6765\u586b\u5145\u6570\u636e\uff0c\u5728\u9879\u76ee\u6839\u76ee\u5f55\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4<\/p>\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>1<br>2<br>3<\/td><td>cd application\/target\/bin\/install<br>chmod a+x install_dev_db.sh<br>sudo .\/install_dev_db.sh<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<h3 id=\"\u8fd0\u884c\u9879\u76ee\">\u8fd0\u884c\u9879\u76ee<\/h3>\n\n\n<p>\u627e\u5230\/application\/src\/main\/java\/org.thingsboard.server\u76ee\u5f55\u4e0b\u7684ThingsboardServerApplication\u6587\u4ef6\uff0c\u53f3\u952e\u8fd0\u884c\u5373\u53ef<\/p>\n\n\n<p>\u8fd0\u884c\u6210\u529f\u540e\u8bbf\u95eelocalhost:8080\uff0c\u4f7f\u7528\u586b\u5145\u7684\u6d4b\u8bd5\u7528\u6237\u767b\u5f55<\/p>\n\n\n<p>\u7cfb\u7edf\u7ba1\u7406\u5458 \u7528\u6237\u540d\uff1asysadmin@thingsboard.org \u5bc6\u7801\uff1asysadmin<\/p>\n\n\n<p>\u79df\u6237 \u7528\u6237\u540d\uff1atenant@thingsboard.org \u5bc6\u7801\uff1atenant<\/p>\n\n\n<p>\u987e\u5ba2 \u7528\u6237\u540d\uff1acustomer@thingsboard.org \u5bc6\u7801\uff1acustomer<\/p>\n\n\n<h3 id=\"\u524d\u7aef\u5f00\u53d1\">\u524d\u7aef\u5f00\u53d1<\/h3>\n\n\n<p>\u547d\u4ee4\u884c\u8fdb\u5165ui-ngx\u76ee\u5f55\uff0c\u6267\u884cnpm run start\u8fd0\u884c\u8bbf\u95eelocalhost:4200\u5373\u53ef\uff0c\u9700\u8981\u540e\u53f0\u540c\u65f6\u8fd0\u884c<\/p>\n\n\n<h3 id=\"\u76ee\u5f55\u7ed3\u6784\">\u76ee\u5f55\u7ed3\u6784<\/h3>\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<\/td><td>application: \u5e94\u7528\u7a0b\u5e8f\u4e3b\u76ee\u5f55\uff0c\u6574\u4f53\u9879\u76ee\u6253\u5305\u65f6\u4e5f\u662f\u8fd9\u4e2aModule<br>common: \u516c\u5171\u5de5\u5177\u96c6\u3001\u65b9\u6cd5\u96c6\u6a21\u5757<br>dao: \u6570\u636e\u8bbf\u95ee\u5bf9\u8c61\u96c6\u5408\uff0c\u6574\u4e2a\u5e94\u7528\u7684DAO\u5c42\uff0c\u4e00\u822c\u53ea\u8981dao\u7684\u90fd\u8981data\uff0c\u4ee5\u5b9e\u73b0\u4e0d\u540c\u6570\u636e\u5e93\u6570\u636e\u7ed3\u6784\u517c\u5bb9\u3002<br>docker: \u96c6\u7fa4\u90e8\u7f72-docker\u5bb9\u5668\u89e3\u51b3\u65b9\u6848\uff0c\u5305\u542b\u4e86\u90e8\u7f72\u73af\u5883\u548cshell\u811a\u672c<br>k8s: \u5bb9\u5668\u7f16\u6392\u5de5\u5177Kubernetes\u7684\u914d\u7f6e\u6587\u4ef6\u548c\u81ea\u52a8\u5316\u811a\u672c<br>msa: \u5fae\u670d\u52a1\u534a\u81ea\u52a8\u6784\u5efa\u6a21\u5757\uff0c\u5305\u542b\u4e86\u9ed1\u76d2\u6d4b\u8bd5\u3001js\u6267\u884c\u5f15\u64ce\u7b49<br>netty-mqtt: TB\u7684MQTT\u534f\u8bae\u7684\u5b9e\u73b0\uff0c\u5305\u62ec\u8fde\u63a5\u3001\u53d1\u5e03\u3001\u8ba2\u9605\u3001\u9057\u5631\u3001\u5173\u95ed\u7b49<br>rule-engine: TB\u7684\u89c4\u5219\u5f15\u64ce\uff0cTB\u6ca1\u6709\u7528\u5f00\u6e90\u7684Drools\u7b49\u5de5\u5177\uff0c\u800c\u662f\u81ea\u5df1\u5f00\u53d1\u4e86\u4e00\u5957\u89c4\u5219\u5f15\u64ce\uff0c\u4e3b\u8981\u5305\u542b3\u4e2a\u7ec4\u4ef6\u548c1\u5957\u670d\u52a1\u63a5\u53e3<br>tools: \u5de5\u5177\u6a21\u5757\uff0c\u4e3b\u8981\u5b9e\u73b0\u4e86MQTT with SSL\u5ba2\u6237\u7aef\u548cREST\u5ba2\u6237\u7aef\u3002\u53ef\u4ee5\u6d4b\u8bd5\u7528\u3002<br>transport: \u4e09\u79cd\u6d88\u606f\u4f20\u8f93\u670d\u52a1\u542f\u52a8\u5668\uff0c\u670d\u52a1\u7684\u5b9e\u73b0\u53c2\u8003common\/transport,mqtt\u534f\u8bae\u7684\u5b9e\u73b0\u89c1netty-mqtt<br>ui: TB\u7684\u7528\u6237\u754c\u9762\uff0c\u4e3b\u8981\u4f7f\u7528AngularJS\u548creact\u7ec4\u4ef6\uff0c\u5355\u9875\u5e94\u7528\uff08\u8981\u66ff\u6362\u6389\uff0c\u7528Vue\uff09<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Thingsboard\u793e\u533a\u7248\u672c\u5730\u5f00\u53d1\u73af\u5883\u642d\u5efa\uff0cJava\u5c0f\u767d\u7684\u4e0d\u5b8c\u5168\u653b\u7565\uff0c\u9646\u7eed\u8865\u5145 \u7cfb\u7edf\u73af\u5883 \u672c\u673a\u5df2\u6709\u7684\u7cfb\u7edf\u73af\u5883 MacOS 10.15.6 JDK 1.8 Git 2.24.3 Node 10.16.\u2026<\/p>\n","protected":false},"author":1,"featured_media":141,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":5}},"_links":{"self":[{"href":"https:\/\/blog.osvlabs.com\/index.php?rest_route=\/wp\/v2\/posts\/16"}],"collection":[{"href":"https:\/\/blog.osvlabs.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.osvlabs.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.osvlabs.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.osvlabs.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16"}],"version-history":[{"count":5,"href":"https:\/\/blog.osvlabs.com\/index.php?rest_route=\/wp\/v2\/posts\/16\/revisions"}],"predecessor-version":[{"id":142,"href":"https:\/\/blog.osvlabs.com\/index.php?rest_route=\/wp\/v2\/posts\/16\/revisions\/142"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.osvlabs.com\/index.php?rest_route=\/wp\/v2\/media\/141"}],"wp:attachment":[{"href":"https:\/\/blog.osvlabs.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.osvlabs.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=16"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.osvlabs.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=16"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}