+From bbcf7fd0646d74b7f169b3aa4231d9150028ed0d Mon Sep 17 00:00:00 2001
+From: Rob Peters <info@domoticz.com>
+Date: Sun, 17 May 2020 11:46:37 +0200
+Subject: [PATCH] Avoid deprecated bind placeholders in global namespace
+
+---
+ hardware/ASyncSerial.cpp | 2 +-
+ hardware/ASyncTCP.cpp | 4 +++-
+ hardware/Comm5Serial.cpp | 2 ++
+ hardware/CurrentCostMeterSerial.cpp | 4 +++-
+ hardware/DavisLoggerSerial.cpp | 4 +++-
+ hardware/DenkoviUSBDevices.cpp | 2 ++
+ hardware/EnOceanESP2.cpp | 4 +++-
+ hardware/EnOceanESP3.cpp | 4 +++-
+ hardware/EvohomeRadio.cpp | 3 +++
+ hardware/EvohomeSerial.cpp | 2 ++
+ hardware/KMTronic433.cpp | 4 +++-
+ hardware/KMTronicBase.cpp | 2 +-
+ hardware/KMTronicSerial.cpp | 4 +++-
+ hardware/MQTT.cpp | 2 ++
+ hardware/Meteostick.cpp | 4 +++-
+ hardware/MySensorsBase.cpp | 2 +-
+ hardware/MySensorsSerial.cpp | 4 +++-
+ hardware/OTGWBase.cpp | 2 +-
+ hardware/OTGWSerial.cpp | 4 +++-
+ hardware/OpenWebNetUSB.cpp | 3 ++-
+ hardware/P1MeterSerial.cpp | 4 +++-
+ hardware/Pinger.cpp | 2 ++
+ hardware/RAVEn.cpp | 2 ++
+ hardware/RFLinkSerial.cpp | 2 ++
+ hardware/RFXComSerial.cpp | 4 +++-
+ hardware/RFXComTCP.cpp | 2 --
+ hardware/Rego6XXSerial.cpp | 4 +++-
+ hardware/S0MeterBase.cpp | 2 +-
+ hardware/S0MeterSerial.cpp | 4 +++-
+ hardware/TCPProxy/tcpproxy_server.cpp | 2 ++
+ hardware/TeleinfoSerial.cpp | 4 +++-
+ hardware/USBtin.cpp | 4 +++-
+ hardware/XiaomiGateway.cpp | 2 +-
+ hardware/Yeelight.h | 1 -
+ hardware/ZiBlueSerial.cpp | 2 ++
+ hardware/plugins/PluginTransports.cpp | 2 ++
+ main/WebServer.cpp | 4 +++-
+ main/mainworker.cpp | 2 ++
+ push/FibaroPush.cpp | 2 ++
+ push/GooglePubSubPush.cpp | 2 ++
+ push/HttpPush.cpp | 2 ++
+ push/InfluxPush.cpp | 2 ++
+ push/WebsocketPush.cpp | 2 ++
+ tcpserver/TCPServer.cpp | 2 +-
+ webserver/cWebem.cpp | 2 +-
+ webserver/connection.cpp | 4 +++-
+ webserver/connection_manager.cpp | 4 +++-
+ webserver/proxyclient.cpp | 2 ++
+ webserver/server.cpp | 4 +++-
+ 49 files changed, 107 insertions(+), 32 deletions(-)
+
+diff --git a/hardware/ASyncSerial.cpp b/hardware/ASyncSerial.cpp
+index 2c9a5e27e9..36dd402fa7 100644
+--- a/hardware/ASyncSerial.cpp
++++ b/hardware/ASyncSerial.cpp
+@@ -34,7 +34,7 @@
+ #include <algorithm>
+ #include <iostream>
+ #include <boost/asio.hpp>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include <boost/function.hpp>
+ #include <boost/thread.hpp>
+ #include <boost/smart_ptr/shared_array.hpp> // for shared_array
+diff --git a/hardware/ASyncTCP.cpp b/hardware/ASyncTCP.cpp
+index 8990c24300..7f7b1e0f24 100644
+--- a/hardware/ASyncTCP.cpp
++++ b/hardware/ASyncTCP.cpp
+@@ -1,10 +1,12 @@
+ #include "stdafx.h"
+ #include "ASyncTCP.h"
+ #include <boost/asio.hpp>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include <boost/system/error_code.hpp> // for error_code
+ #include "../main/Logger.h"
+
++//using namespace boost::placeholders;
++
+ struct hostent;
+
+ #ifndef WIN32
+diff --git a/hardware/Comm5Serial.cpp b/hardware/Comm5Serial.cpp
+index 9b44496fb5..f1c1f706d2 100644
--- a/hardware/Comm5Serial.cpp
+++ b/hardware/Comm5Serial.cpp
@@ -5,6 +5,8 @@
#include "../main/Logger.h"
#include "../main/RFXtrx.h"
-+using namespace std::placeholders;
++using namespace boost::placeholders;
+
/*
This driver allows Domoticz to control any I/O module from the MA-4xxx Family
-@@ -92,7 +94,7 @@ bool Comm5Serial::StartHardware()
- return false;
- }
- m_bIsStarted=true;
-- setReadCallback(boost::bind(&Comm5Serial::readCallBack, this, _1, _2));
-+ setReadCallback(std::bind(&Comm5Serial::readCallBack, this, _1, _2));
+diff --git a/hardware/CurrentCostMeterSerial.cpp b/hardware/CurrentCostMeterSerial.cpp
+index 05bac73d6a..bf9d35cab7 100644
+--- a/hardware/CurrentCostMeterSerial.cpp
++++ b/hardware/CurrentCostMeterSerial.cpp
+@@ -10,10 +10,12 @@
+
+ #include <string>
+ #include <iostream>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
- sOnConnected(this);
- return true;
+ #include <ctime>
+
++using namespace boost::placeholders;
++
+ //
+ //Class CurrentCostMeterSerial
+ //
+diff --git a/hardware/DavisLoggerSerial.cpp b/hardware/DavisLoggerSerial.cpp
+index 9c44539beb..44c9dbde5c 100644
+--- a/hardware/DavisLoggerSerial.cpp
++++ b/hardware/DavisLoggerSerial.cpp
+@@ -8,13 +8,15 @@
+ #include <string>
+ #include <algorithm>
+ #include <iostream>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+
+ #include "../main/localtime_r.h"
+ #include "../main/mainworker.h"
+
+ #include <ctime>
+
++using namespace boost::placeholders;
++
+ #ifdef _DEBUG
+ //#define DEBUG_DAVIS
+ #endif
+diff --git a/hardware/DenkoviUSBDevices.cpp b/hardware/DenkoviUSBDevices.cpp
+index a7977d82c8..53a27e5583 100644
--- a/hardware/DenkoviUSBDevices.cpp
+++ b/hardware/DenkoviUSBDevices.cpp
-@@ -16,6 +16,8 @@ enum _edaeUsbState
+@@ -5,6 +5,8 @@
+ #include "../main/localtime_r.h"
+ #include "../main/mainworker.h"
+
++using namespace boost::placeholders;
++
+ #define MAX_POLL_INTERVAL 3600*1000
#define DAE_IO_TYPE_RELAY 2
+diff --git a/hardware/EnOceanESP2.cpp b/hardware/EnOceanESP2.cpp
+index f20ff9c0cb..fd08c55f63 100644
+--- a/hardware/EnOceanESP2.cpp
++++ b/hardware/EnOceanESP2.cpp
+@@ -8,7 +8,7 @@
+ #include <string>
+ #include <algorithm>
+ #include <iostream>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include "hardwaretypes.h"
+ #include "../main/localtime_r.h"
-+using namespace std::placeholders;
+@@ -16,6 +16,8 @@
+ #include <cmath>
+ #include <ctime>
+
++using namespace boost::placeholders;
+
- CDenkoviUSBDevices::CDenkoviUSBDevices(const int ID, const std::string& comPort, const int model) :
- m_szSerialPort(comPort)
- {
-@@ -78,7 +80,7 @@ bool CDenkoviUSBDevices::StartHardware()
- m_thread = std::make_shared<std::thread>(&CDenkoviUSBDevices::Do_Work, this);
-
- m_bIsStarted = true;
-- setReadCallback(boost::bind(&CDenkoviUSBDevices::readCallBack, this, _1, _2));
-+ setReadCallback(std::bind(&CDenkoviUSBDevices::readCallBack, this, _1, _2));
-
- sOnConnected(this);
- return true;
---- a/hardware/EvohomeRadio.cpp
-+++ b/hardware/EvohomeRadio.cpp
-@@ -26,6 +26,8 @@
+ #define ENOCEAN_RETRY_DELAY 30
+
+ #define round(a) ( int ) ( a + .5 )
+diff --git a/hardware/EnOceanESP3.cpp b/hardware/EnOceanESP3.cpp
+index 6866eeb0d0..2afa0e1e36 100644
+--- a/hardware/EnOceanESP3.cpp
++++ b/hardware/EnOceanESP3.cpp
+@@ -8,7 +8,7 @@
+ #include <string>
+ #include <algorithm>
+ #include <iostream>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include "hardwaretypes.h"
+ #include "../main/localtime_r.h"
- extern std::string szUserDataFolder;
+@@ -16,6 +16,8 @@
+ #include <cmath>
+ #include <ctime>
-+using namespace std::placeholders;
++using namespace boost::placeholders;
+
- enum evoCommands
- {
- cmdSysInfo = 0x10e0,
-@@ -86,27 +88,27 @@ CEvohomeRadio::CEvohomeRadio(const int ID, const std::string& UserContID)
- s_strid >> std::hex >> m_UControllerID;
- }
-
-- RegisterDecoder(cmdZoneTemp, boost::bind(&CEvohomeRadio::DecodeZoneTemp, this, _1));
-- RegisterDecoder(cmdSetPoint, boost::bind(&CEvohomeRadio::DecodeSetpoint, this, _1));
-- RegisterDecoder(cmdSetpointOverride, boost::bind(&CEvohomeRadio::DecodeSetpointOverride, this, _1));
-- RegisterDecoder(cmdDHWState, boost::bind(&CEvohomeRadio::DecodeDHWState, this, _1));
-- RegisterDecoder(cmdDHWTemp, boost::bind(&CEvohomeRadio::DecodeDHWTemp, this, _1));
-- RegisterDecoder(cmdControllerMode, boost::bind(&CEvohomeRadio::DecodeControllerMode, this, _1));
-- RegisterDecoder(cmdSysInfo, boost::bind(&CEvohomeRadio::DecodeSysInfo, this, _1));
-- RegisterDecoder(cmdZoneName, boost::bind(&CEvohomeRadio::DecodeZoneName, this, _1));
-- RegisterDecoder(cmdZoneHeatDemand, boost::bind(&CEvohomeRadio::DecodeHeatDemand, this, _1));
-- RegisterDecoder(cmdOpenThermBridge, boost::bind(&CEvohomeRadio::DecodeOpenThermBridge, this, _1));
-- RegisterDecoder(cmdOpenThermSetpoint, boost::bind(&CEvohomeRadio::DecodeOpenThermSetpoint, this, _1));
-- RegisterDecoder(cmdZoneInfo, boost::bind(&CEvohomeRadio::DecodeZoneInfo, this, _1));
-- RegisterDecoder(cmdControllerHeatDemand, boost::bind(&CEvohomeRadio::DecodeHeatDemand, this, _1));
-- RegisterDecoder(cmdBinding, boost::bind(&CEvohomeRadio::DecodeBinding, this, _1));
-- RegisterDecoder(cmdActuatorState, boost::bind(&CEvohomeRadio::DecodeActuatorState, this, _1));
-- RegisterDecoder(cmdActuatorCheck, boost::bind(&CEvohomeRadio::DecodeActuatorCheck, this, _1));
-- RegisterDecoder(cmdZoneWindow, boost::bind(&CEvohomeRadio::DecodeZoneWindow, this, _1));
-- RegisterDecoder(cmdExternalSensor, boost::bind(&CEvohomeRadio::DecodeExternalSensor, this, _1));
-- RegisterDecoder(cmdDeviceInfo, boost::bind(&CEvohomeRadio::DecodeDeviceInfo, this, _1));
-- RegisterDecoder(cmdBatteryInfo, boost::bind(&CEvohomeRadio::DecodeBatteryInfo, this, _1));
-- RegisterDecoder(cmdSync, boost::bind(&CEvohomeRadio::DecodeSync, this, _1));
-+ RegisterDecoder(cmdZoneTemp, std::bind(&CEvohomeRadio::DecodeZoneTemp, this, _1));
-+ RegisterDecoder(cmdSetPoint, std::bind(&CEvohomeRadio::DecodeSetpoint, this, _1));
-+ RegisterDecoder(cmdSetpointOverride, std::bind(&CEvohomeRadio::DecodeSetpointOverride, this, _1));
-+ RegisterDecoder(cmdDHWState, std::bind(&CEvohomeRadio::DecodeDHWState, this, _1));
-+ RegisterDecoder(cmdDHWTemp, std::bind(&CEvohomeRadio::DecodeDHWTemp, this, _1));
-+ RegisterDecoder(cmdControllerMode, std::bind(&CEvohomeRadio::DecodeControllerMode, this, _1));
-+ RegisterDecoder(cmdSysInfo, std::bind(&CEvohomeRadio::DecodeSysInfo, this, _1));
-+ RegisterDecoder(cmdZoneName, std::bind(&CEvohomeRadio::DecodeZoneName, this, _1));
-+ RegisterDecoder(cmdZoneHeatDemand, std::bind(&CEvohomeRadio::DecodeHeatDemand, this, _1));
-+ RegisterDecoder(cmdOpenThermBridge, std::bind(&CEvohomeRadio::DecodeOpenThermBridge, this, _1));
-+ RegisterDecoder(cmdOpenThermSetpoint, std::bind(&CEvohomeRadio::DecodeOpenThermSetpoint, this, _1));
-+ RegisterDecoder(cmdZoneInfo, std::bind(&CEvohomeRadio::DecodeZoneInfo, this, _1));
-+ RegisterDecoder(cmdControllerHeatDemand, std::bind(&CEvohomeRadio::DecodeHeatDemand, this, _1));
-+ RegisterDecoder(cmdBinding, std::bind(&CEvohomeRadio::DecodeBinding, this, _1));
-+ RegisterDecoder(cmdActuatorState, std::bind(&CEvohomeRadio::DecodeActuatorState, this, _1));
-+ RegisterDecoder(cmdActuatorCheck, std::bind(&CEvohomeRadio::DecodeActuatorCheck, this, _1));
-+ RegisterDecoder(cmdZoneWindow, std::bind(&CEvohomeRadio::DecodeZoneWindow, this, _1));
-+ RegisterDecoder(cmdExternalSensor, std::bind(&CEvohomeRadio::DecodeExternalSensor, this, _1));
-+ RegisterDecoder(cmdDeviceInfo, std::bind(&CEvohomeRadio::DecodeDeviceInfo, this, _1));
-+ RegisterDecoder(cmdBatteryInfo, std::bind(&CEvohomeRadio::DecodeBatteryInfo, this, _1));
-+ RegisterDecoder(cmdSync, std::bind(&CEvohomeRadio::DecodeSync, this, _1));
- }
+ #if _DEBUG
+ #define ENOCEAN_BUTTON_DEBUG
+ #endif
+diff --git a/hardware/EvohomeRadio.cpp b/hardware/EvohomeRadio.cpp
+index 4da983538b..6ba97158cd 100644
+--- a/hardware/EvohomeRadio.cpp
++++ b/hardware/EvohomeRadio.cpp
+@@ -23,6 +23,9 @@
+ #include "../main/WebServer.h"
+ #include "../webserver/cWebem.h"
+ #include <json/json.h>
++#include <boost/bind/bind.hpp>
++
++using namespace boost::placeholders;
+ extern std::string szUserDataFolder;
+diff --git a/hardware/EvohomeSerial.cpp b/hardware/EvohomeSerial.cpp
+index 4a54988291..c74cf576cc 100644
--- a/hardware/EvohomeSerial.cpp
+++ b/hardware/EvohomeSerial.cpp
@@ -7,6 +7,8 @@
#include "../main/localtime_r.h"
#include <boost/exception/diagnostic_information.hpp>
-+using namespace std::placeholders;
++using namespace boost::placeholders;
+
CEvohomeSerial::CEvohomeSerial(const int ID, const std::string &szSerialPort, const int baudrate, const std::string &UserContID) :
CEvohomeRadio(ID, UserContID)
{
-@@ -64,7 +66,7 @@ bool CEvohomeSerial::OpenSerialDevice()
- }
- m_nBufPtr=0;
- m_bIsStarted=true;
-- setReadCallback(boost::bind(&CEvohomeSerial::ReadCallback, this, _1, _2));
-+ setReadCallback(std::bind(&CEvohomeSerial::ReadCallback, this, _1, _2));
- sOnConnected(this);
- return true;
- }
+diff --git a/hardware/KMTronic433.cpp b/hardware/KMTronic433.cpp
+index da81b20f9f..f9832a5a74 100644
+--- a/hardware/KMTronic433.cpp
++++ b/hardware/KMTronic433.cpp
+@@ -9,11 +9,13 @@
+ #include <string>
+ #include <algorithm>
+ #include <iostream>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include <boost/exception/diagnostic_information.hpp>
+
+ #include <ctime>
+
++using namespace boost::placeholders;
++
+ //#define DEBUG_KMTronic
+
+ #define RETRY_DELAY 30
+diff --git a/hardware/KMTronicBase.cpp b/hardware/KMTronicBase.cpp
+index b343108966..d9c45872b5 100644
+--- a/hardware/KMTronicBase.cpp
++++ b/hardware/KMTronicBase.cpp
+@@ -10,7 +10,7 @@
+ #include <sstream>
+ #include <algorithm>
+ #include <iostream>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+
+ #include <ctime>
+
+diff --git a/hardware/KMTronicSerial.cpp b/hardware/KMTronicSerial.cpp
+index 4e07f2c37a..6240f941bd 100644
+--- a/hardware/KMTronicSerial.cpp
++++ b/hardware/KMTronicSerial.cpp
+@@ -10,12 +10,14 @@
+ #include <string>
+ #include <algorithm>
+ #include <iostream>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include <boost/exception/diagnostic_information.hpp>
+ #include <ctime>
+
+ //#define DEBUG_KMTronic
+
++using namespace boost::placeholders;
++
+ #define RETRY_DELAY 30
+
+ KMTronicSerial::KMTronicSerial(const int ID, const std::string& devname)
+diff --git a/hardware/MQTT.cpp b/hardware/MQTT.cpp
+index 8de3671853..19750bb75b 100644
--- a/hardware/MQTT.cpp
+++ b/hardware/MQTT.cpp
-@@ -18,6 +18,8 @@
- #define TOPIC_IN "domoticz/in"
- #define QOS 1
+@@ -11,6 +11,8 @@
+ #define __STDC_FORMAT_MACROS
+ #include <inttypes.h>
+
++using namespace boost::placeholders;
++
+ #define RETRY_DELAY 30
+
+ #define CLIENTID "Domoticz"
+diff --git a/hardware/Meteostick.cpp b/hardware/Meteostick.cpp
+index 9793f4b57b..10da69d6e3 100644
+--- a/hardware/Meteostick.cpp
++++ b/hardware/Meteostick.cpp
+@@ -9,12 +9,14 @@
+ #include <string>
+ #include <algorithm>
+ #include <iostream>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include "../main/localtime_r.h"
+ #include "../main/mainworker.h"
+
+ #include <ctime>
-+using namespace std::placeholders;
++using namespace boost::placeholders;
+
- const char* szTLSVersions[3] =
+ #define RETRY_DELAY 30
+
+ #define round(a) ( int ) ( a + .5 )
+diff --git a/hardware/MySensorsBase.cpp b/hardware/MySensorsBase.cpp
+index af976fba95..42bf58fad5 100644
+--- a/hardware/MySensorsBase.cpp
++++ b/hardware/MySensorsBase.cpp
+@@ -13,7 +13,7 @@
+ #include <sstream>
+ #include <algorithm>
+ #include <iostream>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include "../webserver/cWebem.h"
+ #include <json/json.h>
+
+diff --git a/hardware/MySensorsSerial.cpp b/hardware/MySensorsSerial.cpp
+index 44f8692d2b..42f3e05409 100644
+--- a/hardware/MySensorsSerial.cpp
++++ b/hardware/MySensorsSerial.cpp
+@@ -8,12 +8,14 @@
+ #include "hardwaretypes.h"
+
+ #include <algorithm>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include <boost/exception/diagnostic_information.hpp>
+ #include <ctime>
+ #include <iostream>
+ #include <string>
+
++using namespace boost::placeholders;
++
+ //#define DEBUG_MYSENSORS
+
+ #define RETRY_DELAY 30
+diff --git a/hardware/OTGWBase.cpp b/hardware/OTGWBase.cpp
+index 322574458b..ded3a31c2c 100644
+--- a/hardware/OTGWBase.cpp
++++ b/hardware/OTGWBase.cpp
+@@ -12,7 +12,7 @@
+ #include <string>
+ #include <algorithm>
+ #include <iostream>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include <json/json.h>
+
+ #include <ctime>
+diff --git a/hardware/OTGWSerial.cpp b/hardware/OTGWSerial.cpp
+index 4ade70e063..5a3416548f 100644
+--- a/hardware/OTGWSerial.cpp
++++ b/hardware/OTGWSerial.cpp
+@@ -8,12 +8,14 @@
+ #include "../main/localtime_r.h"
+
+ #include <algorithm>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include <boost/exception/diagnostic_information.hpp>
+ #include <ctime>
+ #include <iostream>
+ #include <string>
+
++using namespace boost::placeholders;
++
+ #define RETRY_DELAY 30
+ #define OTGW_READ_INTERVAL 10
+
+diff --git a/hardware/OpenWebNetUSB.cpp b/hardware/OpenWebNetUSB.cpp
+index bf23049844..352a2220e9 100644
+--- a/hardware/OpenWebNetUSB.cpp
++++ b/hardware/OpenWebNetUSB.cpp
+@@ -19,11 +19,12 @@ License: Public domain
+
+ #include <algorithm>
+ #include <ctime>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include <boost/exception/diagnostic_information.hpp>
+ #include <iostream>
+ #include <string>
+
++using namespace boost::placeholders;
+
+ COpenWebNetUSB::COpenWebNetUSB(const int ID, const std::string& devname, unsigned int baud_rate)
{
- "tlsv1",
-@@ -133,8 +135,8 @@ void MQTT::on_connect(int rc)
- _log.Log(LOG_STATUS, "MQTT: connected to: %s:%d", m_szIPAddress.c_str(), m_usIPPort);
- m_IsConnected = true;
- sOnConnected(this);
-- m_sDeviceReceivedConnection = m_mainworker.sOnDeviceReceived.connect(boost::bind(&MQTT::SendDeviceInfo, this, _1, _2, _3, _4));
-- m_sSwitchSceneConnection = m_mainworker.sOnSwitchScene.connect(boost::bind(&MQTT::SendSceneInfo, this, _1, _2));
-+ m_sDeviceReceivedConnection = m_mainworker.sOnDeviceReceived.connect(std::bind(&MQTT::SendDeviceInfo, this, _1, _2, _3, _4));
-+ m_sSwitchSceneConnection = m_mainworker.sOnSwitchScene.connect(std::bind(&MQTT::SendSceneInfo, this, _1, _2));
- }
- subscribe(NULL, m_TopicIn.c_str());
- }
+diff --git a/hardware/P1MeterSerial.cpp b/hardware/P1MeterSerial.cpp
+index 566b451fa5..7dc3e0782e 100644
+--- a/hardware/P1MeterSerial.cpp
++++ b/hardware/P1MeterSerial.cpp
+@@ -14,10 +14,12 @@
+ #include <string>
+ #include <algorithm>
+ #include <iostream>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+
+ #include <ctime>
+
++using namespace boost::placeholders;
++
+ #ifdef _DEBUG
+ //#define DEBUG_P1_R
+ #endif
+diff --git a/hardware/Pinger.cpp b/hardware/Pinger.cpp
+index d3e2fda942..b6dc78a786 100644
--- a/hardware/Pinger.cpp
+++ b/hardware/Pinger.cpp
-@@ -25,6 +25,8 @@
- #define GET_IO_SERVICE(s) ((s).get_io_service())
- #endif
+@@ -19,6 +19,8 @@
+
+ #include <iostream>
-+using namespace std::placeholders;
++using namespace boost::placeholders;
+
- class pinger
- : private domoticz::noncopyable
- {
-@@ -87,7 +89,7 @@ private:
- }
- else
- {
-- timer_.async_wait(boost::bind(&pinger::start_send, this));
-+ timer_.async_wait(std::bind(&pinger::start_send, this));
- }
- }
- }
-@@ -100,7 +102,7 @@ private:
-
- // Wait for a reply. We prepare the buffer to receive up to 64KB.
- socket_.async_receive(reply_buffer_.prepare(65536),
-- boost::bind(&pinger::handle_receive, this, _2));
-+ std::bind(&pinger::handle_receive, this, _2));
- }
-
- void handle_receive(std::size_t length)
-@@ -384,7 +386,7 @@ void CPinger::DoPingHosts()
- if (m_iThreadsRunning < 1000)
- {
- //m_iThreadsRunning++;
-- boost::thread t(boost::bind(&CPinger::Do_Ping_Worker, this, *itt));
-+ boost::thread t(std::bind(&CPinger::Do_Ping_Worker, this, *itt));
- SetThreadName(t.native_handle(), "PingerWorker");
- t.join();
- }
+ #if BOOST_VERSION >= 107000
+ #define GET_IO_SERVICE(s) ((boost::asio::io_context&)(s).get_executor().context())
+ #else
+diff --git a/hardware/RAVEn.cpp b/hardware/RAVEn.cpp
+index d9efc7480a..b6a4399d04 100644
--- a/hardware/RAVEn.cpp
+++ b/hardware/RAVEn.cpp
-@@ -11,6 +11,8 @@
- //Rainforest RAVEn USB ZigBee Smart Meter Adapter
- //https://rainforestautomation.com/rfa-z106-raven/
+@@ -8,6 +8,8 @@
+ #include "../tinyxpath/tinyxml.h"
+ #include "hardwaretypes.h"
-+using namespace std::placeholders;
++using namespace boost::placeholders;
+
- RAVEn::RAVEn(const int ID, const std::string& devname)
- : device_(devname), m_wptr(m_buffer), m_currUsage(0), m_totalUsage(0)
- {
-@@ -46,7 +48,7 @@ bool RAVEn::StartHardware()
- _log.Log(LOG_ERROR, "RAVEn: Error opening serial port!!!");
- return false;
- }
-- setReadCallback(boost::bind(&RAVEn::readCallback, this, _1, _2));
-+ setReadCallback(std::bind(&RAVEn::readCallback, this, _1, _2));
- m_bIsStarted = true;
- sOnConnected(this);
+ //Rainforest RAVEn USB ZigBee Smart Meter Adapter
+ //https://rainforestautomation.com/rfa-z106-raven/
+diff --git a/hardware/RFLinkSerial.cpp b/hardware/RFLinkSerial.cpp
+index c5cae0f739..4ab07ed88e 100644
--- a/hardware/RFLinkSerial.cpp
+++ b/hardware/RFLinkSerial.cpp
@@ -5,6 +5,8 @@
#include "../main/localtime_r.h"
#include <boost/exception/diagnostic_information.hpp>
-+using namespace std::placeholders;
++using namespace boost::placeholders;
+
CRFLinkSerial::CRFLinkSerial(const int ID, const std::string& devname) :
m_szSerialPort(devname)
{
-@@ -181,7 +183,7 @@ bool CRFLinkSerial::OpenSerialDevice()
- m_rfbufferpos = 0;
- m_LastReceivedTime = mytime(NULL);
+diff --git a/hardware/RFXComSerial.cpp b/hardware/RFXComSerial.cpp
+index dc85f4832d..4c39520510 100644
+--- a/hardware/RFXComSerial.cpp
++++ b/hardware/RFXComSerial.cpp
+@@ -12,7 +12,7 @@
+ #include <string>
+ #include <algorithm>
+ #include <iostream>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+
+ #include <ctime>
+
+@@ -23,6 +23,8 @@
+ #include <pwd.h>
+ #endif
-- setReadCallback(boost::bind(&CRFLinkSerial::readCallback, this, _1, _2));
-+ setReadCallback(std::bind(&CRFLinkSerial::readCallback, this, _1, _2));
- sOnConnected(this);
++using namespace boost::placeholders;
++
+ #define RETRY_DELAY 30
+
+ #define RFX_WRITE_DELAY 300
+diff --git a/hardware/RFXComTCP.cpp b/hardware/RFXComTCP.cpp
+index 7c6b3954b8..0e4856fbfb 100644
+--- a/hardware/RFXComTCP.cpp
++++ b/hardware/RFXComTCP.cpp
+@@ -1,8 +1,6 @@
+ #include "stdafx.h"
+ #include "RFXComTCP.h"
+ #include "../main/Logger.h"
+-//#include <boost/bind.hpp>
+-//#include <boost/asio.hpp>
+ #include "../main/Helper.h"
+ #include "../main/localtime_r.h"
+ #include "../main/mainworker.h"
+diff --git a/hardware/Rego6XXSerial.cpp b/hardware/Rego6XXSerial.cpp
+index b94bd291bc..15d22f869a 100644
+--- a/hardware/Rego6XXSerial.cpp
++++ b/hardware/Rego6XXSerial.cpp
+@@ -16,11 +16,13 @@
+ #include <string>
+ #include <algorithm>
+ #include <iostream>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include "hardwaretypes.h"
+
+ #include <ctime>
+
++using namespace boost::placeholders;
++
+ #define Rego6XX_RETRY_DELAY 30
+ #define Rego6XX_COMMAND_DELAY 5
+ #define Rego6XX_READ_BUFFER_MASK (Rego6XX_READ_BUFFER_SIZE - 1)
+diff --git a/hardware/S0MeterBase.cpp b/hardware/S0MeterBase.cpp
+index 9cffa67022..75a06e2cc1 100644
+--- a/hardware/S0MeterBase.cpp
++++ b/hardware/S0MeterBase.cpp
+@@ -13,7 +13,7 @@
+ #include <string>
+ #include <algorithm>
+ #include <iostream>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+
+ #include <ctime>
+
+diff --git a/hardware/S0MeterSerial.cpp b/hardware/S0MeterSerial.cpp
+index 1dc16b2b3e..f474d1c766 100644
+--- a/hardware/S0MeterSerial.cpp
++++ b/hardware/S0MeterSerial.cpp
+@@ -8,11 +8,13 @@
+
+ #include <algorithm>
+ #include <ctime>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include <boost/exception/diagnostic_information.hpp>
+ #include <iostream>
+ #include <string>
- return true;
++using namespace boost::placeholders;
++
+ #ifdef _DEBUG
+ //#define DEBUG_S0
+ #define TOT_DEBUG_LINES 6
+diff --git a/hardware/TCPProxy/tcpproxy_server.cpp b/hardware/TCPProxy/tcpproxy_server.cpp
+index 60445d9c28..82ba3559d9 100644
--- a/hardware/TCPProxy/tcpproxy_server.cpp
+++ b/hardware/TCPProxy/tcpproxy_server.cpp
-@@ -21,6 +21,8 @@
- #define GET_IO_SERVICE(s) ((s).get_io_service())
- #endif
+@@ -15,6 +15,8 @@
+ #include "stdafx.h"
+ #include "tcpproxy_server.h"
-+using namespace std::placeholders;
++using namespace boost::placeholders;
+
- namespace tcp_proxy
- {
- bridge::bridge(boost::asio::io_service& ios)
-@@ -186,8 +188,8 @@ namespace tcp_proxy
- session_ = std::shared_ptr<bridge>(
- new bridge(io_service_)
- );
-- session_->sDownstreamData.connect( boost::bind( &acceptor::OnDownstreamData, this, _1, _2 ) );
-- session_->sUpstreamData.connect( boost::bind( &acceptor::OnUpstreamData, this, _1, _2 ) );
-+ session_->sDownstreamData.connect( std::bind( &acceptor::OnDownstreamData, this, _1, _2 ) );
-+ session_->sUpstreamData.connect( std::bind( &acceptor::OnUpstreamData, this, _1, _2 ) );
-
- acceptor_.async_accept(session_->downstream_socket(),
- boost::bind(&acceptor::handle_accept,
---- a/hardware/ZiBlueSerial.cpp
-+++ b/hardware/ZiBlueSerial.cpp
-@@ -8,6 +8,8 @@
+ #if BOOST_VERSION >= 107000
+ #define GET_IO_SERVICE(s) ((boost::asio::io_context&)(s).get_executor().context())
+ #else
+diff --git a/hardware/TeleinfoSerial.cpp b/hardware/TeleinfoSerial.cpp
+index 85f9a6240f..fa794802e9 100644
+--- a/hardware/TeleinfoSerial.cpp
++++ b/hardware/TeleinfoSerial.cpp
+@@ -28,9 +28,11 @@ History :
+ #include "../main/localtime_r.h"
+ #include "../main/Logger.h"
- #define ZiBlue_RETRY_DELAY 30
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include <boost/exception/diagnostic_information.hpp>
-+using namespace std::placeholders;
++using namespace boost::placeholders;
+
- CZiBlueSerial::CZiBlueSerial(const int ID, const std::string& devname) :
- m_szSerialPort(devname)
+ CTeleinfoSerial::CTeleinfoSerial(const int ID, const std::string& devname, const int datatimeout, unsigned int baud_rate, const bool disable_crc, const int ratelimit)
{
-@@ -136,7 +138,7 @@ bool CZiBlueSerial::OpenSerialDevice()
- m_rfbufferpos = 0;
- m_LastReceivedTime = mytime(NULL);
+ m_HwdID = ID;
+diff --git a/hardware/USBtin.cpp b/hardware/USBtin.cpp
+index c3e3656319..ce6f542df3 100644
+--- a/hardware/USBtin.cpp
++++ b/hardware/USBtin.cpp
+@@ -27,7 +27,7 @@ History :
+ #include "../main/SQLHelper.h"
+
+ #include <algorithm>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include <boost/exception/diagnostic_information.hpp>
+ #include <cstdlib>
+ #include <ctime>
+@@ -35,6 +35,8 @@ History :
+ #include <string>
+ #include <time.h>
-- setReadCallback(boost::bind(&CZiBlueSerial::readCallback, this, _1, _2));
-+ setReadCallback(std::bind(&CZiBlueSerial::readCallback, this, _1, _2));
++using namespace boost::placeholders;
++
+ #define USBTIN_BAUD_RATE 115200
+ #define USBTIN_PARITY boost::asio::serial_port_base::parity::none
+ #define USBTIN_CARACTER_SIZE 8
+diff --git a/hardware/XiaomiGateway.cpp b/hardware/XiaomiGateway.cpp
+index f4567ec62f..e4998faa6a 100644
+--- a/hardware/XiaomiGateway.cpp
++++ b/hardware/XiaomiGateway.cpp
+@@ -12,7 +12,7 @@
+ #include "XiaomiHardware.h"
+ #include <openssl/aes.h>
+ #include <boost/asio.hpp>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+
+ #ifndef WIN32
+ #include <ifaddrs.h>
+diff --git a/hardware/Yeelight.h b/hardware/Yeelight.h
+index b063f79743..64fd6f5479 100644
+--- a/hardware/Yeelight.h
++++ b/hardware/Yeelight.h
+@@ -2,7 +2,6 @@
+
+ #include "DomoticzHardware.h"
+ #include <boost/asio.hpp>
+-#include <boost/bind.hpp>
+
+ class Yeelight : public CDomoticzHardwareBase
+ {
+diff --git a/hardware/ZiBlueSerial.cpp b/hardware/ZiBlueSerial.cpp
+index 9e9db2aff1..8e896897fc 100644
+--- a/hardware/ZiBlueSerial.cpp
++++ b/hardware/ZiBlueSerial.cpp
+@@ -6,6 +6,8 @@
- sOnConnected(this);
+ #include <boost/exception/diagnostic_information.hpp>
++using namespace boost::placeholders;
++
+ #define ZiBlue_RETRY_DELAY 30
+
+ CZiBlueSerial::CZiBlueSerial(const int ID, const std::string& devname) :
+diff --git a/hardware/plugins/PluginTransports.cpp b/hardware/plugins/PluginTransports.cpp
+index c7e065529f..7fc1cb953e 100644
--- a/hardware/plugins/PluginTransports.cpp
+++ b/hardware/plugins/PluginTransports.cpp
@@ -13,6 +13,8 @@
#include "icmp_header.hpp"
#include "ipv4_header.hpp"
-+using namespace std::placeholders;
++using namespace boost::placeholders;
+
namespace Plugins {
void CPluginTransport::handleRead(const boost::system::error_code& e, std::size_t bytes_transferred)
-@@ -972,7 +974,7 @@ namespace Plugins {
- if (m_bConnected)
- {
- pPlugin->MessagePlugin(new onConnectCallback(pPlugin, m_pConnection, 0, "SerialPort " + m_Port + " opened successfully."));
-- setReadCallback(boost::bind(&CPluginTransportSerial::handleRead, this, _1, _2));
-+ setReadCallback(std::bind(&CPluginTransportSerial::handleRead, this, _1, _2));
- }
- else
- {
+diff --git a/main/WebServer.cpp b/main/WebServer.cpp
+index 0a19319669..ed92f06e32 100644
+--- a/main/WebServer.cpp
++++ b/main/WebServer.cpp
+@@ -1,7 +1,7 @@
+ #include "stdafx.h"
+ #include "WebServer.h"
+ #include "WebServerHelper.h"
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include <iostream>
+ #include <fstream>
+ #include "mainworker.h"
+@@ -65,6 +65,8 @@
+ #define __STDC_FORMAT_MACROS
+ #include <inttypes.h>
+
++using namespace boost::placeholders;
++
+ #define round(a) ( int ) ( a + .5 )
+
+ extern std::string szStartupFolder;
+diff --git a/main/mainworker.cpp b/main/mainworker.cpp
+index 505f59f49d..5fb2ee9042 100644
+--- a/main/mainworker.cpp
++++ b/main/mainworker.cpp
+@@ -174,6 +174,8 @@
+ #include <fstream>
+ #endif
+
++using namespace boost::placeholders;
++
+ #define round(a) ( int ) ( a + .5 )
+
+ extern std::string szStartupFolder;
+diff --git a/push/FibaroPush.cpp b/push/FibaroPush.cpp
+index 0bc54e6cfd..350a8fa893 100644
--- a/push/FibaroPush.cpp
+++ b/push/FibaroPush.cpp
@@ -14,6 +14,8 @@
#define __STDC_FORMAT_MACROS
#include <inttypes.h>
-+using namespace std::placeholders;
++using namespace boost::placeholders;
+
CFibaroPush::CFibaroPush()
{
- m_bLinkActive = false;
-@@ -22,7 +24,7 @@ CFibaroPush::CFibaroPush()
- void CFibaroPush::Start()
- {
- UpdateActive();
-- m_sConnection = m_mainworker.sOnDeviceReceived.connect(boost::bind(&CFibaroPush::OnDeviceReceived, this, _1, _2, _3, _4));
-+ m_sConnection = m_mainworker.sOnDeviceReceived.connect(std::bind(&CFibaroPush::OnDeviceReceived, this, _1, _2, _3, _4));
- }
-
- void CFibaroPush::Stop()
-@@ -400,4 +402,4 @@ namespace http {
- root["title"] = "DeleteFibaroLink";
- }
- }
--}
-\ No newline at end of file
-+}
+ m_PushType = PushType::PUSHTYPE_FIBARO;
+diff --git a/push/GooglePubSubPush.cpp b/push/GooglePubSubPush.cpp
+index 6d0fc82d40..a5b720f219 100644
--- a/push/GooglePubSubPush.cpp
+++ b/push/GooglePubSubPush.cpp
@@ -21,6 +21,8 @@ extern "C" {
#include <boost/python.hpp>
#endif
-+using namespace std::placeholders;
++using namespace boost::placeholders;
+
extern std::string szUserDataFolder;
// this should be filled in by the preprocessor
-@@ -38,7 +40,7 @@ CGooglePubSubPush::CGooglePubSubPush()
- void CGooglePubSubPush::Start()
- {
- UpdateActive();
-- m_sConnection = m_mainworker.sOnDeviceReceived.connect(boost::bind(&CGooglePubSubPush::OnDeviceReceived, this, _1, _2, _3, _4));
-+ m_sConnection = m_mainworker.sOnDeviceReceived.connect(std::bind(&CGooglePubSubPush::OnDeviceReceived, this, _1, _2, _3, _4));
- }
-
- void CGooglePubSubPush::Stop()
+diff --git a/push/HttpPush.cpp b/push/HttpPush.cpp
+index 8132ca2b43..3d1d51d52e 100644
--- a/push/HttpPush.cpp
+++ b/push/HttpPush.cpp
@@ -15,6 +15,8 @@
#define __STDC_FORMAT_MACROS
#include <inttypes.h>
-+using namespace std::placeholders;
++using namespace boost::placeholders;
+
CHttpPush::CHttpPush()
{
- m_bLinkActive = false;
-@@ -23,7 +25,7 @@ CHttpPush::CHttpPush()
- void CHttpPush::Start()
- {
- UpdateActive();
-- m_sConnection = m_mainworker.sOnDeviceReceived.connect(boost::bind(&CHttpPush::OnDeviceReceived, this, _1, _2, _3, _4));
-+ m_sConnection = m_mainworker.sOnDeviceReceived.connect(std::bind(&CHttpPush::OnDeviceReceived, this, _1, _2, _3, _4));
- }
-
- void CHttpPush::Stop()
+ m_PushType = PushType::PUSHTYPE_HTTP;
+diff --git a/push/InfluxPush.cpp b/push/InfluxPush.cpp
+index 0a8e99414f..745fdf0496 100644
--- a/push/InfluxPush.cpp
+++ b/push/InfluxPush.cpp
@@ -15,6 +15,8 @@
#define __STDC_FORMAT_MACROS
#include <inttypes.h>
-+using namespace std::placeholders;
++using namespace boost::placeholders;
+
CInfluxPush::CInfluxPush() :
m_InfluxPort(8086),
m_bInfluxDebugActive(false)
-@@ -33,7 +35,7 @@ bool CInfluxPush::Start()
- m_thread = std::make_shared<std::thread>(&CInfluxPush::Do_Work, this);
- SetThreadName(m_thread->native_handle(), "InfluxPush");
-
-- m_sConnection = m_mainworker.sOnDeviceReceived.connect(boost::bind(&CInfluxPush::OnDeviceReceived, this, _1, _2, _3, _4));
-+ m_sConnection = m_mainworker.sOnDeviceReceived.connect(std::bind(&CInfluxPush::OnDeviceReceived, this, _1, _2, _3, _4));
-
- return (m_thread != NULL);
- }
+diff --git a/push/WebsocketPush.cpp b/push/WebsocketPush.cpp
+index 0fb71f96ec..3c2ce7ed54 100644
--- a/push/WebsocketPush.cpp
+++ b/push/WebsocketPush.cpp
@@ -3,6 +3,8 @@
#include "../webserver/WebsocketHandler.h"
#include "../main/mainworker.h"
-+using namespace std::placeholders;
++using namespace boost::placeholders;
+
extern boost::signals2::signal<void(const std::string &Subject, const std::string &Text, const std::string &ExtraData, const int Priority, const std::string & Sound, const bool bFromNotification)> sOnNotificationReceived;
-@@ -19,9 +21,9 @@ void CWebSocketPush::Start()
- if (isStarted) {
- return;
- }
-- m_sConnection = m_mainworker.sOnDeviceReceived.connect(boost::bind(&CWebSocketPush::OnDeviceReceived, this, _1, _2, _3, _4));
-- m_sNotification = sOnNotificationReceived.connect(boost::bind(&CWebSocketPush::OnNotificationReceived, this, _1, _2, _3, _4, _5, _6));
-- m_sSceneChanged = m_mainworker.sOnSwitchScene.connect(boost::bind(&CWebSocketPush::OnSceneChange, this, _1, _2));
-+ m_sConnection = m_mainworker.sOnDeviceReceived.connect(std::bind(&CWebSocketPush::OnDeviceReceived, this, _1, _2, _3, _4));
-+ m_sNotification = sOnNotificationReceived.connect(std::bind(&CWebSocketPush::OnNotificationReceived, this, _1, _2, _3, _4, _5, _6));
-+ m_sSceneChanged = m_mainworker.sOnSwitchScene.connect(std::bind(&CWebSocketPush::OnSceneChange, this, _1, _2));
- isStarted = true;
- }
+diff --git a/tcpserver/TCPServer.cpp b/tcpserver/TCPServer.cpp
+index d3b0a94847..3b8d0b9b76 100644
+--- a/tcpserver/TCPServer.cpp
++++ b/tcpserver/TCPServer.cpp
+@@ -11,7 +11,7 @@
+ #include "../main/localtime_r.h"
+ #include <boost/asio.hpp>
+ #include <algorithm>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+
+ namespace tcp {
+ namespace server {
+diff --git a/webserver/cWebem.cpp b/webserver/cWebem.cpp
+index f015be097f..63c96f789f 100644
+--- a/webserver/cWebem.cpp
++++ b/webserver/cWebem.cpp
+@@ -5,7 +5,7 @@
+ //Modified, extended etc by Robbert E. Peters/RTSS B.V.
+ #include "stdafx.h"
+ #include "cWebem.h"
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include "reply.hpp"
+ #include "request.hpp"
+ #include "mime_types.hpp"
+diff --git a/webserver/connection.cpp b/webserver/connection.cpp
+index d3485fe923..afe700e5d7 100644
+--- a/webserver/connection.cpp
++++ b/webserver/connection.cpp
+@@ -9,7 +9,7 @@
+ //
+ #include "stdafx.h"
+ #include "connection.hpp"
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include <boost/algorithm/string.hpp>
+ #include "connection_manager.hpp"
+ #include "request_handler.hpp"
+@@ -17,6 +17,8 @@
+ #include "../main/localtime_r.h"
+ #include "../main/Logger.h"
+
++using namespace boost::placeholders;
++
+ namespace http {
+ namespace server {
+ extern std::string convert_to_http_date(time_t time);
+diff --git a/webserver/connection_manager.cpp b/webserver/connection_manager.cpp
+index b6c20de53f..bf1d9882d0 100644
+--- a/webserver/connection_manager.cpp
++++ b/webserver/connection_manager.cpp
+@@ -10,10 +10,12 @@
+ #include "stdafx.h"
+ #include "connection_manager.hpp"
+ #include <algorithm>
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include <iostream>
+ #include "../main/Logger.h"
+
++using namespace boost::placeholders;
++
+ namespace http {
+ namespace server {
+diff --git a/webserver/proxyclient.cpp b/webserver/proxyclient.cpp
+index c2bcd3178f..423ee0fb4b 100644
--- a/webserver/proxyclient.cpp
+++ b/webserver/proxyclient.cpp
-@@ -19,6 +19,8 @@
-
- extern std::string szAppVersion;
+@@ -8,6 +8,8 @@
+ #include "../tcpserver/TCPServer.h"
+ #include "sha1.hpp"
-+using namespace std::placeholders;
++using namespace boost::placeholders;
+
- #define PROXY_TIMEOUT 60
- #define PONG "PONG"
+ // RK: some defines to make mydomoticz also work when openssl not compiled in
+ #ifdef WWW_ENABLE_SSL
+ #define PROXY_PORT 443
+diff --git a/webserver/server.cpp b/webserver/server.cpp
+index 1eb2137ef2..6025b1cdb5 100644
+--- a/webserver/server.cpp
++++ b/webserver/server.cpp
+@@ -3,7 +3,7 @@
+ // ~~~~~~~~~~
+ //
+ #include "stdafx.h"
+-#include <boost/bind.hpp>
++#include <boost/bind/bind.hpp>
+ #include "server.hpp"
+ #include <fstream>
+ #include "../main/Logger.h"
+@@ -11,6 +11,8 @@
+ #include "../main/localtime_r.h"
+ #include "../main/mainworker.h"
-@@ -349,7 +351,7 @@ namespace http {
- // todo: make a map of websocket connections. There can be more than one.
- // open new virtual websocket connection
- // todo: different request_url's can have different websocket handlers
-- websocket_handlers[pdu->m_requestid] = new CWebsocketHandler(m_pWebEm, boost::bind(&CProxyClient::WS_Write, this, pdu->m_requestid, _1));
-+ websocket_handlers[pdu->m_requestid] = new CWebsocketHandler(m_pWebEm, std::bind(&CProxyClient::WS_Write, this, pdu->m_requestid, _1));
- websocket_handlers[pdu->m_requestid]->Start();
- }
++using namespace boost::placeholders;
++
+ extern bool g_bIsWSL;
+ namespace http {