ReGaHss-Inkonsistenzen bzgl. DP ValueType() vs MIN/MAX MetaDaten

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

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

Re: ReGaHss-Inkonsistenzen bzgl. DP ValueType() vs MIN/MAX MetaDaten

Beitrag von jmaus » 21.01.2023, 09:21

jp112sdl hat geschrieben:
21.01.2023, 08:09
jmaus hat geschrieben:
20.01.2023, 19:12
entsprechend in der WebUI angepasst werden das beim wechsel der Systemvariablen in ein Integer-type bzw. anderen type auch die MIN/MAX Metadatenwerte entsprechend mit geändert werden.
Quasi hier?
https://github.com/eq-3/occu/blob/maste ... #L813-L844

Müsste dann wohl mit in 0097 rein, weil der Patch den betreffenden Block schon modifiziert
Genau. Am besten sollte man dann auch gleich noch testen welche metadaten es sonst noch so gibt die ggf resettet gehören bei einem wechsel und das typ unabhängig. Denn eine zeichenketten sysvar braucht ja z.b. gar kein min/max und dann muss das halt weg. Bastelst du da ein PR?
RaspberryMatic 3.69.7.20230506 @ Proxmox – ~195 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker – GitHub / Twitter / Facebook / Sponsors

jp112sdl
Beiträge: 11670
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 800 Mal
Danksagung erhalten: 1996 Mal
Kontaktdaten:

Re: ReGaHss-Inkonsistenzen bzgl. DP ValueType() vs MIN/MAX MetaDaten

Beitrag von jp112sdl » 21.01.2023, 13:00

jmaus hat geschrieben:
21.01.2023, 09:21
Bastelst du da ein PR?
Würde ich, aber vorher solltest du festlegen, welche Werte für MIN und MAX je nach SV-Typ gesetzt werden sollten.

An sich ist es wohl nur der Variablentyp "Zahl", bei dem man überhaupt einen ValueMin und einen ValueMax (in der WebUI) definieren kann.
Für alle anderen Typen könnte grundsätzlich obj.ValueMin=null;obj.ValueMax=null; stehen.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

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

Re: ReGaHss-Inkonsistenzen bzgl. DP ValueType() vs MIN/MAX MetaDaten

Beitrag von Black » 21.01.2023, 13:07

Wechsel des types der sysvar z.b. muss auch zu Anpassungen in den singleconditions führen, in denen die verwendet wird.

Ist sonst einer der Gründe weshalb webui Programme dann nicht mehr triggern

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 4.09.04F 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

Silverstar
Beiträge: 189
Registriert: 11.02.2020, 12:14
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 47 Mal
Danksagung erhalten: 30 Mal

Re: ReGaHss-Inkonsistenzen bzgl. DP ValueType() vs MIN/MAX MetaDaten

Beitrag von Silverstar » 21.01.2023, 15:50

Wäre es dann nicht sinnvoller, das Ändern der Variablen ganz zu streichen? Ob ich eine Variable ändere oder (lösche und) neu anlege, macht kaum einen Unterschied.

Ein Vorteil, dass die ja im Programm bleibt wenn man sie nur ändert, sehe ich nicht. Muss das Programm ja eh ändern, wenn ich nun z.B. von Helligkeit >200 auf Helligkeit "wahr" wechsel.

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

Re: ReGaHss-Inkonsistenzen bzgl. DP ValueType() vs MIN/MAX MetaDaten

Beitrag von jmaus » 21.01.2023, 19:52

Silverstar hat geschrieben:
21.01.2023, 15:50
Wäre es dann nicht sinnvoller, das Ändern der Variablen ganz zu streichen? Ob ich eine Variable ändere oder (lösche und) neu anlege, macht kaum einen Unterschied.
Prinzipiell geb ich dir da recht. Aber das Feature würde ich jetzt nicht einfach streichen wollen, gerade auch weil man ja nicht jede Systemvariable nun in einem WebUI Programm nutzt und da es durchaus gut/sinnvoll sein kann wenn man da einfach den Typ ändern kann ohne das sich die ISEid ändert. Ich würde eher dafür plädieren einen Check einzubauen ob die SysVar in einem Programm verwendet wird und dann eine Warnung ausspucken wenn das so ist.
RaspberryMatic 3.69.7.20230506 @ Proxmox – ~195 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker – GitHub / Twitter / Facebook / Sponsors

MichaelN
Beiträge: 8029
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 601 Mal
Danksagung erhalten: 1312 Mal

Re: ReGaHss-Inkonsistenzen bzgl. DP ValueType() vs MIN/MAX MetaDaten

Beitrag von MichaelN » 21.01.2023, 20:02

Es sollte aber doch nicht viel aufwendiger sein gleich die Programme zu korrigieren. Ich glaube den Code dafür bekomme sogar ich noch hin.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

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

Re: ReGaHss-Inkonsistenzen bzgl. DP ValueType() vs MIN/MAX MetaDaten

Beitrag von jmaus » 21.01.2023, 20:54

MichaelN hat geschrieben:
21.01.2023, 20:02
Es sollte aber doch nicht viel aufwendiger sein gleich die Programme zu korrigieren. Ich glaube den Code dafür bekomme sogar ich noch hin.
Na dann her mit dem PR :mrgreen:
RaspberryMatic 3.69.7.20230506 @ Proxmox – ~195 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker – GitHub / Twitter / Facebook / Sponsors

MichaelN
Beiträge: 8029
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 601 Mal
Danksagung erhalten: 1312 Mal

Re: ReGaHss-Inkonsistenzen bzgl. DP ValueType() vs MIN/MAX MetaDaten

Beitrag von MichaelN » 22.01.2023, 16:15

jmaus hat geschrieben:
21.01.2023, 20:54
Na dann her mit dem PR
Mit der Github-Bürokratie stehe ich immer noch auf Kriegsfuß. Ich habe mein bestes gegeben: https://github.com/jens-maus/RaspberryMatic/pull/2183

Folgender Code eingefügt in system.fn in Zeile https://github.com/eq-3/occu/blob/18bbb ... em.fn#L851

Code: Alles auswählen

string SingleCond; object SingleCondObjekt;
foreach(SingleCond,dom.GetObject(ID_SCONDITIONS).EnumIDs() ){
	SingleCondObjekt = dom.GetObject(SingleCond);
    if (SingleCondObjekt) {
    	if (((SingleCondObjekt.LeftVal() == sv.ID() ) && (SingleCondObjekt.LeftValType()== ivtSystemId ) )) {
                     if ((ist == istAlarm) || (ist == istBool)) {
                     	SingleCondObjekt.ConditionType(1);
                     	SingleCondObjekt.RightVal1ValType(ivtBinary); SingleCondObjekt.RightVal1(false);
                     	SingleCondObjekt.RightVal2ValType(ivtBinary); SingleCondObjekt.RightVal2(false);
                    } elseif (ist == istGeneric) {
                     	SingleCondObjekt.ConditionType(8);
                     	SingleCondObjekt.RightVal1ValType(ivtFloat); SingleCondObjekt.RightVal1(system.GetVar("iMinVal"));
                     	SingleCondObjekt.RightVal2ValType(ivtFloat); SingleCondObjekt.RightVal2(0.0);
                    } elseif (ist == istEnum) {
                     	SingleCondObjekt.ConditionType(1);
                     	SingleCondObjekt.RightVal1ValType(ivtInteger); SingleCondObjekt.RightVal1(0);
                     	SingleCondObjekt.RightVal2ValType(ivtInteger); SingleCondObjekt.RightVal2(0);
                    } elseif (ist == istChar8859) {
                     	SingleCondObjekt.ConditionType(1);
                     	SingleCondObjekt.RightVal1ValType(ivtString); SingleCondObjekt.RightVal1("");
                     	SingleCondObjekt.RightVal2ValType(ivtString); SingleCondObjekt.RightVal2("");
                    }
        }
    }
}
passt die SingleConditions ordnungsgemäß an den neuen Variablentyp an. Bei Zahlen wird der definierte Min-Wert berücksichtigt.
Getestet mit FW 3.67.10.20230119


Programm vorher:
vor der Korrektur.JPG
Programm nach dem Ändern der Systemvariable auf Typ Zahl
nach der Korrektur.JPG
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

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

Re: ReGaHss-Inkonsistenzen bzgl. DP ValueType() vs MIN/MAX MetaDaten

Beitrag von jmaus » 25.01.2023, 23:11

Hier nur kurz die Nachinfo das ich inzwischen die entsprechenden Änderungen in der WebUI bzw. im hm_startup file von ReGaHss umgesetzt habe um die Datentyp overflow/underflow Probleme zu lösen die dazu geführt haben das 1. die TIME_OF_OPERATION Datenpunkte bei einem HmIP-SWSD nicht die korrekten Werte zurückgeliefert hat und 2. auch die RSSI_XXXXX Datenpunkte innerhalb von ReGaHss die RSSI Werte immer positiv ausgegeben haben und man die immer via subtrahieren von 256 auf den korrekten Wert zu schieben der via XMLRPC aber korrekt ausgegeben wurde. Siehe hier:

https://github.com/jens-maus/RaspberryM ... 933592d231

Diese Anpassungen sollte diese Probleme meinen Tests nach nun beseitigen. Es fehlt jetzt nur noch die entsprechende ReGaHss Änderung das der korrekte Datentyp schon beim Anlernen eines Gerätes für alle Datenpunkte korrekt gesetzt wird und nicht für RSSI_XXX und TIME_OF_OPERATION standardmäßig auf ivtByte gesetzt wird (was eben falsch war). Diese Änderung wird aber demnächst kommen.

Für interessierte Tester die einen HmIP-SWSD haben oder sich schon immer gewundert haben warum die RSSI_XXXX Datenpunkte die RSSI Werte nie im Minusbereich ausgegeben hatte sollte mit dem nächsten nightly snapshot diese Probleme beseitigt sein. Gerne bitte schön breit testen und einfach mal testen ob die RSSI Werte nun passen und auch die Ausgabe/Anzeige des TIME_OF_OPERATION Datenpunktes nun passt.

Auch sollte nach dem ersten Starten mit der neuen nightly snapshot dann der folgende ReGa-Skript keinerlei HSSDP Datenpunkt mehr anzeigen der dem ivtByte Datenpunkt zugeordnet ist:

Code: Alles auswählen

WriteLine("Searching for invalid ivtByte typed HSSDPs:");
string sDP;
foreach(sDP, dom.GetObject(ID_DATAPOINTS).EnumIDs()) {
  object obj = dom.GetObject(sDP.ToInteger());
  if((obj) && (obj.Type() == OT_HSSDP) && (obj.ValueType() == ivtByte)) {
    WriteLine(obj.ID() # " - " # obj.ValueType() # "/" # obj.ValueSubType() # " - " # obj.Name() # " - " # obj.Value() # " MIN:" # obj.ValueMin() # " MAX: " # obj.ValueMax());
    ! obj.ValueType(ivtInteger);
    ! obj.ValueSubType(istGeneric);
  }
}
WriteLine("DONE");
RaspberryMatic 3.69.7.20230506 @ Proxmox – ~195 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker – GitHub / Twitter / Facebook / Sponsors

Henke
Beiträge: 822
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 96 Mal
Danksagung erhalten: 147 Mal

Re: ReGaHss-Inkonsistenzen bzgl. DP ValueType() vs MIN/MAX MetaDaten

Beitrag von Henke » 25.01.2023, 23:35

Code: Alles auswählen

WriteLine("Searching for invalid ivtByte typed HSSDPs:")
fehlt am Ende das ";"
jmaus hat geschrieben:
25.01.2023, 23:11
keinerlei HSSDP Datenpunkt mehr anzeigen der dem ivtByte Datenpunkt zugeordnet ist:
Was ist mit dem folgendem Datenpunkten:

Code: Alles auswählen

1504 - 8/24 - HmIP-RF.0010DD899E5483:0.ERROR_CODE - 0 MIN:0 MAX: 255
3115 - 8/24 - VirtualDevices.INT0000002:0.ERROR_CODE - 0 MIN:0 MAX: 255

Antworten

Zurück zu „RaspberryMatic“