Java Error in Presence Simulation
-
- Beiträge: 1161
- Registriert: 4. Nov 2019 22:08
Re: Java Error in Presence Simulation
Ich bin dem Fehler einen Schritt weiter auf die Schliche gekommen. Scheinbar habe ich mir den Fehler mit dem Einbau einer Dimmers eingefangen
Alle anderen Lampen haben "ON" oder "OFF", der Dimmer "0" oder "100".
Sobald ich den Dimmer aus der Gruppe der Anwesendheitssimulation entferne, läuft diese wieder.
Jetzt muss ich mal gucken, wie ich dem Dimmer "ON"/"OFF" sende
Viele Grüße
Alle anderen Lampen haben "ON" oder "OFF", der Dimmer "0" oder "100".
Sobald ich den Dimmer aus der Gruppe der Anwesendheitssimulation entferne, läuft diese wieder.
Jetzt muss ich mal gucken, wie ich dem Dimmer "ON"/"OFF" sende
Viele Grüße
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3
- udo1toni
- Beiträge: 13989
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Java Error in Presence Simulation
Ah. Ja, das erklärt es. Du kannst zwei Dinge ausprobieren.
Es gibt die Methode .getStateAs(), ich bin mit nicht sicher, ob diese auch für HistoricItems zur Verfügung steht, aber mehr als eine Fehlermeldung kann ja nicht auftreten, also .getStateAs(OnOffType) sollte immer ON oder OFF liefern.
Sollte das nicht gehen, kannst Du nach ItemType filtern:
und so in zwei voneinander getrennten Arbeitsschritten ON/OFF und 0/100 gezielt verarbeiten.
Es gibt die Methode .getStateAs(), ich bin mit nicht sicher, ob diese auch für HistoricItems zur Verfügung steht, aber mehr als eine Fehlermeldung kann ja nicht auftreten, also .getStateAs(OnOffType) sollte immer ON oder OFF liefern.
Sollte das nicht gehen, kannst Du nach ItemType filtern:
Code: Alles auswählen
...filter[i|i instanceof DimmerItem].filter[...]
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 1161
- Registriert: 4. Nov 2019 22:08
Re: Java Error in Presence Simulation
Somit werde ich morgen mal den 2. Weg probieren.Script execution of rule with UID 'ki-7' failed: 'getStateAs' is not a member of 'org.openhab.core.persistence.HistoricItem'; line 187, column 49, length 50 in ki
Danke schon mal, ich werde berichten
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3
-
- Beiträge: 1161
- Registriert: 4. Nov 2019 22:08
Re: Java Error in Presence Simulation
Wenn ich das wie folgt umsetzeudo1toni hat geschrieben: ↑3. Okt 2023 22:23Code: Alles auswählen
...filter[i|i instanceof DimmerItem].filter[...]
Code: Alles auswählen
gLights_auto.members.filter[ f | f.state instanceof SwitchItem != f.historicState(past,"jdbc").state ].forEach[ m |
logInfo("presence","Restore {} to historic state!",m.name)
val actions = getActions("pushover", "pushover:pushover-account:account")
val oldValue = m.historicState(past,"jdbc").state
m.sendCommand(oldValue.toString)
logInfo("presence","Restore {} to historic state: {}",m.name, oldValue)
Scheinbar habe ich da noch einen Fehler, auch wenn die Regel bzw. Log nichts an Fehler ausgibt.
Viele Grüße
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3
- udo1toni
- Beiträge: 13989
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Java Error in Presence Simulation
Also abgesehen davon, dass der Filter nicht sinnvoll ist, meinte ich eigentlich, dass Du zwei Schleifen baust, eine, die sich um die Switch Items kümmert, und eine zweite, die sich um die Dimmer kümmert.
Allerdings ergibt das auch keinen Sinn, die Anweisungen sollten eigentlich unabhängig vom Datentyp funktionieren. Allerdings kann es sein, dass einzelne historicItems weder ON, OFF noch einen Zahlwert liefern, das könnte den Code viel eher ins Straucheln bringen.
ist auch etwas seltsam, denn es gibt überhaupt kein Casting nach Number, jedenfalls nicht im gezeigten Snippet.
Kannst Du die Rule noch mal komplett zeigen?
Allerdings ergibt das auch keinen Sinn, die Anweisungen sollten eigentlich unabhängig vom Datentyp funktionieren. Allerdings kann es sein, dass einzelne historicItems weder ON, OFF noch einen Zahlwert liefern, das könnte den Code viel eher ins Straucheln bringen.
Code: Alles auswählen
class java.lang.String cannot be cast to class java.lang.Integer
Kannst Du die Rule noch mal komplett zeigen?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 1161
- Registriert: 4. Nov 2019 22:08
Re: Java Error in Presence Simulation
Sehr gerne, die folgende Zeile habe ich noch neu angepasst
Code: Alles auswählen
gLights_auto.members.filter[ f | f instanceof SwitchItem && f.state != f.historicState(past,"jdbc").state ].forEach[ m |
Code: Alles auswählen
rule "Presence Simulator"
when
Time cron "0 */1 * * * ?"
then
if(Absence.state != ON) // Hauptschalter aus?
return; // dann Abbruch
logInfo("Presence","START RULE")
val past = now.minusDays(7) // jetzt vor sieben Tagen
logInfo("Presence","Datum: {}", past)
val oldValue = Lampe_OG_Schlafz_Decke.historicState(past,"jdbc").state
logInfo("Presence","oldValue: {}", oldValue)
gLights_auto.members.filter[ f | f instanceof SwitchItem && f.state != f.historicState(past,"jdbc").state ].forEach[ m |
logInfo("presence","Restore {} to historic state!",m.name)
val actions = getActions("pushover", "pushover:pushover-account:account")
val oldValue = m.historicState(past,"jdbc").state
m.sendCommand(oldValue.toString)
logInfo("presence","Restore {} to historic state: {}",m.name, oldValue)
actions.sendMessageToDevice("J", "Restore " + m.name + " to historic state: " + oldValue.toString, "Presence Simulation")
]
end
Jedoch wird weiterhin ein Fehler angezeigt, wenn nichts geschaltet wird18:19:00.574 [INFO ] [rg.openhab.core.model.script.Presence] - START RULE
18:19:00.575 [INFO ] [rg.openhab.core.model.script.Presence] - Datum: 2023-09-27T18:19:00.575511666+02:00[Europe/Berlin]
18:19:00.582 [INFO ] [rg.openhab.core.model.script.presence] - Restore Lampe_EG_Deko_Wand to historic state!
18:19:00.584 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Lampe_EG_Deko_Wand' received command OFF
18:19:00.584 [INFO ] [rg.openhab.core.model.script.presence] - Restore Lampe_EG_Deko_Wand to historic state: OFF
18:19:00.587 [INFO ] [openhab.event.ItemStatePredictedEvent] - Item 'Lampe_EG_Deko_Wand' predicted to become OFF
18:19:00.589 [INFO ] [openhab.event.ItemStateUpdatedEvent ] - Item 'Lampe_EG_Deko_Wand' updated to OFF
18:19:00.590 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Lampe_EG_Deko_Wand' changed from ON to OFF
18:19:00.591 [INFO ] [openhab.event.GroupStateUpdatedEvent ] - Group 'Lampen' updated to ON through Lampe_EG_Deko_Wand
18:19:00.661 [INFO ] [openhab.event.ItemStateUpdatedEvent ] - Item 'Lampe_EG_Deko_Wand' updated to OFF
18:19:00.662 [INFO ] [openhab.event.GroupStateUpdatedEvent ] - Group 'Lampen' updated to ON through Lampe_EG_Deko_Wand
18:19:00.708 [INFO ] [rg.openhab.core.model.script.presence] - Restore Lampe_EG_Deko_Decke to historic state!
18:19:00.710 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Lampe_EG_Deko_Decke' received command OFF
18:19:00.711 [INFO ] [rg.openhab.core.model.script.presence] - Restore Lampe_EG_Deko_Decke to historic state: OFF
18:19:00.714 [INFO ] [openhab.event.ItemStatePredictedEvent] - Item 'Lampe_EG_Deko_Decke' predicted to become OFF
18:19:00.715 [INFO ] [openhab.event.ItemStateUpdatedEvent ] - Item 'Lampe_EG_Deko_Decke' updated to OFF
18:19:00.716 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Lampe_EG_Deko_Decke' changed from ON to OFF
18:19:00.717 [INFO ] [openhab.event.GroupStateUpdatedEvent ] - Group 'Lampen' updated to ON through Lampe_EG_Deko_Decke
18:19:00.780 [INFO ] [openhab.event.ItemStateUpdatedEvent ] - Item 'Lampe_EG_Deko_Decke' updated to OFF
18:19:00.781 [INFO ] [openhab.event.GroupStateUpdatedEvent ] - Group 'Lampen' updated to ON through Lampe_EG_Deko_Decke
18:19:00.801 [INFO ] [openhab.event.ItemStateUpdatedEvent ] - Item 'Lampe_EG_Deko_Decke' updated to OFF
18:19:00.801 [INFO ] [openhab.event.GroupStateUpdatedEvent ] - Group 'Lampen' updated to ON through Lampe_EG_Deko_Decke
Seltsam für mich.18:20:00.574 [INFO ] [rg.openhab.core.model.script.Presence] - START RULE
18:20:00.576 [INFO ] [rg.openhab.core.model.script.Presence] - Datum: 2023-09-27T18:20:00.575863283+02:00[Europe/Berlin]
18:20:00.585 [ERROR] [.internal.handler.ScriptActionHandler] - Script execution of rule with UID 'ki-7' failed: class java.lang.String cannot be cast to class java.lang.Integer (java.lang.String and java.lang.Integer are in module java.base of loader 'bootstrap') in ki
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3
-
- Beiträge: 1161
- Registriert: 4. Nov 2019 22:08
Re: Java Error in Presence Simulation
Nachtrag: Das hatte ich schon so weit verstanden wollte aber erst einmal eine Schleife ans laufen bekommen, bevor ich die zweite für das Dimmer Item hinzufüge. Dort dran war ich dann ja schon gescheitert
Viele Grüße
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3