Seite 7 von 9

Re: cron Ausdruck und Visual Studio Code

Verfasst: 4. Nov 2018 05:55
von udo1toni
hardl hat geschrieben: 3. Nov 2018 16:24 Der Block mit den contains wird aber sehr umfangreich wenn ich am Sa oder So je nach SW_2 den 1_Aus oder 2_Aus verhindern will.
Ah, jetzt verstehe ich. Die zusätzliche Ausschaltzeit soll die Ausschaltzeit 1 bzw. 2 ersetzen, falls sie aktiv ist.
hardl hat geschrieben: 3. Nov 2018 16:24 Die ")" nach xx_SW_So.state == ON scheint verrutscht.
Jepp, stimmt. Das ist mir bei meinen Tests nicht aufgefallen, weil kein Wochenende war...
Ich hab das im Posting korrigiert.

Re: cron Ausdruck und Visual Studio Code

Verfasst: 5. Nov 2018 19:05
von hardl
Hallo udo1toni,

die sitemap habe ich noch angepasst und alles scheint bestens zu funktionieren.

Ich habe jetzt noch 1 Fehler, den mit [ERROR] [io.openhabcloud.internal.CloudClient] - Socket.IO error: {}, den ich weiter oben schon mal gepostet habe und eine Warnung
2018-11-05 17:39:12.107 [WARN ] [ndclass.ZWaveAlarmSensorCommandClass] - NODE 14: Detected Fibaro FGK - 101 Door / Window sensor, only requesting alarm type Smoke, den gleichen auch für meinen zweiten Türsensor.

Sollte ich da lieber ein neues Thema öffnen?

Re: cron Ausdruck und Visual Studio Code

Verfasst: 6. Nov 2018 00:07
von udo1toni
Ja, dazu kann ich aber nichts sagen, ich nutze kein zwave. Wäre besser, wenn Du dazu ein eigenes Thema aufmachst, nicht jeder schaut in alle neuen Beiträge rein ;)

Re: cron Ausdruck und Visual Studio Code

Verfasst: 9. Nov 2018 16:55
von hardl
Hallo udo1toni,

ich bräuchte nochmal Deine Hilfe:
Folgendes habe ich geändert und eine manuelle rule zugefügt:

Code: Alles auswählen

var Number BZ_soll = null .  						//globale Variable
WZ_soll = if(WZ_Item.name.contains("Ein")) 1 else 11                 // Sollzustand nach WZ_Timer

Code: Alles auswählen

rule "Heizung BZ manu"
when
	Item BZ_Wahl_manu changed or
	Item BZ_Auto changed
then
    var Number manuwahl
	if(BZ_Auto.state == OFF) {
        manuwahl = BZ_Wahl_manu.state as Number
       logInfo("timer","WahlBZ=OFF: {}",manuwahl)
		BZ_Thermostat.sendCommand(manuwahl)
    }else {
       logInfo("timer","WahlBZ=ON: {}",BZ_soll)
     	BZ_Thermostat.sendCommand(BZ_soll)
    }
end
Die manuelle Wahl klappt einwandfrei, wenn ich aber auf Auto zurückgehe ist die BZ_soll immer leer?

Re: cron Ausdruck und Visual Studio Code

Verfasst: 9. Nov 2018 17:49
von udo1toni
Ich verstehe nicht so ganz, was Du meinst. Wenn Du BZ_soll auf null setzt (Du hast da übrigens einen einzelnen Punkt stehen, der totsicher nicht dort hingehört) ist es anschließend null bzw. leer.

Re: cron Ausdruck und Visual Studio Code

Verfasst: 9. Nov 2018 20:54
von hardl
Der Punkt ist hier im Forum reingerutscht, in der rule gibt es den nicht.

Ich möchte z.B. im Urlaub eine manuelle Temperatur einstellen und am Tag vor der Rückkehr wieder hochstellen. Das funktioniert auch gut.

Jetzt habe ich BZ_soll von val local auf auf var global geändert und mit null belegt.
Dann sollte bei der ersten timer-Initialisierung die BZ_soll mit 1 oder 11 belegt werden.

Wenn ich aber in der rule Heizung BZ manu die Variable BZ_soll anspreche ist die immer leer.

Das Anlegen der Variable BZ_soll mit "null" erfolgt doch nur bei Neustart?

Re: cron Ausdruck und Visual Studio Code

Verfasst: 9. Nov 2018 21:39
von udo1toni
Ah, jetzt verstehe ich.

Die globale Variable hast Du vor den Rules definiert?
Der Unterschied val <-> var ist, dass man mit var eine Variable definiert, mit val eine Konstante.
Konstanten können nur einmalig definiert, aber nicht geändert werden.
Global wird eine Variable bzw. Konstante durch Voranstellen vor die erste Rule in der Datei.

Re: cron Ausdruck und Visual Studio Code

Verfasst: 10. Nov 2018 09:27
von hardl
Ja, erst die Variable, dann die manuellen rules und dann die von Dir vorgeschlagenen rules.

Re: cron Ausdruck und Visual Studio Code

Verfasst: 10. Nov 2018 22:27
von udo1toni
Die Variable sollte nur dann mit null geladen werden, wenn die Rules-Datei neu geladen wird. Das scheint bei Dir nun aus unerfindlichen Gründen nicht der Fall zu sein. Möglichkeit eins wäre, dass Du irgendwo eine Rule hast, die schreibend auf die Variable zugreift und dabei null schreibt. Möglichkeit zwei wäre eine Annomalie in openHAB :) das ist aber eher unwahrscheinlich.

Du kannst als Alternative zur Variablen auch ein Item zum Zwischenspeichern nehmen, dann kannst Du jederzeit über die UI den aktuellen Wert anzeigen.
Du musst dann halt jeweils die Methoden (.postUpdate() und (.state as Number)) zum Zuweisen und Auslesen verwenden.

Re: cron Ausdruck und Visual Studio Code

Verfasst: 11. Nov 2018 09:18
von hardl
Heute funktioniert es und jetzt weiß ich auch warum.

Die Variable wird erst im Lambda des Timers mit 1 oder 11 geladen.
Wenn ich noch was an der rule ändere, wird die Rules-Datei neu geladen und die Variable entsprechend mit null. Bis zur nächsten Ausführung des Lambdas ist die Variable dann null.