• 新建 docker-compose.yml

    version: '2'
    services:
    web:
      image: odoo:14.0
      depends_on:
        - db
      ports:
        - "8069:8069"
      volumes:
        - odoo-web-data:/var/lib/odoo
        - ./config:/etc/odoo
        - ./addons:/mnt/extra-addons
    db:
      image: postgres:10
      environment:
        - POSTGRES_DB=postgres
        - POSTGRES_PASSWORD=odoo
        - POSTGRES_USER=odoo
        - PGDATA=/var/lib/postgresql/data/pgdata
      volumes:
        - odoo-db-data:/var/lib/postgresql/data/pgdata
    volumes:
    odoo-web-data:
    odoo-db-data:
  • 启动 docker

    docker-compose up -d
  • 打开浏览器 http://localhost:8069
  • 使用 Apache HTTPD 反向代理

    <VirtualHost *:80>
      DocumentRoot "/var/www/html/odoo.cn"
      ServerName www.odoo.cn
      RewriteEngine on
      RewriteCond %{SERVER_PORT} !^443$
      RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
      <Directory "/var/www/html/odoo.cn">
          allow from all
          Options None
          Require all granted
      </Directory>
    </VirtualHost>
    <VirtualHost *:443>
      DocumentRoot "/var/www/html/odoo.cn"
      ServerName www.odoo.cn
      RewriteEngine on
      <Directory "/var/www/html/odoo.cn">
          allow from all
          Options FollowSymLinks
          Require all granted
          AllowOverride All 
      </Directory>
      SSLEngine on
      SSLCertificateFile /etc/httpd/conf.d/www.odoo.cn_public.crt
      SSLCertificateKeyFile /etc/httpd/conf.d/www.odoo.cn.key
      SSLCertificateChainFile /etc/httpd/conf.d/www.odoo.cn_chain.crt
      ProxyRequests Off
      ProxyPreserveHost On
      ProxyPass / http://127.0.0.1:8069/
      ProxyPassReverse / http://127.0.0.1:8069/
      ProxyErrorOverride off
    </VirtualHost>
  • 打开浏览器 http://www.odoo.cn ,直接访问域名,注意要使用 https 需申请域名 ssl 证书

软件平台演示

产品特性

YiAIR-86-印刷-2.png

  • 无线远传:NB-IoT全网通
  • 干电池供电:2节AA电池(5号)
  • 静态功耗:< 20uA,可用1年*
  • 温/湿度精度:±0.2℃/±3%
  • 私有化 IoT 平台:多租户管理
  • 尺寸:86 x 86 x 30mm

适用范围

  • 供暖、冷链、厂房、仓库
  • 办公室、会议室、学校、幼儿园
  • 酒店、医院、商场、咖啡厅
  • 酒吧、餐馆、地铁、地下室

多租户

多租户.png

仪表板

dashboard.png

  • 编辑 docker-compose.yml
version: "3.7"
services:
  db:
    image: postgres:11.6
    restart: always
    environment:
      POSTGRES_DB: postgres
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      PGDATA: /var/lib/postgresql/data
    volumes:
      - db-data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
 
  pgadmin:
    image: dpage/pgadmin4
    restart: always
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@yiqisoft.cn
      PGADMIN_DEFAULT_PASSWORD: talent
      PGADMIN_LISTEN_PORT: 80
    ports:
      - "8088:80"
    volumes:
      - pgadmin-data:/var/lib/pgadmin
    links:
      - "db:pgsql-server"
volumes:
  db-data:
  pgadmin-data:

注意:文件保存在本地 volumes 中,如果需要再次使用,请保存!

  • 启动

    docker-compose up -d
  • 登录 pgAdmin 4

打开本地浏览器 http://localhost:8080 , 使用用户名 admin@yiqisoft.cn 和密码 talent 登录

假设 ThingsBoard 以 docker 方式运行,需要通过反向映射来提供服务,为了加强安全性,用 https 和 wss,但是,wss 映射需要注意最后几行配置。

<VirtualHost *>
    DocumentRoot /var/www/iot
    ServerName iot.domain
    RewriteEngine on
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]

    <Directory /var/www/iot>
        allow from all
        Options None
        Require all granted
    </Directory>
</VirtualHost>
<VirtualHost *:443>
    DocumentRoot "/var/www/iot"
    ServerName iot.doamin
    <Directory "/var/www/iot">
    allow from all
    Options FollowSymLinks
    Require all granted
    AllowOverride All 
    </Directory>
    SSLEngine on
    SSLCertificateFile /etc/httpd/conf.d/server.crt
    SSLCertificateKeyFile /etc/httpd/conf.d/server.key
    SSLCertificateChainFile /etc/httpd/conf.d/ca.crt

    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8088/
    ProxyPassReverse / http://127.0.0.1:8088/
    ProxyPass /api/ws ws://127.0.0.1:8088/
    ProxyPassReverse /api/ws ws://127.0.0.1:8088/

    RewriteEngine on
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule /(.*) ws://127.0.0.1:8088/$1 [P,L]
</VirtualHost>

上篇文章介绍了如何对 ThingsBoard 进行无缝二次开发,在进一步集成 Spring Data Jpa 时,导致依赖注入问题,经过几十个小时的不懈努力,终于得到解决。参考了官方代码,只需要简单一个 Config 配置文件即可解决。

问题

  • 不多说,看图,你估计会遇到
    error.png

必要条件

正常开发模式

  • Controller
  • Entity,Pojo,Domain
  • Dao,Repository
  • Service
  • AutoConfig

解决方案

  • 官方参考
    tb.png

      @Configuration
      @EnableAutoConfiguration
      @ComponentScan("org.thingsboard.server.dao.sql")
      @EnableJpaRepositories("org.thingsboard.server.dao.sql")
      @EntityScan("org.thingsboard.server.dao.model.sql")
      @EnableTransactionManagement
      public class JpaDaoConfig {
      
      }
  • 依葫芦画瓢
    eco.png

      @Configuration
      @ComponentScan({ "cn.yiqisoft.ecolabanalysis.controller", "cn.yiqisoft.ecolabanalysis.services" })
      @EnableJpaRepositories("cn.yiqisoft.ecolabanalysis.dao")
      @EntityScan("cn.yiqisoft.ecolabanalysis.domain")
      public class ReportAutoConfiguration {
      }
  • ThingsboardServerApplication 扫描自己的 namespace

      @ComponentScan({"org.thingsboard.server","cn.yiqisoft.ecolabanalysis"})
  • 验证结果
    result.jpeg

**

至此,完全独立扩展 ThingsBoard!

**