گلدان هوشمند با MQTT و Node_RED
سلام در این جلسه قصد داریم با استفاده از سنسور رطوبت خاک و سنسور دما و رطوبت و برد Node_MCU و از طریق نرم افزار Node_RED و پروتکل MQTT و پلتفرم ۴ADAIOT یک گلدان هوشمند بسازیم.
شماتیک و اتصالات:
نحوه قرار دادن بلوک ها در پلتفرم برنامه نویسی بلوکی ۴ADAIOT:
کد ساخته شده توسط پلتفرم برنامه نویسی بلوکی ۴ADAIOT:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ ۳۷ ۳۸ ۳۹ ۴۰ ۴۱ ۴۲ ۴۳ ۴۴ ۴۵ ۴۶ ۴۷ ۴۸ ۴۹ ۵۰ ۵۱ ۵۲ ۵۳ ۵۴ ۵۵ ۵۶ ۵۷ ۵۸ ۵۹ ۶۰ ۶۱ ۶۲ ۶۳ ۶۴ ۶۵ ۶۶ ۶۷ ۶۸ ۶۹ ۷۰ ۷۱ ۷۲ ۷۳ ۷۴ ۷۵ ۷۶ ۷۷ ۷۸ ۷۹ ۸۰ ۸۱ ۸۲ ۸۳ ۸۴ ۸۵ ۸۶ ۸۷ ۸۸ ۸۹ ۹۰ ۹۱ ۹۲ ۹۳ ۹۴ ۹۵ ۹۶ ۹۷ ۹۸ |
///////////////////////////////// // Generated with a lot of love// // with 4ADAIOT FOR ESP8266 // // Website: https://4adateam.com // ///////////////////////////////// #include <ESP8266WiFi.h> #include <PubSubClient.h> #include "DHT.h" WiFiClient espClient; PubSubClient client(espClient); void reconnectmqttserver() { while (!client.connected()) { Serial.print("Attempting MQTT connection..."); String clientId = "ESP8266Client-"; clientId += String(random(0xffff), HEX); if (client.connect(clientId.c_str())) { Serial.println("connected"); client.subscribe("relay"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); delay(۵۰۰۰); } } } DHT dht5(۵,DHT11); char msgmqtt[۵۰]; void callback(char* topic, byte* payload, unsigned int length) { String MQTT_DATA = ""; for (int i=۰;i<length;i++) { MQTT_DATA += (char)payload[i];} if (MQTT_DATA == "on") { digitalWrite(۱۶,HIGH); } if (MQTT_DATA == "off") { digitalWrite(۱۶,LOW); } if (MQTT_DATA == "oton") { if (analogRead(A0) > ۴۵۰) { digitalWrite(۱۶,HIGH); } if (analogRead(A0) < ۴۵۰) { digitalWrite(۱۶,LOW); } } } void setup() { pinMode(۱۶, OUTPUT); Serial.begin(۹۶۰۰); digitalWrite(۱۶,LOW); WiFi.disconnect(); delay(۳۰۰۰); Serial.println("START"); WiFi.begin("نام وایفای","رمز عبور"); while ((!(WiFi.status() == WL_CONNECTED))){ delay(۳۰۰); Serial.print(".."); } Serial.println("Connected"); Serial.println("Your IP is"); Serial.println((WiFi.localIP().toString())); client.setServer("آدرس سرور", ۱۸۸۳); client.setCallback(callback); } void loop() { if (!client.connected()) { reconnectmqttserver(); } client.loop(); snprintf (msgmqtt, ۵۰, "%f",(dht5.readTemperature( ))); client.publish("temp", msgmqtt); snprintf (msgmqtt, ۵۰, "%f",(dht5.readHumidity())); client.publish("hum", msgmqtt); snprintf (msgmqtt, ۵۰, "%ld ",analogRead(A0)); client.publish("ylsens", msgmqtt); delay(۱۳۰۰); } |
برنامه نویسی نرم افزار Node_RED: