Tutorial Programme testen / debuggen mit dem SDV

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

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

Tutorial Programme testen / debuggen mit dem SDV

Beitrag von Black » 29.03.2020, 13:13

mit der aktuellen Version wurden die ziemlich weitreichen test und Eingriffsmöglichkeiten auch für niedrigere lizenzlevel freigeben. Da ich schon einige PN Anfragen bezüglich der Möglichkeiten dazu hatte, nun mal eine allgemeine Anleitung für die breite Masse. Die Stammtischmitglieder kannten diese Möglichkeiten ja schon seit langem.

Ansatz.

Man hat ein WebUI programm geschrieben und möchte dieses nun testen in Realumgebung, also mit den Geräten etc. Wenn man nun Dinge testen möchte wie z.B helligkeiten, temperaturen, Luftfeuchtigkeiten und vieles mehr war oft der weg, entweder warten bis sich einentsprechendes Scenario einstellt, den geräten mit feuchtigkeit, Heissluftfön etc zu Leibe rücken, sämtliche Wete über Systevariablen zwischenkoppeln (so die allgemein üblcihen Lösungswege)

Es gibt noch einen anderen, eigentlich ist dieser sogar von EQ3 dokumentiert (offizielle xmlrpc Dokumentation, Kapitel 5.1 methoden der Logigschicht - event. also keine Geheimnisse, an die man nur mit einem Disassembler kommt oder die man hüten müsste wie die Abschusscodes von Atomraketen :wink: über diese Logigschicht methode teilen die Schnittstellenprozesse der Rega änderungen ihrer Zustände mit. Und das ist dann der Punkt an dem sich der SDV auch einklinkt.

Anwender des SDV kannten ja schon die Möglichkeiten Datenpunkte oder Systemvariablen mit der Eigenschaft operation_write mit dem SDV zu verändern.

change.JPG
Die Systemvariable bzw der Datenpunkt kann so einfach geändrt werden zum testen. Das ist auch nicht so die grosse Schwierigkeit. interessant wird nun, ich möchte ein programm schreiben, welches mit bei Änderung der Luftfeuchtigkeit eines WT2 auf mehr als 80 prozent ein programm triggert

Eigentlich ein kleines WebUI programm nun, um dies zu demonstrieren.
programm.JPG

Nun wollen wir allerdings die Funktion dieses Programmes prüfen. Dazu müssen wir den Humidity Datenpunkte ändern. Der Datenpunkt Humidity ist allerdings einoperation_read, operation_event, also kein Datenpunkt, den wir mit state oder value irgendwie geändert bekommen. trotzdem lässt sich im SDV nun dieser Datenpunkt bei Value anwählen und editieren:

wir wollen testen, also stellen wir anstatt der gemessenen 42% nun mal 84% ein und sagen Wert übernehmen. Die Funktion Des SDv erkennt selbsständig, ob dieses ein Datenunkt ist der sich normal über .State () oder .Value () umschreibenlässt, oder aber ob der etwas brutalere weg über xmlrpc.event zu nehmen ist.
change2.JPG


ein Blick in die WebUi verrät uns: die rega hatte die zwangsweise untergeschobenen Daten übernommen
change4.JPG


wir konnten sehen, das programm hatte getriggert:
change3.JPG

der Zustand bleibt natürlich so lange bestehen bis... logischerweise der xmlrpc process über den gleichen Weg der rega ein neues messergebnis mitteilt. es ist ja der gleiche Weg. Allerdings lassen sich so sämtliche Datenpunkte der rega setzen bzw verbiegen. Auch zum testen von Systemmeldungen auf dem Channel:0 funktioniert diese Vorhehensweise. Wenn einer beospielsweise Scripte für Kommunikationsstörungen etc schreibt, so kann man auf dem Wege zum testen Störungen setzen und auch wieder wegnehmen.

Logischerweise hier der Einwurf:
Das ist kein Spielzeug um irgendwelche Störungen wegzuklicken (geht) oder wahllos irgendwelche Daten zu setzen (geht auch) sondern um Sinnvoll mit der CCU zu arbeiten bzw programme zu testen oder fehler zu suchen und zu simulieren. Aus dem Grunde war diese Funktion früher auch höhereren leveln vorbehalten.

und: ein zwangsumschreiben der rega auf dem weg wirkt sich nicht auf den xmlrpc aus, ein IObroker z.b. bekommt von der IchÄnderEinenDatapointperEvent nix mit, da IOBroker direkt auf den RPC prozess aufsetzz und von diesem die direkten daten geliefert bekommt.

Black
Zuletzt geändert von Black am 30.03.2020, 09:22, insgesamt 7-mal geändert.
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
Black
Beiträge: 5552
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 435 Mal
Danksagung erhalten: 1097 Mal
Kontaktdaten:

Re: Tutorial Programme testen / debuggen mit dem SDV

Beitrag von Black » 29.03.2020, 13:16

Platzhalter

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

dtp
Beiträge: 10685
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 330 Mal
Danksagung erhalten: 507 Mal

Re: Tutorial Programme testen / debuggen mit dem SDV

Beitrag von dtp » 11.04.2020, 15:44

Sehr interessante Funktion um z.B. $src$-Werte abzufragen. Ich habe aber das Problem, dass mir bei der Versin 3.11.01 nirgendwo ein Value der entsprechenden Kanäle angezeigt wird. Mache ich da was falsch?
2020-04-11_15h45_58.png
Und noch was. Wäre es irgendwie möglich, einen Filter für ein bestimmtes auszuführendes Programm zu setzen? Wenn ich ansonsten einen Gerätewert ändere, dann werden ja sämtliche Programme getriggert, für die die Bedingung erfüllt ist, was unter Umständen zu ungewollten Reaktionen führen kann.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

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

Re: Tutorial Programme testen / debuggen mit dem SDV

Beitrag von Baxxy » 11.04.2020, 16:05

dtp hat geschrieben:
11.04.2020, 15:44
nirgendwo ein Value der entsprechenden Kanäle angezeigt wird. Mache ich da was falsch?
Ich gehe da anders ran.
1. Rechts mit ID_DEVICES alle Geräte anzeigen lassen.
2. Das gewünschte Gerät mit rechts anklicken und "Device auflösen in Channels und HSSDPs" wählen
3. Den gewünschten Datenpunkt selektieren.

Dann sollte links irgendwo Value auftauchen.

Grüße
Baxxy

dtp
Beiträge: 10685
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 330 Mal
Danksagung erhalten: 507 Mal

Re: Tutorial Programme testen / debuggen mit dem SDV

Beitrag von dtp » 11.04.2020, 16:56

Ah. Danke. So geht's.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

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

Re: Tutorial Programme testen / debuggen mit dem SDV

Beitrag von Black » 12.04.2020, 15:29

dtp hat geschrieben:
11.04.2020, 15:44
Sehr interessante Funktion um z.B. $src$-Werte abzufragen. Ich habe aber das Problem, dass mir bei der Versin 3.11.01 nirgendwo ein Value der entsprechenden Kanäle angezeigt wird. Mache ich da was falsch? (...)
Alternativ geht noch: ein gerät selektieren, dann der dritte button von unten (ein programm löst er in seine Conditions/Destinations auf, ein Device in eine Channes und Datenpunkte) Das gleiche Endergebnis wie Baxxy, nur etwas schneller.
In der neunen G version ist noch: ein selektiertes Device wird mit mit ALT C in seine Channels Aufgelöst, ein selektierter Channel mit ALT D in seine Datenpunkte.

In der Detailansicht bedeuten:
* Der wert kann geändert werden
R rekursiver Einsprung möglich, steht bei Idarrays und Enums, durch doppelklicken auf die Zeile wird die Aufzählung aufgelöst und in der Listenansicht dargestellt,, so kannst du auch quasi duch ein device browsen. Die Undo- Redo tasten funktionieren da als Ebene Zurückspringen bzw Ebene Vorspringen.
dtp hat geschrieben:
11.04.2020, 15:44
(...) Und noch was. Wäre es irgendwie möglich, einen Filter für ein bestimmtes auszuführendes Programm zu setzen? Wenn ich ansonsten einen Gerätewert ändere, dann werden ja sämtliche Programme getriggert, für die die Bedingung erfüllt ist, was unter Umständen zu ungewollten Reaktionen führen kann.
In der Form nicht vorgesehen. Dafür kannst du ja beim Scripttesten $src$ und $val$ benutzen. Das zwangsweise Rega Event ist halt zum Testen des Gesamtsystems.

Schöne Ostertage noch, 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

Miwogrein
Beiträge: 4
Registriert: 27.02.2023, 10:48
System: CCU

Re: Tutorial Programme testen / debuggen mit dem SDV

Beitrag von Miwogrein » 28.10.2023, 13:31

Mahlzeit zusammen,

hat diese Funktion etwas mit dem Lizenzlevel zu tun?
Ich habe das Level 5 und ich kann die Values leider nicht ändern, was natürlich ne feine Sache ist, wenn es klappt,
oder mache ich hier was falsch. Hat jemand noch einen Tip für mich?
Ich hoffe mit dem Screenshot kann man was anfangen.
Screenshot 2023-10-28 132229.jpg
Seit 11/2020 CCU3, zur Zeit ca. mit 107 Aktoren
Addons: CUx, E-Mail, Neo Server, Philips Hue, Programmedrucken, XML-API

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

Re: Tutorial Programme testen / debuggen mit dem SDV

Beitrag von Black » 28.10.2023, 15:19

das wird mit 5 auch gehen...

also...

es braucht 2 Freigabeeinstellungen: die erste ist diese:

event freigabe.JPG

wenn das gemacht ist, das Schloss noch aufmachen (die Kindersicherung)

dann sollte das auch mit Level5 funktionieren (die SIcherungsmechanismen sind Absicht, damit derartige Werte nicht versenhentlich verstellt werden können)

Sag mal bescheid, obs nun geht

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

Miwogrein
Beiträge: 4
Registriert: 27.02.2023, 10:48
System: CCU

Re: Tutorial Programme testen / debuggen mit dem SDV

Beitrag von Miwogrein » 28.10.2023, 16:41

Vielen Dank Black, das hat geholfen :D

Schönen Wochenende
Seit 11/2020 CCU3, zur Zeit ca. mit 107 Aktoren
Addons: CUx, E-Mail, Neo Server, Philips Hue, Programmedrucken, XML-API

Miwogrein
Beiträge: 4
Registriert: 27.02.2023, 10:48
System: CCU

Re: Tutorial Programme testen / debuggen mit dem SDV

Beitrag von Miwogrein » 28.10.2023, 16:43

Upps, schönes Wochenende, meine ich natürlich
Seit 11/2020 CCU3, zur Zeit ca. mit 107 Aktoren
Addons: CUx, E-Mail, Neo Server, Philips Hue, Programmedrucken, XML-API

Antworten

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