+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 17
  1. #1
    Registriert seit
    Dec 2014
    Ort
    Nürburgring
    Beiträge
    354

    Standard RS485 Befehl senden und Rückgabe auslesen

    Hallo Zusammen,

    ich habe mittlerweile einen US-Sensor bekommen um einen Tank auszulesen.

    Jetzt habe ich eine Registervariable angelegt, den RS485 Com-Port als Instanz und ein Skript, welches den Auslesebefehl sendet. Dazu ist bei der RegVar das Skript als Ziel, die übergeordnete Instanz ist der Com-Port.

    In der RegVar laufen nun irgendwie Daten auf, ich bekomme aber nicht mal mit "echo $data" was zurück - ich habe das in allen Kombinationen probiert, aber die Rückgabe bleibt aus.
    Dazu laufen bei einmaligem Ausführen in der RegVar mehrfach Daten auf, als ob das Skript mehrfach laufen würde.

    Im Endeffekt will ich nur die Rückgabe weiterverarbeiten (von Hex zu ASCII und dann aus dem Text was aus & abschneiden. (In ASCII sollte "RL010012004C" kommen, davon benötige ich die "1200" (mm)).

    Hier das Skript:

    PHP-Code:
    <?
    $com 
    =14246;
    $reg=13446 /*[Messsystem\Heizöl\REG_VAR RS485]*/;
    $code "\x24\x52\x4C\x30\x31\x32\x33\x0D\x0A";

        
    COMPort_SetOpen($comtrue);
        
    IPS_ApplyChanges($com);  

    RegVar_SetBuffer($reg"");

    COMPort_SendText ($com$code.chr(13)); 
     
        
    COMPort_SetOpen($comfalse);
        
    sleep (1);
        
    IPS_ApplyChanges($com);  

    if (
    $IPS_SENDER == "RegisterVariable")
    {
      
    // bereits im Puffer der Instanz vorhandene Daten in $data kopieren
      
    $data  RegVar_GetBuffer($reg);
      
    // neu empfangene Daten an $data anhängen
      
    $data $IPS_VALUE;
      
    // Inhalt von $data im Puffer der RegisterVariable-Instanz speichern
      
    RegVar_SetBuffer($reg$data);
      
    //debug_log(IPS_GetName($reg), "data: $IPS_VALUE\n");
    echo $data;
     }
    ?>
    Wenn ich alles nach dem "If" weg lasse und nur "echo $data" einfüge, dann werden in der RegVar z.B. für 13 Sekunden weiter Daten empfangen - Buffer bleibt aber leer (gerade getestet, aber immer unterschiedlich lange).

    Zudem bewirkt "sleep (1)" bei mir nicht 1ms pause sondern 1s, bei 100 versucht er 100s pause zu machen! (Steht in der Doku anders...)

    Hat wer jemand eine Idee - ich habe bisher nie selbst mit RegVars gearbeitet - bzw. nichts selbst geschrieben.
    Danke & Gruß,
    Maeffjus
    https://maeffjus.de - Wetter-, Feinstaub- und Strahlungsdaten und ein Badezimmerradio!
    Homematic CCU2 / Buderus MC10 / Buderus KM200 / Buderus RC35 / Homeduino 2.0 / QNAP TS453Be mit 2x8tb & 2x4tb, / Back-UPS 800VA (Server) / Back-UPS 500CS (Wifi & Router) / Zyxel NAS540 zum Backup auf 2x4TB / Sophos-UTM 9 Firewall

  2. #2
    Registriert seit
    Jun 2005
    Beiträge
    3,746

    Wenn Dein Gerät erst sendet, wenn es ein Befehl bekommt, dann würde ich erst einmal schauen was nach dem Befehl an Daten ankommt.

    Danach ev einen Cutter verwenden, je nach Daten.

    Dieser Cutter wäre die übergeordnete Instanz einer Registervariable und dessen eingetragenes Ziel-Script hat die Aufgabe die Daten der/den Variablen zu übergeben.

    Aber ich kenne Dein Gerät nicht
    Gruß Helmut

  3. #3
    Registriert seit
    Dec 2014
    Ort
    Nürburgring
    Beiträge
    354

    Hey Helmut,

    das kommt an:

    Code:
    26 8D 1A 66 CC 30 30 30 33 39 30 35 35 0D
    Ich glaube der Sensor spuckt fast nie mehr aus - selten mehrere Zeilen, aber nicht im normalen Betrieb.
    Mein Problem ist, ich sehe es in der RegVar, habe aber keine Ahnung wie ich das in eine normale Variable schreiben kann.
    https://maeffjus.de - Wetter-, Feinstaub- und Strahlungsdaten und ein Badezimmerradio!
    Homematic CCU2 / Buderus MC10 / Buderus KM200 / Buderus RC35 / Homeduino 2.0 / QNAP TS453Be mit 2x8tb & 2x4tb, / Back-UPS 800VA (Server) / Back-UPS 500CS (Wifi & Router) / Zyxel NAS540 zum Backup auf 2x4TB / Sophos-UTM 9 Firewall

  4. #4
    Registriert seit
    Jun 2005
    Beiträge
    3,746

    Haste mal ein Link zu der Beschreibung des Sensors?

    Und kannst Du mal den Hexwert UND die ASCII Werte der Antwort darstellen

    Sind mehrere Befehle mit anderen Antworten möglich, das könnte in einem Link zu finden sein.
    Gruß Helmut

  5. #5
    Registriert seit
    Dec 2014
    Ort
    Nürburgring
    Beiträge
    354

    Hmm ja, das ist was durcheinander - Chinakram halt :-D
    Mich interessiert eig. nur die Liquid-Height bzw. je nachdem sogar besser die Air height..
    Hier die Befehle & Antworten (das mit der Prüfsumme bekomme ich auch nicht hin):
    Dropbox - Communication_Protocol_DF550_DF520_Ultrasonic_Sens ro_V1.7.pdf
    Die Befehle für RS485 sind wie bei RS232 gleich.

    Hier das "Datenblatt" (Ich habe den 2m-Sensor):
    Dropbox - DF550_Ultrasonic_Level_Sensor_Manual_V3.2.pdf

    Aber ich finde das Datenblatt hilft nicht wirklich viel.
    Gruß,
    Matthias
    https://maeffjus.de - Wetter-, Feinstaub- und Strahlungsdaten und ein Badezimmerradio!
    Homematic CCU2 / Buderus MC10 / Buderus KM200 / Buderus RC35 / Homeduino 2.0 / QNAP TS453Be mit 2x8tb & 2x4tb, / Back-UPS 800VA (Server) / Back-UPS 500CS (Wifi & Router) / Zyxel NAS540 zum Backup auf 2x4TB / Sophos-UTM 9 Firewall

  6. #6
    Registriert seit
    Jun 2005
    Beiträge
    3,746

    Please contact with Dingtek about the protocol issue.
    Aus den PDF's kann ich nichts rauslesen, Du könntest mehrere Füllstände simulieren und sehen welche Daten sich verändern.
    Gruß Helmut

  7. #7
    Registriert seit
    Dec 2014
    Ort
    Nürburgring
    Beiträge
    354

    Ich glaube wir reden aneinander vorbei:

    Im Endeffekt will ich nur die Rückgabe weiterverarbeiten (von Hex zu ASCII und dann aus dem Text was aus & abschneiden. (In ASCII sollte "RL010012004C" kommen, davon benötige ich die "1200" (mm)).
    Das kommt zurück - da sist ja auch alles kein Problem, mein Problem ist - wie auch beschrieben, dass der Sensor das als HEX schickt, es in der RegVar ankommt, ich aber keine Ahnung habe wie ich es in einen String o.Ä. bekomme.
    Daraus ASCII machen usw. ist jetzt nicht gefragt, Fragestellung ist:

    Wie bekomme ich den HEX-Wert aus der RegVar in eine Variable.
    https://maeffjus.de - Wetter-, Feinstaub- und Strahlungsdaten und ein Badezimmerradio!
    Homematic CCU2 / Buderus MC10 / Buderus KM200 / Buderus RC35 / Homeduino 2.0 / QNAP TS453Be mit 2x8tb & 2x4tb, / Back-UPS 800VA (Server) / Back-UPS 500CS (Wifi & Router) / Zyxel NAS540 zum Backup auf 2x4TB / Sophos-UTM 9 Firewall

  8. #8
    Registriert seit
    Jun 2005
    Beiträge
    3,746

    Nee, wir reden nicht anander vorbei, Du hast eine Hexzeile gepostet, darauf hin habe ich erklärt wie ich es machen würde.

    Wenn Du die Stelle kennst und die Zeichen davor und dahinter immer gleich sind, dann kennst Du schon welche Zeichen in den Cutter rechts und links geschrieben werden können.

    Damit ist es fast fertig, nur noch die Registervariable verarbeiten, fertig.
    Gruß Helmut
    Geändert von Helmut (20.05.17 um 10:20 Uhr) Grund: Hex/ASCII

  9. #9
    Registriert seit
    Dec 2014
    Ort
    Nürburgring
    Beiträge
    354

    Ja, aber an dem verarbeiten hängt es ja gerade. Ich bekomme die Daten nicht da "raus".
    Mit Parser, explode oder so bekomme ich das hin!
    Ich würde zuerst aus HEX einen ASCII string machen, dann sind die Zeichen so wie in meinem Beispiel, davon schneide ich alles ab bis auf die vier Stellen die ich brauche und fertig.
    Gruß,
    Matthias
    https://maeffjus.de - Wetter-, Feinstaub- und Strahlungsdaten und ein Badezimmerradio!
    Homematic CCU2 / Buderus MC10 / Buderus KM200 / Buderus RC35 / Homeduino 2.0 / QNAP TS453Be mit 2x8tb & 2x4tb, / Back-UPS 800VA (Server) / Back-UPS 500CS (Wifi & Router) / Zyxel NAS540 zum Backup auf 2x4TB / Sophos-UTM 9 Firewall

  10. #10
    Registriert seit
    Jun 2005
    Beiträge
    3,746

    Im Moment kann ich nicht helfen, ev. heute Abend, hier schon mal ein Link zur Software und ein PDF
    Gruß Helmut
    Angehängte Grafiken Angehängte Grafiken

Ähnliche Themen

  1. Stromzähler (MT-681) mit Optokopf (Infrarot) auslesen und an EKM868 senden?
    Von TimB83 im Forum IPS-868 / ProJET, XBee, ZigBee, XPort
    Antworten: 8
    Letzter Beitrag: 23.05.14, 12:02
  2. Zufälliger Ordner auslesen und an Squeezebox senden
    Von Darklord im Forum Skripte, PHP, SQL
    Antworten: 8
    Letzter Beitrag: 18.04.14, 09:08
  3. telnet Befehl senden/abschließen
    Von calexico84 im Forum Audio & Video, TK-Anlagen, ISDN
    Antworten: 2
    Letzter Beitrag: 08.09.13, 22:43
  4. Antworten: 5
    Letzter Beitrag: 20.08.13, 18:40
  5. Befehl direkt als cmd senden
    Von josp666 im Forum Skripte, PHP, SQL
    Antworten: 15
    Letzter Beitrag: 31.12.10, 14:47

Stichworte