Shop-Wechsel

Der Warenkorb wird nicht übernommen.

Zum Firmenkunden / Bildungseinrichtungs Shop

Zentralen

Taupunkt Berechnung von CCU1 auf CCU2 übertragen

Beiträge zu diesem Thema: 5

Homematic Zentrale CCU2 für Smart Home / Hausautomation inkl. 12 Monate CloudMatic connect

Artikel-Nr.: 103584

zum Produkt
Taupunkt Berechnung von CCU1 auf CCU2 übertragen
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
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?

Aw: Taupunkt Berechnung von CCU1 auf CCU2 übertragen
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
30.06.2018, 19:55
Hallo Dank,

wenn Du nur die Taupunkttemperatur Td..
*..zum Beispiel mit einem Wandthermostat HM-TC-IT-WM-W-EU…erfassen/auswerten möchtest
*..kann dies einfacher per script realsiert werden

Ab CCU2/FW2.29.18 --> klick siehe Pkt. 8, können auch komplexe mathematische Funktionen direkt berechnet werden.
Per script und Werteabfrage von t und rf im Kanal 1, ist eine einfache Berechnung und Darstellung möglich.
Der von Dir beschriebene Aufwand wäre damit nicht mehr notwendig.

Gruß elkotek
Viele Grüße..elkotek
Aw: Taupunkt Berechnung von CCU1 auf CCU2 übertragen
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
01.07.2018, 07:38
127.0.0.1 ist immer der lokale Rechner. Somit also die CCU2, wenn das Script auf der CCU2 läuft.
Vermute eher, das der Pfad nicht stimmt

! string url="http://127.0.0.1/addons/visu/Taupunkt.cgi?Temperatur=" # t # "&Feuchte=" # h;

Gehe mal davon aus, das die "!" nur hier im Text vorhanden sind und nicht wirklich im Script vor den Befehlen
https://homematic-forum.de/forum/viewtopic.php?f=26&t=6022
Christian
Aw: Taupunkt Berechnung von CCU1 auf CCU2 übertragen
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
01.07.2018, 08:50
Hallo Dank,

eine einfache Möglichkeit die Taupunkttemperatur per script zu berechnen zeigt das folgende script-Beispiel.

var t = dom.GetObject("BidCos-RF.xxxxxxxxxxx:1.TEMPERATURE").Value();
WriteLine(t);
var rf = dom.GetObject("BidCos-RF.xxxxxxxxxx:1.HUMIDITY").Value();
WriteLine(rf);
var rf1 = 0.01*rf;
var k1 = 0.124688;
var k2 = 109.8;
var s = rf1.Pow(k1);
var Td = (s*(k2 + t)) - k2;
WriteLine(Td); !dies ist die Taupunkttemeperatur

Testweise kannst Du einfach einmal unter "Script testen" das script einfügen und "Ausführen".

Anmerkung:
*..das script-Beispiel wurde der Einfachheit wegen mit normierten Werten k1, k2 durchgeführt...deren Bestimmung aus den bekannten Formeln ermittelt wurde.
*..xxxxxxxx ist der RF-Code Deines Wandthermostates hier zum Beispiel wurde der Wandthermostat … HM-TC-IT-WM-W-EU (Kanal 1) verwendet (checkbox..zyklische Statusmeldung vom Kanal 1) aktivieren.

Zur Kontrolle kannst Du hier Deine selbst berechneten Werte nachprüfen --> klick

Einfach einmal ausprobieren.

Gruß elkotek
Viele Grüße..elkotek
Aw: Taupunkt Berechnung von CCU1 auf CCU2 übertragen
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
01.07.2018, 10:56
Hallo elkotek,

Dein Hinweis ist genial.
Es klappt auf anhieb.

Ebenfalls vielen Dank für die Hinweise der anderen Beiträge.

Schöne Grüße,
Dank