3

I want to connect an ESP32 to a SMA Sunny Boy SB5000-TL Solar convertor over Bluetooth, but I cannot establish a connection and I'm kind of stuck. I use the internal bluetooth module of the ESP32.

What I've done:

  • I started with this project: https://github.com/delhatch/ESP32_to_SMA but I did not get past the connection. I tried to locate the problem area:

  • I tried using an Android app (Oxley Solar) to connect to the SB5000-TL Solar convertor, and that works great. The pin code of the convertor is set to 0000.

  • I tried using two ESP32 modules, one as master, one as slave and that works as well, though I do not need to set a pin. So the bluetooth module of my ESP32 works properly.

So the problem must be in my code, I guess.

This is the code I use to connect to the convertor:

#include "BluetoothSerial.h"

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED) #error Bluetooth is not enabled! Please run make menuconfig to and enable it #endif

BluetoothSerial SerialBT; boolean confirmRequestPending = true;

// uint8_t ESP32Slave[6] = {0x84, 0xCC, 0xA8, 0x2C, 0x70, 0x1E}; // Address of Slave. uint8_t SMA[6] = {0x00, 0x40, 0x65, 0x12, 0x4B, 0x3E}; // Address of my SMA inverter. const char *pin = "0000"; //<- standard pin

void setup() { Serial.begin(115200); SerialBT.enableSSP(); SerialBT.onConfirmRequest(BTConfirmRequestCallback); SerialBT.onAuthComplete(BTAuthCompleteCallback); SerialBT.begin("ESP32master", true); //Bluetooth device name SerialBT.register_callback(callback); SerialBT.setPin("0000"); Serial.println("Connecting..."); bool connected = SerialBT.connect(SMA); if (connected) { Serial.println("Connected!"); } else { Serial.println("NOT Connected!"); } delay(500); SerialBT.end(); Serial.println("Bye!"); }

void loop() {

}

void callback(esp_spp_cb_event_t event, esp_spp_cb_param_t *param) { Serial.print("Got event!"); Serial.println(event); }

void BTConfirmRequestCallback(uint32_t numVal) { confirmRequestPending = true; Serial.println(numVal); }

void BTAuthCompleteCallback(boolean success) { confirmRequestPending = false; if (success) { Serial.println("Pairing success!!"); } else { Serial.println("Pairing failed, rejected by user!!"); } }

This is the result in the Serial console:

Connecting...
Got event!0
Got event!8
NOT Connected!
Got event!1
Bye!

I tried to replace the Mac Address with the name of the Convertor, I tried with and without pin.

I'm kind of stuck. Any idea's of how I can check what is wrong?

Is there any kind of scanner I can use to see what is happening with the app that works and what is (not) happening with my code?

Other ways to get more info/leads?
Could I use a Bluetooth sniffer or so (no experience) to find out what happens?

Any advice would be greatly appreciated!

mvermand
  • 427
  • 1
  • 6
  • 15

0 Answers0