Problem beim Empfangen über ServerSocket

Hallo zusammen,

unter 4.4 funktionierten meine Scripte für meine Rolläden einwandfrei. Ein Raspi pollt dazu die Wandschalter und baut bei Änderungen eine Socketverbindung zu einem Server Socket auf, meldet diese und schließt den Socket wieder. Die übertragenen Zustände landen per Register Variable bei einem Script. Und dabei tritt nun unter 5.0 Stable und Beta das Problem auf, dass eine ASCII übertragene 255 (Hex 323535) als 0 erkannt wird. (Siehe Bild unten).

Das Problem versteckt sich wohl offensichtlich in der Zeile:
$wert = intval( $_IPS[‚VALUE‘] );

Wie gesagt unter 4.4 funktionierte dies einwandfrei.

Gruß
Ralf

Was hat das mit der webbasierten Verwaltungskonsole zu tun?
Sprich, du bist hier falsch. (Habe unsere Beiträge abgetrennt und verschoben)
Zu dein Problem:
Der ServerSocket sendet dir in VALUE Null-Bytes wenn eine Verbindung aufgebaut und abgebaut wird. Das musst du abfangen.
Sonst kommt halt null raus.
Deine Variable ändert sich also ganz schnell auf 0, 255 und dann wieder 0.
Kannst einfach auf die Länge von ‚VALUE‘ prüfen. Wenn diese 0 ist, ist es ein Verbindungsaufbau oder Abbau.
Michael

Hallo Nall-chan,

du hast Recht, mit beidem!
Mein Problem gehörte natürlich nicht zu dem Thema. Ist mir aber leider selbst zu spät aufgegangen…:banghead:

Bzgl. des Server Sockets, der beim An und Abmelden leere ‚VALUE‘ Werte an die Register Variable sendet, habe ich die Stelle gefunden an der dies dokumentiert wurde.

Unter Migration stand…

>RegisterVariable unterstützt für Server Sockets ein neues TYPE Feld, welches Verbunden/Getrennt Zustände angibt. Diese werden ggf. bei alten Skripten als leere Datenpakete empfangen<

@IP-Symcon:
Puh, natürlich wenn man es nun weiß, das man aus diesem Satz schließen soll, das nun ZUSÄTZLICHE Aufrufe des der Register Variablen, zugeordneten Scripts erfolgen… Und was bedeutet in der Aussage ‚ggf.‘ ?

Dies bitte evtl. noch einmal deutlich hervorheben und erläutern in der Doku!!!

@Nall-chan
Noch einmal vielen Dank!

Gruß
Ralf

Hi Ralf,

magst du uns ein wenig aushelfen wie der Satz klingen sollte, damit es für dich eindeutig gewesen wäre?
Wir versuchen alle migrationsrelevante Änderungen sauber zu dokumentieren :slight_smile:

paresy

So wie er bei Änderungen zum PHP-SDK steht ist imho okay.
Aber… Er taucht nicht als BC für normale Scripte auf.
Michael

Hallo paresy,

vielleicht so:

Die RegisterVariable wurde um eine neue Systemvariable „TYPE“ erweitert. Das neue Feld beschreibt den Grund des Aufrufs und Übermittelt nebenbei auch den Zustand der übergeordneten Instanz. (Verbindung erfolgt/Datensendung/Verbindung getrennt) BITTE BEACHTEN: Daraus folgt, dass zusätzliche Aufrufe der Register Variablen, bzw. der zugehörigen Scripte beim Verbinden und Trennen erfolgen!

Ihr braucht euch doch nicht so kurz fassen. :slight_smile:
Nur die wenigsten IP-Symcon Nutzer, so schätze ich, befassen sich tagtäglich mit der Programmierung und den Besonderheiten bei der Script Programmierung. Daher bitte ruhig ein paar ergänzende Ausführungen mehr…

Wenn man wie ich etwas ‚bastelt‘ und dann ein halbes Jahr oder auch länger aufgrund der wirklich sehr guten Stabilität von IP-Symcon nicht genötigt wird daran herumzuschrauben, dann tappt man nur allzu leicht auf solche getarnten Minen. Nicht falschverstehen, ihr müßt nun wirklich keine kleinen Bugs für mich einbauen nur damit ich in Übung bleibe. Ne, ne das ist wirklich nicht nötig!

Vermutlich wissen wir alle, oder erahnen zu es zumindest, wie schwer es für euch sein muss, abzuwägen wieviel Dokumentation in Text- und auch Beispielform notwendig ist. Allein es bleibt wohl nur, immer weiter daran zu arbeiten.

@Community
Wenn ihr wie ich über etwas stolpert, dann meldet das bitte! Etwas umzuformulieren und damit zu verdeutlichen ist dann doch nur ein Klacks.

@IP-Symcon
Codeschnipsel sind auch recht eingängig:
if( $_IPS[‚TYPE‘] == „1“ )
// Verbindung aufgebaut
elseif( $_IPS[‚TYPE‘] == „0“ )
// Daten übermittelt
elseif( $_IPS[‚TYPE‘] == „2“ )
// Verbindung getrennt

Das hätte auch den mehrfachen Aufruf verdeutlicht…

@Ich selber
MEHR und aufmerksamer Doku lesen

…einen schönen Sonntag

Und ihr macht schon einen klasse Job…! :loveips:

Gruß
Ralf