Fehler im Visual Studio Nach Umstieg auf OH3

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12
Answers: 0

Re: Fehler im Visual Studio Nach Umstieg auf OH3

Beitrag von djuscha »

Super erklärt wie immer !!Vielen Dank Udo.
eine Frage hab ich ja noch
Ich habbei dem Timer erst kontrolliert ob es 0 ist

Code: Alles auswählen

 if(tGarage !== null) tGarage.cancel 
reicht nur tGarage.cancel ?
\u26d4 sind nur Smiles :) nur was fürs Auge

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 243
Wohnort: Darmstadt

Re: Fehler im Visual Studio Nach Umstieg auf OH3

Beitrag von udo1toni »

Nein, da steht tGarage?.cancel, nicht tGarage.cancel
Und null ist etwas anderes als 0 (und auch etwas anderes als NULL)

Aber der Reihe nach...
tGarage.cancel löscht den Timer aus dem Scheduler, auf den der Zeiger tGarage zeigt.
Wenn tGarage leer ist (also null), gibt es eine nullPointerException (der Pointer enthält den Wert null, deshalb tritt eine Ausnahme auf)
Um das zu vermeiden, prüft man vorher, ob tGarage ungleich null ist.

Das ? als Operator macht nichts anderes.

Code: Alles auswählen

if(tGarage !== null) tGarage.cancel
ist gleichbedeutend mit

Code: Alles auswählen

tGarage?.cancel
0 ist eine Zahl
null bedeutet "leer"
NULL ist ebenfalls "leer", aber für den Status eines Items (was etwas völlig anderes ist als eine Variable oder Konstante)

Variablen und Konstanten sind stets Zeiger auf eine Speicherzelle (passend zum Datentyp). Wenn eine Zelle "leer" ist, so wird der Zeiger auf die Speicherzelle gelöscht, stattdessen verweist der Zeiger dann auf eine ganz bestimmte Zelle im Speicher. Der Verweis auf diese Zelle hat dann die Bedeutung "leer" bzw. null.
Eine String Variable kann null oder "" enthalten, letzteres ist aber ungleich null, es handelt sich lediglich um einen String mit 0(!) Zeichen.
Wenn ein Rechenergebnis ungültig ist, wird die Number Variable auf null gesetzt, so kann eine nachfolgende Berechnung nicht mit einem falschen Ausgangswert arbeiten.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Fehler im Visual Studio Nach Umstieg auf OH3

Beitrag von int5749 »

udo1toni hat geschrieben: 9. Apr 2022 18:25
int5749 hat geschrieben: 9. Apr 2022 15:45

Code: Alles auswählen

if (now.toLocalTime.toSecondOfDay >= 79200 && now.toLocalTime.toSecondOfDay <= 17999)
Dies sollte dann genau zwischen 22:00 und später aber nur bis 5:00 (also 4:59:59) ausgeführt werden.
Ein Wert kann nicht gleichzeitig (&&) kleiner als 18000 und größer als 79199 sein :) Hier gehört ein oder (||) hin...
Hmm, musste erst eine Weile darüber nachdenken, da es bei mir funktioniert. Aber ich habe den Tageswechsel vernachlässigt.
Denn bei mir funktioniert dies mit der Zeitspanne, aber eben untertägig.

Code: Alles auswählen

(now.toLocalTime.toSecondOfDay >= 25200 && now.toLocalTime.toSecondOfDay <= 28800 && Steckd_Vorgarten.state == ON)
Gut, dass mehr als 2 Augen immer mehr sehen :D

Viele Grüße
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Benutzeravatar
udo1toni
Beiträge: 15249
Registriert: 11. Apr 2018 18:05
Answers: 243
Wohnort: Darmstadt

Re: Fehler im Visual Studio Nach Umstieg auf OH3

Beitrag von udo1toni »

Ja, das ist halt der Unterschied zwischen innerhalb und außerhalb.

Wir reden hier ja von einem Wertebereich (ich reduziere es mal auf Stunden... also 0 - 23).
Wir definieren einen unteren Grenzwert a.
Wir definieren einen oberen Grenzwert b.
Dabei gilt 0 <= a < b <= 23

Wir untersuchen eine Zahl x.
Dabei gilt 0 <= x <= 23
Nun gibt es verschiedene Möglichkeiten:
1. x <= a
2. x >= a
3. x <= b
4. x >= b

Wenn 1. erfüllt ist, muss zwingend auch 3. erfüllt sein. 4. kann nicht erfüllt sein. Es reicht eine Bedingung.
Wenn 4. erfüllt ist, muss zwingend auch 2. erfüllt sein. 1. kann nicht erfüllt sein. Es reicht eine Bedingung.
Wenn 2. erfüllt ist, kann sowohl 3. als auch 4. erfüllt sein. Es muss eine zusätzliche Prüfung stattfinden.
Wenn 3. erfüllt ist, kann sowohl 1. als auch 2. erfüllt sein. Es muss eine zusätzliche Prüfung stattfinden:

Die Prüfung "trifft a <= x <= b zu?" muss also zwei Bedingungen erfüllen, während "trifft a <= x <= b nicht zu?" nur eine der beiden Bedingung erfüllen kann.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12
Answers: 0

Re: Fehler im Visual Studio Nach Umstieg auf OH3

Beitrag von djuscha »

Super Vielen Dank!!

Antworten