Exemplo n.º 1
0
    def test_get_location_other_valid_data(self, mock_date, mock_port):

        mock_port.return_value.inWaiting.return_value = 1
        mock_port.return_value.readline.return_value = (
            "b'$GPRMC,194509.000,A,4042.6142,S,07400.4168,W,2.03,221.11,160412,,,A*77"
        )
        mock_date.return_value = "example date"

        with patch.dict(
                os.environ,
            {
                "GPS_LOG_FILE": "logger.txt",
                "LOG_DIRECTORY": self.temp_dir.path,
                "GPS_PORT": "/dev/serial0",
                "GPS_BAUDRATE": "9600",
            },
        ):

            expected_data = {}
            expected_data["sensor_id"] = 1
            expected_data["values"] = {
                "latitude": -40.71023666666667,
                "longitude": -74.00694666666666,
            }
            expected_data["date"] = "example date"

            gps_reader = GPSReader()
            data = gps_reader.get_geolocation()

            mock_port.return_value.inWaiting.assert_called()
            mock_port.return_value.readline.assert_called()

            self.assertEqual(expected_data, data)
Exemplo n.º 2
0
    def test_get_speed_in_mph_invalid_data(self, mock_port):

        mock_port.return_value.inWaiting.return_value = 1
        mock_port.return_value.readline.return_value = (
            "b'$GP,194509.000,A,4042.6142,N,07400.4168,W,2.03,221.11,160412,,,A*77"
        )

        with patch.dict(
                os.environ,
            {
                "GPS_LOG_FILE": "logger.txt",
                "LOG_DIRECTORY": self.temp_dir.path,
                "GPS_PORT": "/dev/serial0",
                "GPS_BAUDRATE": "9600",
            },
        ):

            expected_data = None

            gps_reader = GPSReader()
            data = gps_reader.get_speed_mph()

            mock_port.return_value.inWaiting.assert_called()
            mock_port.return_value.readline.assert_called()

            self.assertEqual(expected_data, data)
Exemplo n.º 3
0
    def test_get_speed_in_mph(self, mock_date, mock_port):

        mock_port.return_value.inWaiting.return_value = 1
        mock_port.return_value.readline.return_value = (
            "b'$GPRMC,194509.000,A,4042.6142,N,07400.4168,W,2.03,221.11,160412,,,A*77"
        )
        mock_date.return_value = "example date"

        with patch.dict(
                os.environ,
            {
                "GPS_LOG_FILE": "logger.txt",
                "LOG_DIRECTORY": self.temp_dir.path,
                "GPS_PORT": "/dev/serial0",
                "GPS_BAUDRATE": "9600",
            },
        ):

            speed_in_mph = 2.03 * 1.151

            expected_data = {}
            expected_data["sensor_id"] = 1
            expected_data["values"] = {
                "speed": speed_in_mph,
            }
            expected_data["date"] = "example date"

            gps_reader = GPSReader()
            data = gps_reader.get_speed_mph()

            mock_port.return_value.inWaiting.assert_called()
            mock_port.return_value.readline.assert_called()

            self.assertEqual(expected_data, data)
Exemplo n.º 4
0
def handleGps():
    """
    Starts up the GPSPi runtime, begins listening for GPS Hat input,
    establishing a connection to a local CommPi via LAN, and sending data
    for transmission to the CommPi
    """
    gpsPi = GPSReader()
    client = WebClient()

    while True:
        print("gps loop")
        coords = gpsPi.get_geolocation()
        speed = gpsPi.get_speed_mph()
        if coords is not None:
            data = [coords, speed]
            for i in data:
                payload = json.loads(json.dumps(i))
                try:
                    client.send(payload)
                except Exception as err:
                    print("Error transmitting gps data: {}".format(str(err)))
                    raise
                time.sleep(1)
    def test_init_logs(self, mock_port):

        with patch.dict(
            os.environ,
            {
                "GPS_HAT_LOG_FILE": "logger.txt",
                "LOG_DIRECTORY": self.temp_dir.path,
                "GPS_PORT": "/dev/serial0",
                "GPS_BAUDRATE": "9600",
            },
        ):

            gps_reader = GPSReader("GPS_HAT_LOG_FILE")
            mock_port.assert_called_with(
                os.environ["GPS_PORT"], os.environ["GPS_BAUDRATE"],
            )

            self.assertTrue(gps_reader.logging is not None)
            self.assertTrue(gps_reader.logging.name == "GPS_HAT_LOG_FILE")
            self.assertIsInstance(gps_reader.logging, Logger)
from hardware.gpsPi.gps_reader import GPSReader  # noqa: E402

if os.environ["HARDWARE_TYPE"] == "commPi":
    print("CommunicationsPi")
    runServer(handler_class=CommPi)
elif os.environ["HARDWARE_TYPE"] == "sensePi":
    print("SensePi")
    sensor_keys = get_sensor_keys()
    sensor_ids = {}
    sensor_ids[sensor_keys["TEMPERATURE"]] = 2
    sensor_ids[sensor_keys["PRESSURE"]] = 3
    sensor_ids[sensor_keys["HUMIDITY"]] = 4
    sensor_ids[sensor_keys["ACCELERATION"]] = 5
    sensor_ids[sensor_keys["ORIENTATION"]] = 6
    sensePi = SensePi(sensor_ids=sensor_ids)
    gpsPi = GPSReader()
    client = WebClient()

    while True:
        print("while true")
        temp = sensePi.get_temperature()
        pres = sensePi.get_pressure()
        hum = sensePi.get_humidity()
        acc = sensePi.get_acceleration()
        orie = sensePi.get_orientation()
        all = sensePi.get_all()
        coords = gpsPi.get_geolocation()

        if coords is not None:
            data = [temp, pres, hum, acc, orie, coords, all]
        else: