SDV V5.03.04G - Das Entwicklungs und Diagnose Tool für Homematic CCUs

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

Moderator: Co-Administratoren

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

Re: SDV V4.01.01 Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von Black » 06.07.2020, 20:17

HMIP Gerätetausch ist noch nicht fertig..... es scheiterte da noch an den Linksets. (Aufgrund der Gags in der Vergangenheit (Abschreckendes Beispel der FUnk 4 Fach rolladenaktor) und dem Gewürge mit dem BrakingChange hab ich mich an die FUnktion auch noch nicht drangesetzt um die zu vervollständigen. Aber ist schon mal ein guter Hinweis.

Macht er denn Mist oder kannst du das nicht Tauschpaar nicht anwählen ? (Ich denke es scheitert an den Anwählen, da ich die NearEqual Paare für IP noch gar nicht defniert habe). Eine der Definitonsmengen ist aber noch, das die verwendeten Datenpunkte in WebUI Programmen auch in dem neuen Device vorhanden sein müssen, ansonsten kommt in der Vorprüfung ein Abbruch (Mehr verrate ich dazu aber erstmal nicht)

steht aber noch ganz oben auf meiner Agenda, aber der Weg dahin war etwas zickzackförmig und führte über vorher nicht aufgefallene notwendige Umwege. Das war genauso steinig wie der Weg hin zu dem WebUI ProgrammBackup, was aber nun schon seit langem sauber arbeitet.

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

MichaelN
Beiträge: 9681
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: SDV V4.01.01 Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von MichaelN » 06.07.2020, 20:20

Black hat geschrieben:
06.07.2020, 20:17

Macht er denn Mist oder kannst du das nicht Tauschpaar nicht anwählen ? (Ich denke es scheitert an den Anwählen, da ich die NearEqual Paare für IP noch gar nicht defniert habe).
Korrekt, es wird nur PSM angeboten. Würde es denn mit dem angepassten WebUI Programm gehen oder muss ich dann mit irgendwelchen Katastroiphen rechnen? So grob verstehe ich ja, was es macht.
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
Black
Beiträge: 5483
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: SDV V4.01.01 Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von Black » 06.07.2020, 20:41

Lass es lieber bis ichs freigebe... eigentlich sollte der Menüpunkt noch über einen compilerswitch auscompiliert sein für die Release Versionen.

Ging mir wohl durch
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: 5483
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

SDV V4.01.02 Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von Black » 07.07.2020, 12:40

SO, nochmal Zeit für ein kleines Upgrade.

Changelog
1. Ein paar kleinere Änderungen im Eventhandling sowie Versionsänderung der RAD auf 2.0.8
2. Sprachdatei mir deutscher übersetzung der StandartKomponenten (vorallem der Such/Replace Dialoge). dies ist die 2. Datei in dem Rar und muss in gleiche Verzeichnis wie die SDV_V4.exe
3- die Exe Datei muss nun nicht mehr zwangsweise SDV_V4 heissen (@Baxxy), er sollte die ProzessInstanz nun aus der gestarteten Exe selber extrahieren können
4. Handling für das selektive Übertragen von Daten von Direktverknüpfungen nun abgeschlossen. Über die Möglichkeiten der WebUI was das Handling von DV angeht sowie dem Datenaustausch zwischen DVs muss ich ja nicht viel erzählen, ist ein Trauerspiel. Aus dem grunde wollte ich mich da auch immer mal drangesetzt haben, wenn man in DV1 etwas geändert hat, dass dieses schnell und ohne clickiclackiOrgien in gleichartigen anderen DVs zu ändern ist.

Das nötige Handling von Direktverknüpfungsdaten passte nicht so richtig in die STruktur der Gerätekopien unter CCU Serives.
AUs diesem Grunde das Handling bei Direktverknüpfungen im Inspektor um die Drag-Drop Events erweitert.
Damit ist es nun möglich, sich eine bestimmte Direktverknüpfung in der Detailansicht darstellen zu lassen, dann markiert man z.B. alle Parameter, die mit SHORT_ beginnen (alles für den kurzen Tastendruck) und zieht, wie in WIndows üblich, dieses in die Listenansicht. Mit beginn des ziehens werden die anderen Direktverknüpfungen, deren Zielkanaleigentschaften zu dieser an der Maus hängenden Direktverknüpfung passen, grün dargestellt. Auf diesen kann dann die Maus gestellt werden und wie üblich gedropt werden. Es öffnet sich dann ein Abfragemenü, ob wirklich die Parameter von der Quelle Q ind Ziel Z kopiert werden soll, und bei Bestätigung nach Ausführung noch ein Statusdialog.

Beispielhaftes Vorgehen:

Auswahl einer DV und markieren eines Teiles des Parameter (LONG)
Ziehen1.JPG
Ziehen von der Detailansicht in die Listenansicht. die möglichen ZielDVs sind nun grün geworden (Die nicht grün Eingefärbte mit der Switch EIgenschaft ist die QuellDV selber, nur ich steh nicht so auf buntes Farbenspiel, drum habe ich diese schwarz gelassen)
Ziehen2.JPG

Auswahl einer ZielDV und Drop
Ziehen3.JPG
Nun nochmal kontrolle und bestätigen für Übertragen oder Abbruch.
Statusmessage nach dem Übertragen


Ziehen4.JPG
SOllen Alle DV Parameter ausgewählt werden, rechte Maustaste im Detailsview und Markiere alle ParamsetLinks



Und nun der SDV V4.01.02 mit der Sprachdatei, wie immer als erstes nur für die Bestandsnutzer. Die 4er Version ist die mit der leider notwendigen eincompilierten Spassbremse für alte regaversion vor dem 21.06.2020 !!!)
(Version entfernt, Grund: Fix in V4.01.02A)




Black
Zuletzt geändert von Black am 09.07.2020, 12:43, insgesamt 3-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

nimmnenkeks
Beiträge: 453
Registriert: 30.11.2016, 20:24
Hat sich bedankt: 43 Mal
Danksagung erhalten: 19 Mal

Re: SDV V4.01.01 Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von nimmnenkeks » 07.07.2020, 14:26

ich brach ne Raspel :mrgreen:

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

SDV V4.01.02A Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von Black » 08.07.2020, 11:29

Leider hatte sich da durch die Änderung der MenüEvents eine Motte eingeschlichten:

BugFix V4.01.02A

Changelog:
BackUp von WebUI Programmen blieb immer disabled
Rekursiv auflösen blieb immer enabled
@PaulM: WUnsch erfüllt, Sprachdatei nun mit in die Exe eincompilert.


SDV V4.01.02A (wie immer hier nur für die Bestandsnutzer)




Black
MichaelN hat geschrieben:
06.07.2020, 19:44
Hi Black,

ein Gerätetausch HmIP-PSM <=> HmIP-PS funktioniert nicht?! Ich habe eine PSM im Einsatz und will die gegen eine PS austauschen, weil ich dort keine Messfunktion brauche (aber anderswo...) Wäre kein Beinbruch, das manuell zu machen, da die PSM nur in einem drei Programm steckt. Wäre aber ein gutes Übungsobjekt für mich zum Umgang mit dem SDV gewesen...

EDIT: nach dem Motto "denn sie wissen nicht, was sie tun" hab eich mal das WebUI-Backup-Programm aus dem SDV angepasst:

Code: Alles auswählen

WriteLine ("Gerätesicherung WebUI für Gerät [0001D3C99CAC8A] mit Namen [Steckdose Lampe]");
WriteLine ("Erstellt vom V3.15.01 Last Legacy Edition am 06.07.2020 19:52:43");
object oDev= xmlrpc.GetObjectByHSSAddress (interfaces.GetAt (0),"00021709A1D190");
if (!oDev) {WriteLine ("Gerät mit Seriennummer [00021709A1D190] existiert nicht. --> Abbruch"); quit; }}
if (oDev.HssType ()!= "HMIP-PS") {WriteLine ("Gerät hat falschen HSSType. Soll: [HMIP-PS] - Ist: [" # oDev.HssType () # "] --> Abbruch"); quit; }
WriteLine ("Namen und Kanalnamen des Device setzen");
oDev.Name ("Steckdose Lampe"); WriteLine ("Gerät umbenannt in Steckdose Lampe"); 
(oDev.Channels ().GetAt (0 )).Name ("Steckdose Lampe:0"); WriteLine ("Kanal:0 umbenannt in Steckdose Lampe:0"); 
(oDev.Channels ().GetAt (1 )).Name ("Steckdose Lampe:1"); WriteLine ("Kanal:1 umbenannt in Steckdose Lampe:1"); 
(oDev.Channels ().GetAt (2 )).Name ("Steckdose Lampe:2"); WriteLine ("Kanal:2 umbenannt in Steckdose Lampe:2"); 
(oDev.Channels ().GetAt (3 )).Name ("Steckdose Lampe:3"); WriteLine ("Kanal:3 umbenannt in Steckdose Lampe:3"); 
(oDev.Channels ().GetAt (4 )).Name ("Steckdose Lampe:4"); WriteLine ("Kanal:4 umbenannt in Steckdose Lampe:4"); 
(oDev.Channels ().GetAt (5 )).Name ("Steckdose Lampe:5"); WriteLine ("Kanal:5 umbenannt in Steckdose Lampe:5"); 
(oDev.Channels ().GetAt (6 )).Name ("Steckdose Lampe:6"); WriteLine ("Kanal:6 umbenannt in Steckdose Lampe:6"); 

WriteLine ("-------------------------------");
object oChan; string s; string sIter; object oIter;
WriteLine ("Räume und Gewerke des Gerätes initialisieren");
foreach (s,system.GenerateEnum (0,oDev.Channels ().Count ()-1 )) {
oChan= oDev.Channels ().GetAt (s.ToInteger ());
foreach (sIter, oChan.ChnRoom () ) {
oIter= dom.GetObject (sIter);
oIter.Remove (oChan.ID () ); }
foreach (sIter, oChan.ChnFunction () ) {
oIter= dom.GetObject (sIter);
oIter.Remove (oChan.ID () ); }}
WriteLine ("Räume und Gewerke des Gerätes anlegen");
oChan= channels.Get ("Steckdose Lampe:1"); WriteLine (oChan.Name () );
dom.GetObject (ID_ROOMS).Get ("roomLivingRoom").Add (oChan.ID () ); WriteLine ("\tRaum: roomLivingRoom");
dom.GetObject (ID_FUNCTIONS).Get ("funcLight").Add (oChan.ID () ); WriteLine ("\tGewerk: funcLight");
oChan= channels.Get ("Steckdose Lampe:2"); WriteLine (oChan.Name () );
dom.GetObject (ID_ROOMS).Get ("roomLivingRoom").Add (oChan.ID () ); WriteLine ("\tRaum: roomLivingRoom");
dom.GetObject (ID_FUNCTIONS).Get ("funcLight").Add (oChan.ID () ); WriteLine ("\tGewerk: funcLight");
oChan= channels.Get ("Steckdose Lampe:3"); WriteLine (oChan.Name () );
dom.GetObject (ID_ROOMS).Get ("roomLivingRoom").Add (oChan.ID () ); WriteLine ("\tRaum: roomLivingRoom");
dom.GetObject (ID_FUNCTIONS).Get ("funcLight").Add (oChan.ID () ); WriteLine ("\tGewerk: funcLight");
oChan= channels.Get ("Steckdose Lampe:6"); WriteLine (oChan.Name () );
dom.GetObject (ID_ROOMS).Get ("roomLivingRoom").Add (oChan.ID () ); WriteLine ("\tRaum: roomLivingRoom");
dom.GetObject (ID_FUNCTIONS).Get ("funcLight").Add (oChan.ID () ); WriteLine ("\tGewerk: funcLight");
WriteLine ("-------------------------------");
WriteLine ("Favoriten des Gerätes anlegen");
object oFav= dom.GetObject (ID_FAVORITES).Get ("Flurlicht");
oFav.RemoveAll ();
oFav.Add (channels.Get ("Flur-Auto-Umschalter").ID ());
oFav.Add (dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Licht_Automatik").ID ());
oFav.Add (channels.Get ("Steckdose TV:6").ID ());
oFav.Add (channels.Get ("Steckdose Lampe:3").ID ());
oFav.FavControlIDs().RemoveAll ();
oFav.FavControlIDs().Add (dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Licht_Automatik").ID ());
WriteLine ("-------------------------------");
WriteLine ("Programme rekonstruieren");
object oPRG= dom.GetObject (ID_PROGRAMS).Get ("Display_Action");
object oDST= dom.GetObject (15958);
if (oDST.IsTypeOf (OT_DESTINATION)) {
if (oDST.DstProgram () == oPRG.ID ()) {
object oSDST= oDST.DestAddSingle ();
oDST.DestSingleDestinations ().MoveObject (oSDST.ID(),(1 - oDST.DestSingleDestinations ().Count() )+1 );
oSDST.DestinationParam (18);
oSDST.DestinationValueType(2);
oSDST.DestinationChannel (channels.Get ("Steckdose Lampe:3").ID () );
oSDST.DestinationDP (channels.Get ("Steckdose Lampe:3").DPByHssDP ("STATE").ID ());
oSDST.DestinationValueParamType (0);
oSDST.DestinationValue (true);
} else {WriteLine ("Destination [" # oDST.ID () # "] gehört nicht zum Programm [" # oPRG.Name () # "]");}
} else {WriteLine ("ID [" # oDST.ID () # "] ist nicht vom Typ OT_DESTINATION");}
!----------
object oPRG= dom.GetObject (ID_PROGRAMS).Get ("Display_Action");
object oDST= dom.GetObject (15965);
if (oDST.IsTypeOf (OT_DESTINATION)) {
if (oDST.DstProgram () == oPRG.ID ()) {
object oSDST= oDST.DestAddSingle ();
oDST.DestSingleDestinations ().MoveObject (oSDST.ID(),(1 - oDST.DestSingleDestinations ().Count() )+1 );
oSDST.DestinationParam (18);
oSDST.DestinationValueType(2);
oSDST.DestinationChannel (channels.Get ("Steckdose Lampe:3").ID () );
oSDST.DestinationDP (channels.Get ("Steckdose Lampe:3").DPByHssDP ("STATE").ID ());
oSDST.DestinationValueParamType (0);
oSDST.DestinationValue (false);
} else {WriteLine ("Destination [" # oDST.ID () # "] gehört nicht zum Programm [" # oPRG.Name () # "]");}
} else {WriteLine ("ID [" # oDST.ID () # "] ist nicht vom Typ OT_DESTINATION");}
!----------
WriteLine ("\tProgramm [Display_Action] rekonstruiert");

object oPRG= dom.GetObject (ID_PROGRAMS).Get ("TV-Licht-an_V2");
object oCND= dom.GetObject (19637);
if (oCND.IsTypeOf (OT_CONDITION)) {
object oRule= dom.GetObject (oCND.CndParent () );
if (oRule.RuleProgramID () == oPRG.ID ()) {
object oSCND= oCND.CndAddSingle();
oCND.CndSingleConditions ().MoveObject (oSCND.ID(),(3 - oCND.CndSingleConditions ().Count() )+1 );
oSCND.LeftValType (18);
oSCND.LeftVal (channels.Get ("Steckdose Lampe:2").DPByHssDP ("STATE").ID ());
oSCND.ConditionChannel (channels.Get ("Steckdose Lampe:2").ID () );
oSCND.ConditionType (1);
oSCND.ConditionType2 (15);
oSCND.OperatorType (1);
oSCND.RightVal1ValType (2);
oSCND.RightVal1 (false);
oSCND.RightVal2ValType(2);
oSCND.RightVal2 (false);
} else {WriteLine ("Condition [" # oCND.ID () # "] gehört nicht zum Programm [" # oPRG.Name () # "]");}
} else {WriteLine ("ID [" # oCND.ID () # "] ist nicht vom Typ OT_CONDITION");}
!----------
WriteLine ("\tProgramm [TV-Licht-an_V2] rekonstruiert");
object oPRG= dom.GetObject (ID_PROGRAMS).Get ("TV-Licht-aus");
object oCND= dom.GetObject (18871);
if (oCND.IsTypeOf (OT_CONDITION)) {
object oRule= dom.GetObject (oCND.CndParent () );
if (oRule.RuleProgramID () == oPRG.ID ()) {
object oSCND= oCND.CndAddSingle();
oCND.CndSingleConditions ().MoveObject (oSCND.ID(),(2 - oCND.CndSingleConditions ().Count() )+1 );
oSCND.LeftValType (18);
oSCND.LeftVal (channels.Get ("Steckdose Lampe:2").DPByHssDP ("STATE").ID ());
oSCND.ConditionChannel (channels.Get ("Steckdose Lampe:2").ID () );
oSCND.ConditionType (1);
oSCND.ConditionType2 (15);
oSCND.OperatorType (1);
oSCND.RightVal1ValType (2);
oSCND.RightVal1 (true);
oSCND.RightVal2ValType(2);
oSCND.RightVal2 (false);
} else {WriteLine ("Condition [" # oCND.ID () # "] gehört nicht zum Programm [" # oPRG.Name () # "]");}
} else {WriteLine ("ID [" # oCND.ID () # "] ist nicht vom Typ OT_CONDITION");}
!----------
object oPRG= dom.GetObject (ID_PROGRAMS).Get ("TV-Licht-aus");
object oDST= dom.GetObject (18674);
if (oDST.IsTypeOf (OT_DESTINATION)) {
if (oDST.DstProgram () == oPRG.ID ()) {
object oSDST= oDST.DestAddSingle ();
oDST.DestSingleDestinations ().MoveObject (oSDST.ID(),(0 - oDST.DestSingleDestinations ().Count() )+1 );
oSDST.DestinationParam (18);
oSDST.DestinationValueType(4);
oSDST.DestinationChannel (channels.Get ("Steckdose Lampe:3").ID () );
oSDST.DestinationDP (channels.Get ("Steckdose Lampe:3").DPByHssDP ("ON_TIME").ID ());
oSDST.DestinationValueParamType (0);
oSDST.DestinationValue ("600.000000".ToFloat ());
} else {WriteLine ("Destination [" # oDST.ID () # "] gehört nicht zum Programm [" # oPRG.Name () # "]");}
} else {WriteLine ("ID [" # oDST.ID () # "] ist nicht vom Typ OT_DESTINATION");}
!----------
object oPRG= dom.GetObject (ID_PROGRAMS).Get ("TV-Licht-aus");
object oDST= dom.GetObject (18674);
if (oDST.IsTypeOf (OT_DESTINATION)) {
if (oDST.DstProgram () == oPRG.ID ()) {
object oSDST= oDST.DestAddSingle ();
oDST.DestSingleDestinations ().MoveObject (oSDST.ID(),(1 - oDST.DestSingleDestinations ().Count() )+1 );
oSDST.DestinationParam (18);
oSDST.DestinationValueType(2);
oSDST.DestinationChannel (channels.Get ("Steckdose Lampe:3").ID () );
oSDST.DestinationDP (channels.Get ("Steckdose Lampe:3").DPByHssDP ("STATE").ID ());
oSDST.DestinationValueParamType (28);
oSDST.DestinationValueParam (@2020-07-06 00:00:01@);
oSDST.DestinationValue (true);
} else {WriteLine ("Destination [" # oDST.ID () # "] gehört nicht zum Programm [" # oPRG.Name () # "]");}
} else {WriteLine ("ID [" # oDST.ID () # "] ist nicht vom Typ OT_DESTINATION");}
!----------
WriteLine ("\tProgramm [TV-Licht-aus] rekonstruiert");
dom.RTUpdate (0);
Prüfung auf die neue Ser.-Nr. geändert; Kanalanzahl angepasst; PSM-spezifisches (interne) Programm rausgeworfen.
Würde das funktionieren? Und wie wäre die richtige Vorgehensweise? Aktuelle "Steckdose Lampe" ablernen (oder erst umbenenn und dann ablernen?)
Und dann dieses WebUI-Programm drüber laufen lassen?

:roll:
Leider hatte ich deinen Post falsch interpretiert, dein Lösungsansatz kann da zielführend sein, da du aber manuell den Deklarationskopf oben angepasst hast, hat dies auch ein gewisses Risiko. wenn die Kanalanzahl richtig angepasst wurde mit den Namen und du die Typkennung richtig gesetzt hast, müsste dieser Ansatz zum Erfolg führen.
Wichtig ist natürlich dass z.b. Diese Zuweisung richtig angepasst sind:

oSDST.DestinationChannel (channels.Get ("Steckdose Lampe:3").ID () );
oSDST.DestinationDP (channels.Get ("Steckdose Lampe:3").DPByHssDP ("STATE").ID ());

Hier muss der Kanal 3 Natürlich stimmig sein, sonst generiert das Script Müll

GANZ WICHITG DABEI IST: Wnn du über diesen Weg die Programme von Geräten austauschst, nach dem Generieren dieses Scriptes aus dem SDV auf keinen Fall etwas Manuell in Programmen ändern, dieses Script arbeitet ID Bezogen, im gegensatz zu dem "richtigen" Backup Programm script, welches komplett symbolisch arbeitet.

Gruss, Black
Zuletzt geändert von Black am 17.07.2020, 15:09, insgesamt 1-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

MichaelN
Beiträge: 9681
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: SDV V4.01.02A Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von MichaelN » 08.07.2020, 12:08

Die Kanäle sind m.E. soweit identisch, bis auf die zusätzlichen für die Messfunktion, die ich aber aus dem Backup-Programm entfernt habe.
Werde ich aber nochmal verifizieren, das Kanal 3 beim PSM auch Kanal 3 beim PS ist.

Der Absatz
GANZ WICHITG DABEI IST: Wnn du über diesen Weg die Programme von Geräten austauschst, nach dem Generieren dieses Scriptes aus dem SDV auf keinen Fall etwas Manuell in Programmen ändern, dieses Script arbeitet ID Bezogen, im gegensatz zu dem "richtigen" Backup Programm script, welches komplett symbolisch arbeitet.
ist mir noch nicht klar. Bedeutet das, ich darf nach dem Erstellen des Skriptes KEIN EINZIGES Programm mehr anpacken? Das ist ein guter Hinweis, dann generiere ich das Skript unmittelbar vorher nochmal neu. Also Backup der CCU, Skript generieren, alten PSM ablernen, angepasstes Skript laufen lassen.
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
Black
Beiträge: 5483
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: SDV V4.01.02A Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von Black » 08.07.2020, 12:15

jap, das bedeutet das. Das Menü hatte ich mal geschrieben gehabt, wenn man ein Gerät mal mit Werksabgleich von der Webui abmelden muss, wieder anmeldet und dann normalerweise von hand den ganzen WebUi Gedöns wieder eintippen musste.

das erledigt nach dem Anlernen das vom SDV für dieses Gerät generierte Script.

Bei dem Scenario hat man aber nix in der WebUI gemacht, nur gelöscht und wieder angelernt.

Bei einem Richtigen Programmbackup ist es egal, das wird mit vollqualifizierten, symbolischen zugriffen abgelegt, und lässt sich so auch von einer CCU-A auf eine CCU-B übertragen (wenn Geräte und Sysvars vorhanden sind)

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

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

Re: SDV V4.01.02A Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von Black » 10.07.2020, 11:24

Die Last Legacy Edition, die V3.15.01LLE, ist nun jetzt auch die letzte offizielle Version auf Github.

Bei der V4 ist eine grundlegende Erweiterung des Editors in der Pipeline. Einer der häufig genannten Wünsche war ja, in dem Editor mehrere Scripte gleichzeitig geöffnet halten zu können.

In einer losgelösten ProofOfConcept Version läuft der Synedit nun mit MultiTabs, heisst mehrere Programme können gleichzeitig geöffnet sein, wechsel zwischen den Programmen via Tabs möglich, SDV kann sich die einstellungen merken und beim laden den letzten Zustand der Tabs wiederherstellen. Bookmarks nun Dateibezogen und werden ebenfalls gesichert werden. Highlighter und alles andere, auch das verklinken mit dem Inspektor, bleibt so wie es ist, da wird es keine Abstriche geben.

In dem Zusammenhang einen Dank an einen spanischen Arbeitskollegen von mir, der mit mir in der letzten Zeit die Bibla de la Synedit, die wohl beste Dokumentation über den Synedit, vom original spanischen ins deutsche übersetzt hat.

Black

(also noch bisschen Geduld....)
Zuletzt geändert von Black am 10.07.2020, 13:17, insgesamt 1-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

MichaelN
Beiträge: 9681
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: SDV V4.01.02A Scripteditor und Objektinspektor / Changer CCU/RM

Beitrag von MichaelN » 10.07.2020, 11:40

Beim Skripthandling bin ich mit der alten Version auch nciht so glücklich gewesen. Mehrere Instanzen ist halt immer noch was anderes als mehrere Tabs.
Ein Usecase, wo ich immer ziemlch rumfummel:

Ich entwickel ein Skript, ggf. eine überarbeitete Version. Dazu nutze ich eine lokal gespeicherte Version des Skript.
Nun ist es fertig und ich will es in die CCU laden.
Dazu such ich über dne Inspektor das programm und lade das aktuelle Skript aus der CCU in den Editor.
Nun wäre es für mich am elegantesten, ich könnte die lokal gespeicherte Version öffnen und zurück in die CCU laden.
Geht nicht wegen der Sicherheit und so.
So muss ich den Umweg über 2. Instanz ( demnächst 2. Tab) und die Zwischenablage gehen. Oder habe ich was übersehen?
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 +++

Antworten

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