Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include <ESP8266WiFi.h>
- #include <WiFiClient.h>
- #include <PubSubClient.h>
- #include <Nextion.h>
- const char* mqtt_server = "";
- const char* ssid = "";
- const char* password = "";
- //const char* mqtt_user = "1";
- //const char* mqtt_password = "3";
- //String temp = "";
- //String luft = "";
- //String raumtemp = "";
- WiFiClient net;
- PubSubClient client(net);
- NexButton switch0 = NexButton(1, 3, "switch0");
- //NexButton heizung = NexButton(0, 4, "heizung"); // Button On Off
- //NexButton heizungZuruck = NexButton(1, 1, "heizungZuruck");
- //NexButton r0 = NexButton(2, 3, "r0");
- //NexButton r50 = NexButton(2, 2, "r50");
- //NexButton r100 = NexButton(2, 1, "r100");
- NexTouch *nex_listen_list[] = {
- &switch0,
- // &heizung,
- // &heizungZuruck,
- // &r0,
- // &r50,
- // &r100,
- NULL // String terminated
- };
- void setup() {
- pinMode(BUILTIN_LED, OUTPUT);
- pinMode(D1, OUTPUT);
- Serial.begin(9600);
- switch0.attachPush(switch0PushCallback); // Button press
- //lichtonoff.attachPop(lichtonoffPopCallback);
- //heizung.attachPush(heizungPushCallback);
- //heizungZuruck.attachPush(heizungZuruckPushCallback); // Button release
- //r0.attachPush(r0PushCallback);
- //r50.attachPush(r50PushCallback);
- //r100.attachPush(r100PushCallback);
- //(500);
- connect();
- }
- void loop() {
- if (!client.connected()) {
- reconnect();
- }
- client.loop();
- nexLoop(nex_listen_list); // Check touch events
- sendDataToDisplay();
- client.loop();
- refreshDisplay();
- delay(500);
- }
- void refreshDisplay(){
- }
- void connect() {
- Serial.println("Connecting Wifi");
- WiFi.mode(WIFI_AP_STA);
- WiFi.begin(ssid, password);
- // WiFi
- while (WiFi.waitForConnectResult() != WL_CONNECTED) {
- WiFi.begin(ssid, password);
- }
- Serial.println("Connecting MQTT");
- // MQTT
- client.setServer(mqtt_server, 1885);
- client.setCallback(callback);
- }
- void callback(char* topic, byte* payload, unsigned int length) {
- String sTopic = String(topic);
- if (sTopic == "NextionSwitch/Wohnzimmer/Eingabe") {
- // Workaround to get int from payload
- temp = "";
- Serial.print("");
- for (int i = 0; i < length; i++) {
- temp += (char)payload[i]; }
- if(temp.indexOf("luft") == 0) {
- luft = temp;
- } else if(temp.indexOf("temp") == 0) {
- raumtemp = temp;
- } else {
- Serial.print(temp);
- for(int i = 0; i < 3;i++) {Serial.write(0xff);}
- }
- sendDataToDisplay();
- }
- else {
- Serial.print("Dieses Topic kenne ich nicht: ");
- Serial.println(sTopic);
- }
- }
- void sendDataToDisplay() {
- if(raumtemp != "") {
- Serial.print(raumtemp);
- for(int i = 0; i < 3;i++) {Serial.write(0xff);}
- }
- if(luft != "") {
- Serial.print(luft);
- for(int i = 0; i < 3;i++) {Serial.write(0xff);}
- }
- }
- void reconnect() {
- while (!client.connected()) {
- String clientId = "NextionSwitch-";
- clientId += String(random(0xffff), HEX);
- if (client.connect(clientId.c_str())) {
- client.subscribe("NextionSwitch/Wohnzimmer/Eingabe");
- } else {
- Serial.print("failed, rc=");
- Serial.print(client.state());
- Serial.println(" try again in 5 seconds");
- delay(5000);
- }
- }
- }
- //void heizungZuruckPushCallback(void *ptr) {
- // digitalWrite(BUILTIN_LED, HIGH); // Turn ON internal LED
- // client.publish("Wohnung/kinderZimmer/display", "heizungZuruck");
- //}
- //void heizungPushCallback(void *ptr) {
- // digitalWrite(BUILTIN_LED, HIGH); // Turn ON internal LED
- // client.publish("Wohnung/kinderZimmer/display", "heizung");
- //}
- void switch0PushCallback(void *ptr) {
- if (digitalRead(D1)==LOW) {
- // Anweisungsblock für wahr
- digitalWrite(D1,HIGH);
- client.publish("NextionSwitch/Wohnzimmer/Power", "licht an");
- } else {
- // Anweisungsblock für falsch
- digitalWrite(D1,LOW);
- client.publish("NextionSwitch/Wohnzimmer/Power", "licht aus");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement