سلام من در مورد قسمت iot در بسته الکترونیک سوال داشتم مشکل اینه که ار کدهای موجود در بسته استفاده میکنم به wifi وصل میشوم ولی به بروکر وصل نمیشم
سلام دوست عزیز، از چه بروکری استفاده میکنید؟ لطفا تنظیماتی که استفاده میکنید رو هم ارسال کنید. احتمال این وجود داره که اون بروکر خاص جلوی آی پی های ایران رو گرفته باشه. لطفا اطلاعات بیشتری بدید.
سلام مجدد بروکر 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 رو سرچ کنید.
ممنون از پاسخ دوستان. بله به نظر من هم مشکل از بروکر و استفاده از آی پی ایران هست. شما یا باید خودتون یک بروکر نصب کنید (یا روی سیستم خودتون برای تست و یا روی یک سرور که از شرکت هایی که سرور ارائه میدن میتونید تهیه کنید) و یا اینکه دنبال بروکر های مجانی دیگه بگردید. دقت کنید که برای اینکه خودتون یک بروکر نصب کنید هم آموزش هایی در اینترنت هست ولی کمی نیاز به دانش شبکه و لینوکس دارید.
ممنون از شما
ممنون از شما
سلام مهراد من یه مقاله خوندم داخل سایت رمز ارز یار ، کل بروکر هارو گفته بود و فک کنم لایت فایننس بروکر خوبی باشه