better config implementation from ENV or json file.
using new environment; params passed as docker-compose params
This commit is contained in:
15
Dockerfile
15
Dockerfile
@@ -1,7 +1,20 @@
|
|||||||
FROM node:8
|
FROM node:10
|
||||||
|
|
||||||
|
# set user
|
||||||
|
#RUN groupadd -r nodejs && useradd -m -r -g -s /bin/bash nodejs nodejs
|
||||||
|
#USER nodejs
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY package*.json ./
|
COPY package*.json ./
|
||||||
RUN npm install
|
RUN npm install
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
|
ENV NODE_ENV mitko
|
||||||
|
|
||||||
CMD npm start
|
CMD npm start
|
||||||
|
# CMD [“dumb-init”, “node”, dht.js”]
|
||||||
|
# CMD ["npm","run", "pm2"]
|
||||||
|
|
||||||
EXPOSE 2080
|
EXPOSE 2080
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
var records = [
|
var records = [
|
||||||
{ id: 1, username: 'me', password: 'A23', displayName: 'admin', emails: [ { value: 'jack@example.com' } ] }
|
{ id: 1, username: 'me', password: 'A23', displayName: 'admin', emails: [ { value: 'jack@example.com' } ] }
|
||||||
, { id: 2, username: 'db', password: 'doby', displayName: 'DB', emails: [ { value: 'jill@example.com' } ] }
|
, { id: 2, username: 'db', password: 'doby', displayName: 'DB', emails: [ { value: 'jill@example.com' } ] }
|
||||||
, { id: 3, username: 'popov', password: 'Zelenakrav@', displayName: 'Doby', emails: [ { value: 'db@example.com' } ] }
|
|
||||||
];
|
];
|
||||||
|
|
||||||
exports.findById = function(id, cb) {
|
exports.findById = function(id, cb) {
|
||||||
|
|||||||
42
dht.js
42
dht.js
@@ -1,5 +1,17 @@
|
|||||||
// ./src/index.js
|
// ./src/index.js
|
||||||
var config = require('./src/setup_const');
|
|
||||||
|
const env = process.env.NODE_ENV || 'development';
|
||||||
|
console.log("ENV: %s", env);
|
||||||
|
const config = require(__dirname + '/config/config.json')[env];
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
var exLog = console.log;
|
||||||
|
console.log = function(msg) {
|
||||||
|
exLog.apply(this, arguments);
|
||||||
|
fs.appendFileSync(config.logFile, msg +"\r\n");
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
|
||||||
// importing the dependencies
|
// importing the dependencies
|
||||||
const util = require('util');
|
const util = require('util');
|
||||||
@@ -83,7 +95,7 @@ app.post('/accontrol',
|
|||||||
//break it
|
//break it
|
||||||
//code = code.substring(150);
|
//code = code.substring(150);
|
||||||
//console.log("RAW: " + code);
|
//console.log("RAW: " + code);
|
||||||
if(ir.SendCmd("http://"+AcIP, code))
|
if(ir.SendCmd("http://"+config.AcIP, code))
|
||||||
{
|
{
|
||||||
console.log("OK. Temp: " + req.body.temp);
|
console.log("OK. Temp: " + req.body.temp);
|
||||||
BroadcastWS(ac.Tlc112.GetState());
|
BroadcastWS(ac.Tlc112.GetState());
|
||||||
@@ -120,16 +132,19 @@ app.use('/waterTest',function(req, res){
|
|||||||
|
|
||||||
console.log("Watering TEST for: " + req.params);
|
console.log("Watering TEST for: " + req.params);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
config.gardenIP = process.env.GARDEN_IP || config.gardenIP
|
||||||
|
|
||||||
app.use('/water',function(req, res){
|
app.use('/water',function(req, res){
|
||||||
var time = req.query.t;
|
var time = req.query.t;
|
||||||
console.log("Watering cmd for: " + time);
|
console.log("Watering cmd for: " + time);
|
||||||
request('http://'+config.GardenIP+'/tools?cmd=event,manualwatering='+ time, { json: true }, (err, res, body) => {
|
request('http://'+config.gardenIP+'/tools?cmd=event,manualwatering='+ time, { json: true }, (err, res, body) => {
|
||||||
if (err) { return console.log("Problem watering: " + err); }
|
if (err) { return console.log("Problem watering: " + err); }
|
||||||
console.log("Watering cmd successfully sent!");
|
console.log("Watering cmd successfully sent!");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
app.use('/waterStop',function(req, res){
|
app.use('/waterStop',function(req, res){
|
||||||
request('http://'+config.GardenIP+'/tools?cmd=event,stopwatering', { json: true }, (err, res, body) => {
|
request('http://'+config.gardenIP+'/tools?cmd=event,stopwatering', { json: true }, (err, res, body) => {
|
||||||
if (err) { return console.log("Problem watering: " + err); }
|
if (err) { return console.log("Problem watering: " + err); }
|
||||||
console.log("STOP watering cmd sent!");
|
console.log("STOP watering cmd sent!");
|
||||||
});
|
});
|
||||||
@@ -161,6 +176,7 @@ app.put('/device/:device_id/:field_name/:field_value', (req, res) => {
|
|||||||
|
|
||||||
//!Startup
|
//!Startup
|
||||||
|
|
||||||
|
var wws;
|
||||||
if(credentials){
|
if(credentials){
|
||||||
var httpsServer = https.createServer(credentials, app);
|
var httpsServer = https.createServer(credentials, app);
|
||||||
httpsServer.listen(2443, () => {
|
httpsServer.listen(2443, () => {
|
||||||
@@ -175,6 +191,7 @@ else
|
|||||||
console.log('HTTP server listening on port 2080');
|
console.log('HTTP server listening on port 2080');
|
||||||
});
|
});
|
||||||
wss = new WebSocket.Server({ port: 2081 });//not secure
|
wss = new WebSocket.Server({ port: 2081 });//not secure
|
||||||
|
console.log('WebSocket server listening on port 2081');
|
||||||
}
|
}
|
||||||
|
|
||||||
// // # ┌────────────── second (optional)
|
// // # ┌────────────── second (optional)
|
||||||
@@ -194,25 +211,14 @@ else
|
|||||||
|
|
||||||
//db.devicemessages.getFromDht('http://192.168.1.126/json');
|
//db.devicemessages.getFromDht('http://192.168.1.126/json');
|
||||||
|
|
||||||
wss.on('connection', ws => {
|
wss.on('connection', wss => {
|
||||||
ws.on('message', message => {
|
wss.on('message', message => {
|
||||||
console.log('Received message => ${message}');
|
console.log('Received message => ${message}');
|
||||||
});
|
});
|
||||||
ws.send('ho!');
|
wss.send('ho!');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
const env = process.env.NODE_ENV || 'development';
|
|
||||||
const cfg = require(__dirname + '/config/config.json')[env];
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
var exLog = console.log;
|
|
||||||
console.log = function(msg) {
|
|
||||||
exLog.apply(this, arguments);
|
|
||||||
fs.appendFileSync(cfg.logFile, msg +"\r\n");
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
|
|
||||||
// const {keys} = Object;
|
// const {keys} = Object;
|
||||||
// const {Console} = console;
|
// const {Console} = console;
|
||||||
|
|
||||||
|
|||||||
@@ -5,14 +5,20 @@ services:
|
|||||||
build: .
|
build: .
|
||||||
environment:
|
environment:
|
||||||
- DATABASE_HOST=node-mysql
|
- DATABASE_HOST=node-mysql
|
||||||
|
- DATABASE_NAME=iot
|
||||||
|
- DATABASE_USER=root
|
||||||
|
- DATABASE_PASS=mitko2021
|
||||||
|
- GARDEN_IP=192.168.0.187
|
||||||
depends_on:
|
depends_on:
|
||||||
- node-mysql
|
- node-mysql
|
||||||
restart: always
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
- 2080:2080
|
- 2081:2080
|
||||||
node-mysql:
|
node-mysql:
|
||||||
build: ./mysql
|
build: ./mysql
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
environment:
|
||||||
|
MYSQL_DATABASE: iot
|
||||||
MYSQL_ROOT_PASSWORD: mitko2021
|
MYSQL_ROOT_PASSWORD: mitko2021
|
||||||
MYSQL_DATABASE: iot
|
MYSQL_USER: iot
|
||||||
|
MYSQL_PASSWORD: mitko2021
|
||||||
@@ -5,6 +5,7 @@ const path = require('path');
|
|||||||
const Sequelize = require('sequelize');
|
const Sequelize = require('sequelize');
|
||||||
const basename = path.basename(__filename);
|
const basename = path.basename(__filename);
|
||||||
const env = process.env.NODE_ENV || 'development';
|
const env = process.env.NODE_ENV || 'development';
|
||||||
|
console.log("ENV: %s", env);
|
||||||
const config = require(__dirname + '/../config/config.json')[env];
|
const config = require(__dirname + '/../config/config.json')[env];
|
||||||
const db = {};
|
const db = {};
|
||||||
|
|
||||||
@@ -12,6 +13,7 @@ let sequelize;
|
|||||||
if (config.use_env_variable) {
|
if (config.use_env_variable) {
|
||||||
sequelize = new Sequelize(process.env[config.use_env_variable], config);
|
sequelize = new Sequelize(process.env[config.use_env_variable], config);
|
||||||
} else {
|
} else {
|
||||||
|
console.log("Sequelize: using config.json configuration.");
|
||||||
sequelize = new Sequelize(config.database, config.username, config.password, config);
|
sequelize = new Sequelize(config.database, config.username, config.password, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
12158
package-lock.json
generated
12158
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -4,7 +4,8 @@
|
|||||||
"description": " test api for IOT devices",
|
"description": " test api for IOT devices",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "nodemon dht.js",
|
"pm2": "pm2 start ecosystem.config.js --no-daemon",
|
||||||
|
"dev": "nodemon index.js",
|
||||||
"start": "node index.js"
|
"start": "node index.js"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
@@ -37,6 +38,7 @@
|
|||||||
"mongoose": "^5.9.19",
|
"mongoose": "^5.9.19",
|
||||||
"morgan": "^1.10.0",
|
"morgan": "^1.10.0",
|
||||||
"mosca": "^2.8.3",
|
"mosca": "^2.8.3",
|
||||||
|
"jsonschema": "1.2.6",
|
||||||
"mqtt": "^4.1.0",
|
"mqtt": "^4.1.0",
|
||||||
"mysql": "^2.18.1",
|
"mysql": "^2.18.1",
|
||||||
"mysql2": "^2.1.0",
|
"mysql2": "^2.1.0",
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
const env = process.env.NODE_ENV || 'development';
|
const env = process.env.NODE_ENV || 'development';
|
||||||
|
console.log("ENV: %s", env);
|
||||||
const config = require(__dirname + '/../../config/config.json')[env];
|
const config = require(__dirname + '/../../config/config.json')[env];
|
||||||
|
config.host = process.env.DATABASE_HOST || config.host || '127.0.0.1';
|
||||||
|
config.database = process.env.DATABASE_NAME || config.database || 'iot';
|
||||||
|
config.username = process.env.DATABASE_USER || config.username;
|
||||||
|
config.password = process.env.DATABASE_PASS || config.password;
|
||||||
|
|
||||||
const Sequelize = require("sequelize");
|
const Sequelize = require("sequelize");
|
||||||
const mongoose = require('mongoose');
|
const mongoose = require('mongoose');
|
||||||
@@ -17,7 +21,12 @@ let DevicesSchema = new Schema({
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
var sqlz = new Sequelize(config.database, config.username, config.password,{dialect: config.dialect, logging: false});
|
console.log('sqlz: Checking config sources: config.host : %s', config.host );
|
||||||
|
console.log('sqlz: Checking config sources: config.database : %s', config.database );
|
||||||
|
var sqlz = new Sequelize(config.database, config.username, config.password,
|
||||||
|
{ dialect: config.dialect,
|
||||||
|
host: config.host,
|
||||||
|
logging: false});
|
||||||
var Device = sqlz.define('device', {
|
var Device = sqlz.define('device', {
|
||||||
id: { type: Sequelize.INTEGER, autoIncrement: true, primaryKey: true },
|
id: { type: Sequelize.INTEGER, autoIncrement: true, primaryKey: true },
|
||||||
name: Sequelize.STRING,
|
name: Sequelize.STRING,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
//devicemessages
|
//devicemessages
|
||||||
var mysql = require('mysql');
|
var mysql = require('mysql2');
|
||||||
|
|
||||||
|
|
||||||
// const fs = require('fs');
|
// const fs = require('fs');
|
||||||
@@ -7,22 +7,24 @@ var mysql = require('mysql');
|
|||||||
// const Sequelize = require('sequelize');
|
// const Sequelize = require('sequelize');
|
||||||
// const basename = path.basename(__filename);
|
// const basename = path.basename(__filename);
|
||||||
const env = process.env.NODE_ENV || 'development';
|
const env = process.env.NODE_ENV || 'development';
|
||||||
|
console.log("ENV: %s", env);
|
||||||
const config = require(__dirname + '/../../config/config.json')[env];
|
const config = require(__dirname + '/../../config/config.json')[env];
|
||||||
|
|
||||||
|
console.log('DB: Checking config sources: ');
|
||||||
|
console.log('DB: Checking config sources: process.env.DATABASE_HOST: %s', process.env.DATABASE_HOST);
|
||||||
|
console.log('DB: Checking config sources: config.host : %s', config.host );
|
||||||
|
console.log('DB: Checking config sources: process.env.DATABASE_NAME: %s', process.env.DATABASE_NAME);
|
||||||
|
console.log('DB: Checking config sources: config.database : %s', config.database );
|
||||||
|
|
||||||
var pool = mysql.createPool({
|
var pool = mysql.createPool({
|
||||||
connectionLimit : 20,
|
connectionLimit : 20,
|
||||||
host : process.env.DATABASE_HOST || config.host || '127.0.0.1',
|
host : process.env.DATABASE_HOST || config.host || '127.0.0.1',
|
||||||
user : process.env.DATABASE_USER || config.username,
|
port : process.env.DATABASE_PORT || config.port || '3306',
|
||||||
password : process.env.DATABASE_PASS || config.password,
|
user : process.env.DATABASE_USER || config.username,
|
||||||
database : process.env.DATABASE_DB || config.database
|
password : process.env.DATABASE_PASS || config.password,
|
||||||
|
database : process.env.DATABASE_NAME || config.database || 'iot'
|
||||||
});
|
});
|
||||||
// var con = mysql.createConnection({
|
|
||||||
// host : 'localhost',
|
|
||||||
// user : 'iot',
|
|
||||||
// password : '!iot_popovi',
|
|
||||||
// database : 'iot'
|
|
||||||
// });
|
|
||||||
|
|
||||||
//const got = require('got');
|
//const got = require('got');
|
||||||
pool.on('acquire', function (connection) {
|
pool.on('acquire', function (connection) {
|
||||||
|
|||||||
@@ -1,14 +1,17 @@
|
|||||||
|
|
||||||
var mysql = require('mysql');
|
var mysql = require('mysql2');
|
||||||
|
|
||||||
const env = process.env.NODE_ENV || 'development';
|
const env = process.env.NODE_ENV || 'development';
|
||||||
|
console.log("ENV: %s", env);
|
||||||
const config = require(__dirname + '/../../config/config.json')[env];
|
const config = require(__dirname + '/../../config/config.json')[env];
|
||||||
|
|
||||||
var pool = mysql.createPool({
|
var pool = mysql.createPool({
|
||||||
connectionLimit : 20,
|
connectionLimit : 20,
|
||||||
host : config.host,
|
host : process.env.DATABASE_HOST || config.host || '127.0.0.1',
|
||||||
user : config.username,
|
port : process.env.DATABASE_PORT || config.port || '3306',
|
||||||
password : config.password,
|
user : process.env.DATABASE_USER || config.username,
|
||||||
database : config.database
|
password : process.env.DATABASE_PASS || config.password,
|
||||||
|
database : process.env.DATABASE_NAME || config.database || 'iot'
|
||||||
});
|
});
|
||||||
pool.on('acquire', function (connection) {
|
pool.on('acquire', function (connection) {
|
||||||
console.log('Connection %d acquired', connection.threadId);
|
console.log('Connection %d acquired', connection.threadId);
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
//dependencies
|
//dependencies
|
||||||
var config = require('./setup_const');
|
|
||||||
var db = require('./db');
|
var db = require('./db');
|
||||||
|
const env = process.env.NODE_ENV || 'development';
|
||||||
|
console.log("ENV: %s", env);
|
||||||
|
const config = require(__dirname + '/../config/config.json')[env];
|
||||||
|
|
||||||
var mosca = require('mosca');
|
var mosca = require('mosca');
|
||||||
var mqtt_settings = {
|
var mqtt_settings = {
|
||||||
port:1883
|
port:1884
|
||||||
}
|
}
|
||||||
|
|
||||||
if(typeof credentials!=='undefined')
|
if(typeof credentials!=='undefined')
|
||||||
@@ -24,7 +26,7 @@ mqtt.on('clientConnected', function(){
|
|||||||
});
|
});
|
||||||
|
|
||||||
var mqtt = require('mqtt');
|
var mqtt = require('mqtt');
|
||||||
var mqtt_client = mqtt.connect('mqtt://'+ config.HomeControllerMQTT);
|
var mqtt_client = mqtt.connect('mqtt://'+ config.mqttIP);
|
||||||
mqtt_client.on('connect', function () {
|
mqtt_client.on('connect', function () {
|
||||||
console.log("MQTT connected. subscribing to topics");
|
console.log("MQTT connected. subscribing to topics");
|
||||||
mqtt_client.subscribe('tele/tasmota/STATE');
|
mqtt_client.subscribe('tele/tasmota/STATE');
|
||||||
|
|||||||
Reference in New Issue
Block a user