Start in die Welt CCU2 und homeputer Studio - Version CL 4.0

Programmierung der HomeMatic CCU mittels contronics homeputer CL

Moderator: Co-Administratoren

AFi
Beiträge: 166
Registriert: 14.12.2016, 20:44

Re: Start in die Welt CCU2 und homeputer Studio - Version CL

Beitrag von AFi » 02.02.2017, 19:07

Hi,

besten Dank für die Rückinfo, beruhigt mich.

Trotzdem stellt sich für mich auch die Frage ob man nicht auf die WLan Module umschwenken sollte um das DC Problem
zu umgehen.

Macht dies Sinn, ist dies Zukunftsträchtiger?

Gruß Axel

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Start in die Welt CCU2 und homeputer Studio - Version CL

Beitrag von Familienvater » 02.02.2017, 22:33

Hi,

welche WLAN-Module? HomematicIP funkt auch im 868 MHz-Bereich (allerdings optional auf 2 verschiedenen Frequenzen), damit hat das System die theoretisch doppelte Sendezeit, allerdings hat die CCU nur die Möglichkeit, auf einer Frequenz zu funken -> Der "Vorteil" der 2. Frequenz schwindet.
Die "Header" der Funkpakete von HmIP sind deutlich größer, da die Geräte angeblich mit IpV6 adressiert werden, klassisches Homematic kommt mit 3 Byte-Adressen aus, mit ein paar Verwaltungsinfos was Tlg-Counter usw angeht reichen IIRC 8 byte für den Header aus, dann kommt der Payload.

Bei HmIP sind die Geräteadressen doppelt so lang wie bei HM, der Header wäre bei nur 2 zusätzlichen Verwaltungsbytes bereits 14 Bytes lang, dann kommt immer noch der Payload. Wenn man davon ausgeht, das HmIP eine doppelt so hohe Datenrate für die Aussendung nutzt, dann bleiben die Funkpakete von der Sendezeit ungefähr gleich lang, wenn nicht mehr Payload übertragen wird.

Mit HmIP auf der CCU gibt es zur Zeit immer wieder ungeklärte Probleme, mit HmIP-Accesspoint ist HPCL nicht zu nutzen (und HmIP als Cloudlösung auch weit von 100% Verfügbarkeit entfernt).
Grundästzlich soll HmIP auch mit HPCL auf der CCU nutzbar sein, ich habe noch von keinem gelesen, das er es Produktiv einsetzt, es gab maximal Berichte, das es getestet wurde.

Und HmIP hat für z.B. wegen aktuell mangelnder Unterstützung durch die LAN-Rf-Gateways Abdeckungsprobleme, die seit Q3/2016 versprochene Lösung mir Routingfähigen Strommess-Steckdosenaktoren fehlt aktuell immer noch in der Firmware der Aktoren.

Der Familienvater

AFi
Beiträge: 166
Registriert: 14.12.2016, 20:44

Re: Start in die Welt CCU2 und homeputer Studio - Version CL

Beitrag von AFi » 03.02.2017, 08:10

Hi,

besten Dank für die Rückinfo.

Gebe zu ich hab dies missverstanden mit den IP-Modulen.

Gruß Axel

AFi
Beiträge: 166
Registriert: 14.12.2016, 20:44

Re: Start in die Welt CCU2 und homeputer Studio - Version CL

Beitrag von AFi » 05.02.2017, 11:17

Hi,

bin dann mal wieder da und WE ist fast vorbei.

Mein derzeitiges Problem ist die Anzeige eines Wertes auf der Visualisierung.

Auswertungsmakro zur Feststellung wo die Ventile der Thermostate stehen.
Ausführung derzeit bei 1 min, wird jedoch später sicherlich auf 30 min erhöht.

Code: Alles auswählen

//Erstellt am: 03.02.2017
//Version: 1
//Funktion: Heizkreispumpe ausschalten bei Ventilstellungen < X %
//Bemerkung:
//

ConstVentilPos:= 15
VentPos1:=0
VentPos2:=0
VentPos3:=0
VentPos4:=0
VentPos5:=0
VentPos6:=0
VentPos7:=0
VentPos8:=0
VentPos9:=0

Wenn A_010HeizungAnAus = 1 dann
	Wenn L_001EG_WZ_HZK_Garten.VentilPos < ConstVentilPos dann
		VentPos1:=1
	endewenn
	Wenn L_002EG_WZ_HZK_Nachb.VentilPos < ConstVentilPos dann
		VentPos2:=1
	endewenn
	Wenn L_003OG_HZK_LeoBett.VentilPos < ConstVentilPos dann
		VentPos3:=1
	endewenn
	Wenn L_004ELW_HZK_Nebenz.VentilPos < ConstVentilPos dann
		VentPos4:=1
	endewenn
	Wenn L_005OG_HZK_Bad.VentilPos < ConstVentilPos dann
		VentPos5:=1
	endewenn
	Wenn L_006ELW_HZK_Bad.VentilPos < ConstVentilPos dann
		VentPos6:=1
	endewenn
	Wenn L_007EG_HZK_Toilette.VentilPos < ConstVentilPos dann
		VentPos7:=1
	endewenn
	Wenn L_008ELW_HZK_SchlZi.VentilPos < ConstVentilPos dann
		VentPos8:=1
	endewenn
	Wenn L_009OG_HZK_Buero.VentilPos < ConstVentilPos dann
		VentPos8:=1
	endewenn

	GesVentiPos:= (VentPos1+VentPos2+VentPos3+VentPos4+VentPos5+VentPos6+VentPos7+VentPos8+VentPos9)/9
	D_010ErfGradVentil := GesVentiPos

	Wenn GesVentiPos > 0,8 dann
	//Motor abschalten
	EndeWenn


endewenn
Der Wert "GesVentiPos" soll dann in einem Zahlenobjekt (D_010ErfGradVentil) auf dem Bildschirm dargestellt werden.
Einstellungen Zahlenobjekt:
- Objekt Typ Zahl
- Hystoriedaten schreiben
- Anfangswert: 0,00

Dieses Objekt dient eigentlich nur um den Range und die Funktion zu Testen, da derzeit noch kein Eingriff auf die Pumpe ausgeführt wird.

Gibt es keine Möglichkeit eine "Messagebox" anzusprechen, nach dem Motto MSGBOX("...Text...."; "Wert"), kenne ich aus
Visualbasic? Wäre manchmal sehr hilfreich um Funktionen zu prüfen etc. oder Meldungen zu generieren.


Das Problem ist, dass die Zahl immer bei 0,00 stehen bleibt?! Ergo kein Eintrag.

Gruß Axel

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Start in die Welt CCU2 und homeputer Studio - Version CL

Beitrag von Familienvater » 05.02.2017, 11:37

Hi,

es hängt natürlich auch davon ab, wie GesVentiPos definiert ist.

Aber grundsätzlich verstehe ich nicht, warum Du das so vor hast.
Dur prüfst, ob ein Heizkörper keine Energie benötigt (HK.Ventil < 15), dann setzt Du ein Flag, das dieser Heizkörper keine Energie benötigt.
Dann bildest Du den Durchschnitt aller Heizkörper, die keine Energie benötigen, und wenn der Durchschnitt > 0,8 ist, dann die Heizungspumpe aus.

In meinen Augen viel zu umständlich, fehleranfällig und vor allem Benutzerunfreundlich, wenn da noch ein Heizkörper 100% offen ist, wird der auch abgeschaltet.

Also umgekehrt denken:

Code: Alles auswählen

HKmitBedarf := 0

    ConstVentilPos:= 15

    Wenn A_010HeizungAnAus = 1 dann
       Wenn L_001EG_WZ_HZK_Garten.VentilPos >= ConstVentilPos dann
          HKmitBedarf := HKmitBedarf +1
       endewenn
       Wenn L_002EG_WZ_HZK_Nachb.VentilPos >= ConstVentilPos dann
          HKmitBedarf := HKmitBedarf +1
       endewenn
       Wenn L_003OG_HZK_LeoBett.VentilPos >= ConstVentilPos dann
          HKmitBedarf := HKmitBedarf +1
       endewenn
       Wenn L_004ELW_HZK_Nebenz.VentilPos >= ConstVentilPos dann
          HKmitBedarf := HKmitBedarf +1
       endewenn
       Wenn L_005OG_HZK_Bad.VentilPos >= ConstVentilPos dann
          HKmitBedarf := HKmitBedarf +1
       endewenn
       Wenn L_006ELW_HZK_Bad.VentilPos >= ConstVentilPos dann
          HKmitBedarf := HKmitBedarf +1
       endewenn
       Wenn L_007EG_HZK_Toilette.VentilPos >= ConstVentilPos dann
          HKmitBedarf := HKmitBedarf +1
       endewenn
       Wenn L_008ELW_HZK_SchlZi.VentilPos >= ConstVentilPos dann
          HKmitBedarf := HKmitBedarf +1
       endewenn
       Wenn L_009OG_HZK_Buero.VentilPos >= ConstVentilPos dann
          HKmitBedarf := HKmitBedarf +1
       endewenn

       D_010ErfGradVentil := HKmitBedarf

       Wenn HKmitBedarf=0 dann
       //Motor abschalten
       EndeWenn


    endewenn

Der Familienvater

Daimler
Beiträge: 9115
Registriert: 17.11.2012, 10:47
System: Alternative CCU (auf Basis OCCU)
Wohnort: Köln
Hat sich bedankt: 37 Mal
Danksagung erhalten: 283 Mal

Re: Start in die Welt CCU2 und homeputer Studio - Version CL

Beitrag von Daimler » 05.02.2017, 11:47

Hi,
AFi hat geschrieben:D_010ErfGradVentil := GesVentiPos
Wenn du keinen Dreher in den Bezeichnungen hast, müsste das gehen.
Das Projekt hast du aber schon übertragen? 8)

Allerdings sehe ich dein Heranggehen als eher unglücklich.
Was ist, wenn ein Raum auf der Nordseite Wärme haben will und die restichen (Südseite) nicht - dann frierst du auf der Nordseite.
Außerdem halte ich persönlich die Reaktion auf negative Werte als unlogisch.

Code: Alles auswählen

//Erstellt am: 03.02.2017
//Version: 1
//Funktion: Heizkreispumpe ausschalten bei Ventilstellungen < X %
//Bemerkung:
//
ConstVentilPos:= 15
VentPos:=0
Wenn A_010HeizungAnAus = 1 dann
   Wenn L_001EG_WZ_HZK_Garten.VentilPos > ConstVentilPos dann
      VentPos:=VentPos+1
   endewenn
......
   D_010ErfGradVentil :=  VentPos

   Wenn  VentPos >= 1 dann
   //Motor einschalten
   EndeWenn


endewenn
/Edith:
2 D..... - ein Gedanke. :lol:
Gruß Günter

pivccx mit 3.xx in Produktiv und Testsystem mit HM-, HM-W, HMIP- und HMIP-W Geräten, HPCx Studio 4.1,
L-Gateways, RS-L-Gateways, HAP, Drap, FHZ200x, vereinzelt noch FS2x-Komponenten.
HM / HM-IP: Zur Zeit knapp 300 Komponenten mit ??? Kanälen .

Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!

AFi
Beiträge: 166
Registriert: 14.12.2016, 20:44

Re: Start in die Welt CCU2 und homeputer Studio - Version CL

Beitrag von AFi » 05.02.2017, 11:53

Hi,

ok Dein Vorschlag kann ich nachvollziehen, jedoch möchte ich mich nicht von allen Launen meiner Familie steuern lassen also ein bisschen Zwang. (Frag mich zwar was dies noch soll, wir sind sowieso bald nur noch zu zweit, die "Kinder" ziehen gerade alle aus, dann ist das Haus sowieso viel zu groß).

Deine Ausführung löst mein Problem jedoch nicht, die gesamten Variablen sind vom Typ Zahl. Welche Info brauchst Du von mit um
es beurteilen zu können.

Gruß Axel

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Start in die Welt CCU2 und homeputer Studio - Version CL

Beitrag von Familienvater » 05.02.2017, 11:57

Hi,

@Günter (diesmal ohne H): Das ist die sogenannte Syncronisation... Wenn es schon zwei so machen würden, dann kann es ja so verkehrt nicht sein

@Axel: Der Startwert der Zahlenvariable gibt die Musik vor. Ist der Startwert der Zahl 0, dann wird da zwischendrin das Ergebnis abgerundet, auch wenn es nachher auf ein Objekt mit einer höheren Genauigkeit dargestellt werden soll. Wenn Du min. willst, das zwei Heizkörper Wärmebedarf haben, dann machst Du halt die Entscheidung abhängig davon, ob es zwei sind, die Wärme haben wollen.

weiter noch dazu:
1. Mal wieder kein Intervall notwendig... Die "Wärmebedarfsermittlung" in ein Makro "WBMakro" packen, und in jeden HT (bei Empfang getriggert) eine weitere Zeile starte(WBMakro)
Damit wird bei jedem Empfang eines Datenpaketes eines HTs der Wärmebedarf geprüft, öfter (kürzeres Intervall) bringt nichts, da sich die Werte nur in diesem Moment ändern können, längeres Intervall ist benutzerunfreundlich, weil zwischen Heizkörperhochdrehen und Reaktion durch Pumpenstart sollten wohl keine 15 min liegen, oder?

2. Denk drüber nach, ob Du bei der Wärmebedarfsermittlung noch einen Plausibilitätscheck einbaust, ob die gemessene Temperatur am Heizkörper/WT unter der Vorgabe-Temp liegt, damit verhinderst Du ggf., das die Pumpe im Sommer kurz anspringt, wenn die HTs ihre Entkalkungsfahrt machen, ALLERDINGS muss man dann auch den aktuellen Modus des HTs beachten, wenn der auf BOOST steht, dann ist die Soll-Temp ggf. kleiner als die IST-Temp, trotzdem braucht der ggf. Wärme.

Je nach Heizungssteuerung (und wie Du die Pumpe von HPCL aus startest/stoppst) kann es aber kein Fehler sein, die Pumpe in der Nicht-Heiz-Zeit manuell (also automatisch aus HPCL heraus) täglich oder wöchentlich kurz anlaufen zu lassen, damit sich das Pumpenrad nicht festsetzt. Meine Heizungssteuerung macht das aber selbständig, da brauche ich mich nicht drum zu kümmern, und ein evtl. Wärmebedarf durch offene Ventile konfiguriert bei mir nur die Heizungssteuerung per RS232 um, ich habe da keinen Schaltaktor der die Pumpe an oder aus schalten kann, das macht dann wieder die Heizungssteuerung selbst.

Der Familienvater

AFi
Beiträge: 166
Registriert: 14.12.2016, 20:44

Re: Start in die Welt CCU2 und homeputer Studio - Version CL

Beitrag von AFi » 05.02.2017, 14:51

Hi,

der Zahlenwert (Startwert) der Variable war das Problem. Ganz ehrlich, dass ist haarsträubend wie HPCL teilweise programmiert ist, warum ist es nicht möglich zwei Zahlendefinitionen (Integer oder Fließkommazahl) zur Verfügung zu stellen unter Startwert verstehe ich was anderes.

Event, Event, Event.........; oft genug hast Du es mir geschrieben, hoffe ich habe es bald "intus".

Gruß Axel

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Start in die Welt CCU2 und homeputer Studio - Version CL

Beitrag von Familienvater » 05.02.2017, 15:30

Hi,

nimm es hin, wie es ist, es ist halt so.

Die normalen 80% der Zielgruppe von HPCL kennen den Unterschied zwischen einer Fließkommazahl und einem Integer nicht, für den Rest steht irgendwo im kleingedruckten der Hilfe, das man über den Startwert den genauen Typ der Variable festlegt. Und dann geht es los, wann wird wo ein implizite Typumwandlung durchgeführt?

Code: Alles auswählen

// sngWert -> Startwert 0,00
// intA, intB -> Startwert 0

sngWert := 1 / 2
// welchen Wert hat sngWert?
sngWert := 1,0 / 2
// welchen Wert hat sngWert?
sngWert := 1 / 2,0
// welchen Wert hat sngWert?

intA := 1
sngWert := intA / 2
// welchen Wert hat sngWert?

intB := 2
sngWert := intA / intB
// welchen Wert hat sngWert?

Ich kann es Dir auch nicht sagen, welchen Wert sngWert nach welcher Anweisung hätte, ich müsste es auch compilieren und ausführen lassen, und dann das Ergebnis anschauen bzw. ich umgehe das Problem einfach, indem ich möglichst solche "undefinierten" Ergebnisse vermeide, und stattdessen immer Variablen des rchtigen "Typs" dafür nutze (ich habe dafür extra ein "tmp-Makro", in dem ich diverse "temporäre" Variablentypen definiert habe, damit ich nicht jedesmal in jedem Objekt eine Hilfsvariable definieren muss, die kann ich mir ja jederzeit aus dem tmp-Makro "ausleihen", sei es zum berechnen, oder auch nur um einen Wert auf eine definierte Anzahl Nachkommastellen formatieren zu können:

Code: Alles auswählen

//! strTemp             Zeichen
//! sngVar10            Zahl                0,0
//! sngVar100           Zahl                0,00
//! sngVar1000          Zahl                0,000
//! sngVar20            Zahl                0,0
//! sngVar200           Zahl                0,00
//! sngVar2000          Zahl                0,000
//! lngVar1             Zahl                0
//! lngVar2             Zahl                0
//! zeitVar             Zeit
//! uhrVar              Uhr
Der Familienvater

Antworten

Zurück zu „homeputer CL“