#include #include #include "WiFi.h" #include "observations.h" #include #include const int timeBetweenBroadcasts = 150 * 1000; uint8_t broadcastAddress[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) { Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success 1" : "Delivery Fail 1"); if (status ==0){ Serial.println("Delivery Success 2"); } else{ Serial.println("Delivery fail 2"); } Serial.println(); } void setup() { // Seed random number generator randomSeed(analogRead(26)); // 2700451 // 5827809 Serial.begin(115200); Serial.println("Starting...\n"); // Set device as a Wi-Fi Station WiFi.mode(WIFI_STA); Serial.println(WiFi.macAddress()); // Init ESP-NOW if (esp_now_init() != ESP_OK) { Serial.println("Error initializing ESP-NOW"); for(;;) { delay(1); } // do not initialize wait forever } Serial.println("initialized ESP-NOW"); // Once ESPNow is successfully Init, we will register for Send CB to // get the status of Trasnmitted packet esp_now_register_send_cb(OnDataSent); // Register peer esp_now_peer_info_t peerInfo; memset(&peerInfo, 0, sizeof(peerInfo)); memcpy(peerInfo.peer_addr, broadcastAddress, 6); peerInfo.channel = 0; peerInfo.encrypt = false; // Add peer if (esp_now_add_peer(&peerInfo) != ESP_OK){ Serial.println("Failed to add peer"); for(;;) { delay(1); } // do not initialize wait forever } delay(10 * 1000); } float pickedObservation[observationFeatureCount]; const int datasize=observationFeatureCount*sizeof(float); unsigned int pickedIndex; void loop() { pickedIndex = random(observationCount); Serial.print("Picked index "); Serial.print(pickedIndex); Serial.println(); // Fix. Less ugly way of copying? for (int i=0; i < observationFeatureCount; i++) { pickedObservation[i] = observations[pickedIndex][i]; Serial.println(pickedObservation[i]); } //pickedObservation[4] = observations[pickedIndex]; // Send message via ESP-NOW (size of an int is 4 bytes on ESP32) esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) pickedObservation, datasize); if (result == ESP_OK) { Serial.println("Sent observation with success"); } else { Serial.println("Error sending the data"); } Serial.println(WiFi.macAddress()); delay(timeBetweenBroadcasts); }