Serial Port, Register Variable, Cutter

Hi,
jo das schon nicht schlecht, ja die Werte stimmen exakt.
Ja denke wird dann den Wert mit Kommastelle mir holen, ich dachte so wäre es erst einmal leichter.
Ich werde das Morgen mal testen und dir dann berichten.

Gruß
Stefan

Na denn, auf geht’s :wink:

Wenn jemand fragt: läuft’s bei Dir, dann kannst Du sagen „Joo“
Gruß Helmut

Hab das ganze jetzt auch auf dem Raspberry am laufen, bekomme die Daten die ich vom Arduino her schicke auch korrekt angezeigt „Hello Pi“, was ich aber noch nicht verstanden habe wie bekomme ich die Daten jetzt aus der Register Variable / Skript in eine Variable des IPS?
Oder nach was muß ich im Forum suchen?

Wäre das eine Möglichkeit?

Gruß
Stefan

Hatte ich schon geschrieben, zeig mal eine komplette Ausgabe aber bitte mit 0D 0A als Wert für den Cutter!!

Gruß Helmut

11.01.2015 00:45:21.00 |        Received Data | 39.00
22.0
11.01.2015 00:45:21.00 |        CURRENTBUFFER | 39.00
22.0
11.01.2015 00:45:21.00 |            SENDCHUNK | 
11.01.2015 00:45:21.00 |        Received Data | 0

11.01.2015 00:45:21.00 |        CURRENTBUFFER | 22.00

11.01.2015 00:45:21.00 |            SENDCHUNK | 
11.01.2015 00:45:32.00 |        Received Data | 39.00
11.01.2015 00:45:32.00 |        CURRENTBUFFER | 39.00
11.01.2015 00:45:32.00 |        Received Data | 
22.00

11.01.2015 00:45:32.00 |        CURRENTBUFFER | 39.00
22.00

11.01.2015 00:45:32.00 |            SENDCHUNK | 
11.01.2015 00:45:32.00 |            SENDCHUNK | 
11.01.2015 00:45:42.00 |        Received Data | 39.00
22.00

11.01.2015 00:45:42.00 |        CURRENTBUFFER | 39.00
22.00

11.01.2015 00:45:42.00 |            SENDCHUNK | 
11.01.2015 00:45:42.00 |            SENDCHUNK | 
11.01.2015 00:45:52.00 |        Received Data | 39.00
2
11.01.2015 00:45:52.00 |        CURRENTBUFFER | 39.00
2
11.01.2015 00:45:52.00 |            SENDCHUNK | 
11.01.2015 00:45:52.00 |        Received Data | 2.00

11.01.2015 00:45:52.00 |        CURRENTBUFFER | 22.00

11.01.2015 00:45:52.00 |            SENDCHUNK | 

das gibt er mit „Linke Trennzeichen: 0D“ und „REchte Trennzeichen: 0A“

da Du zwei Werte mit unterschiedlicher Beschreibung von der seriellen Schnittstelle bekommst
würde ich auch zwei Cutter und zwei Registervariablen erstellen zB Temperatur Cutter und Feuchte Cutter
und die Registervariablen „Feuchte Registervariable“ und „Temperatur Registervariable“
haben dann die jeweiligen Zuweisungen von Scripten und Instancen

Also:
2 Floatvariablen erstellen zB Feuchte und Temperatur

2 Cutter und 2 Registervariablen erstellen: Cutter Temperatur erhält die rechten Trennzeichen "Temperatur= „, linken Trennzeichen " 'C“ ,
übergeordnete Instance ist die ser. Schnittstelle

darunter bekommt der Cutter Temperatur eine Registervariable „Temperatur Registervariable“
Target dazu ist das Script Temperatur lesen, übergeordnete Instance ist der Temperatur Cutter

und der Cutter Feuchte erhält die rechten Trennzeichen "Humidity: ", linken Trennzeichen % ,
übergeordnete Instance ist die ser. Schnittstelle

darunter bekommt der Cutter Feuchte eine Registervariable „Feuchte Registervariable“
Target dazu ist das Script Feuchte lesen, übergeordnete Instance ist der Feuchte Cutter

Script Feuchte:

<?
if ($_IPS['SENDER'] == "RegisterVariable")
{
$data = $_IPS['VALUE'];
// ev. zum Testen im Meldungsfenster anzeigen lassen
echo $data;
// $data in Floatvariable $data1 schreiben
$data1 = floatval ($data);
// ev. zum Testen im Meldungsfenster anzeigen lassen
echo $data1;
// $data1 in Floatvariable "Feuchte" schreiben
SetValueFloat(deine VarID,$data1);
}
?>

Temperatur Script

 <?
if ($_IPS['SENDER'] == "RegisterVariable")
{
$data = $_IPS['VALUE'];
// ev. zum Testen im Meldungsfenster anzeigen lassen
echo $data;
// $data in Floatvariable $data1 schreiben
$data1 = floatval ($data);
// ev. zum Testen im Meldungsfenster anzeigen lassen
echo $data1;
// $data1 in Floatvariable "Temperatur" schreiben
SetValueFloat(deine VarID,$data1);
}
?> 

Versuch mal, Gruß Helmut

Perfekt!
So etwas hatte ich schon die ganze Zeit gesucht.
Hab das mal so wie du es in deinem Beispiel hast nachgebastelt, doch bleiben die Variablen auf 0 stehen.
Was mach ich schon wieder falsch :mad:

Gruß und Danke
Stefan

Müßte mal die Scripte und den Baum sehen damit ich die ID’s sehen kann. Beide !

Was mir so auffällt: Deine Cutter rechts und links haben die Leerzeichen nicht drin.

Bei *C muß " *C" stehen und bei % " %", das ist rechts und links bei Humidity: "Humidity: " und bei Temperatur "Temperatur " .

Auch die Leerzeichen sind Cutterzeichen.

Gruß Helmut

<?
if ($_IPS['SENDER'] == "RegisterVariable")
{
// bereits im Puffer der Temperatur Registervariablen vorhandene Daten in $data kopieren
$data  = RegVar_GetBuffer($_IPS['INSTANCE']);
// ev. zum Testen im Meldungsfenster anzeigen lassen
echo $data;
// $data in Floatvariable $data1 schreiben
$data1 = floatval ($data);
// ev. zum Testen im Meldungsfenster anzeigen lassen
echo $data1;
// $data1 in Floatvariable "Feuchte" schreiben
SetValueFloat(16408 /*[Register Variable Luftfeuchtigkeit\Luftfeuchtigkeit]*/,$data1);
}
?>
 <?
if ($_IPS['SENDER'] == "RegisterVariable")
{
// bereits im Puffer der Temperatur Registervariablen vorhandene Daten in $data kopieren
$data  = RegVar_GetBuffer($_IPS['INSTANCE']);
// ev. zum Testen im Meldungsfenster anzeigen lassen
echo $data;
// $data in Floatvariable $data1 schreiben
$data1 = floatval ($data);
// ev. zum Testen im Meldungsfenster anzeigen lassen
echo $data1;
// $data1 in Floatvariable "Temperatur" schreiben
SetValueFloat(48459 /*[Register Variable Temperatur\Temperatur]*/,$data1);
}
?>

Die Leerzeichen hatte ich im Arduino raus genommen…

Was kommt denn im Meldungsfenster je für data1 ?

Das Meldefenster im Skript direkt ist leer und bei Meldungen steht „RegVar Handler result: 0“.

Im Script solltest Du nix starten, da kann nix kommen.

Aber dass im Meldungsfenster gar nichts steht… Du hast doch auch echo $data im Script drin und in der Debuganzeige der Registervariable kommt was… hmm

Edit: Vielleicht wäre es gut, wenn wir mal Teamviewer nutzen

Hab dir ne PN geschickt

Die Scripte in in diesem Threadsollten funktionieren, Fehler war:

Die $data Variable wird durch

$data = $_IPS['VALUE'];

und nicht durch

$data  = RegVar_GetBuffer($_IPS['INSTANCE']);

geholt.

Gruß Helmut

Könnte man so auch Werte an die Serielle Schnittstelle senden?

Einfach mal im Scripteditor ein „C“ eintippen und Alt+Space drücken.
zB:

<?
COMPort_SendText(54996 /*[Serial Port Com0Com 17]*/, "Hallo Thomas");
?>

Oder unabhängig von der Hardware:
RegVar_SendText*( integer $InstanzID, string*$Text )
Michael

Hey Leute,

muß ich das dann als String senden und im Arduino wieder in einzelne Variablen aufteilen und die dann in die Variablen auf dem Arduino schreiben?

@Helmut: beim ausführen kammt folgende Meldung

Fatal error: Call to undefined function COMPort_SendText() in /usr/share/symcon/scripts/24712.ips.php on line 3

Gruß Stefan

PS: Sorry für meine dummen Fragen

PPS: Kann das sein das diese Funktion auf den Raspberry Pi nicht geht?

-Neu: COMPort_* heißt jetzt SPRT_* und WWWReader_* heißt jetzt WWW_* (landet so bald auch endlich in der Doku)

Siehe auch Update #3595

Oh, besten dank