CCU2 und Solvis Remote ?

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Fonzo
Beiträge: 6722
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 479 Mal

Re: CCU2 und Solvis Remote ?

Beitrag von Fonzo » 24.06.2019, 15:55

Garbsen hat geschrieben:
24.06.2019, 14:42
Bin an Euren aktuellen Lösungen interessiert.
Wie schon vor Jahren im alten Solvis Thread geht das einfach über auslesen der Daten und schreiben in Datenpunkte. Die einzelnen Datenpunkte können wie oben dargestellt z.B. mit einer PHP Seite visualisiert werden oder wenn eine CCU3 benutzt wird kann dazu z.B. auch NEO benutzt werden um so Datenpunkte frei in Form von Systemvariablen der CCU oder Variablen aus Symcon auf einer Remoteoberfläche anzuordnen.

Garbsen
Beiträge: 295
Registriert: 12.07.2017, 21:08
Hat sich bedankt: 1 Mal
Danksagung erhalten: 14 Mal

Re: CCU2 und Solvis Remote ?

Beitrag von Garbsen » 24.06.2019, 16:13

Schon mal Danke für die Antwort, noch wird das Teil bei mir installiert, wenn es im Betrieb ist, dann werde ich mich mal dran versuchen.
Beste Grüße
K-H
512 Kanäle in 101 Geräten und 145 CUxD-Kanäle in 19 CUxD-Geräten:
--------------------------------------------
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/Downloads/eq3/downl ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907

Garbsen
Beiträge: 295
Registriert: 12.07.2017, 21:08
Hat sich bedankt: 1 Mal
Danksagung erhalten: 14 Mal

Re: CCU2 und Solvis Remote ?

Beitrag von Garbsen » 02.07.2019, 22:43

Llewellyn hat geschrieben:
30.03.2017, 19:14
Hallo zusammen,

ich betreibe seit fast zwei Jahren eine solche Lösung, d.h. ich lese über die CCU2 alle vorhandenen Daten aus einer SolvisRemote aus.
Bevor ich das benutzt Script poste erst einmal die Skizzierung der umgesetzten Lösung:

Über die SolvisRemote lassen sich die aktuellen Zustände der Ein- und Ausgänge einer Solvisheizungsanlage abfragen.
Derzeit habe ich noch die Version 1.13 der SolvisRemote im Einsatz. Leider beherrscht die Solvis-remote bis zur Version 1.16 kein eigenes Daten-Logging.
Hinweis: Seit Ende März gibt es die Version 2.10, die ein Daten-Logging über einen Zeitraum von drei Wochen inkl. Diagrammauswertung vornimmt.

In der CCU2 wird in regelmässigen Abständen die SolvisRemote ausgelesen und die Zustände der Ein- und Ausgänge in virtuelle Kanäle der CUxD abgelegt.
Dieses habe ich über die Zusatzsoftware CuX-Dämon realisisiert. Der Vorteil ist, dass auch gleichzeitig die Daten weggeschrieben werden und so eine graphische Auswertung von Zeitreihen problemlos realisert ist (über CUxD-Highcharts). Wichtig ist, dass das regelmässige Auslesen nicht per CCU2-Zeitschaltung erfolgt (lässt die CCU2 abstürzen), sondern über einen Trigger realisiert wird (bei mir z.B. über eine HM-Komponente, die sich alle 1-2 Minuten meldet). Auf diese Aktualisierung habe ich eine Regel gelegt, die das Auslesescript startet. Im Forum findest Du genug Beispiele wie so eine Trigger-Regel geht.
Zum Ende lese ich per HM-Script die einzelnen virtuellen Kanäle in der CUxD aus und lege die Werte in Systemvariablen der CCU2 ab.

Jetzt zum ersten Script. Das ist realisiert als tcl-script.
Wie Du ein tcl-Script auf die CCU2 bekommst und zum Laufen bringst, dass kannst Du auch hier im Forum nachlesen.
Bitte beachte auch die Hinweis in den Kommentarzeilen des Scripts (z.B. vorab manuelles Anlegen der verwendeten Systemvariablen auf der CCU2).

Code: Alles auswählen

 load tclrega.so

	# tcl-Script für Homematic CCU2
	# Auslesen der Daten der Solvis-Heizung
	# Autor: Wolfgang Roller
	# Stand: 14.04.2015

	# Zusammenfassung der todos:
	# 1) Im tcl-Skript (in der url) Solvisadresse ip-Adresse eintragen
	# 2) Die Url aus dem Skript erst im Browser testen, ob die korrekte Antwort geliefert wird
        #    http://solvisuser:password@ip_der_solvisremote/sc2_val.xml)
	#    Über die Seite ../sc2_val.xml werden die aktuellen Daten der Solvisheizung geliefert.
	# 3) Alle Variablen von Hand in der homematic definieren
	# 4) Im Addons-Verzeichnis ein Verzeichnis anlegen; hier: "solvis"
	# 5) Skript als .tcl in oben angelegtes Verzeichnis kopieren (per FTP-Client z.B. FileZilla)
	# 6) Periodischen Aufruf des Skripts (anhand Trigger) in der gewohnten Art anlegen.
	#    => Ein Programm welches einen Temperatur-Sensor abfragt und eine Systemvariable ansteuert. So erhälst du alle 120-180 Sekunden ein Intervall.
	#		Programm Inhalt:
	#		Wenn:
	#		Gerät - Temperatursensor - Wertebereich größer -20°C - auslösen auf Aktualisierung
	#		Dann:
	#		Systemvariable - Trigger - Wert: Trigger
	#    Statt deines Zeitmoduls nimmst du dann die Systemvariable "Trigger" und wählst dort "auslösen auf Aktualisierung".
	#    Empfehlung von ELV:
	#    kurze zyklische Auslöse-Intervalle sollten nach Möglichkeit vermieden werden.
        # Wir raten ebenfalls zur Antriggerung über die Aktualisierung von Temperatursensoren oder Helligkeitssensoren.
        # Somit entlasten Sie die Zentrale und erreichen ein zyklischen Auslösen der Programme und Scripte.

       	proc hexinzahl {x} {
		# procedure wandelt einstellige Hexadezimalzahl in Dezimalzahl um
		switch $x {
    			F {set x 15}
    			E {set x 14}
                	D {set x 13}
                	C {set x 12}
                	B {set x 11}
                	A {set x 10}
        		default {set x $x}
  			}
		return $x
		}
            
	proc wertergebnis {y} {
		# procedur liefert den Dezimalwert der eingelieferten zweizeichigen Hexadezimalzahl zurück.
		# hierbei werden die erten beiden Hex-Ziffernb mit den letzten beiden vertauscht.
		# procedur ruft zur Übersetzung einzahliger Hexadezimalzahlen die procedure hexinzahl () auf
		set ergebnis [expr (([hexinzahl [string index $y 2]] * 4096) + ([hexinzahl [string index $y 3]] * 256) + ([hexinzahl [string index $y 0]] * 16) + ([hexinzahl [string index $y 1]]))]
		return $ergebnis
		}
		
        proc ausein {x} {
		# procedur liefert den Dezimalwert der eingelieferten zweizeichigen Hexadezimalzahl zurück
		# procedur ruft zur Übersetzung einzahliger Hexadezimalzahlen die procedure hexinzahl () auf
		set ergebnis [expr ((([hexinzahl [string index $x 0]] * 16) + [hexinzahl [string index $x 1]]) / 20)]
		return $ergebnis
		}

	# Variablen:
        #
        # Header:				Pos  11 -  22
        # Uhrzeit:				Pos  23 -  28
        # Anlagentyp:				Pos  29 -  32 AtoH
        # Systemnummer:				Pos  33 -  36 AtoH
    	# S1v Solvis-Warmwasserpuffer		Pos  37 -  40 AtoH value/10 [°C]
        # S2v Solvis-Warmwassertemp		Pos  41 -  44 AtoH value/10 [°C]
	# S3v Solvis-Speicherreferenz		Pos  45 -  48 AtoH value/10 [°C]
        # S4v Solvis-Heizungspuffer_oben	Pos  49 -  52 AtoH value/10 [°C]
        # S5v Solar-Vorlauf			Pos  53 -  56
        # S6v Solar-Rücklauf			Pos  57 -  60
        # S7v Solar-Solardruck			Pos  61 -  64
        # S8v Solar-Kollektortemp		Pos  65 -  68 AtoH value/10 [°C]
        # S9v Solvis-Heizungspuffer_unten	Pos  69 -  72 AtoH value/10 [°C]
        # S10v Solvis-Außentemp			Pos  73 -  76 AtoH value/10 [°C]
        # S11v Solvis-Zirkulationstemp		Pos  77 -  80 AtoH value/10 [°C]
        # S12v Solvis-Heizungs-Vorlauftemp	Pos  81 -  84 AtoH value/10 [°C]
        # S13v unbelegt				Pos  85 -  88 
	# S14v unbelegt				Pos  89 -  92
        # S15v unbelegt				Pos  93 -  96
        # S16v unbelegt				Pos  97 - 100
        # S18v Durchfluss			Pos 101 - 104 AtoH [l/h]
        # S17v Solar-Durchfluss			Pos 105 - 108 AtoH value/10 [l/h]
        # AnalogIn1				Pos 109 - 112
        # AnalogIn2				Pos 113 - 116
        # AnalogIn3				Pos 117 - 120
        # AnalogOut1				Pos 121 - 124
        # AnalogOut2				Pos 125 - 128
        # AnalogOut3				Pos 129 - 132
        # AnalogOut4				Pos 133 - 136
        # RF1 Raumfühler1			Pos 137 - 140 AtoH value/10 [°C]
        # (RF2 Raumfühler2			Pos 141 - 144 AtoH value/10 [°C])
        # (RF3 Raumfühler3			Pos 145 - 148 AtoH value/10 [°C])
        # A1v Solar-Pumpe			Pos 141 - 142 0=AUS; 1=EIN
        # A2v Solvis-Warmwasserpumpe		Pos 143 - 144 0=AUS; 1=EIN
        # A3v Solvis-Heizkreispumpe 		Pos 145 - 146 0=AUS; 1=EIN
        # A4v Solvis-Heizkreis2pumpe		Pos 147 - 148 0=AUS; 1=EIN
        # A5v Solvis-Zirkulationspumpe		Pos 149 - 150 0=AUS; 1=EIN
        # A6v Solvis-Heizkreis3pumpe		Pos 151 - 152 0=AUS; 1=EIN
        # A7v unbelegt				Pos 153 - 154
        # A8v Solvis-HK1Misch_auf		Pos 155 - 156 0=AUS; 1=EIN
        # A9v Solvis-HK1Misch_zu		Pos 157 - 158 0=AUS; 1=EIN
        # A10v Solvis-HK2Misch_auf		Pos 159 - 160 0=AUS; 1=EIN
        # A11v Solvis-HK2Misch_zu		Pos 161 - 162 0=AUS; 1=EIN
        # A12v Solvis-Brenner			Pos 163 - 164 0=AUS; 1=EIN
        # A13v unbelegt				Pos 165 - 166
        # A14v Solvis-Entstörung		Pos 167 - 168 0=AUS; <>0=EIN
        # Werte überspringen			Pos 169 - 184
        # SEv Solarertrag			Pos 185 - 189 AtoH [kWh]
        # Werte überspringen 			Pos 190 - 219
        # SLv Solarleistung			Pos 220 - 223 AtoH value/10 [kW]
       
	# *** HIER die URL von Solvis-Remote eintragen
	# *** http://solvisuser:password@ip_der_solvisRemote/sc2_val.html
	set url http://solvisuser:password@ip_der_solvisRemote/sc2_val.xml
	exec /usr/bin/wget -q -O /usr/local/addons/solvis/solvisaktuell.xml $url

	# Öffnen der Datei und Zuordnung zur Variablemn $input
	set f [open "/usr/local/addons/solvis/solvisaktuell.xml"]
	set input [read $f]
	close $f

	# Verarbeitung
        # puts $input
        # puts "Header: [string range $input 11 22]"
	set S1v [expr ([wertergebnis [string range $input 37 40]] + 0.1) /10 - 0.01]
        #puts "S1v Solvis-Warmwasserpuffer: $S1v - ([string range $input 37 40])"
	set S2v [expr ([wertergebnis [string range $input 41 44]] + 0.1) /10 - 0.01]
        #puts "S2v Solvis-Warmwassertemp: $S2v - ([string range $input 41 44])"
	set S3v [expr ([wertergebnis [string range $input 45 48]] + 0.1) /10 - 0.01]
        #puts "S3v Solvis-Speicherreferenz: $S3v - ([string range $input 45 48])"
	set S4v [expr ([wertergebnis [string range $input 49 52]] + 0.1) /10 - 0.01]
        #puts "S4v Solvis-Heizungspuffer_oben: $S4v - ([string range $input 49 52])"
	set S5v [expr ([wertergebnis [string range $input 53 56]] + 0.1) /10 - 0.01]
        #puts "S5v Solar-Vorlauf: $S5v - ([string range $input 53 56])"
	set S6v [expr ([wertergebnis [string range $input 57 60]] + 0.1) /10 - 0.01]
        #puts "S6v Solar-Rücklauf: $S6v - ([string range $input 57 60])"
	set S7v [expr ([wertergebnis [string range $input 61 64]] + 0.1) /10 - 0.01]
        #puts "S7v Solra-Solardruck: $S7v - ([string range $input 61 64])"
	set S8v [expr ([wertergebnis [string range $input 65 68]] + 0.1) /10 - 0.01]
        #puts "S8v Solar-Kollektortemp: $S8v - ([string range $input 65 68])"
	set S9v [expr ([wertergebnis [string range $input 69 72]] + 0.1) /10 - 0.01]
        #puts "S9v Solvis-Heizungspuffer_unten: $S9v - ([string range $input 69 72])"
	set S10v [expr ([wertergebnis [string range $input 73 76]] + 0.1) /10 - 0.01]
        #puts "S10v Solvis-Außentemp: $S10v - ([string range $input 73 76])"
	set S11v [expr ([wertergebnis [string range $input 77 80]] + 0.1) /10 - 0.01]
        #puts "S11v Solvis-Zirkulationstemp: $S11v - ([string range $input 77 80])"
	set S12v [expr ([wertergebnis [string range $input 81 84]] + 0.1) /10 - 0.01]
        #puts "S12v Solvis-Heizungs-Vorlauftemp: $S12v - ([string range $input 81 84])"
	#set S13v [expr ([wertergebnis [string range $input 85 88]] + 0.1) /10 - 0.01]
        #puts "TempS13v: $S13v - ([string range $input 85 88])"
	#set S14v [expr ([wertergebnis [string range $input 89 92]] + 0.1) /10 - 0.01]
        #puts "TempS14v: $S14v - ([string range $input 89 92])"
	#set S15v [expr ([wertergebnis [string range $input 93 96]] + 0.1) /10 - 0.01]
        #puts "TempS15v: $S15v - ([string range $input 93 96])"
	#set S16v [expr ([wertergebnis [string range $input 97 100]] + 0.1) /10 - 0.01]
        #puts "TempS16v: $S16v - ([string range $input 97 100])"
	set S18v [wertergebnis [string range $input 101 104]]
        #puts "DurchflussS18v: $S18v - ([string range $input 101 104])"
	set S17v [wertergebnis [string range $input 105 108]]
        #puts "S17v Solar-Durchfluss: $S17v - ([string range $input 105 108])"
	#set AI1 [wertergebnis [string range $input 109 112]]
        #puts "AI1: $AI1 - ([string range $input 109 112])"
	#set AI2 [wertergebnis [string range $input 113 116]]
        #puts "AI2: $AI2 - ([string range $input 113 116])"
	#set AI3 [wertergebnis [string range $input 117 120]]
        #puts "AI3: $AI3 - ([string range $input 117 120])"
	#set AO1 [wertergebnis [string range $input 121 124]]
        #puts "AO1: $AO1 - ([string range $input 121 124])"
	#set AO2 [wertergebnis [string range $input 125 128]]
        #puts "AO2: $AO2 - ([string range $input 125 128])"
	#set AO3 [wertergebnis [string range $input 129 132]]
        #puts "AO3: $AO3 - ([string range $input 129 132])"
	#set AO4 [wertergebnis [string range $input 133 136]]
        #puts "AO4: $AO4 - ([string range $input 133 136])"
	#set RF1 [expr ([wertergebnis [string range $input 137 140]] + 0.1) /10 - 0.01]
        #puts "RF1 Raumfühler1: $RF1 - ([string range $input 137 140])"
	#set RF2 [expr ([wertergebnis [string range $input 141 144]] + 0.1) /10 - 0.01]
        #puts "RF2 Raumfühler2: $RF2 - ([string range $input 141 144])"
	#set RF3 [expr ([wertergebnis [string range $input 145 148]] + 0.1) /10 - 0.01]
        #puts "RF3 Raumfühler3: $RF3 - ([string range $input 145 148])"
	set A1v [ausein [string range $input 141 142]]
        #puts "A1v Solar-Pumpe: $A1v - ([string range $input 141 142])"
	set A2v [ausein [string range $input 143 144]]
        #puts "A2v Solvis-Warmwasserpumpe: $A2v - ([string range $input 143 144])"
	set A3v [ausein [string range $input 145 146]]
        #puts "A3v Solvis-Heizkreispumpe: $A3v - ([string range $input 145 146])"
	set A4v [ausein [string range $input 147 148]]
        #puts "A4v: $A4v - ([string range $input 147 148])"
	set A5v [ausein [string range $input 149 150]]
        #puts "A5v: Solvis-Zirkulationspumpe $A5v - ([string range $input 149 150])"
	set A6v [ausein [string range $input 151 152]]
        #puts "A6v: $A6v - ([string range $input 151 152])"
	set A7v [ausein [string range $input 153 154]]
        #puts "A7v: $A7v - ([string range $input 153 154])"
	set A8v [ausein [string range $input 155 156]]
        #puts "A8v: $A8v - ([string range $input 155 156])"
	set A9v [ausein [string range $input 157 158]]
        #puts "A9v: $A9v - ([string range $input 157 158])"
	set A10v [ausein [string range $input 159 160]]
        #puts "A10v: $A10v - ([string range $input 159 160])"
	set A11v [ausein [string range $input 161 162]]
        #puts "A11v: $A11v - ([string range $input 161 162])"
	set A12v [ausein [string range $input 163 164]]
        #puts "A12v Solvis-Brenner: $A12v - ([string range $input 163 164])"
	set A13v [ausein [string range $input 165 166]]
        #puts "A13v: $A13v - ([string range $input 165 166])"
	set A14v [ausein [string range $input 167 168]]
        #puts "A14v Solvis-Entstörung: $A14v - ([string range $input 167 168])"
	set SEv [wertergebnis [string range $input 185 188]]
        #puts "SEv Solarertrag: $SEv - ([string range $input 185 188])"
	set SLv [expr ([wertergebnis [string range $input 220 223]] + 0.1) /10 - 0.01]
        #puts "SLv Solarleistung: $SLv - ([string range $input 220 223])"
        #puts "Schluss1: [wertergebnis [string range $input 224 227]]"
        #puts "Schluss2: [wertergebnis [string range $input 228 231]]"
        #puts "Schluss3: [wertergebnis [string range $input 232 235]]"
	#puts "([string range $input 236 [string length $input]])"

        # Umlaute korrigieren
	
        # set ReGaHss variables
        set rega_cmd ""
        append rega_cmd "dom.GetObject('Solvis-Warmwasserpuffer').State($S1v);"
        append rega_cmd "dom.GetObject('Solvis-Warmwassertemp').State($S2v);"
        append rega_cmd "dom.GetObject('Solvis-Speicherreferenz').State($S3v);"
        append rega_cmd "dom.GetObject('Solvis-Heizungspuffer_oben').State($S4v);"
        append rega_cmd "dom.GetObject('Solvis-Heizungspuffer_unten').State($S9v);"
        append rega_cmd "dom.GetObject('Solvis-Aussentemp').State($S10v);"
        append rega_cmd "dom.GetObject('Solvis-Zirkulationstemp').State($S11v);"
        append rega_cmd "dom.GetObject('Solvis-Heizungs-Vorlauftemp').State($S12v);"
        append rega_cmd "dom.GetObject('Solar-Kollektortemp').State($S8v);"
        append rega_cmd "dom.GetObject('Solar-Vorlauf').State($S5v);"
        append rega_cmd "dom.GetObject('Solar-Ruecklauf').State($S6v);"
        append rega_cmd "dom.GetObject('Solar-Ertrag').State($SEv);"
        append rega_cmd "dom.GetObject('Solar-Leistung').State($SLv);"
        append rega_cmd "dom.GetObject('Solar-Pumpe').State($A1v);"
        append rega_cmd "dom.GetObject('Solar-Durchfluss').State($S17v);"
        append rega_cmd "dom.GetObject('Solvis-Warmwasserpumpe').State($A2v);"
        append rega_cmd "dom.GetObject('Solvis-Heizkreispumpe').State($A3v);"
        append rega_cmd "dom.GetObject('Solvis-Zirkulationspumpe').State($A5v);"
        append rega_cmd "dom.GetObject('Solvis-Heizkreismischer_auf').State($A8v);"
        append rega_cmd "dom.GetObject('Solvis-Heizkreismischer_zu').State($A9v);"
        append rega_cmd "dom.GetObject('Solvis-Brenner').State($A12v);"
        append rega_cmd "dom.GetObject('Solvis-Entstoerung').State($A14v);"

	rega_script $rega_cmd
Das zweite Script (Auslesen der virtuellen CUxD-Kanäle in Systemvariablen) ist:

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("tclsh /usr/local/addons/solvis/solvis-daten-lesen.tcl", &stdout, &stderr);

var v = dom.GetObject("Solvis-Aussentemp");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solvis-Aussentemp;"#y);

var v = dom.GetObject("Solvis-Warmwasserpuffer");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solvis-Warmwasserpuffer;"#y);

var v = dom.GetObject("Solvis-Warmwassertemp");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solvis-Warmwassertemp;"#y);

var v = dom.GetObject("Solvis-Brenner");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solvis-Brenner;"#y);

var v = dom.GetObject("Solvis-Warmwasserpumpe");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solvis-Warmwasserpumpe;"#y);

var v = dom.GetObject("Solvis-Heizkreispumpe");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solvis-Heizkreispumpe;"#y);

var v = dom.GetObject("Solvis-Zirkulationspumpe");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solvis-Zirkulationspumpe;"#y);

var v = dom.GetObject("Solvis-Heizungs-Vorlauftemp");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solvis-Heizungsvorlauftemp;"#y);

var v = dom.GetObject("Solvis-Heizungspuffer_oben");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solvis-Heizungspuffer_oben;"#y);

var v = dom.GetObject("Solvis-Heizungspuffer_unten");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solvis-Heizungspuffer_unten;"#y);

var v = dom.GetObject("Solvis-Speicherreferenz");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solvis-Speicherreferenz;"#y);

var v = dom.GetObject("Solvis-Heizkreismischer_auf");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solvis-Heizkreismischer_auf;"#y);

var v = dom.GetObject("Solvis-Heizkreismischer_zu");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solvis-Heizkreismischer_zu;"#y);

var v = dom.GetObject("Solvis-Entstoerung");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solvis-Entstörung;"#y);

var v = dom.GetObject("Solvis-Zirkulationstemp");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solvis-Zirkulationstemp;"#y);

var v = dom.GetObject("Solar-Pumpe");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solar-Pumpe;"#y);

var v = dom.GetObject("Solar-Kollektortemp");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solar-Kollektortemp;"#y);

var v = dom.GetObject("Solar-Ruecklauf");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solar-Rücklauf;"#y);

var v = dom.GetObject("Solar-Vorlauf");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solar-Vorlauf;"#y);

var v = dom.GetObject("Solar-Leistung");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solar-Leistung;"#y);

var v = dom.GetObject("Solar-Durchfluss");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solar-Durchfluss;"#y);

var v = dom.GetObject("Solar-Ertrag");
var y = v.Variable();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Solar-Ertrag;"#y);

Viel Erfolg

Wolfgang
Hallo,
Wäre schön, wenn mir jemand hier helfen kann. Ich habe es versucht, komme aber nicht weiter.
1) ich habe das 1.Script auf der CCU3 im Verzeichnis Solvis (angelegt unter addons) als Datei mit dem Namen tclscriptsolvis.tcl abgelegt.
2) die URL zur Solvis Remote geändert und auch probiert, dass unter dieser Url ein XML File aufgerufen werden kann. Alle Variablen in der CCU3 Manuell als Textvariable angelegt
3) im scripteditor in der ccu WebUI habe ich folgenden Befehl ausgeführt: dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/solvis/tclscriptsolvis.tcl");
leider bekomme ich dann aber keinen File solvisaktuell.xml im Verzeichnis Solvis, bzw. Wenn ich eine solche Datei vorher anlege wird sie nicht gefüllt. Ich hatte es so verstanden, dass der Aufruf des tcl scripts genau diese Datei befüllen müsste.
Wo liegt mein Verständnis/Umsetzungsfehler?
512 Kanäle in 101 Geräten und 145 CUxD-Kanäle in 19 CUxD-Geräten:
--------------------------------------------
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/Downloads/eq3/downl ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907

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: CCU2 und Solvis Remote ?

Beitrag von Xel66 » 02.07.2019, 23:02

Garbsen hat geschrieben:
02.07.2019, 22:43
[1.Script auf der CCU3 im Verzeichnis Solvis (angelegt unter addons) als Datei mit dem Namen tclscriptsolvis.tcl abgelegt.
...
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/solvis/tclscriptsolvis.tcl");
Siehst Du den Unterschied? Linux ist kontexsensitiv (s<>S).

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

Garbsen
Beiträge: 295
Registriert: 12.07.2017, 21:08
Hat sich bedankt: 1 Mal
Danksagung erhalten: 14 Mal

Re: CCU2 und Solvis Remote ?

Beitrag von Garbsen » 02.07.2019, 23:05

Xel66 hat geschrieben:
02.07.2019, 23:02
Garbsen hat geschrieben:
02.07.2019, 22:43
[1.Script auf der CCU3 im Verzeichnis Solvis (angelegt unter addons) als Datei mit dem Namen tclscriptsolvis.tcl abgelegt.
...
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/solvis/tclscriptsolvis.tcl");
Siehst Du den Unterschied? Linux ist kontexsensitiv (s<>S).

Gruß Xel66
Sorry, Schreibfehler im Post, habe das Verzeichnis als ‚solvis‘ angelegt, dh. Groß/Kleinschreibung ist berücksichtigt.
512 Kanäle in 101 Geräten und 145 CUxD-Kanäle in 19 CUxD-Geräten:
--------------------------------------------
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/Downloads/eq3/downl ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907

Garbsen
Beiträge: 295
Registriert: 12.07.2017, 21:08
Hat sich bedankt: 1 Mal
Danksagung erhalten: 14 Mal

Re: CCU2 und Solvis Remote ?

Beitrag von Garbsen » 01.12.2019, 09:39

Ok, nach längerer Zeit hole ich den Thread nochmal hoch.
Meine damaligen Installationsprobleme habe ich - mit Hilfe des ursprünglichen Thread-Initiators - gemeistert.
Das Verzeichnis in das installiert wird muss im Übrigen usr/local/addons/solvis heißen.

Mit Hilfe meines Installateurs und von Solvis habe ich auch die Datenpunkte zuordnen können.
Unten entsprechend die TCL-Datei.
Jetzt mein aktuelles Problem:
Das Script funktioniert prima, die Variablen werden gefüllt. Aber heute haben wir zum ersten Mal Minustemperaturen und jetzt zeigt mir die Variable für die Außentemperatur einen „etwas“ unrealistischen Wert : 6553.0 C , bei aktuell -1,7°C Außentemperatur.
Da ich selber bei TCL und der Umwandlung von hex in Dezimal passen muss, hier meine Frage in die Community: wie muss ich das Script für den Wert Außentemperatur (nur hier kann es ja zu Minustemperaturen kommen) anpassen, damit ein richtiger Wert geloggt wird?

Danke für die Hilfe

Code: Alles auswählen

  load tclrega.so

	# tcl-Script für Homematic CCU2
	# Auslesen der Daten der Solvis-Heizung
	# Autor: Wolfgang Roller
	# Stand: 14.04.2015

	# Zusammenfassung der todos:
	# 1) Im tcl-Skript (in der url) Solvisadresse ip-Adresse eintragen
	# 2) Die Url aus dem Skript erst im Browser testen, ob die korrekte Antwort geliefert wird
        #    http://solvisuser:password@ip_der_solvisremote/sc2_val.xml)
	#    Über die Seite ../sc2_val.xml werden die aktuellen Daten der Solvisheizung geliefert.
	# 3) Alle Variablen von Hand in der homematic definieren
	# 4) Im Addons-Verzeichnis ein Verzeichnis anlegen; hier: "solvis"
	# 5) Skript als .tcl in oben angelegtes Verzeichnis kopieren (per FTP-Client z.B. FileZilla)
	# 6) Periodischen Aufruf des Skripts (anhand Trigger) in der gewohnten Art anlegen.
	#    => Ein Programm welches einen Temperatur-Sensor abfragt und eine Systemvariable ansteuert. So erhälst du alle 120-180 Sekunden ein Intervall.
	#		Programm Inhalt:
	#		Wenn:
	#		Gerät - Temperatursensor - Wertebereich größer -20°C - auslösen auf Aktualisierung
	#		Dann:
	#		Systemvariable - Trigger - Wert: Trigger
	#    Statt deines Zeitmoduls nimmst du dann die Systemvariable "Trigger" und wählst dort "auslösen auf Aktualisierung".
	#    Empfehlung von ELV:
	#    kurze zyklische Auslöse-Intervalle sollten nach Möglichkeit vermieden werden.
        # Wir raten ebenfalls zur Antriggerung über die Aktualisierung von Temperatursensoren oder Helligkeitssensoren.
        # Somit entlasten Sie die Zentrale und erreichen ein zyklischen Auslösen der Programme und Scripte.

       	proc hexinzahl {x} {
		# procedure wandelt einstellige Hexadezimalzahl in Dezimalzahl um
		switch $x {
    			F {set x 15}
    			E {set x 14}
                	D {set x 13}
                	C {set x 12}
                	B {set x 11}
                	A {set x 10}
        		default {set x $x}
  			}
		return $x
		}
            
	proc wertergebnis {y} {
		# procedur liefert den Dezimalwert der eingelieferten zweizeichigen Hexadezimalzahl zurück.
		# hierbei werden die erten beiden Hex-Ziffernb mit den letzten beiden vertauscht.
		# procedur ruft zur Übersetzung einzahliger Hexadezimalzahlen die procedure hexinzahl () auf
		set ergebnis [expr (([hexinzahl [string index $y 2]] * 4096) + ([hexinzahl [string index $y 3]] * 256) + ([hexinzahl [string index $y 0]] * 16) + ([hexinzahl [string index $y 1]]))]
		return $ergebnis
		}
		
        proc ausein {x} {
		# procedur liefert den Dezimalwert der eingelieferten zweizeichigen Hexadezimalzahl zurück
		# procedur ruft zur Übersetzung einzahliger Hexadezimalzahlen die procedure hexinzahl () auf
		set ergebnis [expr ((([hexinzahl [string index $x 0]] * 16) + [hexinzahl [string index $x 1]]) / 20)]
		return $ergebnis
		}

	# Variablen:
        #
        # Header:				Pos  11 -  22
        # Uhrzeit:				Pos  23 -  28
        # Anlagentyp:				Pos  29 -  32 AtoH
        # Systemnummer:				Pos  33 -  36 AtoH
    	# S1v Solvis-Warmwasserpuffer		Pos  37 -  40 AtoH value/10 [°C]
        # S2v Solvis-Warmwassertemp		Pos  41 -  44 AtoH value/10 [°C]
	# S3v Solvis-Speicherreferenz		Pos  45 -  48 AtoH value/10 [°C]
        # S4v Solvis-Heizungspuffer_oben	Pos  49 -  52 AtoH value/10 [°C]
        # S5v Solar-Vorlauf			Pos  53 -  56
        # S6v Solar-Rücklauf			Pos  57 -  60
        # S7v Solar-Solardruck			Pos  61 -  64
        # S8v Solar-Kollektortemp		Pos  65 -  68 AtoH value/10 [°C]
        # S9v Solvis-Heizungspuffer_unten	Pos  69 -  72 AtoH value/10 [°C]
        # S10v Solvis-Außentemp			Pos  73 -  76 AtoH value/10 [°C]
        # S11v Solvis-Zirkulationstemp		Pos  77 -  80 AtoH value/10 [°C]
        # S12v Solvis-Heizungs-Vorlauftemp	Pos  81 -  84 AtoH value/10 [°C]
        # S13v Solvis-Heizungs-Vorlauftemp_HK2	Pos  85 -  88 AtoH value/10 [°C]
	# S14v unbelegt				Pos  89 -  92
        # S15v unbelegt				Pos  93 -  96
        # S16v Solvis-Heizungs-Vorlauftemp_HK3	Pos  97 - 100 AtoH value/10 [°C]
        # S18v Durchfluss			Pos 101 - 104 AtoH [l/h]
        # S17v Solar-Durchfluss			Pos 105 - 108 AtoH value/10 [l/h]
        # AnalogIn1				Pos 109 - 112
        # AnalogIn2				Pos 113 - 116
        # AnalogIn3				Pos 117 - 120
        # AnalogOut1				Pos 121 - 124
        # AnalogOut2				Pos 125 - 128
        # AnalogOut3				Pos 129 - 132
        # AnalogOut4				Pos 133 - 136
        # RF1 Raumfühler1			Pos 137 - 140 AtoH value/10 [°C]
        # (RF2 Raumfühler2			Pos 141 - 144 AtoH value/10 [°C])
        # (RF3 Raumfühler3			Pos 145 - 148 AtoH value/10 [°C])
        # A1v Solar-Zirkulationspumpe			Pos 141 - 142 0=AUS; 1=EIN
        # A2v Solvis-		Pos 143 - 144 0=AUS; 1=EIN
        # A3v Solvis-HK1-Pumpe 		Pos 145 - 146 0=AUS; 1=EIN
        # A4v Solvis-HK2-Pumpe		Pos 147 - 148 0=AUS; 1=EIN
        # A5v Solvis-HK3-Pumpe		Pos 149 - 150 0=AUS; 1=EIN
        # A6v Solvis-		Pos 151 - 152 0=AUS; 1=EIN
        # A7v unbelegt				Pos 153 - 154
        # A8v Solvis-HK1Misch_auf		Pos 155 - 156 0=AUS; 1=EIN
        # A9v Solvis-HK1Misch_zu		Pos 157 - 158 0=AUS; 1=EIN
        # A10v Solvis-HK2Misch_auf		Pos 159 - 160 0=AUS; 1=EIN
        # A11v Solvis-HK2Misch_zu		Pos 161 - 162 0=AUS; 1=EIN
        # A12v Solvis-Brenner			Pos 163 - 164 0=AUS; 1=EIN
        # A13v unbelegt				Pos 165 - 166
        # A14v Solvis-Entstörung		Pos 167 - 168 0=AUS; <>0=EIN
        # Werte überspringen			Pos 169 - 184
        # SEv Solarertrag			Pos 185 - 189 AtoH [kWh]
        # Werte überspringen 			Pos 190 - 219
        # SLv Solarleistung			Pos 220 - 223 AtoH value/10 [kW]
       
	# *** HIER die URL von Solvis-Remote eintragen
	
	set url http://solvis:solvis@192.168.177.80/sc2_val.xml
	exec /usr/bin/wget -q -O /usr/local/addons/solvis/solvisaktuell.xml $url

	# Öffnen der Datei und Zuordnung zur Variablemn $input
	set f [open "/usr/local/addons/solvis/solvisaktuell.xml"]
	set input [read $f]
	close $f

	# Verarbeitung
        
        
	set S1v [expr ([wertergebnis [string range $input 37 40]] + 0.1) /10 - 0.01]
        #S1v Solvis-Warmwasserpuffer
        
	set S2v [expr ([wertergebnis [string range $input 41 44]] + 0.1) /10 - 0.01]
        #S2v Solvis-Warmwassertemp
        
	set S3v [expr ([wertergebnis [string range $input 45 48]] + 0.1) /10 - 0.01]
        #S3v Solvis-Speicherreferenz
        
	set S4v [expr ([wertergebnis [string range $input 49 52]] + 0.1) /10 - 0.01]
        #S4v Solvis-Heizungspuffer_oben
        
	set S5v [expr ([wertergebnis [string range $input 53 56]] + 0.1) /10 - 0.01]
        #S5v Solar-Vorlauf2
        
	set S6v [expr ([wertergebnis [string range $input 57 60]] + 0.1) /10 - 0.01]
        #S6v Solar-Rücklauf
        
	set S7v [expr ([wertergebnis [string range $input 61 64]] + 0.1) /10 - 0.01]
        #S7v Solar-Vorlauf1
        
	set S8v [expr ([wertergebnis [string range $input 65 68]] + 0.1) /10 - 0.01]
        #S8v Solar-Kollektortemp
        
	set S9v [expr ([wertergebnis [string range $input 69 72]] + 0.1) /10 - 0.01]
        #S9v Solvis-Heizungspuffer_unten
        
	set S10v [expr ([wertergebnis [string range $input 73 76]] + 0.1) /10 - 0.01]
        #S10v Solvis-Außentemp
        
	set S11v [expr ([wertergebnis [string range $input 77 80]] + 0.1) /10 - 0.01]
        #S11v Solvis-Zirkulationstemp
        
	set S12v [expr ([wertergebnis [string range $input 81 84]] + 0.1) /10 - 0.01]
        #S12v Solvis-Heizungs-Vorlauftemp_HK1
        
    set S13v [expr ([wertergebnis [string range $input 85 88]] + 0.1) /10 - 0.01]
        #S13v Solvis-Heizungs-Vorlauftemp_HK2
        
	#set S14v [expr ([wertergebnis [string range $input 89 92]] + 0.1) /10 - 0.01]
        #unbenutzt
        
	set S15v [expr ([wertergebnis [string range $input 93 96]] + 0.1) /10 - 0.01]
        #Solvis-Kaltwassertemperatur: $S15v
        
	set S16v [expr ([wertergebnis [string range $input 97 100]] + 0.1) /10 - 0.01]
        #S16v Solvis-Heizungs-Vorlauftemp_HK3
	
	set S17v [wertergebnis [string range $input 105 108]]
        #S17v Solar-Durchfluss
        
    set S18v [wertergebnis [string range $input 101 104]]
        #S18v Solvis-Warmwasser_Durchfluss
        
	set AI1 [wertergebnis [string range $input 109 112]]
        #puts "AI1: $AI1 - ([string range $input 109 112])"
        
	set AI2 [wertergebnis [string range $input 113 116]]
        #puts "AI2: $AI2 - ([string range $input 113 116])"
        
	set AI3 [wertergebnis [string range $input 117 120]]
        #puts "AI3: $AI3 - ([string range $input 117 120])"
        
	set AO1 [wertergebnis [string range $input 121 124]]
        #AO1 Solvis-Brenner
        
	set AO2 [wertergebnis [string range $input 125 128]]
        #AO2 Solvis-Warmwasserpumpe
        
	set AO3 [wertergebnis [string range $input 129 132]]
        #puts "AO3 : $AO3 - ([string range $input 129 132])"
        
	set AO4 [wertergebnis [string range $input 133 136]]
        #puts "AO4: $AO4 - ([string range $input 133 136])"
        
	set RF1 [expr ([wertergebnis [string range $input 137 140]] + 0.1) /10 - 0.01]
        #puts "RF1 Raumfühler1: $RF1 - ([string range $input 137 140])"
        
	#set RF2 [expr ([wertergebnis [string range $input 141 144]] + 0.1) /10 - 0.01]
        #RF2 Raumfühler2
        
	#set RF3 [expr ([wertergebnis [string range $input 145 148]] + 0.1) /10 - 0.01]
        #RF3 Raumfühler3
        
	set A1v [ausein [string range $input 141 142]]
        #A1v Solvis-Zirkulationspumpe
        
        
	set A2v [ausein [string range $input 143 144]]
        #A2v unbenutzt
        
	set A3v [ausein [string range $input 145 146]]
        #A3v Solvis-HK1-Pumpe
        
	set A4v [ausein [string range $input 147 148]]
        #A4v Solvis-HK2-Pumpe
        
	set A5v [ausein [string range $input 149 150]]
        #A5v Solvis-HK3-Pumpe
        
	set A6v [ausein [string range $input 151 152]]
        #A6v HK3_Mischer_auf
        
	set A7v [ausein [string range $input 153 154]]
        #A7v HK3_Mischer_zu
        
	set A8v [ausein [string range $input 155 156]]
        #A8v HK1_Mischer_auf
        
	set A9v [ausein [string range $input 157 158]]
        #A9v HK1_Mischer_zu
        
	set A10v [ausein [string range $input 159 160]]
        #A10v HK2_Mischer_auf
        
	set A11v [ausein [string range $input 161 162]]
        #A11v HK2_Mischer_zu
        
	set A12v [ausein [string range $input 163 164]]
        #A12v Solvis-Brenner
        
	set A13v [ausein [string range $input 165 166]]
        #puts "A13v: $A13v - ([string range $input 165 166])"
        
	#set A14v [ausein [string range $input 167 168]]
        #A14v Solvis-Entstörung - nicht genutzt
        
	set SEv [wertergebnis [string range $input 185 188]]
        #puts "SEv Solarertrag: $SEv - ([string range $input 185 188])"
        
	set SLv [expr ([wertergebnis [string range $input 220 223]] + 0.1) /10 - 0.01]
        #SLv Solarthermie-Leistung
        
        set SLv1 [expr ([wertergebnis [string range $input 224 227]] + 0.1) /10 - 0.01]
        
         set SLv2 [expr ([wertergebnis [string range $input 228 231]] + 0.1) /10 - 0.01]
         
	 set SLv3 [expr ([wertergebnis [string range $input 232 235]] + 0.1) /10 - 0.01]
        
       

        # Umlaute korrigieren
	
        # set ReGaHss variables
        set rega_cmd ""
        append rega_cmd "dom.GetObject('Solvis-Warmwasserpuffer').State($S1v);"
        append rega_cmd "dom.GetObject('Solvis-Warmwassertemp').State($S2v);"
        append rega_cmd "dom.GetObject('Solvis-Speicherreferenz').State($S3v);"
        append rega_cmd "dom.GetObject('Solvis-Heizungspuffer_oben').State($S4v);"
        append rega_cmd "dom.GetObject('Solar-Vorlauf2').State($S5v);"
        append rega_cmd "dom.GetObject('Solar-Ruecklauf').State($S6v);"
        append rega_cmd "dom.GetObject('Solar-Vorlauf1').State($S7v);"
        append rega_cmd "dom.GetObject('Solar-Kollektortemp').State($S8v);"
        append rega_cmd "dom.GetObject('Solvis-Heizungspuffer_unten').State($S9v);"
        append rega_cmd "dom.GetObject('Solvis-Aussentemp').State($S10v);"
        append rega_cmd "dom.GetObject('Solvis-Zirkulationstemp').State($S11v);"
        append rega_cmd "dom.GetObject('Solvis-Heizungs-Vorlauftemp_HK1').State($S12v);"
        append rega_cmd "dom.GetObject('Solvis-Heizungs-Vorlauftemp_HK2').State($S13v);"
        #append rega_cmd "dom.GetObject('Solvis-Entstoerung').State($A14v);"
        append rega_cmd "dom.GetObject('Solvis-Kaltwassertemperatur').State($S15v);"
        append rega_cmd "dom.GetObject('Solvis-Heizungs-Vorlauftemp_HK3').State($S16v);"
        append rega_cmd "dom.GetObject('Solar-Durchfluss').State($S17v);"
        append rega_cmd "dom.GetObject('Solvis-Warmwasser_Durchfluss').State($S18v);"
        
        append rega_cmd "dom.GetObject('Solvis-RF3').State($RF1);"
        
       	append rega_cmd "dom.GetObject('Solar-Ertrag').State($SEv);"
        append rega_cmd "dom.GetObject('Solarthermie-Leistung').State($AI2);"
        
        append rega_cmd "dom.GetObject('Solvis-Zirkulationspumpe').State($A1v);"
        append rega_cmd "dom.GetObject('Solvis-HK1-Pumpe').State($A3v);"
        append rega_cmd "dom.GetObject('Solvis-HK2-Pumpe').State($A4v);"
        append rega_cmd "dom.GetObject('Solvis-HK3-Pumpe').State($A5v);"
        append rega_cmd "dom.GetObject('Solvis-HK3_Mischer_auf').State($A6v);"
        append rega_cmd "dom.GetObject('Solvis-HK3_Mischer_zu').State($A7v);"
        append rega_cmd "dom.GetObject('Solvis-HK1_Mischer_auf').State($A8v);"
        append rega_cmd "dom.GetObject('Solvis-HK1_Mischer_zu').State($A9v);"
        append rega_cmd "dom.GetObject('Solvis-HK2_Mischer_auf').State($A10v);"
        append rega_cmd "dom.GetObject('Solvis-HK2_Mischer_zu').State($A11v);"
        
        append rega_cmd "dom.GetObject('Solvis-Brenner').State($AO1);"
        append rega_cmd "dom.GetObject('Solvis-Warmwasserpumpe').State($AO2);"
        
        

	rega_script $rega_cmd   
512 Kanäle in 101 Geräten und 145 CUxD-Kanäle in 19 CUxD-Geräten:
--------------------------------------------
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/Downloads/eq3/downl ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907

Benutzeravatar
Black
Beiträge: 5471
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1071 Mal
Kontaktdaten:

Re: CCU2 und Solvis Remote ?

Beitrag von Black » 01.12.2019, 09:53

Sowa habe ich in der Formatierung bei meiner buderus auch gehabt. Unsigned word vs Signet integer.

If (temp>=3276.8) {temp=temp - 6553.5;}

Die Zeile sollte dein Problem lösen. Bei negativ ist msb gesetzt.

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Garbsen
Beiträge: 295
Registriert: 12.07.2017, 21:08
Hat sich bedankt: 1 Mal
Danksagung erhalten: 14 Mal

Re: CCU2 und Solvis Remote ?

Beitrag von Garbsen » 01.12.2019, 10:40

Danke, ich hatte auch schon vermutet, dass es sich um einen festen Wert handelt, um den das Ergebnis zu korrigieren ist, hätte aber lange Raumproblemen müssen, um das rauszubekommen.
Frage: kann ich das direkt im tcl-Script anlegen?
Ich habe jetzt zunächst ein separates ccu-Programm geschrieben, dass immer ausgelöst wird, wenn der Wert > 100 Grad wird ( im Zuge der Erderwärmung habe ich einen sicheren Grenzwert gewählt ;-) )

! #Korrektur Variable Außentemperatur bei Werten unter null
var temp = dom.GetObject('Solvis-Aussentemp');
if (temp>=3276.8) {temp=temp - 6553.5;};
dom.GetObject('Solvis-Aussentemp').State(temp);

Frage: kann ich das direkt im tcl-Script anlegen? Bzw. Ich habe es zunächst dort so angegeben, das schien aber nicht zu funktionieren.
512 Kanäle in 101 Geräten und 145 CUxD-Kanäle in 19 CUxD-Geräten:
--------------------------------------------
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/Downloads/eq3/downl ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907

Benutzeravatar
Black
Beiträge: 5471
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1071 Mal
Kontaktdaten:

Re: CCU2 und Solvis Remote ?

Beitrag von Black » 01.12.2019, 11:03

probier mal an der passenden stelle im tcl script so:

Code: Alles auswählen

append rega_cmd "if ($S10v >100.0) {dom.GetObject('Solvis-Aussentemp').State($S10v - 6553.5);} else {dom.GetObject('Solvis-Aussentemp').State($S10v);}"
Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Garbsen
Beiträge: 295
Registriert: 12.07.2017, 21:08
Hat sich bedankt: 1 Mal
Danksagung erhalten: 14 Mal

Re: CCU2 und Solvis Remote ?

Beitrag von Garbsen » 01.12.2019, 11:18

Danke, habe das so einmal in das Script eingetragen. Scheint zu funktionieren, dh. Zumindest läuft das Script durch. Ob die Konvertierung passt, kann ich derzeit aufgrund von plus-Temperaturen nicht sagen, aber ich gehe davon aus.
Schönen Sonntag noch
512 Kanäle in 101 Geräten und 145 CUxD-Kanäle in 19 CUxD-Geräten:
--------------------------------------------
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/Downloads/eq3/downl ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907

Antworten

Zurück zu „HomeMatic allgemein“