Timer Ablauf

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

shuo
Beiträge: 181
Registriert: 1. Sep 2018 18:24

Re: Timer Ablauf

Beitrag von shuo »

Super Udo. Vielen Dank für die Erklärungen. Jetzt ist es aboslut verständlich.

shuo
Beiträge: 181
Registriert: 1. Sep 2018 18:24

Re: Timer Ablauf

Beitrag von shuo »

Hi Udo, ich versuche die Konvertierungsfehler zu lösen - leider ohne Erfolg.

Z.B.

Code: Alles auswählen

nChargeLevel  = (RenaultZEServices_Zoe_ChargeLevel.state as Number).floatValue 
oder

Code: Alles auswählen

nChargeLevel  = (RenaultZEServices_Zoe_Charging_Target.state as Number).floatValue 
werden immer ausgegeben als:

Code: Alles auswählen

Type mismatch: cannot convert from float to int(org.eclipse.xtext.xbase.validation.IssueCodes.incompatible_types)
Aber der Ausdruck passt doch. Was läuft hier falsch?

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Timer Ablauf

Beitrag von peter-pan »

... versuche mal die Variablen so zu initialisieren:

Code: Alles auswählen

var float nChargeLevel = 0.0 
Ich vermute mal, das

Code: Alles auswählen

var nChargeLevel = 0
als Integer definiert wird.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

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

Re: Timer Ablauf

Beitrag von udo1toni »

Eigentlich sollte die Variable so definiert werden:

Code: Alles auswählen

var Number nChargeLevel = 0
Und das sollte dann ausreichen, um auch Float speichern zu können.

Bitte Primitives, so weit möglich, vermeiden.
float, int, boolean usw. -> Primitive
Number, Integer, Boolean -> Objekt

Primitives haben keine Methoden und brauchen ungleich länger zur Initialisierung (Ich meine etwa Faktor 30...), das sind echte Zeitfresser.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

shuo
Beiträge: 181
Registriert: 1. Sep 2018 18:24

Re: Timer Ablauf

Beitrag von shuo »

udo1toni hat geschrieben: 25. Jan 2022 02:14 var Number nChargeLevel = 0
Das hat das Problem gelöst.

Ich habe jetzt aber auch noch folgede Fehlermeldungen, mit der ich nichts Anfangen kann, bzw finde einfach keinen Fehler. Ich habe mal ein Screenshot gemacht um das einfacher zu halten:
failures.PNG
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Re: Timer Ablauf

Beitrag von udo1toni »

Type mismatched weist in diesem Kontext auf einen Klammerfehler hin. Kopiere bitte einmal die komplette Rule und füge sie hier (mit Code-Tags) als Text ein. Die Zeilen sind im Screenshot nicht vollständig sichtbar.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

shuo
Beiträge: 181
Registriert: 1. Sep 2018 18:24

Re: Timer Ablauf

Beitrag von shuo »

Vielleicht findest Du den Fehler:

Code: Alles auswählen

rule "schedule charging timer"
when
    Item KebaState changed or
    Item KebaPower changed
then
    if(KebaPower.state > 0 && KebaState.state == 3 && tMyTimer === null){                                              // falls Timer nicht existiert und Zoe lädt
        tMyTimer = createTimer(now.plusSeconds(1), [|                                                                 // Timer anlegen und gleich starten
            val tSched = if(myTime.state instanceof Number) (myTime.state as Number) else 0                           // Zykluszeit in Minuten
            val results_status = executeCommandLine(Duration.ofSeconds(30), "sudo", "-u", "openhabian", "/usr/local/bin/pyze", "status", "--km")
            logInfo("charge", "results_Status Plugged {}", results_status)
            val results_vehicle = executeCommandLine(Duration.ofSeconds(30),"sudo", "-u", "openhabian", "/usr/local/bin/pyze", "vehicles")
            logInfo("charge", "results_Vehicle Plugged {}", results_vehicle)
            if(tSched > 0)
                logInfo("charge","Timer wird in {} Minuten erneut ausgeführt!",tSched)
                tMyTimer.reschedule(now.plusMinutes(tSched))
            else {
                logInfo("charge","Timer wird nicht mehr ausgeführt!")
                tMyTimer = null
            }
        ])
    }
end

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

Re: Timer Ablauf

Beitrag von udo1toni »

Falls der Code identisch mit dem aus viewtopic.php?p=41605#p41605 ist, da habe ich auf jeden Fall auch ein Klammerpaar vergessen. (Im Originalposting jetzt korrigiert, es geht um die Zeile

Code: Alles auswählen

if(tSched > 0)
und das nachfolgende

Code: Alles auswählen

else {
Leider sehe ich aber momentan keinen anderen Klammerfehler.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

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

Re: Timer Ablauf

Beitrag von udo1toni »

Ah, noch ein zweiter Fehler... Cannot convert from Number to long...

Ändere bitte diese Zeile ab:

Code: Alles auswählen

val tSched = if(myTime.state instanceof Number) (myTime.state as Number).intValue else 0
                                                                        ^^^^^^^^ 
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

shuo
Beiträge: 181
Registriert: 1. Sep 2018 18:24

Re: Timer Ablauf

Beitrag von shuo »

Auf die fehlenden Klammern hätte ich auch selber drauf kommen können. Da bin ich wohl mit der if - Abfrage weiter oben (wo keine explizit benötigt wird) durcheinander gekommen. Vielen Dank!

Könntest Du mir vielleicht noch das
*.intValue
erklären?

Antworten