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
|
||||
|
||||
COPY package*.json ./
|
||||
RUN npm install
|
||||
|
||||
COPY . .
|
||||
|
||||
ENV NODE_ENV mitko
|
||||
|
||||
CMD npm start
|
||||
# CMD [“dumb-init”, “node”, dht.js”]
|
||||
# CMD ["npm","run", "pm2"]
|
||||
|
||||
EXPOSE 2080
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
var records = [
|
||||
{ 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: 3, username: 'popov', password: 'Zelenakrav@', displayName: 'Doby', emails: [ { value: 'db@example.com' } ] }
|
||||
];
|
||||
|
||||
exports.findById = function(id, cb) {
|
||||
|
||||
42
dht.js
42
dht.js
@@ -1,5 +1,17 @@
|
||||
// ./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
|
||||
const util = require('util');
|
||||
@@ -83,7 +95,7 @@ app.post('/accontrol',
|
||||
//break it
|
||||
//code = code.substring(150);
|
||||
//console.log("RAW: " + code);
|
||||
if(ir.SendCmd("http://"+AcIP, code))
|
||||
if(ir.SendCmd("http://"+config.AcIP, code))
|
||||
{
|
||||
console.log("OK. Temp: " + req.body.temp);
|
||||
BroadcastWS(ac.Tlc112.GetState());
|
||||
@@ -120,16 +132,19 @@ app.use('/waterTest',function(req, res){
|
||||
|
||||
console.log("Watering TEST for: " + req.params);
|
||||
});
|
||||
|
||||
config.gardenIP = process.env.GARDEN_IP || config.gardenIP
|
||||
|
||||
app.use('/water',function(req, res){
|
||||
var time = req.query.t;
|
||||
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); }
|
||||
console.log("Watering cmd successfully sent!");
|
||||
});
|
||||
});
|
||||
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); }
|
||||
console.log("STOP watering cmd sent!");
|
||||
});
|
||||
@@ -161,6 +176,7 @@ app.put('/device/:device_id/:field_name/:field_value', (req, res) => {
|
||||
|
||||
//!Startup
|
||||
|
||||
var wws;
|
||||
if(credentials){
|
||||
var httpsServer = https.createServer(credentials, app);
|
||||
httpsServer.listen(2443, () => {
|
||||
@@ -175,6 +191,7 @@ else
|
||||
console.log('HTTP server listening on port 2080');
|
||||
});
|
||||
wss = new WebSocket.Server({ port: 2081 });//not secure
|
||||
console.log('WebSocket server listening on port 2081');
|
||||
}
|
||||
|
||||
// // # ┌────────────── second (optional)
|
||||
@@ -194,25 +211,14 @@ else
|
||||
|
||||
//db.devicemessages.getFromDht('http://192.168.1.126/json');
|
||||
|
||||
wss.on('connection', ws => {
|
||||
ws.on('message', message => {
|
||||
wss.on('connection', wss => {
|
||||
wss.on('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 {Console} = console;
|
||||
|
||||
|
||||
@@ -5,14 +5,20 @@ services:
|
||||
build: .
|
||||
environment:
|
||||
- DATABASE_HOST=node-mysql
|
||||
- DATABASE_NAME=iot
|
||||
- DATABASE_USER=root
|
||||
- DATABASE_PASS=mitko2021
|
||||
- GARDEN_IP=192.168.0.187
|
||||
depends_on:
|
||||
- node-mysql
|
||||
restart: always
|
||||
ports:
|
||||
- 2080:2080
|
||||
- 2081:2080
|
||||
node-mysql:
|
||||
build: ./mysql
|
||||
restart: always
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: mitko2021
|
||||
MYSQL_DATABASE: iot
|
||||
MYSQL_ROOT_PASSWORD: mitko2021
|
||||
MYSQL_USER: iot
|
||||
MYSQL_PASSWORD: mitko2021
|
||||
@@ -5,6 +5,7 @@ const path = require('path');
|
||||
const Sequelize = require('sequelize');
|
||||
const basename = path.basename(__filename);
|
||||
const env = process.env.NODE_ENV || 'development';
|
||||
console.log("ENV: %s", env);
|
||||
const config = require(__dirname + '/../config/config.json')[env];
|
||||
const db = {};
|
||||
|
||||
@@ -12,6 +13,7 @@ let sequelize;
|
||||
if (config.use_env_variable) {
|
||||
sequelize = new Sequelize(process.env[config.use_env_variable], config);
|
||||
} else {
|
||||
console.log("Sequelize: using config.json configuration.");
|
||||
sequelize = new Sequelize(config.database, config.username, config.password, config);
|
||||
}
|
||||
|
||||
|
||||
12118
package-lock.json
generated
12118
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -4,7 +4,8 @@
|
||||
"description": " test api for IOT devices",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"dev": "nodemon dht.js",
|
||||
"pm2": "pm2 start ecosystem.config.js --no-daemon",
|
||||
"dev": "nodemon index.js",
|
||||
"start": "node index.js"
|
||||
},
|
||||
"repository": {
|
||||
@@ -37,6 +38,7 @@
|
||||
"mongoose": "^5.9.19",
|
||||
"morgan": "^1.10.0",
|
||||
"mosca": "^2.8.3",
|
||||
"jsonschema": "1.2.6",
|
||||
"mqtt": "^4.1.0",
|
||||
"mysql": "^2.18.1",
|
||||
"mysql2": "^2.1.0",
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
const env = process.env.NODE_ENV || 'development';
|
||||
console.log("ENV: %s", 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 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', {
|
||||
id: { type: Sequelize.INTEGER, autoIncrement: true, primaryKey: true },
|
||||
name: Sequelize.STRING,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//devicemessages
|
||||
var mysql = require('mysql');
|
||||
var mysql = require('mysql2');
|
||||
|
||||
|
||||
// const fs = require('fs');
|
||||
@@ -7,22 +7,24 @@ var mysql = require('mysql');
|
||||
// const Sequelize = require('sequelize');
|
||||
// const basename = path.basename(__filename);
|
||||
const env = process.env.NODE_ENV || 'development';
|
||||
console.log("ENV: %s", 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({
|
||||
connectionLimit : 20,
|
||||
host : process.env.DATABASE_HOST || config.host || '127.0.0.1',
|
||||
port : process.env.DATABASE_PORT || config.port || '3306',
|
||||
user : process.env.DATABASE_USER || config.username,
|
||||
password : process.env.DATABASE_PASS || config.password,
|
||||
database : process.env.DATABASE_DB || config.database
|
||||
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');
|
||||
pool.on('acquire', function (connection) {
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
|
||||
var mysql = require('mysql');
|
||||
var mysql = require('mysql2');
|
||||
|
||||
const env = process.env.NODE_ENV || 'development';
|
||||
console.log("ENV: %s", env);
|
||||
const config = require(__dirname + '/../../config/config.json')[env];
|
||||
|
||||
var pool = mysql.createPool({
|
||||
connectionLimit : 20,
|
||||
host : config.host,
|
||||
user : config.username,
|
||||
password : config.password,
|
||||
database : config.database
|
||||
host : process.env.DATABASE_HOST || config.host || '127.0.0.1',
|
||||
port : process.env.DATABASE_PORT || config.port || '3306',
|
||||
user : process.env.DATABASE_USER || config.username,
|
||||
password : process.env.DATABASE_PASS || config.password,
|
||||
database : process.env.DATABASE_NAME || config.database || 'iot'
|
||||
});
|
||||
pool.on('acquire', function (connection) {
|
||||
console.log('Connection %d acquired', connection.threadId);
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
//dependencies
|
||||
var config = require('./setup_const');
|
||||
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 mqtt_settings = {
|
||||
port:1883
|
||||
port:1884
|
||||
}
|
||||
|
||||
if(typeof credentials!=='undefined')
|
||||
@@ -24,7 +26,7 @@ mqtt.on('clientConnected', function(){
|
||||
});
|
||||
|
||||
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 () {
|
||||
console.log("MQTT connected. subscribing to topics");
|
||||
mqtt_client.subscribe('tele/tasmota/STATE');
|
||||
|
||||
Reference in New Issue
Block a user