Hilfe bei Skript

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

Moderator: Co-Administratoren

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Hilfe bei Skript

Beitrag von paul53 » 05.02.2013, 13:38

Ovidius hat geschrieben:Hallo paul53,

verstehe ich das richtig, dass bei deinem Skript nicht der Schaltaktor Heizung.Büro geschalten wird, sondern eine Systemvariable Heizung.Büro auf 1 oder 2 gestellt wird.
Ja,

Code: Alles auswählen

dom.GetObject("Heizung.Büro").State(1);
beschreibt eine SV.

Wenn ein Aktor mit dem Kanalnamen "Heizung.Büro" direkt schalten soll, dann so:

Code: Alles auswählen

dom.GetObject("Heizung.Büro").DPByHssDP("STATE").State(1);
Das hat jedoch den Nachteil, dass bei jedem Auslösen des Scripts gesendet wird und nicht nur bei Änderung des Soll-Schaltzustandes des Aktors.
Zuletzt geändert von paul53 am 05.02.2013, 13:59, insgesamt 1-mal geändert.
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

MaxWrestler
Beiträge: 237
Registriert: 11.12.2011, 12:19
Danksagung erhalten: 1 Mal

Re: Hilfe bei Skript

Beitrag von MaxWrestler » 05.02.2013, 13:46

Hallo Peter,
du brauchst das Gerät 3. Thermostat.
2:State ist ein Betriebsstundenzähler.
Lade dir das Handbuch zum CUxD runter, da wird vieles erklärt.

Und keine Sorge, CUxD läuft auch ohne Hardware auf der CCU.

Ovidius
Beiträge: 107
Registriert: 20.08.2006, 22:33

Re: Hilfe bei Skript

Beitrag von Ovidius » 05.02.2013, 14:25

Hallo MaxWrestler,

CUxD mit einem CUL benutze ich bereits zur Steuerung meiner alten FS20 Komponenten. Den Pinger habe ich zur Anwesenheitsprüfung auch bereits im Einsatz.

Mit dem Universal Wrapper Divice hatte ich mich noch nicht beschäftigt.

Vielleicht stehe ich auch auf dem "Schlauch" aber was meinst Du mit
du brauchst das Gerät 3. Thermostat.
wenn ich als CUxD Gerätetyp: (90) Universal Wrapper Devices auswähle sehe ich nicht wo ich dann Gerät 3 Thermostat wählen kann.

Kannst Du mir das nochmals genauer erläutern?

Peter

MaxWrestler
Beiträge: 237
Registriert: 11.12.2011, 12:19
Danksagung erhalten: 1 Mal

Re: Hilfe bei Skript

Beitrag von MaxWrestler » 05.02.2013, 14:40

Hallo Peter,
hast du die neueste Version von CUxD installiert ?
Hmm, ich hab eine vorab Version von Uwe, die 0.572rc2
...mal kurz nachgesehen ..

Entschuldigung, ich Depp. :oops:
Die Version mit dem Wrapper Device 3 ist noch gar nicht Public.
Hoffentlich beißt mir Uwe jetzt nicht den Kopf ab. :shock:

Sorry Peter,
du kannst ja mal bei Uwe nachfragen,
ansonsten sollte es nicht mehr lange dauer bis Uwe die neue Version rausbringt.

Es lohnt sich !

Ovidius
Beiträge: 107
Registriert: 20.08.2006, 22:33

Re: Hilfe bei Skript

Beitrag von Ovidius » 05.02.2013, 14:53

Hallo MaxWrestler,

ist kein Problem. :D Ich habe die Version 0.571a installiert. Werde sicherlich das Thermostat ausprobieren. Wenn das auch so gut funktioniert wie das was ich im Einsatz habe ist es auf alle Fälle eine tolle Sache.

Werde mich dann wohl wieder mit dem Skript auseinandersetzen, das kann ja auch nicht schaden, wenngleich ich leicht am verzweifeln bin.

Das Skript von paul53 schaltet meinen Aktor auch nicht, auch wenn ich den Aktor wie geschrieben direkt schalte.

Ich poste nochmal mein aktuelles Skript, vielleicht übersehe ich ja irgend etwas.

Code: Alles auswählen

real isttemp;
real solltemp;

isttemp = dom.GetObject("Temperatur.Büro").Value();
solltemp = dom.GetObject("Heizung.Sollwert.Büro").Value();

if (isttemp < solltemp)
{dom.GetObject("Heizung.Buero").DPByHssDP("STATE").State(1);}
else
{ if (isttemp >= solltemp)
  {dom.GetObject("Heizung.Buero").DPByHssDP("STATE").State(0);}
}
Ich habe vorsichtshalber mal aus dem Aktor den Umlaut entfernt.

Da ich parallel zum Skript zu Testzwecken einen Lampe geschaltet habe und diese aufleuchtet wenn die Bedingung meines Programms eintritt, ist zu mindest geklärt, dass der dann-Zweig mit dem Skript ausgeführt wird.

Peter

MaxWrestler
Beiträge: 237
Registriert: 11.12.2011, 12:19
Danksagung erhalten: 1 Mal

Re: Hilfe bei Skript

Beitrag von MaxWrestler » 05.02.2013, 15:15

Hallo Peter,
hast du auch den richtigen Kanalnamen vom Aktor verwendet ?
HM-Gerät Kanal.jpg
In meinem Fall währe das SD Schrank:1

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Hilfe bei Skript

Beitrag von paul53 » 05.02.2013, 15:34

Der Kanalname des Aktors muß "Heizung.Buero" lauten, der Gerätename darf nicht "Heizung.Buero" lauten !

Werden die Variablen isttemp und solltemp richtig gefüllt ?
Einfach mal unter "Skript testen":

Code: Alles auswählen

    real isttemp;
    real solltemp;

    isttemp = dom.GetObject("Temperatur.Büro").Value();
    solltemp = dom.GetObject("Heizung.Sollwert.Büro").Value();
    WriteLine(isttemp);
    WriteLine(solltemp);

    if (isttemp < solltemp)
    {dom.GetObject("Heizung.Buero").DPByHssDP("STATE").State(1);}
    else
    { if (isttemp >= solltemp)
      {dom.GetObject("Heizung.Buero").DPByHssDP("STATE").State(0);}
    }
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

Ovidius
Beiträge: 107
Registriert: 20.08.2006, 22:33

Re: Hilfe bei Skript

Beitrag von Ovidius » 05.02.2013, 18:34

Hallo,

das Problem konnte ich nun lösen. Es war von "allem" etwas dabei

nachfolgend das Skript, das nun funktioniert:

Code: Alles auswählen

real isttemp;
real solltemp;

isttemp = dom.GetObject("Temperatur.Büro").State();
solltemp = dom.GetObject("Heizung.Sollwert.Buero").Value();

if (isttemp < solltemp)
  {dom.GetObject("Heizung.Büro").DPByHssDP("STATE").State(1);}
else
  {dom.GetObject("Heizung.Büro").DPByHssDP("STATE").State(0);}
1) die Temperatur wurde vom Sensor nicht ausgelesen
Grund: - es muß State() anstelle von Value() verwendet werden - Value() lieferte den Wert false
der Name für den Kanal war nicht eindeutig, den Kanal hatte ich genauso benannt wie den Aktor
2) der Aktor hat nicht geschaltet
der Name für den Kanal war nicht eindeutig, den Kanal hatte ich genauso benannt wie den Aktor
3) if (isttemp >= solltemp) habe ich entfernt - war überflüssig

Danke für Euere Unterstützung

Peter

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Hilfe bei Skript

Beitrag von buempi » 05.02.2013, 19:00

Hallo Peter

Auf diese Art generierst du aber bei JEDEM Durchgang des Scriptes ein Sendesignal, auch wenn der Aktor schon längst den richtigen Zustand (EIN oder AUS) eingenommen hat!

Laufen mehrere Scripte mit solchen unnützen Sendesignalen, wird die gesetzlich zulässige Sendezeit von 1% irgendwann überschritten, und die ganze Steuerung stürzt ab... Ausserdem ist es möglich, dass du damit deinen eigenen Funkverkehr störst und so Signale von Sensoren ihr Ziel nicht oder nur verzögert erreichen.

Viele Grüsse
Bümpi

Ovidius
Beiträge: 107
Registriert: 20.08.2006, 22:33

Re: Hilfe bei Skript

Beitrag von Ovidius » 05.02.2013, 20:45

Hallo Bümpi,

das will natürlich noch ändern, ich war nur so froh, dass das einfache Skript mal läuft.

Peter

Antworten

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