version with cloud_topic

This commit is contained in:
rasta5man 2025-01-01 12:53:20 +01:00
parent 31b5dbba5c
commit 41d1ec28dd
10 changed files with 264 additions and 350 deletions

76
cloud_topic.py Normal file
View file

@ -0,0 +1,76 @@
# import os
#
# def modify_file(file_path):
# """
# Modifies the given file by:
# 1. Appending "|cloud_topic" to the first line.
# 2. Inserting the text from the third "." to the first "|" on the second line after the last "|" character.
#
# Args:
# file_path (str): The path to the file to be modified.
# """
#
# with open(file_path, 'r+') as f:
# lines = f.readlines()
#
# # Modify the first line
# lines[0] += "|cloud_topic:string"
#
# # Modify the second line
# second_line = lines[1].strip() # Remove leading/trailing whitespace
# first_pipe_index = second_line.find('|')
# third_dot_index = second_line.find('.', second_line.find('.', second_line.find('.') + 1) + 1)
# text_to_insert = second_line[third_dot_index:first_pipe_index]
#
# last_pipe_index = second_line.rfind('|')
# lines[1] = second_line[:last_pipe_index + 1] + text_to_insert + "|" + second_line[last_pipe_index + 1:]
#
# print(first_pipe_index, third_dot_index, text_to_insert, last_pipe_index)
# # Write the modified lines back to the file
# # f.seek(0)
# # f.writelines(lines)
# # f.truncate()
#
# # Example usage:
# file_path = "settings.table" # Replace with the actual file path
# modify_file(file_path)
#
def modify_file(file_path):
"""
Modifies the given file by:
1. Appending "|cloud_topic" to the first line.
2. Inserting the text between the third "." and the second "|" on the second line after the last "|" character.
Args:
file_path (str): The path to the file to be modified.
"""
with open(file_path, 'r+') as f:
lines = f.readlines()
first_line = lines[0].strip()
first_line += "|cloud_topic:string\n"
# Modify the first line
lines[0] = first_line
# Modify the second line
second_line = lines[1].strip() # Remove leading/trailing whitespace
first_pipe_index = second_line.find('|')
second_pipe_index = second_line.find('|', first_pipe_index + 1)
third_dot_index = second_line.find('.', second_line.find('.', second_line.find('.') + 1) + 1)
text_to_insert = "u" + second_line[third_dot_index+1:second_pipe_index]
last_pipe_index = second_line.rfind('|')
lines[1] = second_line[:last_pipe_index + 1] + text_to_insert + "|" + second_line[last_pipe_index + 1:]
print(first_pipe_index, third_dot_index, text_to_insert, last_pipe_index)
# Write the modified lines back to the file
f.seek(0)
f.writelines(lines)
f.truncate()
# Example usage:
file_path = "/home/unipi/flowserver/databases/settings.table" # Replace with the actual file path
modify_file(file_path)

2
config
View file

@ -7,6 +7,6 @@ package#flow (Object) : { url: '/' }
table.relays : line:number|tbname:string|contactor:number|profile:string
table.nodes : node:number|tbname:string|line:number|profile:string|processed:boolean|status:boolean|time_of_last_communication:number
table.settings : rvo_name:string|lang:string|temperature_address:string|latitude:number|longitude:number|mqtt_host:string|mqtt_clientid:string|mqtt_username:string|mqtt_port:number|maintanace_mode:boolean|project_id:number|controller_type:string|serial_port:string|backup_on_failure:boolean|restore_from_backup:number|restore_backup_wait:number|node_status_nok_time:number|phases:number
table.settings : rvo_name:string|lang:string|temperature_address:string|latitude:number|longitude:number|mqtt_host:string|mqtt_clientid:string|mqtt_username:string|mqtt_port:number|maintanace_mode:boolean|project_id:number|controller_type:string|serial_port:string|backup_on_failure:boolean|restore_from_backup:number|restore_backup_wait:number|node_status_nok_time:number|phases:number|cloud_topic:string
table.pins : pin:string|type:string|line:number
table.notifications : key:string|weight:string|sk:string|en:string

View file

@ -1,2 +1,2 @@
rvo_name:string|lang:string|temperature_address:string|latitude:number|longitude:number|mqtt_host:string|mqtt_clientid:string|mqtt_username:string|mqtt_port:number|maintanace_mode:boolean|project_id:number|controller_type:string|serial_port:string|backup_on_failure:boolean|restore_from_backup:number|restore_backup_wait:number|node_status_nok_time:number|phases:number
+|rvo_senica_42_10.0.0.118|en|28.427B45920702|48.70826502|17.28455203|192.168.252.1|rvo_senica_42_10.0.0.118|QMvF7etEvbYMMr8Q6baP|1883|0|59|unipi|ttyUSB0|1|20|5|6|3|..............
rvo_name:string|lang:string|temperature_address:string|latitude:number|longitude:number|mqtt_host:string|mqtt_clientid:string|mqtt_username:string|mqtt_port:number|maintanace_mode:boolean|project_id:number|controller_type:string|serial_port:string|backup_on_failure:boolean|restore_from_backup:number|restore_backup_wait:number|node_status_nok_time:number|phases:number|cloud_topic:string
+|rvo_senica_22_ip10.0.0.109|en|28.F46E9D0E0000|48.70826502|17.28455203|192.168.252.1|rvo_senica_22_ip10.0.0.109|9excvr7yBcF3gl3kYZGY|1883|0|48|unipi|ttyUSB0|1|20|5|6|3|u109|...........................................

View file

@ -4,7 +4,7 @@ exports.group = 'MQTT';
exports.color = '#888600';
exports.version = '1.0.2';
exports.icon = 'sign-out';
exports.input = 1;
exports.input = 2;
exports.output = 2;
exports.options = { host: 'tb-stage.worksys.io', port: 1883, clientid: "", username: "" };
@ -22,7 +22,7 @@ exports.html = `<div class="padding">
<div data-jc="textbox" data-jc-path="clientid">@(Client id)</div>
</div>
<div class="col-md-6">
<div data-jc="textbox" data-jc-path="topic" data-jc-config="required:true" class="m">topic</div>
<div data-jc="textbox" data-jc-path="topic" class="m">topic</div>
</div>
</div>
</div>`;
@ -77,6 +77,8 @@ exports.install = function(instance) {
{
o = instance.options;
if(!o.topic) o.topic = FLOW.GLOBALS.settings.cloud_topic;
opts = {
host: o.host,
port: o.port,
@ -86,8 +88,7 @@ exports.install = function(instance) {
resubscribe: false
};
console.log("wsmqttpublich -> loadSettings from instance.options", instance.options);
console.log("wsmqttpublich -> loadSettings from instance.options",o);
connectToTbServer();
}
@ -212,6 +213,9 @@ exports.install = function(instance) {
}
});
instance.on("1", _ => {
main();
})
instance.close = function(done) {
if(clientReady){
@ -399,6 +403,5 @@ exports.install = function(instance) {
}
instance.on('options', main);
main();
};

View file

@ -1451,7 +1451,7 @@ exports.install = function(instance) {
if (!rsPort.isOpen) {
instance.send(SEND_TO.debug, "!rsPort.isOpen");
//await rsPort.open();
console.log("Cmd_manager - !rsPort.isOpen");
//console.log("Cmd_manager - !rsPort.isOpen");
}
let currentTask = tasks[0];

View file

@ -84,6 +84,7 @@ exports.install = async function(instance) {
mqtt_username : responseSettings[0]["mqtt_username"],
mqtt_port : responseSettings[0]["mqtt_port"],
phases: responseSettings[0]["phases"],
cloud_topic: responseSettings[0]["cloud_topic"],
//dynamic values
masterNodeIsResponding : true, //cmd_manager

View file

@ -82,6 +82,10 @@
{
"index": "0",
"id": "1731068754606"
},
{
"index": "0",
"id": "1733574445563"
}
]
},
@ -449,8 +453,8 @@
"color": "gray"
},
"options": {
"data": "{line: 3, command: \"turnOff\", force: true}",
"datatype": "object"
"datatype": "object",
"data": "{line: 3, command: \"turnOff\", force: true}"
},
"color": "#F6BB42",
"notes": ""
@ -477,116 +481,13 @@
"color": "#303E4D",
"notes": ""
},
{
"id": "1617178324650",
"component": "debug",
"tab": "1615551125555",
"name": "Debug",
"x": 700,
"y": 1495,
"connections": {},
"disabledio": {
"input": [],
"output": []
},
"state": {
"text": "Enabled",
"color": "gray"
},
"options": {
"type": "data",
"repository": false,
"enabled": true
},
"color": "#967ADC",
"notes": ""
},
{
"id": "1617179044099",
"component": "trigger",
"tab": "1615551125555",
"name": "start import",
"x": 330,
"y": 1503,
"connections": {
"0": [
{
"index": "0",
"id": "1617180390661"
}
]
},
"disabledio": {
"input": [],
"output": []
},
"state": {
"text": "",
"color": "gray"
},
"options": {
"datatype": "object",
"data": "{table: \"konsberg_production_line_operations_error\", startFrom: 1, delimiter: \";\", uniqueColumn: \"\", path: \"flow/operations_error.csv\", mapImport: {0: \"production_line\",\t1: \"operation\", 2: \"error_type\", 3: \"error_code\", 4: \"error_text\", 5: \"error_text_user_defined\"}}"
},
"color": "#F6BB42",
"notes": ""
},
{
"id": "1617180390661",
"component": "csv_import",
"tab": "1615551125555",
"name": "CsvImport",
"x": 509,
"y": 1484,
"connections": {
"0": [
{
"index": "0",
"id": "1617178324650"
}
]
},
"disabledio": {
"input": [],
"output": []
},
"state": {
"text": "",
"color": "gray"
},
"options": {
"edge": "undefined"
},
"color": "#2134B0",
"notes": ""
},
{
"id": "1617197763128",
"component": "comment",
"tab": "1615551125555",
"name": "import data from csv",
"x": 496,
"y": 1417,
"connections": {},
"disabledio": {
"input": [],
"output": []
},
"state": {
"text": "",
"color": "gray"
},
"options": {},
"color": "#704cff",
"notes": ""
},
{
"id": "1617284749681",
"component": "trigger",
"tab": "1615551125555",
"name": "update profile / node",
"x": 122,
"y": 209,
"x": 112,
"y": 215,
"connections": {
"0": [
{
@ -604,8 +505,8 @@
"color": "gray"
},
"options": {
"datatype": "string",
"data": "profile_nodes"
"data": "profile_nodes",
"datatype": "string"
},
"color": "#F6BB42",
"notes": ""
@ -841,8 +742,8 @@
"color": "gray"
},
"options": {
"datatype": "object",
"data": "{line: 1, command: \"turnOn\", force: true}"
"data": "{line: 1, command: \"turnOn\", force: true}",
"datatype": "object"
},
"color": "#F6BB42",
"notes": ""
@ -852,8 +753,8 @@
"component": "cmd_manager",
"tab": "1615551125555",
"name": "CMD Manager",
"x": 448.1091003417969,
"y": 351.05455017089844,
"x": 452.1091003417969,
"y": 341.05455017089844,
"connections": {
"0": [
{
@ -971,8 +872,8 @@
"color": "gray"
},
"options": {
"data": "{command: \"turnOnAlarm\"}",
"datatype": "object"
"datatype": "object",
"data": "{command: \"turnOnAlarm\"}"
},
"color": "#F6BB42",
"notes": ""
@ -1001,8 +902,8 @@
"color": "gray"
},
"options": {
"data": "{command: \"turnOffAlarm\"}",
"datatype": "object"
"datatype": "object",
"data": "{command: \"turnOffAlarm\"}"
},
"color": "#F6BB42",
"notes": ""
@ -1034,8 +935,8 @@
"component": "httproute",
"tab": "1615551125555",
"name": "POST /db_connector",
"x": 1107,
"y": 338,
"x": 98,
"y": 1586,
"connections": {
"0": [
{
@ -1074,8 +975,8 @@
"component": "db_connector",
"tab": "1615551125555",
"name": "DbConnector",
"x": 1363,
"y": 395,
"x": 372,
"y": 1572,
"connections": {
"1": [
{
@ -1103,8 +1004,8 @@
"component": "httpresponse",
"tab": "1615551125555",
"name": "HTTP Response",
"x": 1588,
"y": 454,
"x": 596,
"y": 1586,
"connections": {},
"disabledio": {
"input": [],
@ -1123,8 +1024,8 @@
"component": "monitormemory",
"tab": "1612772287426",
"name": "RAM",
"x": 77.88333129882812,
"y": 703.5,
"x": 69.88333129882812,
"y": 885.5,
"connections": {
"0": [
{
@ -1138,7 +1039,7 @@
"output": []
},
"state": {
"text": "846.37 MB / 985.68 MB",
"text": "848.02 MB / 985.68 MB",
"color": "gray"
},
"options": {
@ -1153,8 +1054,8 @@
"component": "monitordisk",
"tab": "1612772287426",
"name": "disk",
"x": 78.88333129882812,
"y": 800.5,
"x": 70.88333129882812,
"y": 982.5,
"connections": {
"0": [
{
@ -1184,8 +1085,8 @@
"component": "virtualwirein",
"tab": "1612772287426",
"name": "send-to-services",
"x": 38.883331298828125,
"y": 1220.5,
"x": 51.883331298828125,
"y": 1400.5,
"connections": {
"0": [
{
@ -1217,8 +1118,8 @@
"component": "virtualwireout",
"tab": "1612772287426",
"name": "send-to-services",
"x": 434.8833312988281,
"y": 696.5,
"x": 426.8833312988281,
"y": 878.5,
"connections": {},
"disabledio": {
"input": [],
@ -1262,8 +1163,8 @@
"tab": "1612772287426",
"name": "192.168.252.2:8004/sentmessage",
"reference": "",
"x": 467.8833312988281,
"y": 1154.7333374023438,
"x": 480.8833312988281,
"y": 1334.7333374023438,
"connections": {
"0": [
{
@ -1281,9 +1182,9 @@
"color": "gray"
},
"options": {
"stringify": "json",
"url": "http://192.168.252.2:8004/sentmessage",
"method": "POST",
"url": "http://192.168.252.2:8004/sentmessage"
"stringify": "json"
},
"color": "#5D9CEC",
"notes": ""
@ -1293,8 +1194,8 @@
"component": "debug",
"tab": "1612772287426",
"name": "Debug",
"x": 267.75,
"y": 1266,
"x": 280.75,
"y": 1446,
"connections": {},
"disabledio": {
"input": [
@ -1319,8 +1220,8 @@
"component": "code",
"tab": "1612772287426",
"name": "Code",
"x": 261,
"y": 606,
"x": 253,
"y": 788,
"connections": {
"0": [
{
@ -1354,8 +1255,8 @@
"component": "debug",
"tab": "1612772287426",
"name": "Debug",
"x": 436,
"y": 602,
"x": 428,
"y": 784,
"connections": {},
"disabledio": {
"input": [
@ -1380,8 +1281,8 @@
"component": "code",
"tab": "1612772287426",
"name": "Code",
"x": 250,
"y": 702,
"x": 242,
"y": 884,
"connections": {
"0": [
{
@ -1415,8 +1316,8 @@
"component": "debug",
"tab": "1612772287426",
"name": "Debug",
"x": 437,
"y": 794,
"x": 429,
"y": 976,
"connections": {},
"disabledio": {
"input": [
@ -1441,8 +1342,8 @@
"component": "code",
"tab": "1612772287426",
"name": "Code",
"x": 253,
"y": 796,
"x": 245,
"y": 978,
"connections": {
"0": [
{
@ -1476,8 +1377,8 @@
"component": "debug",
"tab": "1612772287426",
"name": "Debug",
"x": 440,
"y": 886,
"x": 432,
"y": 1068,
"connections": {},
"disabledio": {
"input": [
@ -1502,8 +1403,8 @@
"component": "debug",
"tab": "1612772287426",
"name": "Send info",
"x": 467,
"y": 1261,
"x": 480,
"y": 1441,
"connections": {},
"disabledio": {
"input": [
@ -1528,8 +1429,8 @@
"component": "infosender",
"tab": "1612772287426",
"name": "Info sender",
"x": 272,
"y": 1158,
"x": 285,
"y": 1338,
"connections": {
"0": [
{
@ -1561,8 +1462,8 @@
"component": "debug",
"tab": "1612772287426",
"name": "Debug",
"x": 782.8833312988281,
"y": 1149.5,
"x": 795.8833312988281,
"y": 1329.5,
"connections": {},
"disabledio": {
"input": [
@ -1609,8 +1510,8 @@
"component": "monitorconsumption",
"tab": "1612772287426",
"name": "CPU",
"x": 77,
"y": 609,
"x": 69,
"y": 791,
"connections": {
"0": [
{
@ -1624,7 +1525,7 @@
"output": []
},
"state": {
"text": "6.2% / 70.96 MB",
"text": "0.5% / 88.03 MB",
"color": "gray"
},
"options": {
@ -2087,8 +1988,8 @@
"component": "virtualwirein",
"tab": "1612772287426",
"name": "tb-push",
"x": 64.75,
"y": 1450,
"x": 77.75,
"y": 1630,
"connections": {
"0": [
{
@ -2116,8 +2017,8 @@
"component": "slack_filter",
"tab": "1612772287426",
"name": "Slack Filter",
"x": 283,
"y": 1491,
"x": 296,
"y": 1671,
"connections": {
"0": [
{
@ -2143,7 +2044,7 @@
"tag_on_include": "[{\"user_id\":\"U072JE5JUQG\", \"includes\":[\"Electrometer\", \"Twilight sensor\"]}]",
"message_includes": "[\"is responding again\", \"Lamps have turned\", \"Flow has been restarted\", \"Node db has changed\"]",
"types": "[\"emergency\", \"critical\", \"error\", \"alert\"]",
"name": "rvo_senica_46_10.0.0.133"
"name": "rvo_senica_1_10.0.0.141"
},
"color": "#30E193",
"notes": ""
@ -2153,8 +2054,8 @@
"component": "httprequest",
"tab": "1612772287426",
"name": "http://192.168.252.2:8004/slack",
"x": 482,
"y": 1573,
"x": 495,
"y": 1753,
"connections": {
"0": [
{
@ -2172,9 +2073,9 @@
"color": "gray"
},
"options": {
"stringify": "json",
"url": "http://192.168.252.2:8004/slack",
"method": "POST",
"url": "http://192.168.252.2:8004/slack"
"stringify": "json"
},
"color": "#5D9CEC",
"notes": ""
@ -2184,8 +2085,8 @@
"component": "debug",
"tab": "1612772287426",
"name": "Debug",
"x": 819,
"y": 1484,
"x": 832,
"y": 1664,
"connections": {},
"disabledio": {
"input": [
@ -2210,8 +2111,8 @@
"component": "trigger",
"tab": "1612772287426",
"name": "Trigger",
"x": 66,
"y": 1543,
"x": 79,
"y": 1723,
"connections": {
"0": [
{
@ -2229,8 +2130,8 @@
"color": "gray"
},
"options": {
"datatype": "object",
"data": "{ \"g9OxBZ5KRwNznlY6pAppqEAWXvjdEL4eGQobMDy2\": [ { \"ts\": 1716289039281, \"values\": { \"_event\": { \"type\": \"alert\", \"status\": \"new\", \"source\": { \"func\": \"CMD Manager: process cmd\", \"component\": \"1619515097737\", \"component_name\": \"CMD Manager\", \"edge\": \"g9OxBZ5KRwNznlY6pAppqEAWXvjdEL4eGQobMDy2\" }, \"message\": \"NOW CONNECTED TO SLACK !\", \"message_data\": \"\" } } } ] }"
"data": "{ \"g9OxBZ5KRwNznlY6pAppqEAWXvjdEL4eGQobMDy2\": [ { \"ts\": 1716289039281, \"values\": { \"_event\": { \"type\": \"alert\", \"status\": \"new\", \"source\": { \"func\": \"CMD Manager: process cmd\", \"component\": \"1619515097737\", \"component_name\": \"CMD Manager\", \"edge\": \"g9OxBZ5KRwNznlY6pAppqEAWXvjdEL4eGQobMDy2\" }, \"message\": \"NOW CONNECTED TO SLACK !\", \"message_data\": \"\" } } } ] }",
"datatype": "object"
},
"color": "#F6BB42",
"notes": ""
@ -2240,8 +2141,8 @@
"component": "virtualwireout",
"tab": "1612772287426",
"name": "platform-rpc-call",
"x": 1058.933334350586,
"y": 488.3500061035156,
"x": 1062.933334350586,
"y": 532.3500061035156,
"connections": {},
"disabledio": {
"input": [],
@ -2262,8 +2163,8 @@
"component": "debug",
"tab": "1612772287426",
"name": "rpc cloud",
"x": 1066.933334350586,
"y": 393.3500061035156,
"x": 1063.933334350586,
"y": 442.3500061035156,
"connections": {},
"disabledio": {
"input": [],
@ -2315,8 +2216,8 @@
"component": "cloudmqttconnect",
"tab": "1612772287426",
"name": "MQTT client - to senica-prod01",
"x": 739.75,
"y": 434,
"x": 742.75,
"y": 520,
"connections": {
"1": [
{
@ -2338,11 +2239,11 @@
"color": "green"
},
"options": {
"username": "",
"clientid": "",
"port": "2764",
"host": "192.168.252.2",
"topic": "u133"
"port": "2764",
"clientid": "",
"username": "",
"topic": ""
},
"color": "#888600",
"notes": ""
@ -2401,8 +2302,8 @@
"component": "showdb",
"tab": "1612772287426",
"name": "Show db data",
"x": 1076.75,
"y": 745.25,
"x": 1121.75,
"y": 814.25,
"connections": {
"0": [
{
@ -2428,8 +2329,8 @@
"component": "debug",
"tab": "1612772287426",
"name": "dbData",
"x": 1270.75,
"y": 784.25,
"x": 1315.75,
"y": 853.25,
"connections": {},
"disabledio": {
"input": [],
@ -2452,8 +2353,8 @@
"component": "trigger",
"tab": "1612772287426",
"name": "settings",
"x": 863.75,
"y": 622.75,
"x": 911.75,
"y": 710.75,
"connections": {
"0": [
{
@ -2479,8 +2380,8 @@
"component": "trigger",
"tab": "1612772287426",
"name": "relaysData",
"x": 800.75,
"y": 684.75,
"x": 832.75,
"y": 775.75,
"connections": {
"0": [
{
@ -2506,8 +2407,8 @@
"component": "trigger",
"tab": "1612772287426",
"name": "nodesData",
"x": 693.75,
"y": 749.75,
"x": 747.75,
"y": 840.75,
"connections": {
"0": [
{
@ -2533,8 +2434,8 @@
"component": "trigger",
"tab": "1612772287426",
"name": "pinsData",
"x": 755.75,
"y": 802.75,
"x": 803.75,
"y": 899.75,
"connections": {
"0": [
{
@ -2560,8 +2461,8 @@
"component": "trigger",
"tab": "1612772287426",
"name": "sample data",
"x": 812.75,
"y": 856.75,
"x": 858.75,
"y": 959.75,
"connections": {
"0": [
{
@ -2587,8 +2488,8 @@
"component": "virtualwirein",
"tab": "1612772287426",
"name": "db-init",
"x": 50.75,
"y": 1099,
"x": 63.75,
"y": 1279,
"connections": {
"0": [
{
@ -2616,8 +2517,8 @@
"component": "virtualwirein",
"tab": "1615551125555",
"name": "db-init",
"x": 184.88333129882812,
"y": 129,
"x": 151.88333129882812,
"y": 148,
"connections": {
"0": [
{
@ -2732,8 +2633,8 @@
"component": "trigger",
"tab": "1612772287426",
"name": "monitor.txt",
"x": 865.75,
"y": 911.75,
"x": 915.75,
"y": 1017.75,
"connections": {
"0": [
{
@ -2759,8 +2660,8 @@
"component": "trigger",
"tab": "1612772287426",
"name": "err.txt",
"x": 921.75,
"y": 968.75,
"x": 966.75,
"y": 1080.75,
"connections": {
"0": [
{
@ -2786,8 +2687,8 @@
"component": "nodesdb_change_check",
"tab": "1612772287426",
"name": "Nodes DB change check",
"x": 250.88333129882812,
"y": 1813.2333984375,
"x": 263.8833312988281,
"y": 1993.2333984375,
"connections": {
"0": [
{
@ -2817,8 +2718,8 @@
"component": "virtualwirein",
"tab": "1612772287426",
"name": "db-init",
"x": 71.75,
"y": 1814,
"x": 84.75,
"y": 1994,
"connections": {
"0": [
{
@ -2846,8 +2747,8 @@
"component": "debug",
"tab": "1612772287426",
"name": "nodesChange",
"x": 548.8833312988281,
"y": 1875.2333984375,
"x": 561.8833312988281,
"y": 2055.2333984375,
"connections": {},
"disabledio": {
"input": [],
@ -2870,8 +2771,8 @@
"component": "virtualwireout",
"tab": "1612772287426",
"name": "tb-push",
"x": 544.8833312988281,
"y": 1769,
"x": 557.8833312988281,
"y": 1949,
"connections": {},
"disabledio": {
"input": [],
@ -2910,7 +2811,62 @@
},
"color": "#967ADC",
"notes": ""
},
{
"id": "1733574412965",
"component": "virtualwirein",
"tab": "1612772287426",
"name": "db-init",
"x": 557.75,
"y": 574,
"connections": {
"0": [
{
"index": "1",
"id": "1731068754606"
}
]
},
"disabledio": {
"input": [],
"output": []
},
"state": {
"text": "db-init",
"color": "gray"
},
"options": {
"wirename": "db-init"
},
"color": "#303E4D",
"notes": ""
},
{
"id": "1733574445563",
"component": "debug",
"tab": "1612772287426",
"name": "toCloudRado",
"x": 740.75,
"y": 435,
"connections": {},
"disabledio": {
"input": [
0
],
"output": []
},
"state": {
"text": "Enabled",
"color": "gray"
},
"options": {
"type": "data",
"repository": false,
"enabled": true
},
"color": "#967ADC",
"notes": ""
}
],
"version": 615
}
}

View file

@ -97,7 +97,9 @@ class ErrorToServiceHandler
console.log("ErrorToServiceHandler------------------------>send to service", dataToInfoSender);
//TODO UGLY!!!
if(this.projects_id === undefined) this.projects_id = FLOW.GLOBALS.settings.project_id;
// if error occures too early FLOW.GLOBALs.settings.project_id is still undefined
// if(this.projects_id === undefined) this.projects_id = FLOW.GLOBALS.settings.project_id;
if(this.projects_id === undefined) return;
/*
if(this.projects_id === undefined)

View file

@ -1,124 +0,0 @@
exports.id = 'slack_connector';
exports.title = 'Slack_Connector';
exports.version = '1.0.0';
exports.group = 'Worksys';
exports.color = '#888600';
exports.input = 1;
exports.output = 1;
exports.click = false;
exports.author = 'Jakub Klena';
exports.icon = 'sign-out';
exports.options = { slack_channel: "C071KN2Q8SK", api_key: "", bot_name: "Flow DEMO", bot_icon: ":totaljs:" };
// Slack channel - where to post the messages, can be name like "backend-alerts"
// Bot Name - Name of the "user" that will post these messages, it should be based on which server it is running on.
// Bot Icon - We can use any slack icon (even custom ones uploaded by us) as the "user" profile picture
exports.html = `<div class="padding">
<div class="row">
<div class="col-md-6">
<div data-jc="textbox" data-jc-path="slack_channel" data-jc-config="placeholder:name or id;required:true" class="m">Slack Channel</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div data-jc="textbox" data-jc-path="api_key" data-jc-config="placeholder:api key;required:true" class="m">API Key:</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div data-jc="textbox" data-jc-path="bot_name" data-jc-config="placeholder:Flow DEMO;required:false" class="m">Bot Name</div>
</div>
<div class="col-md-6">
<div data-jc="textbox" data-jc-path="bot_icon" data-jc-config="placeholder:\:totaljs\:;required:true" class="m">Bot Icon</div>
</div>
</div>
</div>`;
exports.readme = `Sends any string received on input to Slack Channel.`;
var log4js = require("log4js");
var path = require('path');
log4js.configure({
appenders: {
errLogs: { type: 'file', compress:true, daysToKeep: 2, maxLogSize: 1048576, backups: 1, keepFileExt: true, filename: path.join(__dirname + "/../", 'err.txt') },
monitorLogs: { type: 'file', compress:true, daysToKeep: 2, maxLogSize: 1048576, backups: 1, keepFileExt: true, filename: path.join(__dirname + "/../", 'monitor.txt') },
console: { type: 'console' }
},
categories: {
errLogs: { appenders: ['console', 'errLogs'], level: 'error' },
monitorLogs: { appenders: ['console', 'monitorLogs'], level: 'trace' },
//another: { appenders: ['console'], level: 'trace' },
default: { appenders: ['console'], level: 'trace' }
}
});
const errLogger = log4js.getLogger("errLogs");
const logger = log4js.getLogger();
const monitor = log4js.getLogger("monitorLogs");
exports.install = function(instance) {
var can = false;
process.on('uncaughtException', function (err) {
errLogger.error('uncaughtException:', err.message);
errLogger.error(err.stack);
instance.error(err);
});
instance.on('data', function(data) {
if (!can) return;
let str = String(data.data); // Ensuring data get converted to string
let message = {
'channel': instance.options.slack_channel,
'username': instance.options.bot_name,
'icon_emoji': instance.options.bot_icon,
'text': str
};
let headers = {
'Content-type': `application/json`,
'Authorization': `Bearer ${instance.options.api_key}`
};
if (F.is4) {
let opt = {
'method': 'post',
'url': 'https://slack.com/api/chat.postMessage',
'headers': headers,
'body': JSON.stringify(message),
'type': 'json',
'callback': function(err, response) {
if (response && !err) {
var msg = { data: response.body, status: response.status, headers: response.headers, host: response.host, cookies: response.cookies };
instance.send2(msg);
} else if (err) {
errLogger.error('Slack post failed - err:', err, '\n - response was:', response);
instance.error(err, response);
}
}
};
REQUEST(opt);
} else {
U.request('https://slack.com/api/chat.postMessage', ['json', 'post'], JSON.stringify(message), function(err, data, status, headers, host) {
if (response && !err) {
response.data = { data: data, status: status, headers: headers, host: host };
instance.send2(response);
} else if (err) {
errLogger.error('Slack post failed - err:', err, '\n - response was:', response);
instance.error(err, response);
}
}, null, headers);
}
});
instance.reconfigure = function() {
var options = instance.options;
can = options.slack_channel && options.bot_name && options.bot_icon && options.api_key ? true : false;
instance.status(can ? '' : 'Not configured', can ? undefined : 'red');
};
instance.on('options', instance.reconfigure);
instance.reconfigure();
}

View file

@ -68,7 +68,7 @@ exports.install = function(instance) {
const parseData = function(data) {
data = parseFloat(data);
logger.debug("Thermometer", data);
//logger.debug("Thermometer", data);
if(isNaN(data)) {
errLogger.error("Thermometer sends invalid data");