예제 #1
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)
예제 #2
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)
예제 #3
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)