Taupunkt Berechnung von CCU1 auf CCU2 übertragen
29.06.2018, 22:07
Hallo,
Bitte um Unterstützung bei der Übertragung einer auf der CCU1 funktionierenden Taupunktberechnung auf die CCU2.
Welche IP muss ich im Skript der CCU2 einsetzen um die Datei zur Taupunktberechnung aufzurufen?
Auf der CCU1 ist die Datei Taupunkt.cgi geladen.
Mit einem Skript wird die Datei aufgerufen und die Berechnung durchgeführt.
Auf die CCU2 habe ich die Datei Taupunkt.cgi ebenfalls geladen und kann mit einem Webbrowser durch Eingabe des url die Taupunktberechnung korrekt durchführen lassen.
Der Aufruf mit einem Skript in der CCU2 funktioniert aber nicht. Wo ist der Fehler.
Die Datei Taupunkt.cgi hat folgenden Inhalt:
#!/bin/tclsh
##
# Taupunkt.cgi
# Script zur Berechnung des Taupunktes aus Temperatur und Feuchte
# Aufruf: http://127.0.0.1/addons/xxx/Taupunkt.cgi?Temperatur=xxx&Feuchte=xxx
# Beispiel: http://127.0.0.1/addons/visu/Taupunkt.cgi?Temperatur=20.0&Feuchte=50.0
# Script im Verzeichnis: /usr/local/etc/config/addons/www/visu/
# Die Rückgabe des Ergebnisses erfolgt in einem simplen Textformat: ("text/plain")
# Status;Temperatur;Feuchte;Taupunkt
# Ausgabe: OK;20.0;50.0;9.3
# Bei einer Temperatur von 20.0 °C und einer relativen Feuchte von 50.0 %
# ergibt sich ein Taupunkt von 9.3 °C
#
# Zum Testen kann die Funktion mit einem Browser auf einem anderen Rechner aufgerufen werden.
# Die lokale Adresse 127.0.0.1 ist dann durch die IP der CCU (z.B. 192.168.100.5) zu ersetzen.
##
load tclrega.so
source
if {
set xz
set xn
set Taupunkt
set Tau1
puts -nonewline "OK;$Temperatur;$Feuchte;$Tau1"
} errorMessage] } then {
puts "Content-Type: text/plain"
puts ""
puts "ERROR $errorMessage"
}
Der Skript auf der CCU ist folgender:
! Mit folgendem Abschnitt zum Aufruf der Taupunkt.cgi funktioniert bei CCU1, aber nicht CCU2;
! string url="http://127.0.0.1/addons/visu/Taupunkt.cgi?Temperatur=" # t # "&Feuchte=" # h;
! System.Exec("wget -O - " # url, &stdout, &stderr);
! if (stdout.Length() > 0)
! und so weiter
! Der gesamte Skript auf der CCU2 Ist:
string stdout;
! Textvariable erstellen
string stderr;
! Textvariable erstellen
var t1 = dom.GetObject("BidCos-RF.OEQ0350243:1.TEMPERATURE");
! Temperatur Sensor aufrufen
var h1 = dom.GetObject("BidCos-RF.OEQ0350243:1.HUMIDITY");
! Rel. Feuchte Sensor aufrufen
if (t1.IsTypeOf(OT_OBJECT) && h1.IsTypeOf(OT_OBJECT)) {
! Geräte erreichbar?
var t = t1.Value();
! Temperatur einlesen
var h = h1.Value();
! Rel. Feuchte einlesen
! var d = h * 2;
! Berechnung aktivierbar um zu testen
dom.GetObject("Taup-drausen").State(d);
! Systemvariable Wert einlesen
string url="http://192.168.188.43/addons/visu/Taupunkt.cgi?Temperatur=" # t # "&Feuchte=" # h;
! url einlesen
system.Exec("wget -O - " # url, &stdout, &stderr);
! Rückmeldung auslesen
if (stdout.Length() > 0)
{
if ( stdout.StrValueByIndex(";", 0) == "OK")
{
var d = stdout.StrValueByIndex(";", 3).ToFloat();
! Taupunkt auslesen
dom.GetObject("Taup-drausen").State(d);
! Taup. Systemvar. zuweisen
}
}
}
else {
dom.GetObject("Taup-drausen").State(60);
}
var tx1 = dom.GetObject("Taup-drausen");
!für Test Systemvariable Taupunt aufrufen
var tx = tx1.Value();
! für Test Taupunt Wert auslesen
WriteLine("WetterSensorVariable-auslesenTemp: " # t1);
! Ausgeben für Test Bezeichnung Sensor Temp
WriteLine("WetterSensorVariable-auslesenRel.Feuchte: " # h1);
! Ausgeben für Test Bezeichnung Sensor Rel.F
WriteLine("WetterSensor Wert aus variable Temp: " # t);
! Ausgeben für Test Wert aktuelle Temperatur
WriteLine("WetterSensor Wert aus variable Rel.Feuchte: " # h);
! Ausgeben für Test Wert aktuelle Rel. Feuchte
WriteLine("url auslesen:" # url);
! Ausgeben für Test eingelesenen url
WriteLine("Rückzmeldung:" # stdout);
! Ausgeben für Test eingelesene Rückmeldung
WriteLine("Taup.Variable-auslesen : " # tx1);
! für Test Systemvariable Taupunkt aufrufen
WriteLine("Taup.Wert aus variable: " # tx);
! Ausgeben für Test Wert berechneter Taupunkt
Welche IP muss man bei CCU2 eintragen?
Bitte um Unterstützung bei der Übertragung einer auf der CCU1 funktionierenden Taupunktberechnung auf die CCU2.
Welche IP muss ich im Skript der CCU2 einsetzen um die Datei zur Taupunktberechnung aufzurufen?
Auf der CCU1 ist die Datei Taupunkt.cgi geladen.
Mit einem Skript wird die Datei aufgerufen und die Berechnung durchgeführt.
Auf die CCU2 habe ich die Datei Taupunkt.cgi ebenfalls geladen und kann mit einem Webbrowser durch Eingabe des url die Taupunktberechnung korrekt durchführen lassen.
Der Aufruf mit einem Skript in der CCU2 funktioniert aber nicht. Wo ist der Fehler.
Die Datei Taupunkt.cgi hat folgenden Inhalt:
#!/bin/tclsh
##
# Taupunkt.cgi
# Script zur Berechnung des Taupunktes aus Temperatur und Feuchte
# Aufruf: http://127.0.0.1/addons/xxx/Taupunkt.cgi?Temperatur=xxx&Feuchte=xxx
# Beispiel: http://127.0.0.1/addons/visu/Taupunkt.cgi?Temperatur=20.0&Feuchte=50.0
# Script im Verzeichnis: /usr/local/etc/config/addons/www/visu/
# Die Rückgabe des Ergebnisses erfolgt in einem simplen Textformat: ("text/plain")
# Status;Temperatur;Feuchte;Taupunkt
# Ausgabe: OK;20.0;50.0;9.3
# Bei einer Temperatur von 20.0 °C und einer relativen Feuchte von 50.0 %
# ergibt sich ein Taupunkt von 9.3 °C
#
# Zum Testen kann die Funktion mit einem Browser auf einem anderen Rechner aufgerufen werden.
# Die lokale Adresse 127.0.0.1 ist dann durch die IP der CCU (z.B. 192.168.100.5) zu ersetzen.
##
load tclrega.so
source
if {
set xz
set xn
set Taupunkt
set Tau1
puts -nonewline "OK;$Temperatur;$Feuchte;$Tau1"
} errorMessage] } then {
puts "Content-Type: text/plain"
puts ""
puts "ERROR $errorMessage"
}
Der Skript auf der CCU ist folgender:
! Mit folgendem Abschnitt zum Aufruf der Taupunkt.cgi funktioniert bei CCU1, aber nicht CCU2;
! string url="http://127.0.0.1/addons/visu/Taupunkt.cgi?Temperatur=" # t # "&Feuchte=" # h;
! System.Exec("wget -O - " # url, &stdout, &stderr);
! if (stdout.Length() > 0)
! und so weiter
! Der gesamte Skript auf der CCU2 Ist:
string stdout;
! Textvariable erstellen
string stderr;
! Textvariable erstellen
var t1 = dom.GetObject("BidCos-RF.OEQ0350243:1.TEMPERATURE");
! Temperatur Sensor aufrufen
var h1 = dom.GetObject("BidCos-RF.OEQ0350243:1.HUMIDITY");
! Rel. Feuchte Sensor aufrufen
if (t1.IsTypeOf(OT_OBJECT) && h1.IsTypeOf(OT_OBJECT)) {
! Geräte erreichbar?
var t = t1.Value();
! Temperatur einlesen
var h = h1.Value();
! Rel. Feuchte einlesen
! var d = h * 2;
! Berechnung aktivierbar um zu testen
dom.GetObject("Taup-drausen").State(d);
! Systemvariable Wert einlesen
string url="http://192.168.188.43/addons/visu/Taupunkt.cgi?Temperatur=" # t # "&Feuchte=" # h;
! url einlesen
system.Exec("wget -O - " # url, &stdout, &stderr);
! Rückmeldung auslesen
if (stdout.Length() > 0)
{
if ( stdout.StrValueByIndex(";", 0) == "OK")
{
var d = stdout.StrValueByIndex(";", 3).ToFloat();
! Taupunkt auslesen
dom.GetObject("Taup-drausen").State(d);
! Taup. Systemvar. zuweisen
}
}
}
else {
dom.GetObject("Taup-drausen").State(60);
}
var tx1 = dom.GetObject("Taup-drausen");
!für Test Systemvariable Taupunt aufrufen
var tx = tx1.Value();
! für Test Taupunt Wert auslesen
WriteLine("WetterSensorVariable-auslesenTemp: " # t1);
! Ausgeben für Test Bezeichnung Sensor Temp
WriteLine("WetterSensorVariable-auslesenRel.Feuchte: " # h1);
! Ausgeben für Test Bezeichnung Sensor Rel.F
WriteLine("WetterSensor Wert aus variable Temp: " # t);
! Ausgeben für Test Wert aktuelle Temperatur
WriteLine("WetterSensor Wert aus variable Rel.Feuchte: " # h);
! Ausgeben für Test Wert aktuelle Rel. Feuchte
WriteLine("url auslesen:" # url);
! Ausgeben für Test eingelesenen url
WriteLine("Rückzmeldung:" # stdout);
! Ausgeben für Test eingelesene Rückmeldung
WriteLine("Taup.Variable-auslesen : " # tx1);
! für Test Systemvariable Taupunkt aufrufen
WriteLine("Taup.Wert aus variable: " # tx);
! Ausgeben für Test Wert berechneter Taupunkt
Welche IP muss man bei CCU2 eintragen?