Closed jbrepogmailcom closed 4 years ago
Issue-Label Bot is automatically applying the label bug
to this issue, with a confidence of 0.76. Please mark this comment with :thumbsup: or :thumbsdown: to give our bot feedback!
Links: app homepage, dashboard and code for this bot.
I have no idea why is that happening. Might be a library conflict.
Hello. The following sketch does not compile and throws error 'connect_to_wifi_jb' was not declared in this scope".
However, when I comment out #include to //#include
then the sketch compiles correctly. I do not have to say that 'connect_to_wifi_jb' is declared correctly...
char* D_Name = "toshiba_ac"; const long FW_VERSION = 19111301;
include
//#include
//#include
include
include //https://github.com/tzapu/WiFiManager
include
include
include
//#include
include
include "CTBot.h"
include "DHTesp.h"
CTBot myBot; DHTesp dht; WiFiClient client;
// For DHT int cycleCount = 50; int currentCycle = cycleCount + 1; //overrun for first time so Temp is sent immediately String APIkey = "MPX0....QZ"; const char* TSserver = "api.thingspeak.com"; int DHTIO = 13; // GPIO 15 - D8 right next to 3.3V pin int DHTGround = 12; // GPIO 5 String st = ""; // temperature declared as global unsigned int recipient;
// For Toshiba AC control
include
include //https://github.com/crankyoldgit/IRremoteESP8266
include
include
include
const uint16_t kIrLed = 4; // ESP8266 GPIO pin 4 to use. Recommended: 4 (D2). IRToshibaAC ac(kIrLed); // Set the GPIO to be used for sending messages.
void printState(unsigned int my_telegram_id) { // Display the settings. Serial.println("Toshiba A/C remote is in the following state:"); Serial.printf(" %s\n", ac.toString().c_str()); myBot.sendMessage(my_telegram_id, ac.toString().c_str()); myBot.sendMessage(my_telegram_id, "Temp: "+st+" (v."+FW_VERSION+")"); // Display the encoded IR sequence. unsigned char* ir_code = ac.getRaw(); Serial.print("IR Code: 0x"); for (uint8_t i = 0; i < kToshibaACStateLength; i++) Serial.printf("%02X", ir_code[i]); Serial.println(); } //--------
const char* fwUrlBase = "http://.../files/"; String OldCommand = ""; String newCommand = "";
//String token = "5671.....e3BWiqEwuqgSs"; // REPLACE myToken WITH YOUR TELEGRAM BOT TOKEN String token = "751573.......VoOdWHvtcZSNCyM"; // REPLACE myToken WITH YOUR TELEGRAM BOT TOKEN unsigned int my_telegram_id = 123456789; unsigned int sleep_time = 600000000; //600 seconds rst_info *xyz; byte reset_reason;
int valid = 0;
Ticker ticker;
//char ssid = ""; //char password = "";
String ssid = ""; String password = "";
// ADC_MODE(ADC_VCC);
define LED_ESP 2
define PH_VCC 14
define PH_GND 12
define THRESHOLD 900
define POWER_CYCLE 6
define WD_RESET 5
define AFTER_OTA 4
// the setup function runs once when you press reset or power the board void setup() {
dht.setup(DHTIO, DHTesp::DHT22); delay(2000);
// For Toshiba AC control pinMode(LED_BUILTIN, OUTPUT); ac.begin(); Serial.begin(115200); delay(200); //------------
// Set up what we want to send. See ir_Toshiba.cpp for all the options. Serial.println("Default state of the remote."); //printState(my_telegram_id); Serial.println("Setting desired state for A/C."); ac.on(); // ac.setFan(1); // ac.setMode(kToshibaAcCool); ac.setMode(kToshibaAcAuto); ac.setTemp(25);
// initialize digital pin LED_BUILTIN as an output. pinMode(LED_ESP, OUTPUT); Serial.begin(115200);
Serial.println("Starting...");
// Init DHT ground pinMode(DHTGround, OUTPUT); digitalWrite(DHTGround, LOW);
Serial.print("Checking Reset reason..."); xyz = ESP.getResetInfoPtr(); reset_reason = (*xyz).reason; Serial.println(reset_reason);
//if (reset_reason == POWER_CYCLE) { Serial.print("Connecting to WiFi..."); connect_to_wifi_jb(); Serial.println("connected."); //int Light = getLght();
//Elegant OTA //ElegantOTA.begin(&server); // Start ElegantOTA //server.begin(); //Serial.println("HTTP server started");
//Tbot init myBot.setTelegramToken(token);
// check if all things are ok if (myBot.testConnection()) Serial.println("\nBOT testConnection OK"); else Serial.println("\nBOT testConnection NOK");
myBot.sendMessage(my_telegram_id, "Tady AC, boot, kontroluji update..."); Serial.print("Checking for update..."); checkForUpdates(); Serial.println("checked."); //} readAcServer(); OldCommand = newCommand;
}
//################################### START ###############################################xx
// the loop function runs over and over again forever void loop() {
// Read Temp Humi every 50 cycles (5 minutes) currentCycle = currentCycle + 1; if (currentCycle >= cycleCount) { delay(dht.getMinimumSamplingPeriod()); float humidity = dht.getHumidity(); Serial.println(humidity); float temperature = dht.getTemperature(); Serial.println(temperature); st = String(temperature); String sh = String(humidity); Serial.println("Temp: "+st+", Humi: "+sh); currentCycle = 0; logTS(sh,st); }
// Read CTbot message TBMessage msg; String tms = ""; int cmdsent = 0;
recipient = my_telegram_id;
readAcServer();
Serial.print("Command retrieved: "); Serial.println(newCommand);
if (newCommand != OldCommand) { tms = newCommand; Serial.print("Preparing to send command from server: "); Serial.println(tms); myBot.sendMessage(recipient, "Server command: "+newCommand); } OldCommand = newCommand;
// if there is an incoming message... digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(20); digitalWrite(LED_BUILTIN, HIGH); if (myBot.getNewMessage(msg)) { // ...forward it to the sender cmdsent = 1; tms = msg.text; tms.toUpperCase(); recipient = msg.sender.id; myBot.sendMessage(recipient, "Příjem: "+tms); }
valid = 0;
char tm[50];
tms.toCharArray(tm,50); char word1 = strtok(tm," "); char word2 = strtok(NULL," "); String w1 = String(word1); String w2 = String(word2); Serial.println("Word1: "+w1+"; Word2: "+w2);
// Now send the IR signal.
if SEND_TOSHIBA_AC
if (valid == 1) { Serial.println("Sending IR command to A/C ..."); digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); ac.send(); digitalWrite(LED_BUILTIN, HIGH);
endif // SEND_TOSHIBA_AC
else if (cmdsent == 1) myBot.sendMessage(recipient, "Neznámý příkaz!");
delay(5000);
}
//############################## STOP ##################################xx
void logTS(String param1, String param2) {
int cc = client.connect(TSserver,80); if (cc) { // vytvoření zprávy, která bude odeslána na Thingspeak // každé pole je označeno jako "field" + pořadí pole, // je nutné každý údaj převést na String String zprava = APIkey; zprava +="&field1="; zprava += param1; zprava +="&field2="; zprava += param2; zprava += "\r\n\r\n"; // po vytvoření celé zprávy ji odešleme na server Thingspeak // včetně našeho API klíče client.print("POST /update HTTP/1.1\n"); client.print("Host: api.thingspeak.com\n"); client.print("Connection: close\n"); client.print("X-THINGSPEAKAPIKEY: "+APIkey+"\n"); client.print("Content-Type: application/x-www-form-urlencoded\n"); client.print("Content-Length: "); client.print(zprava.length()); client.print("\n\n"); client.print(zprava); // vytištění informací po sériové lince o odeslání na Thingspeak Serial.print("param1: "); Serial.print(param1); Serial.print(" param2: "); Serial.println(param2); Serial.println("Udaje odeslany na Thingspeak."); } else { ESP.restart(); }
// ukončení spojení se serverem Thingspeak client.stop(); }
void readAcServer() { String mac = String(D_Name); String fwURL = String( fwUrlBase ); fwURL.concat( mac ); String fwVersionURL = fwURL; fwVersionURL.concat( ".command" );
Serial.println( "Checking for server command." ); Serial.print( "MAC address: " ); Serial.println( mac ); Serial.print( "Command URL: " ); Serial.println( fwVersionURL );
HTTPClient httpClient; httpClient.begin( fwVersionURL ); int httpCode = httpClient.GET(); if( httpCode == 200 ) { newCommand = httpClient.getString();
else { Serial.print( "Command failed, got HTTP response code " ); Serial.println( httpCode ); } httpClient.end(); return; }
void connect_to_wifi_jb() { Serial.println("Setting WiFi connection..."); delay(100); pinMode(LED_ESP, OUTPUT); ticker.attach(0.6, tick); WiFiManager wifiManager; wifiManager.setConfigPortalTimeout(300); wifiManager.setConnectTimeout(60); wifiManager.setAPCallback(configModeCallback); if (!wifiManager.autoConnect(D_Name)) { Serial.println("failed to connect and hit timeout"); ESP.reset(); delay(1000); } Serial.println("connected...yeey :)"); ticker.detach(); digitalWrite(LED_ESP, LOW); delay(3000); digitalWrite(LED_ESP, HIGH); Serial.print("WiFi.SSID(): "); Serial.println(WiFi.SSID()); //WiFi.SSID().toCharArray(ssid, 32); Serial.print("WiFi.psk(): "); Serial.println(WiFi.psk()); //WiFi.psk().toCharArray(password, 32); }
void OTAtick() { //ArduinoOTA.handle(); }
void delayOTA(int duration) { // Use this loop to keep OTA alive for (int i=0; i <= duration/1000; i++) { //ArduinoOTA.handle(); delay(1000); } }
void blink_led(int which, int cas1, int cas2, int inverse) { pinMode(which, OUTPUT); digitalWrite(which, 1-inverse); delay(cas1); digitalWrite(which, inverse); delay(cas2); }
void tick() { //toggle state int state = digitalRead(LED_ESP); // get the current state of GPIO1 pin digitalWrite(LED_ESP, !state); // set pin to the opposite state }
//gets called when WiFiManager enters configuration mode void configModeCallback (WiFiManager *myWiFiManager) { Serial.println("Entered config mode"); Serial.println(WiFi.softAPIP()); //if you used auto generated SSID, print it Serial.println(myWiFiManager->getConfigPortalSSID()); //entered config mode, make led toggle faster ticker.attach(0.2, tick); }
void checkForUpdates() { String mac = String(D_Name); String fwURL = String( fwUrlBase ); fwURL.concat( mac ); String fwVersionURL = fwURL; fwVersionURL.concat( ".version" );
Serial.println( "Checking for firmware updates." ); Serial.print( "MAC address: " ); Serial.println( mac ); Serial.print( "Firmware version URL: " ); Serial.println( fwVersionURL );
HTTPClient httpClient; httpClient.begin( fwVersionURL ); //httpClient.begin("http://79......8/files/ESP_c_1.version"); int httpCode = httpClient.GET(); if( httpCode == 200 ) { String newFWVersion = httpClient.getString();
} else { Serial.print( "Firmware version check failed, got HTTP response code " ); Serial.println( httpCode ); myBot.sendMessage(my_telegram_id, "Firmware version check failed, got HTTP response code "+String(httpCode)); } httpClient.end(); }
/* String getMAC() { uint8_t mac[6]; char result[14];
snprintf( result, sizeof( result ), "%02x%02x%02x%02x%02x%02x", mac[ 0 ], mac[ 1 ], mac[ 2 ], mac[ 3 ], mac[ 4 ], mac[ 5 ] );
return String( result ); }
int getLght() {
pinMode(PH_VCC, OUTPUT); pinMode(PH_GND, OUTPUT); digitalWrite(PH_VCC, HIGH); digitalWrite(PH_GND, LOW);
//int Light = 1000; //analogRead(A0); int Light = analogRead(A0); Serial.print("Light: "); Serial.println(Light); delay(50); pinMode(PH_VCC, INPUT); pinMode(PH_GND, INPUT);
return Light;
} */