Bladeren bron

Weerstation is WeerstationConnector geworden

jancoow 11 jaren geleden
bovenliggende
commit
27cd70aae1
1 gewijzigde bestanden met toevoegingen van 561 en 0 verwijderingen
  1. 561 0
      WeerstationConnector.java

+ 561 - 0
WeerstationConnector.java

@@ -0,0 +1,561 @@
+package weerstation;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
+public class WeerstationConnector
+{
+
+    private Connection myConn = null;
+    
+    
+    
+    
+    public WeerstationConnector()
+    {
+        this("84.24.41.72","5329","aws_data","aws","aws");
+    }
+
+    //Start connection with Databse
+    public WeerstationConnector(String host, String port, String dbName, String userName, String password)
+    {
+        try
+        {
+            String url = "jdbc:mysql://" + host + ":" + port + "/"+ dbName + "?user="
+            + userName
+            + "&password="
+            + password;
+            Class.forName("com.mysql.jdbc.Driver").newInstance ();
+            myConn = DriverManager.getConnection(url);
+            System.out.println("Database connection established");
+        }
+        catch( SQLException ex)
+        {
+                System.out.println("SQLException: " + ex.getMessage());
+                System.out.println("SQLState: " + ex.getSQLState());
+                System.out.println("VendorError: " + ex.getErrorCode());
+        }
+        catch(Exception ex)
+        {
+            System.out.println("Error : " + ex.getMessage());
+        }
+    }
+    
+    
+    
+    
+    //Get most recent values of one column
+    public Timestamp getMostRecentTimeStamp()
+    {
+        Measurement m = getMostRecentMeasurement();
+        return m.getDateStamp();
+
+    }
+
+    public short getMostRecentBarometer()
+    {
+        Measurement m = getMostRecentMeasurement();
+        return m.getRawBarometer();
+
+    }
+
+    public short getMostRecentInsideTemp()
+    {
+        Measurement m = getMostRecentMeasurement();
+        return m.getRawInsideTemp();
+
+    }
+
+    public short getMostRecentInsideHum()
+    {
+        Measurement m = getMostRecentMeasurement();
+        return m.getRawInsideHum();
+
+    }
+
+    public short getMostRecentOutsideTemp()
+    {
+        Measurement m = getMostRecentMeasurement();
+        return m.getRawOutsideTemp();
+
+    }
+
+    public short getMostRecentWindSpeed()
+    {
+        Measurement m = getMostRecentMeasurement();
+        return m.getRawWindSpeed();
+
+    }
+    
+    public short getMostRecentAvgWindSpeed()
+    {
+        Measurement m = getMostRecentMeasurement();
+        return m.getRawAvgWindSpeed();
+
+    }
+
+    public short getMostRecentWindDir()
+    {
+        Measurement m = getMostRecentMeasurement();
+        return m.getRawWindDir();
+
+    }
+
+    public short getMostRecentOutsideHum()
+    {
+        Measurement m = getMostRecentMeasurement();
+        return m.getRawOutsideHum();
+
+    }
+
+    public short getMostRecentRainRate()
+    {
+        Measurement m = getMostRecentMeasurement();
+        return m.getRawRainRate();
+
+    }
+
+    public short getMostRecentUVLevel()
+    {
+        Measurement m = getMostRecentMeasurement();
+        return m.getRawUVLevel();
+
+    }
+
+    public short getMostRecentSolarRadiation()
+    {
+        Measurement m = getMostRecentMeasurement();
+        return m.getRawSolarRad();
+
+    }
+
+    public short getMostRecentXmitBatt()
+    {
+        Measurement m = getMostRecentMeasurement();
+        return m.getRawXmitBatt();
+
+    }
+
+    public short getMostRecentBattLevel()
+    {
+        Measurement m = getMostRecentMeasurement();
+        return m.getRawBattLevel();
+
+    }
+
+    public short getMostRecentSunrise()
+    {
+        Measurement m = getMostRecentMeasurement();
+        return m.getRawSunrise();
+
+    }
+
+    public short getMostRecentSunset()
+    {
+        Measurement m = getMostRecentMeasurement();
+        return m.getRawSunset();
+
+    }
+
+    
+    
+    
+    //Get all values of one column
+    public short[] getAllOutsideTemp()
+    {
+        ArrayList<Measurement> mArr = getAllMeasurements();
+        short[] values = new short[mArr.size()];
+        int count = 0;
+        for(Measurement m: mArr )
+        {
+            values[count++] = m.getRawOutsideTemp();
+        }
+        return values;
+    }
+
+    public short[] getAllBarometer()
+    {
+        ArrayList<Measurement> mArr = getAllMeasurements();
+        short[] values = new short[mArr.size()];
+        int count = 0;
+        for(Measurement m: mArr )
+        {
+            values[count++] = m.getRawBarometer();
+        }
+        return values;
+    }
+
+
+    
+    
+    //Get most recent value of all columns
+    public Measurement getMostRecentMeasurement()
+    {
+
+        Measurement m = new Measurement();
+
+        try
+        {
+            // query:
+            Statement s = myConn.createStatement();
+            s.executeQuery("SELECT stationId, timestamp, " +
+                    "barometer, " +
+                    "insideTemp, " +
+                    "insideHum, " +
+                    "outsideTemp, " +
+                    "windSpeed, " +
+                    "avgWindSpeed, " +
+                    "windDir, " +
+                    "outsideHum, " +
+                    "rainRate, " +
+                    "UVLevel, " +
+                    "solarRad, " +
+                    "xmitBatt, " +
+                    "battLevel, " +
+                    "sunrise, " +
+                    "sunset " +
+                    "FROM measurement order by measurementId desc limit 1");
+
+            ResultSet rs = s.getResultSet();
+            int count = 0;
+            while( rs.next() )
+            {
+                m.setStationId( rs.getString("stationId") );
+                m.setDateStamp( rs.getTimestamp(2));
+                m.setRawBarometer( Short.valueOf(rs.getString("barometer")) );
+                m.setRawInsideTemp( Short.valueOf(rs.getString("insideTemp")) );
+                m.setRawInsideHum( Short.valueOf(rs.getString("insideHum")) );
+                m.setRawOutsideTemp( Short.valueOf(rs.getString("outsideTemp")) );
+                m.setRawWindSpeed( Short.valueOf(rs.getString("windSpeed")) );
+                m.setRawAvgWindSpeed( Short.valueOf(rs.getString("avgWindSpeed")) );
+                m.setRawWindDir( Short.valueOf(rs.getString("windDir")) );
+                m.setRawOutsideHum( Short.valueOf(rs.getString("outsideHum")) );
+                m.setRawRainRate( Short.valueOf(rs.getString("rainRate")) );
+                m.setRawUVLevel( Short.valueOf(rs.getString("UVLevel")) );
+                m.setRawSolarRad( Short.valueOf(rs.getString("solarRad")) );
+                m.setRawXmitBatt( Short.valueOf(rs.getString("xmitBatt")) );
+                m.setRawBattLevel( Short.valueOf(rs.getString("battLevel")) );
+                m.setRawSunrise( Short.valueOf(rs.getString("sunrise")) );
+                m.setRawSunset( Short.valueOf(rs.getString("sunset")) );
+
+                count++;
+            }
+            rs.close();
+            s.close();
+        }
+        catch( SQLException ex)
+        {
+                System.out.println("SQLException: " + ex.getMessage());
+                System.out.println("SQLState: " + ex.getSQLState());
+                System.out.println("VendorError: " + ex.getErrorCode());
+        }
+        catch( Exception ex)
+        {
+                System.out.println("getMeasurement: " + ex.getMessage());
+        }
+
+        return m;
+    }
+
+
+    
+    
+    //Get all values of all columns
+    public ArrayList<Measurement> getAllMeasurements()
+    {
+
+        ArrayList<Measurement> mArr = new ArrayList<Measurement>();
+
+        try
+        {
+            // query:
+            Statement s = myConn.createStatement();
+            s.executeQuery("SELECT stationId, timestamp, " +
+                    "barometer, " +
+                    "insideTemp, " +
+                    "insideHum, " +
+                    "outsideTemp, " +
+                    "windSpeed, " +
+                    "avgWindSpeed, " +
+                    "windDir, " +
+                    "outsideHum, " +
+                    "rainRate, " +
+                    "UVLevel, " +
+                    "solarRad, " +
+                    "xmitBatt, " +
+                    "battLevel, " +
+                    "sunrise, " +
+                    "sunset " +
+                    "FROM measurement");
+
+            ResultSet rs = s.getResultSet();
+            int count = 0;
+            while( rs.next() )
+            {
+                Measurement m = new Measurement();
+
+                m.setStationId( rs.getString("stationId") );
+                m.setDateStamp( rs.getTimestamp(2));
+                m.setRawBarometer( Short.valueOf(rs.getString("barometer")) );
+                m.setRawInsideTemp( Short.valueOf(rs.getString("insideTemp")) );
+                m.setRawInsideHum( Short.valueOf(rs.getString("insideHum")) );
+                m.setRawOutsideTemp( Short.valueOf(rs.getString("outsideTemp")) );
+                m.setRawWindSpeed( Short.valueOf(rs.getString("windSpeed")) );
+                m.setRawAvgWindSpeed( Short.valueOf(rs.getString("avgWindSpeed")) );
+                m.setRawWindDir( Short.valueOf(rs.getString("windDir")) );
+                m.setRawOutsideHum( Short.valueOf(rs.getString("outsideHum")) );
+                m.setRawRainRate( Short.valueOf(rs.getString("rainRate")) );
+                m.setRawUVLevel( Short.valueOf(rs.getString("UVLevel")) );
+                m.setRawSolarRad( Short.valueOf(rs.getString("solarRad")) );
+                m.setRawXmitBatt( Short.valueOf(rs.getString("xmitBatt")) );
+                m.setRawBattLevel( Short.valueOf(rs.getString("battLevel")) );
+                m.setRawSunrise( Short.valueOf(rs.getString("sunrise")) );
+                m.setRawSunset( Short.valueOf(rs.getString("sunset")) );
+
+                mArr.add(m);
+
+                count++;
+            }
+            rs.close();
+            s.close();
+        }
+        catch( SQLException ex)
+        {
+                System.out.println("SQLException: " + ex.getMessage());
+                System.out.println("SQLState: " + ex.getSQLState());
+                System.out.println("VendorError: " + ex.getErrorCode());
+        }
+        catch( Exception ex)
+        {
+                System.out.println("getMeasurement: " + ex.getMessage());
+        }
+
+        return mArr;
+    }
+    
+    
+    
+    
+    //Get specified values of all columns
+    public ArrayList<Measurement> getAllMeasurementsBetween(GregorianCalendar d1, GregorianCalendar d2)
+    {
+
+        String sd1 = d1.get(Calendar.YEAR) + "-" + (d1.get(Calendar.MONTH)+1) + "-" + d1.get(Calendar.DATE) + " 0:0:0";
+        String sd2 = d2.get(Calendar.YEAR) + "-" + (d2.get(Calendar.MONTH)+1) + "-" + d2.get(Calendar.DATE) + " 23:59:59";
+
+        ArrayList<Measurement> mArr = new ArrayList<Measurement>();
+
+        try
+        {
+            // query:
+            Statement s = myConn.createStatement();
+            s.executeQuery("SELECT stationId, timestamp, " +
+                    "barometer, " +
+                    "insideTemp, " +
+                    "insideHum, " +
+                    "outsideTemp, " +
+                    "windSpeed, " +
+                    "avgWindSpeed, " +
+                    "windDir, " +
+                    "outsideHum, " +
+                    "rainRate, " +
+                    "UVLevel, " +
+                    "solarRad, " +
+                    "xmitBatt, " +
+                    "battLevel, " +
+                    "sunrise, " +
+                    "sunset " +
+                    "FROM measurement where timestamp between " +
+                    "'" + sd1 + "' and '" + sd2 + "'");
+
+            ResultSet rs = s.getResultSet();
+            int count = 0;
+            while( rs.next() )
+            {
+                Measurement m = new Measurement();
+
+                m.setStationId( rs.getString("stationId") );
+                m.setDateStamp( rs.getTimestamp(2));
+                m.setRawBarometer( Short.valueOf(rs.getString("barometer")) );
+                m.setRawInsideTemp( Short.valueOf(rs.getString("insideTemp")) );
+                m.setRawInsideHum( Short.valueOf(rs.getString("insideHum")) );
+                m.setRawOutsideTemp( Short.valueOf(rs.getString("outsideTemp")) );
+                m.setRawWindSpeed( Short.valueOf(rs.getString("windSpeed")) );
+                m.setRawAvgWindSpeed( Short.valueOf(rs.getString("avgWindSpeed")) );
+                m.setRawWindDir( Short.valueOf(rs.getString("windDir")) );
+                m.setRawOutsideHum( Short.valueOf(rs.getString("outsideHum")) );
+                m.setRawRainRate( Short.valueOf(rs.getString("rainRate")) );
+                m.setRawUVLevel( Short.valueOf(rs.getString("UVLevel")) );
+                m.setRawSolarRad( Short.valueOf(rs.getString("solarRad")) );
+                m.setRawXmitBatt( Short.valueOf(rs.getString("xmitBatt")) );
+                m.setRawBattLevel( Short.valueOf(rs.getString("battLevel")) );
+                m.setRawSunrise( Short.valueOf(rs.getString("sunrise")) );
+                m.setRawSunset( Short.valueOf(rs.getString("sunset")) );
+
+                mArr.add(m);
+
+                count++;
+            }
+            rs.close();
+            s.close();
+        }
+        catch( SQLException ex)
+        {
+                System.out.println("SQLException: " + ex.getMessage());
+                System.out.println("SQLState: " + ex.getSQLState());
+                System.out.println("VendorError: " + ex.getErrorCode());
+        }
+        catch( Exception ex)
+        {
+                System.out.println("getMeasurement: " + ex.getMessage());
+        }
+
+        return mArr;
+    }
+
+    
+    
+    
+    //Get last 86400 values of all columns
+    public ArrayList<Measurement> getAllMeasurementsLast24h()
+    {
+        return getAllMeasurementsLastHours(24);
+    }
+
+    
+    
+    
+    //Get specified values of all columns
+    public ArrayList<Measurement> getAllMeasurementsLastHours(int hour)
+    {
+
+        ArrayList<Measurement> mArr = new ArrayList<Measurement>();
+
+        try
+        {
+            // query:
+            Statement s = myConn.createStatement();
+            s.executeQuery("SELECT stationId, timestamp, " +
+                    "barometer, " +
+                    "insideTemp, " +
+                    "insideHum, " +
+                    "outsideTemp, " +
+                    "windSpeed, " +
+                    "avgWindSpeed, " +
+                    "windDir, " +
+                    "outsideHum, " +
+                    "rainRate, " +
+                    "UVLevel, " +
+                    "solarRad, " +
+                    "xmitBatt, " +
+                    "battLevel, " +
+                    "sunrise, " +
+                    "sunset " +
+                    "FROM measurement where timestamp between NOW() - INTERVAL " +
+                    hour + " HOUR and NOW()");
+
+
+            ResultSet rs = s.getResultSet();
+            int count = 0;
+            while( rs.next() )
+            {
+                Measurement m = new Measurement();
+
+                m.setStationId( rs.getString("stationId") );
+                m.setDateStamp( rs.getTimestamp(2));
+                m.setRawBarometer( Short.valueOf(rs.getString("barometer")) );
+                m.setRawInsideTemp( Short.valueOf(rs.getString("insideTemp")) );
+                m.setRawInsideHum( Short.valueOf(rs.getString("insideHum")) );
+                m.setRawOutsideTemp( Short.valueOf(rs.getString("outsideTemp")) );
+                m.setRawWindSpeed( Short.valueOf(rs.getString("windSpeed")) );
+                m.setRawAvgWindSpeed( Short.valueOf(rs.getString("avgWindSpeed")) );
+                m.setRawWindDir( Short.valueOf(rs.getString("windDir")) );
+                m.setRawOutsideHum( Short.valueOf(rs.getString("outsideHum")) );
+                m.setRawRainRate( Short.valueOf(rs.getString("rainRate")) );
+                m.setRawUVLevel( Short.valueOf(rs.getString("UVLevel")) );
+                m.setRawSolarRad( Short.valueOf(rs.getString("solarRad")) );
+                m.setRawXmitBatt( Short.valueOf(rs.getString("xmitBatt")) );
+                m.setRawBattLevel( Short.valueOf(rs.getString("battLevel")) );
+                m.setRawSunrise( Short.valueOf(rs.getString("sunrise")) );
+                m.setRawSunset( Short.valueOf(rs.getString("sunset")) );
+
+                mArr.add(m);
+
+                count++;
+            }
+            rs.close();
+            s.close();
+        }
+        catch( SQLException ex)
+        {
+                System.out.println("SQLException: " + ex.getMessage());
+                System.out.println("SQLState: " + ex.getSQLState());
+                System.out.println("VendorError: " + ex.getErrorCode());
+        }
+        catch( Exception ex)
+        {
+                System.out.println("getMeasurement: " + ex.getMessage());
+        }
+
+        return mArr;
+    }
+    
+    
+    
+    
+    //Exectute a custom query
+    private ResultSet executeCustomQuery(String query)
+    {
+        ResultSet returnSet = null;
+        
+        try{
+            Statement s = myConn.createStatement();
+            s.executeQuery(query);
+            ResultSet rs = s.getResultSet();
+            
+            returnSet = rs;
+            
+            rs.close();
+            s.close();
+        }
+        catch( SQLException ex)
+        {
+            System.out.println("SQLException: " + ex.getMessage());
+            System.out.println("SQLState: " + ex.getSQLState());
+            System.out.println("VendorError: " + ex.getErrorCode());
+        }
+        catch( Exception ex)
+        {
+           System.out.println("getMeasurement: " + ex.getMessage());
+        }
+        
+        return returnSet;
+    }
+    
+    
+    
+    
+    //Close connection with Database
+    protected void finalize() throws Throwable
+    {
+        // Close database connection
+        if( myConn != null )
+        {
+            try
+            {
+                myConn.close();
+                System.out.println("Database connection terminated");
+            }
+            catch( Exception e ) {}
+        }
+
+        super.finalize();
+    }
+
+}