Systemvariablen Metadaten Konsistenzcheck

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

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

Systemvariablen Metadaten Konsistenzcheck

Beitrag von Black » 20.02.2019, 10:59

Als Vorarbeit für die kommende Option des SDV, auch selektiv von einzelnen oder auch allen Programmen Backups machen zu können, um die entweeder zu sichern odr beim Umzug auf ein neues System wieder einspielen zu können, ohne Klickorgien in der Klickibunti machen zu müssen,

im Vorab noch ein Auszug aus dem Prerelease des SDV, um die metadaten der Systemvariablen auf ihre Konsistenz hin prüfen zu können.

hierbei wird überprüft, ob bei entsprechendem Typ der Systemvariablen die entsprechenden MataTags vorhanden sind oder sich ungültige oder besser inkonsistente Metatags dort befinden. In der Vergangenheit wurde erstmals von Badenpower auf diesen möglichen Effekt hingewiesen.
Selber überprüfen kann man es (wenn man weiss wie oder oder eins der entsprechenden Tools hat), welche Metatags sich bei einer neuangelegten Syxstemvariable befinden müssen und welche nicht da befinden sollten).
Eine mögliche Problemstelle bei Inkonsistenzen kann dann sein, das Middlewares oder Apps (Iobroker z.B.) beim Import z.b. der SystemvariablenListe vertun, weil dort auch die Metatags ausgewertet werden.

Problematisch ist immer, wenn im nachgang nach dem Anlegen einer Systemvariablen deren Typ verändert wird. (oder mit Scripten an falscher Stelle rumgemacht wurde).
Bei Programmen habe ich ja schon aufgezeigt, das inkonsistente Typen verhindern können, das ein programm ordnungsgemäß getriggert wird.

Jeniges kleines Tetsprogramm, welches ein extrakt aus dem kommenden SDV ist, prüft nur die Logig zwischen ValueType/ValueSubType und den vorhandenden metatags und gibt eine entsprechende Meldung aus. Strukturverändernd macht das Programm hier nix.
Mich interessiert erstmal nur, wieweit solche möglichen Inkonsistenzen verbreitet sind. eine kurze Rückmeldung wäre Super

Code: Alles auswählen

string sID;
object oID;
WriteLine ("Konsistenzcheck Systemvariablen")
WriteLine ("Metadaten Konsistenzcheck");
WriteLine ("Auszug aus PreRelease SDV 3.07.10");
WriteLine ("Black in 2019");
WriteLine ("---------------------------------");
integer n=0;
string m; string vtype;
boolean bv0; boolean bv1; boolean min; boolean max; boolean unit; boolean vlist;
integer failvar=0;
integer failsum=0;
boolean fail;

foreach (sID,dom.GetObject (ID_SYSTEM_VARIABLES).EnumIDs () ) {
   oID= dom.GetObject (sID);
   if (oID) {
      m= oID.EnumMetaData ();
      bv0=m.Contains ("BV0");
      bv1=m.Contains ("BV1");
      min=m.Contains ("MIN");
      max=m.Contains ("MAX");
      unit=m.Contains ("UNIT");
      vlist=m.Contains ("VALUE_LIST");
      fail=false;
      vtype= "[ID]: " # oID.ID () # " - (" # oID.Name () # ") Type qqqq - MetaData : ";
      if (((oID.ValueType()==2) && (oID.ValueSubType()==2)) || ((oID.ValueType()==2) && (oID.ValueSubType()==6))  ) {
      !- Bool oder Alarm
          if (oID.ValueSubType ()==6) {vtype= vtype.Replace ("qqqq","Alarm");} else {vtype= vtype.Replace ("qqqq","Logigwert");}
          if (!bv0) {WriteLine (vtype # "BV0 fehlt");failsum=failsum+1;fail=true;}
          if (!bv1) {WriteLine (vtype # "BV1 fehlt");failsum=failsum+1; fail=true;}
          if (!unit) {WriteLine (vtype # "UNIT fehlt");failsum=failsum+1;fail=true;}
          if (min) {WriteLine (vtype # "MIN nicht zulässig");failsum=failsum+1;fail=true;}
          if (max) {WriteLine (vtype # "MAX nicht zulässig"); failsum=failsum+1;fail=true;}
          if (vlist) {WriteLine (vtype # "VALUE_LIST nicht zulässig"); failsum=failsum+1;fail=true;}
      }
      elseif (((oID.ValueType()==4) && (oID.ValueSubType()==0)) || ((oID.ValueType()==16) && (oID.ValueSubType()==0))  ) {
      !- Zahl oder Zahl (Integer)
          if (oID.ValueType ()==4) {vtype= vtype.Replace ("qqqq","Zahl");} else {vtype= vtype.Replace ("qqqq","Integer");}
          if (bv0) {WriteLine (vtype # "BV0 nicht zulässig");failsum=failsum+1;fail=true;}
          if (bv1) {WriteLine (vtype # "BV1 nicht zulässig");failsum=failsum+1; fail=true;}
          if ((!unit) && (oID.ValueType()==4)) {WriteLine (vtype # "UNIT fehlt");failsum=failsum+1;fail=true;}
          if (!min) {WriteLine (vtype # "MIN fehlt");failsum=failsum+1;fail=true;}
          if (!max) {WriteLine (vtype # "MAX fehlt");failsum=failsum+1;fail=true; }
          if (vlist) {WriteLine (vtype # "VALUE_LIST nicht zulässig");failsum=failsum+1;fail=true;}
      }
      elseif ((oID.ValueType()==20) && (oID.ValueSubType()==11) ) {
      !- Zeichenkette
          vtype= vtype.Replace ("qqqq","Zeichenkette");
          if (bv0) {WriteLine (vtype # "BV0 nicht zulässig");failsum=failsum+1;fail=true;}
          if (bv1) {WriteLine (vtype # "BV1 nicht zulässig");failsum=failsum+1;fail=true; }
          if (!unit) {WriteLine (vtype # "UNIT fehlt");failsum=failsum+1;fail=true;}
          if (min) {WriteLine (vtype # "MIN nicht zulässig");failsum=failsum+1;fail=true;}
          if (max) {WriteLine (vtype # "MAX nicht zulässig");failsum=failsum+1;fail=true; }
          if (vlist) {WriteLine (vtype # "VALUE_LIST nicht zulässig");failsum=failsum+1;fail=true;}
      }
      elseif ((oID.ValueType()==16) && (oID.ValueSubType()==29) ) {
      !- WerteListe
          vtype= vtype.Replace ("qqqq","WerteListe");
          if (bv0) {WriteLine (vtype # "BV0 nicht zulässig");failsum=failsum+1;fail=true;}
          if (bv1) {WriteLine (vtype # "BV1 nicht zulässig");failsum=failsum+1;fail=true; }
          if (!unit) {WriteLine (vtype # "UNIT fehlt");failsum=failsum+1;fail=true;}
          if (min) {WriteLine (vtype # "MIN nicht zulässig");failsum=failsum+1;fail=true;}
          if (max) {WriteLine (vtype # "MAX nicht zulässig");failsum=failsum+1;fail=true; }
          if (!vlist) {WriteLine (vtype # "VALUE_LIST fehlt");failsum=failsum+1;fail=true;}
      }
      else {
        WriteLine ("[ID]: " # oID.ID () # " - (" # oID.Name () # ") Unbekannter SysVarType: " # oID.ValueType() # "-" # oID.ValueSubType () );
        fail=true;
      }
   }
   if (fail) {failvar=failvar+1; }
}
WriteLine ("---------------------------------");
WriteLine ("Geprüft: " #  dom.GetObject (ID_SYSTEM_VARIABLES).Count () # " Systemvariablen");
WriteLine ("Davon " # failvar # " Systemvariablen auffällig mit " # failsum # " möglichen Inkonsistenzen");
Eine mögliche Korrektur baue ich dann in das nächste Prerelease ein

Mein Testsystem zeige nach diversen Spielereien und Rumprobierereiren der letzten Monate auch folgendes Bild:

Code: Alles auswählen

Konsistenzcheck Systemvariablen
Metadaten Konsistenzcheck
Auszug aus PreRelease SDV 3.07.10
Black in 2019
---------------------------------
[ID]: 4079 - (EN_HeizAnbau) Type Logigwert - MetaData : MIN nicht zulässig
[ID]: 7072 - (ExtMuellHeute) Type Zeichenkette - MetaData : MIN nicht zulässig
[ID]: 7072 - (ExtMuellHeute) Type Zeichenkette - MetaData : MAX nicht zulässig
[ID]: 7073 - (ExtMuellMorgen) Type Zeichenkette - MetaData : MIN nicht zulässig
[ID]: 7073 - (ExtMuellMorgen) Type Zeichenkette - MetaData : MAX nicht zulässig
[ID]: 2654 - (S1) Type Zeichenkette - MetaData : VALUE_LIST nicht zulässig
[ID]: 1714 - (SV_AstroTag) Type Logigwert - MetaData : MIN nicht zulässig
[ID]: 1714 - (SV_AstroTag) Type Logigwert - MetaData : MAX nicht zulässig
[ID]: 1491 - (SYS_SafeStatus) Type Zeichenkette - MetaData : MIN nicht zulässig
[ID]: 1491 - (SYS_SafeStatus) Type Zeichenkette - MetaData : MAX nicht zulässig
[ID]: 2651 - (TEST) Type Zahl - MetaData : BV0 nicht zulässig
[ID]: 2651 - (TEST) Type Zahl - MetaData : BV1 nicht zulässig
[ID]: 2012 - (USV.ShutDown) Type Logigwert - MetaData : MIN nicht zulässig
[ID]: 2012 - (USV.ShutDown) Type Logigwert - MetaData : MAX nicht zulässig
[ID]: 1929 - (USV.System) Type Zahl - MetaData : BV0 nicht zulässig
[ID]: 1929 - (USV.System) Type Zahl - MetaData : BV1 nicht zulässig
[ID]: 1929 - (USV.System) Type Zahl - MetaData : VALUE_LIST nicht zulässig
[ID]: 8291 - (zzz) Type Logigwert - MetaData : MIN nicht zulässig
[ID]: 8291 - (zzz) Type Logigwert - MetaData : MAX nicht zulässig
---------------------------------
Geprüft: 67 Systemvariablen
Davon 10 Systemvariablen auffällig mit 19 möglichen Inkonsistenzen
Gruss, 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

Slice
Beiträge: 1200
Registriert: 03.02.2016, 14:44
System: Alternative CCU (auf Basis OCCU)
Wohnort: irgendwo aus Süd BaWü
Hat sich bedankt: 138 Mal
Danksagung erhalten: 85 Mal

Re: Systemvariablen Metadaten Konsistenzcheck

Beitrag von Slice » 20.02.2019, 11:09

Hi Black,

gerade mal bei mir ausprobiert und folgendes Ergebnis erhalten:

Code: Alles auswählen

Konsistenzcheck Systemvariablen
Metadaten Konsistenzcheck
Auszug aus PreRelease SDV 3.07.10
Black in 2019
---------------------------------
[ID]: 10467 - (aktueller_Mondstand) Type Zeichenkette - MetaData : MIN nicht zulässig
[ID]: 10467 - (aktueller_Mondstand) Type Zeichenkette - MetaData : MAX nicht zulässig
[ID]: 23951 - (Brenner Tankinhaltsdatum letzte Fuellung) Type Zeichenkette - MetaData : MIN nicht zulässig
[ID]: 23951 - (Brenner Tankinhaltsdatum letzte Fuellung) Type Zeichenkette - MetaData : MAX nicht zulässig
[ID]: 23951 - (Brenner Tankinhaltsdatum letzte Fuellung) Type Zeichenkette - MetaData : VALUE_LIST nicht zulässig
[ID]: 30428 - (Feiertag-Heute-Name) Type WerteListe - MetaData : UNIT fehlt
[ID]: 30429 - (Feiertag-Morgen-Name) Type WerteListe - MetaData : UNIT fehlt
[ID]: 22485 - (svEnergyCounter_22408_NEQ1807927:2) Type Zahl - MetaData : UNIT fehlt
[ID]: 23188 - (svEnergyCounter_23182_NEQ0863776:1) Type Zahl - MetaData : UNIT fehlt
[ID]: 23192 - (svEnergyCounter_23182_NEQ0863776:1_DEVICE_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 23190 - (svEnergyCounter_23182_NEQ0863776:1_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 23191 - (svEnergyCounter_23182_NEQ0863776:1_TMP_OLDVAL) Type Zahl - MetaData : UNIT fehlt
[ID]: 23260 - (svEnergyCounter_23249_NEQ0863776:1) Type Zahl - MetaData : UNIT fehlt
[ID]: 23264 - (svEnergyCounter_23249_NEQ0863776:1_DEVICE_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 23262 - (svEnergyCounter_23249_NEQ0863776:1_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 23263 - (svEnergyCounter_23249_NEQ0863776:1_TMP_OLDVAL) Type Zahl - MetaData : UNIT fehlt
[ID]: 23698 - (svEnergyCounter_23683_OEQ0769241:2) Type Zahl - MetaData : UNIT fehlt
[ID]: 26949 - (svEnergyCounter_26934_OEQ0770380:2) Type Zahl - MetaData : UNIT fehlt
[ID]: 29882 - (svEnergyCounter_29866_OEQ0769908:2) Type Zahl - MetaData : UNIT fehlt
[ID]: 31367 - (svEnergyCounter_31351_OEQ0769890:2) Type Zahl - MetaData : UNIT fehlt
[ID]: 33524 - (svEnergyCounter_33508_OEQ0768002:2) Type Zahl - MetaData : UNIT fehlt
[ID]: 33587 - (svEnergyCounter_33571_OEQ0767589:2) Type Zahl - MetaData : UNIT fehlt
[ID]: 23204 - (svEnergyCounterGas_23182_NEQ0863776:1) Type Zahl - MetaData : UNIT fehlt
[ID]: 23208 - (svEnergyCounterGas_23182_NEQ0863776:1_DEVICE_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 23206 - (svEnergyCounterGas_23182_NEQ0863776:1_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 23207 - (svEnergyCounterGas_23182_NEQ0863776:1_TMP_OLDVAL) Type Zahl - MetaData : UNIT fehlt
[ID]: 23276 - (svEnergyCounterGas_23249_NEQ0863776:1) Type Zahl - MetaData : UNIT fehlt
[ID]: 23280 - (svEnergyCounterGas_23249_NEQ0863776:1_DEVICE_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 23278 - (svEnergyCounterGas_23249_NEQ0863776:1_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 23279 - (svEnergyCounterGas_23249_NEQ0863776:1_TMP_OLDVAL) Type Zahl - MetaData : UNIT fehlt
[ID]: 23205 - (svEnergyCounterGasOldVal_23182) Type Zahl - MetaData : UNIT fehlt
[ID]: 23277 - (svEnergyCounterGasOldVal_23249) Type Zahl - MetaData : UNIT fehlt
[ID]: 23292 - (svEnergyCounterIEC_23249_NEQ0863776:1) Type Zahl - MetaData : UNIT fehlt
[ID]: 23293 - (svEnergyCounterIECOldVal_23249) Type Zahl - MetaData : UNIT fehlt
[ID]: 22486 - (svEnergyCounterOldVal_22408) Type Zahl - MetaData : UNIT fehlt
[ID]: 23189 - (svEnergyCounterOldVal_23182) Type Zahl - MetaData : UNIT fehlt
[ID]: 23261 - (svEnergyCounterOldVal_23249) Type Zahl - MetaData : UNIT fehlt
[ID]: 23699 - (svEnergyCounterOldVal_23683) Type Zahl - MetaData : UNIT fehlt
[ID]: 26950 - (svEnergyCounterOldVal_26934) Type Zahl - MetaData : UNIT fehlt
[ID]: 29881 - (svEnergyCounterOldVal_29866) Type Zahl - MetaData : UNIT fehlt
[ID]: 31366 - (svEnergyCounterOldVal_31351) Type Zahl - MetaData : UNIT fehlt
[ID]: 33523 - (svEnergyCounterOldVal_33508) Type Zahl - MetaData : UNIT fehlt
[ID]: 33586 - (svEnergyCounterOldVal_33571) Type Zahl - MetaData : UNIT fehlt
[ID]: 18959 - (Umwaelzpumpenmodus) Type Logigwert - MetaData : VALUE_LIST nicht zulässig
---------------------------------
Geprüft: 134 Systemvariablen
Davon 41 Systemvariablen auffällig mit 44 möglichen Inkonsistenzen
Grüße,
Slice
----------------------------------------------------------------------------------------
Raspi3B+ Bullseye mit HB-RF-ETH und RPI-RF-MOD auf piVCCU-FW 3.75.7 / Addons: CuxD v2.11 - E-Mail v1.7.6 - Patcher v1.0.0 - Philips Hue v3.2.5 - Programme drucken v2.6 - Scriptparser v1.11 - XML-API v2.3
Geräte: 141 / Kanäle: 791 / Datenpunkte: 6080 / SysVars: 275 / Programme: 161 / Regadom IDs: 14010 / 48 CUxD-Kanäle in 3 CUxD-Geräten
Intel NUC i3-5010U @ 2,1 GHz mit 16 GB RAM & 512 GB SSD für Proxmox mit ioBroker VM und CCU-Historian/InfluxDB/Grafana VM
----------------------------------------------------------------------------------------
Projekte im Forum: HomeHub v4.1 / Fritzbox-Anruferliste für HomeHub
----------------------------------------------------------------------------------------

Sven_A
Beiträge: 4152
Registriert: 26.01.2016, 08:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Renningen
Hat sich bedankt: 346 Mal
Danksagung erhalten: 281 Mal

Re: Systemvariablen Metadaten Konsistenzcheck

Beitrag von Sven_A » 20.02.2019, 11:34

Bei mir nur Variablen die eq-3 selber angelegt hat.

Code: Alles auswählen

Konsistenzcheck Systemvariablen
Metadaten Konsistenzcheck
Auszug aus PreRelease SDV 3.07.10
Black in 2019
---------------------------------
[ID]: 1334 - (svEnergyCounter_1272_LEQ0538772:2) Type Zahl - MetaData : UNIT fehlt
[ID]: 15109 - (svEnergyCounter_15103_MEQ0704045:1) Type Zahl - MetaData : UNIT fehlt
[ID]: 15113 - (svEnergyCounter_15103_MEQ0704045:1_DEVICE_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 15111 - (svEnergyCounter_15103_MEQ0704045:1_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 15112 - (svEnergyCounter_15103_MEQ0704045:1_TMP_OLDVAL) Type Zahl - MetaData : UNIT fehlt
[ID]: 15923 - (svEnergyCounter_15908_NEQ1809713:2) Type Zahl - MetaData : UNIT fehlt
[ID]: 18872 - (svEnergyCounter_18857_NEQ1807899:2) Type Zahl - MetaData : UNIT fehlt
[ID]: 18958 - (svEnergyCounter_18943_NEQ1806773:2) Type Zahl - MetaData : UNIT fehlt
[ID]: 2279 - (svEnergyCounter_2264_LEQ0927893:2) Type Zahl - MetaData : UNIT fehlt
[ID]: 6680 - (svEnergyCounter_6674_MEQ0025422:1) Type Zahl - MetaData : UNIT fehlt
[ID]: 6684 - (svEnergyCounter_6674_MEQ0025422:1_DEVICE_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 6682 - (svEnergyCounter_6674_MEQ0025422:1_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 6683 - (svEnergyCounter_6674_MEQ0025422:1_TMP_OLDVAL) Type Zahl - MetaData : UNIT fehlt
[ID]: 6758 - (svEnergyCounter_6752_MEQ0706557:1) Type Zahl - MetaData : UNIT fehlt
[ID]: 6762 - (svEnergyCounter_6752_MEQ0706557:1_DEVICE_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 6760 - (svEnergyCounter_6752_MEQ0706557:1_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 6761 - (svEnergyCounter_6752_MEQ0706557:1_TMP_OLDVAL) Type Zahl - MetaData : UNIT fehlt
[ID]: 9549 - (svEnergyCounter_9534_LEQ1316557:2) Type Zahl - MetaData : UNIT fehlt
[ID]: 15125 - (svEnergyCounterGas_15103_MEQ0704045:1) Type Zahl - MetaData : UNIT fehlt
[ID]: 15129 - (svEnergyCounterGas_15103_MEQ0704045:1_DEVICE_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 15127 - (svEnergyCounterGas_15103_MEQ0704045:1_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 15128 - (svEnergyCounterGas_15103_MEQ0704045:1_TMP_OLDVAL) Type Zahl - MetaData : UNIT fehlt
[ID]: 6696 - (svEnergyCounterGas_6674_MEQ0025422:1) Type Zahl - MetaData : UNIT fehlt
[ID]: 6700 - (svEnergyCounterGas_6674_MEQ0025422:1_DEVICE_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 6698 - (svEnergyCounterGas_6674_MEQ0025422:1_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 6699 - (svEnergyCounterGas_6674_MEQ0025422:1_TMP_OLDVAL) Type Zahl - MetaData : UNIT fehlt
[ID]: 6774 - (svEnergyCounterGas_6752_MEQ0706557:1) Type Zahl - MetaData : UNIT fehlt
[ID]: 6778 - (svEnergyCounterGas_6752_MEQ0706557:1_DEVICE_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 6776 - (svEnergyCounterGas_6752_MEQ0706557:1_RESET) Type Logigwert - MetaData : UNIT fehlt
[ID]: 6777 - (svEnergyCounterGas_6752_MEQ0706557:1_TMP_OLDVAL) Type Zahl - MetaData : UNIT fehlt
[ID]: 15126 - (svEnergyCounterGasOldVal_15103) Type Zahl - MetaData : UNIT fehlt
[ID]: 6697 - (svEnergyCounterGasOldVal_6674) Type Zahl - MetaData : UNIT fehlt
[ID]: 6775 - (svEnergyCounterGasOldVal_6752) Type Zahl - MetaData : UNIT fehlt
[ID]: 1335 - (svEnergyCounterOldVal_1272) Type Zahl - MetaData : UNIT fehlt
[ID]: 15110 - (svEnergyCounterOldVal_15103) Type Zahl - MetaData : UNIT fehlt
[ID]: 15924 - (svEnergyCounterOldVal_15908) Type Zahl - MetaData : UNIT fehlt
[ID]: 18873 - (svEnergyCounterOldVal_18857) Type Zahl - MetaData : UNIT fehlt
[ID]: 18959 - (svEnergyCounterOldVal_18943) Type Zahl - MetaData : UNIT fehlt
[ID]: 2280 - (svEnergyCounterOldVal_2264) Type Zahl - MetaData : UNIT fehlt
[ID]: 6681 - (svEnergyCounterOldVal_6674) Type Zahl - MetaData : UNIT fehlt
[ID]: 6759 - (svEnergyCounterOldVal_6752) Type Zahl - MetaData : UNIT fehlt
[ID]: 9550 - (svEnergyCounterOldVal_9534) Type Zahl - MetaData : UNIT fehlt
---------------------------------
Geprüft: 150 Systemvariablen
Davon 42 Systemvariablen auffällig mit 42 möglichen Inkonsistenzen


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

Re: Systemvariablen Metadaten Konsistenzcheck

Beitrag von Black » 20.02.2019, 11:37

joah, bei dir ist sauber, Sven...

generell war EQ3 da nicht konsequent, das sind bei dir nur die, die die internen programme selber anlegen, wenn einen Zähler anlernst...
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

Benutzeravatar
jmaus
Beiträge: 9840
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: Systemvariablen Metadaten Konsistenzcheck

Beitrag von jmaus » 20.02.2019, 11:50

Black hat geschrieben:
20.02.2019, 10:59
Als Vorarbeit für die kommende Option des SDV, auch selektiv von einzelnen oder auch allen Programmen Backups machen zu können, um die entweeder zu sichern odr beim Umzug auf ein neues System wieder einspielen zu können, ohne Klickorgien in der Klickibunti machen zu müssen,
IMHO wäre es mitunter schön und ggf. doch auch ne gute Sache wenn man solch eine Funktionalität gleich der WebUI selbst verpassen könnte. Darüber nachgedacht hatte ich schon länger. Und mit deinen Vorarbeiten jetzt sollte es doch mitunter ein leichtes sein eine solche Funktionalität in die WebUI zumindest für RaspberryMatic direkt integrieren. D.h. man könnte eine Programm download/upload Funktion bereit stellen die es einem erlaubt die Programme einzeln runterzuladen/hochzuladen. Oder siehst du da prinzipielle Probleme abgesehen davon das ggf. in Programmen referenzierte Geräte es beim späteren upload dann nicht mehr gibt usw.?!?
Black hat geschrieben:
20.02.2019, 10:59
im Vorab noch ein Auszug aus dem Prerelease des SDV, um die metadaten der Systemvariablen auf ihre Konsistenz hin prüfen zu können.
Auch hier würde ich es z.B. als sinnvoll erachten wenn man solch ein Konsistenzprüfungs bzw. dann eben das Reparaturscript für die konsistenzprüfung der Systemvariablen direkt in das Startup von ReGaHss integrieren würde. D.h. beim Start prüft dann ReGaHss z.B. selbstständig ob Systemvariablen konsistente/sinnige Metadaten aufweisen und wenn nicht repariert es diese entsprechend wo es eben geht. Was hälst du davon?
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

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

Re: Systemvariablen Metadaten Konsistenzcheck

Beitrag von Black » 20.02.2019, 12:33

hi jens, die sache mit den metadaten ist das kleinste Problem, das sollte sich recht leicht umsetzen lassen.

eine böse Falle ist aber noch, bevor man an programme herangeht, mögliche Inkonsistenzen in den SingleDestinations und Singleconditions.
hier kann reproduzierbar ein programm an der Ausführung gehindert werden. (da gabs einen Threat von mir zu)

der Reparaturmechanismus da ist etwas auswändiger, wenn überhaupt automatisiert machbar. ich bei mir wollte dies teilautomatisiert haben, Mein Programm findet die üblen Stellen mit Ursachenbeschreibung, letzte Entscheidungsinstanz dann aber der Mensch vor den Tasten.

bei einem Backup von einem programm darf dann natürlich nicht auf IseIDs bezogen werden, ich wollts als SecondPass lösen.
FirstPass: es wird überprüft, ob die entsprechend referenzierten Objecte vom Typ und Namen adressierbar und ansprechbar sind- Wenn nein, meldung und Abbruch
bei Erfolg wird Name-Value Tupel angelegt von namen - neue Ise_ID
Secondpass:
Das programm wird erzeugt, wobei die Bezüge aus dem Wertefeld Tupel geholt werden.
Als PreAlphatest läuft das bei mir, aber noch nicht so, das es streubar ist. Aufgrund der nicht ganz trivialen Logig und Abfragen dazwischen ist das allerdings in FPC geschrieben und läuft auf dem Hauptrechner. Vorbedingung ist aber, damit es sinnig einsetzbar ist, dass sich gewerke, Räume, Systemvariablen, Device und kanalnamen auch Backup bzw Restoren lassen. Das geht bei mir auch, allerdings auch da die Logik zwischen auslesen und generieren des Auf der CCU auszuführenden programmes in FPC.

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

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

Re: Systemvariablen Metadaten Konsistenzcheck

Beitrag von alchy » 20.02.2019, 13:11

Black hat geschrieben:
20.02.2019, 12:33
eine böse Falle ist aber noch, bevor man an programme herangeht, mögliche Inkonsistenzen in den SingleDestinations und Singleconditions.
hier kann reproduzierbar ein programm an der Ausführung gehindert werden. (da gabs einen Threat von mir zu)

der Reparaturmechanismus da ist etwas auswändiger, wenn überhaupt automatisiert machbar. ich bei mir wollte dies teilautomatisiert haben, Mein Programm findet die üblen Stellen mit Ursachenbeschreibung, letzte Entscheidungsinstanz dann aber der Mensch vor den Tasten.
Ursache und Wirkung :wink:
Da muss *IMHO* in erster Linie nicht repariert werden, sondern die Bugs beseitigt werden, das solche Inkonsistenzen nicht erst entstehen. Und zwar für alle User, auch die, welche eben eine originale CCU2 oder 3 besitzen.
Es hilft ja nichts, wenn dein Tool / ein Script / was auch immer das für ein paar bevorzugte User repariert und beim nächsten Bearbeiten das Programm wieder falsch ist. Thread

Gemeldet ist ein Teil (z.B. Stringvergleich als Trigger) davon schon mehrfach und gestern erhielt ich dann die Meldung, es wäre an die Entwicklungsabteilung weitergegeben wurden. Da ich Dateien usw. mit angegeben habe, welche sie sich anschauen sollten, wird da vielleicht auch was draus. Können ja auch nachfragen. Auch andere Probleme diesbezüglich können dort gleich mit abgearbeitet werden, wenn sie wollen.

Fakt ist, wenn ich hier auch wieder lese
jmaus hat geschrieben:
20.02.2019, 11:50

zumindest für RaspberryMatic direkt integrieren

schwillt mir der Kamm.
Ich sehe ein, das bestimmte Sachen ihre Zeit brauchen, aber so wie sich hier vieles darstellt ist es für mich nicht akzeptabel.

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
jmaus
Beiträge: 9840
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: Systemvariablen Metadaten Konsistenzcheck

Beitrag von jmaus » 20.02.2019, 13:40

alchy hat geschrieben:
20.02.2019, 13:11
Gemeldet ist ein Teil (z.B. Stringvergleich als Trigger) davon schon mehrfach und gestern erhielt ich dann die Meldung, es wäre an die Entwicklungsabteilung weitergegeben wurden. Da ich Dateien usw. mit angegeben habe, welche sie sich anschauen sollten, wird da vielleicht auch was draus. Können ja auch nachfragen. Auch andere Probleme diesbezüglich können dort gleich mit abgearbeitet werden, wenn sie wollen.

Fakt ist, wenn ich hier auch wieder lese
jmaus hat geschrieben:
20.02.2019, 11:50

zumindest für RaspberryMatic direkt integrieren

schwillt mir der Kamm.
Ich sehe ein, das bestimmte Sachen ihre Zeit brauchen, aber so wie sich hier vieles darstellt ist es für mich nicht akzeptabel.
Lieber Alchy, wie oft muss ich es eigentlich noch betonen/erläutern, das RaspberryMatic im Grunde die Vorversion/Vorstufe zur CCU3 Firmware (und gewisse Dinge auch für die alte CCU2 Firmware) ist? Dinge die in RaspberryMatic umgesetzt werden landen früher oder später in der CCU3 Firmware (nach reichlich Diskussion und Tests durch teilweise RaspberryMatic Nutzer und eQ3 QC Mitarbeiter). Insofern geniest RaspberryMatic "Laborfirmware"-Charakter wenn man mal es mit dem AVM Termina ausdrückt – auch wenn RaspberryMatic an sich nicht als unstable anzusehen ist. Auch dient RaspberryMatic dazu den eQ3 Verantwortlichen zu zeigen das gewisse Features und teilweise Bugfixes nicht nur von der Community so gewollt sind sondern sich auch einfach und stabil umsetzen lassen. Ein aktuelles Beispiel ist z.B. die in der neuesten 3.43.15 umgesetzten HDMI Port Abschaltung. Diese wurde im Rahmen von RaspberryMatic analysiert/umgesetzt und nun auf Grund der guten Ergebnisse eben recht schnell in die CCU3 Firmware übernommen. Hättest du dafür einfach nur ein "Ticket" bei eQ3 aufgemacht wäre dieses ggf. einfach im Rauschen untergegangen oder dir als Einzelner hätte man nicht genügend "geglaubt". Deshalb (wenn du dir mal das RaspberryMatic GitHub angeschaut hast) generiere ich grundsätzlich für jedes neue Feature/Bugfix Patches gegen die OCCU Quellen. Das erlaubt diese Patches in einfachster Art und weise den eQ3 Entwicklern vorzulegen um diese davon zu überzeugen das 1. keine äußere Sicherheitslücken dadurch eingeschleust werden und 2. die Änderung sich einfach anwenden und umsetzen lässt mit minimalem Implementierungs- und QC Aufwand (da RaspberryMatic inzwischen >15T Nutzer hat).

Insofern kannst du natürlich gerne zusätzlich deine eQ3 Tickets weiter aufmachen, darauf hoffen das diese dann bearbeitet werden und am Schluss dich wundern das dies nicht so schnell umgesetzt wurde wie du das vielleicht erhofft hast. Effektiver wäre es IMHO allerdings zumindest zusätzlich auch im RaspberryMatic GitHub ein entsprechendes Ticket/Issue aufzumachen mit den selben Informationen und wenn es dann eine Lösung gibt die z.B. auch von jemanden aus der Community kommen kann, dann ist es ein leichtes (und geht viel schneller) diese Änderung via der RaspberryMatic Patches an eQ3 zur Integrierung zu übergeben. Und bevor nun wieder das leidige Argument von Jemanden kommt "Warum sollen wir die Arbeit für eQ3 machen?", sage ich gleich dazu: "Weil es unterm Strich zu schnellerem/effektiverem Erfolg führt". Und am Beispiel RaspberryMatic <> CCU3 lässt sich sehr gut zeigen wie Zusammenarbeit funktioniert zwischen Community und Hersteller, denn ohne RaspberryMatic hätte es faktisch keine CCU3 gegeben. Ich kann daher nur weiterhin jeden dazu motivieren der auch nur ansatzweise daran interessiert ist Probleme schnell gelöst zu bekommen oder selbst Entwickler ist in Zukunft RaspberryMatic einzusetzen (egal ob unter Charly oder CCU3 Hardware betrieben). Schon jetzt beinhaltet RaspberryMatic Features und Bugfixes die vmtl. erst in ein/zwei/drei CCU3 Firmwareversionen aufgenommen werden und das schlichtweg deshalb weil die Community über mehr Entwickler verfügt oder eine höhere Entwicklungsgeschwindigkeit an den Tag legt.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

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

Re: Systemvariablen Metadaten Konsistenzcheck

Beitrag von Black » 20.02.2019, 14:14

alchy hat geschrieben:
20.02.2019, 13:11
(...)Da muss *IMHO* in erster Linie nicht repariert werden, sondern die Bugs beseitigt werden, das solche Inkonsistenzen nicht erst entstehen. Und zwar für alle User, auch die, welche eben eine originale CCU2 oder 3 besitzen. (...)
Natürlich gebe ich dir da recht, das das erste Ziel die Fehlerbeseitigung sein muss. Logisch, keine frage. Nur bis dahin beschäftige ich mich noch ein wenig mit den Leichen, die über mehrere Programmierergenerationen in diesem Konstrukt verscharrt liegen. Und wenn das eben externe Fixes sind, besser als für den Moment nix zu haben. Und wenn ich der Meinung bin , diese Fixes am besten in FPC schreiben zu können, dann mache ich das einfach.
alchy hat geschrieben:
20.02.2019, 13:11
(...)Es hilft ja nichts, wenn dein Tool / ein Script / was auch immer das für ein paar bevorzugte User repariert(...)
Sehe ich anders. Besser eine vllt nicht optimale Lösung als gar keine.

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

Xel66
Beiträge: 14147
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: Systemvariablen Metadaten Konsistenzcheck

Beitrag von Xel66 » 20.02.2019, 14:38

Black hat geschrieben:
20.02.2019, 10:59
Mich interessiert erstmal nur, wieweit solche möglichen Inkonsistenzen verbreitet sind. eine kurze Rückmeldung wäre Super
Hi Black,

auch von mir eine Rückmeldung für Dein Inkonsistenzscript. Das Ergebnis:

Code: Alles auswählen

Geprüft: 189 Systemvariablen
Davon 26 Systemvariablen auffällig mit 26 möglichen Inkonsistenzen
Das gleiche Bild wie bei Sven_A. Es sind ausschließlich die von den Meßaktoren und Zählersensoren angelegten Systemvariablen "svEnergyCounter..." betroffen.

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

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“