XML-RPC Init Response

Nutzung von XML RPC, Remote Script, JSON RPC, XMLAPI

Moderator: Co-Administratoren

Antworten
JoachimH68
Beiträge: 1
Registriert: 21.11.2020, 11:56
System: CCU

XML-RPC Init Response

Beitrag von JoachimH68 » 21.11.2020, 12:17

Hallo,

Ich setzte einen Rasberry 3 als CCU und möchte einen weiteren Rasberry 3 einsetzen um meine Aktoren zu steuern.

Auf dem zweiten PI läuft ein Webserver, der auf Änderungen in der CCU reagieren soll. Die CallBack Adresse registriere ich folgendermaßen:

Code: Alles auswählen

   private async void RegisterCallBackback(String PC)
        {

           try
            {
                HttpWebRequest request = WebRequest.Create("http://192.168.0.XXX:2001/") as HttpWebRequest;

                request.Method = "POST";
                request.ContentType = "application/xml";
                request.ContinueTimeout = 100;

                string body = @"<?xml version=""0.1""?>";
                body += "<methodCall>\n";
                body += "<methodName>init</methodName>\n";
                body += "<params>\n";
                body += "<param>\n";
                body += "<value><string>http://192.168.0.XXX:2010/</string></value>\n";
                body += "</param>\n";
                body += "<param>\n";
                body += "<value><string>" + PC + "</string></value>\n";
                body += "</param>\n";
                body += "<param>\n";
                body += "<value><double>0.4</double></value>\n";
                body += "</param>\n";
                body += "</params>\n";
                body += "</methodCall>\n";


                byte[] bytes = Encoding.ASCII.GetBytes(body);

                using (var requestStream = await request.GetRequestStreamAsync())
                {
                    requestStream.Write(bytes, 0, bytes.Length);
                }

                var response = await request.GetResponseAsync() as HttpWebResponse;
                var responseContent = new StreamReader(response.GetResponseStream()).ReadToEnd();

            }
            catch (Exception ex)
            {
            }

            return;
        }

Draufhin bekomme ich auch ein paar Werte von der CCU, jedoch hört die CCU nach einiger Zeit auf zu senden.

Der Webserver ist jedoch weiter erreichbar (Befehle mit Postman gesendet und als Response 200 bekommen).

Als Antwort im Webserver sende ich den XML-POST und OK.

Ich habe an einer Stelle gelesen, das nach dem INIT die CCU mit einem ListDevice antwortet und hier eine spezielle Antwort erwartet wird ?

Ist dies korrekt und wenn JA wie lautet diese, bzw kann mir jemand diese zukommen lassen ?

In diesem Zusammenhang möchte ich auch erwähnen, dass ich in der Testphase häufig einen "WatchDog" Fehler bekomme. Ich vermute hier einen Zusammenhang.

Vielen Dank für Eure Hilfe.

Joachin
Zuletzt geändert von alchy am 22.11.2020, 16:29, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

JoachimH
Beiträge: 5
Registriert: 09.02.2016, 12:36

Re: XML-RPC Init Response

Beitrag von JoachimH » 20.05.2022, 13:01

Hallo,

hatte lange das gleiche Problem. Die ersten ca 20 Antworten kamen ohne Problem, danach hat die CCU keine Antwort mehr gesendet.

Die CCU erwartet vom ListenerThread die folgende Antwort:

Code: Alles auswählen

 msg = Encoding.ASCII.GetBytes("<?xml version=\"1.0\" ?>");
 stream.Write(msg, 0, msg.Length);
 msg = Encoding.ASCII.GetBytes("<methodResponse><params><param><value /></param></params></methodResponse>");
 stream.Write(msg, 0, msg.Length);
Danach klappte es bei mir. Aktuell hab ich ca. 24000 posts von der CCU bekommen.

Gruß
Joachim
Zuletzt geändert von alchy am 21.05.2022, 16:52, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

Antworten

Zurück zu „Softwareentwicklung von externen Applikationen“