Einbinden meiner WP-Daten über RS232

stimmt, Sorry

…dann nehm ich mal die - siehe Anhang…

fast. kommen ja nicht alle auf einmal.

nimm mal das.

$txt = IPS_GetKernelDir()."waermepumpe.txt";
$daten  = RegVar_GetBuffer($IPS_INSTANCE);
$daten .= $IPS_VALUE;
for($i = 0; $i < count($daten); $i++)
{
    $fp = fopen($txt, "wb+");
    fwrite($fp, $daten);
}
fclose($fp);

…kein Unterschied, genau der gleiche Inhalt…

ich habe es oben noch mal geändert, probier es damit noch mal aus.

…hat sich nix getan…

Hallo,

kann das wirklich sein, dass diese Situation mit IPS nicht zu bewältigen ist…??? Inwieweit wäre es möglich, die Daten aus der RegVar so zu bearbeiten, dass nur noch die Datensätze mit dem „:“ übrig bleiben?

Gruß, Kay.

…nicht IPS, sondern Du. :slight_smile:

Inwieweit wäre es möglich, die Daten aus der RegVar so zu bearbeiten, dass nur noch die Datensätze mit dem „:“ übrig bleiben?

indem Du deine Hausaufgaben machst. In den beiden Beispielen für die RegVar steht eigentlich alles drinnen was Du benötigst. :smiley:

Wenn ich deine Anlage hätte, würde ich dir ja das Script schreiben aber ist nicht so also musst Du so durch.

hihi…der war gut…:wink:

Hi Kabo,

Hab den Thread grad grob überflogen

ich versuch dir meine Lösung mal mit Worten auf deine WP zu übertragen.
Also ich lass meine Pumpe nicht von selber blubbern, da bekommst innerhalb von Minuten eine riesen Menge daten, die du garnicht so in der Form vermutlich brauchen wirst. Ich schicke meiner Pumpe einmal pro Minute die 1800, in deinem fall ist das glaub ich „M“+CR/LF. Jetzt blubbert die Pumpe in die Registervariable los und sendet einmalig alle Daten aus der Anlage (Vorlauf, Rücklauf, Relaisstände, etc.). Alles in allem ca. 60 Werte. Diese Werte lass ich von der Registervariablen in eine Stringvariable schreiben. Sobald das Auslesen fertig ist leere ich die Registervariable auch.

Nun hast einen String mit deinen Anlagendaten. Wenn ich richtig sehe immer durch „:“ getrennt. Würde aus deiner Stringvariablen nun einen Array erstmal machen wo ich bei jedem „:“ trenne. Wenn Du da bist, bist… aus meiner Sicht… m al ein Stück weiter! :slight_smile:

Ich würde aber das natürliche senden der Pumpe versuchen zu unterbinden, nur unnötig viele Daten die du vermutlich eh nicht so brauchst!

Gruß

Kai

Nachtrag: Also meine Pumpe läuft mit 57600 Baut, und blubbert ca. 2 Sekunden für einen Datensatz. Wenn deine mit 9600 läuft, also ca. 1/6 würde die eh für die gleiche Menge (nur mal angenommen) 12 Sekunden brauchen. Überleg dir mal ob du so einen kontinuierlichen Datenstrom brauchst, oder ob da nicht alle 60 Sekunden reichen würde!

Hallo Kai,

leider sind eben nicht alle Datensätze durch ein „:“ getrennt - das ist ja genau der Punkt an dem ich hänge. Wie hast Du den zeitlichen Sendeabstand gelöst?

Gruß, Kay.

Hallo,

nachdem die Variablen soweit als momentan möglich eingerichtet sind, hab ich die Parametrierung im Blick…
In nachfolgendem Script würd ich gern den Wert hinter $daten komfortabel übergeben lassen…

<?

$code = „03“;
$daten = „0050“; //GetValue(1234);

COMPort_SendText(32971 /[Anschluß Wärmepumpe]/, „C“.$code.$daten.$code.$daten.„C“.chr(13).chr(10));

?>

Also in VBA würd ich das über eine Userform=Dashboard(in IPS??) machen…welcher Weg ist in IPS der sinnvollste, eine extra Variable einrichten(String??) oder über IPS-Funktionen???

Gruß, Kay.

$daten = „0050“; //GetValue(1234);

$daten = GetValue(12345);

Hallo Rainer,

Danke für den Hinweis…eigentlich simpel :o
Ich hab nun eine Stringvariable angelegt(mit Suffix, wie zu sehen ist) und im Skript auch übergeben…allerdings werden die führenden Nullen nicht weitergereicht, so dass in der WP nichts geändert wird…Woran kann das liegen?

Gruß, Kay.

Ähmm, mach mal die 2 Nullen in deinem Präfix raus. Dann klappt es auch mit den Daten.

Hm,

ich benötige vor dem Wert aber 2 führende Nullen - genau deshalb nahm ich an, diese gleich als Präfix in der Variablendefinition zu setzen…
Welche Möglichkeiten habe ich noch diese per Code hinzuzufügen? Eine Kombination aus 2 Variablen? Ich will doch nicht händisch immer 4 Ziffern einfügen, wenn ich nur 2 brauche…*argh ist php da so unflexibel?

Gruß, Kay.

$daten = "00".GetValue(12345);

php ist nicht unflexibel. Außerdem hat das Variablenprofil nichts mit php zutun.

…hihi…genau die Lösung hab ich auch gefunden. Öhm, ich hab dann die Ausführung des Skriptes mit einer Änderung der betreffenden Variablen genüpft - die Ausführung wird auch zeitlich angezeigt, allerdings ändert sich der Temp-wert $Daten nicht…woran kann das liegen?

MfG, Kay.

Wenn Du dem Script ein Ereignis auf Variablenänderung gesetzt hast und den Wert der Variable änderst, geschiet dieses auch im Script. Allerdings siehst Du das über echo nicht mehr.

Wenn Du das so testen willst mach

IPS_LogMessage($IPS_SELF, $daten);

Das Ergebnis steht dann in den Meldungen.

…super vielen Dank, es mußte so sein, da der Wert in der WP geändert wurde
Gruß, Kay.