Ankündigung

Einklappen
Keine Ankündigung bisher.

MikroTik über LBS steuern | Edomi

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

  • saegefisch
    antwortet
    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...

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    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.

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    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.

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    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.

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    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

    Einen Kommentar schreiben:


  • givemeone
    antwortet
    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

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    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.


    Einen Kommentar schreiben:


  • jonofe
    antwortet
    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.

    Einen Kommentar schreiben:


  • givemeone
    antwortet
    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

    Einen Kommentar schreiben:


  • givemeone
    antwortet
    Perfekt, das geht. Schreibe jetzt per schedule 10 sekündlich den Wert in die Variable... ????

    Danke!

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von givemeone Beitrag anzeigen
    Dann kannst Du das per USB an den Router hängen und es wird dort als LTE erkannt....
    ... eine spannende Sache auch für Notsituationen.
    Das werde ich am WE mal testen.

    Das Auslesen aus der globalen Variable müsste eigentlich über den GET Eingang des LBS funktionieren.

    Versuch mal

    LTE|/system/script/environment|name|cgi|value

    Dies bedeutet, dass im Ergebnis von /system/script/environment print nach "cgi" im Feld "name" gesucht wird und am Ende "value" zurückgegeben wird.

    Einen Kommentar schreiben:


  • givemeone
    antwortet
    Nachtrag 2: Hast Du ein Android Handy?
    Dann kannst Du das per USB an den Router hängen und es wird dort als LTE erkannt....
    ... eine spannende Sache auch für Notsituationen.

    Einen Kommentar schreiben:


  • givemeone
    antwortet
    Nachtrag: Hier ein Screenshot der globalen Variable...

    tmp.jpg

    Einen Kommentar schreiben:


  • givemeone
    antwortet
    Ja, steht in Winbox.
    Hier ein Screenshot.
    tmp.jpg
    Alternativ kann ich es mit
    Code:
     /interface lte info 0 once as-value
    auch in eine (lokale oder globale) Variable speichern.
    Kann ich eine solche dann irgendwie auslesen?

    also zB:
    Code:
    :local cqi [ /interface lte info 0 once as-value ];
    Per Telegram versenden geht leider nicht, da er gewisse Formatierungen encoden muss...
    Auch direkt in ein iKO schreiben geht wegen der Formatierung nicht.
    Hatte dazu dies in einem Mikrotik-Script versucht:

    Code:
    /tool fetch url="https://edomiIP/remote/\?login=remote&pass=remote&koid=1234&kovalue=$var" check-certificate=no as-value output=none;
    Mit einfachen Werten funktioniert das bestens.


    Edit: A1 und A2, sowie sämtliche Ausgänge bleiben unverändert....
    Zuletzt geändert von givemeone; 27.11.2019, 21:39.

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Ich vermute, dass das nicht geht. Ich kann es aber auch nicht nachstellen, da ich kein LTE Device habe.

    Ist der Wert auch in irgendeiner Winbox Ansicht sichtbar? Oder evtl. bei nem /interface lte print oder ähnliches?

    EDIT: Was ist denn das Ergebnis an E1 und E2 wenn du den Befehl auf den EXEC Eingang sendest?

    Einen Kommentar schreiben:

Lädt...
X