#include "heltec.h" #include "images.h" #include #include // Update these with values suitable for your network. const char* ssid = "WIFI-SSID"; const char* password = "WIFI-PWD"; const char* mqtt_server = "IP-Adress ioBroker"; WiFiClient espClient; PubSubClient client(espClient); long lastMsg = 0; #define BAND 868E6 //868E6, 915E6 String rssi = "RSSI --"; String packSize = "--"; String packet ; void setup_wifi() { delay(100); // We start by connecting to a WiFi network Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } randomSeed(micros()); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Create a random client ID String clientId = "ESP8266Client-"; clientId += String(random(0xffff), HEX); // Attempt to connect //if you MQTT broker has clientID,username and password //please change following line to if (client.connect(clientId,userName,passWord)) if (client.connect(clientId.c_str())) { Serial.println("connected"); //once connected to MQTT broker, subscribe command if any client.subscribe("OsoyooCommand"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 6 seconds before retrying delay(6000); } } } void logo(){ Heltec.display->clear(); Heltec.display->drawXbm(0,5,logo_width,logo_height,logo_bits); Heltec.display->display(); } void LoRaData(){ Heltec.display->clear(); Heltec.display->setTextAlignment(TEXT_ALIGN_LEFT); Heltec.display->setFont(ArialMT_Plain_10); Heltec.display->drawString(0 , 15 , "Received "+ packSize + " bytes"); Heltec.display->drawStringMaxWidth(0 , 26 , 128, packet); Heltec.display->drawString(0, 0, rssi); Heltec.display->display(); } void cbk(int packetSize) { packet =""; packSize = String(packetSize,DEC); for (int i = 0; i < packetSize; i++) { packet += (char) LoRa.read(); } client.publish("LoRaServer/SensorCmd", packet.c_str(), true); Serial.println(packet.c_str()); rssi = "RSSI " + String(LoRa.packetRssi(), DEC) ; LoRaData(); } void setup() { Serial.begin(115200); //WIFI Kit series V1 not support Vext control Heltec.begin(true /*DisplayEnable Enable*/, true /*Heltec.Heltec.Heltec.LoRa Disable*/, true /*Serial Enable*/, true /*PABOOST Enable*/, BAND /*long BAND*/); Heltec.display->init(); Heltec.display->flipScreenVertically(); Heltec.display->setFont(ArialMT_Plain_10); logo(); delay(1500); Heltec.display->clear(); setup_wifi(); client.setServer(mqtt_server, 1883); reconnect(); Heltec.display->drawString(0, 0, "Heltec.LoRa Initial success!"); Heltec.display->drawString(0, 10, "Wait for incoming data..."); Heltec.display->display(); delay(1000); //LoRa.onReceive(cbk); LoRa.receive(); } void loop() { int packetSize = LoRa.parsePacket(); if (packetSize) { cbk(packetSize); } delay(10); }