In einer Ausgabe mehrere Text und Variablen kombinieren

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
groby_monster
Beiträge: 6
Registriert: 12.11.2017, 22:57

In einer Ausgabe mehrere Text und Variablen kombinieren

Beitrag von groby_monster » 12.11.2017, 23:08

Hallo zusammen,

ich bin erst seit ca. 2 Monaten mit Homematic in unserer Mietwohnung unterwegs um schon mal für unseren anstehenden Hausbau und die geplante Heimautomatisierung zu üben und zu lernen.
Es hat etwas länger gedauert hinzubekommen, dass die aktuelle Temperatur und die Luftfeuchtigkeit in Systemvariablen übergeben werden, aber mit dem Forum und den Dokus zur Script Programmierung habe ich es letztlich geschafft.

Jetzt habe ich folgendes Thema:
Ich möchte wenn sich sowohl Temperatur als auch Luftfeuchtigkeit geändert haben einen Text versenden der folgendermaßen aussehen soll:

"Die aktuelle Termoeratur beträgt " + Wert der Termperaturvariablen +". Die aktuelle Luftfeuchtigkeit beträgt " + Wert der Luftfeuchtigkeitsvariablen

Ich versende diesen Text anschließend mit dem Telegram Messenger, aber der kommt nur damit klar, wenn ich einen Textbaustein mit einem Variablenwert verknüpfe.
Ich möchte danach aber einen weiteren Textbaustein und einen weiteren Variablenwert anhängen, und das bekomme ich nicht hin.

Folgendes Script habe ich dazu geschrieben bisher:

Code: Alles auswählen

! Die Systemvariablen Temperatur Wohnzimmer und Luftfeuchtigkeit Wohnzimmer werden zugeordnet und je nach Änderung sollen Nachrichten per Telegram versendet werden mit den aktuellen Werten.
var sys_temp_wohn=dom.GetObject("Temperatur Wohnzimmer");
var sys_hum_wohn=dom.GetObject("Luftfeuchtigkeit Wohnzimmer");
var Nachricht=dom.GetObject("Telegram");

! Aktuelle Temperatur und Luftfeuchtigkeit im Wohnzimmer wird aus dem Temperatur- und Luftfeuchtemesser gelesen
var temp_wohn=dom.GetObject("HmIP-STHD xxxxxxxxxxxxx:1").DPByHssDP("ACTUAL_TEMPERATURE").Value();
var hum_wohn=dom.GetObject("HmIP-STHD xxxxxxxxxxxxx:1").DPByHssDP("HUMIDITY").Value();

! Die Systemvariablen bekommen den Wert der aktuellen Temperatur und Luftfeuchtigkeit falls diese anders sind als die gespeicherten Werte.
! In der Schleife ist das Thema Luftfeuchtigkeit zweimal eingebaut, weil im Falle dass die Temperatur nicht unterschiedlich wäre, sonst nichts passieren würde bei der Luftfeuchtigkeit.
if(sys_temp_wohn.State()!=temp_wohn)
{
  sys_temp_wohn.State(temp_wohn);
  if(sys_hum_wohn.State()!=hum_wohn);
  {
    sys_hum_wohn.State(hum_wohn);
    Nachricht.State("Die Temperatur im Wohnzimmer beträgt " # sys_temp_wohn.Value());
    Nachricht.State("Die Luftfeuchtigkeit im Wohnzimmer beträgt " # sys_hum_wohn.Value());
  }
  else
  {
  Nachricht.State("Die Luftfeuchtigkeit ist gleich geblieben. Die neue Temperatur im Wohnzimmer beträgt " # sys_temp_wohn.Value());
  }
}
else
{
  if(sys_hum_wohn.State()!=hum_wohn)
  {
    sys_hum_wohn.State(hum_wohn);
    Nachricht.State("Die Temperatur ist gleich geblieben. Die neue Luftfeuchtigkeit im Wohnzimmer beträgt " # sys_hum_wohn.Value());
  }
  else
  {
  Nachricht.State("Die Temperatur und Luftfeuchtigkeit sind gleich geblieben.");
  }
}
Aktuell versendet er die verschiedenen Nachrichten, aber wenn sich beide Werte geändert haben, versendet er so weit ich sehe nur die erste Nachricht. Daher möchte ich daraus eine zu versendende Nachricht machen.

Kann mir jemand dabei helfen?

Wenn noch Infos dafür notwendig sind, dann bitte einfach melden.

Danke schon mal und Gruß
Dominic

P.S.: Ich hatte dazu im Forum schon mal gesucht, aber bisher nichts helfendes gefunden.

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: In einer Ausgabe mehrere Text und Variablen kombinieren

Beitrag von alchy » 13.11.2017, 21:09

Du musst nicht unbedingt alles neu erfinden, es gibt schon so gut wie alles.
Leider schreibst du nichts dazu, warum und wieso usw.
Willst du eine Nachricht haben, weil sich die Temperatur innerhalb von 5min geändert hat, oder erst nach 30min usw. Aber augenscheinlich hast du ja ein Problem damit alles zusammenzusetzen, wie du schreibst.

Daher ein einfaches Beispielscript mit WriteLines.

Code: Alles auswählen

object temp_wohn =datapoints.Get("HmIP-RF.000XXXXXXXXXX:1.ACTUAL_TEMPERATURE");
object hum_wohn =datapoints.Get("HmIP-RF.000XXXXXXXXX:1.HUMIDITY");
object Nachricht = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Telegram"); 

if (temp_wohn && hum_wohn && Nachricht){
string slist = "";
if( (temp_wohn.Value() != temp_wohn.LastValue() ) || (hum_wohn.Value() != hum_wohn.LastValue()) )
{
slist = "Temperatur oder Luftfeuchtigkeit unterschiedlich \n";
slist = slist #" die aktuelle Temperatur ist: " #temp_wohn.Value().ToString(1) #" Grad - die letzte Temperaturmeldung betrug " #temp_wohn.LastValue().ToString(1) #" Grad \n";
slist = slist #" die aktuelle Feuchtigkeit ist: " #hum_wohn.Value() #"% die letzte Feuchtigkeit betrug " #hum_wohn.LastValue() #" % \n";
}
else
{
slist = slist # "Temperatur und Luftfeuchtigkeit gleich \n";
slist = slist #" die aktuelle Temperatur ist: " #temp_wohn.Value().ToString(1) #" Grad - die letzte Temperaturmeldung betrug " #temp_wohn.LastValue().ToString(1) #" Grad \n";
slist = slist #" die aktuelle Feuchtigkeit ist: " #hum_wohn.Value() #"% die letzte Feuchtigkeit betrug " #hum_wohn.LastValue() #" % \n";
}
WriteLine(slist);
Nachricht.State(slist);
}else{WriteLine("Fehler Datenpunkte oder Systemvariable nicht vorhanden");}


Das Script im Anhang verwertet zu seiner Laufzeit den zuletzt gemeldeten Wert und den aktuellen Wert aus und speichert das Ergebnis in der Stringvariable. Erstellst du nun ein einfaches Programm, welches auf die Aktualisierung der Temperaturwerte des Sensors triggert, hast du schon dein Meldeprogramm für eine Zeitspanne von ca. 3min im Standardfall.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

groby_monster
Beiträge: 6
Registriert: 12.11.2017, 22:57

Re: In einer Ausgabe mehrere Text und Variablen kombinieren

Beitrag von groby_monster » 13.11.2017, 22:49

Hallo Alchy, danke für deine Antwort.
Ich hab nix dazu geschrieben warum ich das tue, weil es momentan nur ist um zu lernen wie das alles funktioniert mit Script, Systemvariablen, auslesen und Schreiben von Werten aus Geräten und natürlich Nachrichten über Telegram versenden.
Am Ende übe ich um in unserem hoffentlich nächstes Jahr zu bauenden Haus nicht live lernen zu müssen sondern mich jetzt einzuarbeiten, bevor wir mit bauen anfangen.

Ich werde Deine Umbauten im Script mal testen, sieht aber vielversprechend aus nach der Lösung die ich suche.

Also erstmal vielen Dank!

Gruß
Dominic


Gesendet von iPhone mit Tapatalk

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: In einer Ausgabe mehrere Text und Variablen kombinieren

Beitrag von alchy » 13.11.2017, 23:13

na dann bittescghön,

nimm dir nach Möglichkeit neuere Scripte vor.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

groby_monster
Beiträge: 6
Registriert: 12.11.2017, 22:57

Re: In einer Ausgabe mehrere Text und Variablen kombinieren

Beitrag von groby_monster » 14.11.2017, 08:59

Was meinst Du mit neue Scripte Alchy?

Ich habe mir den ganzen Wust an Dokumentation besorgt und versuche damit zu lernen, wie man an Dtaen kommt etc.
Gibt es da etwas neueres, oder meinst Du neuere Scripte aus dem Forum?

Gruß
Dominic

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: In einer Ausgabe mehrere Text und Variablen kombinieren

Beitrag von alchy » 14.11.2017, 09:20

Sollte nur ein Hinweis sein.
Dein Versuch von oben zeigt das du (teilweise getreu der offiziellen Doku) das ein oder andere mögliche Problem mit einfügst in dein Script.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Antworten

Zurück zu „HomeMatic allgemein“