สอบถามเกี่ยวกับเขียน Code ไป Netpie ครับ

รบกวนถามเกี่ยวกับเขียน Code ไป Netpie ครับ Code ตามข้างล่างนี้ครับ 
ต้องการให้ relay1 ทำงาน พอกด on ต้องส่งค่าเป็น 0 แต่กด แล้ว ส่งค่ามาเป็น 1 ตลอด ไม่ทราบว่า Code ผลตรงไหนครับ

ส่วนตัว relay  ทำตามที่สั่งครับ

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include "DHT.h"
int ddht = 14; //D5
//int relay = 12; //D6
//int relay1 = 13; //D7
#define relay D6
#define relay1 D7
String autopump = "on";
#define DHTTYPE DHT11
DHT dht(ddht, DHTTYPE);

const char* ssid = "XXXXXXX";
const char* password = "XXXXXX";
const char* mqtt_server = "broker.netpie.io";
const int mqtt_port = 1883;
const char* mqtt_Client = "XXXXXXXXXXXXXXXXXXXXX";
const char* mqtt_username = "XXXXXXXXXXXXXXXXXXXXX";
const char* mqtt_password = "XXXXXXXXXXXXXXXXXXXX";
WiFiClient espClient;
PubSubClient client(espClient);
char msg[100];
void reconnect() {
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection…");
    if (client.connect(mqtt_Client, mqtt_username, mqtt_password)) {
      Serial.println("connected");
      client.subscribe("@msg/#");  
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println("try again in 5 seconds");
      delay(5000);
    }
  }
}
void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  String message;
  String tpc;
  for (int i = 0; i < length; i++) {
    message = message + (char)payload;
  }
  Serial.println(message);
  tpc = getMsg(topic, message);
}
void setup() {
  pinMode(relay, OUTPUT);
  digitalWrite(relay, HIGH); // relay ปิด
  pinMode(relay1, OUTPUT);
  digitalWrite(relay1, HIGH); // relay1 ปิด
  
  Serial.begin(115200);
  dht.begin();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  client.setServer(mqtt_server, mqtt_port);
  client.setCallback(callback);
}
void loop() {
  if (!client.connected()) {
    reconnect();
  }
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  if (autopump == "on") {
    if (h > 80) {
      digitalWrite(relay, LOW); //เปิด
      digitalWrite(relay1, LOW); //เปิด
    } else {
      digitalWrite(relay, HIGH); //ปิด
      digitalWrite(relay1, HIGH); //ปิด
    }
  }
  int r = digitalRead(relay);
  int r1 = digitalRead(relay1);
  String data = "{\"data\":{\"Humidity\": " + String(h) + ",\"Temperature\": " + String(t) + 
  ",\"relay\": " + String(r) +
  ",\"relay1\": " + String(r1) +
  "}}";
  Serial.println(data);
  data.toCharArray(msg , (data.length() + 1));
  client.publish("@shadow/data/update", msg);
  client.loop();
  delay(1000);
}
String getMsg(String topic_, String message_) {     
  if (topic_ == "@msg/relay") {
    if (message_ == "on") {                  //netpie["???"].publish("@msg/relay","on")
      digitalWrite(relay, LOW); //relay เปิด
      autopump = "off";
    } else if (message_ == "off") {          //netpie["???"].publish("@msg/relay","off")
      digitalWrite(relay, HIGH); //relay ปิด
      autopump = "on";
    }
  }
  return autopump;
  
   if (topic_ == "@msg/relay1") {
    if (message_ == "on") {                  //netpie["???"].publish("@msg/relay1","on")
      digitalWrite(relay1, HIGH); //relay1 เปิด
      
    } else if (message_ == "off") {          //netpie["???"].publish("@msg/relay1","off")
      digitalWrite(relay1, LOW); //relay1 ปิด
   
    }
  }
   return autopump;
}
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่