Backup senica-RVO42 on 16.10.2025
This commit is contained in:
parent
a7fe10c7b2
commit
1b29cafd5f
63 changed files with 19007 additions and 0 deletions
3055
RVO42/databases/accelerometer_db.js
Executable file
3055
RVO42/databases/accelerometer_db.js
Executable file
File diff suppressed because it is too large
Load diff
114
RVO42/databases/modbus_config.js
Executable file
114
RVO42/databases/modbus_config.js
Executable file
|
|
@ -0,0 +1,114 @@
|
|||
const timeoutInterval = 150000;
|
||||
|
||||
const deviceConfig = [
|
||||
{
|
||||
device: "em340",
|
||||
deviceAddress: 1,
|
||||
stream: [
|
||||
{
|
||||
"tbAttribute": "Phase_1_voltage",
|
||||
"register": 0,
|
||||
"size": 2,
|
||||
"multiplier": 0.1
|
||||
},
|
||||
{
|
||||
"tbAttribute": "Phase_2_voltage",
|
||||
"register": 2,
|
||||
"size": 2,
|
||||
"multiplier": 0.1
|
||||
},
|
||||
{
|
||||
"tbAttribute": "Phase_3_voltage",
|
||||
"register": 4,
|
||||
"size": 2,
|
||||
"multiplier": 0.1
|
||||
},
|
||||
{
|
||||
"tbAttribute": "Phase_1_current",
|
||||
"register": 12,
|
||||
"size": 2,
|
||||
"multiplier": 0.001
|
||||
},
|
||||
{
|
||||
"tbAttribute": "Phase_2_current",
|
||||
"register": 14,
|
||||
"size": 2,
|
||||
"multiplier": 0.001
|
||||
},
|
||||
{
|
||||
"tbAttribute": "Phase_3_current",
|
||||
"register": 16,
|
||||
"size": 2,
|
||||
"multiplier": 0.001
|
||||
},
|
||||
{
|
||||
"tbAttribute": "Phase_1_power",
|
||||
"register": 18,
|
||||
"size": 2,
|
||||
"multiplier": 0.1
|
||||
},
|
||||
{
|
||||
"tbAttribute": "Phase_2_power",
|
||||
"register": 20,
|
||||
"size": 2,
|
||||
"multiplier": 0.1
|
||||
},
|
||||
{
|
||||
"tbAttribute": "Phase_3_power",
|
||||
"register": 22,
|
||||
"size": 2,
|
||||
"multiplier": 0.1
|
||||
},
|
||||
{
|
||||
"tbAttribute": "total_power",
|
||||
"register": 40,
|
||||
"size": 2,
|
||||
"multiplier": 0.1
|
||||
},
|
||||
{
|
||||
"tbAttribute": "total_energy",
|
||||
"register": 52,
|
||||
"size": 2,
|
||||
"multiplier": 0.1
|
||||
},
|
||||
{
|
||||
"tbAttribute": "Phase_1_pow_factor",
|
||||
"register": 46,
|
||||
"size": 1,
|
||||
"multiplier": 0.001
|
||||
},
|
||||
{
|
||||
"tbAttribute": "Phase_2_pow_factor",
|
||||
"register": 47,
|
||||
"size": 1,
|
||||
"multiplier": 0.001
|
||||
},
|
||||
{
|
||||
"tbAttribute": "Phase_3_pow_factor",
|
||||
"register": 48,
|
||||
"size": 1,
|
||||
"multiplier": 0.001
|
||||
},
|
||||
{
|
||||
"tbAttribute": "power_factor",
|
||||
"register": 49,
|
||||
"size": 1,
|
||||
"multiplier": 0.001
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
device: "twilight_sensor",
|
||||
deviceAddress: 2,
|
||||
stream: [
|
||||
{
|
||||
"tbAttribute": "twilight_sensor",
|
||||
"register": 60,
|
||||
"size": 2,
|
||||
"multiplier": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
module.exports = { timeoutInterval, deviceConfig };
|
||||
17
RVO42/databases/nodes.table
Executable file
17
RVO42/databases/nodes.table
Executable file
|
|
@ -0,0 +1,17 @@
|
|||
node:number|pole_number:string|node_type:string|tbname:string|line:number|profile:string|processed:boolean|status:boolean|time_of_last_communication:number
|
||||
+|3220|12|NEMA|roKgWqY95V3mXMRzyAjKln0bLjexpJPvaGDBw826|1||1|1|1760574009420|.............
|
||||
+|3221|6|NEMA|wvKJdZML6mXP4DzWBAXx2VAjxNloa5g23Ve9Y1ry|1||1|1|1760574010187|.............
|
||||
+|3222|5|NEMA|EjgWGnXaLy9opPOz20n48d786BlYM3w1deVQvbKr|1||1|1|1760574010315|.............
|
||||
+|3475|3|NEMA|eod9aRWLVl34Gx1Dn7VNr972rz6qjgmpEXwQJN5Z|1||1|1|1760574010762|.............
|
||||
+|3533|13|IP65|nJL5lPMwBx23YpqRe0rpgb7damXvWVbOrD4gNzy8|1||1|1|1760574013078|.............
|
||||
+|3543|14|IP65|ZmRwd93QL4gaezxEbAx2dKk1prn2XjlPvGyqJ6BO|1||1|1|1760574013270|.............
|
||||
+|3549|16|IP65|3a5oqJN1bgnx4Ol9dk89Y27ByE6jQ8mKDWMpGrLV|1||1|1|1760574014692|.............
|
||||
+|3554|15|IP65|eod9aRWLVl34Gx1Dn7VNrE72rz6qjgmpEXwQJN5Z|1||1|1|1760574015826|.............
|
||||
+|3174|11|NEMA|E6Kg9oDnLWyzPRMva7v5j9kJxp4VG58qO2w1lZYe|1||1|1|1760573987632|.............
|
||||
+|3175|4|NEMA|3a5oqJN1bgnx4Ol9dk89Y17ByE6jQ8mKDWMpGrLV|1||1|1|1760573991689|.............
|
||||
+|3176|10|NEMA|rDbQ84xzwgdqEoPm3kbE5D09anOZY1RXyBv2LVM6|1||1|1|1760573992440|.............
|
||||
+|3178|1|NEMA|aw4eELG2DlPMdn1JW0BM6QAqQXOZRN3xB5yp8VKr|1||1|1|1760573992887|.............
|
||||
+|3180|8|NEMA|PLBJzmK1r3Gynd6OW0gKpq0e5wV4vx9bDEqNgYR8|1||1|1|1760573996641|.............
|
||||
+|3181|7|NEMA|Nzp2OoJlqn6r1ZgvdA3Bvv7abBwP5G4eE3RQmyxD|1||1|1|1760574008813|.............
|
||||
+|3695|2|NEMA|ZmRwd93QL4gaezxEbAx2dbk1prn2XjlPvGyqJ6BO|1||1|1|1760574016353|.............
|
||||
+|3218|9|NEMA|52dD6ZlV1QaOpRBmbAqG3NkKnGzWMLj4eJq38Pgo|1||1|1|1760574009260|.............
|
||||
1
RVO42/databases/nodes_original/nodes_original.table
Executable file
1
RVO42/databases/nodes_original/nodes_original.table
Executable file
|
|
@ -0,0 +1 @@
|
|||
[{"3220": "roKgWqY95V3mXMRzyAjKln0bLjexpJPvaGDBw826"}, {"3221": "wvKJdZML6mXP4DzWBAXx2VAjxNloa5g23Ve9Y1ry"}, {"3222": "EjgWGnXaLy9opPOz20n48d786BlYM3w1deVQvbKr"}, {"3475": "eod9aRWLVl34Gx1Dn7VNr972rz6qjgmpEXwQJN5Z"}, {"3533": "nJL5lPMwBx23YpqRe0rpgb7damXvWVbOrD4gNzy8"}, {"3543": "ZmRwd93QL4gaezxEbAx2dKk1prn2XjlPvGyqJ6BO"}, {"3549": "3a5oqJN1bgnx4Ol9dk89Y27ByE6jQ8mKDWMpGrLV"}, {"3554": "eod9aRWLVl34Gx1Dn7VNrE72rz6qjgmpEXwQJN5Z"}, {"3174": "E6Kg9oDnLWyzPRMva7v5j9kJxp4VG58qO2w1lZYe"}, {"3175": "3a5oqJN1bgnx4Ol9dk89Y17ByE6jQ8mKDWMpGrLV"}, {"3176": "rDbQ84xzwgdqEoPm3kbE5D09anOZY1RXyBv2LVM6"}, {"3178": "aw4eELG2DlPMdn1JW0BM6QAqQXOZRN3xB5yp8VKr"}, {"3180": "PLBJzmK1r3Gynd6OW0gKpq0e5wV4vx9bDEqNgYR8"}, {"3181": "Nzp2OoJlqn6r1ZgvdA3Bvv7abBwP5G4eE3RQmyxD"}, {"3695": "ZmRwd93QL4gaezxEbAx2dbk1prn2XjlPvGyqJ6BO"}, {"3218": "52dD6ZlV1QaOpRBmbAqG3NkKnGzWMLj4eJq38Pgo"}]
|
||||
41
RVO42/databases/notifications.table
Executable file
41
RVO42/databases/notifications.table
Executable file
|
|
@ -0,0 +1,41 @@
|
|||
key:string|weight:string|sk:string|en:string
|
||||
+|switching_profile_point_applied_to_line|INFORMATIONAL|Aplikovaný bod spínacieho profilu na línií č. ${line} : ${value}|Switching profile point applied to line no. ${line} : ${value}|...............
|
||||
+|dusk_has_occured|INFORMATIONAL|Nastal súmrak: ${value}|Dusk has occured: ${value}|...............
|
||||
+|dawn_has_occured|INFORMATIONAL|Nastal úsvit: ${value}|Dawn has occured: ${value}|...............
|
||||
+|dimming_profile_was_successfully_received_by_node|NOTICE|Stmievací profil bol úspešne prijatý nodom č. ${node}|Dimming profile was successfully received by node no. ${node}|...............
|
||||
+|master_node_is_responding_again|NOTICE|Master node začal znovu odpovedať|Master node is responding again|...............
|
||||
+|command_was_sent_from_terminal_interface|DEBUG|Z terminálu bol odoslaný príkaz|A command was sent from terminal interface|...............
|
||||
+|master_node_is_not_responding|ALERT|Master node neodpovedá|Master node is not responding|...............
|
||||
+|configuration_of_dimming_profile_to_node_failed|ALERT|Konfigurácia stmievacieho profilu pre node č. ${node} zlyhala|Configuration of dimming profile to node no. ${node} has failed|...............
|
||||
+|circuit_breaker_was_turned_on_line|NOTICE|Zapnutie ističa na línii č. ${line}|Circuit breaker was turned on - line no. ${line}|...............
|
||||
+|circuit_breaker_was_turned_off_line|ERROR|Vypnutie ističa na línií č. ${line}|Circuit breaker was turned off - line no. ${line}|...............
|
||||
+|dimming_profile_was_processed_for_node|INFORMATIONAL|Stmievací profil bol spracovaný pre node č. ${node}|Dimming profile was processed for node no. ${node}|...............
|
||||
+|switching_profile_was_processed_for_line|INFORMATIONAL|Spínací profil bol spracovaný pre líniu č. ${line}|Switching profile was processed for line no. ${line}|...............
|
||||
+|thermometer_is_not_responding|WARNING|Teplomer neodpovedá|Thermometer is not responding|...............
|
||||
+|thermometer_is_responding_again|NOTICE|Teplomer znovu odpovedá|Thermometer is responding again|...............
|
||||
+|thermometer_sends_invalid_data|WARNING|Teplomer posiela neplatné hodnoty|Thermometer sends invalid data|...............
|
||||
+|main_switch_has_been_turned_off|CRITICAL|Hlavný vypínač bol vypnutý|Main switch has been turned off|...............
|
||||
+|main_switch_has_been_turned_on|NOTICE|Hlavný vypínač bol zapnutý|Main switch has been turned on|...............
|
||||
+|power_supply_has_disconnected_input|ALERT|Napájací zdroj nemá napätie na vstupe|Power supply has disconnected input|...............
|
||||
+|power_supply_works_correctly|NOTICE|Napájací zdroj pracuje správne|Power supply works correctly|...............
|
||||
+|battery_level_is_low|ERROR|Batéria má nízku úroveň napätia|Battery level is low|...............
|
||||
+|battery_level_is_ok|NOTICE|Batéria má správnu úroveň napätia|Battery level is OK|...............
|
||||
+|door_main_open|NOTICE|Hlavné dvere boli otvorené|Main door has been opened|...............
|
||||
+|door_em_open|NOTICE|Dvere silovej časti boli otvorené|Power door has been opened|...............
|
||||
+|door_main_open_without_permission|WARNING|Hlavné dvere boli otvorené bez povolenia - zapnutá siréna|Main door has been opened without permission - alarm is on|...............
|
||||
+|door_em_open_without_permission|WARNING|Dvere silovej časti boli otvorené bez povolenia|Power door has been opened without permission|...............
|
||||
+|door_main_close|NOTICE|Hlavné dvere boli zatvorené|Main door has been closed|...............
|
||||
+|door_em_close|NOTICE|Dvere silovej časti boli zatvorené|Power door has been closed|...............
|
||||
+|state_of_contactor_for_line|INFORMATIONAL|Stav stýkača pre líniu č. ${line} je ${value}|State of contactor for line no. ${line} is ${value}|...............
|
||||
+|local_database_is_corrupted|CRITICAL|||...............
|
||||
+|electrometer_nok|ERROR|Elektromer neodpovedá|Electrometer is not responding|...............
|
||||
+|electrometer_ok|NOTICE|Elektromer znovu odpovedá|Electrometer is responding again|...............
|
||||
+|no_voltage_on_phase|CRITICAL|Na fáze č. ${phase} nie je napätie|No voltage detected on phase no. ${phase}|...............
|
||||
+|voltage_on_phase_restored|NOTICE|Napätie na fáze č. ${phase} bolo obnovené|Voltage on phase no. ${phase} has been restored|...............
|
||||
+|flow_start|NOTICE|FLOW bol spustený|FLOW has been started |...............
|
||||
+|twilight_sensor_nok|ERROR|Sensor súmraku neodpovedá|Twilight sensor is not responding|...............
|
||||
+|twilight_sensor_ok|NOTICE|Sensor súmraku znovu odpovedá|Twilight sensor is responding again|...............
|
||||
+|lamps_have_turned_on|NOTICE|Lampy sa zapli|Lamps have turned on|...............
|
||||
+|lamps_have_turned_off|NOTICE|Lampy sa vypli|Lamps have turned off|...............
|
||||
+|flow_restart|NOTICE|FLOW bol reštartovaný|FLOW has been restarted|...............
|
||||
+|nodes_db_changed|NOTICE|Zmena v node databáze|Node db has changed|...............
|
||||
15
RVO42/databases/pins.table
Executable file
15
RVO42/databases/pins.table
Executable file
|
|
@ -0,0 +1,15 @@
|
|||
pin:string|type:string|line:number
|
||||
*|input1_01|door_condition|0|...........
|
||||
*|input1_02|rotary_switch_state|0|...........
|
||||
*|input1_03|rotary_switch_state|0|...........
|
||||
*|input1_04|power_supply|0|...........
|
||||
*|input1_05|state_of_main_switch|0|...........
|
||||
*|input1_06|state_of_breaker|1|...........
|
||||
*|input1_07|state_of_breaker|2|...........
|
||||
*|input1_08|state_of_breaker|3|...........
|
||||
*|relay1_02|state_of_contactor|1|...........
|
||||
*|relay1_03|state_of_contactor|2|...........
|
||||
*|relay1_04|state_of_contactor|3|...........
|
||||
*|relay1_05|state_of_contactor|4|...........
|
||||
*|28F46E9D0E00008B|temperature|0|...........
|
||||
*|twilight_sensor|twilight_sensor|0|...........
|
||||
6
RVO42/databases/relays.table
Executable file
6
RVO42/databases/relays.table
Executable file
|
|
@ -0,0 +1,6 @@
|
|||
line:number|tbname:string|contactor:number|profile:string
|
||||
+|0|g9OxBZ5KRwNznlY6pAppGEAWXvjdEL4eGQobMDy2|1||...........
|
||||
+|3|B5EoxeMVp4zwr8nqW0GBzGARjvD1PNamOGbLg63Z|9|{"intervals":[{"value":0,"end_time":"20:00","start_time":"13:00"},{"value":1,"end_time":"08:00","start_time":"20:00"},{"value":0,"end_time":"13:00","start_time":"08:00"}],"astro_clock":true,"dawn_lux_sensor":true,"dusk_lux_sensor":true,"dawn_lux_sensor_value":15,"dusk_lux_sensor_value":15,"dawn_astro_clock_offset":0,"dusk_astro_clock_offset":0,"dawn_lux_sensor_time_window":30,"dusk_lux_sensor_time_window":30,"dawn_astro_clock_time_window":60,"dusk_astro_clock_time_window":60}|...................................................................................................................................................................................................................................................................................................................................
|
||||
+|1|K94XLav1glVRnyQ6r01Pq3Ame3YJwBxM5oOzdP2j|9|{"intervals":[{"value":0,"end_time":"20:00","start_time":"13:00"},{"value":1,"end_time":"08:00","start_time":"20:00"},{"value":0,"end_time":"13:00","start_time":"08:00"}],"astro_clock":true,"dawn_lux_sensor":true,"dusk_lux_sensor":true,"dawn_lux_sensor_value":15,"dusk_lux_sensor_value":15,"dawn_astro_clock_offset":0,"dusk_astro_clock_offset":0,"dawn_lux_sensor_time_window":30,"dusk_lux_sensor_time_window":30,"dawn_astro_clock_time_window":60,"dusk_astro_clock_time_window":60}|...........................................................................................................................................................................................................................................................................................................................................................................................
|
||||
+|2|d9x2V5LGYBzXp4mMRAOmXVkPloaqJwnQj6DgrNe3|9|{"intervals":[{"value":0,"end_time":"20:00","start_time":"13:00"},{"value":1,"end_time":"08:00","start_time":"20:00"},{"value":0,"end_time":"13:00","start_time":"08:00"}],"astro_clock":true,"dawn_lux_sensor":true,"dusk_lux_sensor":true,"dawn_lux_sensor_value":15,"dusk_lux_sensor_value":15,"dawn_astro_clock_offset":0,"dusk_astro_clock_offset":0,"dawn_lux_sensor_time_window":30,"dusk_lux_sensor_time_window":30,"dawn_astro_clock_time_window":60,"dusk_astro_clock_time_window":60}|................................................................................................................................................................................................................................................................................
|
||||
+|4|m6EYyZoJ4gWexdjVPAR5K37RDOq9wv2N5XzKGplr|9|{"intervals":[{"value":0,"end_time":"20:00","start_time":"13:00"},{"value":1,"end_time":"08:00","start_time":"20:00"},{"value":0,"end_time":"13:00","start_time":"08:00"}],"astro_clock":true,"dawn_lux_sensor":true,"dusk_lux_sensor":true,"dawn_lux_sensor_value":15,"dusk_lux_sensor_value":15,"dawn_astro_clock_offset":0,"dusk_astro_clock_offset":0,"dawn_lux_sensor_time_window":30,"dusk_lux_sensor_time_window":30,"dawn_astro_clock_time_window":60,"dusk_astro_clock_time_window":60}|................................................................................................................................................................................................................................................................................
|
||||
2
RVO42/databases/settings.table
Executable file
2
RVO42/databases/settings.table
Executable file
|
|
@ -0,0 +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|cloud_topic:string|has_main_switch:boolean|daily_report:boolean|send_changed_node_numbers:boolean
|
||||
+|rvo_senica_42_ip118|en|28.1EF4940E0000|48.70826502|17.28455203|192.168.252.1|rvo_senica_42_ip118|QMvF7etEvbYMMr8Q6baP|1883|0|59|unipi|ttyUSB0|1|20|5|6|3|u118|0|1|1|...................................................
|
||||
4
RVO42/databases/tbdata.nosql
Executable file
4
RVO42/databases/tbdata.nosql
Executable file
|
|
@ -0,0 +1,4 @@
|
|||
-"g9OxBZ5KRwNznlY6pAppGEAWXvjdEL4eGQobMDy2":[{"ts":1760521818496,"values":{"_event":{"type":"notice","status":"new","source":{"func":"modbus_reader","component":"1699965957410","component_name":"Modbus reader","edge":"g9OxBZ5KRwNznlY6pAppGEAWXvjdEL4eGQobMDy2"},"message":{"sk":"rvo_senica_42_ip118: FLOW bol reštartovaný","en":"rvo_senica_42_ip118: FLOW has been restarted"},"message_data":""}}}],"id":"3000170001mp71b"}
|
||||
-"g9OxBZ5KRwNznlY6pAppGEAWXvjdEL4eGQobMDy2":[{"ts":1760521818572,"values":{"edge_fw_version":"2025-10-08","maintenance_mode":false}}],"id":"3000170002mp70b"}
|
||||
-"g9OxBZ5KRwNznlY6pAppGEAWXvjdEL4eGQobMDy2":[{"ts":1760521818585,"values":{"statecode":2,"power_mode":"Automatic"}}],"id":"3000170004mp70b"}
|
||||
-"g9OxBZ5KRwNznlY6pAppGEAWXvjdEL4eGQobMDy2":[{"ts":1760521818620,"values":{"_event":{"type":"notice","status":"new","source":{"func":"rsPort.open()","component":"1699963668903","component_name":"DIDO_Controller","edge":"g9OxBZ5KRwNznlY6pAppGEAWXvjdEL4eGQobMDy2"},"message":{"sk":"rvo_senica_42_ip118: FLOW bol spustený","en":"rvo_senica_42_ip118: FLOW has been started "},"message_data":""}}}],"id":"3000170006mp70b"}
|
||||
3
RVO42/databases/tbdatacloud.nosql
Executable file
3
RVO42/databases/tbdatacloud.nosql
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
-"g9OxBZ5KRwNznlY6pAppGEAWXvjdEL4eGQobMDy2":[{"ts":1760521818572,"values":{"edge_fw_version":"2025-10-08","maintenance_mode":false}}],"id":"3000170003mp71b"}
|
||||
-"g9OxBZ5KRwNznlY6pAppGEAWXvjdEL4eGQobMDy2":[{"ts":1760521818585,"values":{"statecode":2,"power_mode":"Automatic"}}],"id":"3000170005mp71b"}
|
||||
-"g9OxBZ5KRwNznlY6pAppGEAWXvjdEL4eGQobMDy2":[{"ts":1760521818620,"values":{"_event":{"type":"notice","status":"new","source":{"func":"rsPort.open()","component":"1699963668903","component_name":"DIDO_Controller","edge":"g9OxBZ5KRwNznlY6pAppGEAWXvjdEL4eGQobMDy2"},"message":{"sk":"rvo_senica_42_ip118: FLOW bol spustený","en":"rvo_senica_42_ip118: FLOW has been started "},"message_data":""}}}],"id":"3000170007mp71b"}
|
||||
38
RVO42/databases/total_energy.js
Executable file
38
RVO42/databases/total_energy.js
Executable file
|
|
@ -0,0 +1,38 @@
|
|||
//key is rvo_number, value is max energy when lamps are on
|
||||
const total_energy = {
|
||||
1: 580,
|
||||
2: 1100,
|
||||
3: 3700,
|
||||
4: 4100,
|
||||
7: 360,
|
||||
12: 1700,
|
||||
13: 5400,
|
||||
14: 440,
|
||||
15: 6100,
|
||||
16: 4800,
|
||||
20: 1600,
|
||||
21: 1000,
|
||||
22: 2600,
|
||||
23: 1000,
|
||||
25: 2600,
|
||||
33: 240,
|
||||
34: 4000,
|
||||
35: 2700,
|
||||
36: 820,
|
||||
37: 1400,
|
||||
35: 3500,
|
||||
39: 1170,
|
||||
41: 740,
|
||||
42: 660,
|
||||
43: 4900,
|
||||
45: 930,
|
||||
46: 700,
|
||||
47: 1100,
|
||||
48: 1500,
|
||||
50: 3200,
|
||||
53: 1250,
|
||||
55: 1000,
|
||||
56: 5500
|
||||
}
|
||||
|
||||
module.exports = total_energy;
|
||||
Loading…
Add table
Add a link
Reference in a new issue