[gelöst] userreading überschreibt Reading mit "Nichts"

Begonnen von SouzA, 13 März 2023, 12:26:34

Vorheriges Thema - Nächstes Thema

SouzA

Hallo liebe Leute,

ich habe ein Problem mit einem Userreading.
Bei einer bestimmten Bedingung soll eine 1 gesetzt werden, und wenn eine andere Bedingung erfüllt ist soll eine 0 gesetzt werden.
Jetzt ist es aber so, dass wenn keines von beiden erfüllt ist, dann bleibt das Reading nicht bestehen und ist leer, also wenn die Temp zwischen der Bedingung 1 und der Bedingung 2 ist.
Es soll aber das zuvor geschriebene (1 oder 0) drin bleiben....
Hat da jemand eine Idee zu?

Hier das Userreading dazu:
Heizanforderung {if ((ReadingsVal("Temp_kp","temperature",0) <= (ReadingsVal("Temp_kp","dewpoint_on",0)))) {return 1} elsif ((ReadingsVal("Temp_kp","temperature",0) >= (ReadingsVal("Temp_kp","dewpoint_off",0)))) {return 0}}

Vielen Dank für Unterstützung.
Bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

betateilchen

Abgesehen davon, dass Du gefühlt 50 Klammern zuviel verwendest, fehlt in Deiner Logik irgendwo ein abschließender "else" Zweig.
Außerdem ist Deine Logik dahingehend falsch, dass Du sowohl auf <= als auch >= prüfst - das = sollte man nicht zweimal verwenden.


Heizanforderung {
return 1 if ReadingsNum("Temp_kp","temperature",0) <= ReadingsNum("Temp_kp","dewpoint_on",0);
return 0 if ReadingsNum("Temp_kp","temperature",0) >  ReadingsNum("Temp_kp","dewpoint_off",0);
return <hier musst Du noch eintragen, welchen Wert Du als dritte Alternative haben möchtest>;
}
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

SouzA

Hallo,

vielen Dank für deinen Beitrag.

Dewpoint_on (z.B. 13°C )und Dewpoint_off (z.B. 15°C) sind unterschiedliche Werte. Das passt doch eigentlich mit dem =....

Das ganze Konstrukt kann man wie eine Hysterese sehen.
Da kann ich keine Alternative eintragen ohne, dass diese an einer Stelle falsch wäre. Je nachdem ob die Heizanforderung gesetzt wurde oder nicht.
Also sprich, ist es richtig, dass dann im Reading leere herrscht?

Habe deine Schreibweise mal übernommen. Ist übersichtlicher.
Danke dafür.

Bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

betateilchen

#3
Zitat von: SouzA am 13 März 2023, 13:09:06
Dewpoint_on (z.B. 13°C )und Dewpoint_off (z.B. 15°C) sind unterschiedliche Werte. Das passt doch eigentlich mit dem =....

Ja, stimmt, das ist mir dann im Nachgang, als ich mein Codeschnipsel angeschaut habe, auch aufgefallen :)

Zitat von: SouzA am 13 März 2023, 13:09:06
Also sprich, ist es richtig, dass dann im Reading leere herrscht?

Das muss nicht so sein. Du kannst doch als dritte Alternative einfach den vorhandenen Wert zurückliefern.


Heizanforderung {
return 1 if ReadingsNum("Temp_kp","temperature",0) <= ReadingsNum("Temp_kp","dewpoint_on",0);
return 0 if ReadingsNum("Temp_kp","temperature",0) >= ReadingsNum("Temp_kp","dewpoint_off",0);
return ReadingsNum(<device>,<vorhandenes reading>,-1);
}



--
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

SouzA

Zitat von: betateilchen am 13 März 2023, 13:14:57
Ja, stimmt, das ist mir dann im Nachgang, als ich mein Codeschnipsel angeschaut habe, auch aufgefallen :)

Das muss nicht so sein. Du kannst doch als dritte Alternative einfach den vorhandenen Wert zurückliefern.


Heizanforderung {
return 1 if ReadingsNum("Temp_kp","temperature",0) <= ReadingsNum("Temp_kp","dewpoint_on",0);
return 0 if ReadingsNum("Temp_kp","temperature",0) >= ReadingsNum("Temp_kp","dewpoint_off",0);
return ReadingsNum(<device>,<vorhandenes reading>,-1);
}



--

Supergeil,
oftmals ist es doch sooo einfach!
Funktioniert und gut.
Vielen Dank betateilchen!

Thx und bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee