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

should be working final version for rs485

parent e97c49aa
No related branches found
No related tags found
4 merge requests!39Merge Develop into Main,!19development into master,!17Inital Host, initial Client,!15Rs485 finalization
......@@ -73,4 +73,4 @@ public:
};
#endif
\ No newline at end of file
#endif
......@@ -35,33 +35,43 @@ out_data_rs485 Forte_RS485::readData()
// Wait for sensors to power up
// TODO minimize delay
delay(500);
data.solarRadiation = solarSensor.getSolarRadiation();
data.moisture = soilSensor4.getMoisture();
data.moisture_temperature = soilSensor3.getMoistureTemp();
data.moisture_temperature = soilSensor4.getMoistureTemp();
data.moisture_temperature = soilSensor5.getMoistureTemp();
data.precipitation = rainGauge.getInstantaneousPrecipitation();
out_data_rs485 readData;
readData.solarRadiation = solarSensor.getSolarRadiation();
readData.soilTemperature3 = soilSensor3.getMoistureTemp();
readData.soilTemperature4 = soilSensor4.getMoistureTemp();
readData.soilTemperature5 = soilSensor5.getMoistureTemp();
readData.soilMoisture3 = soilSensor3.getMoisture();
readData.soilMoisture4 = soilSensor4.getMoisture();
readData.soilMoisture5 = soilSensor5.getMoisture();
readData.precipitation = rainGauge.getInstantaneousPrecipitation();
digitalWrite(POWER_SWITCH_PIN_12V, LOW);
digitalWrite(POWER_SWITCH_PIN_5V, LOW);
gpio_hold_en((gpio_num_t)POWER_SWITCH_PIN_12V);
gpio_hold_en((gpio_num_t)POWER_SWITCH_PIN_5V);
return data;
return readData;
}
std::list<Message> Forte_RS485::buildMessages()
{
std::list<Message> messages;
MeasurementData moisture {data.moisture,0,{},measurementTypeToString.at(MeasurementType::MOISTURE)};
MeasurementData moisture_temperature {data.moisture_temperature,0,{},measurementTypeToString.at(MeasurementType::MOISTURE_TEMPERATURE)};
MeasurementData solarRadiation {data.solarRadiation,0,{},measurementTypeToString.at(MeasurementType::SOLARRADIATION)};
MeasurementData precipation {data.precipitation,0,{},measurementTypeToString.at(MeasurementType::PRECIPITATION)};
messages.emplace_back(Message{moisture ,sensorInformation, 0});
messages.emplace_back(Message{moisture_temperature ,sensorInformation, 0});
messages.emplace_back(Message{solarRadiation ,sensorInformation, 0});
messages.emplace_back(Message{precipation,sensorInformation, 0});
ESP_LOGE(sensorInformation.getSensorName().c_str(), "test");
out_data_rs485 readData;
MeasurementData solarRadiation {readData.solarRadiation,0,{},measurementTypeToString.at(MeasurementType::SOLAR_RADIATION)};
MeasurementData soilTemp3{readData.soilTemperature3,0,{},measurementTypeToString.at(MeasurementType::SOIL_TEMPERATURE_3)};
MeasurementData soilTemp4 {readData.soilTemperature4,0,{},measurementTypeToString.at(MeasurementType::SOIL_TEMPERATURE_4)};
MeasurementData soilTemp5 {readData.soilTemperature5,0,{},measurementTypeToString.at(MeasurementType::SOIL_TEMPERATURE_5)};
MeasurementData soilMoisture3 {readData.soilMoisture3,0,{},measurementTypeToString.at(MeasurementType::SOIL_MOISTURE_3)};
MeasurementData soilMoisture4 {readData.soilMoisture4,0,{},measurementTypeToString.at(MeasurementType::SOIL_MOISTURE_4)};
MeasurementData soilMoisture5 {readData.soilMoisture5,0,{},measurementTypeToString.at(MeasurementType::SOIL_MOISTURE_5)};
messages.emplace_back(Message{solarRadiation,sensorInformation, 0});
messages.emplace_back(Message{soilTemp3,sensorInformation, 0});
messages.emplace_back(Message{soilTemp4,sensorInformation, 0});
messages.emplace_back(Message{soilTemp5,sensorInformation, 0});
messages.emplace_back(Message{soilMoisture3,sensorInformation, 0});
messages.emplace_back(Message{soilMoisture4,sensorInformation, 0});
messages.emplace_back(Message{soilMoisture5,sensorInformation, 0});
return messages;
}
......
......@@ -5,29 +5,20 @@
// RTC (I2C)
#include "RTClib.h"
#include "Message.hpp"
#include "Protocol.hpp"
#include "SensorInformation.hpp"
#include "SentecSensors.h"
#include "ForteSensor.hpp"
#include "SentecSensors.h"
struct out_data_rs485{
word solarRadiation;
word moisture;
word moisture_temperature;
word soilMoisture3;
word soilTemperature3;
word soilMoisture4;
word soilTemperature4;
word soilMoisture5;
word soilTemperature5;
word precipitation;
};
/*
class Forte_RS485 : public ForteSensor<out_data_rs485> {
public:
void setup();
out_data_rs485 read_data();
private:
out_data_rs485 data;
};
*/
class Forte_RS485 : public ForteSensor <out_data_rs485> {
public:
void setup() override;
......@@ -37,15 +28,28 @@ class Forte_RS485 : public ForteSensor <out_data_rs485> {
private:
const SensorInformation sensorInformation{"RS485", Protocol::RS485};
out_data_rs485 data;
out_data_rs485 data;
enum class MeasurementType {
SOLAR_RADIATION,
SOIL_MOISTURE_3,
SOIL_TEMPERATURE_3,
SOIL_MOISTURE_4,
SOIL_TEMPERATURE_4,
SOIL_MOISTURE_5,
SOIL_TEMPERATURE_5,
PRECIPITATION
};
enum class MeasurementType { MOISTURE,MOISTURE_TEMPERATURE,SOLARRADIATION,PRECIPITATION};
std::map<MeasurementType, const char *> measurementTypeToString = {
{MeasurementType::MOISTURE, "MOISTURE"},
{MeasurementType::MOISTURE_TEMPERATURE, "MOISTURE_TEMPERATURE"},
{MeasurementType::SOLARRADIATION, "SOLARRADIATION"},
{MeasurementType::PRECIPITATION, "PRECIPATION"}
{MeasurementType::SOLAR_RADIATION, "SOLAR_RADIATION"},
{MeasurementType::SOIL_MOISTURE_3, "SOIL_MOISTURE_3"},
{MeasurementType::SOIL_TEMPERATURE_3, "SOIL_TEMPERATURE_3"},
{MeasurementType::SOIL_MOISTURE_4, "SOIL_MOISTURE_4"},
{MeasurementType::SOIL_TEMPERATURE_4, "SOIL_TEMPERATURE_4"},
{MeasurementType::SOIL_MOISTURE_5, "SOIL_MOISTURE_5"},
{MeasurementType::SOIL_TEMPERATURE_5, "SOIL_TEMPERATURE_5"},
{MeasurementType::PRECIPITATION, "PRECIPATION"}
};
};
#endif
\ No newline at end of file
......@@ -8,33 +8,18 @@
Forte_RS485 rs485;
void setup()
{
rs485.setup();
espnow_setup();
out_data_rs485 data_rs485 = rs485.readData();
Serial.println("***********************************************************");
Serial.print("Moisture: ");
Serial.println(data_rs485.moisture);
Serial.print("Moisture Temperature: ");
Serial.println(data_rs485.moisture_temperature);
Serial.print("Solar: ");
Serial.println(data_rs485.solarRadiation);
Serial.print("Rain mm: ");
Serial.println(data_rs485.precipitation);
// send the data
// moistere 1
// moisture_temperature 2
// solarRadiation 3
// precipitation 4
try {
espnow_setup();
}
void loop() {
try {
auto messages = rs485.buildMessages();
for (const Message &message : messages) {
if(message.send() != ESP_OK){
RtcMemory::store(message.getMessageAsMinifiedJsonString());
......@@ -55,5 +40,3 @@ try {
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
esp_deep_sleep_start();
}
void loop() {}
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