Seite 1 von 1

XML-RPC Init Response

Verfasst: 21.11.2020, 12:17
von JoachimH68
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

Re: XML-RPC Init Response

Verfasst: 20.05.2022, 13:01
von JoachimH
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