Einbinden meiner WP-Daten über RS232

Werte Forengemeinde,

da mein akt. Projekt zum M-Bus auslesen momentan etwas ins stocken geraten ist, würd ich gern das nächste Vorhaben angehen. Über die serielle Schnittstelle erhalte ich Daten meiner Wärmepumpe und kann bei Bedarf auch Parameter setzen.
Wie genau binde ich die Daten in IPS ein? Da ich IPS-Anfänger bin, bitte ich um Verstädnis, dass noch nicht alle Tricks draufhabe :rolleyes:
Ich hab von der Firma die Protokollbeschreibung angefordert und hänge dieses hier mit ran.
Vielen Dank im voraus für Eure Tips/Unterstützung.
Viele Grüße, Kay.

P.S. leider ist das PDF 50kb zu groß :confused: , so dass ich nach txt konvertieren mußte…

Protokoll RS232_Endkunde.txt (13.3 KB)

so, mußte PDF teilen…Informationen bleiben erhalten

Protokoll RS232_Endkunde.pdf (33.4 KB)

Protokoll RS232_Endkunde3.pdf (83.7 KB)

COMPort_SetDTR(12345, true);
COMPort_SendText(12345, "M".chr(13).chr(10));

Schick das mal raus und Debug mal im Comport. ID vom Comport anpassen.

Wenn das geht, kannst Du eine Registervariable anlegen. Mit Comport verbinden, das Script der Registervariable zuweisen und die Daten z.B. mit

$daten = $IPS_VALUE;

einlesen.

Hallo Rainer,

hab mal die akt. IPS-Ansicht und den Dump angehangen. Was mir noch nicht klar ist, wem ich nun wie was zuweise…Beim abarbeiten des Kontexmenüs komme ich an eine Stelle, bei der eine Skriptdatei entweder angelegt/hochgeladen werden soll…Leg ich für die Variable eine neue Skriptdatei an…mit dem Inhalt der von Dir genannten 3 Zeilen?

Danke und Gruß, Kay.

dump.txt (3.55 KB)

Hallo Kay,

mach bitte das nächste mal Bilder wo man was erkennen kann. Meine Nase ist schon ganz platt.:smiley:

Ist das der Dump vom Comport ?

Hallo Rainer,

hihi…hast recht, liegt wohl an meiner Bildschirmauflösung - ich hoffe, der Anhang hier ist ok…hm, muß man wirklich voll aufzoomen… Der Dump ist vom Debug des ComPorts, oder wär Dir Hex-Ansicht lieber?

Gruß, Kay.

Hallo Kay,

Kleiner Tip, leg dir Kategorien mit eindeutigen Namen an, Scripte und Variablen rein. Gib dem Comport einen eindeutigen Namen, dieser bleibt in den I/O Instanzen.

Das sieht doch dann schon mal gut aus. Ein bischen Ordnung rein und dann passt das.

Hier mal etwas Lektüre zur Registervariable und die Auswertung.

RegisterVariable: IP-Symcon :: Automatisierungssoftware

Damit kannst erst mal ein wenig spielen um zu verstehen wie das ganze funktioniert.

Bei Unklarheiten, fragen.

Hallo Rainer,

nett von Dir, dass Du mir Hausaufgaben verpasst hast :wink: …werd ich sicherlich auch nicht drumrumkommen. Aber wie immer ist das eine Zeitfrage und den Kopf muß man auch frei haben dafür - ist ok.
Ich hab nochmal einen Debug-Shot(ASCII) rangehangen, da mir beim Ansehen noch Fragen ankamen…

  1. Irgendwie müssen die Datensätze sicherlich aufbereitet werden, da zu jedem Wert(Integer/Float/Bolean) auch dessen Bezeichnung(char?) übermittelt wird und dass noch über mehrere Zeilen…

  2. Neben den permanent ausgegebenen Daten wie Temperaturen, werden auch Pumpenschaltzustände/Errorcodes etc. ausgegeben…

  3. Weiterhin kann man auch bestimmte Werte z.B. Boilersoll ändern…

Wie löst man das alles, oder mach ich mir darüber eher zuviel Gedanken?

So jetzt gehts erstmal 3 Tage auf Dienstreise, mal sehen, ob ich reinschauen kann…
Schönen Abend noch, Kay.

Hi Kay,

bei meine Alpha Innotec scheint es ein wenig ähnlich wie bei deiner Pumpe zu sein. Schmeiss alles, von einem Auslesevorgang in einen String rein. Wenn ich das auf die schnelle richtig gesehen habe, trennst du den String dann schön bei jedem „:“ auf. Dann musst natürlich auswerten: war der davorgehörige Stringteil = Vorlauf dann schreib den Wert Vorlauf in die Variable Vorlauf.

Ist einmalige Fummelarbeit, aber wenn Du die Werte mal alle drin hast, wirst staunen, auf welche Erkenntnisse du über deine Wärmepumpe und dein Haus stösst *g

Hast du einen Wärmemengenzähler verbaut?

Gruß

Kai

Hallo Kai,

es ist ja nicht so, dass ich die Daten bisher nicht auslesen konnte - nur immer mit einem anderen Tool - mehr schlecht als recht…Hier: http://www.ip-symcon.de/forum/f23/diese-haustechnik-visualisieren-ip-symcon-10580/ hab ich kurz beschrieben, was ich so vor habe…Gruß, Kay.

Hallo Rainer,

hab mal das kurze Script bischen geändert, dabei fiel mir auf, daß das senden von „M“ defacto unerheblich ist…zumindest bei dieser Konstellation…
Was muss ich davon halten?
Gruß, Kay.

Lies dir mal das Protokoll durch, soweit ich das noch in Erinnerung habe, werden die Daten solange abgeholt wie DTR gesetzt ist.

Wenn das ganze Script über die Registervariable läuft, ist das normal, da jedes mal wieder neu getriggert wird.

…so ist es, siehe Auszug:
„…Die Heizungsregelung sendet in einem fixen Intervall von 5 s ein ASCII-Protokoll auf die
serielle Schnittstelle, solange DSR/DCD (Data Set Ready) an der Heizungsregelung
aktiv ist: Im Terminalprogramm des PC muss deshalb DTR aktiv sein, damit die
Heizungsregelung aktiv Daten sendet.
Alternativ können vom PC mit Befehlen Daten von der Heizungsregelung angefordert
werden – die Regelung antwortet unabhängig vom DSR/DCD-Signal. Am Ende des
Befehls muss CR LF gesendet werden (0x0D, 0x0A), damit die Heizungsregelung
antwortet: Die Antwort ist „1“ für Befehl verstanden und ausgeführt (alte Version „Y“)
bzw. die angeforderten Daten (z.B. Messwerteliste) oder „0“ für Befehl nicht verstanden,
Parameter gesperrt oder nicht veränderbar (alte Version „N“)…“

Da ich aber vorhabe, möglichst differenziert auszuwerten, also z.B. Temperaturen getrennt von Ein-/Ausgangsabfragen ggfs. Steuerbefehlen usw. würde das bedeuten, ich darf „DTR“ nicht aktivieren…??? Benötigt man dann also nur die Zeile COMPort_SendText(12345, „M“.chr(13).chr(10)); und variire den Inhalt des Argumentes? Die Antwort/Daten müßte ich dann aber sicherlich(in einer Variablen) abspeichern? Hm.

Gruß, Kay.

Hallo Kay,

Wenn du verschiedene Daten abfragen willst, leg Dir doch entsprechend Scripts dafür an.

Zum abfragen mit „M“ kannst Du den Comport und DTR setzen und auch DTR wieder schliessen.

Datenempfangsscript der Registervariable zuweisen, dort werden dann nur die Daten aufbereitet und in Variablen verteilt.

Wenn nicht mach doch mal einen Dump vom Inhalt der Registervariable als txt und häng es mal hier ran.

…soooo hab alles noch mal eingerichtet/siehe Anhänge), ich hoffe, soweit stimmt alle bis hierher(?). Falls ich es richtig verstanden habe, kann ich jetzt den Inhalt der Registervariablen auslesen und ggfs. weiterverarbeiten. Leider kommt der Doppelpunkt nicht in jedem Datensatz vor…was kann man da machen?

Gruß, Kay.

Hallo Kay,

du hast mich nicht verstanden.

2 Scripts, eins zum Senden, eins zum Empfangen. Das Script zum Empfangen wird der Registervariable zugewiesen. In das Sendescript schreibst Du dein Comport…usw.

Empfangsscript

Da schreibst Du jetzt mal das hier rein.

$txt = IPS_GetKernelDir()."waermepumpe.txt";
$fp = fopen($txt, "wb+");
fwrite($fp, $IPS_VALUE);
fclose($fp)

diese txt-Datei hätte ich gerne!

hm…offensichtlich versteh ich hier nur „Bahnhof“…wo z.B. soll die Textdatei zu finden sein. Weiterhin bekomme ich eine Fehlermeldung bei der Skriptausführung - siehe Anhang

…die Textdatei findest Du im IPS-Verzeichnis. Das Script kannst Du nicht von Hand ausführen deswegen sollst DU 2 Scripts anlegen und das Sendescript ausführen.

Die Daten landen automatisch im Empfangsscript, wenn Du dieses der Registervariable zugewiesen hast.

Wenn Du dieses Skript selber ausführst geht es nicht. Es muss über die Registervariable laufen. Wenn die Registervariable dann etwas empfängt steht es in der waermepumpe.txt drin.

Ups Rainer war schneller.

@ Uwe,

mach ihn nicht ganz durcheinander.

Die txt-Datei legt sich selber an!