add Web part
This commit is contained in:
		| @@ -1,10 +1,17 @@ | ||||
| package ch.hevs.isi.web; | ||||
|  | ||||
| import ch.hevs.isi.core.BooleanDataPoint; | ||||
| import ch.hevs.isi.core.DataPoint; | ||||
| import ch.hevs.isi.core.DataPointListener; | ||||
| import ch.hevs.isi.core.FloatDataPoint; | ||||
| import org.java_websocket.WebSocket; | ||||
| import org.java_websocket.handshake.ClientHandshake; | ||||
| import org.java_websocket.server.WebSocketServer; | ||||
| import java.net.InetSocketAddress; | ||||
|  | ||||
| public class WebConnector implements DataPointListener { | ||||
|     private static WebConnector mySelf = null; | ||||
|     public WebSocketServer wss = null; | ||||
|  | ||||
|     private WebConnector (){ | ||||
|  | ||||
| @@ -17,13 +24,72 @@ public class WebConnector implements DataPointListener { | ||||
|         return mySelf; | ||||
|     } | ||||
|     public void initialize(String host, int port){ | ||||
|         InetSocketAddress address = new InetSocketAddress(host, port); | ||||
|         wss = new WebSocketServer(address) { | ||||
|             @Override | ||||
|             public void onOpen(WebSocket conn, ClientHandshake handshake) { | ||||
|                 conn.send("Hello Minecraft World 5 !"); | ||||
|                 broadcast( "new connection: " + handshake.getResourceDescriptor() ); //This method sends a message to all clients connected | ||||
|                 System.out.println("New connection from " + conn.getRemoteSocketAddress().getAddress().getHostAddress()); | ||||
|                 System.out.println("Handshake message: " + handshake.getResourceDescriptor()); | ||||
|             } | ||||
|  | ||||
|             @Override | ||||
|             public void onClose(WebSocket conn, int code, String reason, boolean remote) { | ||||
|                 System.out.println("closed " + conn.getRemoteSocketAddress() + " with exit code " + code + " additional info: " + reason); | ||||
|                 try { | ||||
|                     stop(500); | ||||
|                     System.exit(0); | ||||
|                 } catch (InterruptedException e) { | ||||
|                     System.out.println("Error: " + e.getMessage()); | ||||
|                     throw new RuntimeException(e); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             @Override | ||||
|             public void onMessage(WebSocket conn, String message) { | ||||
|                 System.out.println("received message from "	+ conn.getRemoteSocketAddress() + ": " + message); | ||||
|                 updateDataPoint(message); | ||||
|             } | ||||
|  | ||||
|             @Override | ||||
|             public void onError(WebSocket conn, Exception ex) { | ||||
|                 try { | ||||
|                     System.err.println("an error occurred on connection " + conn.getRemoteSocketAddress()  + ":" + ex); | ||||
|                 } catch (Exception e) { | ||||
|                     System.out.println("Error: " + e.getMessage()); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             @Override | ||||
|             public void onStart() { | ||||
|                 System.out.println("Websocket server started"); | ||||
|             } | ||||
|         }; | ||||
|  | ||||
|         wss.start(); | ||||
|     } | ||||
|  | ||||
|     private void pushToWeb(DataPoint dp){ | ||||
|         wss.broadcast(dp.toString()); | ||||
|         System.out.println(dp.toString() + " -> Web"); | ||||
|     } | ||||
|  | ||||
|     private void updateDataPoint(String message){ | ||||
|         String label = message.split("=")[0]; | ||||
|         System.out.println("Label: " + label); | ||||
|  | ||||
|         String value = message.split("=")[1]; | ||||
|         System.out.println("Value: " + value); | ||||
|  | ||||
|         if( (value.equals("true")) || value.equals("false") ) { | ||||
|             new BooleanDataPoint(label, true).setValue(Boolean.parseBoolean(value)); | ||||
|         } else { | ||||
|             new FloatDataPoint(label, true).setValue(Float.parseFloat(value)); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onNewValue(DataPoint dp) { | ||||
|         pushToWeb(dp); | ||||
|   | ||||
							
								
								
									
										50
									
								
								src/test/java/Web.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								src/test/java/Web.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| import ch.hevs.isi.MinecraftController; | ||||
| import ch.hevs.isi.core.BooleanDataPoint; | ||||
| import ch.hevs.isi.core.DataPoint; | ||||
| import ch.hevs.isi.core.FloatDataPoint; | ||||
| import ch.hevs.isi.db.DatabaseConnector; | ||||
| import ch.hevs.isi.web.WebConnector; | ||||
|  | ||||
| public class Web { | ||||
|     public static void main(String[] args) { | ||||
|         MinecraftController.ERASE_PREVIOUS_DATA_INB_DB = true; | ||||
|         FloatDataPoint clock = new FloatDataPoint("CLOAK_FLOAT", false); | ||||
|         FloatDataPoint gridVoltage = new FloatDataPoint("GRID_U_FLOAT", true); | ||||
|  | ||||
|         DatabaseConnector.getMySelf().initialize(null); | ||||
|         WebConnector.getMySelf().initialize("localhost", 8888); | ||||
|  | ||||
|         float time = 0f; | ||||
|         clock.setValue(time); | ||||
|  | ||||
|  | ||||
|  | ||||
|         while (WebConnector.getMySelf().wss != null) { | ||||
|             try { | ||||
|                 Thread.sleep(2000); | ||||
|  | ||||
|                 if(WebConnector.getMySelf().wss.getConnections().size() > 0){ | ||||
|                     FloatDataPoint rfSP = (FloatDataPoint) DataPoint.getDataPointFromLabel("REMOTE_FACTORY_SP"); | ||||
|                     if(rfSP != null) new FloatDataPoint("FACTORY_ST", true).setValue(rfSP.getValue()); | ||||
|  | ||||
|                     FloatDataPoint cfSP = (FloatDataPoint) DataPoint.getDataPointFromLabel("REMOTE_COAL_SP"); | ||||
|                     if(cfSP != null) new FloatDataPoint("COAL_ST", true).setValue(cfSP.getValue()); | ||||
|  | ||||
|                     BooleanDataPoint solar = (BooleanDataPoint) DataPoint.getDataPointFromLabel("REMOTE_SOLAR_SW"); | ||||
|                     if(solar != null) new BooleanDataPoint("SOLAR_CONNECT_ST", true).setValue(solar.getValue()); | ||||
|  | ||||
|                     BooleanDataPoint wind = (BooleanDataPoint) DataPoint.getDataPointFromLabel("REMOTE_WIND_SW"); | ||||
|                     if(wind != null) new BooleanDataPoint("WIND_CONNECT_ST", true).setValue(wind.getValue()); | ||||
|  | ||||
|                     time += 0.1f; | ||||
|                     clock.setValue(time); | ||||
|                     gridVoltage.setValue(750 + (100*time)%100); | ||||
|                 } | ||||
|             } catch (InterruptedException e) { | ||||
|                 e.printStackTrace(); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|  | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user