Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* eslint-disable require-path-exists/exists */
- 'use strict';
- var express = require('express')
- var app = express()
- var request = require('request');
- const SerialPort = require('serialport');
- var fs = require('fs');
- var schedule = require('node-schedule');
- // this is to send at 23:10 command to the pip going to utility to charge battery POP
- var j = schedule.scheduleJob('10 23 * * *', function(){
- console.log('nos vamos a corriente');
- port.write([0X50,0X4F,0X50,0X30,0X30,0XC2,0X48,0X0D]);
- });
- // this is to send at 13:10 command to the pip going to battery mode SBU
- var jsa = schedule.scheduleJob('11 13 * * *', function(){
- console.log('nos vamos a SBU');
- port.write([0X50,0X4F,0X50,0X30,0X32,0XE2,0X0B,0X0D]);
- });
- // this method can force change to utility via web http://localhost:3001/acorriente
- app.get('/acorriente', function (req, res) {
- res.send('nos vamos a corriente')
- console.log('nos vamos a corriente');
- port.write([0X50,0X4F,0X50,0X30,0X30,0XC2,0X48,0X0D]);
- })
- // this method can force change to battery mode via web http://localhost:3001/acorriente
- app.get('/abateria', function (req, res) {
- console.log('nos vamos a SBU');
- res.send('nos vamos a SBU')
- port.write([0X50,0X4F,0X50,0X30,0X32,0XE2,0X0B,0X0D]);
- })
- /*
- #Commands with CRC cheats
- QPGS = '\x51\x50\x47\x53\x30\x3f\xda\x0d'
- QPIGS = '\x51\x50\x49\x47\x53\xB7\xA9\x0d'
- QMCHGCR ='\x51\x4D\x43\x48\x47\x43\x52\xD8\x55\x0D' #?
- QMUCHGCR='\x51\x4D\x55\x43\x48\x47\x43\x52\x26\x34\x0D' #?
- QPIWS = '\x51\x50\x49\x57\x53\xB4\xDA\x0D' #valid?
- POP02 = '\x50\x4F\x50\x30\x32\xE2\x0B\x0D' # set to SBU
- POP00 = '\x50\x4F\x50\x30\x30\xC2\x48\x0D' #Set to UTILITY
- "QMOD\x49\xC1";
- "QID\xD6\xEA";
- "QVFW\x62\x99";
- "QVFW2\xC3\xF5";
- "QPIRI\xF8\x54"; -->51 50 49 52 49
- QPIRI = '\x51\x50\x49\x52\x49\xF8\x54\x0D'
- "QFLAG\x98\x74";
- */
- var the_interval = 7 * 1000;
- var the_interval2 = 10 * 1000;
- // every 7 secons send the comand QPIGS to the PIP
- setInterval(function() {
- port.write([0X51,0X50,0X49,0X47,0X53,0XB7,0XA9,0X0D]);
- }, the_interval);
- // every 10 seconds send the command QPIRI to the pip
- setInterval(function() {
- //QPIRI
- port.write([0X51,0X50,0X49,0X52,0X49,0XF8,0X54,0X0D]);
- }, the_interval2);
- const port = new SerialPort('/dev/ttyAMA0', {
- baudRate: 2400,
- parser: SerialPort.parsers.readline('\r')
- });
- port.on('open', () =>
- {
- console.log('Port open');
- port.write([0X51,0X50,0X49,0X47,0X53,0XB7,0XA9,0X0D]);
- // when the port is open, send QPIGS
- }
- );
- port.on('data', function (data) {
- console.log('Data: ' + data+" "+data.length);
- if (data.length==109 && data.substring(0,1)=="(") {
- data=data.substring(1,data.length-2);
- var arr = data.split(" ");
- var cuerpo="solar "+preparacadena(arr);
- request.post({
- headers: {'content-type' : 'application/x-www-form-urlencoded'},
- url: 'http://localhost:8086/write?db=logger',
- body: cuerpo
- }, function(error, response, body){
- });
- }
- if (data.length==101 && data.substring(0,1)=="(") {
- data=data.substring(1,data.length-2);
- var arr = data.split(" ");
- var cuerpo="solar2 "+preparacadenaqpiri(arr);
- request.post({
- headers: {'content-type' : 'application/x-www-form-urlencoded'},
- url: 'http://localhost:8086/write?db=logger',
- body: cuerpo
- }, function(error, response, body){
- });
- }
- });
- //Data: (230.0 21.7 230.0 50.0 21.7 5000 4000 48.0 46.0 42.0 56.4 54.0 2 30 060 0 2 0 9 01 0 0 54.0 0 1 000�T 101
- function preparacadenaqpiri(arr)
- {
- var grid_rating_voltage=arr[0];
- var grid_rating_current=arr[1];
- var ac_output_rating_voltage=arr[2];
- var ac_output_rating_frecuency=arr[3];
- var ac_output_rating_current=arr[4];
- var ac_output_rating_apparent_power=arr[5];
- var ac_output_rating_active_power=arr[6];
- var battery_rating_voltage=arr[7];
- var battery_recharge_voltage=arr[8];
- var battery_under_voltage=arr[9];
- var battery_bulk_voltage=arr[10];
- var battery_float_voltage=arr[11];
- var battery_type=arr[12];
- var current_max_ac_charging=arr[13];
- var current_max_charging_current=arr[14];
- var input_voltage_range=arr[15];
- var output_source_priority=arr[16];
- var charger_source_priority=arr[17];
- var parallel_max_num=arr[18];
- var machine_type=arr[19];
- var topology=arr[20];
- var output_mode=arr[21];
- var battery_re_discharge_voltage=arr[22];
- var pv_condition=arr[23];
- var pv_power_balance=arr[24];
- var cadena="";
- cadena =cadena +"battery_rating_voltage="+battery_rating_voltage;
- cadena =cadena +",battery_recharge_voltage="+battery_recharge_voltage;
- cadena =cadena +",battery_under_voltage="+battery_under_voltage;
- cadena =cadena +",battery_float_voltage="+battery_float_voltage;
- cadena =cadena +",battery_bulk_voltage="+battery_bulk_voltage;
- cadena =cadena +",current_max_charging_current="+current_max_charging_current;
- cadena =cadena +",output_source_priority="+output_source_priority;
- cadena =cadena +",charger_source_priority="+charger_source_priority;
- cadena =cadena +",temperatura="+temperatura;
- cadena =cadena +",temperatura2="+temperatura2;
- return cadena;
- }
- //ejemplo Data: (234.7 49.9 000.0 00.0 0000 0000 000 450 55.70 000 100 0049 0000 000.0 00.00 00000 00000101 00 00 00000 100�
- function preparacadena(arr)
- {
- var grid_voltage=arr[0];
- var grid_frecuency=arr[1];
- var ac_output_voltage=arr[2];
- var ac_output_frecuency=arr[3];
- var ac_output_power_va=arr[4];
- var ac_output_active_power=arr[5];
- var output_load_percent=arr[6];
- var bus_voltage=arr[7];
- var battery_voltage=arr[8];
- var battery_charging_current=arr[9];
- var battery_capacity=arr[10];
- var inverter_heat_sink_temperature=arr[11];
- var pv_input_current_for_battery=arr[12];
- var pv_input_voltage_1=arr[13];
- var battery_voltage_from_scc=arr[14];
- var battery_discharge_current=arr[15];
- var device_status=arr[16];
- var cadena="";
- cadena =cadena +"grid_voltage="+grid_voltage;
- cadena =cadena +",ac_output_voltage="+ac_output_voltage;
- cadena =cadena +",ac_output_power_va="+ac_output_power_va;
- cadena =cadena +",ac_output_active_power="+ac_output_active_power;
- cadena =cadena +",output_load_percent="+output_load_percent;
- cadena =cadena +",bus_voltage="+bus_voltage;
- cadena =cadena +",battery_voltage="+battery_voltage;
- cadena =cadena +",battery_charging_current="+battery_charging_current;
- cadena =cadena +",battery_capacity="+battery_capacity;
- cadena =cadena +",inverter_heat_sink_temperature="+inverter_heat_sink_temperature;
- cadena =cadena +",pv_input_current_for_battery="+pv_input_current_for_battery;
- cadena =cadena +",pv_input_voltage_1="+pv_input_voltage_1;
- cadena =cadena +",battery_voltage_from_scc="+battery_voltage_from_scc;
- cadena =cadena +",battery_discharge_current="+battery_discharge_current;
- cadena =cadena +",device_status="+device_status;
- if (device_status.length==8) {
- cadena =cadena +",charging_scc="+device_status.substring(5,6);
- cadena =cadena +",charging_ac="+device_status.substring(6,7);
- cadena =cadena +",charging_scc_acc="+device_status.substring(7,8);
- }
- return cadena;
- }
- app.listen(3001, function () {
- console.log('Example app listening on port 3001!')
- })
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement