Frage zur scripterstellung - keine Ahnung zur Syntax

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
Benutzeravatar
homie_
Beiträge: 71
Registriert: 10.03.2016, 23:21

Frage zur scripterstellung - keine Ahnung zur Syntax

Beitrag von homie_ » 15.05.2018, 23:13

Hallo,
möchte ein script erstellen
glaube zur Geschichte muss man nichts erklären - ist unten selbsterklärend.
Das unten angedeudete Script funktioniert so natürlich nicht - zu viele syntaxfehler.
Vielleicht könnte mir jemand helfen :D



Code: Alles auswählen

!!! hier sollen für je eine Wetterlage (3 Kategorien) Zeiten über 6 Variablen (für versch. Sprenger) gesetzt werden
!!! hier Var.1

var w = dom.GetObject("W_Bewä_Typ (9=Aus)").Value();

 if "W_Bewä_Typ (9=Aus")=1

var z1 = dom.GetObject("Sprenger z1").Value();
var z1 = 22;
dom.GetObject("Sprenger z1").State(z1)

var z2 = dom.GetObject("Sprenger z2").Value();
var z2 = 15;
dom.GetObject("Sprenger z1").State(z2)

!!! z3 bis zx (mir reichen eigentl 6)

!!! nun Var.2

 if "W_Bewä_Typ (9=Aus")=2

var a = dom.GetObject("Sprenger z1").Value();
var a = 22;
dom.GetObject("Sprenger z1").State(a)

!!! hier auch wieder z1 bis zx (mir reichen eigentl 6)

********************************************
das ganze würde über ein Programm Zeit-gesteuert starten.
Vielleicht kann das jemand so grammatikalisch für mich hinbiegen :D ??

Vielen Dank für Eure Hilfe
Zuletzt geändert von alchy am 16.05.2018, 20:31, insgesamt 2-mal geändert.
Grund: Code in Codetags posten & Titel geändert
LG
HOMIE_

Benutzeravatar
AndiN
Beiträge: 2189
Registriert: 10.06.2015, 08:54
Wohnort: Hennef

Re: Frage zur scripterstellung - keine Ahnung zur Grammatik

Beitrag von AndiN » 16.05.2018, 20:29

Hallo,

bin auch kein Skriptprofi, aber vielleicht probieren wir es mal mit Hilfe zur Selbsthilfe?

Code: Alles auswählen

var w = dom.GetObject("W_Bewä_Typ (9=Aus)").Value();
Hier ordnest Du der Variable W den Wert der Systemvariable "W_Bewä_Typ (9=Aus)" zu. Ich halte es für bedenklich eine Variable mit "(" und "=" zu benennen (wenn das überhaupt möglich ist)

Code: Alles auswählen

 if "W_Bewä_Typ (9=Aus")=1
Keine Ahnung was Du jetzt machen möchtest. Aber ich würde mal behaupten Du möchtest wissen ob die o.a. Variable auf 1 steht. Dann solltest Du wenn überhaupt if W=1 nehmen und nicht "W_Bewä_Typ (9 Aus)... Das macht hier doch gar keinen Sinn

Eine IF Funktion sieht im Skript so aus:

Code: Alles auswählen

if (w==1){
== für Gleich
!= für Ungleich
{ für den IF Block

Code: Alles auswählen

var z1 = dom.GetObject("Sprenger z1").Value();
Okay, Du weißt der Variable Z1 den Wert der Systemvariable von "Sprenger z1" zu. Haken dran

Code: Alles auswählen

var z1 = 22;
???? Jetzt weißt Du der selben Variable 22 zu. Damit ist die vorherige Zeile überflüssig

Code: Alles auswählen

dom.GetObject("Sprenger z1").State(z1)
Jetzt weißt Du der Systemvariable z1 den Wert 22 zu. Passt. Nur das ";" fehlt hinter der Zeile

Code: Alles auswählen

var z2 = dom.GetObject("Sprenger z2").Value();
var z2 = 15;
dom.GetObject("Sprenger z1").State(z2)
Hier wie oben schon beschrieben ist die erste Zeile überflüssig und in der letzten Zeile fehlt das ";"
Und am Ende vom IF BLock die "}" nicht vergessen.

Die Frage ist warum Du das nicht mit einem Programm (kein Skript) realisierst.

Nach dem Motto

Code: Alles auswählen

WENN: Systemvariable "W_Bewä_Typ (9=Aus) = 1 
DANN: Sprenger Z1=22
usw.
Andi
Greenhorn

Letzter Reboot: 16.08.18 - CuXD Update // Uptime-Rekord: 65 Tage
Systeminfos: 140 Variablen, 78 Programme, 2810 Datenpunkte, 438 Kanäle, 126 Geräte (4x CUX28 (1 Timer, 1 Ping/Alive, 1 Exec, 1x CCU CPU))
Systeminfos bis Rückbau August 2018: 328 Variablen, 160 Programme, 3098 Datenpunkte, 472 Kanäle, 128 Geräte (6x CUX28 (3 Timer, 1 Ping/Alive, 1 Exec, 1x CCU CPU))
Raspberry Firmware: 2.35.16.20180715
Addons: Drucken 1.2a - HQ WebUI 2.5.4 - XML-API 1.16 - CUx-Daemon 2.1.0 - E-Mail 1.6.8 - hm_pdetect 1.3 - VPN cloudmatic
System angebunden: 3 Roomba 650 Staubsauger - 1 Sprachausgabe via Home24 Media - Zentrale: Asus TF103 mit Home24 Tablet


Diverse Links

Benutzeravatar
Sammy
Beiträge: 6724
Registriert: 09.09.2008, 20:47

Re: Frage zur scripterstellung - keine Ahnung zur Syntax

Beitrag von Sammy » 17.05.2018, 07:32

Und Sonderzeichen (und Umlaute) ("Bewä) sind ein weiterer unnötiger Stolperstein. Bitte die Tipps für Anfänger lesen.

Gruß Sammy
Links: CCU-Logik, Tipps für Anfänger, WebUI-Doku, Expertenparameter, virtuelle Aktorkanäle
Inventur vom 22.01.14: 516 Kanäle in 165 Geräten, 132 Programme, 270 Direkte Verknüpfungen
Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!

Benutzeravatar
homie_
Beiträge: 71
Registriert: 10.03.2016, 23:21

Re: Frage zur scripterstellung - keine Ahnung zur Syntax

Beitrag von homie_ » 17.05.2018, 14:22

Hallo,

erst mal danke für den Tipp Umlaute rauszunehmen und zweitens bin ich schwer begeistert über die Hilfsbereitschaft in diesem Forum!
Schön die "Hilfe zur Selbsthilfe-Methode" :D . Bin nur grad leider im Zeitstress und werde das hoffentlich am Wochenende schaffen Schritt für Schritt zu probieren.
Schaut aber gut aus wie ich meine! Habe ja schon geschafft einen Sprenger exemplarisch mit einer zugewiesenen Zeitsys.Variable zu starten und zeitgenau zu stoppen.
Soweit so gut.

zu: "Keine Ahnung was Du jetzt machen möchtest."
Ich versuchs mal .. :lol:
mein Plan ist folgender: ich habe 12 Sprenger die wg. Wasserdruck alle nacheinander laufen müssen. Hatte das bisher in einem unendlichen Programm: wenn Zeit dann sprenger 1 von 01 - 1800sec; spenger 2 von 1802 - 3604sec usw. Das ganze nach Wetter in 4 verschiedenen Stufen (also 4 Programme). Nachteile dieser Version: bei Trockenheit läuft ein Programm am Abend über 2-3h. Läuft es an ist es nicht mehr (oder nur schwer) zu stoppen. Oder will man eine Zeit verändern muss mann wieder alle Zeiten durchdenken ...
Die neue Idee ist über meine Sysvariable "W_Bewä_Typ (9=Aus)" (Umlaute kille ich noch - sorry) 1 = starke Trockenheit; 2 =mittlere T; 3=wenig; 4= nur Tropfer; ... bis 9=aus; die Dauer der Bewässerung über meinen Regensensor weiterhin automatisch gewechselt werden (das klappt schon mit meinen Programmen so lala).
Mit dem neuen System gibt es dann zu jedem Wert (1-9 s.o.) ein script mit den Variblen der Bewässerungsdauer in Minuten pro Sprenger (im script alle fast tabellarisch untereinander, jeder Wert leicht änderbar). Dann gibt es zu jedem Spenger ein Programm: starte wenn der "Vorsprenger ausgeht mit Deiner vorab zugewiesenen Zeit (und falls es doch mal entgegen aller Vorhersagen zu regnen beginnt wird die Systemvariable 0 und alle anderen Sprenger starten nicht mehr. Hoffe verständlich erklärt.
Hab natürlich das Forum rauf und runter durchsucht um das Rad nicht nochmal erfinden zu müssen aber nichts so recht passendes für mich gefunden.

Melde mich sobald ich meine "Selbsthilfetests" durchhabe!
LG
HOMIE_

Benutzeravatar
homie_
Beiträge: 71
Registriert: 10.03.2016, 23:21

Re: Frage zur scripterstellung - keine Ahnung zur Syntax

Beitrag von homie_ » 19.05.2018, 12:07

bin gerade dabei alle meine ä ö ü ß rauszunehmen. Blöd dass im System selbst Umlaute ständig vorkommen:
"Programme und Verknüpfungen"
"nur prüfen"
"Geräte anlernern"
"Geräte"
usw.

Da macht man natürlich munter weiter ... :lol:
Aber ich glaube es lohnt sich alles zu bereinigen ....
LG
HOMIE_

Antworten

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