connected to atlas
This commit is contained in:
4
dist/main.js
vendored
4
dist/main.js
vendored
@ -7,9 +7,9 @@ const MongoSave = require("./mongosave");
|
|||||||
log.info("Dispatcher starting");
|
log.info("Dispatcher starting");
|
||||||
let dispatcher = new mqtt.MqttDispatcher("mqtts://broker.hottis.de:8883", "wn", "locutus", "/home/wn/server-ca.crt");
|
let dispatcher = new mqtt.MqttDispatcher("mqtts://broker.hottis.de:8883", "wn", "locutus", "/home/wn/server-ca.crt");
|
||||||
dispatcher.register('IoT/espThermometer2/#', 'toJson', EspThermToJson.espThermToJson);
|
dispatcher.register('IoT/espThermometer2/#', 'toJson', EspThermToJson.espThermToJson);
|
||||||
let mongo = new MongoSave.MongoSave();
|
let atlasUrl = "mongodb://receiver:esp8266.@cluster0-shard-00-00-7qduq.mongodb.net:27017,cluster0-shard-00-01-7qduq.mongodb.net:27017,cluster0-shard-00-02-7qduq.mongodb.net:27017/hottis?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin";
|
||||||
|
let mongo = new MongoSave.MongoSave(atlasUrl);
|
||||||
dispatcher.register('IoT/espThermometer2/#', 'MongoSave', mongo);
|
dispatcher.register('IoT/espThermometer2/#', 'MongoSave', mongo);
|
||||||
// plugintest1.pluginTest1Start(dispatcher)
|
|
||||||
dispatcher.exec();
|
dispatcher.exec();
|
||||||
log.info("Dispatcher running");
|
log.info("Dispatcher running");
|
||||||
//# sourceMappingURL=main.js.map
|
//# sourceMappingURL=main.js.map
|
39
dist/mongosave.js
vendored
39
dist/mongosave.js
vendored
@ -1,11 +1,48 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const CallChain = require("./callchain");
|
const CallChain = require("./callchain");
|
||||||
|
const log = require("./log");
|
||||||
|
const MongoDB = require("mongodb");
|
||||||
class MongoSave extends CallChain.ABaseChainItem {
|
class MongoSave extends CallChain.ABaseChainItem {
|
||||||
constructor() {
|
constructor(url) {
|
||||||
super('MongoSave');
|
super('MongoSave');
|
||||||
|
this._url = url;
|
||||||
|
this._mongoClient = new MongoDB.MongoClient();
|
||||||
|
this._connectPending = false;
|
||||||
}
|
}
|
||||||
func(message) {
|
func(message) {
|
||||||
|
if (!this._dbh) {
|
||||||
|
log.info("Not database connection yet");
|
||||||
|
if (!this._connectPending) {
|
||||||
|
this._connectPending = true;
|
||||||
|
this._mongoClient.connect(this._url)
|
||||||
|
.then((db) => {
|
||||||
|
log.info("Successfully opened MongoDB connect");
|
||||||
|
this._dbh = db;
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
log.error(`Failure when opening MongoDB connect: ${err}`);
|
||||||
|
this._dbh = undefined;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
log.info("Connecting to database is pending");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this._dbh) {
|
||||||
|
log.info("Database handle is available");
|
||||||
|
let coll = this._dbh.collection("iot");
|
||||||
|
coll.insertOne(message)
|
||||||
|
.then((res) => {
|
||||||
|
log.info(`Successfully wrote one item in database: ${res.insertedId}`);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
log.error(`Failure when trying to write one item in database: ${err}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
log.error(`No database connection yet, drop message ${message}`);
|
||||||
|
}
|
||||||
return "<<" + message + ">>";
|
return "<<" + message + ">>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
45
npm-debug.log
Normal file
45
npm-debug.log
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
0 info it worked if it ends with ok
|
||||||
|
1 verbose cli [ '/usr/bin/nodejs', '/usr/bin/npm', 'start' ]
|
||||||
|
2 info using npm@3.10.10
|
||||||
|
3 info using node@v6.11.2
|
||||||
|
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
|
||||||
|
5 info lifecycle dispatcher@1.0.0~prestart: dispatcher@1.0.0
|
||||||
|
6 silly lifecycle dispatcher@1.0.0~prestart: no script for prestart, continuing
|
||||||
|
7 info lifecycle dispatcher@1.0.0~start: dispatcher@1.0.0
|
||||||
|
8 verbose lifecycle dispatcher@1.0.0~start: unsafe-perm in lifecycle true
|
||||||
|
9 verbose lifecycle dispatcher@1.0.0~start: PATH: /usr/lib/node_modules/npm/bin/node-gyp-bin:/home/wn/workspace-node/Dispatcher/node_modules/.bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/wn/.local/bin:/home/wn/bin:/opt/jdk/bin:/opt/apache-maven/bin:/home/wn/mos/bin
|
||||||
|
10 verbose lifecycle dispatcher@1.0.0~start: CWD: /home/wn/workspace-node/Dispatcher
|
||||||
|
11 silly lifecycle dispatcher@1.0.0~start: Args: [ '-c', 'node dist/main.js' ]
|
||||||
|
12 silly lifecycle dispatcher@1.0.0~start: Returned: code: 1 signal: null
|
||||||
|
13 info lifecycle dispatcher@1.0.0~start: Failed to exec start script
|
||||||
|
14 verbose stack Error: dispatcher@1.0.0 start: `node dist/main.js`
|
||||||
|
14 verbose stack Exit status 1
|
||||||
|
14 verbose stack at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/lib/utils/lifecycle.js:255:16)
|
||||||
|
14 verbose stack at emitTwo (events.js:106:13)
|
||||||
|
14 verbose stack at EventEmitter.emit (events.js:191:7)
|
||||||
|
14 verbose stack at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/lib/utils/spawn.js:40:14)
|
||||||
|
14 verbose stack at emitTwo (events.js:106:13)
|
||||||
|
14 verbose stack at ChildProcess.emit (events.js:191:7)
|
||||||
|
14 verbose stack at maybeClose (internal/child_process.js:891:16)
|
||||||
|
14 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
|
||||||
|
15 verbose pkgid dispatcher@1.0.0
|
||||||
|
16 verbose cwd /home/wn/workspace-node/Dispatcher
|
||||||
|
17 error Linux 4.9.0-3-amd64
|
||||||
|
18 error argv "/usr/bin/nodejs" "/usr/bin/npm" "start"
|
||||||
|
19 error node v6.11.2
|
||||||
|
20 error npm v3.10.10
|
||||||
|
21 error code ELIFECYCLE
|
||||||
|
22 error dispatcher@1.0.0 start: `node dist/main.js`
|
||||||
|
22 error Exit status 1
|
||||||
|
23 error Failed at the dispatcher@1.0.0 start script 'node dist/main.js'.
|
||||||
|
23 error Make sure you have the latest version of node.js and npm installed.
|
||||||
|
23 error If you do, this is most likely a problem with the dispatcher package,
|
||||||
|
23 error not with npm itself.
|
||||||
|
23 error Tell the author that this fails on your system:
|
||||||
|
23 error node dist/main.js
|
||||||
|
23 error You can get information on how to open an issue for this project with:
|
||||||
|
23 error npm bugs dispatcher
|
||||||
|
23 error Or if that isn't available, you can get their info via:
|
||||||
|
23 error npm owner ls dispatcher
|
||||||
|
23 error There is likely additional logging output above.
|
||||||
|
24 verbose exit [ 1, true ]
|
@ -13,6 +13,7 @@
|
|||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/chalk": "^0.4.31",
|
"@types/chalk": "^0.4.31",
|
||||||
|
"@types/mongodb": "^2.2.10",
|
||||||
"@types/mqtt": "0.0.34",
|
"@types/mqtt": "0.0.34",
|
||||||
"@types/node": "^8.0.14",
|
"@types/node": "^8.0.14",
|
||||||
"typescript": "^2.4.2"
|
"typescript": "^2.4.2"
|
||||||
@ -20,6 +21,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chalk": "^2.0.1",
|
"chalk": "^2.0.1",
|
||||||
"moment": "^2.18.1",
|
"moment": "^2.18.1",
|
||||||
|
"mongodb": "^2.2.31",
|
||||||
"mqtt": "^2.9.2"
|
"mqtt": "^2.9.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,9 @@ let dispatcher = new mqtt.MqttDispatcher("mqtts://broker.hottis.de:8883",
|
|||||||
|
|
||||||
dispatcher.register('IoT/espThermometer2/#', 'toJson', EspThermToJson.espThermToJson)
|
dispatcher.register('IoT/espThermometer2/#', 'toJson', EspThermToJson.espThermToJson)
|
||||||
|
|
||||||
let mongo : MongoSave.MongoSave = new MongoSave.MongoSave()
|
|
||||||
|
let atlasUrl = "mongodb://receiver:esp8266.@cluster0-shard-00-00-7qduq.mongodb.net:27017,cluster0-shard-00-01-7qduq.mongodb.net:27017,cluster0-shard-00-02-7qduq.mongodb.net:27017/hottis?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin"
|
||||||
|
let mongo : MongoSave.MongoSave = new MongoSave.MongoSave(atlasUrl)
|
||||||
dispatcher.register('IoT/espThermometer2/#', 'MongoSave', mongo);
|
dispatcher.register('IoT/espThermometer2/#', 'MongoSave', mongo);
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,12 +1,52 @@
|
|||||||
import * as CallChain from './callchain'
|
import * as CallChain from './callchain'
|
||||||
import * as log from './log'
|
import * as log from './log'
|
||||||
|
import * as MongoDB from 'mongodb'
|
||||||
|
|
||||||
|
|
||||||
export class MongoSave extends CallChain.ABaseChainItem {
|
export class MongoSave extends CallChain.ABaseChainItem {
|
||||||
constructor() {
|
private _url : string
|
||||||
|
private _mongoClient : MongoDB.MongoClient
|
||||||
|
private _dbh : MongoDB.Db | undefined
|
||||||
|
private _connectPending : boolean
|
||||||
|
|
||||||
|
constructor(url:string) {
|
||||||
super('MongoSave')
|
super('MongoSave')
|
||||||
|
this._url = url
|
||||||
|
this._mongoClient = new MongoDB.MongoClient()
|
||||||
|
this._connectPending = false
|
||||||
}
|
}
|
||||||
|
|
||||||
protected func(message : any) : any {
|
protected func(message : any) : any {
|
||||||
|
if (! this._dbh) {
|
||||||
|
log.info("Not database connection yet")
|
||||||
|
if (! this._connectPending) {
|
||||||
|
this._connectPending = true
|
||||||
|
this._mongoClient.connect(this._url)
|
||||||
|
.then((db:MongoDB.Db) => {
|
||||||
|
log.info("Successfully opened MongoDB connect")
|
||||||
|
this._dbh = db
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
log.error(`Failure when opening MongoDB connect: ${err}`)
|
||||||
|
this._dbh = undefined
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
log.info("Connecting to database is pending")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this._dbh) {
|
||||||
|
log.info("Database handle is available")
|
||||||
|
let coll : MongoDB.Collection = this._dbh.collection("iot")
|
||||||
|
coll.insertOne(message)
|
||||||
|
.then((res : MongoDB.InsertOneWriteOpResult) => {
|
||||||
|
log.info(`Successfully wrote one item in database: ${res.insertedId}`)
|
||||||
|
})
|
||||||
|
.catch((err : any) => {
|
||||||
|
log.error(`Failure when trying to write one item in database: ${err}`)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
log.error(`No database connection yet, drop message ${message}`)
|
||||||
|
}
|
||||||
return "<<" + message + ">>"
|
return "<<" + message + ">>"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user