Kommastellen bei Systemvariablen

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Benutzeravatar
Moonrider
Beiträge: 66
Registriert: 25.08.2017, 13:17

Kommastellen bei Systemvariablen

Beitrag von Moonrider » 03.01.2018, 21:32

Hallo,

ich hoffe mir kann mal kurz jemand helfen.

Ich möchte auf einem Display HM-Dis-WM 55 mir Systemvariablen anzeigen lassen. Das funktioniert auch soweit ganz gut, dank einiger Skripte aus dem Forum. (danke an die Verfasser).

Ich benutze auch das Skript Wetterdaten von Wunderground holen. Hier möchte ich mir die Luftfeuchtigkeit in % und die Windgeschwindigkeit anzeigen lassen.

Wenn ich in meinem Displayskript folgendes eingebe :


var channel=dom.GetObject('W_Luftfeuchte');
var temp = channel.Value();
{ temp = temp.ToString(1);
zeile5 = "Air"#temp#" %";
color5 = "0x80";


var channel=dom.GetObject('W_Windgeschwindigkeit');
var temp = channel.Value();
{ temp = temp.ToString(1);
zeile6 = "Wind "#temp#"km/h";
color6 = "0x80";

Dann werden auch die Daten abgerufen und dargestellt. Nur leider werden die Luftfeuchtigkeit und die Windgeschwindigkeit mit vielen Kommastellen dargestellt.
Rufe ich die Variablen direkt auf sieht es anders aus.
1.JPG
1.JPG (17.9 KiB) 4345 mal betrachtet
2.JPG
Kann mir jemand sagen, wie ich die Variablen anpassen kann ?

Danke
So long

Marcus

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

Re: Kommastellen bei Systemvariablen

Beitrag von alchy » 03.01.2018, 23:55

die { in

haben in den Codeschnipseln

Code: Alles auswählen

{ temp = temp.ToString(1);
nichts zu suchen.

Lustig, das es keinen error gibt.

die Werte von Zahlenvariablen werden in der Klickibunti immer anders dargestellt.

Unter
Startseite > Status und Bedienung > Systemvariable mit 2 Stellen nach dem Komma

fügst du sie unter
Startseite > Einstellungen > Benutzerverwaltung
der Startseite hinzu werden dann wieder alle 8 Nachkommastellen angezeigt.

aber das nur am Rande

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.

Benutzeravatar
jmaus
Beiträge: 9818
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1856 Mal
Kontaktdaten:

Re: Kommastellen bei Systemvariablen

Beitrag von jmaus » 04.01.2018, 10:08

alchy hat geschrieben: die Werte von Zahlenvariablen werden in der Klickibunti immer anders dargestellt.
Welche Bereiche in denen Zahlenvariablen immer anders dargestellt werden (z.B. mit einer anderen precision) kennst du denn noch? Für die nächste RaspberryMatic habe ich diesbzgl. bereits ein WebUI patch generiert der für die user shared objects systemvariablen dann gleich ausgeben sollte wie es die normale liste der systemvariablen anzeigt (siehe https://github.com/jens-maus/RaspberryMatic/issues/194).
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

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

Re: Kommastellen bei Systemvariablen

Beitrag von alchy » 04.01.2018, 10:48

Was die unterschiedlichen Anzeigen betrifft, habe ich ja schon 2 genannt. Gerade die Startseitenzuordnung hat ja nicht nur Probleme mit den Zahlenvariablen, sondern noch andere.
Innerhalb der Programmierung in Klickibuntiprogrammen werden Zahlenvariablen mit .XX im Systemprotokoll dann wieder mit .XXXXXX in Favoriten .XX
Aber das können dir auch die Leute aufzeigen, welche dafür bezahlt werden.

Das sollte auch nur ein Hinweis darauf sein, da sich der Fragesteller ja gewundert hat über die unterschiedliche Anzeige.
(Wobei natürlich ursächlich sein Script falsch war, wie ich ja oben schrieb - war nur eine Nebeninfo.)

Aber wenn du schon mal hier bist, wieso wird kein Fehler geworfen, bei Verwendung der { wie in seinem Beispiel ?
Und lies gleich mal >> H I E R <<

Ich habe keine RaspberryMatic in Benutzung, daher kann ich dazu auch nichts sagen.
Ein Patch den du in der RaspberryMatic einfügst, welcher aber nicht in der CCU FW ist, macht die Sache nur unüberschaubarer.
Nicht wieder falsch verstehen, ich ich versteh das schon.

Allerdings muss ich mir Gedanken machen, was ich hier überhaupt noch "supporten" kann und will.

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.

Benutzeravatar
jmaus
Beiträge: 9818
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1856 Mal
Kontaktdaten:

Re: Kommastellen bei Systemvariablen

Beitrag von jmaus » 04.01.2018, 11:30

alchy hat geschrieben:Was die unterschiedlichen Anzeigen betrifft, habe ich ja schon 2 genannt. Gerade die Startseitenzuordnung hat ja nicht nur Probleme mit den Zahlenvariablen, sondern noch andere.
Innerhalb der Programmierung in Klickibuntiprogrammen werden Zahlenvariablen mit .XX im Systemprotokoll dann wieder mit .XXXXXX in Favoriten .XX
Danke für den Hinweis zum Systemprotokoll. Dann werd ich mir das als nächstes mal anschauen und sehen ob ich dort auch die gleiche Precision nutzen kann wie an den anderen Stellen. Ggf. könnte man ja auch gleich überlegen eine Option in die Benutzerverwaltung zu machen wo ein Nutzer seine gewünschte Precision für die WebUI Anzeige dann einstellen kann. Muss ich mal genauer drüber nachdenken.
alchy hat geschrieben: Aber wenn du schon mal hier bist, wieso wird kein Fehler geworfen, bei Verwendung der { wie in seinem Beispiel ?
Nunja. Wie du dir sicher denken kannst ist der Scriptparser der ReGa suboptimal. Da gibt es viele Dinge die nicht so chic sind und wie dieser Punkt dann auch kein Syntax Error erzeugen. Ist eben sehr alt der parser und nur teilweise für seine jetzige Verwendung so designed worden. Alles in allem werd ich das mal auf meine Liste setzen, messe dem aber erst eimal niedrige Priorität bei weil ich mich auch schon denken kann as die Anpassungen dafür sicherlich nicht gering sein werden denn wer schon einmal einen Compiler geschrieben hat weiss das das kein Zuckerschlecken ist ;)
alchy hat geschrieben: Und lies gleich mal >> H I E R <<
Ich habe keine RaspberryMatic in Benutzung, daher kann ich dazu auch nichts sagen.
Danke für den Hinweis, werde dann dort entsprechend darauf reagieren.
alchy hat geschrieben: Ein Patch den du in der RaspberryMatic einfügst, welcher aber nicht in der CCU FW ist, macht die Sache nur unüberschaubarer.
Nicht wieder falsch verstehen, ich ich versteh das schon.
Allerdings muss ich mir Gedanken machen, was ich hier überhaupt noch "supporten" kann und will.
Wie ich schon hier/da gesagt hatte. Dinge die in RaspberryMatic eingebaut werden landen früher/später so auch in der CCU2 (solange diese noch offiziell supported wird) - nur eben mit etwas Verzögerung. Insofern macht es schon IMHO Sinn darauf ein Auge zu werfen und nur weil es RaspberryMatic ist das nicht links liegen zu lassen. Auch baue ich dort die Dinge so ein (mittels patches - siehe https://github.com/jens-maus/RaspberryM ... tches/occu) das jeder das nachvollziehen kann und so eQ3 das auch einfach dann für die CCU übernehmen kann.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Re: Kommastellen bei Systemvariablen

Beitrag von DrTob » 04.01.2018, 12:15

alchy hat geschrieben: Innerhalb der Programmierung in Klickibuntiprogrammen werden Zahlenvariablen mit .XX im Systemprotokoll dann wieder mit .XXXXXX in Favoriten .XX
Dass ins Protokoll keine auf 2 Stellen gekürzten Werte geschrieben werden halte ich für richtig und besser.

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

Re: Kommastellen bei Systemvariablen

Beitrag von alchy » 04.01.2018, 13:03

jmaus hat geschrieben:
alchy hat geschrieben: Aber wenn du schon mal hier bist, wieso wird kein Fehler geworfen, bei Verwendung der { wie in seinem Beispiel ?
Nunja. Wie du dir sicher denken kannst ist der Scriptparser der ReGa suboptimal. Da gibt es viele Dinge die nicht so chic sind und wie dieser Punkt dann auch kein Syntax Error erzeugen. Ist eben sehr alt der parser und nur teilweise für seine jetzige Verwendung so designed worden.
Schon verstanden. Nehmen wir mal

Code: Alles auswählen

var channel=dom.GetObject('W_Luftfeuchte');
var temp = channel.Value();
{ temp = temp.ToString(1);
zeile5 = "Air"#temp#" %";
color5 = "0x80";
rennt durch die zeile (besser die nächstfolgende Zeile nach dem { wird einfach nur "ignoriert" - Fehler nö

Ändern wir mal die Klammer in sein Gegenstück }:

Code: Alles auswählen

var channel=dom.GetObject('W_Luftfeuchte');
var temp = channel.Value();
} temp = temp.ToString(1);
zeile5 = "Air"#temp#" %";
color5 = "0x80";
Wird bei der Klammer abgebrochen - Fehler nö

Mach ich eine "runde Sache" draus

Code: Alles auswählen

var channel=dom.GetObject('W_Luftfeuchte');
var temp = channel.Value();
{} temp = temp.ToString(1);
zeile5 = "Air"#temp#" %";
color5 = "0x80";
gibt es ein IseESP::SyntaxError
DrTob hat geschrieben: Dass ins Protokoll keine auf 2 Stellen gekürzten Werte geschrieben werden halte ich für richtig und besser.
Naja, meine Meinung war nicht gefragt, sondern weitere Unterschiede. :wink:
Auffallend ist immer wieder die unterschiedliche Handhabe vor allem auf der Startseite.
Auch eine Stringvariable mit Steuerzeichen z.B. macht unter Status & Bedienung noch kein Problem.
Aber der Startseite hinzugefügt steht die schöne HomematicWelt.
und noch bestimmte html Befehle usw.

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.

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Re: Kommastellen bei Systemvariablen

Beitrag von DrTob » 04.01.2018, 13:06

alchy hat geschrieben: Naja, meine Meinung war nicht gefragt, sondern weitere Unterschiede. :wink:
War ja auch keine Kritik an dich. Nur hat sich jmaus so angehört als wolle er das ändern...

Benutzeravatar
jmaus
Beiträge: 9818
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1856 Mal
Kontaktdaten:

Re: Kommastellen bei Systemvariablen

Beitrag von jmaus » 04.01.2018, 13:18

alchy hat geschrieben: gibt es ein IseESP::SyntaxError
Sag ja, der Parser der ReGaHss ist "suboptimal" :)
alchy hat geschrieben: Auffallend ist immer wieder die unterschiedliche Handhabe vor allem auf der Startseite.
Auch eine Stringvariable mit Steuerzeichen z.B. macht unter Status & Bedienung noch kein Problem.
Aber der Startseite hinzugefügt steht die schöne HomematicWelt.
Das Problem habe ich bereits lokalisiert und auch beseitigt (siehe https://github.com/jens-maus/RaspberryM ... hars.patch)
alchy hat geschrieben: und noch bestimmte html Befehle usw.
Welche html tags wären das denn z.B. deiner Erfahrung nach?
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

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

Re: Kommastellen bei Systemvariablen

Beitrag von alchy » 05.01.2018, 01:07

jmaus hat geschrieben: Welche html tags wären das denn z.B. deiner Erfahrung nach?
Nicht schon wieder :roll: - so ziemlich alles was man sich ausdenken kann. Ein kleines Beispiel.

Code: Alles auswählen

object sysvarstring = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Atest_string");
if (sysvarstring){
sysvarstring.State("Text <b>fett</b> oder <i> kursiv </i> oder <font color=red>in rot</font> dann mal <br> neue Zeile und noch eine <br /> neue Zeile"); 
WriteLine("Systemvariable wurde mit htmlcodes beschrieben");}else{WriteLine("Systemvariable ist nicht vorhanden");}
Dann schaut man sich die Systemvariable in Status Bedienung an:
htmlcodes_status.jpg
htmlcodes_status.jpg (9.36 KiB) 4092 mal betrachtet
fügt sie auch mal einem Favoriten hinzu:
html_favoriten.jpg
html_favoriten.jpg (21.62 KiB) 4092 mal betrachtet
und dann kommt die auch mal zur Startseite:
html_start.jpg
Soweit ja nur ein "Anzeigeproblem".


Natürlich kannst du das auch mit vielen mehr fortsetzen, das solltest du aber allein hinkriegen.
Fällt mir was uraltes ein: Bilder und >> H I E R << auch der Link zum Thread.
Erweitern wir das Scriptchen:

Code: Alles auswählen

object sysvarstring = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Atest_string");
if (sysvarstring){
string s= "</div><img src=\"https://homematic-forum.de/images/partner/mediola-banner-oben.png\" width=420 vspace=10 hspace=0 alt=pic>";
sysvarstring.State("Text <b>fett</b> oder <i> kursiv </i> oder <font color=red>in rot</font> dann mal <br> neue Zeile und noch eine <br /> neue Zeile und nun noch ein Bildchen<br /> <br /> "#s); 
WriteLine("Systemvariable wurde mit htmlcodes beschrieben");}else{WriteLine("Systemvariable ist nicht vorhanden");}
dann haben wir unter Staus und Bedienung:
html_status_bild.jpg
und wie wird es wohl auf der Startseite aussehen?
Nun ja in dem Fall, weiter nur langweiliger Text mit Code, kein Bild nix ist rot
Dokubild spar ich mir.


Jetzt machen wir mal mit unlustigen Sachen weiter, weil wir wollen ja auch mal die stehende Welt der CCU sehen.
Ändern wir das Script ein gaaaanz klein wenig:

Code: Alles auswählen

object sysvarstring = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Atest_string");
if (sysvarstring){
string s= "</div><img src=\'https://homematic-forum.de/images/partner/mediola-banner-oben.png\' width='420' vspace='10' hspace='0' alt=pic>";
sysvarstring.State("Text <b>fett</b> oder <i> kursiv </i> oder <font color=red>in rot</font> dann mal <br> neue Zeile und noch eine <br /> neue Zeile und nun noch ein Bildchen<br /> <br /> "#s); 
WriteLine("Systemvariable wurde mit htmlcodes beschrieben");}else{WriteLine("Systemvariable ist nicht vorhanden");}
Sieht doch schon schön aus - unter Status und Bedienung keine Änderung - formatierter Text da, Bild da

und *freu* endlich einmal auf der Startseite den formatierten Text und auch das Bild: :mrgreen:
html_start_mit Bild.jpg
nachdem man auf Startseite geklickt hat

Doch was ist nun?
Die rote Lampe ist nicht mehr am Blinken?
Bild
Die Klickibunti aktualisiert sich auch nicht mehr automatisch und nach aus und einloggen sind auch noch die Leuchtpunkte vor Servicemeldungen und Alarmmeldungen grau.
Wer mag kann sich auch das >> H I E R << noch zusätzlich durchlesen.
Das Systemprotokoll ist verschwunden, wenn die Variable auf protokolliert steht.

Und wer so wissbegierig war und alles was ich schrieb durchgeführt hat, und nun eine stehende Homematic Welt hat, der möge:

Code: Alles auswählen

object sysvarstring = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Atest_string");
if (sysvarstring){
sysvarstring.State("Hallo Welt"); 
WriteLine("Systemvariable wurde beschrieben");}else{WriteLine("Systemvariable ist nicht vorhanden");}
ausführen, und die Welt dreht sich wieder.

Da ist nun ein schöner Roman geworden, ich hoffe es reicht dir - denn das war es meinerseits.

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“