Sitemap fehlerhaft in VS Code
- udo1toni
- Beiträge: 13989
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Sitemap fehlerhaft in VS Code
Freut mich zu hören!
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 174
- Registriert: 7. Sep 2021 11:28
Re: Sitemap fehlerhaft in VS Code
Hab noch ne kurze Frage habe hier noch einige Bewässerungsrules
zb:
oder die
Die Triggern beide zu unterschiedlichen Zeiten
9:30Uhr und 9:45Uhr
Kann ich solche rule in eine Datei packen. Derzeit sind sie noch in der Main UI
zb so
Ich hoffe das Format passt so...es soll das gleiche sein was die oberen beiden wiedergeben.
Mit der zeit weiss ich nicht genau wie ich das schreibe.
Im Sommer werde ich es wahrscheinlich mit Cron machen jeden Tag zb9:00Uhr von März bis Oktober
zb:
Code: Alles auswählen
if(bodenfeuchtesensorhecke_Bodenfeuchtigkeit.state instanceof Number) // enthält das Item einen gültigen Zahlenwert?
if((bodenfeuchtesensorhecke_Bodenfeuchtigkeit.state as Number).floatValue >= 40) // größer oder gleich 40?
return; // dann Rule abbrechen
if(bodenfeuchtesensorhecke_Bodentemperatur.state instanceof Number) // enthält das Item einen gültigen Zahlenwert?
if((bodenfeuchtesensorhecke_Bodentemperatur.state as Number).floatValue <= 1) // kleiner oder gleich 1?
return; // dann Rule abbrechen
shellyplugsWandprojektion192168180_Betrieb.sendCommand(ON) // Gartenwasser Hauptanschluss Ventil einschalten
Bewaesserung_2_STATE.sendCommand(ON) // Pumpe einschalten
// FRITZDECT210_Steckdose.sendCommand(ON) // Ventil einschalten
createTimer(now.plusSeconds(600), [| // Timer für Bewässerungsdauer
// FRITZDECT210_Steckdose.sendCommand(OFF) // Pumpe ausschalten
Bewaesserung_2_STATE.sendCommand(OFF) // Ventil ausschalten
shellyplugsWandprojektion192168180_Betrieb.sendCommand(OFF) // Gartenwasser Hauptanschluss Ventil ausschalten
])
Code: Alles auswählen
if(bodenfeuchtesensorkletterrosen_Bodenfeuchtigkeit.state instanceof Number) // enthält das Item einen gültigen Zahlenwert?
if((bodenfeuchtesensorkletterrosen_Bodenfeuchtigkeit.state as Number).floatValue >= 45) // größer oder gleich 45?
return; // dann Rule abbrechen
if(bodenfeuchtesensorkletterrosen_Bodentemperatur.state instanceof Number) // enthält das Item einen gültigen Zahlenwert?
if((bodenfeuchtesensorkletterrosen_Bodentemperatur.state as Number).floatValue <= 1) // kleiner oder gleich 1?
return; // dann Rule abbrechen
shellyplugsWandprojektion192168180_Betrieb.sendCommand(ON) // Gartenwasser Ventil einschalten
Bewaesserung_4_STATE.sendCommand(ON) // Pumpe einschalten
// FRITZDECT210_Steckdose.sendCommand(ON) // Ventil einschalten
createTimer(now.plusSeconds(600), [| // Timer für Bewässerungsdauer
// FRITZDECT210_Steckdose.sendCommand(OFF) // Pumpe ausschalten
Bewaesserung_4_STATE.sendCommand(OFF) // Ventil ausschalten
shellyplugsWandprojektion192168180_Betrieb.sendCommand(OFF) // Gartenwasser Ventil ausschalten
])
Die Triggern beide zu unterschiedlichen Zeiten
9:30Uhr und 9:45Uhr
Kann ich solche rule in eine Datei packen. Derzeit sind sie noch in der Main UI
zb so
Ich hoffe das Format passt so...es soll das gleiche sein was die oberen beiden wiedergeben.
Mit der zeit weiss ich nicht genau wie ich das schreibe.
Im Sommer werde ich es wahrscheinlich mit Cron machen jeden Tag zb9:00Uhr von März bis Oktober
Code: Alles auswählen
rule "Hecke"
when
Time is 9:45 // oder wie schreibt man das
then
if(bodenfeuchtesensorhecke_Bodenfeuchtigkeit.state instanceof Number) // enthält das Item einen gültigen Zahlenwert?
if((bodenfeuchtesensorhecke_Bodenfeuchtigkeit.state as Number).floatValue >= 40) // größer oder gleich 40?
return; // dann Rule abbrechen
if(bodenfeuchtesensorhecke_Bodentemperatur.state instanceof Number) // enthält das Item einen gültigen Zahlenwert?
if((bodenfeuchtesensorhecke_Bodentemperatur.state as Number).floatValue <= 1) // kleiner oder gleich 1?
return; // dann Rule abbrechen
shellyplugsWandprojektion192168180_Betrieb.sendCommand(ON) // Gartenwasser Hauptanschluss Ventil einschalten
Bewaesserung_2_STATE.sendCommand(ON) // Pumpe einschalten
// FRITZDECT210_Steckdose.sendCommand(ON) // Ventil einschalten
createTimer(now.plusSeconds(600), [| // Timer für Bewässerungsdauer
// FRITZDECT210_Steckdose.sendCommand(OFF) // Pumpe ausschalten
Bewaesserung_2_STATE.sendCommand(OFF) // Ventil ausschalten
shellyplugsWandprojektion192168180_Betrieb.sendCommand(OFF) // Gartenwasser Hauptanschluss Ventil ausschalten
])
end
rule "Kletterrosen"
when
Time is 9:30 // oder wie schreibt man das
then
if(bodenfeuchtesensorkletterrosen_Bodenfeuchtigkeit.state instanceof Number) // enthält das Item einen gültigen Zahlenwert?
if((bodenfeuchtesensorkletterrosen_Bodenfeuchtigkeit.state as Number).floatValue >= 45) // größer oder gleich 45?
return; // dann Rule abbrechen
if(bodenfeuchtesensorkletterrosen_Bodentemperatur.state instanceof Number) // enthält das Item einen gültigen Zahlenwert?
if((bodenfeuchtesensorkletterrosen_Bodentemperatur.state as Number).floatValue <= 1) // kleiner oder gleich 1?
return; // dann Rule abbrechen
shellyplugsWandprojektion192168180_Betrieb.sendCommand(ON) // Gartenwasser Ventil einschalten
Bewaesserung_4_STATE.sendCommand(ON) // Pumpe einschalten
// FRITZDECT210_Steckdose.sendCommand(ON) // Ventil einschalten
createTimer(now.plusSeconds(600), [| // Timer für Bewässerungsdauer
// FRITZDECT210_Steckdose.sendCommand(OFF) // Pumpe ausschalten
Bewaesserung_4_STATE.sendCommand(OFF) // Ventil ausschalten
shellyplugsWandprojektion192168180_Betrieb.sendCommand(OFF) // Gartenwasser Ventil ausschalten
])
end
openhab 4.1.0.M Docker (Qnap)
influxDB 1.8.2 Docker (Qnap)
Grafana v8.3.3 Docker (Qnap)
Deconz 2.19.03 Docker (Qnap)
Homematic (Raspberrymatic Pi 3B+)
Grafana, Phoscon, Shelly, Gardena, Tuya
Camera IP Binding mit ffmpeg
Solaredge PV Anlage mit 8kW Speicher (solaredgeBinding)
u.v.m.
Lg zinnik
influxDB 1.8.2 Docker (Qnap)
Grafana v8.3.3 Docker (Qnap)
Deconz 2.19.03 Docker (Qnap)
Homematic (Raspberrymatic Pi 3B+)
Grafana, Phoscon, Shelly, Gardena, Tuya
Camera IP Binding mit ffmpeg
Solaredge PV Anlage mit 8kW Speicher (solaredgeBinding)
u.v.m.
Lg zinnik
- udo1toni
- Beiträge: 13989
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Sitemap fehlerhaft in VS Code
Ich habe mir die Rules jetzt nicht exakt angeschaut, aber das Prinzip ist ganz einfach (in beiden Richtungen...)
In einer *.rules Datei steht der Rule Code samt Trigger(n). Dabei können in einer Datei beliebig viele Rules stehen. Eine komplette Rule besteht also aus einem Rahmen, der die gesamte Rule darstellt, innerhalb dieses Rahmens gibt es einen Bereich für die Trigger und einen Bereich für den eigentlichen Code, der ausgeführt wird. Das entspricht fast exakt der UI Rule, nur dass es bei der UI-Variante zusätzlich zum Block für die Trigger und den auszuführenden Code noch einen Block für zusätzliche Bedingungen gibt, die eine Ausführung der Rule verhindern können.
Die Blöcke der Rule sind gleich benannt, also when und then, der but-only-if Block hat keine Entsprechung.
Der Rahmen ist also
Was den Trigger betrifft, so gibt es drei Optionen. Time is ist für zwei Varianten korrekt, allerdings nicht für 9:45 Uhr oder 9:30 Uhr. Stattdessen könntest Du (Variante 1) noon oder midnight angeben.
Variante 2 wäre, dass Du den Namen eines DateTime Items angibst. Die Rule triggert dann zu dem Zeitpunkt, der dem Status des Items entspricht. Damit kann man also die Zeit, zu der ein e Rule triggern soll, ohne Umwege über ein Item steuern.
Variante 3 erlaubt die freie Definition von Zeitpunkten bzw. einem Ausführungsrhythmus. openHAB nutzt Quartz cron für die Definition der Zeitpunkte. Das Format sieht so aus:
Wobei Position
9:30 Uhr ist dann
Das ? muss exakt einmal im Term vorkommen, und zwar entweder als Tag im Monat oder als Wochentag. Das ? bedeutet genau wie der *, dass der Wert keine Rolle spielt. Das ? dient hier nur dazu, zu verdeutlichen, dass man nicht gleichzeitig einen Tag und einen Wochentag eingrenzen kann, also z.B. ist es nicht möglich, einen Trigger zu erstellen, der nur am Freitag dem 13. auslöst. Für Wochentag und Monat kann man statt Zahlen auch die englischen Kürzel verwenden, also MON=1,TUE=2 ... SAT=6, SUN=7.
In einer *.rules Datei steht der Rule Code samt Trigger(n). Dabei können in einer Datei beliebig viele Rules stehen. Eine komplette Rule besteht also aus einem Rahmen, der die gesamte Rule darstellt, innerhalb dieses Rahmens gibt es einen Bereich für die Trigger und einen Bereich für den eigentlichen Code, der ausgeführt wird. Das entspricht fast exakt der UI Rule, nur dass es bei der UI-Variante zusätzlich zum Block für die Trigger und den auszuführenden Code noch einen Block für zusätzliche Bedingungen gibt, die eine Ausführung der Rule verhindern können.
Die Blöcke der Rule sind gleich benannt, also when und then, der but-only-if Block hat keine Entsprechung.
Der Rahmen ist also
Code: Alles auswählen
rule "Name der Rule"
when
<hier stehen alle Trigger>
then
<hier steht der Code>
end
Variante 2 wäre, dass Du den Namen eines DateTime Items angibst. Die Rule triggert dann zu dem Zeitpunkt, der dem Status des Items entspricht. Damit kann man also die Zeit, zu der ein e Rule triggern soll, ohne Umwege über ein Item steuern.
Variante 3 erlaubt die freie Definition von Zeitpunkten bzw. einem Ausführungsrhythmus. openHAB nutzt Quartz cron für die Definition der Zeitpunkte. Das Format sieht so aus:
Code: Alles auswählen
Time cron "0 1 2 3 4 5 6"
- 0 die Sekunde,
- 1 die Minute,
- 2 die Stunde,
- 3 den Tag im Monat,
- 4 den Monat im Jahr,
- 5 den Wochentag,
- 6 das Jahr (dieser Wert ist optional)
9:30 Uhr ist dann
Code: Alles auswählen
Time cron "0 30 9 * * ?"
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet