Berechtigunsproblem mit IP/config/xmlapi/devicelist.cgi 

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
insp
Beiträge: 150
Registriert: 08.06.2014, 12:01
Danksagung erhalten: 1 Mal

Berechtigunsproblem mit IP/config/xmlapi/devicelist.cgi 

Beitrag von insp » 06.05.2024, 20:13

Hallo ich verstehe das mit den Logins nicht ganz, obwohl ich die Rasperimatic schon seit Jahren verwende. Habe 2 User "Admin" und "xxx" beide haben Administrationsrechte. Soweit so gut. Wenn ich Programme erstelle, Geräte hinzufüge usw. kann ich das alles ohne Login, nur über die IP die Web-Seite aufrufen. Ob gut oder schlecht lassen wir mal beiseite. Ich konnte früher mich mit dem link:
 http://10.1.0.9/config/xmlapi/devicelist.cgi 
 http://10.1.0.9/config/xmlapi/statelist.cgi
 die genauen Definitionen für Scrips auslesen. Jetzt kommt auf einmal die Fehlermeldung:
************************
<stateList>
<not_authenticated/>
</stateList>
 ***********************
Die Meldung ist ja schon klar, aber wenn ich wie schon gesagt Programme usw. erstellen alles ohne Login. Jetzt muss ich für einen neue Aktortype das Format auslesen und stehe am Berg.

Weitere Info: Die Version ist +- aktuell und das Ganze läuft in einem Docker-Container

Wer kann mir helfen :shock:

Benutzeravatar
Baxxy
Beiträge: 10965
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 622 Mal
Danksagung erhalten: 2259 Mal

Re: Berechtigunsproblem mit IP/config/xmlapi/devicelist.cgi 

Beitrag von Baxxy » 06.05.2024, 20:18

insp hat geschrieben:
06.05.2024, 20:13
Wer kann mir helfen
Du dir selbst. :wink:
Da du das XML-Api-AddOn auf V2.x "geupdatet" hast, hast du dir sicher auch das Changelog und die "Important-Information" durchgelesen.
https://github.com/homematic-community/XML-API/releases

Kurz gesagt, du musst einen Token generieren den du bei deinen Aufrufen mit übergeben musst.
Alternativ... downgraden auf < V2.x

insp
Beiträge: 150
Registriert: 08.06.2014, 12:01
Danksagung erhalten: 1 Mal

Re: Berechtigunsproblem mit IP/config/xmlapi/devicelist.cgi 

Beitrag von insp » 07.05.2024, 13:05

ja danke mal für den Feedback. Changelog lesen ist wie mit den AGB's zu 99% gehts gut. Sicherheit ist gut, aber das mit dem Token habe ich auch verstanden. Aber ich kann ja auch mit der Version 2.3 das Ganze Rapi tot machen ohne Tocken!

Benutzeravatar
Baxxy
Beiträge: 10965
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 622 Mal
Danksagung erhalten: 2259 Mal

Re: Berechtigunsproblem mit IP/config/xmlapi/devicelist.cgi 

Beitrag von Baxxy » 07.05.2024, 15:56

insp hat geschrieben:
07.05.2024, 13:05
Aber ich kann ja auch mit der Version 2.3 das Ganze Rapi tot machen ohne Tocken!
Klar, es gibt viele Wege eine CCU/RM "lahmzulegen".
Wenn du AutoLogin nutzt ist das halt einer.

Letztlich kann ja jeder mit seinem System machen was er will.
Wenn dir das mit der Authentifizierung der XML-Api nicht passt dann musst du halt einen anderen Weg nehmen oder eben das AddOn downgraden.

Jeder wie er mag... :wink:

Tyfys
Beiträge: 577
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 29 Mal
Danksagung erhalten: 133 Mal

Re: Berechtigunsproblem mit IP/config/xmlapi/devicelist.cgi 

Beitrag von Tyfys » 07.05.2024, 16:19

insp hat geschrieben:
06.05.2024, 20:13
die genauen Definitionen für Scrips auslesen
Wenn du das XML-API nicht noch für andere Zwecke brauchst,
an die Daten kommt man auch mit CCU - Bordmitteln.

Ich mach das z.B. so:

Code: Alles auswählen

!alle Details eines Gerätes /aller Geräte

string DevName ="*ALL";
!oder wenn nur für ein Gerät zB
string DevName = "IP_Stckdose_ZBV_2";

WriteLine("Bericht vom " #system.Date());
WriteLine(" " );

string DeviceList;
string Line = "";

if (DevName == "*ALL") {
    DeviceList = devices.EnumUsedNames();
} else {
    DeviceList = DevName;
}

boolean ShowMetas = false;
foreach(DevName, DeviceList) {

    object DevObj = devices.Get(DevName);
    if (DevObj) {
        WriteLine("Geraet: " # DevObj.HssType());
    } else {
        WriteLine("Gerät nicht vorhanden");
        quit;
    }
    WriteLine(" ");
    WriteLine("GeraetName: " # DevObj.Name());
    WriteLine("Geraet-ID: " # DevObj.ID());
    WriteLine("SerienNr : " # DevObj.Address());
    WriteLine("Interface : " # interfaces.Get(DevObj.Interface()));
    if (ShowMetas) {
        WriteLine(" ");
        string DevEnum = "";
        foreach(DevEnum, DevObj.EnumMetaData()) {
            WriteLine('Geräte-MetaData("' # DevEnum # '"): ' # DevObj.MetaData(DevEnum));
        }
    }
    WriteLine("\n");
    WriteLine("Kanäle:");
    string ChnId;
    foreach(ChnId, DevObj.Channels()) {
        object ChnObj = dom.GetObject(ChnId);
        WriteLine("Kanaltype: " # ChnObj.ChannelType());
        WriteLine("Kanal-Type: " # ChnObj.HssType());
        WriteLine("Kanal-Nummer: " # ChnObj.ChnNumber());
        WriteLine("Kanal-Name: " # ChnObj.Name());
        WriteLine("Kanal-ID: " # ChnObj.ID());
        WriteLine("SerienNr : " # ChnObj.Address());
        WriteLine("LetzteKanalAktion: " # ChnObj.LastDPActionTime());
        WriteLine("LetzteKanalAktionSek. :" # ChnObj.LastDPActionTimeSeconds());
        WriteLine("intern : " # ChnObj.Internal());
        WriteLine("sichtbar : " # ChnObj.Visible());
        WriteLine("Direktion : " # ChnObj.ChnDirection());
        WriteLine("Direktion : " # ("nicht verknüpfbar;Sender;Empfänger").StrValueByIndex(";", ChnObj.ChnDirection().ToInteger()));
        if (ShowMetas) {
            WriteLine(" ");
            string ChnEnum = "";
            foreach(ChnEnum, ChnObj.EnumMetaData()) {
                WriteLine('Kanal-MetaData("' # ChnEnum # '"): ' # ChnObj.MetaData(ChnEnum));
            }
        }
        WriteLine(" ");
        if (ChnObj.ChnDPUsageCount() > 0) {
            !alle Programme anlisten
            Line = "wird in folgenden Programmen verwendet:";
            string PgmId;
            foreach(PgmId, ChnObj.ChnEnumDPUsagePrograms()) {
                Line = Line # " " # dom.GetObject(PgmId).Name() # ";";
            }
            WriteLine(Line.RTrim(";"));
        }
        if (ChnObj.ChnFunction()) {
            !alle zugeordneten Gewerke anlisten
            Line = "ist Gewerk zugeordnet:";
            string FctId;
            foreach(FctId, ChnObj.ChnFunction()) {
                Line = Line # " " # dom.GetObject(FctId).Name() # ";";
            }
            WriteLine(Line.RTrim(";"));
        }
        if (ChnObj.ChnRoom()) {
            !alle zugeordneten Räume anlisten
            Line = "ist Raum zugeordnet:";
            string RomId;
            foreach(RomId, ChnObj.ChnRoom()) {
                Line = Line # " " # dom.GetObject(RomId).Name() # ";";
            }
            WriteLine(Line.RTrim(";"));
            WriteLine("");
        }

        if (ChnObj.DPs().Count() > 0) {
            WriteLine("");
            WriteLine("Datenpunkte:");
            string DptId;
            !Alle Datenpunkte durchlaufen
            foreach(DptId, ChnObj.DPs()) {
                var DptObj = dom.GetObject(DptId);
                string Unit = "";
                if (DptObj.ValueUnit() <> "") {
                    Unit = " Einheit " # DptObj.ValueUnit();
                }
                WriteLine("ID: " # DptId # " = " # DptObj.HssType() # "    aktueller Wert: " # DptObj.Value() # Unit # "  Datentyp : " # DptObj.ValueTypeStr());
                WriteLine("Vollständiger Datenpunktname: " # DptObj.Name());
                Write("Minimal- / Maximalwert: " # DptObj.ValueMin());
                WriteLine(" / " # DptObj.ValueMax());
                if (DptObj.MetaData("VALUE_LIST")) {
                    WriteLine("aktueller Wert: " # DptObj.ValueList().StrValueByIndex(";", DptObj.Value()));
                    WriteLine("mögliche Werte: " # DptObj.ValueList());
                }
                if (ShowMetas) {
                    WriteLine(" ");
                    string DpEnum = "";
                    foreach(DpEnum, DptObj.EnumMetaData()) {
                        WriteLine('Datenpunkte-MetaData("' # DpEnum # '"): ' # DptObj.MetaData(DpEnum));
                    }
                    WriteLine(" ");
                }
                Write("Zugriffsarten: ");
                if ((OPERATION_READ & DptObj.Operations())) {
                    Write("  lesend ");
                }
                if ((OPERATION_WRITE & DptObj.Operations())) {
                    Write("  schreibend ");
                }
                if ((OPERATION_EVENT & DptObj.Operations())) {
                    Write("  über Ereignisse");
                }
                WriteLine("\n");
            }
            WriteLine("");
        } else {
            WriteLine("Kanal hat keine Datenpunkte");
            WriteLine("");
        }
        WriteLine("***");
    }
}
WriteLine("****** Ende des Berichts ******");
In Anlehnung aus Routinen hier aus dem Forum.
Gruß
Harry

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“