Showing
33 changed files
with
294 additions
and
126 deletions
@@ -21,9 +21,9 @@ | @@ -21,9 +21,9 @@ | ||
21 | <parent> | 21 | <parent> |
22 | <groupId>org.thingsboard</groupId> | 22 | <groupId>org.thingsboard</groupId> |
23 | <version>0.0.1-SNAPSHOT</version> | 23 | <version>0.0.1-SNAPSHOT</version> |
24 | - <artifactId>server</artifactId> | 24 | + <artifactId>thingsboard</artifactId> |
25 | </parent> | 25 | </parent> |
26 | - <groupId>org.thingsboard.server</groupId> | 26 | + <groupId>org.thingsboard</groupId> |
27 | <artifactId>application</artifactId> | 27 | <artifactId>application</artifactId> |
28 | <packaging>jar</packaging> | 28 | <packaging>jar</packaging> |
29 | 29 | ||
@@ -47,35 +47,35 @@ | @@ -47,35 +47,35 @@ | ||
47 | <classifier>linux-x86_64</classifier> | 47 | <classifier>linux-x86_64</classifier> |
48 | </dependency> | 48 | </dependency> |
49 | <dependency> | 49 | <dependency> |
50 | - <groupId>org.thingsboard.server</groupId> | 50 | + <groupId>org.thingsboard</groupId> |
51 | <artifactId>extensions-api</artifactId> | 51 | <artifactId>extensions-api</artifactId> |
52 | </dependency> | 52 | </dependency> |
53 | <dependency> | 53 | <dependency> |
54 | - <groupId>org.thingsboard.server</groupId> | 54 | + <groupId>org.thingsboard</groupId> |
55 | <artifactId>extensions-core</artifactId> | 55 | <artifactId>extensions-core</artifactId> |
56 | </dependency> | 56 | </dependency> |
57 | <dependency> | 57 | <dependency> |
58 | - <groupId>org.thingsboard.server.common</groupId> | 58 | + <groupId>org.thingsboard.common</groupId> |
59 | <artifactId>transport</artifactId> | 59 | <artifactId>transport</artifactId> |
60 | </dependency> | 60 | </dependency> |
61 | <dependency> | 61 | <dependency> |
62 | - <groupId>org.thingsboard.server.transport</groupId> | 62 | + <groupId>org.thingsboard.transport</groupId> |
63 | <artifactId>http</artifactId> | 63 | <artifactId>http</artifactId> |
64 | </dependency> | 64 | </dependency> |
65 | <dependency> | 65 | <dependency> |
66 | - <groupId>org.thingsboard.server.transport</groupId> | 66 | + <groupId>org.thingsboard.transport</groupId> |
67 | <artifactId>coap</artifactId> | 67 | <artifactId>coap</artifactId> |
68 | </dependency> | 68 | </dependency> |
69 | <dependency> | 69 | <dependency> |
70 | - <groupId>org.thingsboard.server.transport</groupId> | 70 | + <groupId>org.thingsboard.transport</groupId> |
71 | <artifactId>mqtt</artifactId> | 71 | <artifactId>mqtt</artifactId> |
72 | </dependency> | 72 | </dependency> |
73 | <dependency> | 73 | <dependency> |
74 | - <groupId>org.thingsboard.server</groupId> | 74 | + <groupId>org.thingsboard</groupId> |
75 | <artifactId>dao</artifactId> | 75 | <artifactId>dao</artifactId> |
76 | </dependency> | 76 | </dependency> |
77 | <dependency> | 77 | <dependency> |
78 | - <groupId>org.thingsboard.server</groupId> | 78 | + <groupId>org.thingsboard</groupId> |
79 | <artifactId>dao</artifactId> | 79 | <artifactId>dao</artifactId> |
80 | <type>test-jar</type> | 80 | <type>test-jar</type> |
81 | <scope>test</scope> | 81 | <scope>test</scope> |
@@ -103,7 +103,7 @@ | @@ -103,7 +103,7 @@ | ||
103 | <scope>test</scope> | 103 | <scope>test</scope> |
104 | </dependency> | 104 | </dependency> |
105 | <dependency> | 105 | <dependency> |
106 | - <groupId>org.thingsboard.server</groupId> | 106 | + <groupId>org.thingsboard</groupId> |
107 | <artifactId>ui</artifactId> | 107 | <artifactId>ui</artifactId> |
108 | <version>${project.version}</version> | 108 | <version>${project.version}</version> |
109 | <scope>runtime</scope> | 109 | <scope>runtime</scope> |
@@ -141,26 +141,6 @@ | @@ -141,26 +141,6 @@ | ||
141 | <artifactId>spring-context-support</artifactId> | 141 | <artifactId>spring-context-support</artifactId> |
142 | </dependency> | 142 | </dependency> |
143 | <dependency> | 143 | <dependency> |
144 | - <groupId>org.springframework.boot</groupId> | ||
145 | - <artifactId>spring-boot-starter-test</artifactId> | ||
146 | - <scope>test</scope> | ||
147 | - </dependency> | ||
148 | - <dependency> | ||
149 | - <groupId>org.springframework.security</groupId> | ||
150 | - <artifactId>spring-security-test</artifactId> | ||
151 | - <scope>test</scope> | ||
152 | - </dependency> | ||
153 | - <dependency> | ||
154 | - <groupId>com.jayway.jsonpath</groupId> | ||
155 | - <artifactId>json-path</artifactId> | ||
156 | - <scope>test</scope> | ||
157 | - </dependency> | ||
158 | - <dependency> | ||
159 | - <groupId>com.jayway.jsonpath</groupId> | ||
160 | - <artifactId>json-path-assert</artifactId> | ||
161 | - <scope>test</scope> | ||
162 | - </dependency> | ||
163 | - <dependency> | ||
164 | <groupId>com.typesafe.akka</groupId> | 144 | <groupId>com.typesafe.akka</groupId> |
165 | <artifactId>akka-actor_${scala.version}</artifactId> | 145 | <artifactId>akka-actor_${scala.version}</artifactId> |
166 | </dependency> | 146 | </dependency> |
@@ -185,16 +165,6 @@ | @@ -185,16 +165,6 @@ | ||
185 | <artifactId>logback-classic</artifactId> | 165 | <artifactId>logback-classic</artifactId> |
186 | </dependency> | 166 | </dependency> |
187 | <dependency> | 167 | <dependency> |
188 | - <groupId>junit</groupId> | ||
189 | - <artifactId>junit</artifactId> | ||
190 | - <scope>test</scope> | ||
191 | - </dependency> | ||
192 | - <dependency> | ||
193 | - <groupId>org.mockito</groupId> | ||
194 | - <artifactId>mockito-all</artifactId> | ||
195 | - <scope>test</scope> | ||
196 | - </dependency> | ||
197 | - <dependency> | ||
198 | <groupId>javax.mail</groupId> | 168 | <groupId>javax.mail</groupId> |
199 | <artifactId>mail</artifactId> | 169 | <artifactId>mail</artifactId> |
200 | </dependency> | 170 | </dependency> |
@@ -219,11 +189,49 @@ | @@ -219,11 +189,49 @@ | ||
219 | <artifactId>grpc-stub</artifactId> | 189 | <artifactId>grpc-stub</artifactId> |
220 | </dependency> | 190 | </dependency> |
221 | <dependency> | 191 | <dependency> |
192 | + <groupId>io.springfox</groupId> | ||
193 | + <artifactId>springfox-swagger-ui</artifactId> | ||
194 | + </dependency> | ||
195 | + <dependency> | ||
196 | + <groupId>io.springfox</groupId> | ||
197 | + <artifactId>springfox-swagger2</artifactId> | ||
198 | + </dependency> | ||
199 | + <dependency> | ||
222 | <groupId>org.thingsboard.server</groupId> | 200 | <groupId>org.thingsboard.server</groupId> |
223 | <artifactId>tools</artifactId> | 201 | <artifactId>tools</artifactId> |
224 | <version>0.0.1-SNAPSHOT</version> | 202 | <version>0.0.1-SNAPSHOT</version> |
225 | <scope>test</scope> | 203 | <scope>test</scope> |
226 | </dependency> | 204 | </dependency> |
205 | + <dependency> | ||
206 | + <groupId>org.springframework.boot</groupId> | ||
207 | + <artifactId>spring-boot-starter-test</artifactId> | ||
208 | + <scope>test</scope> | ||
209 | + </dependency> | ||
210 | + <dependency> | ||
211 | + <groupId>org.springframework.security</groupId> | ||
212 | + <artifactId>spring-security-test</artifactId> | ||
213 | + <scope>test</scope> | ||
214 | + </dependency> | ||
215 | + <dependency> | ||
216 | + <groupId>com.jayway.jsonpath</groupId> | ||
217 | + <artifactId>json-path</artifactId> | ||
218 | + <scope>test</scope> | ||
219 | + </dependency> | ||
220 | + <dependency> | ||
221 | + <groupId>com.jayway.jsonpath</groupId> | ||
222 | + <artifactId>json-path-assert</artifactId> | ||
223 | + <scope>test</scope> | ||
224 | + </dependency> | ||
225 | + <dependency> | ||
226 | + <groupId>junit</groupId> | ||
227 | + <artifactId>junit</artifactId> | ||
228 | + <scope>test</scope> | ||
229 | + </dependency> | ||
230 | + <dependency> | ||
231 | + <groupId>org.mockito</groupId> | ||
232 | + <artifactId>mockito-all</artifactId> | ||
233 | + <scope>test</scope> | ||
234 | + </dependency> | ||
227 | </dependencies> | 235 | </dependencies> |
228 | 236 | ||
229 | <build> | 237 | <build> |
@@ -337,17 +345,17 @@ | @@ -337,17 +345,17 @@ | ||
337 | <outputDirectory>${project.build.directory}/extensions</outputDirectory> | 345 | <outputDirectory>${project.build.directory}/extensions</outputDirectory> |
338 | <artifactItems> | 346 | <artifactItems> |
339 | <artifactItem> | 347 | <artifactItem> |
340 | - <groupId>org.thingsboard.server.extensions</groupId> | 348 | + <groupId>org.thingsboard.extensions</groupId> |
341 | <artifactId>extension-rabbitmq</artifactId> | 349 | <artifactId>extension-rabbitmq</artifactId> |
342 | <classifier>extension</classifier> | 350 | <classifier>extension</classifier> |
343 | </artifactItem> | 351 | </artifactItem> |
344 | <artifactItem> | 352 | <artifactItem> |
345 | - <groupId>org.thingsboard.server.extensions</groupId> | 353 | + <groupId>org.thingsboard.extensions</groupId> |
346 | <artifactId>extension-rest-api-call</artifactId> | 354 | <artifactId>extension-rest-api-call</artifactId> |
347 | <classifier>extension</classifier> | 355 | <classifier>extension</classifier> |
348 | </artifactItem> | 356 | </artifactItem> |
349 | <artifactItem> | 357 | <artifactItem> |
350 | - <groupId>org.thingsboard.server.extensions</groupId> | 358 | + <groupId>org.thingsboard.extensions</groupId> |
351 | <artifactId>extension-kafka</artifactId> | 359 | <artifactId>extension-kafka</artifactId> |
352 | <classifier>extension</classifier> | 360 | <classifier>extension</classifier> |
353 | </artifactItem> | 361 | </artifactItem> |
@@ -19,11 +19,13 @@ import org.springframework.boot.SpringApplication; | @@ -19,11 +19,13 @@ import org.springframework.boot.SpringApplication; | ||
19 | import org.springframework.boot.autoconfigure.EnableAutoConfiguration; | 19 | import org.springframework.boot.autoconfigure.EnableAutoConfiguration; |
20 | import org.springframework.boot.autoconfigure.SpringBootApplication; | 20 | import org.springframework.boot.autoconfigure.SpringBootApplication; |
21 | import org.springframework.context.annotation.ComponentScan; | 21 | import org.springframework.context.annotation.ComponentScan; |
22 | +import springfox.documentation.swagger2.annotations.EnableSwagger2; | ||
22 | 23 | ||
23 | import java.util.Arrays; | 24 | import java.util.Arrays; |
24 | 25 | ||
25 | @EnableAutoConfiguration | 26 | @EnableAutoConfiguration |
26 | @SpringBootApplication | 27 | @SpringBootApplication |
28 | +@EnableSwagger2 | ||
27 | @ComponentScan({"org.thingsboard.server"}) | 29 | @ComponentScan({"org.thingsboard.server"}) |
28 | public class ThingsboardServerApplication { | 30 | public class ThingsboardServerApplication { |
29 | 31 |
1 | +/** | ||
2 | + * Copyright © 2016 The Thingsboard Authors | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | +package org.thingsboard.server.config; | ||
17 | + | ||
18 | +import org.springframework.context.annotation.Bean; | ||
19 | +import org.springframework.context.annotation.Configuration; | ||
20 | +import org.thingsboard.server.common.data.security.Authority; | ||
21 | +import springfox.documentation.builders.ApiInfoBuilder; | ||
22 | +import springfox.documentation.builders.PathSelectors; | ||
23 | +import springfox.documentation.service.*; | ||
24 | +import springfox.documentation.spi.DocumentationType; | ||
25 | +import springfox.documentation.spi.service.contexts.SecurityContext; | ||
26 | +import springfox.documentation.spring.web.plugins.Docket; | ||
27 | + | ||
28 | +import java.util.List; | ||
29 | + | ||
30 | +import static com.google.common.collect.Lists.newArrayList; | ||
31 | + | ||
32 | +@Configuration | ||
33 | +public class SwaggerConfiguration { | ||
34 | + | ||
35 | + @Bean | ||
36 | + public Docket thingsboardApi() { | ||
37 | + return new Docket(DocumentationType.SWAGGER_2) | ||
38 | + .groupName("thingsboard") | ||
39 | + .apiInfo(apiInfo()) | ||
40 | + .select() | ||
41 | + .paths(PathSelectors.any()) | ||
42 | + .build() | ||
43 | + .securitySchemes(newArrayList(jwtTokenKey())) | ||
44 | + .securityContexts(newArrayList(securityContext())); | ||
45 | + } | ||
46 | + | ||
47 | + private ApiKey jwtTokenKey() { | ||
48 | + return new ApiKey("X-Authorization", "JWT token", "header"); | ||
49 | + } | ||
50 | + | ||
51 | + private SecurityContext securityContext() { | ||
52 | + return SecurityContext.builder() | ||
53 | + .securityReferences(defaultAuth()) | ||
54 | + .forPaths(PathSelectors.regex("/api.*")) | ||
55 | + .build(); | ||
56 | + } | ||
57 | + | ||
58 | + List<SecurityReference> defaultAuth() { | ||
59 | + AuthorizationScope[] authorizationScopes = new AuthorizationScope[3]; | ||
60 | + authorizationScopes[0] = new AuthorizationScope(Authority.SYS_ADMIN.name(), "System administrator"); | ||
61 | + authorizationScopes[1] = new AuthorizationScope(Authority.TENANT_ADMIN.name(), "Tenant administrator"); | ||
62 | + authorizationScopes[2] = new AuthorizationScope(Authority.CUSTOMER_USER.name(), "Customer"); | ||
63 | + return newArrayList( | ||
64 | + new SecurityReference("X-Authorization", authorizationScopes)); | ||
65 | + } | ||
66 | + | ||
67 | + private ApiInfo apiInfo() { | ||
68 | + return new ApiInfoBuilder() | ||
69 | + .title("Thingsboard REST API") | ||
70 | + .description("For instructions how to authorize requests please visit <a href='http://thingsboard.io/docs/rest-auth'>Documentation page</a>") | ||
71 | + .contact(new Contact("Thingsboard team", "http://thingsboard.io", "info@thingsboard.io")) | ||
72 | + .license("Apache License Version 2.0") | ||
73 | + .licenseUrl("https://github.com/thingsboard/thingsboard/blob/master/LICENSE") | ||
74 | + .version("2.0") | ||
75 | + .build(); | ||
76 | + } | ||
77 | + | ||
78 | +} |
@@ -53,10 +53,11 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt | @@ -53,10 +53,11 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt | ||
53 | public static final String JWT_TOKEN_HEADER_PARAM = "X-Authorization"; | 53 | public static final String JWT_TOKEN_HEADER_PARAM = "X-Authorization"; |
54 | public static final String JWT_TOKEN_QUERY_PARAM = "token"; | 54 | public static final String JWT_TOKEN_QUERY_PARAM = "token"; |
55 | 55 | ||
56 | + public static final String WEBJARS_ENTRY_POINT = "/webjars/**"; | ||
56 | public static final String DEVICE_API_ENTRY_POINT = "/api/v1/**"; | 57 | public static final String DEVICE_API_ENTRY_POINT = "/api/v1/**"; |
57 | public static final String FORM_BASED_LOGIN_ENTRY_POINT = "/api/auth/login"; | 58 | public static final String FORM_BASED_LOGIN_ENTRY_POINT = "/api/auth/login"; |
58 | public static final String TOKEN_REFRESH_ENTRY_POINT = "/api/auth/token"; | 59 | public static final String TOKEN_REFRESH_ENTRY_POINT = "/api/auth/token"; |
59 | - public static final String[] NON_TOKEN_BASED_AUTH_ENTRY_POINTS = new String[] {"/index.html", "/static/**", "/api/noauth/**"}; | 60 | + public static final String[] NON_TOKEN_BASED_AUTH_ENTRY_POINTS = new String[] {"/index.html", "/static/**", "/api/noauth/**", "/webjars/**"}; |
60 | public static final String TOKEN_BASED_AUTH_ENTRY_POINT = "/api/**"; | 61 | public static final String TOKEN_BASED_AUTH_ENTRY_POINT = "/api/**"; |
61 | public static final String WS_TOKEN_BASED_AUTH_ENTRY_POINT = "/api/ws/**"; | 62 | public static final String WS_TOKEN_BASED_AUTH_ENTRY_POINT = "/api/ws/**"; |
62 | 63 | ||
@@ -89,7 +90,7 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt | @@ -89,7 +90,7 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt | ||
89 | @Bean | 90 | @Bean |
90 | protected JwtTokenAuthenticationProcessingFilter buildJwtTokenAuthenticationProcessingFilter() throws Exception { | 91 | protected JwtTokenAuthenticationProcessingFilter buildJwtTokenAuthenticationProcessingFilter() throws Exception { |
91 | List<String> pathsToSkip = new ArrayList(Arrays.asList(NON_TOKEN_BASED_AUTH_ENTRY_POINTS)); | 92 | List<String> pathsToSkip = new ArrayList(Arrays.asList(NON_TOKEN_BASED_AUTH_ENTRY_POINTS)); |
92 | - pathsToSkip.addAll(Arrays.asList(WS_TOKEN_BASED_AUTH_ENTRY_POINT, TOKEN_REFRESH_ENTRY_POINT, FORM_BASED_LOGIN_ENTRY_POINT, DEVICE_API_ENTRY_POINT)); | 93 | + pathsToSkip.addAll(Arrays.asList(WS_TOKEN_BASED_AUTH_ENTRY_POINT, TOKEN_REFRESH_ENTRY_POINT, FORM_BASED_LOGIN_ENTRY_POINT, DEVICE_API_ENTRY_POINT, WEBJARS_ENTRY_POINT)); |
93 | SkipPathRequestMatcher matcher = new SkipPathRequestMatcher(pathsToSkip, TOKEN_BASED_AUTH_ENTRY_POINT); | 94 | SkipPathRequestMatcher matcher = new SkipPathRequestMatcher(pathsToSkip, TOKEN_BASED_AUTH_ENTRY_POINT); |
94 | JwtTokenAuthenticationProcessingFilter filter | 95 | JwtTokenAuthenticationProcessingFilter filter |
95 | = new JwtTokenAuthenticationProcessingFilter(failureHandler, jwtHeaderTokenExtractor, matcher); | 96 | = new JwtTokenAuthenticationProcessingFilter(failureHandler, jwtHeaderTokenExtractor, matcher); |
@@ -142,6 +143,7 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt | @@ -142,6 +143,7 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt | ||
142 | .sessionCreationPolicy(SessionCreationPolicy.STATELESS) | 143 | .sessionCreationPolicy(SessionCreationPolicy.STATELESS) |
143 | .and() | 144 | .and() |
144 | .authorizeRequests() | 145 | .authorizeRequests() |
146 | + .antMatchers(WEBJARS_ENTRY_POINT).permitAll() // Webjars | ||
145 | .antMatchers(DEVICE_API_ENTRY_POINT).permitAll() // Device HTTP Transport API | 147 | .antMatchers(DEVICE_API_ENTRY_POINT).permitAll() // Device HTTP Transport API |
146 | .antMatchers(FORM_BASED_LOGIN_ENTRY_POINT).permitAll() // Login end-point | 148 | .antMatchers(FORM_BASED_LOGIN_ENTRY_POINT).permitAll() // Login end-point |
147 | .antMatchers(TOKEN_REFRESH_ENTRY_POINT).permitAll() // Token refresh end-point | 149 | .antMatchers(TOKEN_REFRESH_ENTRY_POINT).permitAll() // Token refresh end-point |
@@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping; | @@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping; | ||
21 | @Controller | 21 | @Controller |
22 | public class WebConfig { | 22 | public class WebConfig { |
23 | 23 | ||
24 | - @RequestMapping(value = "/{path:^(?!api$)(?!static$)[^\\.]*}/**") | 24 | + @RequestMapping(value = "/{path:^(?!api$)(?!static$)(?!webjars$)[^\\.]*}/**") |
25 | public String redirect() { | 25 | public String redirect() { |
26 | return "forward:/index.html"; | 26 | return "forward:/index.html"; |
27 | } | 27 | } |
@@ -15,6 +15,7 @@ | @@ -15,6 +15,7 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.controller; | 16 | package org.thingsboard.server.controller; |
17 | 17 | ||
18 | +import io.swagger.annotations.*; | ||
18 | import org.springframework.beans.factory.annotation.Autowired; | 19 | import org.springframework.beans.factory.annotation.Autowired; |
19 | import org.springframework.security.access.prepost.PreAuthorize; | 20 | import org.springframework.security.access.prepost.PreAuthorize; |
20 | import org.springframework.web.bind.annotation.*; | 21 | import org.springframework.web.bind.annotation.*; |
@@ -45,6 +46,18 @@ public class AdminController extends BaseController { | @@ -45,6 +46,18 @@ public class AdminController extends BaseController { | ||
45 | } | 46 | } |
46 | 47 | ||
47 | @PreAuthorize("hasAuthority('SYS_ADMIN')") | 48 | @PreAuthorize("hasAuthority('SYS_ADMIN')") |
49 | + @ApiOperation( | ||
50 | + value = "Save admin settings", notes = "Saves admin settings", | ||
51 | + response = AdminSettings.class, | ||
52 | + authorizations = { | ||
53 | + @Authorization(value = "X-Authorization", scopes = { | ||
54 | + @AuthorizationScope(scope = "SYS_ADMIN", description = "") | ||
55 | + })}) | ||
56 | + @ApiResponses(value = { | ||
57 | + @ApiResponse(code = 200, response = AdminSettings.class, message = "Admin settings successfully updated"), | ||
58 | + @ApiResponse(code = 400, message = "Invalid admin settings payload supplied"), | ||
59 | + @ApiResponse(code = 404, message = "Admin settings not found")} | ||
60 | + ) | ||
48 | @RequestMapping(value = "/settings", method = RequestMethod.POST) | 61 | @RequestMapping(value = "/settings", method = RequestMethod.POST) |
49 | @ResponseBody | 62 | @ResponseBody |
50 | public AdminSettings saveAdminSettings(@RequestBody AdminSettings adminSettings) throws ThingsboardException { | 63 | public AdminSettings saveAdminSettings(@RequestBody AdminSettings adminSettings) throws ThingsboardException { |
@@ -15,6 +15,9 @@ | @@ -15,6 +15,9 @@ | ||
15 | */ | 15 | */ |
16 | package org.thingsboard.server.controller; | 16 | package org.thingsboard.server.controller; |
17 | 17 | ||
18 | +import io.swagger.annotations.ApiOperation; | ||
19 | +import io.swagger.annotations.ApiResponse; | ||
20 | +import io.swagger.annotations.ApiResponses; | ||
18 | import org.springframework.http.HttpStatus; | 21 | import org.springframework.http.HttpStatus; |
19 | import org.springframework.security.access.prepost.PreAuthorize; | 22 | import org.springframework.security.access.prepost.PreAuthorize; |
20 | import org.springframework.web.bind.annotation.*; | 23 | import org.springframework.web.bind.annotation.*; |
@@ -34,6 +37,12 @@ import java.util.List; | @@ -34,6 +37,12 @@ import java.util.List; | ||
34 | @RequestMapping("/api") | 37 | @RequestMapping("/api") |
35 | public class RuleController extends BaseController { | 38 | public class RuleController extends BaseController { |
36 | 39 | ||
40 | + @ApiOperation(value = "getRuleById", nickname = "Get Rule By ID") | ||
41 | + @ApiResponses(value = { | ||
42 | + @ApiResponse(code = 200, message = "Success", response = RuleMetaData.class), | ||
43 | + @ApiResponse(code = 401, message = "Unauthorized"), | ||
44 | + @ApiResponse(code = 403, message = "Forbidden"), | ||
45 | + @ApiResponse(code = 404, message = "Not Found")}) | ||
37 | @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')") | 46 | @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')") |
38 | @RequestMapping(value = "/rule/{ruleId}", method = RequestMethod.GET) | 47 | @RequestMapping(value = "/rule/{ruleId}", method = RequestMethod.GET) |
39 | @ResponseBody | 48 | @ResponseBody |
@@ -19,11 +19,11 @@ | @@ -19,11 +19,11 @@ | ||
19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | 19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
20 | <modelVersion>4.0.0</modelVersion> | 20 | <modelVersion>4.0.0</modelVersion> |
21 | <parent> | 21 | <parent> |
22 | - <groupId>org.thingsboard.server</groupId> | 22 | + <groupId>org.thingsboard</groupId> |
23 | <version>0.0.1-SNAPSHOT</version> | 23 | <version>0.0.1-SNAPSHOT</version> |
24 | <artifactId>common</artifactId> | 24 | <artifactId>common</artifactId> |
25 | </parent> | 25 | </parent> |
26 | - <groupId>org.thingsboard.server.common</groupId> | 26 | + <groupId>org.thingsboard.common</groupId> |
27 | <artifactId>data</artifactId> | 27 | <artifactId>data</artifactId> |
28 | <packaging>jar</packaging> | 28 | <packaging>jar</packaging> |
29 | 29 |
@@ -19,11 +19,11 @@ | @@ -19,11 +19,11 @@ | ||
19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | 19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
20 | <modelVersion>4.0.0</modelVersion> | 20 | <modelVersion>4.0.0</modelVersion> |
21 | <parent> | 21 | <parent> |
22 | - <groupId>org.thingsboard.server</groupId> | 22 | + <groupId>org.thingsboard</groupId> |
23 | <version>0.0.1-SNAPSHOT</version> | 23 | <version>0.0.1-SNAPSHOT</version> |
24 | <artifactId>common</artifactId> | 24 | <artifactId>common</artifactId> |
25 | </parent> | 25 | </parent> |
26 | - <groupId>org.thingsboard.server.common</groupId> | 26 | + <groupId>org.thingsboard.common</groupId> |
27 | <artifactId>message</artifactId> | 27 | <artifactId>message</artifactId> |
28 | <packaging>jar</packaging> | 28 | <packaging>jar</packaging> |
29 | 29 | ||
@@ -37,7 +37,7 @@ | @@ -37,7 +37,7 @@ | ||
37 | 37 | ||
38 | <dependencies> | 38 | <dependencies> |
39 | <dependency> | 39 | <dependency> |
40 | - <groupId>org.thingsboard.server.common</groupId> | 40 | + <groupId>org.thingsboard.common</groupId> |
41 | <artifactId>data</artifactId> | 41 | <artifactId>data</artifactId> |
42 | </dependency> | 42 | </dependency> |
43 | <dependency> | 43 | <dependency> |
@@ -21,9 +21,9 @@ | @@ -21,9 +21,9 @@ | ||
21 | <parent> | 21 | <parent> |
22 | <groupId>org.thingsboard</groupId> | 22 | <groupId>org.thingsboard</groupId> |
23 | <version>0.0.1-SNAPSHOT</version> | 23 | <version>0.0.1-SNAPSHOT</version> |
24 | - <artifactId>server</artifactId> | 24 | + <artifactId>thingsboard</artifactId> |
25 | </parent> | 25 | </parent> |
26 | - <groupId>org.thingsboard.server</groupId> | 26 | + <groupId>org.thingsboard</groupId> |
27 | <artifactId>common</artifactId> | 27 | <artifactId>common</artifactId> |
28 | <packaging>pom</packaging> | 28 | <packaging>pom</packaging> |
29 | 29 |
@@ -19,11 +19,11 @@ | @@ -19,11 +19,11 @@ | ||
19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | 19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
20 | <modelVersion>4.0.0</modelVersion> | 20 | <modelVersion>4.0.0</modelVersion> |
21 | <parent> | 21 | <parent> |
22 | - <groupId>org.thingsboard.server</groupId> | 22 | + <groupId>org.thingsboard</groupId> |
23 | <version>0.0.1-SNAPSHOT</version> | 23 | <version>0.0.1-SNAPSHOT</version> |
24 | <artifactId>common</artifactId> | 24 | <artifactId>common</artifactId> |
25 | </parent> | 25 | </parent> |
26 | - <groupId>org.thingsboard.server.common</groupId> | 26 | + <groupId>org.thingsboard.common</groupId> |
27 | <artifactId>transport</artifactId> | 27 | <artifactId>transport</artifactId> |
28 | <packaging>jar</packaging> | 28 | <packaging>jar</packaging> |
29 | 29 | ||
@@ -37,11 +37,11 @@ | @@ -37,11 +37,11 @@ | ||
37 | 37 | ||
38 | <dependencies> | 38 | <dependencies> |
39 | <dependency> | 39 | <dependency> |
40 | - <groupId>org.thingsboard.server.common</groupId> | 40 | + <groupId>org.thingsboard.common</groupId> |
41 | <artifactId>data</artifactId> | 41 | <artifactId>data</artifactId> |
42 | </dependency> | 42 | </dependency> |
43 | <dependency> | 43 | <dependency> |
44 | - <groupId>org.thingsboard.server.common</groupId> | 44 | + <groupId>org.thingsboard.common</groupId> |
45 | <artifactId>message</artifactId> | 45 | <artifactId>message</artifactId> |
46 | </dependency> | 46 | </dependency> |
47 | <dependency> | 47 | <dependency> |
@@ -21,9 +21,9 @@ | @@ -21,9 +21,9 @@ | ||
21 | <parent> | 21 | <parent> |
22 | <groupId>org.thingsboard</groupId> | 22 | <groupId>org.thingsboard</groupId> |
23 | <version>0.0.1-SNAPSHOT</version> | 23 | <version>0.0.1-SNAPSHOT</version> |
24 | - <artifactId>server</artifactId> | 24 | + <artifactId>thingsboard</artifactId> |
25 | </parent> | 25 | </parent> |
26 | - <groupId>org.thingsboard.server</groupId> | 26 | + <groupId>org.thingsboard</groupId> |
27 | <artifactId>dao</artifactId> | 27 | <artifactId>dao</artifactId> |
28 | <packaging>jar</packaging> | 28 | <packaging>jar</packaging> |
29 | 29 | ||
@@ -37,7 +37,7 @@ | @@ -37,7 +37,7 @@ | ||
37 | 37 | ||
38 | <dependencies> | 38 | <dependencies> |
39 | <dependency> | 39 | <dependency> |
40 | - <groupId>org.thingsboard.server.common</groupId> | 40 | + <groupId>org.thingsboard.common</groupId> |
41 | <artifactId>data</artifactId> | 41 | <artifactId>data</artifactId> |
42 | </dependency> | 42 | </dependency> |
43 | <dependency> | 43 | <dependency> |
@@ -204,6 +204,15 @@ VALUES ( | @@ -204,6 +204,15 @@ VALUES ( | ||
204 | '{"description":"Demo device that is used in sample applications that upload data from DHT11 temperature and humidity sensor"}' | 204 | '{"description":"Demo device that is used in sample applications that upload data from DHT11 temperature and humidity sensor"}' |
205 | ); | 205 | ); |
206 | 206 | ||
207 | +INSERT INTO thingsboard.device ( id, tenant_id, customer_id, name, search_text, additional_info) | ||
208 | +VALUES ( | ||
209 | + c8f1a6f0-b993-11e6-8a04-9ff4e1b7933d, | ||
210 | + minTimeuuid ( '2016-11-01 01:02:01+0000' ), | ||
211 | + minTimeuuid ( 0 ), | ||
212 | + 'Raspberry Pi Demo Device', | ||
213 | + 'raspberry pi demo device', | ||
214 | + '{"description":"Demo device that is used in Raspberry Pi GPIO control sample application"}' | ||
215 | +); | ||
207 | 216 | ||
208 | INSERT INTO thingsboard.device_credentials ( id, device_id, credentials_type, credentials_id) | 217 | INSERT INTO thingsboard.device_credentials ( id, device_id, credentials_type, credentials_id) |
209 | VALUES ( | 218 | VALUES ( |
@@ -253,6 +262,14 @@ VALUES ( | @@ -253,6 +262,14 @@ VALUES ( | ||
253 | 'DHT11_DEMO_TOKEN' | 262 | 'DHT11_DEMO_TOKEN' |
254 | ); | 263 | ); |
255 | 264 | ||
265 | +INSERT INTO thingsboard.device_credentials ( id, device_id, credentials_type, credentials_id) | ||
266 | +VALUES ( | ||
267 | + now(), | ||
268 | + c8f1a6f0-b993-11e6-8a04-9ff4e1b7933d, | ||
269 | + 'ACCESS_TOKEN', | ||
270 | + 'RASPBERRY_PI_DEMO_TOKEN' | ||
271 | +); | ||
272 | + | ||
256 | /** Demo data **/ | 273 | /** Demo data **/ |
257 | 274 | ||
258 | /** Demo plugins & rules **/ | 275 | /** Demo plugins & rules **/ |
@@ -430,4 +447,14 @@ VALUES ( | @@ -430,4 +447,14 @@ VALUES ( | ||
430 | '{"description":"Demo dashboard for sample applications that upload temperature and humidity received from DHT11 or DHT22 sensors","widgets":[{"isSystemType":true,"bundleAlias":"digital_gauges","typeAlias":"digital_thermometer","type":"latest","title":"New widget","sizeX":5,"sizeY":5,"config":{"datasources":[{"type":"device","dataKeys":[{"name":"temperature","type":"timeseries","label":"temperature","color":"#2196f3","settings":{},"_hash":0.3720839051412099}],"deviceAliasId":1,"name":"DHT11"}],"timewindow":{"realtime":{"timewindowMs":60000}},"showTitle":false,"backgroundColor":"#000000","color":"rgba(0, 0, 0, 0.87)","padding":"0px","settings":{"maxValue":50,"donutStartAngle":90,"showValue":true,"showMinMax":true,"gaugeWidthScale":1,"levelColors":["#304ffe","#7e57c2","#ff4081","#d32f2f"],"refreshAnimationType":"<>","refreshAnimationTime":700,"startAnimationType":"<>","startAnimationTime":700,"titleFont":{"family":"RobotoDraft","size":12,"style":"normal","weight":"500"},"labelFont":{"family":"RobotoDraft","size":8,"style":"normal","weight":"500"},"valueFont":{"family":"Segment7Standard","style":"normal","weight":"500","size":18},"minMaxFont":{"family":"Segment7Standard","size":12,"style":"normal","weight":"500"},"dashThickness":1.5,"decimals":0,"minValue":0,"units":"°C","gaugeColor":"#333333","neonGlowBrightness":35,"gaugeType":"donut","showTitle":false},"title":"Temperature"},"row":0,"col":0},{"isSystemType":true,"bundleAlias":"digital_gauges","typeAlias":"digital_vertical_bar","type":"latest","title":"New widget","sizeX":3,"sizeY":5,"config":{"datasources":[{"type":"device","dataKeys":[{"name":"humidity","type":"timeseries","label":"humidity","color":"#2196f3","settings":{},"_hash":0.9492802776509441}],"deviceAliasId":"1","name":"DHT11"}],"timewindow":{"realtime":{"timewindowMs":60000}},"showTitle":false,"backgroundColor":"#000000","color":"rgba(0, 0, 0, 0.87)","padding":"0px","settings":{"maxValue":100,"donutStartAngle":90,"showValue":true,"showMinMax":true,"gaugeWidthScale":0.75,"levelColors":["#3d5afe","#f44336"],"refreshAnimationType":"<>","refreshAnimationTime":700,"startAnimationType":"<>","startAnimationTime":700,"titleFont":{"family":"RobotoDraft","size":12,"style":"normal","weight":"500"},"labelFont":{"family":"RobotoDraft","size":8,"style":"normal","weight":"500"},"valueFont":{"family":"Segment7Standard","style":"normal","weight":"500","size":14},"minMaxFont":{"family":"Segment7Standard","size":8,"style":"normal","weight":"normal","color":"#cccccc"},"neonGlowBrightness":20,"decimals":0,"showUnitTitle":true,"gaugeColor":"#171a1c","gaugeType":"verticalBar","showTitle":false,"minValue":0,"dashThickness":1.2},"title":"Humidity"},"row":0,"col":5}],"deviceAliases":{"1":{"alias":"DHT11","deviceId":"c8f1a6f0-b993-11e6-8a04-9ff4e1b7933c"}}}', | 447 | '{"description":"Demo dashboard for sample applications that upload temperature and humidity received from DHT11 or DHT22 sensors","widgets":[{"isSystemType":true,"bundleAlias":"digital_gauges","typeAlias":"digital_thermometer","type":"latest","title":"New widget","sizeX":5,"sizeY":5,"config":{"datasources":[{"type":"device","dataKeys":[{"name":"temperature","type":"timeseries","label":"temperature","color":"#2196f3","settings":{},"_hash":0.3720839051412099}],"deviceAliasId":1,"name":"DHT11"}],"timewindow":{"realtime":{"timewindowMs":60000}},"showTitle":false,"backgroundColor":"#000000","color":"rgba(0, 0, 0, 0.87)","padding":"0px","settings":{"maxValue":50,"donutStartAngle":90,"showValue":true,"showMinMax":true,"gaugeWidthScale":1,"levelColors":["#304ffe","#7e57c2","#ff4081","#d32f2f"],"refreshAnimationType":"<>","refreshAnimationTime":700,"startAnimationType":"<>","startAnimationTime":700,"titleFont":{"family":"RobotoDraft","size":12,"style":"normal","weight":"500"},"labelFont":{"family":"RobotoDraft","size":8,"style":"normal","weight":"500"},"valueFont":{"family":"Segment7Standard","style":"normal","weight":"500","size":18},"minMaxFont":{"family":"Segment7Standard","size":12,"style":"normal","weight":"500"},"dashThickness":1.5,"decimals":0,"minValue":0,"units":"°C","gaugeColor":"#333333","neonGlowBrightness":35,"gaugeType":"donut","showTitle":false},"title":"Temperature"},"row":0,"col":0},{"isSystemType":true,"bundleAlias":"digital_gauges","typeAlias":"digital_vertical_bar","type":"latest","title":"New widget","sizeX":3,"sizeY":5,"config":{"datasources":[{"type":"device","dataKeys":[{"name":"humidity","type":"timeseries","label":"humidity","color":"#2196f3","settings":{},"_hash":0.9492802776509441}],"deviceAliasId":"1","name":"DHT11"}],"timewindow":{"realtime":{"timewindowMs":60000}},"showTitle":false,"backgroundColor":"#000000","color":"rgba(0, 0, 0, 0.87)","padding":"0px","settings":{"maxValue":100,"donutStartAngle":90,"showValue":true,"showMinMax":true,"gaugeWidthScale":0.75,"levelColors":["#3d5afe","#f44336"],"refreshAnimationType":"<>","refreshAnimationTime":700,"startAnimationType":"<>","startAnimationTime":700,"titleFont":{"family":"RobotoDraft","size":12,"style":"normal","weight":"500"},"labelFont":{"family":"RobotoDraft","size":8,"style":"normal","weight":"500"},"valueFont":{"family":"Segment7Standard","style":"normal","weight":"500","size":14},"minMaxFont":{"family":"Segment7Standard","size":8,"style":"normal","weight":"normal","color":"#cccccc"},"neonGlowBrightness":20,"decimals":0,"showUnitTitle":true,"gaugeColor":"#171a1c","gaugeType":"verticalBar","showTitle":false,"minValue":0,"dashThickness":1.2},"title":"Humidity"},"row":0,"col":5}],"deviceAliases":{"1":{"alias":"DHT11","deviceId":"c8f1a6f0-b993-11e6-8a04-9ff4e1b7933c"}}}', |
431 | 'Temperature & Humidity Demo Dashboard', | 448 | 'Temperature & Humidity Demo Dashboard', |
432 | 'temperature & humidity demo dashboard' | 449 | 'temperature & humidity demo dashboard' |
450 | +); | ||
451 | + | ||
452 | +INSERT INTO thingsboard.dashboard ( id, tenant_id, customer_id, configuration, title, search_text) | ||
453 | +VALUES ( | ||
454 | + now(), | ||
455 | + minTimeuuid ( '2016-11-01 01:02:01+0000' ), | ||
456 | + minTimeuuid ( 0 ), | ||
457 | + '{"description":"Demo dashboard for Raspberry PI GPIO Demo","widgets":[{"isSystemType":true,"bundleAlias":"gpio_widgets","typeAlias":"raspberry_pi_gpio_control","type":"rpc","title":"New widget","sizeX":6,"sizeY":10,"config":{"targetDeviceAliases":[],"showTitle":true,"backgroundColor":"#fff","color":"rgba(0, 0, 0, 0.87)","padding":"0px","settings":{"parseGpioStatusFunction":"return body[pin] === true;","gpioStatusChangeRequest":{"method":"setGpioStatus","paramsBody":"{\n \"pin\": \"{$pin}\",\n \"enabled\": \"{$enabled}\"\n}"},"requestTimeout":500,"switchPanelBackgroundColor":"#008a00","gpioStatusRequest":{"method":"getGpioStatus","paramsBody":"{}"},"gpioList":[{"pin":7,"label":"GPIO 4 (GPCLK0)","row":3,"col":0,"_uniqueKey":0},{"pin":11,"label":"GPIO 17","row":5,"col":0,"_uniqueKey":1},{"pin":12,"label":"GPIO 18","row":5,"col":1,"_uniqueKey":2},{"_uniqueKey":3,"pin":13,"label":"GPIO 27","row":6,"col":0},{"_uniqueKey":4,"pin":15,"label":"GPIO 22","row":7,"col":0},{"_uniqueKey":5,"pin":16,"label":"GPIO 23","row":7,"col":1},{"_uniqueKey":6,"pin":18,"label":"GPIO 24","row":8,"col":1},{"_uniqueKey":7,"pin":22,"label":"GPIO 25","row":10,"col":1},{"_uniqueKey":8,"pin":29,"label":"GPIO 5","row":14,"col":0},{"_uniqueKey":9,"pin":31,"label":"GPIO 6","row":15,"col":0},{"_uniqueKey":10,"pin":32,"label":"GPIO 12","row":15,"col":1},{"_uniqueKey":11,"pin":33,"label":"GPIO 13","row":16,"col":0},{"_uniqueKey":12,"pin":35,"label":"GPIO 19","row":17,"col":0},{"_uniqueKey":13,"pin":36,"label":"GPIO 16","row":17,"col":1},{"_uniqueKey":14,"pin":37,"label":"GPIO 26","row":18,"col":0},{"_uniqueKey":15,"pin":38,"label":"GPIO 20","row":18,"col":1},{"_uniqueKey":16,"pin":40,"label":"GPIO 21","row":19,"col":1}]},"title":"Raspberry Pi GPIO Control Panel","datasources":[],"targetDeviceAliasIds":["1"]},"row":0,"col":0},{"isSystemType":true,"bundleAlias":"gpio_widgets","typeAlias":"raspberry_pi_gpio_panel","type":"latest","title":"New widget","sizeX":7,"sizeY":10,"config":{"showTitle":true,"backgroundColor":"#fff","color":"rgba(0, 0, 0, 0.87)","padding":"0px","settings":{"gpioList":[{"pin":1,"label":"3.3V","row":0,"col":0,"color":"#fc9700","_uniqueKey":0},{"pin":2,"label":"5V","row":0,"col":1,"color":"#fb0000","_uniqueKey":1},{"pin":3,"label":"GPIO 2 (I2C1_SDA)","row":1,"col":0,"color":"#02fefb","_uniqueKey":2},{"color":"#fb0000","pin":4,"label":"5V","row":1,"col":1},{"color":"#02fefb","pin":5,"label":"GPIO 3 (I2C1_SCL)","row":2,"col":0},{"color":"#000000","pin":6,"label":"GND","row":2,"col":1},{"color":"#00fd00","pin":7,"label":"GPIO 4 (GPCLK0)","row":3,"col":0},{"color":"#fdfb00","pin":8,"label":"GPIO 14 (UART_TXD)","row":3,"col":1},{"color":"#000000","pin":9,"label":"GND","row":4,"col":0},{"color":"#fdfb00","pin":10,"label":"GPIO 15 (UART_RXD)","row":4,"col":1},{"color":"#00fd00","pin":11,"label":"GPIO 17","row":5,"col":0},{"color":"#00fd00","pin":12,"label":"GPIO 18","row":5,"col":1},{"color":"#00fd00","pin":13,"label":"GPIO 27","row":6,"col":0},{"color":"#000000","pin":14,"label":"GND","row":6,"col":1},{"color":"#00fd00","pin":15,"label":"GPIO 22","row":7,"col":0},{"color":"#00fd00","pin":16,"label":"GPIO 23","row":7,"col":1},{"color":"#fc9700","pin":17,"label":"3.3V","row":8,"col":0},{"color":"#00fd00","pin":18,"label":"GPIO 24","row":8,"col":1},{"color":"#fd01fd","pin":19,"label":"GPIO 10 (SPI_MOSI)","row":9,"col":0},{"color":"#000000","pin":20,"label":"GND","row":9,"col":1},{"color":"#fd01fd","pin":21,"label":"GPIO 9 (SPI_MISO)","row":10,"col":0},{"color":"#00fd00","pin":22,"label":"GPIO 25","row":10,"col":1},{"color":"#fd01fd","pin":23,"label":"GPIO 11 (SPI_SCLK)","row":11,"col":0},{"color":"#fd01fd","pin":24,"label":"GPIO 8 (SPI_CE0)","row":11,"col":1},{"color":"#000000","pin":25,"label":"GND","row":12,"col":0},{"color":"#fd01fd","pin":26,"label":"GPIO 7 (SPI_CE1)","row":12,"col":1},{"color":"#ffffff","pin":27,"label":"ID_SD","row":13,"col":0},{"color":"#ffffff","pin":28,"label":"ID_SC","row":13,"col":1},{"color":"#00fd00","pin":29,"label":"GPIO 5","row":14,"col":0},{"color":"#000000","pin":30,"label":"GND","row":14,"col":1},{"color":"#00fd00","pin":31,"label":"GPIO 6","row":15,"col":0},{"color":"#00fd00","pin":32,"label":"GPIO 12","row":15,"col":1},{"color":"#00fd00","pin":33,"label":"GPIO 13","row":16,"col":0},{"color":"#000000","pin":34,"label":"GND","row":16,"col":1},{"color":"#00fd00","pin":35,"label":"GPIO 19","row":17,"col":0},{"color":"#00fd00","pin":36,"label":"GPIO 16","row":17,"col":1},{"color":"#00fd00","pin":37,"label":"GPIO 26","row":18,"col":0},{"color":"#00fd00","pin":38,"label":"GPIO 20","row":18,"col":1},{"color":"#000000","pin":39,"label":"GND","row":19,"col":0},{"color":"#00fd00","pin":40,"label":"GPIO 21","row":19,"col":1}],"ledPanelBackgroundColor":"#008a00"},"title":"Raspberry Pi GPIO Status Panel","datasources":[{"type":"device","dataKeys":[{"name":"7","type":"attribute","label":"7","color":"#2196f3","settings":{},"_hash":0.20925966435886978},{"name":"11","type":"attribute","label":"11","color":"#4caf50","settings":{},"_hash":0.330267349594344},{"name":"12","type":"attribute","label":"12","color":"#f44336","settings":{},"_hash":0.5040578704481748},{"name":"13","type":"attribute","label":"13","color":"#ffc107","settings":{},"_hash":0.588956328191639},{"name":"15","type":"attribute","label":"15","color":"#607d8b","settings":{},"_hash":0.9229040530336119},{"name":"16","type":"attribute","label":"16","color":"#9c27b0","settings":{},"_hash":0.8692315253041654},{"name":"18","type":"attribute","label":"18","color":"#8bc34a","settings":{},"_hash":0.41465562857521543},{"name":"22","type":"attribute","label":"22","color":"#3f51b5","settings":{},"_hash":0.36135260043112827},{"name":"29","type":"attribute","label":"29","color":"#e91e63","settings":{},"_hash":0.9904592276182183},{"name":"31","type":"attribute","label":"31","color":"#ffeb3b","settings":{},"_hash":0.038330985429919195},{"name":"32","type":"attribute","label":"32","color":"#03a9f4","settings":{},"_hash":0.4334683890135089},{"name":"33","type":"attribute","label":"33","color":"#ff9800","settings":{},"_hash":0.6487255992492305},{"name":"35","type":"attribute","label":"35","color":"#673ab7","settings":{},"_hash":0.971555321150732},{"name":"36","type":"attribute","label":"36","color":"#cddc39","settings":{},"_hash":0.7826129728424382},{"name":"37","type":"attribute","label":"37","color":"#009688","settings":{},"_hash":0.44925676517537627},{"name":"38","type":"attribute","label":"38","color":"#795548","settings":{},"_hash":0.051518155759787465},{"name":"40","type":"attribute","label":"40","color":"#00bcd4","settings":{},"_hash":0.8733296686871144}],"deviceAliasId":1,"name":"RPi"}],"timewindow":{"realtime":{"timewindowMs":60000}}},"row":0,"col":6}],"deviceAliases":{"1":{"alias":"RPi","deviceId":"c8f1a6f0-b993-11e6-8a04-9ff4e1b7933d"}}}', | ||
458 | + 'Raspberry PI GPIO Demo Dashboard', | ||
459 | + 'raspberry pi gpio demo dashboard' | ||
433 | ); | 460 | ); |
docker/.env
0 → 100644
1 | +CASSANDRA_DATA_DIR=/home/docker/cassandra_volume |
@@ -27,5 +27,5 @@ $command rm -f | @@ -27,5 +27,5 @@ $command rm -f | ||
27 | echo "building images.." | 27 | echo "building images.." |
28 | $command build | 28 | $command build |
29 | 29 | ||
30 | -echo "starting cassandra, zookeeper, db-schema images..." | ||
31 | -$command up -d cassandra zookeeper db-schema | 30 | +echo "starting cassandra, zookeeper, thingsboard-db-schema images..." |
31 | +$command up -d cassandra zookeeper thingsboard-db-schema |
@@ -18,7 +18,7 @@ version: '2' | @@ -18,7 +18,7 @@ version: '2' | ||
18 | 18 | ||
19 | services: | 19 | services: |
20 | thingsboard: | 20 | thingsboard: |
21 | - build: thingsboard | 21 | + image: "thingsboard/application:0.1" |
22 | ports: | 22 | ports: |
23 | - "8080:8080" | 23 | - "8080:8080" |
24 | - "1883:1883" | 24 | - "1883:1883" |
@@ -27,8 +27,6 @@ services: | @@ -27,8 +27,6 @@ services: | ||
27 | - cassandra:db | 27 | - cassandra:db |
28 | - zookeeper:zk | 28 | - zookeeper:zk |
29 | - thingsboard-db-schema:thingsboard-db-schema | 29 | - thingsboard-db-schema:thingsboard-db-schema |
30 | - volumes: | ||
31 | - - "../application/target/thingsboard.deb:/root/thingsboard.deb" | ||
32 | env_file: | 30 | env_file: |
33 | - thingsboard.env | 31 | - thingsboard.env |
34 | entrypoint: ./run_thingsboard.sh | 32 | entrypoint: ./run_thingsboard.sh |
@@ -17,6 +17,7 @@ | @@ -17,6 +17,7 @@ | ||
17 | FROM openjdk:8-jre | 17 | FROM openjdk:8-jre |
18 | 18 | ||
19 | ADD run_thingsboard.sh /root/run_thingsboard.sh | 19 | ADD run_thingsboard.sh /root/run_thingsboard.sh |
20 | +ADD thingsboard.deb /root/thingsboard.deb | ||
20 | 21 | ||
21 | RUN chmod +x /root/run_thingsboard.sh | 22 | RUN chmod +x /root/run_thingsboard.sh |
22 | 23 |
docker/thingsboard/build_and_deploy.sh
0 → 100755
1 | +#!/bin/bash | ||
2 | +# | ||
3 | +# Copyright © 2016 The Thingsboard Authors | ||
4 | +# | ||
5 | +# Licensed under the Apache License, Version 2.0 (the "License"); | ||
6 | +# you may not use this file except in compliance with the License. | ||
7 | +# You may obtain a copy of the License at | ||
8 | +# | ||
9 | +# http://www.apache.org/licenses/LICENSE-2.0 | ||
10 | +# | ||
11 | +# Unless required by applicable law or agreed to in writing, software | ||
12 | +# distributed under the License is distributed on an "AS IS" BASIS, | ||
13 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
14 | +# See the License for the specific language governing permissions and | ||
15 | +# limitations under the License. | ||
16 | +# | ||
17 | + | ||
18 | + | ||
19 | +cp ../../application/target/thingsboard.deb thingsboard.deb | ||
20 | + | ||
21 | +docker build -t thingsboard/application:0.1 . | ||
22 | + | ||
23 | +docker login | ||
24 | + | ||
25 | +docker push thingsboard/application:0.1 |
@@ -21,9 +21,9 @@ | @@ -21,9 +21,9 @@ | ||
21 | <parent> | 21 | <parent> |
22 | <groupId>org.thingsboard</groupId> | 22 | <groupId>org.thingsboard</groupId> |
23 | <version>0.0.1-SNAPSHOT</version> | 23 | <version>0.0.1-SNAPSHOT</version> |
24 | - <artifactId>server</artifactId> | 24 | + <artifactId>thingsboard</artifactId> |
25 | </parent> | 25 | </parent> |
26 | - <groupId>org.thingsboard.server</groupId> | 26 | + <groupId>org.thingsboard</groupId> |
27 | <artifactId>extensions-api</artifactId> | 27 | <artifactId>extensions-api</artifactId> |
28 | <packaging>jar</packaging> | 28 | <packaging>jar</packaging> |
29 | 29 | ||
@@ -37,11 +37,11 @@ | @@ -37,11 +37,11 @@ | ||
37 | 37 | ||
38 | <dependencies> | 38 | <dependencies> |
39 | <dependency> | 39 | <dependency> |
40 | - <groupId>org.thingsboard.server.common</groupId> | 40 | + <groupId>org.thingsboard.common</groupId> |
41 | <artifactId>data</artifactId> | 41 | <artifactId>data</artifactId> |
42 | </dependency> | 42 | </dependency> |
43 | <dependency> | 43 | <dependency> |
44 | - <groupId>org.thingsboard.server.common</groupId> | 44 | + <groupId>org.thingsboard.common</groupId> |
45 | <artifactId>message</artifactId> | 45 | <artifactId>message</artifactId> |
46 | </dependency> | 46 | </dependency> |
47 | <dependency> | 47 | <dependency> |
@@ -21,9 +21,9 @@ | @@ -21,9 +21,9 @@ | ||
21 | <parent> | 21 | <parent> |
22 | <groupId>org.thingsboard</groupId> | 22 | <groupId>org.thingsboard</groupId> |
23 | <version>0.0.1-SNAPSHOT</version> | 23 | <version>0.0.1-SNAPSHOT</version> |
24 | - <artifactId>server</artifactId> | 24 | + <artifactId>thingsboard</artifactId> |
25 | </parent> | 25 | </parent> |
26 | - <groupId>org.thingsboard.server</groupId> | 26 | + <groupId>org.thingsboard</groupId> |
27 | <artifactId>extensions-core</artifactId> | 27 | <artifactId>extensions-core</artifactId> |
28 | <packaging>jar</packaging> | 28 | <packaging>jar</packaging> |
29 | 29 | ||
@@ -37,7 +37,7 @@ | @@ -37,7 +37,7 @@ | ||
37 | 37 | ||
38 | <dependencies> | 38 | <dependencies> |
39 | <dependency> | 39 | <dependency> |
40 | - <groupId>org.thingsboard.server</groupId> | 40 | + <groupId>org.thingsboard</groupId> |
41 | <artifactId>extensions-api</artifactId> | 41 | <artifactId>extensions-api</artifactId> |
42 | <scope>provided</scope> | 42 | <scope>provided</scope> |
43 | </dependency> | 43 | </dependency> |
@@ -21,11 +21,11 @@ | @@ -21,11 +21,11 @@ | ||
21 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | 21 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
22 | <modelVersion>4.0.0</modelVersion> | 22 | <modelVersion>4.0.0</modelVersion> |
23 | <parent> | 23 | <parent> |
24 | - <groupId>org.thingsboard.server</groupId> | 24 | + <groupId>org.thingsboard</groupId> |
25 | <version>0.0.1-SNAPSHOT</version> | 25 | <version>0.0.1-SNAPSHOT</version> |
26 | <artifactId>extensions</artifactId> | 26 | <artifactId>extensions</artifactId> |
27 | </parent> | 27 | </parent> |
28 | - <groupId>org.thingsboard.server.extensions</groupId> | 28 | + <groupId>org.thingsboard.extensions</groupId> |
29 | <artifactId>extension-kafka</artifactId> | 29 | <artifactId>extension-kafka</artifactId> |
30 | <packaging>jar</packaging> | 30 | <packaging>jar</packaging> |
31 | 31 | ||
@@ -49,12 +49,12 @@ | @@ -49,12 +49,12 @@ | ||
49 | <scope>provided</scope> | 49 | <scope>provided</scope> |
50 | </dependency> | 50 | </dependency> |
51 | <dependency> | 51 | <dependency> |
52 | - <groupId>org.thingsboard.server</groupId> | 52 | + <groupId>org.thingsboard</groupId> |
53 | <artifactId>extensions-api</artifactId> | 53 | <artifactId>extensions-api</artifactId> |
54 | <scope>provided</scope> | 54 | <scope>provided</scope> |
55 | </dependency> | 55 | </dependency> |
56 | <dependency> | 56 | <dependency> |
57 | - <groupId>org.thingsboard.server</groupId> | 57 | + <groupId>org.thingsboard</groupId> |
58 | <artifactId>extensions-core</artifactId> | 58 | <artifactId>extensions-core</artifactId> |
59 | <scope>provided</scope> | 59 | <scope>provided</scope> |
60 | </dependency> | 60 | </dependency> |
@@ -19,11 +19,11 @@ | @@ -19,11 +19,11 @@ | ||
19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | 19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
20 | <modelVersion>4.0.0</modelVersion> | 20 | <modelVersion>4.0.0</modelVersion> |
21 | <parent> | 21 | <parent> |
22 | - <groupId>org.thingsboard.server</groupId> | 22 | + <groupId>org.thingsboard</groupId> |
23 | <version>0.0.1-SNAPSHOT</version> | 23 | <version>0.0.1-SNAPSHOT</version> |
24 | <artifactId>extensions</artifactId> | 24 | <artifactId>extensions</artifactId> |
25 | </parent> | 25 | </parent> |
26 | - <groupId>org.thingsboard.server.extensions</groupId> | 26 | + <groupId>org.thingsboard.extensions</groupId> |
27 | <artifactId>extension-rabbitmq</artifactId> | 27 | <artifactId>extension-rabbitmq</artifactId> |
28 | <packaging>jar</packaging> | 28 | <packaging>jar</packaging> |
29 | 29 | ||
@@ -41,12 +41,12 @@ | @@ -41,12 +41,12 @@ | ||
41 | <artifactId>amqp-client</artifactId> | 41 | <artifactId>amqp-client</artifactId> |
42 | </dependency> | 42 | </dependency> |
43 | <dependency> | 43 | <dependency> |
44 | - <groupId>org.thingsboard.server</groupId> | 44 | + <groupId>org.thingsboard</groupId> |
45 | <artifactId>extensions-api</artifactId> | 45 | <artifactId>extensions-api</artifactId> |
46 | <scope>provided</scope> | 46 | <scope>provided</scope> |
47 | </dependency> | 47 | </dependency> |
48 | <dependency> | 48 | <dependency> |
49 | - <groupId>org.thingsboard.server</groupId> | 49 | + <groupId>org.thingsboard</groupId> |
50 | <artifactId>extensions-core</artifactId> | 50 | <artifactId>extensions-core</artifactId> |
51 | <scope>provided</scope> | 51 | <scope>provided</scope> |
52 | </dependency> | 52 | </dependency> |
@@ -21,11 +21,11 @@ | @@ -21,11 +21,11 @@ | ||
21 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | 21 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
22 | <modelVersion>4.0.0</modelVersion> | 22 | <modelVersion>4.0.0</modelVersion> |
23 | <parent> | 23 | <parent> |
24 | - <groupId>org.thingsboard.server</groupId> | 24 | + <groupId>org.thingsboard</groupId> |
25 | <version>0.0.1-SNAPSHOT</version> | 25 | <version>0.0.1-SNAPSHOT</version> |
26 | <artifactId>extensions</artifactId> | 26 | <artifactId>extensions</artifactId> |
27 | </parent> | 27 | </parent> |
28 | - <groupId>org.thingsboard.server.extensions</groupId> | 28 | + <groupId>org.thingsboard.extensions</groupId> |
29 | <artifactId>extension-rest-api-call</artifactId> | 29 | <artifactId>extension-rest-api-call</artifactId> |
30 | <packaging>jar</packaging> | 30 | <packaging>jar</packaging> |
31 | 31 | ||
@@ -49,7 +49,7 @@ | @@ -49,7 +49,7 @@ | ||
49 | <scope>provided</scope> | 49 | <scope>provided</scope> |
50 | </dependency> | 50 | </dependency> |
51 | <dependency> | 51 | <dependency> |
52 | - <groupId>org.thingsboard.server</groupId> | 52 | + <groupId>org.thingsboard</groupId> |
53 | <artifactId>extensions-api</artifactId> | 53 | <artifactId>extensions-api</artifactId> |
54 | <scope>provided</scope> | 54 | <scope>provided</scope> |
55 | </dependency> | 55 | </dependency> |
@@ -59,7 +59,7 @@ | @@ -59,7 +59,7 @@ | ||
59 | <scope>provided</scope> | 59 | <scope>provided</scope> |
60 | </dependency> | 60 | </dependency> |
61 | <dependency> | 61 | <dependency> |
62 | - <groupId>org.thingsboard.server</groupId> | 62 | + <groupId>org.thingsboard</groupId> |
63 | <artifactId>extensions-core</artifactId> | 63 | <artifactId>extensions-core</artifactId> |
64 | <scope>provided</scope> | 64 | <scope>provided</scope> |
65 | </dependency> | 65 | </dependency> |
@@ -21,9 +21,9 @@ | @@ -21,9 +21,9 @@ | ||
21 | <parent> | 21 | <parent> |
22 | <groupId>org.thingsboard</groupId> | 22 | <groupId>org.thingsboard</groupId> |
23 | <version>0.0.1-SNAPSHOT</version> | 23 | <version>0.0.1-SNAPSHOT</version> |
24 | - <artifactId>server</artifactId> | 24 | + <artifactId>thingsboard</artifactId> |
25 | </parent> | 25 | </parent> |
26 | - <groupId>org.thingsboard.server</groupId> | 26 | + <groupId>org.thingsboard</groupId> |
27 | <artifactId>extensions</artifactId> | 27 | <artifactId>extensions</artifactId> |
28 | <packaging>pom</packaging> | 28 | <packaging>pom</packaging> |
29 | 29 |
@@ -68,6 +68,7 @@ | @@ -68,6 +68,7 @@ | ||
68 | <hazelcast-zookeeper.version>3.6.1</hazelcast-zookeeper.version> | 68 | <hazelcast-zookeeper.version>3.6.1</hazelcast-zookeeper.version> |
69 | <surfire.version>2.19.1</surfire.version> | 69 | <surfire.version>2.19.1</surfire.version> |
70 | <jar-plugin.version>3.0.2</jar-plugin.version> | 70 | <jar-plugin.version>3.0.2</jar-plugin.version> |
71 | + <springfox-swagger.version>2.6.1</springfox-swagger.version> | ||
71 | </properties> | 72 | </properties> |
72 | 73 | ||
73 | <modules> | 74 | <modules> |
@@ -301,70 +302,70 @@ | @@ -301,70 +302,70 @@ | ||
301 | <dependencyManagement> | 302 | <dependencyManagement> |
302 | <dependencies> | 303 | <dependencies> |
303 | <dependency> | 304 | <dependency> |
304 | - <groupId>org.thingsboard.server</groupId> | 305 | + <groupId>org.thingsboard</groupId> |
305 | <artifactId>extensions-api</artifactId> | 306 | <artifactId>extensions-api</artifactId> |
306 | <version>${project.version}</version> | 307 | <version>${project.version}</version> |
307 | </dependency> | 308 | </dependency> |
308 | <dependency> | 309 | <dependency> |
309 | - <groupId>org.thingsboard.server</groupId> | 310 | + <groupId>org.thingsboard</groupId> |
310 | <artifactId>extensions-core</artifactId> | 311 | <artifactId>extensions-core</artifactId> |
311 | <version>${project.version}</version> | 312 | <version>${project.version}</version> |
312 | </dependency> | 313 | </dependency> |
313 | <dependency> | 314 | <dependency> |
314 | - <groupId>org.thingsboard.server.extensions</groupId> | 315 | + <groupId>org.thingsboard.extensions</groupId> |
315 | <artifactId>extension-rabbitmq</artifactId> | 316 | <artifactId>extension-rabbitmq</artifactId> |
316 | <classifier>extension</classifier> | 317 | <classifier>extension</classifier> |
317 | <version>${project.version}</version> | 318 | <version>${project.version}</version> |
318 | </dependency> | 319 | </dependency> |
319 | <dependency> | 320 | <dependency> |
320 | - <groupId>org.thingsboard.server.extensions</groupId> | 321 | + <groupId>org.thingsboard.extensions</groupId> |
321 | <artifactId>extension-rest-api-call</artifactId> | 322 | <artifactId>extension-rest-api-call</artifactId> |
322 | <classifier>extension</classifier> | 323 | <classifier>extension</classifier> |
323 | <version>${project.version}</version> | 324 | <version>${project.version}</version> |
324 | </dependency> | 325 | </dependency> |
325 | <dependency> | 326 | <dependency> |
326 | - <groupId>org.thingsboard.server.extensions</groupId> | 327 | + <groupId>org.thingsboard.extensions</groupId> |
327 | <artifactId>extension-kafka</artifactId> | 328 | <artifactId>extension-kafka</artifactId> |
328 | <classifier>extension</classifier> | 329 | <classifier>extension</classifier> |
329 | <version>${project.version}</version> | 330 | <version>${project.version}</version> |
330 | </dependency> | 331 | </dependency> |
331 | <dependency> | 332 | <dependency> |
332 | - <groupId>org.thingsboard.server.common</groupId> | 333 | + <groupId>org.thingsboard.common</groupId> |
333 | <artifactId>data</artifactId> | 334 | <artifactId>data</artifactId> |
334 | <version>${project.version}</version> | 335 | <version>${project.version}</version> |
335 | </dependency> | 336 | </dependency> |
336 | <dependency> | 337 | <dependency> |
337 | - <groupId>org.thingsboard.server.common</groupId> | 338 | + <groupId>org.thingsboard.common</groupId> |
338 | <artifactId>message</artifactId> | 339 | <artifactId>message</artifactId> |
339 | <version>${project.version}</version> | 340 | <version>${project.version}</version> |
340 | </dependency> | 341 | </dependency> |
341 | <dependency> | 342 | <dependency> |
342 | - <groupId>org.thingsboard.server.common</groupId> | 343 | + <groupId>org.thingsboard.common</groupId> |
343 | <artifactId>transport</artifactId> | 344 | <artifactId>transport</artifactId> |
344 | <version>${project.version}</version> | 345 | <version>${project.version}</version> |
345 | </dependency> | 346 | </dependency> |
346 | <dependency> | 347 | <dependency> |
347 | - <groupId>org.thingsboard.server.transport</groupId> | 348 | + <groupId>org.thingsboard.transport</groupId> |
348 | <artifactId>http</artifactId> | 349 | <artifactId>http</artifactId> |
349 | <version>${project.version}</version> | 350 | <version>${project.version}</version> |
350 | </dependency> | 351 | </dependency> |
351 | <dependency> | 352 | <dependency> |
352 | - <groupId>org.thingsboard.server.transport</groupId> | 353 | + <groupId>org.thingsboard.transport</groupId> |
353 | <artifactId>coap</artifactId> | 354 | <artifactId>coap</artifactId> |
354 | <version>${project.version}</version> | 355 | <version>${project.version}</version> |
355 | </dependency> | 356 | </dependency> |
356 | <dependency> | 357 | <dependency> |
357 | - <groupId>org.thingsboard.server.transport</groupId> | 358 | + <groupId>org.thingsboard.transport</groupId> |
358 | <artifactId>mqtt</artifactId> | 359 | <artifactId>mqtt</artifactId> |
359 | <version>${project.version}</version> | 360 | <version>${project.version}</version> |
360 | </dependency> | 361 | </dependency> |
361 | <dependency> | 362 | <dependency> |
362 | - <groupId>org.thingsboard.server</groupId> | 363 | + <groupId>org.thingsboard</groupId> |
363 | <artifactId>dao</artifactId> | 364 | <artifactId>dao</artifactId> |
364 | <version>${project.version}</version> | 365 | <version>${project.version}</version> |
365 | </dependency> | 366 | </dependency> |
366 | <dependency> | 367 | <dependency> |
367 | - <groupId>org.thingsboard.server</groupId> | 368 | + <groupId>org.thingsboard</groupId> |
368 | <artifactId>dao</artifactId> | 369 | <artifactId>dao</artifactId> |
369 | <version>${project.version}</version> | 370 | <version>${project.version}</version> |
370 | <type>test-jar</type> | 371 | <type>test-jar</type> |
@@ -672,6 +673,16 @@ | @@ -672,6 +673,16 @@ | ||
672 | <artifactId>hazelcast</artifactId> | 673 | <artifactId>hazelcast</artifactId> |
673 | <version>${hazelcast.version}</version> | 674 | <version>${hazelcast.version}</version> |
674 | </dependency> | 675 | </dependency> |
676 | + <dependency> | ||
677 | + <groupId>io.springfox</groupId> | ||
678 | + <artifactId>springfox-swagger-ui</artifactId> | ||
679 | + <version>${springfox-swagger.version}</version> | ||
680 | + </dependency> | ||
681 | + <dependency> | ||
682 | + <groupId>io.springfox</groupId> | ||
683 | + <artifactId>springfox-swagger2</artifactId> | ||
684 | + <version>${springfox-swagger.version}</version> | ||
685 | + </dependency> | ||
675 | </dependencies> | 686 | </dependencies> |
676 | </dependencyManagement> | 687 | </dependencyManagement> |
677 | 688 |
@@ -21,9 +21,9 @@ | @@ -21,9 +21,9 @@ | ||
21 | <parent> | 21 | <parent> |
22 | <groupId>org.thingsboard</groupId> | 22 | <groupId>org.thingsboard</groupId> |
23 | <version>0.0.1-SNAPSHOT</version> | 23 | <version>0.0.1-SNAPSHOT</version> |
24 | - <artifactId>server</artifactId> | 24 | + <artifactId>thingsboard</artifactId> |
25 | </parent> | 25 | </parent> |
26 | - <groupId>org.thingsboard.server</groupId> | 26 | + <groupId>org.thingsboard</groupId> |
27 | <artifactId>tools</artifactId> | 27 | <artifactId>tools</artifactId> |
28 | <packaging>jar</packaging> | 28 | <packaging>jar</packaging> |
29 | 29 | ||
@@ -37,7 +37,7 @@ | @@ -37,7 +37,7 @@ | ||
37 | 37 | ||
38 | <dependencies> | 38 | <dependencies> |
39 | <dependency> | 39 | <dependency> |
40 | - <groupId>org.thingsboard.server.common</groupId> | 40 | + <groupId>org.thingsboard.common</groupId> |
41 | <artifactId>data</artifactId> | 41 | <artifactId>data</artifactId> |
42 | </dependency> | 42 | </dependency> |
43 | <dependency> | 43 | <dependency> |
@@ -19,11 +19,11 @@ | @@ -19,11 +19,11 @@ | ||
19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | 19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
20 | <modelVersion>4.0.0</modelVersion> | 20 | <modelVersion>4.0.0</modelVersion> |
21 | <parent> | 21 | <parent> |
22 | - <groupId>org.thingsboard.server</groupId> | 22 | + <groupId>org.thingsboard</groupId> |
23 | <version>0.0.1-SNAPSHOT</version> | 23 | <version>0.0.1-SNAPSHOT</version> |
24 | <artifactId>transport</artifactId> | 24 | <artifactId>transport</artifactId> |
25 | </parent> | 25 | </parent> |
26 | - <groupId>org.thingsboard.server.transport</groupId> | 26 | + <groupId>org.thingsboard.transport</groupId> |
27 | <artifactId>coap</artifactId> | 27 | <artifactId>coap</artifactId> |
28 | <packaging>jar</packaging> | 28 | <packaging>jar</packaging> |
29 | 29 | ||
@@ -37,7 +37,7 @@ | @@ -37,7 +37,7 @@ | ||
37 | 37 | ||
38 | <dependencies> | 38 | <dependencies> |
39 | <dependency> | 39 | <dependency> |
40 | - <groupId>org.thingsboard.server.common</groupId> | 40 | + <groupId>org.thingsboard.common</groupId> |
41 | <artifactId>transport</artifactId> | 41 | <artifactId>transport</artifactId> |
42 | </dependency> | 42 | </dependency> |
43 | <dependency> | 43 | <dependency> |
@@ -19,11 +19,11 @@ | @@ -19,11 +19,11 @@ | ||
19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | 19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
20 | <modelVersion>4.0.0</modelVersion> | 20 | <modelVersion>4.0.0</modelVersion> |
21 | <parent> | 21 | <parent> |
22 | - <groupId>org.thingsboard.server</groupId> | 22 | + <groupId>org.thingsboard</groupId> |
23 | <version>0.0.1-SNAPSHOT</version> | 23 | <version>0.0.1-SNAPSHOT</version> |
24 | <artifactId>transport</artifactId> | 24 | <artifactId>transport</artifactId> |
25 | </parent> | 25 | </parent> |
26 | - <groupId>org.thingsboard.server.transport</groupId> | 26 | + <groupId>org.thingsboard.transport</groupId> |
27 | <artifactId>http</artifactId> | 27 | <artifactId>http</artifactId> |
28 | <packaging>jar</packaging> | 28 | <packaging>jar</packaging> |
29 | 29 | ||
@@ -37,7 +37,7 @@ | @@ -37,7 +37,7 @@ | ||
37 | 37 | ||
38 | <dependencies> | 38 | <dependencies> |
39 | <dependency> | 39 | <dependency> |
40 | - <groupId>org.thingsboard.server.common</groupId> | 40 | + <groupId>org.thingsboard.common</groupId> |
41 | <artifactId>transport</artifactId> | 41 | <artifactId>transport</artifactId> |
42 | </dependency> | 42 | </dependency> |
43 | <dependency> | 43 | <dependency> |
@@ -19,11 +19,11 @@ | @@ -19,11 +19,11 @@ | ||
19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | 19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
20 | <modelVersion>4.0.0</modelVersion> | 20 | <modelVersion>4.0.0</modelVersion> |
21 | <parent> | 21 | <parent> |
22 | - <groupId>org.thingsboard.server</groupId> | 22 | + <groupId>org.thingsboard</groupId> |
23 | <version>0.0.1-SNAPSHOT</version> | 23 | <version>0.0.1-SNAPSHOT</version> |
24 | <artifactId>transport</artifactId> | 24 | <artifactId>transport</artifactId> |
25 | </parent> | 25 | </parent> |
26 | - <groupId>org.thingsboard.server.transport</groupId> | 26 | + <groupId>org.thingsboard.transport</groupId> |
27 | <artifactId>mqtt</artifactId> | 27 | <artifactId>mqtt</artifactId> |
28 | <packaging>jar</packaging> | 28 | <packaging>jar</packaging> |
29 | 29 | ||
@@ -37,7 +37,7 @@ | @@ -37,7 +37,7 @@ | ||
37 | 37 | ||
38 | <dependencies> | 38 | <dependencies> |
39 | <dependency> | 39 | <dependency> |
40 | - <groupId>org.thingsboard.server.common</groupId> | 40 | + <groupId>org.thingsboard.common</groupId> |
41 | <artifactId>transport</artifactId> | 41 | <artifactId>transport</artifactId> |
42 | </dependency> | 42 | </dependency> |
43 | <dependency> | 43 | <dependency> |
@@ -21,9 +21,9 @@ | @@ -21,9 +21,9 @@ | ||
21 | <parent> | 21 | <parent> |
22 | <groupId>org.thingsboard</groupId> | 22 | <groupId>org.thingsboard</groupId> |
23 | <version>0.0.1-SNAPSHOT</version> | 23 | <version>0.0.1-SNAPSHOT</version> |
24 | - <artifactId>server</artifactId> | 24 | + <artifactId>thingsboard</artifactId> |
25 | </parent> | 25 | </parent> |
26 | - <groupId>org.thingsboard.server</groupId> | 26 | + <groupId>org.thingsboard</groupId> |
27 | <artifactId>transport</artifactId> | 27 | <artifactId>transport</artifactId> |
28 | <packaging>pom</packaging> | 28 | <packaging>pom</packaging> |
29 | 29 |
@@ -21,9 +21,9 @@ | @@ -21,9 +21,9 @@ | ||
21 | <parent> | 21 | <parent> |
22 | <groupId>org.thingsboard</groupId> | 22 | <groupId>org.thingsboard</groupId> |
23 | <version>0.0.1-SNAPSHOT</version> | 23 | <version>0.0.1-SNAPSHOT</version> |
24 | - <artifactId>server</artifactId> | 24 | + <artifactId>thingsboard</artifactId> |
25 | </parent> | 25 | </parent> |
26 | - <groupId>org.thingsboard.server</groupId> | 26 | + <groupId>org.thingsboard</groupId> |
27 | <artifactId>ui</artifactId> | 27 | <artifactId>ui</artifactId> |
28 | <packaging>jar</packaging> | 28 | <packaging>jar</packaging> |
29 | 29 |
@@ -21,7 +21,7 @@ export default angular.module('thingsboard.api.telemetryWebsocket', [thingsboard | @@ -21,7 +21,7 @@ export default angular.module('thingsboard.api.telemetryWebsocket', [thingsboard | ||
21 | .name; | 21 | .name; |
22 | 22 | ||
23 | /*@ngInject*/ | 23 | /*@ngInject*/ |
24 | -function TelemetryWebsocketService($log, $websocket, $timeout, $window, types, userService) { | 24 | +function TelemetryWebsocketService($websocket, $timeout, $window, types, userService) { |
25 | 25 | ||
26 | var isOpening = false, | 26 | var isOpening = false, |
27 | isOpened = false, | 27 | isOpened = false, |
@@ -57,9 +57,7 @@ function TelemetryWebsocketService($log, $websocket, $timeout, $window, types, u | @@ -57,9 +57,7 @@ function TelemetryWebsocketService($log, $websocket, $timeout, $window, types, u | ||
57 | if (isOpened && (cmdsWrapper.tsSubCmds.length > 0 || | 57 | if (isOpened && (cmdsWrapper.tsSubCmds.length > 0 || |
58 | cmdsWrapper.historyCmds.length > 0 || | 58 | cmdsWrapper.historyCmds.length > 0 || |
59 | cmdsWrapper.attrSubCmds.length > 0)) { | 59 | cmdsWrapper.attrSubCmds.length > 0)) { |
60 | - $log.debug("Sending subscription commands!"); | ||
61 | dataStream.send(angular.copy(cmdsWrapper)).then(function () { | 60 | dataStream.send(angular.copy(cmdsWrapper)).then(function () { |
62 | - $log.debug("Subscription commands were sent!"); | ||
63 | checkToClose(); | 61 | checkToClose(); |
64 | }); | 62 | }); |
65 | cmdsWrapper.tsSubCmds = []; | 63 | cmdsWrapper.tsSubCmds = []; |
@@ -69,21 +67,17 @@ function TelemetryWebsocketService($log, $websocket, $timeout, $window, types, u | @@ -69,21 +67,17 @@ function TelemetryWebsocketService($log, $websocket, $timeout, $window, types, u | ||
69 | tryOpenSocket(); | 67 | tryOpenSocket(); |
70 | } | 68 | } |
71 | 69 | ||
72 | - function onError (message) { | ||
73 | - $log.debug("Websocket error:"); | ||
74 | - $log.debug(message); | 70 | + function onError (/*message*/) { |
75 | isOpening = false; | 71 | isOpening = false; |
76 | } | 72 | } |
77 | 73 | ||
78 | function onOpen () { | 74 | function onOpen () { |
79 | - $log.debug("Websocket opened"); | ||
80 | isOpening = false; | 75 | isOpening = false; |
81 | isOpened = true; | 76 | isOpened = true; |
82 | publishCommands(); | 77 | publishCommands(); |
83 | } | 78 | } |
84 | 79 | ||
85 | function onClose () { | 80 | function onClose () { |
86 | - $log.debug("Websocket closed"); | ||
87 | isOpening = false; | 81 | isOpening = false; |
88 | isOpened = false; | 82 | isOpened = false; |
89 | } | 83 | } |
@@ -46,8 +46,7 @@ var pluginActionsClazzHelpLinkMap = { | @@ -46,8 +46,7 @@ var pluginActionsClazzHelpLinkMap = { | ||
46 | 'org.thingsboard.server.extensions.rest.action.RestApiCallPluginAction': 'pluginActionRestApiCall' | 46 | 'org.thingsboard.server.extensions.rest.action.RestApiCallPluginAction': 'pluginActionRestApiCall' |
47 | }; | 47 | }; |
48 | 48 | ||
49 | -//var helpBaseUrl = "http://thingsboard.io"; | ||
50 | -var helpBaseUrl = "http://localhost:4000"; | 49 | +var helpBaseUrl = "http://thingsboard.io"; |
51 | 50 | ||
52 | export default angular.module('thingsboard.help', []) | 51 | export default angular.module('thingsboard.help', []) |
53 | .constant('helpLinks', | 52 | .constant('helpLinks', |