Ankündigung

Einklappen
Keine Ankündigung bisher.

MQTT API Server und MQTT Clients - LBS19001051 - LBS19001054

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

    #91
    Hi Jonofe,

    ich habe ja nicht das gleiche Problem wie der Kollege hier.

    Bei mir

    Code:
    Database changed
    
    mysql> SHOW PROCEDURE STATUS; show triggers;
    
    +-----------+--------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
    
    | Db        | Name         | Type      | Definer        | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
    
    +-----------+--------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
    
    | edomiLive | mqtt_publish | PROCEDURE | root@localhost | 2017-07-25 22:13:54 | 2017-07-25 22:13:54 | DEFINER       |         | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |
    
    +-----------+--------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
    
    1 row in set (0.00 sec)
    
    
    
    
    +---------------------+--------+-------+-----------------------------------------------------------+--------+---------+----------+----------------+----------------------+----------------------+--------------------+
    
    | Trigger             | Event  | Table | Statement                                                 | Timing | Created | sql_mode | Definer        | character_set_client | collation_connection | Database Collation |
    
    +---------------------+--------+-------+-----------------------------------------------------------+--------+---------+----------+----------------+----------------------+----------------------+--------------------+
    
    | mqtt_insert_trigger | INSERT | RAMko | CALL mqtt_publish(NEW.gatyp, NEW.ga, NEW.name, NEW.value) | AFTER  | NULL    |          | root@localhost | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |
    
    | mqtt_update_trigger | UPDATE | RAMko | CALL mqtt_publish(NEW.gatyp, NEW.ga, NEW.name, NEW.value) | AFTER  | NULL    |          | root@localhost | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |
    
    +---------------------+--------+-------+-----------------------------------------------------------+--------+---------+----------+----------------+----------------------+----------------------+--------------------+
    
    2 rows in set (0.01 sec)
    ... ist ja alles "vorhanden".

    Das löschen des LBS und folgendes



    Code:
    mysql
    USE edomiLive;
    DROP TRIGGER IF EXISTS mqtt_insert_trigger;
    DROP TRIGGER IF EXISTS mqtt_update_trigger;
    CREATE TRIGGER mqtt_insert_trigger AFTER INSERT ON RAMko FOR EACH ROW CALL mqtt_publish(NEW.gatyp, NEW.ga, NEW.name, NEW.value);
    CREATE TRIGGER mqtt_update_trigger AFTER UPDATE ON RAMko FOR EACH ROW CALL mqtt_publish(NEW.gatyp, NEW.ga, NEW.name, NEW.value);
    SHOW TRIGGERS;
    ..hat leider nichts gebracht.

    Zitat von jonofe Beitrag anzeigen
    Ja, das würde ich machen. und mal ein DROP auf trigger und procedure direkt aus mysql heraus. Dann siehst du, ob man die löschen kann.
    Wie mache ich den einen "DROP" auf die procedure?

    Ich denke darüber nach mal auf ein Backup von vor einer Woche zu gehen mit Edomi Version 1.50


    Jean-Luc Picard: "Things are only impossible until they are not."

    Kommentar


      #92
      Hallo!

      Mal eine Frage in die Runde: wie nutzt Ihr die MQTT CLIENT LBS denn so im Detail?
      Nutzt Ihr nur eine Instanz und abonniert dann alle möglichen Topics, die dann später durch einen anderen LBS zerpflückt werden?
      Oder nutzt Ihr pro Topic jeweils eine eigene Instanz?

      Ich hadere aktuell noch damit, wie ich die vielen Topic am besten verarbeiten soll. Zum Beispiel möchte ich einige MQTT Clients nutzen, die dieser Spez. folgen: https://github.com/mqtt-smarthome/mqtt-smarthome

      Zu nennen wäre da hm2mqtt.js, bravia2mqtt, etc.

      Ich überlege, ob es evtl. sinnvoll ist, jeweils eigene LBS zu bauen, die dann ein Topic/Payload wieder zu einem HM-Gerät, etc. abbilden und auch dann die entsprechenden Ein-/Ausgänge zur Verfügung stellen sollen. Das würde aber zum Beispiel bei Homematic ziemlich viele neue LBS bedeuten.

      Kommentar


        #93
        Zitat von trollmar Beitrag anzeigen

        Ich denke darüber nach mal auf ein Backup von vor einer Woche zu gehen mit Edomi Version 1.50

        Also das zurückspielen des alten Backups in verbidndung mit dem MQTT Publish Server LBS hat die Reaktionsgeschwindigkeit von Edomi wieder hergestellt.


        Bislang hatte ich nur den Subscribe Server LBS im Einsatz und den Publish nur aktiv aber ungenutzt eingebaut.

        Das muss sich jetzt mal ändern!!!

        Jetzt nochmal Basics zu dem MQTT Publisher LBS.

        In der Hilfe zum MQTT Publisher LBS steht:

        The communication objects will be published in the following structure:

        edomi/status/typ/[KO-name]
        edomi/status/typ/[KO-ID]
        E8=both

        Sagen wir ich habe eine KNX GA 0/1/1 in Edomi

        Jetzt aboniere ich folgendes Topic ( z.B mit mqttfx) :
        edomi/status/knx/0-1-1

        Müsste dann nicht bei änderung dieser GA eine neue Message/payload generiert und gepublished werden?

        Bei mir klappt das nicht!!
        Wenn ich mit mqttfx dieses Topic aboniere bekomme ich einen Payload.
        Dieser ändert sich aber nie ..egal was ich innerhalb Edomi oder im Bus mit dieser GA anstelle.

        Hilfe bitte









        Nanosonde

        Frag mich später nochmal. Grundsätzlich würde ich wohl einen Zentralen Baustein nehmen.
        Das ich jetzt so massive Probleme mit dem Edomi/MQTT Kombi hatte/habe ist das deaktivieren einer Logikseite sehr händisch
        Zuletzt geändert von trollmar; 26.07.2017, 10:14.
        Jean-Luc Picard: "Things are only impossible until they are not."

        Kommentar


          #94
          Wenn der Publish Server läuft und du keine Filter angelegt hast, dann sollte im Mosquitto Broker Log die Post abgehen.
          Passiert das?

          Kommentar


            #95
            Zitat von jonofe Beitrag anzeigen
            Wenn der Publish Server läuft und du keine Filter angelegt hast, dann sollte im Mosquitto Broker Log die Post abgehen.
            Passiert das?
            Hier mal ein Ausschnitt aus dem LOG

            Code:
            /var/log/mosquitto/
            cat mosquitto.log

            Code:
            1501086288: Received PINGREQ from EDOMI MQTT Subscribe Server (180)
            
            1501086288: Sending PINGRESP to EDOMI MQTT Subscribe Server (180)
            
            1501086291: Received PINGREQ from mqtt_ae676026.5198a
            
            1501086291: Sending PINGRESP to mqtt_ae676026.5198a
            
            1501086348: Received PINGREQ from EDOMI MQTT Subscribe Server (180)
            
            1501086348: Sending PINGRESP to EDOMI MQTT Subscribe Server (180)
            
            1501086351: Received PINGREQ from mqtt_ae676026.5198a
            
            1501086351: Sending PINGRESP to mqtt_ae676026.5198a
            
            1501086408: Received PINGREQ from EDOMI MQTT Subscribe Server (180)
            
            1501086408: Sending PINGRESP to EDOMI MQTT Subscribe Server (180)
            
            1501086411: Received PINGREQ from mqtt_ae676026.5198a
            
            1501086411: Sending PINGRESP to mqtt_ae676026.5198a
            
            1501086468: Received PINGREQ from EDOMI MQTT Subscribe Server (180)
            
            1501086468: Sending PINGRESP to EDOMI MQTT Subscribe Server (180)
            
            1501086471: Received PINGREQ from mqtt_ae676026.5198a
            
            1501086471: Sending PINGRESP to mqtt_ae676026.5198a
            
            1501086528: Received PINGREQ from EDOMI MQTT Subscribe Server (180)
            
            1501086528: Sending PINGRESP to EDOMI MQTT Subscribe Server (180)
            
            1501086531: Received PINGREQ from mqtt_ae676026.5198a
            
            1501086531: Sending PINGRESP to mqtt_ae676026.5198a
            
            1501086541: New connection from 192.168.10.2 on port 1883.
            
            1501086541: New client connected from 192.168.10.2 as 2f41287809dd43d5ac5a9da818fa673d (c1, k60, u'edomi').
            
            1501086541: Sending CONNACK to 2f41287809dd43d5ac5a9da818fa673d (0, 0)
            
            1501086588: Received PINGREQ from EDOMI MQTT Subscribe Server (180)
            
            1501086588: Sending PINGRESP to EDOMI MQTT Subscribe Server (180)
            
            1501086591: Received PINGREQ from mqtt_ae676026.5198a
            
            1501086591: Sending PINGRESP to mqtt_ae676026.5198a
            
            1501086611: Received PINGREQ from 2f41287809dd43d5ac5a9da818fa673d
            
            1501086611: Sending PINGRESP to 2f41287809dd43d5ac5a9da818fa673d
            
            1501086648: Received PINGREQ from EDOMI MQTT Subscribe Server (180)
            
            1501086648: Sending PINGRESP to EDOMI MQTT Subscribe Server (180)
            
            1501086651: Received PINGREQ from mqtt_ae676026.5198a
            
            1501086651: Sending PINGRESP to mqtt_ae676026.5198a
            
            1501086700: Client 2f41287809dd43d5ac5a9da818fa673d has exceeded timeout, disconnecting.
            
            1501086700: Socket error on client 2f41287809dd43d5ac5a9da818fa673d, disconnecting.
            
            1501086708: Received PINGREQ from EDOMI MQTT Subscribe Server (180)
            
            1501086708: Sending PINGRESP to EDOMI MQTT Subscribe Server (180)
            
            1501086711: Received PINGREQ from mqtt_ae676026.5198a
            Ich sehe hier nichts vom Publish Client (zumindest taucht der Name nicht auf)
            Der "neue Client" ist sicher MQTT.fx auf dem Macbook




            Hier der LBS mit Standart einstellungen

            sdas.jpg


            Komisch das MQTT.fx (http://www.mqttfx.org/) allerdings Publish Topics sieht.
            Dies könnte natürlich auch ein "Echo" aus Zeiten sein wo der LBS lief aber nicht genutzt worden ist.

            mgtt.fx.jpg


            Was kann ich tuen?
            Sollte ich die Server Publish LBS installation nochmal durchführen?
            Danke
            LG
            Zuletzt geändert von trollmar; 26.07.2017, 18:07.
            Jean-Luc Picard: "Things are only impossible until they are not."

            Kommentar


              #96
              Mach mal das was in #64 beschrieben ist. Und das mal posten.
              Dann sieht man ob procedure und trigger angelegt werden.

              Kommentar


                #97
                Zitat von jonofe Beitrag anzeigen
                Mach mal das was in #64 beschrieben ist. Und das mal posten.
                Dann sieht man ob procedure und trigger angelegt werden.
                OK.

                Code:
                mysql> USE edomiLive;
                
                Reading table information for completion of table and column names
                
                You can turn off this feature to get a quicker startup with -A
                
                
                
                
                Database changed
                
                mysql> SHOW PROCEDURE STATUS; show triggers;
                
                +-----------+--------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
                
                | Db        | Name         | Type      | Definer        | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
                
                +-----------+--------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
                
                | edomiLive | mqtt_publish | PROCEDURE | root@localhost | 2017-07-26 00:09:04 | 2017-07-26 00:09:04 | DEFINER       |         | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |
                
                +-----------+--------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
                
                1 row in set (0.00 sec)
                
                
                
                
                Empty set (0.00 sec)
                Code:
                ls -la /usr/local/edomi/www/data/liveproject/lbs/*1051.php
                
                -rw-r--r-- 1 root root 3293 26. Jul 00:08 /usr/local/edomi/www/data/liveproject/lbs/EXE19001051.php
                
                -rw-r--r-- 1 root root 4844 26. Jul 00:08 /usr/local/edomi/www/data/liveproject/lbs/LBS19001051.php
                Sieht aufjedenfall anders aus als vor meinem Backup restore (siehe Beitrag #91)
                Im Beitrag #91 hatte ich noch triggers?!

                Habe jetzt nochmal versucht

                Code:
                mysql
                USE edomiLive;
                DROP TRIGGER IF EXISTS mqtt_insert_trigger;
                DROP TRIGGER IF EXISTS mqtt_update_trigger;
                CREATE TRIGGER mqtt_insert_trigger AFTER INSERT ON RAMko FOR EACH ROW CALL mqtt_publish(NEW.gatyp, NEW.ga, NEW.name, NEW.value);
                CREATE TRIGGER mqtt_update_trigger AFTER UPDATE ON RAMko FOR EACH ROW CALL mqtt_publish(NEW.gatyp, NEW.ga, NEW.name, NEW.value);
                SHOW TRIGGERS;
                auszuführen.

                Bei
                Code:
                mysql> DROP TRIGGER IF EXISTS mqtt_insert_trigger;
                
                ERROR 1360 (HY000): Trigger does not exist
                mysql> CREATE TRIGGER mqtt_insert_trigger AFTER INSERT ON RAMko FOR EACH ROW CALL mqtt_publish(NEW.gatyp, NEW.ga, NEW.name, NEW.value);
                
                ERROR 1359 (HY000): Trigger already exists
                Der Trigger existiert nicht und irgendwie doch?
                Zuletzt geändert von trollmar; 26.07.2017, 18:38.
                Jean-Luc Picard: "Things are only impossible until they are not."

                Kommentar


                  #98
                  Das ist wohl exakt dasselbe Problem, dass weiter oben auch schon erwähnt wurde. Es ist leider nie eine Lösung hier dokumentiert worden.
                  Aber es ist definitiv die Ursache für das Problem. Ohne Trigger wird kein MQTT publish getriggert.
                  Leider weiß ich auch nicht woran das liegt und wie man mysql da wieder auf die Sprünge helfen kann.

                  Kommentar


                    #99
                    Hi,

                    Danke Jonofe für die Hilfe!!!!!!


                    Teilerfolg zu vermelden.

                    Ich habe folgendes gemacht:

                    Code:
                    cd /var/lib/mysql/edomiLive/
                    rm mqtt_insert_trigger.TRN
                    rm mqtt_update_trigger.TRN

                    und in mysql:

                    Code:
                    mysql> USE edomiLive;
                    [I]Reading table information for completion of table and column names
                    You can turn off this feature to get a quicker startup with -A
                    Database changed[/I]
                    
                    mysql> DROP TRIGGER IF EXISTS mqtt_insert_trigger;
                    [I]Query OK, 0 rows affected, 1 warning (0.00 sec)[/I]
                    
                    mysql> DROP TRIGGER IF EXISTS mqtt_update_trigger;
                    [I]Query OK, 0 rows affected, 1 warning (0.00 sec)[/I]
                    
                    mysql> CREATE TRIGGER mqtt_insert_trigger AFTER INSERT ON RAMko FOR EACH ROW CALL mqtt_publish(NEW.gatyp, NEW.ga, NEW.name, NEW.value);
                    [I]Query OK, 0 rows affected (0.04 sec)[/I]
                    
                    
                    mysql> CREATE TRIGGER mqtt_update_trigger AFTER UPDATE ON RAMko FOR EACH ROW CALL mqtt_publish(NEW.gatyp, NEW.ga, NEW.name, NEW.value);
                    [I]Query OK, 0 rows affected (0.01 sec)[/I]


                    Danach:

                    Code:
                    mysql> SHOW TRIGGERS;
                    
                    +---------------------+--------+-------+-----------------------------------------------------------+--------+---------+----------+----------------+----------------------+----------------------+--------------------+
                    
                    | Trigger             | Event  | Table | Statement                                                 | Timing | Created | sql_mode | Definer        | character_set_client | collation_connection | Database Collation |
                    
                    +---------------------+--------+-------+-----------------------------------------------------------+--------+---------+----------+----------------+----------------------+----------------------+--------------------+
                    
                    | mqtt_insert_trigger | INSERT | RAMko | CALL mqtt_publish(NEW.gatyp, NEW.ga, NEW.name, NEW.value) | AFTER  | NULL    |          | root@localhost | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |
                    
                    | mqtt_update_trigger | UPDATE | RAMko | CALL mqtt_publish(NEW.gatyp, NEW.ga, NEW.name, NEW.value) | AFTER  | NULL    |          | root@localhost | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |
                    
                    +---------------------+--------+-------+-----------------------------------------------------------+--------+---------+----------+----------------+----------------------+----------------------+--------------------+
                    
                    2 rows in set (0.01 sec)
                    
                    
                    
                    
                    mysql> SHOW PROCEDURE STATUS; show triggers;
                    
                    +-----------+--------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
                    
                    | Db        | Name         | Type      | Definer        | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
                    
                    +-----------+--------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
                    
                    | edomiLive | mqtt_publish | PROCEDURE | root@localhost | 2017-07-26 00:09:04 | 2017-07-26 00:09:04 | DEFINER       |         | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |
                    
                    +-----------+--------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
                    
                    1 row in set (0.00 sec)
                    
                    
                    
                    
                    +---------------------+--------+-------+-----------------------------------------------------------+--------+---------+----------+----------------+----------------------+----------------------+--------------------+
                    
                    | Trigger             | Event  | Table | Statement                                                 | Timing | Created | sql_mode | Definer        | character_set_client | collation_connection | Database Collation |
                    
                    +---------------------+--------+-------+-----------------------------------------------------------+--------+---------+----------+----------------+----------------------+----------------------+--------------------+
                    
                    | mqtt_insert_trigger | INSERT | RAMko | CALL mqtt_publish(NEW.gatyp, NEW.ga, NEW.name, NEW.value) | AFTER  | NULL    |          | root@localhost | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |
                    
                    | mqtt_update_trigger | UPDATE | RAMko | CALL mqtt_publish(NEW.gatyp, NEW.ga, NEW.name, NEW.value) | AFTER  | NULL    |          | root@localhost | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |
                    
                    +---------------------+--------+-------+-----------------------------------------------------------+--------+---------+----------+----------------+----------------------+----------------------+--------------------+
                    
                    2 rows in set (0.00 sec)
                    Jetzt läuft der Server Publish LBS

                    Leider ist jetzt das Timing Problem wieder da.
                    Ich habe mal auf folgenden Topic Subscribed

                    edomi/status/internal/26

                    Das ist der minuten Trigger von Edomi.
                    Es dauert ca. 7 sek bis der Topic bei MQTT.fx ankommt.

                    Auch wenn ich, wie oben schon beschrieben, ein Licht via edomi GA schalte dauert es ca. 4 sek bis das Licht an ist.
                    Ich glaube irgendwas im LBS oder in der SQL Datenbank zieht die verarbeitung runter.

                    CPU ist bei 8% Ram bei 50%

                    Auch treten seitdem der mySQL trigger wieder da ist wieder die "RW Err" auf.
                    Keine Ahnung womit die zusammenhängen.

                    Gibt es irgendeinen Weg herauszusfinden was diese RW Err sind? oder irgendeine andere Idee?

                    LG
                    Zuletzt geändert von trollmar; 26.07.2017, 21:08.
                    Jean-Luc Picard: "Things are only impossible until they are not."

                    Kommentar


                      hast du die aktuelle Version der MQTT LBS im Einsatz?

                      Kommentar


                        Zitat von jonofe Beitrag anzeigen
                        hast du die aktuelle Version der MQTT LBS im Einsatz?
                        Publish Server 0.3
                        Subscribe Server 0.5


                        Ich überlege ob ich mal ein neues System unter Proxmox installieren sollte.
                        Um einen Vergleich zu haben.


                        ..was kann das nur sein?
                        Zuletzt geändert von trollmar; 26.07.2017, 21:38.
                        Jean-Luc Picard: "Things are only impossible until they are not."

                        Kommentar


                          wie lange dauert es denn bis ein publish im Log des Brokers auftaucht?
                          Ist es bei allen Topics so langsam. Müsste ja im Mosquitto Log zu sehen sein.
                          Da müsste ja dann einiges los sein, wenn du alles publishst. Jede Sekunde sollte da z.B. die Zeit ankommen.

                          Kommentar


                            Zitat von trollmar Beitrag anzeigen
                            Nanosonde
                            Frag mich später nochmal. Grundsätzlich würde ich wohl einen Zentralen Baustein nehmen.
                            Das ich jetzt so massive Probleme mit dem Edomi/MQTT Kombi hatte/habe ist das deaktivieren einer Logikseite sehr händisch
                            Ich hatte ja zwischendurch auch einmal den Effekt, dass Edomi nicht mehr richtig funktionierte, nachdem der Broker mal kurz von mir beendet wurde.
                            Aus diesem Grund habe ich die beiden MQTT Server LBS auch erstmal komplett wieder rausgeschmissen.
                            Das ist mir im Produktivsystem zu heikel. Auch wenn das mit den SQL Triggern ja sehr überschaubar ist.

                            Schön wäre es, wenn Edomi einfach eine Mini-API für solche besonderen LBS zur Verfügung stellen könnte, so dass man an der DB selbst nicht rumfummeln muss:
                            • logic_setKo()
                            • logic_getKo()
                            • logic_registerKoEventCallBack(callbackFunction( eventType, eventData ) )
                              • eventType könnte dann "update, insert, delete" oder sonst was sein.

                            Zuletzt geändert von Nanosonde; 27.07.2017, 06:42.

                            Kommentar


                              Solche Probleme sind bei mir bislang nicht aufgetreten. Wie sind denn eure EDOMI Server dimensioniert?

                              Kommentar


                                Zitat von trollmar Beitrag anzeigen

                                Code:
                                cd /var/lib/mysql/edomiLive/
                                rm mqtt_insert_trigger.TRN
                                rm mqtt_update_trigger.TRN
                                Genau das war mein Problem, hatte bisher keine Lösung gefunden. Vielen Dank für die Info hier. Damit ist zumindest das Problem mit dem "Trigger already exists" verschwunden.

                                Ich werde heute Abend versuchen ob der Publish Baustein damit wieder geht.

                                Verzögerungen hatte ich bisher keine nennenswerten. Habe auch alles ohne Filter per mqtt veröffentlicht.

                                Kommentar

                                Lädt...
                                X