mqtt_out.ino 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. void publishCurrentThermostatValues() {
  2. char tmp_topic_out[50];
  3. updateCurrentHeatingModeName();
  4. updateCurrentPresetName();
  5. char ch_setTemp[6];
  6. char ch_currSetTemp[6];
  7. dtostrf(setTemp, 1, 1, ch_setTemp );
  8. dtostrf(currSetTemp, 1, 1, ch_currSetTemp );
  9. Serial.print("heatingMode: '");
  10. Serial.print(heatingMode);
  11. Serial.println("'");
  12. Serial.print("set temp: '");
  13. Serial.print(ch_setTemp);
  14. Serial.println("'");
  15. Serial.print("current set temp: '");
  16. Serial.print(ch_currSetTemp);
  17. Serial.println("'");
  18. sprintf(tmp_topic_out, "%s/%s", mqtt_topic_out, "setTemp");
  19. mqttclient.publish(tmp_topic_out, ch_setTemp);
  20. yield();
  21. sprintf(tmp_topic_out, "%s/%s", mqtt_topic_out, "currSetTemp");
  22. mqttclient.publish(tmp_topic_out, ch_currSetTemp);
  23. yield();
  24. sprintf(tmp_topic_out, "%s/%s", mqtt_topic_out, "mode");
  25. char ch_heatingMode[3];
  26. sprintf(ch_heatingMode, "%d", heatingMode);
  27. mqttclient.publish(tmp_topic_out, ch_heatingMode);
  28. sprintf(tmp_topic_out, "%s/%s", mqtt_topic_out, "modeName");
  29. mqttclient.publish(tmp_topic_out, currentModeName);
  30. sprintf(tmp_topic_out, "%s/%s", mqtt_topic_out, "preset");
  31. char ch_preset[3];
  32. sprintf(ch_preset, "%d", preset);
  33. mqttclient.publish(tmp_topic_out, ch_preset);
  34. sprintf(tmp_topic_out, "%s/%s", mqtt_topic_out, "presetName");
  35. mqttclient.publish(tmp_topic_out, currentPresetName);
  36. sprintf(tmp_topic_out, "%s/%s", mqtt_topic_out, "presetHA");
  37. if (preset == 0) mqttclient.publish(tmp_topic_out, "none");
  38. else mqttclient.publish(tmp_topic_out, currentPresetName);
  39. yield();
  40. char ch_turnHeatingOn[5];
  41. if (turnHeatingOn) strcpy(ch_turnHeatingOn, "on");
  42. else strcpy(ch_turnHeatingOn, "off");
  43. sprintf(tmp_topic_out, "%s/%s", mqtt_topic_out, "heating");
  44. mqttclient.publish(tmp_topic_out, ch_turnHeatingOn);
  45. yield();
  46. char buf[101];
  47. sprintf(buf, "%d", heatingOnTime);
  48. sprintf(tmp_topic_out, "%s/%s", mqtt_topic_out, "heatingOnTime");
  49. mqttclient.publish(tmp_topic_out, buf);
  50. yield();
  51. sprintf(buf, "%d", heatingOffTime);
  52. sprintf(tmp_topic_out, "%s/%s", mqtt_topic_out, "heatingOffTime");
  53. mqttclient.publish(tmp_topic_out, buf);
  54. yield();
  55. }
  56. void publishCurrentSensorValues() {
  57. if ( lastTempUpdate != 0 && (millis() - lastTempUpdate) < 120000 ) {
  58. char tmp_topic_out[50];
  59. char temp_chararr[6];
  60. char hum_chararr[4];
  61. dtostrf(currTemp, 1, 1, temp_chararr );
  62. sprintf(hum_chararr, "%2i", currHum);
  63. Serial.print("temp: '");
  64. Serial.print(temp_chararr);
  65. Serial.println("'");
  66. sprintf(tmp_topic_out, "%s/%s", mqtt_topic_out, "temp");
  67. mqttclient.publish(tmp_topic_out, temp_chararr);
  68. yield();
  69. Serial.print("hum: '");
  70. Serial.print(currHum);
  71. Serial.println("'");
  72. sprintf(tmp_topic_out, "%s/%s", mqtt_topic_out, "hum");
  73. mqttclient.publish(tmp_topic_out, hum_chararr);
  74. yield();
  75. dtostrf(currTemp_raw, 1, 1, temp_chararr );
  76. sprintf(hum_chararr, "%2i", currHum_raw);
  77. Serial.print("temp_raw: '");
  78. Serial.print(temp_chararr);
  79. Serial.println("'");
  80. sprintf(tmp_topic_out, "%s/%s", mqtt_topic_out, "temp_raw");
  81. mqttclient.publish(tmp_topic_out, temp_chararr);
  82. yield();
  83. Serial.print("hum_raw: '");
  84. Serial.print(currHum_raw);
  85. Serial.println("'");
  86. sprintf(tmp_topic_out, "%s/%s", mqtt_topic_out, "hum_raw");
  87. mqttclient.publish(tmp_topic_out, hum_chararr);
  88. yield();
  89. }
  90. }
  91. void publishCurrentPIRValue() {
  92. char tmp_topic_out[50];
  93. sprintf(tmp_topic_out, "%s/%s", mqtt_topic_out, "PIR");
  94. // PIR internal topic
  95. if (PIRSensorOn) {
  96. mqttclient.publish(tmp_topic_out, mqtt_payload_pir_on);
  97. }
  98. else {
  99. mqttclient.publish(tmp_topic_out, mqtt_payload_pir_off);
  100. }
  101. // PIR additional topic
  102. if (strlen(mqtt_topic_pir) >= 4) {
  103. if (PIRSensorOn) {
  104. mqttclient.publish(mqtt_topic_pir, mqtt_payload_pir_on);
  105. }
  106. else {
  107. mqttclient.publish(mqtt_topic_pir, mqtt_payload_pir_off);
  108. }
  109. }
  110. }