From 0b92c0a84a85abe1314d0b60f04cd585542dfa29 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 12 Mar 2020 21:34:12 +0100 Subject: [PATCH] fix updater and other things --- .../Sonoff_Basic/Arduino_ide_setting.png | Bin 0 -> 19577 bytes .../Sonoff_Basic_v4/Sonoff_Basic_v4.ino | 4 +- api.php | 29 +++++++------ app/class/DeviceManager.php | 2 +- app/class/NotificationManager.php | 4 +- app/controls/home.php | 5 ++- update.php | 41 +++++++++--------- 7 files changed, 42 insertions(+), 43 deletions(-) create mode 100644 _FIRMWARE/firmwares/Sonoff_Basic/Arduino_ide_setting.png diff --git a/_FIRMWARE/firmwares/Sonoff_Basic/Arduino_ide_setting.png b/_FIRMWARE/firmwares/Sonoff_Basic/Arduino_ide_setting.png new file mode 100644 index 0000000000000000000000000000000000000000..0e275f4a2d2acde9c0f9dad165480e312f64de14 GIT binary patch literal 19577 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 S#Q={BWAJqKb6Mw<&;$V4#W86B literal 0 HcmV?d00001 diff --git a/_FIRMWARE/firmwares/Sonoff_Basic/Sonoff_Basic_v4/Sonoff_Basic_v4/Sonoff_Basic_v4.ino b/_FIRMWARE/firmwares/Sonoff_Basic/Sonoff_Basic_v4/Sonoff_Basic_v4/Sonoff_Basic_v4.ino index e5a1fd9..5a5e2b8 100644 --- a/_FIRMWARE/firmwares/Sonoff_Basic/Sonoff_Basic_v4/Sonoff_Basic_v4/Sonoff_Basic_v4.ino +++ b/_FIRMWARE/firmwares/Sonoff_Basic/Sonoff_Basic_v4/Sonoff_Basic_v4/Sonoff_Basic_v4.ino @@ -98,20 +98,19 @@ void setup() { Serial.printf("HTTP_UPDATE_FAILD Error (%d): %s", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str()); Serial.println(); Serial.println(); - Serial.println(); break; case HTTP_UPDATE_NO_UPDATES: Serial.println("HTTP_UPDATE_NO_UPDATES"); Serial.println(); Serial.println(); + Serial.println(); break; case HTTP_UPDATE_OK: Serial.println("HTTP_UPDATE_OK"); Serial.println(); Serial.println(); - Serial.println(); break; } delay(500); @@ -214,7 +213,6 @@ void loadDataFromWeb() { } else if (requestState == "succes") { unsuccessfulRounds = 0; } - WiFi.hostname(hostName); } diff --git a/api.php b/api.php index 2d4800a..fa04edc 100644 --- a/api.php +++ b/api.php @@ -125,7 +125,7 @@ if (!DeviceManager::registeret($token)) { if (!SubDeviceManager::getSubDeviceByMaster($deviceId, $key)) { SubDeviceManager::create($deviceId, $key, UNITS[$key]); } - + if ($notificationData != []) { $subscribers = $notificationMng::getSubscription(); foreach ($subscribers as $key => $subscriber) { @@ -134,14 +134,14 @@ if (!DeviceManager::registeret($token)) { } } } - + //Notification for newly added Device $subscribers = $notificationMng::getSubscription(); foreach ($subscribers as $key => $subscriber) { $logManager->write("[NOTIFICATION] SENDING TO" . $subscriber['id'] . " ", LogRecordType::INFO); $notificationMng::sendSimpleNotification(SERVERKEY, $subscriber['token'], $notificationData); } - + header($_SERVER["SERVER_PROTOCOL"]." 401 Unauthorized"); echo json_encode(array( 'state' => 'unsuccess', @@ -164,14 +164,14 @@ if (!DeviceManager::approved($token)) { if ($settings != null || $settings != ""){ $data = ['mac' => $settings["network"]["mac"], 'ip_address' => $settings["network"]["ip"]]; if (array_key_exists("firmware_hash", $settings)) { - $data .= ['firmware_hash'=>$settings["firmware_hash"]]; + $data['firmware_hash'] = $settings["firmware_hash"]; } DeviceManager::editByToken($token, $data); } // Subdevices first data! if ($values != null || $values != "") { - + //ZAPIS $device = DeviceManager::getDeviceByToken($token); $deviceId = $device['device_id']; @@ -181,12 +181,12 @@ if ($values != null || $values != "") { } RecordManager::create($deviceId, $key, round($value['value'],3)); $logManager->write("[API] Device_ID " . $deviceId . " writed value " . $key . ' ' . $value['value'], LogRecordType::INFO); - + //notification if ($key == 'door' || $key == 'water') { $notificationMng = new NotificationManager; $notificationData = []; - + switch ($key) { case 'door': $notificationData = [ @@ -194,7 +194,7 @@ if ($values != null || $values != "") { 'body' => 'Someone just open up '.$device['name'], 'icon' => BASEDIR . '/app/templates/images/icon-192x192.png', ]; - + break; case 'water': $notificationData = [ @@ -214,9 +214,10 @@ if ($values != null || $values != "") { } } } - + $hostname = strtolower($device['name']); $hostname = str_replace(' ', '_', $hostname); + //upravit format na setings-> netvork etc $jsonAnswer = [ 'device' => [ 'hostname' => $hostname, @@ -226,7 +227,7 @@ if ($values != null || $values != "") { ], 'state' => 'succes', ]; - + $subDevicesTypeList = SubDeviceManager::getSubDeviceSTypeForMater($deviceId); if (!in_array($subDevicesTypeList, ['on/off', 'door', 'water'])) { $jsonAnswer['device']['sleepTime'] = $device['sleep_time']; @@ -237,21 +238,21 @@ if ($values != null || $values != "") { //Vypis $device = DeviceManager::getDeviceByToken($token); $deviceId = $device['device_id']; - + if (count(SubDeviceManager::getAllSubDevices($deviceId)) == 0) { SubDeviceManager::create($deviceId, 'on/off', UNITS[$key]); //RecordManager::create($deviceId, 'on/off', 0); } - + $subDeviceId = SubDeviceManager::getAllSubDevices($deviceId)[0]['subdevice_id']; $subDeviceLastReord = RecordManager::getLastRecord($subDeviceId); $subDeviceLastReordValue = $subDeviceLastReord['value']; - + if ($subDeviceLastReord['execuded'] == 0){ $logManager->write("[API] subDevice id ".$subDeviceId . " executed comand with value " .$subDeviceLastReordValue . " record id " . $subDeviceLastReord['record_id'] . " executed " . $subDeviceLastReord['execuded']); RecordManager::setExecuted($subDeviceLastReord['record_id']); } - + echo json_encode(array( 'device' => [ 'hostname' => $device['name'], diff --git a/app/class/DeviceManager.php b/app/class/DeviceManager.php index 6971bee..d7177b5 100644 --- a/app/class/DeviceManager.php +++ b/app/class/DeviceManager.php @@ -49,7 +49,7 @@ class DeviceManager{ public function editByToken ($token, $values = []) { try { - Db::edit ('devices', $values, 'WHERE token = ?', array($deviceId)); + Db::edit ('devices', $values, 'WHERE token = ?', array($token)); } catch(PDOException $error) { echo $error->getMessage(); die(); diff --git a/app/class/NotificationManager.php b/app/class/NotificationManager.php index 6f2d683..d33e488 100644 --- a/app/class/NotificationManager.php +++ b/app/class/NotificationManager.php @@ -16,8 +16,8 @@ class NotificationManager } } - function getSubscription(){ - return Db::loadAll('SELECT * FROM notifications;', array()); + function getSubscription () { + return Db::loadAll ("SELECT * FROM notifications"); } function sendSimpleNotification(string $serverKey, string $to, array $data, bool $timeStamp = false){ diff --git a/app/controls/home.php b/app/controls/home.php index d73da98..e569b24 100644 --- a/app/controls/home.php +++ b/app/controls/home.php @@ -7,8 +7,9 @@ if (isset($_POST) && !empty($_POST)){ $sleepTime = 0; if (isset($_FILES['deviceFirmware']) && isset($_FILES['deviceFirmware']['tmp_name']) && $_FILES['deviceFirmware']['tmp_name'] != "") { $file = $_FILES['deviceFirmware']; - $fileName = (isset ($_POST['deviceMac']) ? str_replace(":", "", $_POST['deviceMac']) . ".bin" : ""); - if (file_exists("./app/updater/" . $fileName)) { + $deviceMac = DeviceManager::getDeviceById($deviceId)['mac']; + $fileName = (isset ($deviceMac) && $deviceMac != "" ? str_replace(":", "", $deviceMac) . ".bin" : ""); + if ($fileName != "" && file_exists("./app/updater/" . $fileName)) { unlink("./app/updater/" . $fileName); } if ($fileName != "") { diff --git a/update.php b/update.php index b483dca..d1087ae 100644 --- a/update.php +++ b/update.php @@ -22,6 +22,10 @@ $files = array_diff($files, array( foreach($files as $file) { include './app/class/'. $file; } + +//DB Conector +Db::connect (DBHOST, DBUSER, DBPASS, DBNAME); + $logManager = new LogManager(); header('Content-type: text/plain; charset=utf8', true); @@ -52,33 +56,28 @@ function sendFile($path) $localBinary = "./app/updater/" . str_replace(':', '', $_SERVER['HTTP_X_ESP8266_STA_MAC']) . ".bin"; $logManager->write("[Updater] url: " . $localBinary, LogRecordType::INFO); $logManager->write("[Updater] version: " . $_SERVER['HTTP_X_ESP8266_SKETCH_MD5'], LogRecordType::INFO); - if (file_exists($localBinary)) { $logManager->write("[Updater] version PHP: " . md5_file($localBinary), LogRecordType::INFO); if ($_SERVER['HTTP_X_ESP8266_SKETCH_MD5'] != md5_file($localBinary)) { sendFile($localBinary); - //notification - $notificationMng = new NotificationManager; - $notificationData = [ - 'title' => 'Info', - 'body' => 'Someone device was just updated to new version', - 'icon' => BASEDIR . '/app/templates/images/icon-192x192.png', - ]; - - if ($notificationData != []) { - $subscribers = $notificationMng::getSubscription(); - foreach ($subscribers as $key => $subscriber) { - $logManager->write("[NOTIFICATION] SENDING TO" . $subscriber['id'] . " ", LogRecordType::INFO); - $notificationMng::sendSimpleNotification(SERVERKEY, $subscriber['token'], $notificationData); - } + $notificationMng = new NotificationManager; + $notificationData = [ + 'title' => 'Info', + 'body' => 'Someone device was just updated to new version', + 'icon' => BASEDIR . '/app/templates/images/icon-192x192.png', + ]; + if ($notificationData != []) { + $subscribers = $notificationMng->getSubscription(); + foreach ($subscribers as $key => $subscriber) { + $logManager->write("[NOTIFICATION] SENDING TO " . $subscriber['id'] . " ", LogRecordType::INFO); + $answer = $notificationMng->sendSimpleNotification(SERVERKEY, $subscriber['token'], $notificationData); } - } else { - header($_SERVER["SERVER_PROTOCOL"].' 304 Not Modified', true, 304); } } else { - header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); + header($_SERVER["SERVER_PROTOCOL"].' 304 Not Modified', true, 304); } - header($_SERVER["SERVER_PROTOCOL"].' 500 no version for ESP MAC', true, 500); - die(); - \ No newline at end of file +} else { + header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); +} +die();