Shop-Wechsel

Der Warenkorb wird nicht übernommen.

Zum Firmenkunden / Bildungseinrichtungs Shop

Zentralen

Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display

Beiträge zu diesem Thema: 27
1 von 2
Für Aktionen im ELV-Technik-Netzwerk müssen Sie sich ein Profil erstellen
Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 17:55
Hey Leute,

ich habe bislang mit dem Scripten in der CCU3 bislang wenig Erfahrung. Vielleicht kann mir jemand helfen.

Ich möchte folgendes machen:

1. Temperatur und Luftfeuchtigkeit jedes Sensors in je einer Systemvariable schreiben
2. Temperatur und Luftfeuchtigkeit aus Systemvariable in meinem E-Paper Display anzeigen lassen

Ich habe 2 Sensoren und im Groben soll es wie folgt angezeigt werden:

I: 20,0° / 40,1%
O: 10,0° / 50,2%

Bislang bin ich bei "Problem 1", also erstmal die Temperatur in Systemvariable zu bekommen.

var Sensor = dom.GetObject("BidCos-RF.000EDA498FD586:1.TEMPERATURE");
var Temp_Hausanschluss = dom.GetObject ("Temp_Hausanschluss");
Temp_Hausanschluss.Variable (Sensor.Value() );


Systemvaribale ist Temp_Hausanschluss als Typ hab ich Zahl mit dem Bereich von -50 - 50 angegeben.


Michael
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 18:04
dom.GetObject("Temp_Hausanschluss").State(Sensor.Value());

Würde allerdings so vorgehen:
Lesen Tempetatur 1 und in Variable speichern
Lesen Tempetatur 2 und in Variable speichern
Lesen Feuchtigkeit 1 und in Variable speichern
Lesen Feuchtigkeit 2 und in Variable speichern
Setzen der Systemvariable 1 mit
Temperatur 1#"° \ "#Feuchtigkeit 1
Setzen der Systemvariable 2 mit
Temperatur 2#"° \ "#Feuchtigkeit 2

Des Weiteren würde ich eine Zeichenkette als Systemvariable nehmen, da man dann die Nachkommastellen mit
.ToString(1) -> 1 Nachkommastelle bestimmen kann

Beispiel:
(dom.GetObject("VirtualDevices.INT0000002:1.ACTUAL_TEMPERATURE").Value()).ToString(1)#"°"
ergibt 25,2°
Christian
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 18:08
Danke für die Antwort. Nur wie soll ich das nutzen?

Bin recht neu was Scripte und so angeht und bin gerade mit einem dahin geworfene Info etwas verwirrt. Also was ich damit machen soll und so?


Michael
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 18:14
Ich habe das ergänzt
Die Zeile zeigt, wie eine Systemvariable beschrieben wird, anstatt
Temp_Hausanschluss.Variable (Sensor.Value() );
Christian
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 18:17
Okay,

danke nun komm ich zumindest schon mal etwas weiter. Nur muss ich nicht irgendwo definieren, welche Systemvariable für welchen Wert ist und so?

Bzw. bevor ich noch Duzend Meldungen schreibe, wie bekomme ich die Systemvariable nachher wieder ausgelesen und einer Variable zugewiesen.



Michael
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 18:24
Nein, du kannst in die Variable reinschreiben was du möchtest.
Natürlich den Datentyp beachten.

Lesen
Variable=dom.GetObject("xxxx").State();

Zum einlesen
https://www.eq-3.de/Downloads/eq3/download%20bereich/hm_web_ui_doku/HM-Skript_Teil_1_Sprachbeschreibung_V2.2.pdf

https://www.eq-3.de/Downloads/eq3/download%20bereich/hm_web_ui_doku/HM_Script_Teil_2_Objektmodell_V1.2.pdf

https://www.eq-3.de/Downloads/eq3/download%20bereich/hm_web_ui_doku/HM_Script_Teil_2_Objektmodell_V1.2.pdf


https://www.eq-3.de/Downloads/eq3/download%20bereich/hm_web_ui_doku/hm_devices_Endkunden.pdf


Christian
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 18:26
Ich meinte eigentlich bei deinem Beispiel:

dom.GetObject("VirtualDevices.INT0000002:1.ACTUAL_TEMPERATURE").Value()).ToString(1)#"°"

Also da ist ja keine Systemvariable angegeben oder blicke ich nicht ganz durch das ganze irgendwie durch?



Michael
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 18:28
Nein, das Beispiel zeigt, wie aus einem Gerät die Temperatur gelesen wird, in einen String umgewandelt wird und auf 1 Nachkommastelle begrenzt wird
Christian
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 18:30
Ah okay.

Dann fehlt also nur noch der Teil der Wert in die Systemvariable zu schreiben.

Oder geht das hier:

Temp_Hausanschluss.Variable(dom.GetObject("VirtualDevices.INT0000002:1.ACTUAL_TEMPERATURE").Value()).ToString(1)#"°"
);


Oder denke ich mir das zu einfach?


Michael
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 18:32
Ähhhh erster Beitrag
dom.GetObject("Temp_Hausanschluss").State(WERT_ZUM_SCHRREIBEN);

Bitte beachte die ergänzten Links zur Doku

Ggf. gibt mir deine eMail, ich sende ein Script aus dem du vielleicht etwas abgucken kannst

EDIT
Nein, das geht nicht
a) ist "VirtualDevices.INT0000002: ein Gerät von mir und nicht deins
b) musst du das Objekt auslesen

Gehen würde zusammengesetzt
dom.GetObject("Temp_Hausanschluss").State(dom.GetObject("BidCos-RF.000EDA498FD586:1.TEMPERATURE").Value());
Christian
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 18:36
Hab ich dir per PN geschickt.


Michael
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 18:38
Habe das Script gesandt
Christian
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 18:40
Hab ich bekommen.

Ich guck mir das mal an und versuch mir das möglichst leicht zusammen zu bauen. Mal gucken ob ich das hin bekomme.

Wenn was ist kann ich mich auch per Mail melden oder eher weniger?


Michael
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 18:41
kannst dich melden
Christian
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 18:55
Hallo raspido,

welche Type von Wandthermostat hast Du denn überhaupt eingesetzt???
In Deinem Beispiel wird BidCos-RF:..aufgeführt, die nachfolgende Nummernfolge ist jedoch die eines HmIP-Wandthermostates. Das kann so nicht stimmen.
Bei einem HmIP-Komponente muss auf jeden Fall mit HmIP-RF.xxxxxxx definiert werden....hier gilt Kanal 1...

Abfrage und schreiben in eine Systemvariable..hier vom Typ Zahl zum testen. (SysTESTZA)
Abfrage:
var y = dom.GetObject("HmIP-RF.000C0000000000:1.ACTUAL_TEMPERATURE").Value();
WriteLine(y)
Schreiben in eine Systemvariable:
dom.GetObject("TESTZA").State(y);

Gruß elkotek
Viele Grüße..elkotek
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 18:57
Ich nutze folgende Termostate:

Homematic IP Funk-Temperatur- und Luftfeuchtigkeitssensor HmIP-STHO-A, anthrazit, außen

Die nutze ich innen und außen.


Michael
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 19:06
Also dann erstelle die Abfrage nach dem vorgenannten script..wobei hier bei Code Deine Ziffern-/Zahlenfolge eingetragen wird.
Dann trage diese script in "Skript testen" ein und führe dies aus. Wenn Du bereits eine Systemvariable SysTESTZA erstellt hast, wird nach dem Ausführen auch dort der gemessene Wert aufgeführt. Einfach probieren. Die Formatierung der Darstellung kann man in einem 2. Schritt realisieren.
Viele Grüße..elkotek
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 19:08
dom.GetObject("Temp_Hausanschluss").State(dom.GetObject("HmIP-RF.000EDA498FD586:1.ACTUAL_TEMPERATURE").Value()).ToString(1)#"°";


Das hab ich getestet und das läuft schon mal.

Also Wert geht in Systemvariable.

Nun gucke ich den nächsten Schritt. Wert aus Systemvariable in Variable holen und auf E-Paperdisplay ausgeben.

Das kommt nun aber noch.


Michael
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 19:12
Und nun läufts. Code folgt gleich noch für Interessierte.

Code ist nicht von mir, hab ein "Basiscode" von jemand anderem genutzt und meine Punkte ergänzt. Hier der Code:

!! Universalprogramm zum Füllen des HM-Disp-EP-WM55
!! (c) DrTob
!! Version 1.01



! Symbole
! 0x80 AUS
! 0x81 EIN
! 0x82 OFFEN
! 0x83 geschlossen
! 0x84 fehler
! 0x85 alles ok
! 0x86 information
! 0x87 neue nachricht
! 0x88 servicemeldung


! Zugriff auf vordefinierte Texte
!
! 0x80 Textblock 1
! 0x81 Textblock 2
! 0x82 Textblock 3
! 0x83 Textblock 4
! 0x84 Textblock 5
! 0x85 Textblock 6
! 0x86 Textblock 7
! 0x87 Textblock 8
! 0x88 Textblock 9
! 0x89 Textblock 10


! Tonfolgen
! 0xC0 AUS
! 0xC1 LANG LANG
! 0xC2 LANG KURZ
! 0xC3 LANG KURZ KURZ
! 0xC4 KURZ
! 0xC5 KURZ KURZ
! 0xC6 LANG

!Signale
! 0xF0 AUS
! 0xF1 Rotes Blitzen
! 0xF2 Grünes Blitzen
! 0xF3 Orangenes Blitzen

!Seriennummer des HM-Disp-EP-WM55.
string seriennummer = "PEQ0177584";

!Variablen für die Texte und Icons
!Nicht verwendete Variablen nicht löschen, sondern auf "" setzen!
!Zeilen-Variablen können 0x80-0x89 für vordefinierte Texte oder bis zu 12 Zeichen Freitext sein. (längere Texte werden abgeschnitten)
string zeile2 = "In: " + dom.GetObject("Temp_Hausanschluss").State();;
string icon2 = "0x86";

string zeile3 = "Freier Text";
string icon3 = "";

string zeile4 = "";
string icon4 = "";

string signal = "0xF0";

string tonfolge = "0xC0";

! 1 bis 15. 0 = Unendlich
integer wiederholungen = 1;

! es wird zum nächstmöglichen Abstand aufgerundet. Maximum ist 160s.
integer abstand = 10;



!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! System Routine do not change anything below !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

string splitter="|";
string msgBuffer = zeile2 # splitter # icon2 # "\t";
msgBuffer = msgBuffer # zeile3 # splitter # icon3 # "\t";
msgBuffer = msgBuffer # zeile4 # splitter # icon4;

string substitutions = "A,0x41\tB,0x42\tC,0x43\tD,0x44\tE,0x45\tF,0x46\tG,0x47\tH,0x48\tI,0x49\tJ,0x4A\tK,0x4B\tL,0x4C\tM,0x4D\tN,0x4E\tO,0x4F\tP,0x50\tQ,0x51\tR,0x52\tS,0x53\tT,0x54\tU,0x55\tV,0x56\tW,0x57\tX,0x58\tY,0x59\tZ,0x5A";
substitutions = substitutions # "\ta,0x61\tb,0x62\tc,0x63\td,0x64\te,0x65\tf,0x66\tg,0x67\th,0x68\ti,0x69\tj,0x6A\tk,0x6B\tl,0x6C\tm,0x6D\tn,0x6E\to,0x6F\tp,0x70\tq,0x71\tr,0x72\ts,0x73\tt,0x74\tu,0x75\tv,0x76\tw,0x77\tx,0x78\ty,0x79\tz,0x7A";
substitutions = substitutions # "\t0,0x30\t1,0x31\t2,0x32\t3,0x33\t4,0x34\t5,0x35\t6,0x36\t7,0x37\t8,0x38\t9,0x39\t ,0x20\t!,0x21\t\",0x22\t%,0x25\t&,0x26\t=,0x27\t(,0x28\t),0x29\t*,0x2A\t+,0x2B\t,,0x2C\t-,0x2D\t.,0x2E\t/,0x2F";
substitutions = substitutions # "\tÄ,0x5B\tÖ,0x23\tÜ,0x24\tä,0x7B\tö,0x7C\tü,0x7D\tß,0x5F\t:,0x3A\t;,0x3B\t@,0x40\t>,0x3E";

string bufferLine;
string substEntry;
integer i;
string char;
string line;
string icon;

string command = "0x02,0x0A";
foreach(bufferLine, msgBuffer) {
line = bufferLine.StrValueByIndex(splitter, 0);
icon = bufferLine.StrValueByIndex(splitter, 1);
if ((line <> "") || (icon <> "")) {
command = command # ",0x12";
if ((line.Substr(0,2) == "0x") && (line.Length() == 4)) {
command = command # "," # line;
i = 12;
}
else {
i = 0;
}
while ((i < line.Length()) && (i < 12)) {
char = line.Substr(i, 1);
foreach(substEntry, substitutions){
if (char == substEntry.Substr(0,1)){command = command # substEntry.Substr(1,5);}
}
i = i + 1;
}
if (icon <> "") {
command = command # ",0x13," # icon;
}
}
command = command # ",0x0A";
}

command = command # ",0x14," # tonfolge # ",0x1C,";

if (wiederholungen < 1){
command = command # "0xDF,0x1D,";
}
else {
if (wiederholungen < 11) {
command = command # "0xD" # (wiederholungen - 1) # ",0x1D,";
}
else {
if (wiederholungen == 11) {
command = command # "0xDA,0x1D,";
}
else {
if (wiederholungen == 12) {
command = command # "0xDB,0x1D,";
}
else {
if (wiederholungen == 13) {
command = command # "0xDC,0x1D,";
}
else {
if (wiederholungen == 14) {
command = command # "0xDD,0x1D,";
}
else {
command = command # "0xDE,0x1D,";
}
}
}
}
}
}


if (abstand <= 10) {
command = command # "0xE0,0x16,";
}
else {
if (abstand <= 100) {
command = command # "0xE" # (abstand - 1 / 10) # ",0x16,";
}
else {
if (abstand <= 110) {
command = command # "0xEA,0x16,";
}
else {
if (abstand <= 120) {
command = command # "0xEB,0x16,";
}
else {
if (abstand <= 130) {
command = command # "0xEC,0x16,";
}
else {
if (abstand <= 140) {
command = command # "0xED,0x16,";
}
else {
if (abstand <= 150) {
command = command # "0xEE,0x16,";
}
else {
command = command # "0xEF,0x16,";
}
}
}
}
}
}
}


command = command # signal # ",0x03";

dom.GetObject("BidCos-RF." # seriennummer # ":3.SUBMIT").State(command);


Michael
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 19:21
Du hast gleich alles in 1 Befehl geschrieben. Zum starten würde ich Dir immer raten, dies in 2 Schritten zu realsisieren. Dann läßt sich einfacher damit "spielen".
Im Übrigen..fürs EPaper-Display braucht man nicht die Sache vorher in eine Systemvaraibele schreiben. Eine Abfrage und Darstellung ist direkt möglich.
Viele Grüße..elkotek
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 19:23
Klar, der direkte Weg ist auch möglich.

Nur manchmal benötige ich im Nachgang für bestimmte Zwecke diese und dachte es schadet nicht oder?

Wie würde es den in 2 Teilen aussehen?

Oder so etwa:


wert = dom.GetObject("HmIP-RF.000EDA498FD586:1.ACTUAL_TEMPERATURE").Value()).ToString(1)#"°";

dom.GetObject("Temp_Hausanschluss").State(Wert)


Michael
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 19:37
Gibt es das ° Zeichen auch beim E-Paperdisplay? Oder kennt das Display das zeichen nicht?



Michael
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 19:45
Gibt es..muss aber in der Vorlage von Dr.Trob ergänzt werden.
1. Suche Dir die Zeile....String substitutions =
2. Ergänze den letzte Term tZ,0x5A\t°,0x5E";
Viele Grüße..elkotek
Aw: Werte aus Sensor in Systemvariable und Systemvariable in E-Paper Display
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.07.2019, 20:06
Hab ich versucht. Also diese Zeichenfolge ans Ende zu ergänzen, nur dann Zeigte er mir nicht das Zeichen sondern teil der Zeichenfolge an.

Aber an sich auch nicht weiter Tragisch. Habe es nun bei 2 Thermometer auf folgendes gebracht:

In / Out
20.5/22.4C


Jetzt fehlt noch Luftfeuchtigkeit. Aber den Parameter Google ich mir eben und dann kann es ergänzt werden.

Was mich nur nervt ist, dass 12 Zeichen erlaubt sind. Nur sobald ich bei den Werten ein Leerzeichen ergänze der Lesbarkeit fehlt am Ende ein Teil. Und nach Zählung sind es doch nur 9 Zeichen.



Michael
1 von 2
Profil erstellen