GeisterChannelbezüge in Systemvariablen

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Benutzeravatar
Black
Beiträge: 2039
Registriert: 12.09.2015, 22:31
Wohnort: Wegberg
Hat sich bedankt: 10 Mal
Danksagung erhalten: 31 Mal
Kontaktdaten:

GeisterChannelbezüge in Systemvariablen

Beitrag von Black » 05.04.2019, 12:31

SystemVariablen können Kanälen zugewiesen werden. Allerdings kann es dann auch vorkommen, wenn diese Kanäle dann gelöscht werden, dass sich die Verweise auf das gelöschte Object oder andere ungültige Objecte immer noch in den Systemvariablen befindet. Die ist eine mögliche Quelle für Inkonsistenzen oder andere Irritationen.

Das existiert seit ewig, bekannt sind mir die folgenden Quellen (ohne Anspruch auf Vollzähligkeit)

teddy278 - User gelöscht, auch alle Beiträge gelöscht - Programmquellen auch gelöscht, ausser der tatsache , das das Thema von ihm angerissen wurde, wenig bekannt

badenpower - User gelöscht, Programmquellen nicht auffindbar oder gelöscht,
Badenpowers HM-Investigator kann diese GeisterChannelbezüge auch aufspüren und beseitigen

Black - SDV (auch schon die alte 2er Version ) kann dieses auch aufspüren und beseitigen,
zum aufspüren, ob so ein Geisterbezug existiert, dieses kleine Script, welches von jedem ausgeführt werden kann (und fast identisch auch auf dem SDV läuft)

Code: Alles auswählen

WriteLine ("KonsistenzCheck Systemvariablen Channelbezug");
WriteLine ("Überprüft auf gültigen Channelbezug");
WriteLine ("Black in 2019");
WriteLine ("-----------------------------------------");
object oChan;
object oID;
string sID;
integer nErr=0;
string sList="";
string sCorr="";
foreach (sID,dom.GetObject (ID_SYSTEM_VARIABLES).EnumIDs () ) {
  oID= dom.GetObject (sID);
  if (oID) {
     if (oID.Channel () != ID_ERROR) {
        oChan= dom.GetObject (oID.Channel () );
        if (oChan) {
           if (oChan.Type() != OT_CHANNEL) {
              WriteLine ("[ID: " # oID.ID ()# "] \""#oID.Name() # "\" Channel verweist auf falschen Objekttyp (ID: "#oID.Channel () # " - " # oChan.TypeName () # ")" # sCorr);
              sList=sList # oID.ID () # "\t";
              nErr=nErr+1;
           }
        } else {
           WriteLine ("[ID: " # oID.ID ()# "] \""#oID.Name() # "\" Channel verweist auf nicht exisierendes Object (ID: "#oID.Channel () # ")" # sCorr);
           sList=sList # oID.ID () # "\t";
           nErr=nErr+1;
        }
     }
  }
}
if (nErr!=0) {WriteLine ("-----------------------------------------"); }
WriteLine ("Geprüft: " #  dom.GetObject (ID_SYSTEM_VARIABLES).Count () # " Systemvariablen");
WriteLine ("Davon " # nErr # " Systemvariablen mit inkorrektem Bezug in Channel () ");
sList=sList.Trim ();    
gruss, Black
Zuletzt geändert von Black am 05.04.2019, 12:58, insgesamt 1-mal geändert.
Die Wahrheit ist ein Chor aus Wind
Meine Seite, ok noch bisschen im Aufbau

RaspberryMatic 3.47.18.20190918 mit Groundplane Antennenmod und depatchter Favoritensortierung
jede Menge Sensoren und Aktoren, Logamatic 2107 Gateway zum Buderus Kessel
ioBroker unter ProxMox auf NUC als Hauptsteuersystem und Visualisierung
Script Time Scheduler V1.3
SDV 3.09.01 Scripteditor und Objektinspektor

Benutzeravatar
jmaus
Beiträge: 5042
Registriert: 17.02.2015, 14:45
Wohnort: Dresden
Hat sich bedankt: 6 Mal
Danksagung erhalten: 81 Mal
Kontaktdaten:

Re: GeisterChannelbezüge in Systemvariablen

Beitrag von jmaus » 05.04.2019, 12:37

Danke für diesen Beitrag. Wenn du mir den noch in ein entsprechendes GitHub Ticket im RaspberryMatic Projekt wandelst kann ich diese Aufräumaktion gerne wie die frühere "Geistervariablen" Aufräummethodik direkt in ReGaHss integrieren sodass ReGa hier nicht nur beim Löschen von Kanälen automatisch alle Systemvariablen nach solchen Links durchsucht und dann entsprechend eliminiert, sondern ich kann diese Inkonsistenzen auch gleich bei jedem Start von ReGa überprüfen und entsprechend aufräumen lassen.
RaspberryMatic 3.47.18.20190918 @ TinkerS mit ~160 HomeMatic Geräten + ioBroker – GitHubPayPalTwitter

Benutzeravatar
jmaus
Beiträge: 5042
Registriert: 17.02.2015, 14:45
Wohnort: Dresden
Hat sich bedankt: 6 Mal
Danksagung erhalten: 81 Mal
Kontaktdaten:

Re: GeisterChannelbezüge in Systemvariablen

Beitrag von jmaus » 11.04.2019, 10:41

Hier nur der kurze Hinweis das ich inzwischen das Problem direkt in der ReGaHss (Version R1.00.0388.0207) repariert habe. Beim entfernen eines Kanals werden nun automatisch alle Channel() Bezüge auf diesen Kanal in sämtlichen Systemvariablen gelöscht. Es sollte also mit einem der nächsten kommenden Firmwareupdates nicht mehr zu diesen (wenn auch geringfügigen) Inkonsistenzen kommen.

Und falls euch noch mehr solcher Inkonsistenzen auffallen die mit der aktuellen ReGaHss noch möglich sind dann bitte her mit solchen Beispielen, denn dann lässt sich das leichter/schneller von mir beseitigen.
RaspberryMatic 3.47.18.20190918 @ TinkerS mit ~160 HomeMatic Geräten + ioBroker – GitHubPayPalTwitter

Benutzeravatar
Black
Beiträge: 2039
Registriert: 12.09.2015, 22:31
Wohnort: Wegberg
Hat sich bedankt: 10 Mal
Danksagung erhalten: 31 Mal
Kontaktdaten:

Re: GeisterChannelbezüge in Systemvariablen

Beitrag von Black » 11.04.2019, 12:16

sehr gut...
Die Wahrheit ist ein Chor aus Wind
Meine Seite, ok noch bisschen im Aufbau

RaspberryMatic 3.47.18.20190918 mit Groundplane Antennenmod und depatchter Favoritensortierung
jede Menge Sensoren und Aktoren, Logamatic 2107 Gateway zum Buderus Kessel
ioBroker unter ProxMox auf NUC als Hauptsteuersystem und Visualisierung
Script Time Scheduler V1.3
SDV 3.09.01 Scripteditor und Objektinspektor

Benutzeravatar
koppenho
Beiträge: 221
Registriert: 27.12.2013, 09:12
Wohnort: Bad Neustadt, Deutschland

Re: GeisterChannelbezüge in Systemvariablen

Beitrag von koppenho » 02.06.2019, 16:44

jmaus hat geschrieben:
11.04.2019, 10:41
Und falls euch noch mehr solcher Inkonsistenzen auffallen die mit der aktuellen ReGaHss noch möglich sind dann bitte her mit solchen Beispielen, denn dann lässt sich das leichter/schneller von mir beseitigen.
Ich kenne da noch eine Inkonsistenz, die auch schon viele Jahre im System schlummert. Ich habe sie hier beschrieben:
viewtopic.php?f=34&t=45786
Nachdem ich heute meinen damaligen Artikel nochmal gelesen habe, bemerkte ich, dass der finale Screenshot, der den Fehler aufzeigen sollte, nicht der richtige war. Blöder Fehler. Deshalb waren damals die Kommentare zu meinem Artikel auch am Thema vorbei bzw. mein Artikel fand zu wenig Beachtung.

Es geht um Systemvariablen mit Kanalbindung, die in WebUI-Programmen verwendet werden.
Hebt man die Bindung auf oder verknüpft dieselbe SV mit einen anderen Kanal, werden die WebUI-Programme zerstört/unbrauchbar, in denen die SV verwendet wird.

Ich kann derzeit leider nicht prüfen, ob das Zuordnungsproblem mit der aktuellen Version von RasperryMatic noch auftritt. Die Situation lässt sich aber leicht reproduzieren anhand der Beispiele aus meinem Artikel.
Zuletzt geändert von koppenho am 02.06.2019, 17:03, insgesamt 2-mal geändert.
--
Andreas
--------------------------------------------
Hauptwohnung: RaspberryMatic mit 288 Kanäle in 100 Geräten und 132 CUxD-Kanäle in 32 CUxD-Geräten
Zweitwohnung: CCU2 mit 16 Kanäle in 6 Geräten und 12 CUxD-Kanäle in 4 CUxD-Geräten
--------------------------------------------

nicolas-eric
Beiträge: 3174
Registriert: 07.01.2015, 23:26
Wohnort: Scheeßel
Hat sich bedankt: 9 Mal
Danksagung erhalten: 5 Mal

Re: GeisterChannelbezüge in Systemvariablen

Beitrag von nicolas-eric » 02.06.2019, 16:55

Super!

Aber machst Du Dir keine Sorgen, dass Du als Dritter in der Liste, der sich mit dem Thema befasst, nicht auch bald aus dem Forum gelöscht wirst? :shock:
Nicht dass da noch ein Zusammenhang besteht... 8)

Benutzeravatar
Black
Beiträge: 2039
Registriert: 12.09.2015, 22:31
Wohnort: Wegberg
Hat sich bedankt: 10 Mal
Danksagung erhalten: 31 Mal
Kontaktdaten:

Re: GeisterChannelbezüge in Systemvariablen

Beitrag von Black » 02.06.2019, 17:39

Ein sehr interessaner Effekt. ^^

geprüft gerade mit aktueller raspberrymatik. Als Hilfsmittel den SDV, um ein bischen hinter die ProgrammObjekte zu gucken.

also. Gemacht wie Koppenho.

Systemvariable mit Kanalbezug angelegt, diese in einem KickiBunti Programm als trigger:
alles Harmlos und gut.

im SDV sieht die SingleCondition dazu so aus:
SVX.jpg
dann den Kanalbezug der Sysvar aufgehoben.

im SDV sieht die SCND immer noch so aus:
SVX.jpg
keine änderung, immer noch Bezug auf ivtObjectID und die Systemvariable.

in der WebUI aber ein anderes Bild:
SVx2.jpg
Die gesagt das gleiche programm, die WebUi zeigt hier was anderes an als das was in den rega Objekten steht.
das ist schon al ein BUG
(speichern nutzt übrigens nix, das gespeichert ergibt:
SVX.jpg
wieder en bezug auf ivtObjectID und die Systemvariable.

erst wenn ich vorne geräteauswahl änder, anderes object, dann wieder den sensor und dann gekoppt anwaähle un dspeicher, erst dann kommt es in auch in die Objekte.
SVx3.jpg
Interessanter Effekt.

Für einen kosistenzcheck habe ich da schon die Idee, bei einer Systemvariable ohne Kanalbezug mus da ivtSystemID stehen und nicht ivtObjectID.
also könnte da ein Kosistenzcheck bei ansetzen.

traue der WebUI nur soweit, wie du das tablett werfen kannst ^^

gruss, Black


(ich konnte schreiben, also bin ich noch nicht gelöscht ^^)
Die Wahrheit ist ein Chor aus Wind
Meine Seite, ok noch bisschen im Aufbau

RaspberryMatic 3.47.18.20190918 mit Groundplane Antennenmod und depatchter Favoritensortierung
jede Menge Sensoren und Aktoren, Logamatic 2107 Gateway zum Buderus Kessel
ioBroker unter ProxMox auf NUC als Hauptsteuersystem und Visualisierung
Script Time Scheduler V1.3
SDV 3.09.01 Scripteditor und Objektinspektor

Benutzeravatar
koppenho
Beiträge: 221
Registriert: 27.12.2013, 09:12
Wohnort: Bad Neustadt, Deutschland

Re: GeisterChannelbezüge in Systemvariablen

Beitrag von koppenho » 02.06.2019, 17:48

nicolas-eric hat geschrieben:
02.06.2019, 16:55
Super!

Aber machst Du Dir keine Sorgen, dass Du als Dritter in der Liste, der sich mit dem Thema befasst, nicht auch bald aus dem Forum gelöscht wirst? :shock:
Nicht dass da noch ein Zusammenhang besteht... 8)
Oha, wir haben einen Verschwörungstheoretiker unter uns.
Und nein, ich glaube, dass Neil Armstrong tatsächlich auf dem Mond war.
--
Andreas
--------------------------------------------
Hauptwohnung: RaspberryMatic mit 288 Kanäle in 100 Geräten und 132 CUxD-Kanäle in 32 CUxD-Geräten
Zweitwohnung: CCU2 mit 16 Kanäle in 6 Geräten und 12 CUxD-Kanäle in 4 CUxD-Geräten
--------------------------------------------

Benutzeravatar
Black
Beiträge: 2039
Registriert: 12.09.2015, 22:31
Wohnort: Wegberg
Hat sich bedankt: 10 Mal
Danksagung erhalten: 31 Mal
Kontaktdaten:

Re: GeisterChannelbezüge in Systemvariablen

Beitrag von Black » 02.06.2019, 18:10

OT Modus ON
joah, zu der zeit schaffte es auch der aus 32 KWord ROM und 4 KWords Ram bestehende AGC nebenbei als kleines Unterprogramm die ca 120 Millionen PS der 5 Rocketdyne F1 Triebwerke der Saturn-V in stabiler Fluglageregelung in Richtung Mond zu beschleunigen.

Wenn EQ3 damals mit ihrem QM-Managment auch nur ein teil für die Saturn-V gebaut hätte, das Dingen hätte es nicht in einem Stück heil von der Startrampe geschafft.

OT Modus OFF
Die Wahrheit ist ein Chor aus Wind
Meine Seite, ok noch bisschen im Aufbau

RaspberryMatic 3.47.18.20190918 mit Groundplane Antennenmod und depatchter Favoritensortierung
jede Menge Sensoren und Aktoren, Logamatic 2107 Gateway zum Buderus Kessel
ioBroker unter ProxMox auf NUC als Hauptsteuersystem und Visualisierung
Script Time Scheduler V1.3
SDV 3.09.01 Scripteditor und Objektinspektor

Benutzeravatar
Black
Beiträge: 2039
Registriert: 12.09.2015, 22:31
Wohnort: Wegberg
Hat sich bedankt: 10 Mal
Danksagung erhalten: 31 Mal
Kontaktdaten:

Re: GeisterChannelbezüge in Systemvariablen

Beitrag von Black » 03.06.2019, 09:09

Ok, nu wieder ein OnTopic beitrag:

Problematkc entsteht dadaruch, das dadurch, dass sie systemvariable ihre eigenschaft der zuordnung zu einem Grätechannel verliert (normalerweise ist eine Systemvariable ivtSystemID, sobald sie einem Channel zugehörig ist, ist sie ictObjectID wie ein normaler HSSDP auch.

anhand dieser beiden ivts uznterscheidet die WebUI Geräteauswahl oder Systemvariablenauswahl.

Wenn die Vorher dem Kanal zugehöre Systemvariable als ivtObjectID unter DP´s dem Gerät zugeortnet werden konnte, fällt diese zuordnung nun hinten rüber, wenn die Kanalzuweisung weg ist und die WebUI zeit, da immer noch ivtObjectID gültif ist, den ersten möglichen HSSDP Datenpunkt an. Leider ist das natürlich Müll, da intern die Objectructur etwas anderes sagt (und das Programm so auch immer noch funktionieren würde mit der Systemvariablen)

Eigentlich istdies ein ProgrammKonsistenzcheck.

ich kanns natürlich (hab ich sogar schon als test) für den SDV ausprogrammieren, aber davon hat nur eine Anzahl x der User was von.

Black
Die Wahrheit ist ein Chor aus Wind
Meine Seite, ok noch bisschen im Aufbau

RaspberryMatic 3.47.18.20190918 mit Groundplane Antennenmod und depatchter Favoritensortierung
jede Menge Sensoren und Aktoren, Logamatic 2107 Gateway zum Buderus Kessel
ioBroker unter ProxMox auf NUC als Hauptsteuersystem und Visualisierung
Script Time Scheduler V1.3
SDV 3.09.01 Scripteditor und Objektinspektor

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“