OpenWRT LUCI API

Guten Morgen

Ich hab im Zuge des Providerwechsels auch meinen Router/Firewall wechseln müssen. Die Zyxel hat leider nicht die Perfamance für 500mBit Download. Also ist ein Raspberry Pi 4B mit OpenWRT eingezogen. Der packt das. Und das zu einem drittel der Kosten. Egal

Was es für OpenWRT gibt ist die API und genau da möchte ich ansetzen. Ich würd gern ein paar Werte von den Schnittstellen herausholen. Das sollte eigentlich funktionieren. Es gibt auch eine Dokue zur API aber entweder hab ich nciht die aktuelle oder es ist ein Fehler im System.
Die notwendigen Module hab ich installiert. Das Holen vom Token funktioniert auch schon. Allerdings bekomme ich bei der Methode „net.deviceinfo“ einen Fehler, dass es diese Methode nicht gibt. Es sollte sie aber laut Doku geben. Die Methode „net.devices“ liefert alle Schnittstellen zurück, aber eben nicht mehr.

Hat das jemand von euch schon mal gemacht?

Ok, das „Projekt“ ist mal auf Eis gelegt. Was ich bisher herausgefunden hab ist, dass die Doku nicht aktuell und leider ncht mit der aktuellen Version der Module übereinstimmt. Da sind nicht mehr alle Datenpunkte verfügbar.
Es sollte auch mit UBUS funktionieren, dazu hab ich aber noch keine für mich verständliche Doku gefunden. Eigentlich gar keine wirkliche. Es muss aber irgendwie gehen, da ich eine Andorid App installiert hat, die mir genau die Werte liefert, die ich auch gern in IPS hätte, und das ohne zusätzlicher Module.
Sollte doch jemand eine Idee oder weiterführende Informationen haben, dann her damit :wink:

Aufgegeben wird bekannterweise nur ein Brief. Mir hat das keine Ruhe gelassen. Kann ja nicht so schwer sein. Also hab ich ganz einfach den Entwickler der Android App über Github angeschrieben, ober mir nicht einen Denkanstoß geben könnte. Einfach in welche Richtung ich suchen muss. Die Doku ist wirklich schlecht. Zumindest aus meiner Sicht.
Er hat sich tatsächlich gemeldet und ich hab mal das draus gemacht. Es ist nicht mal ein Prototyp aber die Anmeldung funktioniert und es kommen zumindest die für mich interessanten Werte rüber. Alles noch unformatiert. Ich werd mich die Tage damit auseinandersetzen und mir anschauen, was ich möchte und wie ich das in IPS reinbringe. Das ist allerdings nur Kosmetik, der für mich schwierigste Part ist geschafft. Das Ding antwortet auf meine Wünsche.
Wer das auch versuchen möchte, gerne.
Hier der Code. Wie gesagt, alles in einer Wurscht, unformatiert und lediglich mit einer Ausgabe in der Konsole. Ein zusätzliches Modul muss nicht auf OpenWRT installiert werden.

    <?php

$ch = curl_init();


curl_setopt($ch, CURLOPT_URL, 'http://192.168.32.1/ubus');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);

//Anmeldung
curl_setopt($ch, CURLOPT_POSTFIELDS, '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "call",
    "params": [ 
        "00000000000000000000000000000000",
        "session",
        "login", {
            "username": "root",
           "password": "PASSWORTHIEREINGEBEN"
                 }
               ]
    }');
$headers = array();
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);

$sessionid=json_decode($result,true)["result"][1]["ubus_rpc_session"];

//Systeminformationen
curl_setopt($ch, CURLOPT_POSTFIELDS, '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "call",
    "params": [ "'.$sessionid.'",
        "system",
        "info",{}        ]
    }');

$headers = array();
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
var_dump(json_decode($result,true));

//Hardwareinformationen
curl_setopt($ch, CURLOPT_POSTFIELDS, '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "call",
    "params": [ "'.$sessionid.'",
        "system",
        "board",{}        ]
    }');

$headers = array();
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
var_dump(json_decode($result,true));

//Daten vom DHCP Server
curl_setopt($ch, CURLOPT_POSTFIELDS, '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "call",
    "params": [ "'.$sessionid.'",
        "luci-rpc",
        "getDHCPLeases",{}        ]
    }');

$headers = array();
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
var_dump(json_decode($result,true));

//Übersicht der Netzwerkschnittstellen
curl_setopt($ch, CURLOPT_POSTFIELDS, '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "call",
    "params": [ "'.$sessionid.'",
        "network.interface",
        "dump",{}        ]
    }');

$headers = array();
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
var_dump(json_decode($result,true));

//Werte von den Netzwerkkarten
curl_setopt($ch, CURLOPT_POSTFIELDS, '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "call",
    "params": [ "'.$sessionid.'",
        "luci-rpc",
        "getNetworkDevices",{}        ]
    }');

$headers = array();
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
var_dump(json_decode($result,true));

curl_close($ch);