001package var.web.ws.datasensor; 002 003import java.io.IOException; 004import java.util.Date; 005import java.util.Random; 006 007import javax.websocket.EncodeException; 008import javax.websocket.RemoteEndpoint; 009import javax.websocket.Session; 010 011public class SensorSimulator extends Thread { 012 private Session session; 013 private Random random; 014 private double messwert; 015 016 public SensorSimulator(Session session) { 017 super(); 018 this.session = session; 019 random = new Random(); 020 messwert = 100.0; 021 } 022 023 public void notifyClient() throws IOException { 024 RemoteEndpoint.Basic client = session.getBasicRemote(); 025 Messung messung = new Messung(); 026 messung.setObservation(messwert); 027 messung.setSensor("Sensor XYZ"); 028 messung.setUnit(Messung.Unit.degreeCentigrade); 029 messung.setWhen(new Date()); 030 messung.setWhere(new Messung.Place(49.5121, 8.5316)); 031 try { 032 client.sendObject(messung); 033 } catch (EncodeException e) { 034 e.printStackTrace(System.err); 035 } 036 } 037 038 @Override 039 public void run() { 040 try { 041 while (session != null && session.isOpen()) { 042 sleep(random.nextInt(1000)); 043 if (random.nextBoolean()) { 044 messwert += 0.1; 045 } else { 046 messwert -= 0.1; 047 } 048 notifyClient(); 049 } 050 } catch (InterruptedException | IOException e) { 051 e.printStackTrace(); 052 } 053 } 054}