HTTPS with SIM800L, How? [closed]

1 week ago 4
ARTICLE AD BOX

I have a project which measures temperature, humidity and voltage (of a battery) in a room, turns on two relays based on it and logs this data to excel. The problem is that the place where it has be doployed has no WiFi, so I am using a SIM800L Module. I looked for many videos but I really can't understand. I need some guidance.
My code is given below:

#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); }
Read Entire Article