97 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package ch.hevs.isi;
 | |
| 
 | |
| import ch.hevs.isi.core.BooleanDataPoint;
 | |
| import ch.hevs.isi.core.FloatDataPoint;
 | |
| import ch.hevs.isi.db.DatabaseConnector;
 | |
| import ch.hevs.isi.utils.Utility;
 | |
| 
 | |
| public class MinecraftController {
 | |
| 
 | |
|     public static boolean ERASE_PREVIOUS_DATA_INB_DB        = false;
 | |
| 
 | |
|     public static void usage() {
 | |
|         System.out.println();
 | |
|         System.out.println("You're reading this message because no parameter (or not the needed ones) has been passed to the application.");
 | |
|         System.out.println();
 | |
|         System.out.println("In development mode, just add to your running configuration the needed parameters (see usage below).");
 | |
|         System.out.println("In running mode, the application's usage is the following:");
 | |
|         System.out.println("java MinecraftController <InfluxDB Server> <DB Name> <DB Measurement> <DB Username> <ModbusTCP Server> <ModbusTCP port> [-modbus4j] [-keepAlive]");
 | |
|         System.out.println("where:");
 | |
|         System.out.println("- <InfluxDB Server>:  The complete URL of the InfluxDB server, including the protocol (http or https)...");
 | |
|         System.out.println("                      Example: https://influx.sdi.hevs.ch");
 | |
|         System.out.println("- <DB Name>:          The name of the Influx DB to use. For this project, this name is the name of the group you've been affected to. (SInXX)");
 | |
|         System.out.println("- <DB Username:       The user's name to use to access the DB. It's also your group's name. (SInXX)");
 | |
|         System.out.println("- <ModbusTCP Server>: The IP address of the Minecraft ModbusTCP server (default value: localhost)");
 | |
|         System.out.println("- <ModbusTCP port>:   The port number of the Minecraft ModbusTCP server (default value: 1502)");
 | |
|         System.out.println("- [-eraseDB]:         Optional parameter! If set, the application will erase the previous data in InfluxDB...");
 | |
|         System.out.println();
 | |
|         System.exit(1);
 | |
|     }
 | |
| 
 | |
|     @SuppressWarnings("all")
 | |
|     public static void main(String[] args) {
 | |
| 
 | |
|         // ------------------------------------- DO NOT CHANGE THE FOLLOWING LINES -------------------------------------
 | |
|         String dbProtocol       = "http";
 | |
|         String dbHostName       = "localhost";
 | |
|         String dbName           = "labo";
 | |
|         String dbUserName       = "root";
 | |
|         String dbPassword       = "root";
 | |
| 
 | |
|         String modbusTcpHost    = "localhost";
 | |
|         int modbusTcpPort       = 1502;
 | |
| 
 | |
|         // Check the number of arguments and show usage message if the number does not match.
 | |
|         String[] parameters = null;
 | |
| 
 | |
|         // If there is only one number given as parameter, construct the parameters according the group number.
 | |
|         if (args.length >= 5) {
 | |
|             parameters = args;
 | |
| 
 | |
|             // Decode parameters for influxDB
 | |
|             String[] dbParams = parameters[0].split("://");
 | |
|             if (dbParams.length != 2) {
 | |
|                 usage();
 | |
|             }
 | |
| 
 | |
|             dbProtocol    = dbParams[0];
 | |
|             dbHostName    = dbParams[1];
 | |
|             dbName        = parameters[1];
 | |
|             dbUserName    = parameters[2];
 | |
|             dbPassword    = Utility.md5sum(dbUserName);
 | |
| 
 | |
|             // Decode parameters for Modbus TCP
 | |
|             modbusTcpHost = parameters[3];
 | |
|             modbusTcpPort = Integer.parseInt(parameters[4]);
 | |
| 
 | |
|             for (int i = 5; i < args.length; i++) {
 | |
|                 if (parameters[i].compareToIgnoreCase("-erasedb") == 0) {
 | |
|                     ERASE_PREVIOUS_DATA_INB_DB = true;
 | |
|                 }
 | |
|             }
 | |
|         } else {
 | |
|             usage();
 | |
|         }
 | |
| 
 | |
|         // ------------------------------------ /DO NOT CHANGE THE FOLLOWING LINES -------------------------------------
 | |
| 
 | |
|         // Start coding here ...
 | |
| 
 | |
|         // Initialize the database connector
 | |
|         if((dbProtocol != null) && (dbHostName != null)){
 | |
|             DatabaseConnector.url = dbProtocol+ "://" + dbHostName;
 | |
|             DatabaseConnector.getMySelf().initialize(dbProtocol+ "://" + dbHostName);
 | |
|         }
 | |
|         if(dbName != null){
 | |
|             DatabaseConnector.org = dbName;
 | |
|         }
 | |
|         if(dbUserName != null){
 | |
|             DatabaseConnector.bucket = dbUserName;
 | |
|         }
 | |
| 
 | |
|         // Initialize the Modbus TCP connector
 | |
| 
 | |
| 
 | |
|     }
 | |
| }
 |