HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

gehard2001
Beiträge: 25
Registriert: 29.07.2015, 13:01

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von gehard2001 » 20.03.2016, 18:20

es funktioniert!!!
das "string" in der 2.Zeile gelöscht und - hurra - es funktioniert!!!

Danke für Eure Hilfe und bis bald!!! :D

flo_da_ho
Beiträge: 9
Registriert: 21.03.2016, 16:57

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von flo_da_ho » 21.03.2016, 17:07

Hi,

habe das hier gefunden, nachdem ich auf der Suche nach dem Ansteuern des HM-Dis-WM55 war.

Erst mal lieben Dank. Das hat echt sehr geholfen.


Da ich es nicht besonders gut finde dass man das Skript bei Änderungen immer doppelt editieren muss, habe ich folgenden Vorschlag:

Den oberen, einig unterschiedlichen Teil, durch folgenden Teil ersetzen:

Code: Alles auswählen

! #### wie viele Seiten auf dem Display sollen durchlaufen werden? #############

integer seitenzahl = 4;

! ##############################################################################

! aktuell angezeige Seite aus der CCU holen
integer obj = dom.GetObject("DisplaySeite");
integer aktuelleSeite = obj.Variable();

! Auslöserbutton holen
! taster = 2 --> oberer taster, taster = 1 --> unterer taster
string sender = dom.GetObject("$src$").Name();
integer taster = sender.StrValueByIndex(":",1).StrValueByIndex(".",0).ToInteger();

! abhängig von aktuelleSeite und Auslöser die Displayseite anpassen

if (aktuelleSeite == 0){
  aktuelleSeite = 1; ! Startbedingung, unabhängig vom Button
}
else{ ! Wenn ein Button gedrückt wird während das Dispay an ist
  if (taster == 2){ ! oberer Button (hier: nächste Seite)
    aktuelleSeite = 1 + aktuelleSeite;
  }
  else { ! unterer Button (hier: vorherige Seite)
    aktuelleSeite = -1 + aktuelleSeite;
  }
  
  if (aktuelleSeite > seitenzahl){
    aktuelleSeite = 1;
  }
  if (aktuelleSeite < 1){
    aktuelleSeite = seitenzahl;
  }
}

obj.Variable(aktuelleSeite); ! in CCU sichern

! ###################### Seite 1 ######################

if (aktuelleSeite == 1){
  seite1 = "seite1";
  ! ...
}
Da ja nur der Zähler anders ist in den beiden Skripten habe ich das Skript wie oben abgeändert. Ich prüfe quasi ob das Ereignis vom oberen oder dem unteren Button kommt und in- bzw dekrementiere dann in dem If Block den Seitenzähler.

Es wird also nur ein Programm benötigt das bei Display:1 ODER Display:2 auslöst. Innen wird dann entschieden.

Wie gesagt. Nur eine kleine Verbesserung da ich es nicht schaffe 2 Dateien zu pflegen ;-)

Gruß,
Florian

hwilligm
Beiträge: 3
Registriert: 11.05.2016, 21:19

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von hwilligm » 15.05.2016, 18:05

Hallo Florian,

finde ich eine gute Idee, nur krieg ich es nicht ans laufen, kannst Du bitte das komplette Script posten und dazuschreiben welche Systemvariablen mal anlegen muss?

Danke
hwilligm

Xel66
Beiträge: 14148
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von Xel66 » 12.08.2016, 14:34

Braucht man doch nicht abzufragen, denn ein kurzer und ein langer Tastendruck starten unterschiedliche Programme. Es sind separate Trigger für unterschiedliche Programme. Wenn Du nicht beide Tastendrücke als Trigger für das gleiche Programm/Script eingerichtet hast, brauchst Du die Abfrage also nicht.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Xel66
Beiträge: 14148
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von Xel66 » 12.08.2016, 16:30

Dann wirst Du mit Klimmzügen leben müssen. Die eQ-3-Script-Doku Teil 4 gibt dieses Beispiel :

Code: Alles auswählen

 var  myChannel  =  dom.GetObject("myChannel");
var  dp  = myChannel.DPByHssDP("PRESS_SHORT");
dp.State(true);
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

BadenPower

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von BadenPower » 12.08.2016, 17:31

deltaac hat geschrieben:Ich würde aber gerne das gleiche Programm nutzen und den Druck intern verarbeiten...
Dazu kannst Du den Timestamp des PRESS_SHORT mit dem des PRESS_LONG vergleichen.

Arist
Beiträge: 123
Registriert: 21.04.2014, 15:00

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von Arist » 01.02.2017, 17:15

Hallo zusammen,

inzwischen habe ich auch so ein nettes Display und bin dank Eurer Hilfe für meine bescheidenden Kenntnisse einigermassen gut zurecht bekommen. Aber zwei Fragen hätte ich denn dann doch noch dazu.

Das Sript läuft soweit bei mir und ich habe es entsprechend angepasst. Alle hier vorhandenen Beispiele sind jedoch mit einer ich nenne es mal >else-Funktion< gekoppelt, um textlich oder farblich unterschiedliches in Verbindung einer Variablen bzw Operanden darzustellen. Das ist aber nicht immer notwendig. So habe ich eine Übersicht einiger Wetterdaten auf eine dieser Seiten gelegt. Mir würde es aber reichen, dies ohne das alles, sondern nur der Wert einer Systemvariablen in der CCU.

Am Beispiel der Wetterseite, welche auszugsweise wie folgt aussieht

Code: Alles auswählen

! 4.Zeile Wetter/ Windstärke

var channel=dom.GetObject("W_Windgeschwindigkeit");
var win = channel.Value();
if (win < 40.0)
{ win = win.ToString(0);
  zeile4 ="Wind:"#win#"km/h";
  color4 = "0x84";
  icon4= "";
}
else
{ win = win.ToString(0);
 zeile4 ="Wind:"#win#"km/h";
 color4 = "0x85";
 icon4= "";
}
darf ich die If-Abfrage nicht einfach herausnehmen, auch nicht in Verbindung mit der Verzweigung nach <else> hin nicht. Danach läuft das Script nicht mehr und es werden keine Daten mehr übertragen.

Wie bitte muss es den aussehen um wie in dem Falle den Wert ("W_Windgeschwindigkeit") abzufragen und an die Textzeile zu übergeben?

Und wo ich schon gerade mal tipper, wie sieht es mit der Syntax für Inhalte einer Systemvariablen vom Typ Logikwert und Zeichenkette aus?

Danke vorab!


Grüße

Arist

Arist
Beiträge: 123
Registriert: 21.04.2014, 15:00

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von Arist » 12.02.2017, 20:47

Nabend zusammen,

darf ich noch einmal höflichst nachfragen?


Danke vorab!


Grüße

Arist

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

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von alchy » 13.02.2017, 00:00

Abgesehen davon, das deine Passage die Zeile nicht speichert.

Code: Alles auswählen

! 4.Zeile Wetter/ Windstärke
string oSVName = "W_Windgeschwindigkeit";
string win="NaN";string zeile4;string color4;string icon4;
if (dom.GetObject(ID_SYSTEM_VARIABLES).Get(oSVName)) {
object oSV = dom.GetObject(ID_SYSTEM_VARIABLES).Get(oSVName);
win = oSV.Value().ToString(1);
color4 = "0x84";
icon4= "";
}
zeile4 ="Wind:"#win#" km/h";
Deine weiteren Fragen sollten in der Scriptdoku (siehe Signatur) beantwortet werden.

Grundsätzlich werden mit den ^^ Script alle Systemvariablen eine Ausgabe bringen, nur wirst du diese nicht so wollen. :wink:
Daher gehört eigentlich ein generelles Script an die Stelle, was selber entscheidet, was wie angezeigt werden soll.

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.

Arist
Beiträge: 123
Registriert: 21.04.2014, 15:00

Re: HM-DIS-WM55 Seitenweise blättern und Aktionen ausführen

Beitrag von Arist » 13.02.2017, 14:29

Hallo Alchy,


ich komme nicht umhin zu fragen. Dein Hinweis auf die Scriptdoku ist sicher gut gemeint, aber ich bekomme es nicht hin. Die Dateien sind alle schon vor langem heruntergeladen. Aber so etwas zu lesen, ohne das Verständnis dafür ist schon heftig. Habs auch nicht erlernt, beruflich eine völlig andere Richtung
Es vergehen Stunden über Stunden mit probieren. Andere lesen Scripte, wie unsereins die Bildzeitung (rhetorisch gemeint :wink: )

Auch über die Suche ist so etwas nicht mal eben zu finden. Und sofern ich nicht zufällig eine Lösung sehe, die passt und nur modifiziert werden muss, dann bleibt leider nur nachfragen. Einiges an Infos und Tipps habe ich mir schon in Form eines Links oder direkt als Datei abgespeichert um es bei Bedarf einzusetzen.

Programmieren fällt mir leider nicht in den Schoss, andere Dinge dafür schon. Bin auch keine 20 mehr. In meinem Alter muss man erst was vergessen, um etwas neues dazuzulernen :D
Im Ernst, es fällt wirklich schwer. Und ich denke, ich da nicht alleine. Daher ist dieses Forum mit den Wissenden eine super Hilfe.

Ich lese nahezu jeden Tag neue Beiträge. Und wie kürzlich in einem anderen Fred zu lesen war, wird ja auch ein Feedback gewünscht. Dein kurzes Script läuft natürlich. Vielen Dank dafür :!:



Grüße

Arist

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“