Переглянути джерело

Add use of DomoticaServer API for Bluetooth Addresses

JDierkse 6 роки тому
батько
коміт
7539890b5c
4 змінених файлів з 17 додано та 10 видалено
  1. 6 6
      Application/PresenceDetection.cc
  2. 9 2
      Bluetooth/Device.cpp
  3. 1 1
      Bluetooth/Device.h
  4. 1 1
      PresenceDetection.ini

+ 6 - 6
Application/PresenceDetection.cc

@@ -126,14 +126,14 @@ int main(int argc, char** argv)
 		std::shared_ptr<PresenceDetection::Bluetooth::Device> pBluetoothDevice;
 		if (bluetooth)
 		{
-			std::string devices;
-			boost::optional<boost::property_tree::ptree&> bluetoothDevices = pt.get_child_optional("Bluetooth.Devices");
-			if (bluetoothDevices)
-				devices = pt.get<std::string>("Bluetooth.Devices");
+			std::string inventoryURL;
+			boost::optional<boost::property_tree::ptree&> bluetoothInventoryURL = pt.get_child_optional("Bluetooth.Inventory");
+			if (bluetoothInventoryURL)
+				inventoryURL = pt.get<std::string>("Bluetooth.Inventory");
 			else
-				throw std::runtime_error("Bluetooth Devices directive missing in ini file.");
+				throw std::runtime_error("Bluetooth Inventory directive missing in ini file.");
 
-			pBluetoothDevice = std::make_shared<PresenceDetection::Bluetooth::Device>(devices, target);
+			pBluetoothDevice = std::make_shared<PresenceDetection::Bluetooth::Device>(inventoryURL, target);
 		}
 
 		sigset_t wset;

+ 9 - 2
Bluetooth/Device.cpp

@@ -1,6 +1,7 @@
 #include <sstream>
 #include <syslog.h>
 #include <boost/algorithm/string.hpp>
+#include "Util/JSON.h"
 #include "Functions.h"
 #include "Device.h"
 
@@ -8,10 +9,16 @@
 namespace PresenceDetection {
 namespace Bluetooth {
 
-Device::Device(const std::string& devices, const std::string& target) :
+Device::Device(const std::string& inventoryURL, const std::string& target) :
 	m_target(target)
 {
-	boost::split(m_devices, devices, boost::is_any_of(","));
+	std::string devices = m_httpClient.GetUrlContents(inventoryURL);
+	Util::JSON json = Util::JSON::parse(devices);
+
+	for (auto& element : json)
+		if (element["bluetooth"] != "")
+			m_devices.push_back(element["bluetooth"]);
+
 	Start();
 }
 

+ 1 - 1
Bluetooth/Device.h

@@ -13,7 +13,7 @@ namespace Bluetooth {
 class Device
 {
 public:
-	Device(const std::string& devices, const std::string& target);
+	Device(const std::string& inventoryURL, const std::string& target);
 	~Device();
 
 	void Start();

+ 1 - 1
PresenceDetection.ini

@@ -11,4 +11,4 @@ Password =
 CookieFile = /tmp/UniFi_Cookies
 
 [Bluetooth]
-Devices = 
+Inventory =