[gelöst] Darstellung HmIP-eTRV-2 bzw. HM-CC-RT-DN

Das Langzeitarchiv für HomeMatic

Moderator: Co-Administratoren

Matsch
Beiträge: 5452
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 116 Mal
Danksagung erhalten: 741 Mal

Re: Darstellung HmIP-eTRV-2 bzw. HM-CC-RT-DN

Beitrag von Matsch » 20.09.2022, 12:17

Ahh, ok, da war ich auf dem falschen Dampfer. Ich benutze nur die Highcharts.

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

Re: Darstellung HmIP-eTRV-2 bzw. HM-CC-RT-DN

Beitrag von Baxxy » 20.09.2022, 15:47

So, ich habe mal den fehlenden META-DATEN Eintrag "UNIT" mit der Einheit "°C" in mein eTRV-B mit einem kleinen Scriptchen reingeschrieben.

Dann den Datenpunkt (inkl. Historie) aus dem Historian gelöscht und die Zentrale neu gestartet.
Voila:
Historian_eTRV_Unit.JPG
Ob der Historian die "Unit" auch ohne komplettes Löschen irgendwann discovered hätte kann ich nicht sagen.

Wer das testen will:
Backup der Zentrale anlegen
im Script testen folgendes ausführen (Kanalnamen in der ersten Zeile anpassen!!!)

Code: Alles auswählen

!- Metadaten anlegen, setzen, entfernen, auslesen
object oDP = channels.Get ("Thermostat Heizung WZ: eTRV-B1:1 - Bedienung").DPByHssDP ("ACTUAL_TEMPERATURE");
string meta_key = "UNIT";
var meta_value = "°C";

! anlegen
oDP.AddMetaData (meta_key,meta_value);
Danach nochmal prüfen mit:

Code: Alles auswählen

!- Metadaten anlegen, setzen, entfernen, auslesen
object oDP = channels.Get ("Thermostat Heizung WZ: eTRV-B1:1 - Bedienung").DPByHssDP ("ACTUAL_TEMPERATURE");
string meta_key = "UNIT";
var meta_value = "°C";

! abfragen
WriteLine (oDP.MetaData ("UNIT"));
Abmelden aus der WebUI bzw. "Änderungen speichern" bei RM persistiert das ganze.

Edit: bei Min/Max war eQ-3 auch sehr großzügig wie man sieht. 8)

Micky
Beiträge: 257
Registriert: 18.12.2014, 15:52
System: CCU
Hat sich bedankt: 4 Mal
Danksagung erhalten: 1 Mal

Re: Darstellung HmIP-eTRV-2 bzw. HM-CC-RT-DN

Beitrag von Micky » 20.09.2022, 17:13

oh wow … vielen Dank. Welche unerwünschten „Nebenwirkungen“ könnten hiermit bzw auf einer CCU2 auftreten? Ist das ne dauerhafte Lösung?
Ich übernehme keinerlei Haftung/Garantie für Tipps/Hinweise die ich hier gebe. Danke für euer Verständnis.

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

Re: Darstellung HmIP-eTRV-2 bzw. HM-CC-RT-DN

Beitrag von Baxxy » 20.09.2022, 18:17

Micky hat geschrieben:
20.09.2022, 17:13
„Nebenwirkungen“
Gibt's meines Wissens keine außer eine um wenige Bytes vergrößerte homematic.regadom. Also unbedenklich.
Micky hat geschrieben:
20.09.2022, 17:13
Ist das ne dauerhafte Lösung?
Gute Frage.
Reboots übersteht das problemlos. Zentralen Updates gibt's für die CCU2 vermutlich eh nie mehr, also ja... dauerhaft würde ich sagen.
Sollte aber auch Updates überstehen. Nur beim komplett Löschen des Gerätes + Neuanlernen geht das flöten.

Micky
Beiträge: 257
Registriert: 18.12.2014, 15:52
System: CCU
Hat sich bedankt: 4 Mal
Danksagung erhalten: 1 Mal

Re: Darstellung HmIP-eTRV-2 bzw. HM-CC-RT-DN

Beitrag von Micky » 20.09.2022, 20:43

Nabend,

ich war mutig und hab das Skript mal laufen lassen... Lt. Abfrage wird die Einheit nun mit "°C" ausgegeben.. Mal gucken ob ccu-historian die Einheit mitbekommt, wollte das Löschen und neu Anlegen des Datenpunkts in der Datenbank erstmal vermeiden. Ich halte euch auf dem Laufenden.

Grüße M.

EDIT: Leider wurde die Einheit in ccu-historian noch nicht aktualisiert, habe zur Sicherheit auch den Datenpunkt incl. Historie gelöscht und neu erzeugen lassen. Dennoch steht in den Details weiterhin keine Einheit. Wenn ich jedoch den Datenpunkt mit der xml-api (statelist.cgi) gegenprüfe, wird der Eintrag "°C" unter valueunit korrekt angezeigt.
Ich übernehme keinerlei Haftung/Garantie für Tipps/Hinweise die ich hier gebe. Danke für euer Verständnis.

Mathias
Beiträge: 1796
Registriert: 03.11.2010, 10:25
System: CCU
Wohnort: Aachen
Hat sich bedankt: 58 Mal
Danksagung erhalten: 262 Mal
Kontaktdaten:

Re: Darstellung HmIP-eTRV-2 bzw. HM-CC-RT-DN

Beitrag von Mathias » 20.09.2022, 23:28

Micky hat geschrieben:
20.09.2022, 20:43
EDIT: Leider wurde die Einheit in ccu-historian noch nicht aktualisiert, habe zur Sicherheit auch den Datenpunkt incl. Historie gelöscht und neu erzeugen lassen. Dennoch steht in den Details weiterhin keine Einheit. Wenn ich jedoch den Datenpunkt mit der xml-api (statelist.cgi) gegenprüfe, wird der Eintrag "°C" unter valueunit korrekt angezeigt.
Das HM-Skript ändert die Einheit nur in der ReGaDom, das sind die Daten der Logikschicht der CCU. Der CCU-Historian liest aber die Meta-Informationen (z.B. Min, Max, Einheit) direkt von den Schnittstellenprozessen mit denen die Geräte kommunizieren. Die XML-API/statelist.cgi liest ebenfalls aus der ReGaDom. Daher kommt wohl das oben Beobachtete.

Jetzt zum eigentlichen Problem: Die Schnittstellenprozesse melden falsche oder ungünstige Meta-Informationen zu einem Datenpunkt. Das kann z.B. bei der Trend-Darstellung ärgerlich sein, da der CCU-Historian diese Daten für die Darstellung verwendet. Datenpunkte mit der gleichen Einheit werden auf dieselbe Skala gesetzt. Wenn keine Einheit gesetzt ist, dann werden Min und Max dafür ausgewertet.

Es ist zukünftig angedacht, dass das Holen der Meta-Daten aus der CCU für einen Datenpunkt über die Web-UI abgeschaltet werden kann, und die Meta-Daten über die Web-UI manuell angepasst werden können. Aber das kann noch dauern.

Intern ist aber schon alles im CCU-Historian vorhanden, sodass die Anpassung auch über die Skriptumgebung erfolgen kann:

Code: Alles auswählen

// *** Meta-Informationen zu einem Datenpunkt korrigieren V1.0.0 ***

updateDataPoint("BidCos-RF", "GEQ0xxxxxx:1", "BRIGHTNESS") {

  // Eigenschaften setzen.
  attributes.displayName="Flur KG Helligkeit"
  attributes.room="Flur KG"
  attributes.function="Licht"

  // Messbereich und Einheit setzen.
  attributes.maximum=100000
  attributes.unit="Lux"
  attributes.minimum=0

  // Bei stetigen Messwerten auf true setzen (z.B. Zähler, Temperatur, Füllstand) und bei
  // unstetigen auf false setzen (z.B. Schalter, Aufzählung). 
  continuous=true

  // Zyklisches Aktualisieren der Meta-Informationen aus der CCU abschalten.
  // Ansonsten werden die obigen Einstellungen irgendwann wieder überschrieben.
  noSynchronization=true
}

// *** Skript ***

def updateDataPoint(interfaceId, address, identifier, configure) {
  def id=new DataPointIdentifier(interfaceId, address, identifier)
  def dp=database.getDataPoint(id)
  if (dp==null) {
    throw new Exception("Datenpunkt $id nicht gefunden.")
  }
  configure.delegate=dp
  configure.resolveStrategy=Closure.DELEGATE_ONLY
  configure()
  database.updateDataPoint(dp)
  println "Datenpunkt $id wurde aktualisiert."
}
Die Funktion von continuous=true ist vielleicht erwähnenswert: Bei stetigen Messwerten sollte es gesetzt werden, dann wird die Trend-Kurve linear interpoliert dargestellt. (Aber auch nur dann wenn keine Delta-Kompression aktiviert ist.) Das war auch eine Frage aus dem ersten Beitrag.

Das Skript setze ich gleich noch ins Wiki.

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

Re: Darstellung HmIP-eTRV-2 bzw. HM-CC-RT-DN

Beitrag von Baxxy » 21.09.2022, 00:18

Mathias hat geschrieben:
20.09.2022, 23:28
Das HM-Skript ändert die Einheit nur in der ReGaDom, das sind die Daten der Logikschicht der CCU. Der CCU-Historian liest aber die Meta-Informationen (z.B. Min, Max, Einheit) direkt von den Schnittstellenprozessen mit denen die Geräte kommunizieren.
Die vom Script geänderten Meta-Daten stehen auch an der RPC-Schnittstelle bereit.
Schön zu sehen hier im ioBroker...

Code: Alles auswählen

{
  "type": "state",
  "common": {
    "name": "Thermostat Heizung WZ: eTRV-B1:1 - Bedienung.ACTUAL_TEMPERATURE",
    "role": "value.temperature",
    "def": 0,
    "type": "number",
    "read": true,
    "write": false,
    "min": -3276.8,
    "max": 3276.7,
    "unit": "°C"
  },
Und mein Historian hat das ja dann auch eingelesen.
So wie ich das mal gelesen habe werden doch zyklisch die Metadaten "gescannt". Übernimmt der Historian dann auch neue/geänderte Metadaten?

Mathias
Beiträge: 1796
Registriert: 03.11.2010, 10:25
System: CCU
Wohnort: Aachen
Hat sich bedankt: 58 Mal
Danksagung erhalten: 262 Mal
Kontaktdaten:

Re: Darstellung HmIP-eTRV-2 bzw. HM-CC-RT-DN

Beitrag von Mathias » 21.09.2022, 00:23

Baxxy hat geschrieben:
21.09.2022, 00:18
Und mein Historian hat das ja dann auch eingelesen.
So wie ich das mal gelesen habe werden doch zyklisch die Metadaten "gescannt". Übernimmt der Historian dann auch neue/geänderte Metadaten?
Teilweise:

Die Meta-Daten Min, Max, Einheit werden nur einmalig vom Schnittstellenprozess gelesen. Da sie sich eigentlich nie für ein Gerät ändern sollten.
Der Anzeigename, Raum und Gewerk werden zyklisch aus der ReGaHss aktualisiert.

Bei Systemvariablen werden sie ebenfalls zyklisch aus der ReGaHss aktualisiert.

Micky
Beiträge: 257
Registriert: 18.12.2014, 15:52
System: CCU
Hat sich bedankt: 4 Mal
Danksagung erhalten: 1 Mal

Re: Darstellung HmIP-eTRV-2 bzw. HM-CC-RT-DN

Beitrag von Micky » 21.09.2022, 18:13

Hallo Mathias,

vielen Dank für deine Unterstützung. Ich muss also die o.g. Zeilen anpassen und über die Skriptumgebung der ccu-Historian WebGui absetzen oder sind diese Anpassungen für die ccu-historian.config?

Eigenschaften die nicht geändert werden sollen, können die einfach rausgelassen werden?
Ich übernehme keinerlei Haftung/Garantie für Tipps/Hinweise die ich hier gebe. Danke für euer Verständnis.

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

Re: Darstellung HmIP-eTRV-2 bzw. HM-CC-RT-DN

Beitrag von Baxxy » 21.09.2022, 18:20

Hat dein Historian die Unit nicht übernommen? Merkwürdig.

Ich würde beim Script alle Attribute außer...

Code: Alles auswählen

attributes.unit="Lux"
...auskommentieren.

Und den:

Code: Alles auswählen

noSynchronization=true
...auf false setzen, da laut Mathias UNIT/MIN/MAX eh nur einmal discovered werden.

Antworten

Zurück zu „CCU-Historian“