My code is still a work in progress.
I have just added OTA to my code, but if i try to update,
just “Sending invitation to 192.168.1.81 …”
but get no response.
error message
/////////////////////////////////////////////////////////////////////////////////////////////////////////
Arduino: 1.8.13 (Windows 10), Board: “ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None”
Sketch uses 916642 bytes (69%) of program storage space. Maximum is 1310720 bytes.
Global variables use 43840 bytes (13%) of dynamic memory, leaving 283840 bytes for local variables. Maximum is 327680 bytes.
Sending invitation to 192.168.1.81 …An error occurred while uploading the sketch
.
21:26:30 [ERROR]: No response from the ESP
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
///////////////////////////////////////////////////////////////
Hardware
ESP32
Pi local server (did not install docker when i set up the Pi)
Python 2.7 installed on laptop
my code
//A work in progress
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LSM303_U.h>
#include <HTTPClient.h>
#define BLYNK_PRINT Serial
#include <ArduinoOTA.h>
#include <ArduinoJson.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = "o7sRv-CLmo-iD-vQFfvqwIs8tn9XuTyb";
char ssid[] = "FRITZ!Box 7490";
char pass[] = "40253267300484638395";
BlynkTimer timer;
String payload;
int relayA = 23; // NOTE this pin gpio
int relayB = 3; // NOTE this pin gpio
int relayC = 9; // NOTE this pin gpio
int relayD = 16; // NOTE this pin gpio
float DegreesX;
float DegreesY;
float sun_altitude;
float sun_azimuth;
int windy;
//int event;
//xyz
/* Assign a unique ID to this sensor at the same time */
Adafruit_LSM303_Accel_Unified accel = Adafruit_LSM303_Accel_Unified(54321);
void setup()
{
pinMode(relayA,OUTPUT);
pinMode(relayB,OUTPUT);
pinMode(relayC,OUTPUT);
pinMode(relayD,OUTPUT);
digitalWrite (relayA, HIGH);
digitalWrite (relayB, HIGH);
digitalWrite (relayC, HIGH);
digitalWrite (relayD, HIGH);
// Debug console
Serial.begin(9600);
Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,120), 8080);
delay (3000);
int rssi = WiFi.RSSI() ; //get signal strenth in DB
Blynk.virtualWrite(V51,rssi);
//Blynk.virtualWrite(V0, 1); //update for webhooks
Serial.println("Booting");
APIupdate(); //call API to populate payload data
////////////////
// timer.setInterval(1000L, takeReadings);
timer.setInterval(2500L, updateDisplay);
timer.setInterval(1800*1000L, APIupdate);// set to 12 seconds for testing set to 30 mins for use
//must change to 1800*1000L 30min/////
ArduinoOTA.onError([](ota_error_t error) { ESP.restart(); });
ArduinoOTA.setHostname("SunTracker");
ArduinoOTA.begin();
}
void loop()
{
Blynk.run();
timer.run(); // Initiates BlynkTimer
}
void updateDisplay(){
int rssi = WiFi.RSSI() ; //get signal strenth in DB
Blynk.virtualWrite(V51,rssi);
if(!accel.begin())
{
Blynk.virtualWrite(V1,"Ooops, no LSM303 detected ... Check your wiring!");
while(1);
}
sensors_event_t event; //im unable to move or remove this line due to compile errror
accel.getEvent(&event);
float rawAngleX = event.acceleration.x;
DegreesX = (rawAngleX * 9);
map(DegreesX, -10, 10, 0, 180);
float rawAngleY = event.acceleration.y;
DegreesY = (rawAngleY * 9);
map(DegreesY, -10, 10, 0, 180);
Blynk.virtualWrite(V1,"DegreesX; ");
Blynk.virtualWrite(V1,DegreesX);
Blynk.virtualWrite(V1," RawAngle X; ");
Blynk.virtualWrite(V1,rawAngleX);
Blynk.virtualWrite(V1,"\n "); //new line
Blynk.virtualWrite(V1,"DegreesY: ");
Blynk.virtualWrite(V1,DegreesY);
Blynk.virtualWrite(V1," RawAngle Y: ");
Blynk.virtualWrite(V1,rawAngleY);
Blynk.virtualWrite(V1,"\n "); //new line
Blynk.virtualWrite(V1,"Suns Altitude: ");
// Blynk.virtualWrite(V1,sun_altitude, 0);
Blynk.virtualWrite(V1,sun_altitude);
Blynk.virtualWrite(V1,"\n "); //new line
Blynk.virtualWrite(V4,sun_altitude);
Blynk.virtualWrite(V1,"Azimuth: ");
// Blynk.virtualWrite(V1,sun_azimuth, 0);
Blynk.virtualWrite(V1,sun_azimuth);
Blynk.virtualWrite(V5,sun_azimuth);
Blynk.virtualWrite(V1,"\n "); //new line
Blynk.virtualWrite(V1,"\n "); //new line
}
/*
void takeReadings(){ //every X.. ms
//Get a new sensor event
sensors_event_t event;
accel.getEvent(&event);
//map(value, fromLow, fromHigh, toLow, toHigh)
DegreesX = event.acceleration.x;
map(event.acceleration.x, -10, 10, 0, 180);
DegreesY = event.acceleration.y;
map(event.acceleration.y, -10, 10, 0, 180);
}
*/
void APIupdate(){
HTTPClient http; //Declare an object of class HTTPClient
//new API key
http.begin("https://api.ipgeolocation.io/astronomy?apiKey=5a0ece4d1b7f49aca1b86d8e78dcebd2&lat=50.3&long=-4.9"); //Specify request destination
int httpCode = http.GET(); //Send the request
if (httpCode > 0) { //Check the returning code
payload = http.getString(); //Get the request response payload
}
http.end(); //Close connection
Serial.println(payload);
const size_t capacity = JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(18) + 320;
DynamicJsonDocument doc(capacity);
deserializeJson(doc, payload);
float location_latitude = doc["location"]["latitude"]; //
float location_longitude = doc["location"]["longitude"]; //
const char* date = doc["date"]; // "2020-09-30"
const char* current_time = doc["current_time"]; // "19:06:46.27"
const char* sunrise = doc["sunrise"]; // "07:18"
const char* sunset = doc["sunset"]; // "18:59"
const char* sun_status = doc["sun_status"]; // "-"
const char* solar_noon = doc["solar_noon"]; // "13:09"
const char* day_length = doc["day_length"]; // "11:41"
sun_altitude = doc["sun_altitude"]; // -2.0393480763745733
float sun_distance = doc["sun_distance"]; // 149810371.16339526
sun_azimuth = doc["sun_azimuth"]; // 267.4597814448824
const char* moonrise = doc["moonrise"]; // "19:02"
const char* moonset = doc["moonset"]; // "05:23"
const char* moon_status = doc["moon_status"]; // "-"
float moon_altitude = doc["moon_altitude"]; // 1.0738509355096701
float moon_distance = doc["moon_distance"]; // 402084.5279459498
float moon_azimuth = doc["moon_azimuth"]; // 100.76227521973334
float moon_parallactic_angle = doc["moon_parallactic_angle"]; // -38.56220668133565
Serial.println(sun_altitude);
Serial.println(sun_azimuth);
//Serial.println(location_latitude);
}
BLYNK_WRITE(V22)// if button on APP pressed, flattern out solar panel to minimise wind damage
{
windy = param.asInt();
////check if windy
//move up if windy switch and if pannel is less than horizontal
if (windy == 1){
Blynk.virtualWrite(V1,"Manual Windy");
digitalWrite (relayA,LOW); //move UP
//digitalWrite (relayC, LOW);
}else{
digitalWrite (relayA, HIGH);
// digitalWrite (relayC, HIGH);
}
if (windy ==1 && DegreesY <=178){ //if set too east move
digitalWrite (relayC, LOW);
}else{
digitalWrite (relayC, HIGH);
}
if (windy ==1 && DegreesY >=182){ //if set too west move
digitalWrite (relayD, LOW);
}else{
digitalWrite (relayD, HIGH);
}
}
/*
//////////move panel
void movePannel(){
if (DegreesX >=0){
digitalWrite (relayA, HIGH);
}
if (DegreesY >=178){
digitalWrite (relayC, HIGH);
}
if (DegreesY >=183){
digitalWrite (relayD, HIGH);
}
////check if day or night
////check elivation
////check Azimuth
}
*/
any ideas?
many thanks