5353DO_CMD_XBEE_DISCOVER = "<discover option='current' />"
5454DO_CMD_XBEE_SETTING = "<radio_command addr='{}' id='{}' format='{}' timeout='1000' />"
5555
56- ID_WIND = "wind"
56+ ID_WIND = "wind_speed"
57+ ID_WIND_DIR = "wind_direction"
5758ID_RADIATION = "radiation"
5859ID_RAIN = "rain"
5960ID_LEVEL = "level"
6061ID_VALVE = "valve"
6162ID_TEMPERATURE = "temperature"
63+ ID_PRESSURE = "pressure"
64+ ID_LUMINOSITY = "luminosity"
6265ID_BATTERY = "battery"
6366ID_MOISTURE = "moisture"
6467
6770ID_WEATHER = "weather"
6871ID_TANK = "tank"
6972
70- ID_ERROR = "error"
71-
7273REGEX_DEV_REQUEST_RESPONSE = ".*<device_request .*>(.*)<\\ /device_request>.*"
7374REGEX_DO_CMD_RESPONSE = ".*<do_command target=[^>]*>(.*)<\\ /do_command>.*"
7475
@@ -146,41 +147,6 @@ def get_device_cloud_session(session):
146147 base_url = user_serialized .server )
147148
148149
149- def check_ajax_request (request ):
150- """
151- Checks whether the given AJAX request is valid and the user is
152- authenticated.
153-
154- Args:
155- request (:class:`.WSGIRequest`): The HTTP request.
156-
157- Returns:
158- `None` if the request is valid, or a `JsonResponse` with the error
159- if it is not.
160- """
161- if is_authenticated (request ):
162- if not request .is_ajax or request .method != "POST" :
163- return JsonResponse ({ID_ERROR : "AJAX request must be sent using POST" }, status = 400 )
164- return None
165- else :
166- return JsonResponse ({ID_ERROR : "Not authenticated" }, status = 401 )
167-
168-
169- def get_exception_response (e ):
170- """
171- Returns the JSON response with the error contained in the given exception.
172-
173- Args:
174- e (:class:`.Exception`): The exception.
175-
176- Returns:
177- A JSON response with the details of the exception.
178- """
179- return JsonResponse ({ID_ERROR : ("Error in the DRM request: {}." .format (e .response .text )
180- if isinstance (e , DeviceCloudHttpException ) else str (e ))},
181- status = 400 )
182-
183-
184150def send_device_request (request , target ):
185151 """
186152 Sends a Device Request to DRM to the device with the given ID.
@@ -192,12 +158,13 @@ def send_device_request(request, target):
192158 Returns:
193159 A JSON with the response or the error.
194160 """
195- # Check if the AJAX request is valid.
196- error = check_ajax_request (request )
197- if error is not None :
198- return error
161+ if not request .is_ajax or request .method != "POST" :
162+ return JsonResponse ({"error" : "AJAX request must be sent using POST" },
163+ status = 400 )
199164
200165 dc = get_device_cloud (request )
166+ if dc is None :
167+ return JsonResponse ({"error" : "Invalid credentials." }, status = 400 )
201168
202169 device_id = request .POST [views .PARAM_CONTROLLER_ID ]
203170 data = request .POST [PARAM_DATA ] if PARAM_DATA in request .POST else None
@@ -208,7 +175,9 @@ def send_device_request(request, target):
208175 return JsonResponse ({"data" : resp }, status = 200 )
209176 return JsonResponse ({"valid" : True }, status = 200 )
210177 except DeviceCloudHttpException as e :
211- return get_exception_response (e )
178+ return JsonResponse (
179+ {"error" : "Error in the DRM request: {}." .format (e .response .text )},
180+ status = e .response .status_code )
212181
213182
214183def send_request (dc , device_id , target , data = None ):
@@ -564,12 +533,13 @@ def get_data_points(request, stream_name):
564533 Returns:
565534 A JSON with the data points or the error.
566535 """
567- # Check if the AJAX request is valid.
568- error = check_ajax_request (request )
569- if error is not None :
570- return error
536+ if not request .is_ajax or request .method != "POST" :
537+ return JsonResponse ({"error" : "AJAX request must be sent using POST" },
538+ status = 400 )
571539
572540 dc = get_device_cloud (request )
541+ if dc is None :
542+ return JsonResponse ({"error" : "Invalid credentials." }, status = 400 )
573543
574544 device_id = request .POST [views .PARAM_CONTROLLER_ID ]
575545 interval = int (
@@ -629,6 +599,10 @@ def get_general_farm_status(request, device_id, stations):
629599 # Weather station.
630600 if stream_id == STREAM_FORMAT_CONTROLLER .format (device_id , ID_WIND ):
631601 status [ID_WEATHER ][ID_WIND ] = data
602+ elif stream_id == STREAM_FORMAT_CONTROLLER .format (device_id , ID_WIND_DIR ):
603+ status [ID_WEATHER ][ID_WIND_DIR ] = data
604+ elif stream_id == STREAM_FORMAT_CONTROLLER .format (device_id , ID_LUMINOSITY ):
605+ status [ID_WEATHER ][ID_LUMINOSITY ] = data
632606 elif stream_id == STREAM_FORMAT_CONTROLLER .format (device_id , ID_RAIN ):
633607 status [ID_WEATHER ][ID_RAIN ] = data
634608 elif stream_id == STREAM_FORMAT_CONTROLLER .format (device_id , ID_RADIATION ):
0 commit comments