Ankündigung

Einklappen
Keine Ankündigung bisher.

MikroTik über LBS steuern | Edomi

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

    Wenn bei mir der MK-Router rebootet, kann danach der LBS keine Befehle mehr senden.

    folgende Fehlermeldungen erhalte ich:
    Code:
    A1=ERR UTIL PRESENCE
    A2=Transmitter is invalid. Sending aborted.

    Setzen von 0 und 1 auf E1 hilft nichts, lediglich nach einem Edomi-restart funktioniert es wieder.
    Hat jemand eine Idee dazu?


    sG
    Joe

    Kommentar


      Zitat von givemeone Beitrag anzeigen
      Hat jemand eine Idee dazu?
      Eigentlich sollte es über einen Restart via E1 funktionieren.
      Aber ich bin ohnehin an einem Redesign und einer Migration von MessageQueues zur EDOMI Queue dran. Da werde ich das Reconnect mal genauer unter die Lupe nehmen.

      Kommentar


        Der Version 1.1 des Mikrotik RouterOS LBS sollte nun ein automatisches Reconnect machen, falls es mal zu einer Unterbrechung der Netzverbindung kommt.
        Bei einem Fehler wird zunächst nach 1 Sekunde, dann nach 2, 4, 8, 16 ... 256 Sekunden ein Reconnect gemacht, danach alle 5 Minuten bis zur angegebenen Anzahl von Retries (E18). Bei E18=0 wird es endlos versucht. Bei einer begrenzten Anzahl von Reconnects (z.B. E18=10) wird nach 10 Reconnects der Befehl erneut ausgeführt, was dann wieder zu einem Reconnect Versuch (bis zu 10 mal) führt. Das ganze wird max. 3 mal wiederholt. Mein EMpfehlung ist E18=4 und E16 alle 30 Sekunden zu triggern. Bei E18=0 muss berücksichtigt werden, dass alle Befehle, welche in der Zeit geschickt werden, in der der Mikrotik Router nicht erreichbar ist, gepuffert werden und bei erfolgreicher Verbindung alle abgearbeitet werden. Bei E18=4 wird der Befehl bei nicht Erreichbarkeit des Routers verworfen.

        Der Eingang E16 muss im Gegensatz zum bisherigen LBS nun extern getriggert werden, z.B. alle 30 Sekunden durch einen Telegrammgenrator LBS.

        Probleme und Feedback wie immer gerne hier posten.


        Kommentar


          Servus! Vielen DANK!!! Tolles Update.
          Erste Tests haben sehr gut funktioniert.
          Auch beim Senden eines EXEC-Befehls wurde einen zuvor noch auf disconnected gestandenen router problemlos ausgeführt.
          Jetzt habe ich eine tolle Steuerung der ganzen Router (9 Stück) in der Visu. ==> Wow!!

          sG Joe

          Kommentar


            Hi André,
            wenn ich meine Filter-Ausprägung ein "|" aka. "pipe" enthält und das nun aber auch der Trenner für die Paramneter an E12, E13 oder E14 ist: Wie muss ich das | maskieren? Setzen in "" (des gesamten Filterwerts inkl dem |) hat zumindest nicht geholfen...

            Und eine zweite Frage: Bei E13 ("GET") kann man eine ID setzen, um die Antworten unterschiedliche Anfragen unterscheiden zu können. Da ich leider mit mancher Frage bei E13 erfolglos bin und bei E14 beantwortet bekomme: Wie unterscheidet man dort die Antworten mehrerer Fragen?

            Danke und VG, Carsten
            Zuletzt geändert von saegefisch; 25.01.2020, 23:03. Grund: Nachtrag 2. Frage

            Kommentar


              Hi Carsten,

              Zitat von saegefisch Beitrag anzeigen
              Wie muss ich das | maskieren?
              Da kann man derzeit nichts maskieren. | wird immer als Trenner interpretiert.

              Zitat von saegefisch Beitrag anzeigen
              Wie unterscheidet man dort die Antworten mehrerer Fragen?
              Auch das geht leider in der aktuellen Version nicht.

              Kommentar


                Danke, André. Schade. Aber irgendwas ist ja immer...

                Dann werde ich wohl die SSID zumindest meines Gastnetzes mal umbennenen gehen...
                Zur 2. Frage könnte man derzeit wohl versuchen, sie am JSON-Muster zu erkennen.

                Kommentar


                  Zitat von saegefisch Beitrag anzeigen
                  Zur 2. Frage könnte man derzeit wohl versuchen, sie am JSON-Muster zu erkennen.
                  Ich schreib das mal auf meine ToDo Liste, so kompliziert sollte insbesondere der zweite Punkt nicht sein.

                  Kommentar


                    Danke. Keine Eile...

                    Scheitere gerade eher am JSON-Extraktor (kleines OT hier): Mikrotik liefert mir mit Query "/caps-man registration-table print|ssid|ABC ! Gast|mac-address" ein feines JSON. Aber im Extraktor bekomme ich mit E1= {"count":1,"1":{"mac-address":"AA:BB:CC:1D:EE:FF"}}, E2 = "count" (liefert richtig "1"), aber wenn ich an E3 z.B. "count|1" oder "count|1|mac-address" versuche, kommt "LBS19001208.php | Fehlercode: 2 | Zeile: 14 | array_key_exists() expects parameter 2 to be array, integer given". Habe sicher nur einen Denkfehler...

                    Kommentar


                      In dem Fall muss E3 = 1|mac-address sein, da die 1 ja auf derselben Ebene wie count steht.
                      Aber Die Fehlermeldung zeigt, dass ich diesen Fehler noch abfangen muss.

                      Kommentar


                        Zitat von saegefisch Beitrag anzeigen
                        wenn ich meine Filter-Ausprägung ein "|" aka. "pipe" enthält und das nun aber auch der Trenner für die Paramneter an E12, E13 oder E14 ist: Wie muss ich das | maskieren? Setzen in "" (des gesamten Filterwerts inkl dem |) hat zumindest nicht geholfen...
                        Zitat von saegefisch Beitrag anzeigen
                        Dann werde ich wohl die SSID zumindest meines Gastnetzes mal umbennenen gehen...
                        Nicht nötig, mit der v1.2 kann man jetzt über E19 den Separator festlegen, der an den Eingängen E10-E15 verwendet wird. Default ist | (pipe)

                        Zitat von saegefisch Beitrag anzeigen
                        Und eine zweite Frage: Bei E13 ("GET") kann man eine ID setzen, um die Antworten unterschiedliche Anfragen unterscheiden zu können. Da ich leider mit mancher Frage bei E13 erfolglos bin und bei E14 beantwortet bekomme: Wie unterscheidet man dort die Antworten mehrerer Fragen?
                        Mit der v1.2 hat E14 auch die ID, welche dann bei der Antwort an E11 im JSON als Index verwendet wird.

                        ACHTUNG: Wer die Query Funktionalität in der v1.1 oder früher benutzt, muss nach dem Update auf v1.2 die Logik anpassen:
                        • E14 muss jetzt mit einer ID oder dem Separator an E19 starten
                        • A11 erzeugt jetzt ein JSON der Form { ID : Query-Result } und nicht mehr { Query-Result }

                        Kommentar


                          Zitat von jonofe Beitrag anzeigen
                          In dem Fall muss E3 = 1|mac-address sein, da die 1 ja auf derselben Ebene wie count steht.
                          ah - versuche in nachher mal.

                          Heißt das, dass die Eingänge kaskadiert (also in der JSON-Struktur aufeinander aufbauend) betrachtet werden und nicht jeder für sich disjunkt (also jeder vom von der Wurzel ausgehend)? Wenn dem so ist, dann konnte ich das zumindest nicht aus der Hilfe zum LBS herauslesen und ein entsprechender Hinweis wäre dort gelegentlich sicher hilfreich.

                          Kommentar


                            Zitat von jonofe Beitrag anzeigen
                            Mit der v1.2 hat E14 auch die ID, welche dann bei der Antwort an E11 im JSON als Index verwendet wird.
                            Du bist unglaublich, André! Danke!

                            So als allgemeiner Hinweis für jeden der nach einem anderen Trenner sucht, der optisch der Pipe etwas ähnlich ist, aber (fast) im allgemeinen Leben (außerhalb Spaniens) nicht vorkommt, wie ! oder ; oder # --> da hilft z.B. ALT+0161 = ¡

                            Kommentar


                              Zitat von saegefisch Beitrag anzeigen
                              Heißt das, dass die Eingänge kaskadiert (also in der JSON-Struktur aufeinander aufbauend) betrachtet werden und nicht jeder für sich disjunkt (also jeder vom von der Wurzel ausgehend)?
                              Nein. Jeder separat. Aber dein JSON sieht so aus:

                              json.PNG

                              1 und count sind beides Elemente auf oberster Ebene des JSON.

                              Als Array sieht das so aus (Annahme in $json ist dein JSON in Array Notation)

                              PHP-Code:
                              $json['count'] = 
                              PHP-Code:
                              $json[1] = array('mac-address' => 'AA:BB:CC:1D:EE:FF'
                              PHP-Code:
                              $json[1]['mac-address'] = 'AA:BB:CC:1D:EE:FF' 
                              Und so sieht es dann äquivalent im LBS aus:

                              E1 = {"count":1,"1":{"mac-address":"AA:BB:CC:1D:EE:FF"}}
                              E2 = count ergibt 1 an A2
                              E3 = 1 ergibt {"mac-address":"AA:BB:CC:1D:EE:FF"} an A3
                              E4 = 1|mac-address ergibt AA:BB:CC:1D:EE:FF an A4

                              Kommentar


                                Oh je, Du hast natürlich recht - ich habe schlicht das JSON falsch gelesen. Wenn man Dinge nicht ganz regelmäßig macht, verliert man manchmal den "auf den ersten Blick"-Blick... Aaaargh! sorry. Und danke für Deine Mühe.
                                Etwas ganz anderes, André,

                                meinen kompletten Neuanfang mit edomi 2.0 ohne Migration möchte ich auch mal zum Anlass nehmen, mich bei Dir für Deine LBS und Deinen unermüdlichen Einsatz hier im Forum zu bedanken - das ist definitiv im besten Wortsinne "außer-gewöhnlich".
                                Nur habe ich aus 100% Überzeugung kein PayPal und werde es auch wohl nie haben. Wir kann ich Dir auf anderem Wege einen monitären Dank zukommen lassen?

                                VG, Carsten
                                Zuletzt geändert von saegefisch; 26.01.2020, 12:50.

                                Kommentar

                                Lädt...
                                X