Skript für einfaches Programm

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

BadenPower

Re: Skript für einfaches Programm

Beitrag von BadenPower » 16.06.2016, 14:41

daniyal hat geschrieben: Es geht nur um das Skript, welches genau dieses Programm erstellen soll.
1. Object vom Typ Programm erstellen.
2. Regelwerk des Programmes in ein Object ablegen.
3. dem Regelwerk eine Bedingung hinzufügen
4. Diese Bedingung mit Operatortyp, Bedingungstyp, dem zu prüfenden Element und Typ und Bedingung und Typ füllen.
5. dem Regelwerk eine Aktion hinzufügen.
6. diese Aktion mit den Werten für die Ausführung belegen.
7. dem Programm einen Namen geben
8. das Programm aktiv schalten
9. das Programm in der Programmliste speichern.
10. RT updaten

danyial
Beiträge: 10
Registriert: 31.05.2016, 13:53

Re: Skript für einfaches Programm

Beitrag von danyial » 16.06.2016, 14:59

Das ist in der Theorie schon klar...
Am besten zeig ich dir einfach mal was ich habe.

Code: Alles auswählen

! Name des Gerätes
var deviceName = "BidCos-RF.MEQ1723104:1.STATE";
! Das Gerät selbst
var deviceObj = dom.GetObject(deviceName);
! Name der Systemvariable
var sysVarName = "MeineSystemVariable";
! Objekt der Systemvariable
var sysVarObj = dom.GetObject(sysVarName);

if (sysVarObj && deviceObj) {
    var programs = dom.GetObject(ID_PROGRAMS);
    ! Programm erstellen
    var program = dom.CreateObject(OT_PROGRAM);
    ! Programmname vergeben
    program.Name(deviceName + "_Programm");

    ! Regel erstellen
    var rule = program.Rule();
    var condition = program.RuleAddCondition();

    ! Ab hier ist ziemlich sicher fast alles falsch
    var singleCondition = condition.CndAddSingle();
    singleCondition.OperatorType(1);
    singleCondition.ConditionType2(13);
    singleCondition.LeftValType(ivtObjectId);
    singleCondition.LeftVal(deviceObj.ID());

    ! Weil oben schon nichts funktioniert, hab ich hier nicht mehr weiter gemacht
    var destination = rule.RuleDestination();
    var singleDestination = destination.DestAddSingle();
    singleDestination.DestinationParam(ivtSystemId);
    singleDestination.DestinationValue(svObj.ID());

    program.Active(true);
    program.Internal(false);
    
    programs.Add(program.ID());

    dom.RTUpdate(false);

    Write("<?xml version='1.0' encoding='ISO-8859-1' ?>")
    Write("<programs><program>");
    Write(program.ID());
    Write("</program></programs>");
}

BadenPower

Re: Skript für einfaches Programm

Beitrag von BadenPower » 16.06.2016, 18:42

danyial hat geschrieben:Das ist in der Theorie schon klar...
Am besten zeig ich dir einfach mal was ich habe.
Hust...

Das ist als Ausgangsbasis ein bischen schwach, wenn man bedenkt, dass Du eigentlich großes vorhast.

Kleine Frage vorab:
Was soll denn das für eine App werden.
Poste doch einmal Screenshots oder den Quellcode, dann könnte man Dich auch hierbei etwas unterstützen und Dir vielleicht besser/andere Wege aufzeigen.

Hier einmal der Code für die auf Deine Bedürfnisse (Screenshot des Programms) zugeschnittene Bedingung.

Code: Alles auswählen

  string program_name = "TestPrg";
  string deviceName = "Türkontakt Kanal1";
  object deviceObj = dom.GetObject(deviceName);
  object datapointObj = deviceObj.DPByHssDP("STATE");
 
  object programs = dom.GetObject(ID_PROGRAMS);
  object program = dom.CreateObject(OT_PROGRAM);
  program.Name(program_name);
  programs.Add(program.ID());
  object rule = program.Rule();
  rule.RuleOperatorType(2);
  object condition = rule.RuleAddCondition();
  condition.CndOperatorType(2);
  object singleCondition = condition.CndAddSingle();
  singleCondition.OperatorType(1);
  singleCondition.ConditionType(1);
  singleCondition.ConditionType2(4);
  singleCondition.LeftValType(18);
  singleCondition.LeftVal(datapointObj.ID());
  singleCondition.RightVal1ValType(2);
  singleCondition.RightVal1(0);
  singleCondition.RightVal2ValType(2);
  singleCondition.RightVal2(0);
  singleCondition.ConditionChannel(deviceObj.ID());

danyial
Beiträge: 10
Registriert: 31.05.2016, 13:53

Re: Skript für einfaches Programm

Beitrag von danyial » 16.06.2016, 19:06

Danke dir schon mal. Woher beziehst du denn diese Infos???
Ich such und such und find darüber so gut wie gar nichts...

Wie bekomm ich denn jetzt noch den Text für dir SV zum laufen?

Quellcode ist ein bisschen schwierig. :wink:
Zuletzt geändert von danyial am 22.06.2016, 13:53, insgesamt 1-mal geändert.

BadenPower

Re: Skript für einfaches Programm

Beitrag von BadenPower » 16.06.2016, 19:50

danyial hat geschrieben:Danke dir schon mal. Woher beziehst du denn diese Infos???
Ich such und such und find darüber so gut wie gar nichts...
Ja, nicht "Google ist dein Freund", sondern die CCU selbst, bzw die Software, welche dort aufgespielt ist. Anderst als bei Google muss man leider auf der CCU nicht nur selbst suchen, sondern auch noch selbst finden.
danyial hat geschrieben: Quellcode ist ein bisschen schwierig. :wink:
Ich bin der Entwickler von iSmartHome / iSmartHome HD (RWE-SmartHome) und wage mich so langsam aber sicher an HomeMatic ran.
Aber mit nem Screenshot kann ich schon dienen
Schade, keine OpenSource-Projekte. :cry:
danyial hat geschrieben: Wie bekomm ich denn jetzt noch den Text für dir SV zum laufen?
Das ist leider ClosedSource. 8)

Wenn Du eine einigermaßen richtige Vorgehensweise herausgefunden hast und diese postest, dann werde ich mich vielleicht um den Feinschliff und die richtige Parameterisierung kümmern. Irgendwo im Forum habe ich auch schon mal die Bereitstellung von Aktionen gepostet.

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

Re: Skript für einfaches Programm

Beitrag von alchy » 16.06.2016, 21:23

BadenPower hat geschrieben: Das ist leider ClosedSource.
:lol: :mrgreen:

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.

BadenPower

Re: Skript für einfaches Programm

Beitrag von BadenPower » 30.06.2016, 13:42

alchy hat geschrieben:
BadenPower hat geschrieben: Das ist leider ClosedSource.
:lol: :mrgreen:

Alchy
Ich glaube der TE hat das Interesse an seinem Thread verloren, nachdem ich mein Wissen als "ClosedSource" deklariert habe.

Ist ja nicht so, dass man nicht helfen wollte, aber es kann doch nicht sein, dass man das Wissen einer Community dazu gebraucht, um damit Geld zu verdienen, ohne etwas zurückzugeben.
.

danyial
Beiträge: 10
Registriert: 31.05.2016, 13:53

Re: Skript für einfaches Programm

Beitrag von danyial » 10.09.2016, 14:29

Hey zusammen,
sorry für die späte Antwort. Ich bin leider arbeitsmäßig und privat etwas eingespannt gewesen.
Natürlich will ich der Community auch was zurück geben, aber doch nicht mein komplettes Projekt.
Das ist etwas unverhältnismäßig ;)
Der Tipp mit der CCU Software war sehr hilfreich, vielen Dank dafür.
Gibt es denn für genau solche Sachen kein gepflegtes Wiki? Bzw. wäre es nicht toll mal gemeinsam ein gepflegtes Wiki aufzubauen?
Alle Wikis, die ich darüber gefunden habe, sind leider nur sehr spärlich was die Infos angeht...
Vielleicht finden sich ja ein paar Leute, die das ganze mit aufbauen möchten

Herbert_reloaded

Re: Skript für einfaches Programm

Beitrag von Herbert_reloaded » 10.09.2016, 15:13

danyial hat geschrieben: Alle Wikis, die ich darüber gefunden habe, sind leider nur sehr spärlich was die Infos angeht...
Vielleicht finden sich ja ein paar Leute, die das ganze mit aufbauen möchten
Hallo

evtl. möchtest Du Dich beteiligen?

http://www.wikimatic.de/wiki/Hauptseite

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“