Kommastellen bei Systemvariablen
Moderator: Co-Administratoren
Kommastellen bei Systemvariablen
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.
Kann mir jemand sagen, wie ich die Variablen anpassen kann ?
Danke
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.
Kann mir jemand sagen, wie ich die Variablen anpassen kann ?
Danke
So long
Marcus
Marcus
-
- Beiträge: 10752
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 672 Mal
Re: Kommastellen bei Systemvariablen
die { in
haben in den Codeschnipseln
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
haben in den Codeschnipseln
Code: Alles auswählen
{ temp = temp.ToString(1);
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.
- 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
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).alchy hat geschrieben: die Werte von Zahlenvariablen werden in der Klickibunti immer anders dargestellt.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal /
-
- Beiträge: 10752
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 672 Mal
Re: Kommastellen bei Systemvariablen
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
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.
- 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
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: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
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 istalchy hat geschrieben: Aber wenn du schon mal hier bist, wieso wird kein Fehler geworfen, bei Verwendung der { wie in seinem Beispiel ?
Danke für den Hinweis, werde dann dort entsprechend darauf reagieren.alchy hat geschrieben: Und lies gleich mal >> H I E R <<
Ich habe keine RaspberryMatic in Benutzung, daher kann ich dazu auch nichts sagen.
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.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.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal /
Re: Kommastellen bei Systemvariablen
Dass ins Protokoll keine auf 2 Stellen gekürzten Werte geschrieben werden halte ich für richtig und besser.alchy hat geschrieben: Innerhalb der Programmierung in Klickibuntiprogrammen werden Zahlenvariablen mit .XX im Systemprotokoll dann wieder mit .XXXXXX in Favoriten .XX
-
- Beiträge: 10752
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 672 Mal
Re: Kommastellen bei Systemvariablen
Schon verstanden. Nehmen wir maljmaus hat geschrieben: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.alchy hat geschrieben: Aber wenn du schon mal hier bist, wieso wird kein Fehler geworfen, bei Verwendung der { wie in seinem Beispiel ?
Code: Alles auswählen
var channel=dom.GetObject('W_Luftfeuchte');
var temp = channel.Value();
{ temp = temp.ToString(1);
zeile5 = "Air"#temp#" %";
color5 = "0x80";
Ä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";
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";
Naja, meine Meinung war nicht gefragt, sondern weitere Unterschiede.DrTob hat geschrieben: Dass ins Protokoll keine auf 2 Stellen gekürzten Werte geschrieben werden halte ich für richtig und besser.
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.
Re: Kommastellen bei Systemvariablen
War ja auch keine Kritik an dich. Nur hat sich jmaus so angehört als wolle er das ändern...alchy hat geschrieben: Naja, meine Meinung war nicht gefragt, sondern weitere Unterschiede.
- 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
Sag ja, der Parser der ReGaHss ist "suboptimal"alchy hat geschrieben: gibt es ein IseESP::SyntaxError
Das Problem habe ich bereits lokalisiert und auch beseitigt (siehe https://github.com/jens-maus/RaspberryM ... hars.patch)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.
Welche html tags wären das denn z.B. deiner Erfahrung nach?alchy hat geschrieben: und noch bestimmte html Befehle usw.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal /
-
- Beiträge: 10752
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 672 Mal
Re: Kommastellen bei Systemvariablen
Nicht schon wieder - so ziemlich alles was man sich ausdenken kann. Ein kleines Beispiel.jmaus hat geschrieben: Welche html tags wären das denn z.B. deiner Erfahrung nach?
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");}
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");}
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");}
und *freu* endlich einmal auf der Startseite den formatierten Text und auch das Bild:
nachdem man auf Startseite geklickt hat
Doch was ist nun?
Die rote Lampe ist nicht mehr am Blinken?
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");}
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.