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 0000000..0e275f4 Binary files /dev/null and b/_FIRMWARE/firmwares/Sonoff_Basic/Arduino_ide_setting.png differ 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();