Dependencies:   LCD_i2c_GSOE ESP8266MQTT

Files at this revision

API Documentation at this revision

Comitter:
jack1930
Date:
Thu Aug 19 10:48:14 2021 +0000
Parent:
8:080aa372ff1f
Commit message:
QOS2

Changed in this revision

ESP8266MQTT.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/ESP8266MQTT.lib	Mon Aug 16 17:21:39 2021 +0000
+++ b/ESP8266MQTT.lib	Thu Aug 19 10:48:14 2021 +0000
@@ -1,1 +1,1 @@
-https://os.mbed.com/users/jack1930/code/ESP8266MQTT/#d8582413a5a1
+https://os.mbed.com/users/jack1930/code/ESP8266MQTT/#c504822dc073
--- a/main.cpp	Mon Aug 16 17:21:39 2021 +0000
+++ b/main.cpp	Thu Aug 19 10:48:14 2021 +0000
@@ -2,79 +2,73 @@
 #include "PubSubClient.h"   //MQTT- Bibliothek
 #include "LCD.h"            //LCD-Display-Bibliothek
 
-/*
-"mqtt-broker-hostname": {
-            "help": "MQTT Broker resolvable hostname.",
-            "value": "\"test.mosquitto.org\""
-        },
-*/
-PortOut diag(PortC,0xFF);   //Testausgabe für Binärzähler
-AnalogIn poti(PA_0);        //Testsensor Analogeingang Drehknopf    
-lcd mylcd;                  //LCD-Display
+#define A 0b00001
+#define B 0b00010
+#define C 0b00100
+#define D 0b01000
+#define Voll 0b00000
+
+PortOut zustand(PortC,0x1F);
+
 
 PubSubClient client;        //Deklaration des MQTT-Clients
+InterruptIn Lichtschranke(PA_1);
+char buffer[64];
+int anzahl;
+bool einfahrt=false;
 
-/*
-//Beschreibung von Message und MessageData
-struct Message
+void lichtschranke()
 {
-    enum QoS qos;
-    bool retained;
-    bool dup;
-    unsigned short id;
-    void *payload;
-    size_t payloadlen;
-};
-
-//MessageData beinhaltet Message und Topicname
-struct MessageData
-{
-    MessageData(MQTTString &aTopicName, struct Message &aMessage)  : message(aMessage), topicName(aTopicName)
-    { }
-
-    struct Message &message;
-    MQTTString &topicName;
-};
-*/
+    if (einfahrt==false)
+    {
+        switch (zustand)
+        {
+            case A: anzahl++; if (anzahl==22) zustand=B; break; 
+            case B: anzahl++; if (anzahl==44) zustand=C; break;
+            case C: anzahl++; if (anzahl==66) zustand=D; break;
+            case D: anzahl++; if (anzahl==88) zustand=Voll; break;           
+        }
+        einfahrt=true;
+    }
+}
 
 //Subscribe-Callbacks
-void subscribeCallback(MessageData& mymessage)
+void callback(MessageData& mymessage)
 {
-    mylcd.cursorpos(0);
-    //Der Inhalt einer Botschaft (payload) kann als String mit gibPayload 
-    //abgerufen werden
-    mylcd.printf("%s   ",client.gibPayload(mymessage).c_str());
+        zustand=A;
+        anzahl=0;
+        sprintf(buffer, "Fahrzeuge=%d", anzahl); //Potiwert in buffer speichern
+        client.publish("MBED/oehringen/faehrschiff", buffer); //unter Topic veröffentlichen 
 }
 
-void subscribeCallback2(MessageData& mymessage)
+void mqtt()
 {
-    mylcd.cursorpos(0x40);
-    mylcd.printf("%s   ",client.gibPayload(mymessage).c_str());
+    client.loop();  //Auf neue Botschaften prüfen
+    if (einfahrt)
+    {
+        sprintf(buffer, "Fahrzeuge=%d", anzahl); //Potiwert in buffer speichern
+        client.publish("MBED/oehringen/faehrschiff", buffer); //unter Topic veröffentlichen  
+        HAL_Delay(200); 
+        einfahrt=false;
+    }
 }
 
+void init()
+{
+    client.connect((char*)"joerg"); 
+    client.subscribe("MBED/oehringen/faehrschiffLeer", QOS0, callback); 
+    Lichtschranke.fall(&lichtschranke);
+    Lichtschranke.mode(PullDown);
+    zustand=A;
+    anzahl=0;    
+}
 
-//test.mosquitto.org 5.196.95.208
 int main()
 {
-    diag=1;
-    int d;
-    char buffer[64];
-    mylcd.clear();
-    client.connect((char*)"joerg"); //Verbinde Client mit ID 
-    //Client für topic einschreiben
-    client.subscribe("MBED/joerg/ersteTests", QOS0, subscribeCallback); 
-    client.subscribe("MBED/joerg/zweiteTests", QOS0, subscribeCallback2); 
+    init();
     while(true)
     {
-        client.loop();  //Auf neue Botschaften prüfen
-        diag=diag+1;    //Zähler auf PortC
-        d=diag;         //Zählerstand speichern
-        //Poti veröffentlichen
-        sprintf(buffer, "poti=%d", (int)(poti*4095)); //Potiwert in buffer speichern
-        client.publish("MBED/joerg/ersteTests", buffer); //unter Topic veröffentlichen
-        //diag veröffentlichen
-        sprintf(buffer, "diag=%d", d); //diag in buffer speichern
-        client.publish("MBED/joerg/zweiteTests", buffer); //unter Topic veröffentlichen
+        mqtt();
     }
 }