Skip to content
Snippets Groups Projects
Commit 98e3cff6 authored by Moritz Perschke's avatar Moritz Perschke
Browse files

basic esp32 sketch to broadcast config message on setup and then recieve and print messages

parent fb96c854
No related branches found
No related tags found
5 merge requests!39Merge Develop into Main,!19development into master,!17Inital Host, initial Client,!3Merge Branch `develop` into `sensor_readout`,!1Espnow
#include <esp_now.h>
#include <esp_wifi.h>
#include "espnow.hpp"
#include "WiFi.h"
#include <ESP32Time.h>
uint8_t BROADCAST_MAC[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; // leaving this in as possible backup
esp_now_peer_info_t hostInfo;
data_struct lastData;
ESP32Time rtc;
void on_data_sent(const uint8_t *mac_addr, esp_now_send_status_t status){
}
void on_data_recv(const uint8_t *mac, const uint8_t *incomingData, int len){
memcpy(&lastData, incomingData, sizeof(lastData));
for(int i=0; i<NUM_SENSORS; i++){
Serial.println(lastData.identifiers[i] + lastData.values[i]);
}
Serial.println("at " + lastData.timestamp);
}
esp_err_t espnow_setup(){
esp_err_t result;
WiFi.mode(WIFI_STA);
result = esp_now_init();
if(result != ESP_OK){
//initialization failed
return result; // not sure about this
}
hostInfo.channel = 0;
hostInfo.encrypt = true;
result = esp_now_add_peer(&hostInfo);
if(result != ESP_OK){
//peer couldn't be added
return result;
}
esp_now_register_recv_cb(on_data_recv);
esp_now_register_send_cb(on_data_sent);
return ESP_OK;
}
Message :: Message(){
memcpy(BROADCAST_MAC, recipient, sizeof(BROADCAST_MAC));
config = (config_struct*) malloc(sizeof(config_struct));
esp_wifi_get_mac(WIFI_IF_STA, config->host);
config->time_millis = rtc.getMillis();
}
esp_err_t Message::send(){
return esp_now_send(recipient, (uint8_t *) &config, sizeof(config));
}
\ No newline at end of file
#ifndef _ESPNOW
#define _ESPNOW
#define NUM_SENSORS 10
typedef struct data_struct{
int identifiers[NUM_SENSORS];
float values[NUM_SENSORS];
long timestamp; //maybe make this array
}data_struct;
typedef struct config_struct{
uint8_t host[6];
long time_millis;
}config_struct;
class Message{
public:
Message();
esp_err_t send();
uint8_t recipient[6];
private:
config_struct *config;
};
esp_err_t espnow_setup();
#endif
\ No newline at end of file
......@@ -12,3 +12,4 @@
platform = espressif32
board = esp32-c3-devkitm-1
framework = arduino
lib_deps = fbiego/ESP32Time@^2.0.0
#include <Arduino.h>
#include <esp_wifi.h>
#include "WiFi.h"
#include "espnow.hpp"
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
while(!Serial);
WiFi.mode(WIFI_STA);
espnow_setup();
Message* msg = new Message;
msg->send();
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("No message...");
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment