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
Berechtigunsproblem mit IP/config/xmlapi/devicelist.cgi
Moderator: Co-Administratoren
- Baxxy
- Beiträge: 10964
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 622 Mal
- Danksagung erhalten: 2258 Mal
Re: Berechtigunsproblem mit IP/config/xmlapi/devicelist.cgi
Du dir selbst.
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
Grüße... Baxxy
- Raspberry Pi 4 als Homematic-Zentrale - Tipps und Informationen
- Analysescript für genutzte Funk-Adressen, Funkmodul-Hardware und Zentralen Hardware
- NANO CUL 868MHz - Stick zum AskSin Analyzer XS umflashen (Anleitung für ArduinoIDE unter Windows)
- Firmware Updates für IP-Aktoren / Sensoren... Info's, Tipps und Sonstiges
- CCU funkt nicht - CarrierSense (CS) Probleme erkennen und lösen
Re: Berechtigunsproblem mit IP/config/xmlapi/devicelist.cgi
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!
- Baxxy
- Beiträge: 10964
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 622 Mal
- Danksagung erhalten: 2258 Mal
Re: Berechtigunsproblem mit IP/config/xmlapi/devicelist.cgi
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...
Grüße... Baxxy
- Raspberry Pi 4 als Homematic-Zentrale - Tipps und Informationen
- Analysescript für genutzte Funk-Adressen, Funkmodul-Hardware und Zentralen Hardware
- NANO CUL 868MHz - Stick zum AskSin Analyzer XS umflashen (Anleitung für ArduinoIDE unter Windows)
- Firmware Updates für IP-Aktoren / Sensoren... Info's, Tipps und Sonstiges
- CCU funkt nicht - CarrierSense (CS) Probleme erkennen und lösen
-
- Beiträge: 576
- 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
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 ******");
Gruß
Harry
Harry