اتصال به بروکر در iot

سلام من در مورد قسمت iot در بسته الکترونیک سوال داشتم مشکل اینه که ار کدهای موجود در بسته استفاده میکنم به wifi وصل میشوم ولی به بروکر وصل نمیشم

سلام دوست عزیز، از چه بروکری استفاده میکنید؟ لطفا تنظیماتی که استفاده میکنید رو هم ارسال کنید. احتمال این وجود داره که اون بروکر خاص جلوی آی پی های ایران رو گرفته باشه. لطفا اطلاعات بیشتری بدید.

1 پسندیده

سلام مجدد بروکر broker.hivemq.com خودتون تو آموزش استفاده کرده بودید اینم برنامه خودتونه
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>

const char* ssid = “milad”;
const char* password = “123456478”;
const char* mqtt_server = “broker.hivemq.com”;
const char relayPin = 10;
const char ledPin = 16;
const char lm35Pin = 0;
char isManualMode = true;
int temperatureSetPointHigh = 0;
int temperatureSetPointLow = 0;
char relayState = 0;
long prevMillis = 0;
int publishInterval = 2000;
char buffer[50];
float temperature;
int intTemperature;
WiFiClient espClient;
PubSubClient client(espClient);

void setup() {

Serial.begin(115200);
setup_wifi();

client.setServer(mqtt_server, 1883);
Serial.println(“khat1”);
client.setCallback(mqttCallBack);
Serial.println(“khat2”);
// pinMode(relayPin, OUTPUT);
// pinMode(ledPin, OUTPUT);
// digitalWrite(relayPin, LOW);
// digitalWrite(ledPin, LOW);
Serial.println(“khat3”);
}

void setup_wifi(void){
delay(10);
Serial.println();
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 adress: ");
Serial.println(WiFi.localIP());
}

void mqttCallBack(char* topic, byte* payload, unsigned int length){
Serial.print(“Message arrived [”);
Serial.print(topic);
Serial.print("] ");
char buffer[50];
for(unsigned int i = 0; i < length; i++){
Serial.print((char)payload[i]);
buffer[i] = (char)payload[i];
}
buffer[length] = ‘\0’;
String command = String(buffer);
for (int i = 0;i<length; i++) {
Serial.print((char)payload[i]);

Serial.println();

if(command == “turnOn”){
if(isManualMode){
digitalWrite(relayPin, HIGH);
relayState = 1;
client.publish(“SensorData”, “ack:ok”);
}else{
client.publish(“SensorData”, “ack:notManual”);
}
}else if(command == “turnOff”){
if(isManualMode){
digitalWrite(relayPin, LOW);
relayState = 0;
client.publish(“SensorData”, “ack:ok”);
}else{
client.publish(“SensorData”, “ack:notManual”);
}
}else if(command == “switchManual”){
isManualMode = 1;
client.publish(“SensorData”, “ack:ok”);
}else if(command == “switchAuto”){
isManualMode = 0;
client.publish(“SensorData”, “ack:ok”);
}else if(command.indexOf(“setHigh”) == 0){
temperatureSetPointHigh = command.substring(command.indexOf(“:”)+1).toInt();
client.publish(“SensorData”, “ack:ok”);
}else if(command.indexOf(“setLow”) == 0){
temperatureSetPointLow = command.substring(command.indexOf(“:”)+1).toInt();
client.publish(“SensorData”, “ack:ok”);
}
}
}
void reconnect(void){
while(!client.connected()){
Serial.print(“Attempting MQTT connection…”);
String clientId = “TANKMONITORING-”;
clientId += String(random(0xffff), HEX);
if(client.connect(“TANKMONITORING-”)){
Serial.println(“connected”);
// client.subscribe(“namatekFinalProject”);
digitalWrite(ledPin, HIGH);
}else{
Serial.println(“failed to connect”);
Serial.println(“waiting for 5 seconds…”);
delay(5000);
}
}
}
void loop() {

if(!client.connected()){
Serial.println(“not connected”);
digitalWrite(ledPin, LOW);
reconnect();
}

client.loop();

long nowMillis = millis();
if(nowMillis - prevMillis > publishInterval){
prevMillis = nowMillis;

temperature = analogRead(lm35Pin);
temperature = (1.0*temperature*1000.0)/(1024*10);
intTemperature = temperature;

if(!isManualMode){
  if(intTemperature >= temperatureSetPointHigh){
    digitalWrite(relayPin, HIGH);
    relayState = 1;
  }else if(intTemperature <= temperatureSetPointLow){
    digitalWrite(relayPin, LOW);
    relayState = 0;
  }
}
sprintf(buffer, "temp:%d,setH:%d,setL:%d,relay:%d,isManual:%d", intTemperature, temperatureSetPointHigh, temperatureSetPointLow, relayState, isManualMode);
client.publish("namatekSensorData", buffer, strlen(buffer));
Serial.println(buffer);

}
}

سلام وقت بخیر ، فکر میکنم مشکل از بروکر باشد ، من قبلا وصل میشدم ، حدود 6 ماه پیش ، ولی در حال حاضر گویا این امکان وجود ندارد .

امکانش هست راه کار بدید

free mqtt server رو سرچ کنید.

https://www.google.com/url?sa=t&source=web&rct=j&url=https://www.emqx.com/en/mqtt/public-mqtt5-broker&ved=2ahUKEwjghozsuuT5AhWCuKQKHY-MBiIQFnoECC8QAQ&usg=AOvVaw2t9ReDIz3AzwHJweAIRkc0

ممنون از پاسخ دوستان. بله به نظر من هم مشکل از بروکر و استفاده از آی پی ایران هست. شما یا باید خودتون یک بروکر نصب کنید (یا روی سیستم خودتون برای تست و یا روی یک سرور که از شرکت هایی که سرور ارائه میدن میتونید تهیه کنید) و یا اینکه دنبال بروکر های مجانی دیگه بگردید. دقت کنید که برای اینکه خودتون یک بروکر نصب کنید هم آموزش هایی در اینترنت هست ولی کمی نیاز به دانش شبکه و لینوکس دارید.

ممنون از شما

ممنون از شما