SysVar *100 per Script

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

SysVar *100 per Script

Beitrag von NickHM » 15.11.2020, 20:25

Hallo

ich habe eine Sysvar vom Typ Zahl mit dem Namen "DG_SZ_VP"

Diese SysVar deren Werte zwischen 0.00 und 1.00 liegen können, möchte ich gern mit 100 multiplizieren.
0.68 -> 68

Kann mir da bitte jemand mit einem Script Einzeiler helfen?

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

Re: SysVar *100 per Script

Beitrag von alchy » 15.11.2020, 21:21

Und was willst du mit dem neuen Wert machen?
Ausgeben, wieder speichern?

Code: Alles auswählen

object oSysvar = dom.GetObject(ID_SYSTEM_VARIABLES).Get("DG_SZ_VP");
if (oSysvar) { WriteLine("Systemvariable vorhanden");
WriteLine("der Wert ist: "#oSysvar.Value());
real rErgebnis = oSysvar.Value()*100.0;
WriteLine("Das Ergebnis wäre also dann:" #rErgebnis);
}else{WriteLine("Systemvariable NICHT vorhanden");}
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
Roland M.
Beiträge: 9804
Registriert: 08.12.2012, 15:53
System: CCU
Wohnort: Graz, Österreich
Hat sich bedankt: 252 Mal
Danksagung erhalten: 1381 Mal

Re: SysVar *100 per Script

Beitrag von Roland M. » 15.11.2020, 22:10

Hallo Alchy!

Ziel verfehlt! :D
Ein Einzeiler war gefordert, nicht ein Sechszeiler! ;)

Als Script-Rookie würde ich da vorschlagen:

dom.GetObject("Ziel_SV").State(0 + (100.0 * dom.GetObject("DG_SZ_VP")));

Dabei ist berücksichtigt, dass nach CCU-Logik 100 * 0.68 = 0, aber 100.0 * 0,68 = 68.0 (real) ist, sowie 0 + 68.0 = 68 (integer).
Die Namensauflösung der SV kann man natürlich auch über ID_SYSTEM_VARIABLES machen...

:D

Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
  • Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
  • Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
  • Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
  • Fehlermeldungen genau abschreiben, besser noch...
  • Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!

-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...

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

Re: SysVar *100 per Script

Beitrag von alchy » 15.11.2020, 22:19

Und dir hat deine Glaskugel auch noch verraten, was er damit machen will. :cry:

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
Roland M.
Beiträge: 9804
Registriert: 08.12.2012, 15:53
System: CCU
Wohnort: Graz, Österreich
Hat sich bedankt: 252 Mal
Danksagung erhalten: 1381 Mal

Re: SysVar *100 per Script

Beitrag von Roland M. » 15.11.2020, 23:00

Alchy, verstehst du gar keinen Spaß? :roll:


Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
  • Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
  • Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
  • Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
  • Fehlermeldungen genau abschreiben, besser noch...
  • Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!

-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: SysVar *100 per Script

Beitrag von NickHM » 16.11.2020, 00:22

Hallo

ich habe meine Frage anscheinend nicht genau genug formuliert.

Ich möchte den Inhalt der SysVar mit 100 multiplizieren und wieder zurück in die SysVar schreiben.

Hintergrund ... ich lesen den Ventil Level der Heizungsthermostate aus und stelle die Öffnung 0...100% in einer SysVar dar, die mit dem Wandthermostat verknüpft ist. Per Web Ui Programm (ohne Script)
In 2 Räumen habe ich jetzt eine HMIP Gruppe. Dort ist der Wert von "Level" im Kanal 1 den ich bekomme nicht 0...100 sondern 0...1
Bei den HM Gruppen ist der Wert dagegen 0...100

HM-
Bildschirmfoto 2020-11-16 um 00.22.30.png
HMIP-
Bildschirmfoto 2020-11-16 um 00.25.38.png

Benutzeravatar
Baxxy
Beiträge: 10826
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 607 Mal
Danksagung erhalten: 2225 Mal

Re: SysVar *100 per Script

Beitrag von Baxxy » 16.11.2020, 00:44

NickHM hat geschrieben:
16.11.2020, 00:22
Ich möchte den Inhalt der SysVar mit 100 multiplizieren und wieder zurück in die SysVar schreiben.

Code: Alles auswählen

dom.GetObject (ID_SYSTEM_VARIABLES).Get ("DG_SZ_VP").State(dom.GetObject (ID_SYSTEM_VARIABLES).Get ("DG_SZ_VP").Value()*100)
Ich würde aber gleich im Programm ein Script benutzen das das direkt erledigt statt erst die SysVar mit dem Datenpunkt zu synchronisieren und dann per Script zu multiplizieren.

Code: Alles auswählen

dom.GetObject (ID_SYSTEM_VARIABLES).Get ("DG_SZ_VP").State(dom.GetObject("$src$").Value()*100);

Benutzeravatar
Roland M.
Beiträge: 9804
Registriert: 08.12.2012, 15:53
System: CCU
Wohnort: Graz, Österreich
Hat sich bedankt: 252 Mal
Danksagung erhalten: 1381 Mal

Re: SysVar *100 per Script

Beitrag von Roland M. » 16.11.2020, 00:54

Hallo!
NickHM hat geschrieben:
16.11.2020, 00:22
Ich möchte den Inhalt der SysVar mit 100 multiplizieren und wieder zurück in die SysVar schreiben.
Soll der neue Wert vom Typ Real oder Integer sein?
Bei Integer bitte meine Gedanken berücksichtigen.


Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
  • Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
  • Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
  • Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
  • Fehlermeldungen genau abschreiben, besser noch...
  • Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!

-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...

jp112sdl
Beiträge: 12115
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: SysVar *100 per Script

Beitrag von jp112sdl » 16.11.2020, 06:38

NickHM hat geschrieben:
15.11.2020, 20:25
Diese SysVar deren Werte zwischen 0.00 und 1.00 liegen können
NickHM hat geschrieben:
16.11.2020, 00:22
Ich möchte den Inhalt der SysVar mit 100 multiplizieren und wieder zurück in die SysVar schreiben.
In die selbe SV? Dann musst du aber noch den Maximalwert ändern. Sonst kannst du nur 0.01 mit 100 multiplizieren, um nicht größer als 1 zu werden. :D
NickHM hat geschrieben:
16.11.2020, 00:22
In 2 Räumen habe ich jetzt eine HMIP Gruppe. Dort ist der Wert von "Level" im Kanal 1 den ich bekomme nicht 0...100 sondern 0...1
Bei den HM Gruppen ist der Wert dagegen 0...100
Und es handelt sich wirklich um einen falschen Wert in der SV und nicht um den Einheiten-Bug in der WebUI?
Gib deiner SV mal die Einheit "%"...

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

MichaelN
Beiträge: 9677
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: SysVar *100 per Script

Beitrag von MichaelN » 16.11.2020, 07:08

Eben. Ich wäre da auch sehr vorsichtig % und 1/100 in einer Variablen Wechselweise zu speichern.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Antworten

Zurück zu „HomeMatic allgemein“