HTTPS с SIM800L. Как? [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 HTTPS с SIM800L. Как? [закрыто]

Сообщение Anonymous »

У меня есть проект, который измеряет температуру, влажность и напряжение (батареи) в комнате, на основе этого включает два реле и записывает эти данные в Excel. Проблема в том, что в месте, где он был развернут, нет Wi-Fi, поэтому я использую модуль SIM800L. Я пересмотрел много видео, но так и не понял. Мне нужна помощь.

Мой код приведен ниже:
#include "DHT.h"
#include "Wire.h"
#include "Adafruit_SH110X.h"
#include "WiFiS3.h"
#include "ArduinoHttpClient.h"

Adafruit_SH1106G display(128,64,&Wire,-1);
#define DHTPIN 2
#define DHTTYPE DHT11
#define v_in A0
#define fan 7
#define battery 8
int fan_state;
int bat_state;
float R1= 30000.0;
float R2= 7500.0;
float ref_volt= 5.0;
int adc_val= 0;
unsigned long last_send_time = 0;
unsigned long runtime = 0;
int allowFirstTime = 2;
int statusCode;
DHT dht(DHTPIN,DHTTYPE);

char ssid[]="my_wifi_ssid";
char pass[]="my_wifi_pass";
char serverAddress[] = "script.google.com";
String scriptPath = "/macros/s/my_apps_script_code/exec";
WiFiSSLClient wifi;
HttpClient client = HttpClient(wifi, serverAddress, 443);

void setup() {
Serial.begin(9600);
pinMode(DHTPIN,INPUT);
pinMode(fan,OUTPUT);
pinMode(battery,OUTPUT);
display.begin(0x3C,true);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SH110X_WHITE);
display.setCursor(0,0);
dht.begin();
WiFi.begin(ssid, pass);
while (WiFi.status()!=WL_CONNECTED) {
Serial.println("Connecting to WiFi....");
display.println("Connecting to WiFi....");
display.display();
delay(3000);
}
Serial.print("---Connected to Wifi----");
display.println("Connected to WiFi");
display.display();
}

void loop() {
display.clearDisplay();
display.setCursor(0,0);
if (WiFi.status() != WL_CONNECTED) {
Serial.println("WiFi lost, reconnecting...");
display.println("WiFi gone, reconnecting");
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
}
Serial.println("Reconnected!");
display.println("Reconnected!");
display.display();
}
delay(1000);
display.clearDisplay();
runtime=millis();
if (runtime < last_send_time){
last_send_time= 0;
}
float h = dht.readHumidity();
float t = dht.readTemperature();
float hic = dht.computeHeatIndex(t, h, false);
adc_val=analogRead(v_in);
float adc_volt = (adc_val*ref_volt)/1024;
float in_volt = adc_volt * (R1+R2)/R2;
float real_volt;
if (in_volt > 0.37){
real_volt = in_volt - 0.37;
}else{
real_volt = in_volt;
}

if (t >= 40){
digitalWrite(fan,LOW);
fan_state=1;
}else{
digitalWrite(fan,HIGH);
fan_state=0;
}

if (real_volt > 11.6){
digitalWrite(battery,LOW);
bat_state=1;
}else{
digitalWrite(battery,HIGH);
bat_state= 0;
}

Serial.print("Temperature: ");
Serial.println(t);
Serial.print("Humidity: ");
Serial.println(h);
Serial.print("Voltage: ");
Serial.println(real_volt);

display.setCursor(0,0);
display.print("Temperature: ");
display.println(t);
display.print("Humidity: ");
display.println(h);
display.print("Voltage: ");
display.println(real_volt);

if (fan_state==1){
display.println("Fan: ON");
}else{
display.println("Fan: OFF");
}

if (bat_state==1){
display.println("Battery Relay: ON");
}else{
display.println("Battery Relay: OFF");
}
display.display();

if ((runtime-last_send_time)>= 300000 || allowFirstTime > 0){ //300000 milliseconds=5 minutes
String getPath = scriptPath;
getPath += "?temperature=" + String(t);
getPath += "&humidity=" + String(h);
getPath += "&voltage=" + String(real_volt);
getPath += "&fan=" + String(fan_state);
getPath += "&battery=" + String(bat_state);
client.stop();
client.get(getPath);
last_send_time = millis();
statusCode = client.responseStatusCode();
String response = client.responseBody();
Serial.println(getPath);
Serial.println(statusCode);

if (allowFirstTime > 0){
allowFirstTime -=1;
}else{
allowFirstTime =0;
}
}

display.print("Status Code:");
display.println(statusCode);
display.display();
delay(2000);
}


Подробнее: https://stackoverflow.com/questions/799 ... im800l-how
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»