Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS19001054 - MQTT Subscribe Client - E12 ohne Funktion?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    LBS19001054 - MQTT Subscribe Client - E12 ohne Funktion?

    Hallo Zusammen, Hallo jonofe,

    Ich habe das Problem, dass mein Go-e Charger extrem viele Messages an den MQTT-Broker sendet und sich in EDOMI dadurch die Logic-Queu hochschaukelt. Nach einem ersten Blick in den Quellcode sieht es (für mich) so aus, als ist E12 ohne Funktion. Wie löst ihr das Problem, wenn ein Client sehr hochfrequent Nachrichten schickt?

    Zwar wird hier auf die Variable 3 verwiesen, allerdings, kann ich die Definition nicht finden.

    PHP-Code:
    logging($id"Topic: $message->topic - Payload: $message->payload");
    $sleeptime logic_getVar($id3);
    usleep($sleeptime 1000);​ 
    Hat jemand eine Idee?
    Gruß
    Stefan
    Gruß
    Stefan

    #2
    Die ist ganz oben im Sourcecode definiert:
    [v#1 = 0 ] // Start Daemon only once
    [v#2 = 0 ] // Message Queue ID
    [v#3 = 0 ] // Sleeping time between received topics​

    Kommentar


      #3
      Du kannst auch die Zeile

      PHP-Code:
      $sleeptime logic_getVar($id3); 
      durch

      PHP-Code:
      if (is_numeric($E[12]['value'])) $sleeptime intval($E[12]['value']);
      else 
      $sleeptime logic_getVar($id3); 
      Ich denke so war ursprünglich auch der Eingang E12 geplant, wurde aber bislang nicht umgesetzt.

      Kommentar


        #4
        Zusätzlich macht es natürlich Sinn nur zu den Topics zu subscriben, die man wirklich braucht.
        Welchen QoS nutzt du beim Subscribe bzw. der eCharger beim Publish? Im loaklen Netz würde ich aus Performance Gründen immer 0 wählen.

        Kommentar


          #5
          Zitat von McJameson Beitrag anzeigen
          Die ist ganz oben im Sourcecode definiert:
          Ups ... die habe ich tatsächlich übersehen ;-)

          Zitat von jonofe Beitrag anzeigen
          ch denke so war ursprünglich auch der Eingang E12 geplant, wurde aber bislang nicht umgesetzt.
          Ich hab es jetzt etwas anders gelöst, da ich mir nicht sicher war, ob $E an dieser Stelle verfügbar ist:

          Innerhalb des while-Loops:
          PHP-Code:
          logic_setVar($id,3,$E[12]['value']); 

          Zitat von jonofe Beitrag anzeigen
          Zusätzlich macht es natürlich Sinn nur zu den Topics zu subscriben, die man wirklich braucht. Welchen QoS nutzt du beim Subscribe bzw. der eCharger beim Publish? Im lokalen Netz würde ich aus Performance Gründen immer 0 wählen.​
          QoS beim Charger ist 0 am LBS habe ich QoS 1 eingestellt. Werde das gleich mal auf 0 umstellen.
          Gruß
          Stefan

          Kommentar


            #6
            Zitat von MrIcemanLE Beitrag anzeigen
            am LBS habe ich QoS 1 eingestellt. Werde das gleich mal auf 0 umstellen.
            Ich denke das wird die Performance deutlich steigern.

            Kommentar


              #7
              Zitat von jonofe Beitrag anzeigen
              Ich denke das wird die Performance deutlich steigern.
              Nur so aus Interesse: Warum ist es relevant welche QoS beim subscriben eingestellt ist? Ich dachte immer, dass das eher ein "Publish-Paramter" ist?
              Gruß
              Stefan

              Kommentar


                #8
                Mein Verständnis ist (ich bin auch kein MQTT Experte), dass der MQTT Broker den QoS Handshake mit dem Subscriber macht, d.h. der Subscribe Client bestätigt mit einem "PUBACK", dass er das Topic erhalten hat, Ansonsten würde der Broker nochmals senden bis er ein PUBACK bekommt oder ein Timeout greift. Grundsätzlich ist QoS immer zwischen Broker und Client spezifiziert (egal ob publish oder subscribe), nicht end-to-end. D.h. im o.g. Fall sendet der Subscribe Client LBS (bzw. die PHP Mosquitto Library) für jedes Telegram noch eine Bestätigung. Die fällt weg, wenn man QoS 0 verwendet.

                Kommentar

                Lädt...
                X