Reputation: 111
I'm trying to create a plugin that posts the data it receives from devices to another application. However, I don't see any data coming in on my application. When I look at the plugin's error events I see the following stack trace:
org.thingsboard.server.extensions.api.rules.RuleException: I/O error on POST request for "http://127.0.0.1:7890/stream/gps":
Connection refused (Connection refused); nested exception is java.net.ConnectException: Connection refused (Connection refused)
at org.thingsboard.server.extensions.rest.plugin.RestApiCallMsgHandler.process(RestApiCallMsgHandler.java:64)
at org.thingsboard.server.extensions.api.plugins.AbstractPlugin.process(AbstractPlugin.java:47)
at org.thingsboard.server.actors.plugin.PluginActorMessageProcessor.onRuleToPluginMsg(PluginActorMessageProcessor.java:101)
at org.thingsboard.server.actors.plugin.PluginActor.onRuleToPluginMsg(PluginActor.java:93)
at org.thingsboard.server.actors.plugin.PluginActor.onReceive(PluginActor.java:52)
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:167)
at akka.actor.Actor$class.aroundReceive(Actor.scala:480)
at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:97)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)
at akka.actor.ActorCell.invoke(ActorCell.scala:495)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)
at akka.dispatch.Mailbox.run(Mailbox.scala:224)
at akka.dispatch.Mailbox.exec(Mailbox.scala:234)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: org.springframework.web.client.ResourceAccessException: I/O error on POST
request for "http://127.0.0.1:7890/stream/gps": Connection refused (Connection refused); nested exception is java.net.ConnectException: Connection refused (Connection refused)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:633)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:580)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:498)
at org.thingsboard.server.extensions.rest.plugin.RestApiCallMsgHandler.process(RestApiCallMsgHandler.java:48)
... 16 more
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
at sun.net.www.http.HttpClient.New(HttpClient.java:339)
at sun.net.www.http.HttpClient.New(HttpClient.java:357)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1202)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1138)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1032)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:966)
at org.springframework.http.client.SimpleBufferingClientHttpRequest.executeInternal(SimpleBufferingClientHttpRequest.java:78)
at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48)
at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:619)
... 19 more
I've quickly set up a node server to test if the data is being sent.
const express = require('express');
const app = express();
const cors = require('cors');
const bodyParser = require('body-parser');
app.use(cors());
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.all('*', (req, res, next) => {
console.log('received request');
next();
});
app.get('/', (req, res, next) => {
res.status(200).send('It works');
next();
});
app.post('/stream/gps', (req, res, next) => {
console.log(req.body);
res.status(200).json(req.body);
next();
});
app.listen(7890, () => {
console.log('Server listening on port 7890');
});
and when I do a post with insomnia or postman to the url, I get a 200 success
Upvotes: 0
Views: 1821
Reputation: 111
Found the problem, running the Thingsboard inside a docker container, so localhost === container localhost, not my device where I run the node server
Upvotes: 1