4 Mayıs 2026 Pazartesi

Esp32 code example

Now you can set the connection password in the setup section using `uint32_t passkey = 123456;`, so that only those who know and match the password can connect.


      doc["ldr1"] = sensorValue1;

      doc["ldr2"] = String(map(analogRead(0), 0, 4095, 100, 0)) + "%";

If you want to send sensor data or information, you can easily establish an ESP32 phone connection by adding a tag like ["ldr1"] and saving it to your phone with that tag. You don't necessarily have to write ldr1; you can write dataA or data1.



        // Scenario 1: Simple On/Off (Standard Switch)

        if (value == "A") {

          digitalWrite(LED_PIN, HIGH);

          Serial.println("LED State: ON");

        }

        else if (value == "B") {

          digitalWrite(LED_PIN, LOW);

          Serial.println("LED State: OFF");

        }


Again, here you look at the tag you registered on your phone, and while it might say "A", you can enter a different tag. For example, I was only able to enter a tag with the size "aaa".


👉Google Play  It works perfectly with the app.Please support us🌟
Also check out other apps 📲.

// ------------------------------Example code -------------------------



#include <BLEDevice.h>

#include <BLEServer.h>

#include <BLEUtils.h>

#include <BLE2902.h>

#include <ArduinoJson.h>

#include <WiFi.h>


// --- BLE UUID Definitions ---

#define SERVICE_UUID "6E400001-B5A3-F393-E0A9-E50E24DCCA9E"

#define CHARACTERISTIC_UUID "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"


// Global Variables

BLECharacteristic *pCharacteristic;

bool deviceConnected = false;

unsigned long lastMillis = 0;


// WiFi & API Storage

String savedSSID = "";

String savedPassword = "";

String savedApiKey = "";


// Hardware Pin Definitions

int sensorPin = 0;

const int LED_PIN = 8;

const int PWM_PIN = 3;


// PWM Configuration (v3.0+ SDK Compatible)

const int freq = 5000;

const int resolution = 8;


// BLE Server Connection Callbacks

class MyServerCallbacks: public BLEServerCallbacks {

    void onConnect(BLEServer* pServer) {

      deviceConnected = true;

      Serial.println(">>> Device Connected");

    };

    void onDisconnect(BLEServer* pServer) {

      deviceConnected = false;

      Serial.println(">>> Device Disconnected");

      // Restart advertising to remain visible for authorized devices

      pServer->getAdvertising()->start(); 

    }

};


// BLE Characteristic Write Callbacks

class MyCallbacks: public BLECharacteristicCallbacks {

    void onWrite(BLECharacteristic *pCharacteristic) {

      String value = String(pCharacteristic->getValue().c_str());


      if (value.length() > 0) {

        Serial.print("Command Received: ");

        Serial.println(value);


        // Scenario 1: Simple On/Off (Standard Switch)

        if (value == "A") {

          digitalWrite(LED_PIN, HIGH);

          Serial.println("LED State: ON");

        }

        else if (value == "B") {

          digitalWrite(LED_PIN, LOW);

          Serial.println("LED State: OFF");

        }


        // Scenario 2: WiFi + API Key Setup

        // Expected Format: "WIFI:ssid:password:apikey"

        else if (value.startsWith("WIFI:")) {

          String payload = value.substring(5);


          int first = payload.indexOf(':');

          int second = payload.indexOf(':', first + 1);


          if (first == -1) {

            Serial.println("WIFI format error!");

            return;

          }


          savedSSID = payload.substring(0, first);

          savedPassword = payload.substring(first + 1, second != -1 ? second : payload.length());

          savedApiKey = second != -1 ? payload.substring(second + 1) : "";


          Serial.println("SSID: " + savedSSID);

          Serial.println("Password: " + savedPassword);

          Serial.println("API Key: " + savedApiKey);


          WiFi.begin(savedSSID.c_str(), savedPassword.c_str());

          Serial.print("Connecting to WiFi");


          int timeout = 0;

          while (WiFi.status() != WL_CONNECTED && timeout < 20) {

            delay(500);

            Serial.print(".");

            timeout++;

          }


          if (WiFi.status() == WL_CONNECTED) {

            String ip = WiFi.localIP().toString();

            Serial.println("\nWiFi Connected! IP: " + ip);

            pCharacteristic->setValue(("IP:" + ip).c_str());

            pCharacteristic->notify();

          } else {

            Serial.println("\nWiFi connection failed!");

            pCharacteristic->setValue("WIFI_FAIL");

            pCharacteristic->notify();

          }

        }


        // Scenario 3: PWM Control

        // Expected Format: "tag:value" — e.g., "ldr1:5"

        else if (value.indexOf(':') != -1) {

          int colonIndex = value.indexOf(':');

          String tag = value.substring(0, colonIndex);

          int val = value.substring(colonIndex + 1).toInt();


          if (tag == "ldr1") {

            int brightness = map(val, 0, 9, 0, 255);

            ledcWrite(PWM_PIN, brightness);

            Serial.printf("PWM Intensity set to: %d\n", brightness);

          }

        }

      }

    }

};


void setup() {

  Serial.begin(115200);

  pinMode(LED_PIN, OUTPUT);

  digitalWrite(LED_PIN, HIGH);


  ledcAttach(PWM_PIN, freq, resolution);


  // Initialize BLE Device

  BLEDevice::init("ESP32-C3-FIIX");


  // --- BLE SECURITY & STATIC PASSKEY CONFIGURATION ---

  // Enable MITM (Man-in-the-middle) protection and encryption

  BLEDevice::setEncryptionLevel(ESP_BLE_SEC_ENCRYPT_MITM);

  

  BLESecurity *pSecurity = new BLESecurity();

  pSecurity->setAuthenticationMode(ESP_LE_AUTH_BOND); // Save pairing bond on smartphone storage

  pSecurity->setCapability(ESP_IO_CAP_OUT);           // Triggers native OS numeric passkey prompt

  pSecurity->setInitEncryptionKey(ESP_BLE_ENC_KEY_MASK | ESP_BLE_ID_KEY_MASK);

  

  // Set 6-digit static passkey (Change it if needed)

  uint32_t passkey = 123456; 

  esp_ble_gap_set_security_param(ESP_BLE_SM_SET_STATIC_PASSKEY, &passkey, sizeof(uint32_t));

  // ---------------------------------------------------


  BLEServer *pServer = BLEDevice::createServer();

  pServer->setCallbacks(new MyServerCallbacks());


  BLEService *pService = pServer->createService(SERVICE_UUID);


  // --- ENCRYPT CHARACTERISTIC ACCESS PERMISSIONS ---

  // Restrict read/write operations to authenticated/paired devices only

  pCharacteristic = pService->createCharacteristic(

                        CHARACTERISTIC_UUID,

                        BLECharacteristic::PROPERTY_READ |

                        BLECharacteristic::PROPERTY_WRITE |

                        BLECharacteristic::PROPERTY_NOTIFY |

                        BLECharacteristic::PROPERTY_WRITE_NR

                      );

  pCharacteristic->setAccessPermissions(ESP_GATT_PERM_READ_ENCRYPTED | ESP_GATT_PERM_WRITE_ENCRYPTED);

  // ---------------------------------------------------


  pCharacteristic->setCallbacks(new MyCallbacks());

  pCharacteristic->addDescriptor(new BLE2902());


  pService->start();

  

  // Start advertising permanently under passkey protection

  pServer->getAdvertising()->start();

  Serial.println("BLE Ready with Passkey Security (123456)...");

}


void loop() {

  // Telemetry loop for sending JSON payloads to the app

  if (deviceConnected) {

    if (millis() - lastMillis > 2000) {


      int sensorValue1 = random(100, 1024);

      int sensorValue3 = random(100, 1024);

      String mockDataStr = "123456789123456789";


      StaticJsonDocument<128> doc;

      doc["ldr1"] = sensorValue1;

      doc["ldr2"] = String(map(analogRead(0), 0, 4095, 100, 0)) + "%";

      doc["ldr3"] = sensorValue3;

      doc["ldr4"] = mockDataStr;


      if (digitalRead(LED_PIN) == HIGH) {

        doc["aa"] = "OFF";

      } else {

        doc["aa"] = "ON";

      }


      char buffer[128];

      serializeJson(doc, buffer);


      pCharacteristic->setValue(buffer);

      pCharacteristic->notify();


      Serial.print("JSON Sent to App: ");

      Serial.println(buffer);


      lastMillis = millis();

    }

  }

}





Privacy Policy for ble control

 Last Updated: May 2, 2026

reddapp ("we," "our," or "us") operates the ble control mobile application (the "Service"). This page informs you of our policies regarding the collection, use, and disclosure of personal data when you use our Service and the choices you have associated with that data.

1. Information Collection and Use

We collect several different types of information for various purposes to provide and improve our Service to you.

Personal Data: While using our Service, we may ask you to provide us with certain personally identifiable information that can be used to contact or identify you ("Personal Data").

Usage Data: The app may collect information such as your device's IP address, device name, operating system version, and the time/date of your use.

Bluetooth & Local Files: This application requires access to your device’s Bluetooth to communicate with BLE devices (e.g., ESP32, BLE modules) and may require local storage access for saving your configurations.

Advertising ID: This "free" version of the app uses your device's advertising identifier to show personalized ads.

2. Third-Party Service Providers

The app uses third-party services that may collect information used to identify you. These include analytics, stability, and advertising services:

Google Play Services

AdMob: Used for displaying advertisements. AdMob may use the Advertising ID from your device to serve relevant ads. Google’s Privacy & Terms

Google Analytics for Firebase

Firebase Crashlytics

3. Advertising

We use third-party service providers to show advertisements to you to help support and maintain our Service.

AdMob by Google: Google, as a third-party vendor, uses cookies and advertising identifiers to serve ads on our Service. You may opt-out of personalized advertising by visiting your device's "Ads" settings.

4. Data Safety & Disclosure

We do not sell or share your personal data with third parties for marketing purposes. Data is only used to:

Facilitate the core functionality of the Bluetooth controller.

Show relevant advertisements via AdMob.

Analyze app performance and fix crashes.

5. Data Retention and Deletion

We retain your personal data only for as long as is necessary for the purposes set out in this Privacy Policy.

User Rights: You have the right to request the deletion of any data collected. Since we do not use a centralized user account system for this app, most data is stored locally on your device. You can clear this data by uninstalling the app or clearing the app cache. For any further data inquiries, contact us at rukosw@gmail.com.

6. Security

The security of your data is important to us, but remember that no method of transmission over the Internet is 100% secure. We strive to use commercially acceptable means to protect your Personal Data.

7. Children's Privacy

Our Service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from children under 13. If we discover that a child under 13 has provided us with personal information, we immediately delete this from our servers.

8. DIY Disclaimer

This is a "Do-It-Yourself" (DIY) application. The user assumes all responsibility for any hardware issues or accidents that may occur during the use of this software with real electronic components (relays, ESP32, BLE devices, etc.).

9. Changes to This Privacy Policy

We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page.

10. Contact Us

If you have any questions about this Privacy Policy, please contact us:

By email: rukosw@gmail.com

2 Mayıs 2026 Cumartesi

Privacy Policy for esp relay wifi controller free

 Last Updated: May 2, 2026

reddapp ("we," "our," or "us") operates the esp relay wifi controller free mobile application (the "Service"). This page informs you of our policies regarding the collection, use, and disclosure of personal data when you use our Service and the choices you have associated with that data.

1. Information Collection and Use

We collect several different types of information for various purposes to provide and improve our Service to you.

Personal Data: While using our Service, we may ask you to provide us with certain personally identifiable information that can be used to contact or identify you ("Personal Data").

Usage Data: The app may collect information such as your device's IP address, device name, operating system version, and the time/date of your use.

Local Network & Files: This application requires access to your local network (Wi-Fi) to communicate with ESP8266/ESP32 devices and may require local storage access for saving your configurations.

Advertising ID: This "free" version of the app uses your device's advertising identifier to show personalized ads.

2. Third-Party Service Providers

The app uses third-party services that may collect information used to identify you. These include analytics, stability, and advertising services:

Google Play Services

AdMob: Used for displaying advertisements. AdMob may use the Advertising ID from your device to serve relevant ads. Google’s Privacy & Terms

Google Analytics for Firebase

Firebase Crashlytics

3. Advertising

We use third-party service providers to show advertisements to you to help support and maintain our Service.

AdMob by Google: Google, as a third-party vendor, uses cookies and advertising identifiers to serve ads on our Service. You may opt-out of personalized advertising by visiting your device's "Ads" settings.

4. Data Safety & Disclosure

We do not sell or share your personal data with third parties for marketing purposes. Data is only used to:

Facilitate the core functionality of the Wi-Fi controller.

Show relevant advertisements via AdMob.

Analyze app performance and fix crashes.

5. Data Retention and Deletion

We retain your personal data only for as long as is necessary for the purposes set out in this Privacy Policy.

User Rights: You have the right to request the deletion of any data collected. Since we do not use a centralized user account system for this app, most data is stored locally on your device. You can clear this data by uninstalling the app or clearing the app cache. For any further data inquiries, contact us at rukosw@gmail.com.

6. Security

The security of your data is important to us, but remember that no method of transmission over the Internet is 100% secure. We strive to use commercially acceptable means to protect your Personal Data.

7. Children's Privacy

Our Service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from children under 13. If we discover that a child under 13 has provided us with personal information, we immediately delete this from our servers.

8. DIY Disclaimer

This is a "Do-It-Yourself" (DIY) application. The user assumes all responsibility for any hardware issues or accidents that may occur during the use of this software with real electronic components (relays, ESP8266, etc.).

9. Changes to This Privacy Policy

We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page.

10. Contact Us

If you have any questions about this Privacy Policy, please contact us:

By email: rukosw@gmail.com

27 Nisan 2026 Pazartesi

ESP8266 buttonfi firmware example

#include <ESP8266WiFi.h>

#include <ESP8266WebServer.h>


// Create web server object on port 80

ESP8266WebServer server(80);


// ===== Pin Definitions =====

// NodeMCU pins

const int PWM_PIN = 5; // PWM output (D1)

const int LED_PIN = 16; // LED output (D0)


// ===== WiFi Credentials =====

const char* ssid = "";

const char* password = "";


// ===== Network Configuration (Static IP) =====

IPAddress local_IP(192, 168, 0, 184);

IPAddress gateway(192, 168, 0, 1);

IPAddress subnet(255, 255, 255, 0);


// ===== Function Prototypes =====

void handleRoot();

void handleON();

void handleOFF();


void setup() {

  Serial.begin(115200);



/*

  // Configure static IP

  if (WiFi.config(local_IP, gateway, subnet)) {

    Serial.println("Static IP configured successfully");

  } else {

    Serial.println("Failed to configure Static IP");

  }


*/

  // Set pin modes

  pinMode(LED_PIN, OUTPUT);

  pinMode(PWM_PIN, OUTPUT);


  // Initialize PWM with 0 (off)

  analogWrite(PWM_PIN, 0);


  // Connect to WiFi

  WiFi.mode(WIFI_STA);

  WiFi.begin(ssid, password);


  Serial.print("Connecting to WiFi");

  while (WiFi.status() != WL_CONNECTED) {

    Serial.print(".");

    delay(500);

  }


  Serial.println("\nConnected!");

  Serial.print("IP Address: ");

  Serial.println(WiFi.localIP());


  // ===== Web Server Routes =====

  server.on("/", HTTP_GET, handleRoot); // Main endpoint

  server.on("/ON", handleON); // Turn LED ON

  server.on("/OFF", handleOFF); // Turn LED OFF


  // Start server

  server.begin();

  Serial.println("HTTP server started");

}


// ===== Root Handler =====

// Example: http://192.168.0.184/?data=5

void handleRoot() {

  String message = "Hello from ESP8266";


  // Check if URL contains "data" parameter

  if (server.hasArg("data")) {

    String data = server.arg("data");


    message = "Received value: " + data;


    // Convert received value to integer

    int value = data.toInt();


    // Scale value for PWM (0–1023 range for ESP8266)

    int pwmValue = value * 100;


    // Apply PWM to main pin

    analogWrite(PWM_PIN, pwmValue);


    // Debug output

    Serial.print("PWM Value: ");

    Serial.println(pwmValue);


    // Optional: apply to other pins (be careful with valid pins)

    analogWrite(0, pwmValue * 2);

    analogWrite(2, pwmValue * 5);

    analogWrite(3, pwmValue * 10);

  }


  // Send HTTP response

  server.send(200, "text/plain", message);

}


// ===== LED ON =====

void handleON() {

  digitalWrite(LED_PIN, HIGH);

  Serial.println("LED ON");

  server.send(200, "text/plain", "LED is ON");

}


// ===== LED OFF =====

void handleOFF() {

  digitalWrite(LED_PIN, LOW);

  Serial.println("LED OFF");

  server.send(200, "text/plain", "LED is OFF");

}


// ===== Main Loop =====

void loop() {

  // Handle incoming client requests

  server.handleClient();

}

19 Mart 2026 Perşembe

Privacy Policy

 Privacy Policy

Last updated: March 19, 2026

Shake Skip Music – Next Track ("we", "our", or "us") respects your privacy. This Privacy Policy explains how we handle information when you use our mobile application.

1. Information We Collect

We do not directly collect personally identifiable information. However, certain data may be collected automatically through third-party services.

🔹 Automatically Collected Information

Device information (device model, operating system)

App usage data

Crash logs and diagnostics

Advertising interaction data

2. Third-Party Services

📊 Firebase (by Google)

We use Firebase services, which may include:

Analytics (to understand app usage)

Crashlytics (to monitor and fix crashes)

Firebase may collect anonymized data to help improve app performance and user experience.

Learn more: https://firebase.google.com/support/privacy⁠�

📢 AdMob (by Google)

We use AdMob to display advertisements.

AdMob may:

Show personalized ads based on user interests

Use device identifiers

Use cookies or similar tracking technologies

Learn more: https://policies.google.com/privacy⁠�

3. How We Use Information

The collected data is used to:

Improve app performance and functionality

Detect and fix technical issues

Enhance user experience

Provide and optimize advertising

4. Data Sharing

We do not sell or rent your personal data.

However, data may be shared:

With service providers (such as Firebase and AdMob)

When required by law or legal processes

5. Children's Privacy

This application is not intended for children under the age of 13. We do not knowingly collect data from children.

6. Data Security

We take reasonable measures to protect your data. However, no method of transmission over the internet is 100% secure.

7. Your Choices

You can:

Disable personalized ads through your device settings

Manage your ad preferences via Google Ads settings

8. Changes to This Privacy Policy

We may update this Privacy Policy from time to time. Changes will be posted on this page.

9. Contact Us

If you have any questions or concerns, please contact us:

📧 Email: rukosw@gmail.com

17 Şubat 2026 Salı

Daily Note Sharing Server – Privacy Policy

Developer: redd app

redd app built the Daily Note Sharing Server application as a free application. This SERVICE is provided by redd app and is intended for use as is.

This page informs users about our policies regarding the collection, use, and disclosure of information when using our Service.

By using this Service, you agree to this Privacy Policy.

Information Collection and Use

The application does not collect, store, or share personal data directly.

However, the app displays advertisements provided by third-party advertising services, which may collect certain information automatically.

Advertising (AdMob)

This application uses Google AdMob to display advertisements.

AdMob may collect and use information such as:

Device identifiers (Advertising ID)

IP address

Approximate location

Interaction with ads

This data is used solely for advertising and analytics purposes in accordance with Google’s privacy policies.

You can review Google’s Privacy Policy here:

https://policies.google.com/privacy

Users may opt out of personalized ads through their device settings.

Log Data

In case of an application error, basic diagnostic information may be collected automatically by the operating system or advertising services. This data is used only to improve app stability.

Cookies

This Service does not use cookies directly.

However, third-party advertising libraries may use technologies similar to cookies to improve ad performance.

Service Providers

We may rely on third-party services solely for:

Displaying advertisements

Supporting app monetization

These third parties are obligated to use the data only for the purposes defined by their own privacy policies.

Security

We value user trust. While we take reasonable steps to ensure security, no method of transmission or storage is 100% secure.

Children’s Privacy

This application is not intended for children under the age of 13.

We do not knowingly collect personal data from children. If such data is discovered, it will be deleted immediately.

Changes to This Privacy Policy

This Privacy Policy may be updated from time to time. Changes take effect immediately after being posted on this page.

Contact Us

If you have any questions about this Privacy Policy, contact us at:

📧 rukosw@gmail.com