GenStart.ino 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #include <ESP8266WiFi.h>
  2. #include <ArduinoMqttClient.h>
  3. #include <ArduinoJson.h>
  4. #include "secrets.h"
  5. WiFiClient wifiClient;
  6. MqttClient mqttClient(wifiClient);
  7. //pin 0 red led
  8. //pin 2 blue led
  9. //#include <secrets>;
  10. // constants won't change:
  11. const long interval = 10000; // interval at which to read voltage and report
  12. unsigned long previousMillis = 0; // will store last time LED was updated
  13. const int analogInPin = A0;
  14. int sensorValue = 0;
  15. StaticJsonDocument<200> doc;
  16. int charCount;
  17. char json[200];
  18. int myMessage;
  19. int myPin;
  20. void setup()
  21. {
  22. Serial.begin(115200);
  23. Serial.println();
  24. pinMode(0, OUTPUT);
  25. digitalWrite(0, HIGH);
  26. pinMode(4, OUTPUT);
  27. digitalWrite(4, LOW);
  28. pinMode(12, OUTPUT);
  29. digitalWrite(12, LOW);
  30. pinMode(14, OUTPUT);
  31. digitalWrite(14, LOW);
  32. WiFi.begin(SECRET_SSID, SECRET_PASS);
  33. Serial.print("Connecting");
  34. while (WiFi.status() != WL_CONNECTED)
  35. {
  36. delay(500);
  37. Serial.print(".");
  38. }
  39. Serial.println();
  40. Serial.print("Connected, IP address: ");
  41. Serial.println(WiFi.localIP());
  42. if (!mqttClient.connect("192.168.1.38", 1883)) {
  43. Serial.print("MQTT connection failed! Error code = ");
  44. Serial.println(mqttClient.connectError());
  45. while (1);
  46. }
  47. Serial.print("Connected to MQTT");
  48. // subscribe to a topic
  49. mqttClient.subscribe("test1");
  50. mqttClient.subscribe("test2");
  51. mqttClient.subscribe("test3");
  52. }
  53. void loop() {
  54. int messageSize = mqttClient.parseMessage();
  55. if (messageSize) {
  56. // we received a message, print out the topic and contents
  57. Serial.print("Received a message with topic '");
  58. Serial.print(mqttClient.messageTopic());
  59. Serial.print("', length ");
  60. Serial.print(messageSize);
  61. Serial.println(" bytes:");
  62. myPin=0;
  63. if(mqttClient.messageTopic()=="test1"){
  64. myPin=4;
  65. }
  66. if(mqttClient.messageTopic()=="test2"){
  67. myPin=12;
  68. }
  69. if(mqttClient.messageTopic()=="test3"){
  70. myPin=14;
  71. }
  72. Serial.println(myPin);
  73. // use the Stream interface to print the contents
  74. charCount = 0;
  75. while (mqttClient.available()) {
  76. json[ charCount++ ] = (char)mqttClient.read();
  77. }
  78. Serial.println(json);
  79. DeserializationError error = deserializeJson(doc, json);
  80. if(doc["state"] == "ON"){
  81. Serial.println("Tested True");
  82. digitalWrite(myPin, HIGH);
  83. } else {
  84. Serial.println("Tested False");
  85. digitalWrite(myPin, LOW);
  86. }
  87. }
  88. unsigned long currentMillis = millis();
  89. if (currentMillis - previousMillis >= interval) {
  90. previousMillis = currentMillis;
  91. sensorValue = analogRead(analogInPin);
  92. Serial.print("sensor = ");
  93. Serial.print(sensorValue);
  94. Serial.println("");
  95. mqttClient.beginMessage("houseVoltage");
  96. mqttClient.print(sensorValue);
  97. mqttClient.endMessage();
  98. }
  99. }