Beispielsweise hier nmal von einem Wandthermosten die Minimaltemperatur.
Diejenigen die es wissen, gehen über die xmlrpc schnittstelle oder benutzen xmlrpc.GetParamSet () im HMScript. Übrig bleibt dann immer noch das Auswerten des xmlgenöles. Da ja die XML_NODES auch nicht gerade Allgemeinwissen sind und auch nicht ganz trivial im Handling, hier eine schnelle Lösung, wie man "mal eben" an einen Wert des Paramset kommt. bei mehreren ist das ineffektiv, da baut man das TCL Kommando anders zusammen.
aber dies erstmal als Lösungsansatz:
Ein paar zeilen Code, die als Rückgabewert den gewünschten Parameter liefern. Umcodieren mit .ToFloat oder .ToInteger () muss dann noch bei Bedarf gemacht werden. Bei HMIp geräten aufpassen, dass der richtige Channel angegeben wird anstatt des devices !
Diejenigen , die mit dem SDV arbeiten, müssen weniger aufpassen, hier wird automatisch die Auswahl Device /Channel richtig eingesetzt, ebenso können mehrere Parameter in einem Rutsch abgefragt werden. Das Ergebnis ist dann allerdings eine Liste. (Noch nicht den Menüpunkt xmlrpc.GetParamset (..) suchen, der ist erst in der nächsten Version offen.)
Code: Alles auswählen
!- MasterSetparameter Abfrage aus HM Script von einem Device
!-------- Black in September 2019 - Zeilen aus SDV V3.x.x
!---------------------------------------------------------------------
string stdOut;
string stdErr;
string ParName= "TEMPERATURE_MINIMUM"; !- Wert der abgefragt werden soll
object oDEVICE= dom.GetObject (ID_DEVICES).Get ("IchBinDerGeräteName");
!- ab hier Fingers weg !!
if (oDEVICE) {
object oIFace= dom.GetObject (oDEVICE.Interface () );
string sTCL= "regexp {" # ParName # " ([\.0-9]*)} [xmlrpc " # oIFace.InterfaceUrl() # "/ getParamset " # oDEVICE.Address () # " MASTER ] matched sub1 ;puts \$sub1";
system.Exec ("/bin/sh -c 'echo \"load tclrpc.so; " # sTCL # "\" |tclsh'",&stdOut,&stdErr);
WriteLine (stdOut); !- Ich bin das Ergebnis
}
Black