ESP-Now UIFlow to Arduino
- 
					
					
					
					
 Dear All, I am trying to send a message using the EspNow blocks in UIFlow to an ESP32 running an Arduino program. The message is sent and received but I can't seem to get the data in the Arduino program it just returns '1' even though the length alters as I alter the data being sent. When I look at the Python code it is sending a string, so I think I'm asking how to convert a Python string into an Arduino string/character array. Sorry if this is a real newbie question. Blocky - Python code 
 def buttonA_wasPressed():
 global iCount
 espnow.send(id=1, data=str('HELLO!'))
 pass
 btnA.wasPressed(buttonA_wasPressed)Arduino ESP-Now receive code 
 void OnDataRecv(const uint8_t *mac_addr, const uint8_t *data, int data_len)
 {
 char macStr[18];
 char sData[data_len];snprintf(macStr, sizeof(macStr), "%02x:%02x:%02x:%02x:%02x:%02x", 
 mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
 Serial.print("Last Packet Recv from: "); Serial.println(macStr);
 Serial.print("Data Length: "); Serial.println(data_len);
 Serial.print("Last Packet Recv Data: "); Serial.println(*data);
 Serial.println("");
 }Arduino Output 
 11:39:37.342 -> Last Packet Recv from: d8:a0:1d:55:4b:38
 11:39:37.342 -> Data Length: 16
 11:39:37.342 -> Last Packet Recv Data: 1
 11:39:37.342 ->
- 
					
					
					
					
 Hey since you pass a pointer to the println-function and the cpu does not know what type of data is located at that position this behaviours seems normal. 
 In the example in the link they create a structure for the transmitted data. In the callback they copy the recieved data in this structure and later you can print exactly what you want:
 https://randomnerdtutorials.com/esp-now-esp32-arduino-ide/
- 
					
					
					
					
 Hi Lukas, Thank you for the link. I will see if I can use their method. I did find a solution that works. I noticed that the received data starting at index 11 was getting ASCII codes so I modified the Arduino code to construct a String starting from that position. The ESP-Now OnDataRecv callback now looks like this (the string construction is in bold). void OnDataRecv(const uint8_t *mac_addr, const uint8_t *data, int data_len) 
 {
 char macStr[18];String tData=""; 
 char Ascii[1];
 for(int i=10;i<data_len;i++)
 {
 tData+=(char)data[i];
 }snprintf(macStr, sizeof(macStr), "%02x:%02x:%02x:%02x:%02x:%02x", 
 mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);Serial.print("Last Packet Recv from: "); Serial.println(macStr); 
 Serial.print("Data Length: "); Serial.println(data_len);
 Serial.print("Last Packet Recv Data: '"); Serial.print(tData);
 Serial.println("'");
 }Arduino Output 13:38:11.806 -> Last Packet Recv from: d8:a0:1d:55:4b:38 
 13:38:11.806 -> Data Length: 22
 13:38:11.806 -> Last Packet Recv Data: 'Hello World!'
- 
					
					
					
					
 @xio1996 I was trying to do the same thing. I have some ESP01 relay controlers, which they work fine between them aand an ESP32 WROOM. I'm now trying to use a Core2 as a master, but I haven't been able to communicate with the ESP01. Do you have any example codes for Core5 in MicroPython? Thanks in advance 
 FBP
