Commit 8d3e1fea authored by Andrey Filippov's avatar Andrey Filippov
Browse files

added geomag, phone log

parent 1b048f05
Loading
Loading
Loading
Loading

geomag.php

0 → 100644
+737 −0

File added.

Preview size limit exceeded, changes collapsed.

geomag_test.php

0 → 100644
+292 −0
Original line number Diff line number Diff line
<?php
require_once ('geomag.php'); 
/**<p>
 *  Test values from
 *  <a href ="http://www.ngdc.noaa.gov/geomag/WMM/soft.shtml"> the National GeoPhysical Data Center.</a>.
 *  Click on the WMM2015testvalues.pdf link.
 *  </p><p>
 *  You have to run this test twice. Once with the WMM.COF
 *  file present, and then with it missing. Otherwise the
 *  setCoeff method is never tested.</p>
 *
 * @version 1.0 Apr 14, 2006
 * @author John St. Ledger
 * @version 1.1 Jan 28, 2009
 * <p>Added 2006 test values.</p>
 * @version 1.2 Jan 5, 2010
 * <p>Updated with the test values for the 2010 WMM.COF coefficients. From page 18 of
 * <i>The US/UK World Magnetic Model for 2010-2015, Preliminary online version containing
 * final WMM2010 model coefficients</i></p>
 * @version 1.3 Jan 15, 2015
 * <p>Updated with the test values for the 2015 WMM.COF coefficients. From the test values WMM2015testvalues.pdf
 * from the WMM web site.</p> * @version 1.4 May 26, 2015
 * <p>Fixed the East-West, North-South bug discovered by Martin Frassl.</p>
 
 */
class TSAGeoMagTest
{
    public  function __construct(){
        $this->failure = false;
        $this->magModel = new GeoMag();
    }
    
    public function all_tests(){
        $results = array();
        $results['getDeclination'] =         $this->testDeclination()?"pass":"fail";
        $results['getDipAngle'] =            $this->testDipAngle()?"pass":"fail";
        $results['getHorizontalIntensity'] = $this->testHorizontalIntensity()?"pass":"fail";
        $results['getNorthIntensity'] =      $this->testNorthIntensity()?"pass":"fail";
        $results['getEastIntensity'] =       $this->testEastIntensity()?"pass":"fail";
        $results['getVerticalIntensity'] =   $this->testVerticalIntensity()?"pass":"fail";
        $results['getIntensity'] =           $this->testIntensity()?"pass":"fail";
        $results['decimalYear'] =            $this->testdecimalYear()?"pass":"fail";
        print_r($results);
        $all = $this->magModel->getGeoMag(80, 0, 2015, 0);
        print_r($all);
        $all = $this->magModel->getGeoMag(0, 120, 2015, 0);
        print_r($all);
        $all = $this->magModel->getGeoMag(40.723458, -111.932889, 2015, 0);
        print_r($all);
        $all = $this->magModel->getGeoMag(40.723458, -111.932889, 2020, 0);
        print_r($all);
        $all = $this->magModel->getGeoMag(40.723458, -111.932889, 2020, 1.5);
        print_r($all);
        return $results;
    }
    
    /**
     * Test method for {@link d3.env.TSAGeoMag#getDeclination(double, double, double, double)}
     */
    public function testDeclination()
    {
        $this->newTest();
        $this->assertEquals(-3.85, $this->magModel->getDeclination(80, 0, 2015, 0) , 5.0E-03);
        $this->assertEquals(0.57, $this->magModel->getDeclination(0, 120, 2015, 0) , 5.0E-03);
        $this->assertEquals(69.81, $this->magModel->getDeclination(-80, 240, 2015, 0) , 5.0E-03);
        $this->assertEquals(-4.27, $this->magModel->getDeclination(80, 0, 2015, 100) , 5.0E-03);
        $this->assertEquals(0.56, $this->magModel->getDeclination(0, 120, 2015, 100) , 5.0E-03);
        $this->assertEquals(69.22, $this->magModel->getDeclination(-80, 240, 2015, 100) , 5.0E-03);
        
        $this->assertEquals(-2.75, $this->magModel->getDeclination(80, 0, 2017.5, 0) , 5.0E-03);
        $this->assertEquals(0.32, $this->magModel->getDeclination(0, 120, 2017.5, 0) , 5.0E-03);
        $this->assertEquals(69.58, $this->magModel->getDeclination(-80, 240, 2017.5, 0) , 5.0E-03);
        $this->assertEquals(-3.17, $this->magModel->getDeclination(80, 0, 2017.5, 100) , 5.0E-03);
        $this->assertEquals(0.32, $this->magModel->getDeclination(0, 120, 2017.5, 100) , 5.0E-03);
        $this->assertEquals(69.00, $this->magModel->getDeclination(-80, 240, 2017.5, 100) , 5.0E-03);
        
        $this->assertEquals(-2.75, $this->magModel->getDeclination(80, 0) , 5.0E-03);
        $this->assertEquals(0.32, $this->magModel->getDeclination(0, 120) , 5.0E-03);
        $this->assertEquals(69.58, $this->magModel->getDeclination(-80, 240) , 5.0E-03);
        return $this->getSuccess();
    }
    
    /**
     * Test method for {@link d3.env.TSAGeoMag#getDipAngle(double, double, double, double)}
     */
    public function testDipAngle()
    {
        $this->newTest();
        $this->assertEquals(83.04, $this->magModel->getDipAngle(80, 0, 2015, 0) , 5E-03);
        $this->assertEquals(-15.89, $this->magModel->getDipAngle(0, 120, 2015, 0) , 5.0E-03);
        $this->assertEquals(-72.39, $this->magModel->getDipAngle(-80, 240, 2015, 0) , 5.0E-03);
        $this->assertEquals(83.09, $this->magModel->getDipAngle(80, 0, 2015, 100) , 5.0E-03);
        $this->assertEquals(-16.01, $this->magModel->getDipAngle(0, 120, 2015, 100) , 5.0E-03);
        $this->assertEquals(-72.57, $this->magModel->getDipAngle(-80, 240, 2015, 100) , 5.0E-03);
        
        $this->assertEquals(83.08, $this->magModel->getDipAngle(80, 0, 2017.5, 0) , 5.0E-03);
        $this->assertEquals(-15.57, $this->magModel->getDipAngle(0, 120, 2017.5, 0) , 5.0E-03);
        $this->assertEquals(-72.28, $this->magModel->getDipAngle(-80, 240, 2017.5, 0) , 5.0E-03);
        $this->assertEquals(83.13, $this->magModel->getDipAngle(80, 0, 2017.5, 100) , 5.0E-03);
        $this->assertEquals(-15.70, $this->magModel->getDipAngle(0, 120, 2017.5, 100) , 5.0E-03);
        $this->assertEquals(-72.45, $this->magModel->getDipAngle(-80, 240, 2017.5, 100) , 5.0E-03);
        
        $this->assertEquals(83.08, $this->magModel->getDipAngle(80, 0) , 5.0E-03);
        $this->assertEquals(-15.57, $this->magModel->getDipAngle(0, 120) , 5.0E-03);
        $this->assertEquals(-72.28, $this->magModel->getDipAngle(-80, 240) , 5.0E-03);
        return $this->getSuccess();
    }
    /**
     * Test method for {@link d3.env.TSAGeoMag#getHorizontalIntensity(double, double, double, double)} in nT
     * and {@link d3.env.TSAGeoMag#getHorizontalIntensity(double, double)} in nT
     */
    public function testHorizontalIntensity()
    {
        $this->newTest();
        $this->assertEquals(6642.1, $this->magModel->getHorizontalIntensity(80, 0, 2015, 0) , 5.0E-02);
        $this->assertEquals(39520.2, $this->magModel->getHorizontalIntensity(0, 120, 2015, 0) , 5.0E-02);
        $this->assertEquals(16793.5, $this->magModel->getHorizontalIntensity(-80, 240, 2015, 0) , 5.0E-02);
        $this->assertEquals(6331.9, $this->magModel->getHorizontalIntensity(80, 0, 2015, 100) , 5.0E-02);
        $this->assertEquals(37537.3, $this->magModel->getHorizontalIntensity(0, 120, 2015, 100) , 5.0E-02);
        $this->assertEquals(15820.7, $this->magModel->getHorizontalIntensity(-80, 240, 2015, 100) , 5.0E-02);
        
        $this->assertEquals(6607.0, $this->magModel->getHorizontalIntensity(80, 0, 2017.5, 0) , 5.0E-02);
        $this->assertEquals(39572.0, $this->magModel->getHorizontalIntensity(0, 120, 2017.5, 0) , 5.0E-02);
        $this->assertEquals(16839.1, $this->magModel->getHorizontalIntensity(-80, 240, 2017.5, 0) , 5.0E-02);
        $this->assertEquals(6300.1, $this->magModel->getHorizontalIntensity(80, 0, 2017.5, 100) , 5.0E-02);
        $this->assertEquals(37586.1, $this->magModel->getHorizontalIntensity(0, 120, 2017.5, 100) , 5.0E-02);
        $this->assertEquals(15862.0, $this->magModel->getHorizontalIntensity(-80, 240, 2017.5, 100) , 5.0E-02);
        
        $this->assertEquals(6607.0, $this->magModel->getHorizontalIntensity(80, 0) , 5.0E-02);
        $this->assertEquals(39572.0, $this->magModel->getHorizontalIntensity(0, 120) , 5.0E-02);
        $this->assertEquals(16839.1, $this->magModel->getHorizontalIntensity(-80, 240) , 5.0E-02);
        return $this->getSuccess();
    }
    /**
     * Test method for d3.env.TSAGeoMag.getEastIntensity() in nT
     */
    public function testNorthIntensity()
    {
        $this->newTest();
        $this->assertEquals(6627.1, $this->magModel->getNorthIntensity(80, 0, 2015, 0) , 5.0E-02);
        $this->assertEquals(39518.2, $this->magModel->getNorthIntensity(0, 120, 2015, 0) , 5.0E-02);
        $this->assertEquals(5797.3, $this->magModel->getNorthIntensity(-80, 240, 2015, 0) , 5.0E-02);
        $this->assertEquals(6314.3, $this->magModel->getNorthIntensity(80, 0, 2015, 100) , 5.0E-02);
        $this->assertEquals(37535.6, $this->magModel->getNorthIntensity(0, 120, 2015, 100) , 5.0E-02);
        $this->assertEquals(5613.1, $this->magModel->getNorthIntensity(-80, 240, 2015, 100) , 5.0E-02);
        
        $this->assertEquals(6599.4, $this->magModel->getNorthIntensity(80, 0, 2017.5, 0) , 5.0E-02);
        $this->assertEquals(39571.4, $this->magModel->getNorthIntensity(0, 120, 2017.5, 0) , 5.0E-02);
        $this->assertEquals(5873.8, $this->magModel->getNorthIntensity(-80, 240, 2017.5, 0) , 5.0E-02);
        $this->assertEquals(6290.5, $this->magModel->getNorthIntensity(80, 0, 2017.5, 100) , 5.0E-02);
        $this->assertEquals(37585.5, $this->magModel->getNorthIntensity(0, 120, 2017.5, 100) , 5.0E-02);
        $this->assertEquals(5683.5, $this->magModel->getNorthIntensity(-80, 240, 2017.5, 100) , 5.0E-02);
        
        $this->assertEquals(6599.4, $this->magModel->getNorthIntensity(80, 0) , 5.0E-02);
        $this->assertEquals(39571.4, $this->magModel->getNorthIntensity(0, 120) , 5.0E-02);
        $this->assertEquals(5873.8, $this->magModel->getNorthIntensity(-80, 240) , 5.0E-02);
        return $this->getSuccess();
    }
    /**
     * Test method for d3.env.TSAGeoMag.getNorthIntensity() in nT
     */
    public function testEastIntensity()
    {
        $this->newTest();
        $this->assertEquals( -445.9, $this->magModel->getEastIntensity(80, 0, 2015, 0) , 5.0E-02);
        $this->assertEquals(  392.9, $this->magModel->getEastIntensity(0, 120, 2015, 0) , 5.0E-02);
        $this->assertEquals(15761.1, $this->magModel->getEastIntensity(-80, 240, 2015, 0) , 5.0E-02);
        $this->assertEquals( -471.6, $this->magModel->getEastIntensity(80, 0, 2015, 100) , 5.0E-02);
        $this->assertEquals(  364.4, $this->magModel->getEastIntensity(0, 120, 2015, 100) , 5.0E-02);
        $this->assertEquals(14791.5, $this->magModel->getEastIntensity(-80, 240, 2015, 100) , 5.0E-02);
        
        $this->assertEquals( -317.1, $this->magModel->getEastIntensity(80, 0, 2017.5, 0) , 5.0E-02);
        $this->assertEquals(  222.5, $this->magModel->getEastIntensity(0, 120, 2017.5, 0) , 5.0E-02);
        $this->assertEquals(15781.4, $this->magModel->getEastIntensity(-80, 240, 2017.5, 0) , 5.0E-02);
        $this->assertEquals( -348.5, $this->magModel->getEastIntensity(80, 0, 2017.5, 100) , 5.0E-02);
        $this->assertEquals(  209.5, $this->magModel->getEastIntensity(0, 120, 2017.5, 100) , 5.0E-02);
        $this->assertEquals(14808.8, $this->magModel->getEastIntensity(-80, 240, 2017.5, 100) , 5.0E-02);
        
        $this->assertEquals( -317.1, $this->magModel->getEastIntensity(80, 0) , 5.0E-02);
        $this->assertEquals(  222.5, $this->magModel->getEastIntensity(0, 120) , 5.0E-02);
        $this->assertEquals(15781.4, $this->magModel->getEastIntensity(-80, 240) , 5.0E-02);
        return $this->getSuccess();
    }
    /**
     * Test method for d3.env.TSAGeoMag.getVerticalIntensity()
     */
    public function testVerticalIntensity()
    {
        $this->newTest();
        $this->assertEquals( 54432.3, $this->magModel->getVerticalIntensity(80, 0, 2015, 0) , 5.0E-02);
        $this->assertEquals(-11252.4, $this->magModel->getVerticalIntensity(0, 120, 2015, 0) , 5.0E-02);
        $this->assertEquals(-52919.1, $this->magModel->getVerticalIntensity(-80, 240, 2015, 0) , 5.0E-02);
        $this->assertEquals( 52269.8, $this->magModel->getVerticalIntensity(80, 0, 2015, 100) , 5.0E-02);
        $this->assertEquals(-10773.4, $this->magModel->getVerticalIntensity(0, 120, 2015, 100) , 5.0E-02);
        $this->assertEquals(-50378.6, $this->magModel->getVerticalIntensity(-80, 240, 2015, 100) , 5.0E-02);
        
        $this->assertEquals( 54459.2, $this->magModel->getVerticalIntensity(80, 0, 2017.5, 0) , 5.0E-02);
        $this->assertEquals(-11030.1, $this->magModel->getVerticalIntensity(0, 120, 2017.5, 0) , 5.0E-02);
        $this->assertEquals(-52687.9, $this->magModel->getVerticalIntensity(-80, 240, 2017.5, 0) , 5.0E-02);
        $this->assertEquals( 52292.7, $this->magModel->getVerticalIntensity(80, 0, 2017.5, 100) , 5.0E-02);
        $this->assertEquals(-10564.2, $this->magModel->getVerticalIntensity(0, 120, 2017.5, 100) , 5.0E-02);
        $this->assertEquals(-50163.0, $this->magModel->getVerticalIntensity(-80, 240, 2017.5, 100) , 5.0E-02);
        
        $this->assertEquals( 54459.2, $this->magModel->getVerticalIntensity(80, 0) , 5.0E-02);
        $this->assertEquals(-11030.1, $this->magModel->getVerticalIntensity(0, 120) , 5.0E-02);
        $this->assertEquals(-52687.9, $this->magModel->getVerticalIntensity(-80, 240) , 5.0E-02);
        return $this->getSuccess();
    }
    /**
     * Test method for d3.env.TSAGeoMag.getIntensity()
     */
    public function testIntensity()
    {
        $this->newTest();
        $this->assertEquals(54836.0, $this->magModel->getIntensity(80, 0, 2015, 0) , 5.0E-02);
        $this->assertEquals(41090.9, $this->magModel->getIntensity(0, 120, 2015, 0) , 5.0E-02);
        $this->assertEquals(55519.8, $this->magModel->getIntensity(-80, 240, 2015, 0) , 5.0E-02);
        $this->assertEquals(52652.0, $this->magModel->getIntensity(80, 0, 2015, 100) , 5.0E-02);
        $this->assertEquals(39052.7, $this->magModel->getIntensity(0, 120, 2015, 100) , 5.0E-02);
        $this->assertEquals(52804.4, $this->magModel->getIntensity(-80, 240, 2015, 100) , 5.0E-02);
        
        $this->assertEquals(54858.5, $this->magModel->getIntensity(80, 0, 2017.5, 0) , 5.0E-02);
        $this->assertEquals(41080.5, $this->magModel->getIntensity(0, 120, 2017.5, 0) , 5.0E-02);
        $this->assertEquals(55313.4, $this->magModel->getIntensity(-80, 240, 2017.5, 0) , 5.0E-02);
        $this->assertEquals(52670.9, $this->magModel->getIntensity(80, 0, 2017.5, 100) , 5.0E-02);
        $this->assertEquals(39042.5, $this->magModel->getIntensity(0, 120, 2017.5, 100) , 5.0E-02);
        $this->assertEquals(52611.1, $this->magModel->getIntensity(-80, 240, 2017.5, 100) , 5.0E-02);
        
        $this->assertEquals(54858.5, $this->magModel->getIntensity(80, 0) , 5.0E-02);
        $this->assertEquals(41080.5, $this->magModel->getIntensity(0, 120) , 5.0E-02);
        $this->assertEquals(55313.4, $this->magModel->getIntensity(-80, 240) , 5.0E-02);
        //assertEquals(52672.8, $this->magModel->getIntensity(40, -105, 2014, 0), 0.05);
        //assertEquals(52672.8, $this->magModel->getIntensity(40, -105, $this->magModel->decimalYear(new GregorianCalendar(2014, 0, 0)), 0), 0.05);
        //assertEquals(52672.5, $this->magModel->getIntensity(40, -105, $this->magModel->decimalYear(new GregorianCalendar(2014, 0, 1)), 0), 0.05);
        return $this->getSuccess();
    }
    
    /**
     *  test method for {@link d3.env.TSAGeoMag#decimalYear(GregorianCalendar)}
     */
    public function testdecimalYear()
    {
        $this->newTest();
        $mag = new GeoMag();
        
//        GregorianCalendar cal = new GregorianCalendar(2010, 0, 0);
//       assertEquals(2010.0, $mag->decimalYear(cal), 0.0);
        $ts = strtotime("2010/1/1");
        $this->assertEquals(2010.0, $mag->decimalYear($ts), 0.0);
//        GregorianCalendar cal2 = new GregorianCalendar(2012, 6, 1);  // the full day of July 1, 0 hours into 2 July
//        assertTrue(cal2.isLeapYear(2012));
//        assertEquals(2012.5, $mag->decimalYear(cal2), 0.0);
        $ts = strtotime("2012/7/2");
        $this->assertEquals(2012.5, $mag->decimalYear($ts), 0.0005);
//        cal2 = new GregorianCalendar(2013, 3, 13);
//        assertFalse(cal2.isLeapYear(2013));
//        assertEquals(2013.282, $mag->decimalYear(cal2), 0.0005);

        $ts = strtotime("2013/4/14");
        $this->assertEquals(2013.282, $mag->decimalYear($ts), 0.0005);
        return $this->getSuccess();
    }
    
    private function assertEquals ($a, $b, $tolerance) {
        
        $ok = abs($a - $b) <= $tolerance;
        $this->failure |= !$ok;
        printf("assertEquals (%f, %f, %f) -> %d (%d)\n",$a, $b, $tolerance, $ok, $this->failure);
        return $ok;
    }

    private function assertFalse ($f) {
        $this->failure &= $f;
        return !$f;
    }
    
    private function assertTrue ($t) {
        $this->failure &= !$t;
        return $t;
    }
    
    private function newTest(){
        $this->failure = false;
    }
    private function getSuccess(){
        return !$this->failure;
    }
}
$tests = new TSAGeoMagTest();
$tests->all_tests();

?>

log_phone_sensors.php

0 → 100644
+50 −0
Original line number Diff line number Diff line
<?php
$phone_ip= "http://192.168.7.222";
$phone_port= "8123";
$phone_url = $phone_ip.":".$phone_port;
$log_file = fopen("/home/eyesis/git/motosat/attic/logs/phone07.log","w");
$ts_l = 14;
$acc_l = 35;
$mag_l = 35;
$long_l = 12;
$lat_l = 12;
$salign =  128; // used 108
//$ll = $ts_l + $acc_l + $mag_l + $long_l + $lat_l;
$fs = "%".$ts_l."s,%".$acc_l."s,%".$mag_l."s,%".$lat_l."s,%".$long_l."s";


libxml_use_internal_errors(true); // supress XML errors
while (true){
    $xml = simplexml_load_file($phone_url);
//PHP Warning:  simplexml_load_file(http://192.168.7.222:8123): failed to open stream: Connection refused in /home/eyesis/git/motosat/log_phone_sensors.php on line 18
//PHP Warning:  simplexml_load_file(): I/O warning : failed to load external entity "http://192.168.7.222:8123" in /home/eyesis/git/motosat/log_phone_sensors.php on line 18
        
    if ($xml) {
        $ts = $xml->timestmap;
        $acc = $xml->accelerometer;
        $mag = $xml->magnetometer;
        $long = $xml->longitude;
        $lat = $xml->latitude;
        $line = sprintf($fs, $ts, $acc, $mag, $long, $lat);
        $line .= sprintf("%" . ($salign - strlen($line) - 1) . "s", " ") . "\n";
        fwrite($log_file, $line);
    }
}


function getDishAngles($xml_state){
    $DishAngles =     explode(",",$xml_state->DishAngle);
    foreach ($DishAngles as $key => $value){
        $DishAngles[$key] = floatval($value);
    }
    return $DishAngles;
}
/*
 $xml=simplexml_load_string("<sensors><timestmap>1570632414615</timestmap><accelerometer>0.095215, -0.811707, 9.966614</accelerometer><magnetometer>-15.299988, 4.798889, 46.078491</magnetometer><azimuth>61.597424</azimuth><pitch>4.655828</pitch><roll>-0.547352</roll><longitude>-111.932889</longitude><latitude>40.723488</latitude><date>Wed Oct 09 14:46:54 MDT 2019</date></sensors>");
 
 */
//1570632414615 // 13
//-111.932889   // 11
//0.095215, -0.811707, 9.966614 // 29
// -15.299988, 4.798889, 46.078491 // 31
?>
 No newline at end of file