Hi All,
My issue seems similar to the one discussed in this thread.
Here’s what I’m struggling with:
If I use the following code without the + ""
(commented out), I get this error:
Script execution of rule with UID 'change-2' failed: 'split' is not a member of 'org.openhab.core.types.State'; line 52, column 41, length 19 in change
logInfo("Change.rules","------- Start -------")
val maxItem = OpenWeather_Aussentemperatur.maximumSince(now.minusHours(12),"jdbc").state
val maxItem2 = maxItem //+ ""
val Number zahl = Float::parseFloat(maxItem2.split(" ").get(0))
if (zahl >= 21) {
logInfo("Change.rules","#### Success ########")
}
logInfo("Change.rules","------- END -------")
If I uncomment the + ""
, everything works fine
logInfo("Change.rules","------- Start -------")
val maxItem = OpenWeather_Aussentemperatur.maximumSince(now.minusHours(12),"jdbc").state
val maxItem2 = maxItem + ""
val Number zahl = Float::parseFloat(maxItem2.split(" ").get(0))
if (zahl >= 21) {
logInfo("Change.rules","#### Success ########")
}
logInfo("Change.rules","------- END -------")
I’ve enabled debug logging for my JDBC config, here are some additional details below.
Maybe someone can point out what I’m doing wrong?
With + ""
:
2025-07-06 16:09:08.282 [INFO ] [enhab.core.model.script.Change.rules] - ------- Start -------
2025-07-06 16:09:08.283 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::query: item is OpenWeather_Aussentemperatur
2025-07-06 16:09:08.283 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::getHistItemFilterQuery filter='true' numberDecimalcount='3' table='openweather_aussentemperatur_0001' item='OpenWeather_Aussentemperatur (Type=NumberItem, State=24.59 °C, Label=Außentemperatur, Category=Temperature, Tags=[Temperature, Measurement], Groups=[OpenWeather_Vorhersage, gPersistence, gTemperatur])' itemName='OpenWeather_Aussentemperatur'
2025-07-06 16:09:08.284 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::getHistItemFilterQueryProvider filter = FilterCriteria [itemName=OpenWeather_Aussentemperatur, beginDate=2025-07-06T04:09:08.282753921+02:00[Europe/Berlin], endDate=2025-07-06T16:09:08.283137986+02:00[Europe/Berlin], pageNumber=0, pageSize=2147483647, operator=EQ, ordering=ASCENDING, state=null], numberDecimalcount = 3, table = openweather_aussentemperatur_0001, simpleName = OpenWeather_Aussentemperatur
2025-07-06 16:09:08.285 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::query queryString = SELECT time, value FROM openweather_aussentemperatur_0001 WHERE TIME>='2025-07-06 04:09:08' AND TIME<='2025-07-06 16:09:08' ORDER BY time ASC
2025-07-06 16:09:08.285 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::doGetHistItemFilterQuery sql=SELECT time, value FROM openweather_aussentemperatur_0001 WHERE TIME>='2025-07-06 04:09:08' AND TIME<='2025-07-06 16:09:08' ORDER BY time ASC
2025-07-06 16:09:08.287 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '16.77', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.288 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '16.77', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.289 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '17.11', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.289 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '17.11', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.290 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '17.01', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.290 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '17.01', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.291 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '19.75', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.292 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '19.75', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.292 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '20.81', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.293 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '20.81', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.293 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '23.07', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.294 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '23.07', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.294 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '23.99', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.295 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '23.99', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.295 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '25.14', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.296 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '25.14', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.296 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '26.07', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.297 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '26.07', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.297 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '25.96', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.298 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '25.96', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.298 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '25.91', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.299 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '25.91', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.299 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '25.34', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.300 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '25.34', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.300 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '24.59', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.301 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '24.59', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.302 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC: Query for item 'OpenWeather_Aussentemperatur' returned 26 rows in 19 ms
2025-07-06 16:09:08.302 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::query: item is OpenWeather_Aussentemperatur
2025-07-06 16:09:08.303 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::getHistItemFilterQuery filter='true' numberDecimalcount='3' table='openweather_aussentemperatur_0001' item='OpenWeather_Aussentemperatur (Type=NumberItem, State=24.59 °C, Label=Außentemperatur, Category=Temperature, Tags=[Temperature, Measurement], Groups=[OpenWeather_Vorhersage, gPersistence, gTemperatur])' itemName='OpenWeather_Aussentemperatur'
2025-07-06 16:09:08.303 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::getHistItemFilterQueryProvider filter = FilterCriteria [itemName=OpenWeather_Aussentemperatur, beginDate=null, endDate=2025-07-06T04:09:08.282753921+02:00[Europe/Berlin], pageNumber=0, pageSize=1, operator=EQ, ordering=DESCENDING, state=null], numberDecimalcount = 3, table = openweather_aussentemperatur_0001, simpleName = OpenWeather_Aussentemperatur
2025-07-06 16:09:08.304 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::query queryString = SELECT time, value FROM openweather_aussentemperatur_0001 WHERE TIME<='2025-07-06 04:09:08' ORDER BY time DESC LIMIT 0,1
2025-07-06 16:09:08.304 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::doGetHistItemFilterQuery sql=SELECT time, value FROM openweather_aussentemperatur_0001 WHERE TIME<='2025-07-06 04:09:08' ORDER BY time DESC LIMIT 0,1
2025-07-06 16:09:08.306 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '17.65', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:09:08.307 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC: Query for item 'OpenWeather_Aussentemperatur' returned 1 rows in 4 ms
2025-07-06 16:09:08.309 [INFO ] [enhab.core.model.script.Change.rules] - #### Success ########
2025-07-06 16:09:08.309 [INFO ] [enhab.core.model.script.Change.rules] - ------- END -------
With out commented //+ ""
:
2025-07-06 16:10:06.928 [INFO ] [enhab.core.model.script.Change.rules] - ------- Start -------
2025-07-06 16:10:06.929 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::query: item is OpenWeather_Aussentemperatur
2025-07-06 16:10:06.929 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::getHistItemFilterQuery filter='true' numberDecimalcount='3' table='openweather_aussentemperatur_0001' item='OpenWeather_Aussentemperatur (Type=NumberItem, State=24.59 °C, Label=Außentemperatur, Category=Temperature, Tags=[Temperature, Measurement], Groups=[OpenWeather_Vorhersage, gPersistence, gTemperatur])' itemName='OpenWeather_Aussentemperatur'
2025-07-06 16:10:06.930 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::getHistItemFilterQueryProvider filter = FilterCriteria [itemName=OpenWeather_Aussentemperatur, beginDate=2025-07-06T04:10:06.928847536+02:00[Europe/Berlin], endDate=2025-07-06T16:10:06.929184269+02:00[Europe/Berlin], pageNumber=0, pageSize=2147483647, operator=EQ, ordering=ASCENDING, state=null], numberDecimalcount = 3, table = openweather_aussentemperatur_0001, simpleName = OpenWeather_Aussentemperatur
2025-07-06 16:10:06.931 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::query queryString = SELECT time, value FROM openweather_aussentemperatur_0001 WHERE TIME>='2025-07-06 04:10:06' AND TIME<='2025-07-06 16:10:06' ORDER BY time ASC
2025-07-06 16:10:06.931 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::doGetHistItemFilterQuery sql=SELECT time, value FROM openweather_aussentemperatur_0001 WHERE TIME>='2025-07-06 04:10:06' AND TIME<='2025-07-06 16:10:06' ORDER BY time ASC
2025-07-06 16:10:06.934 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '16.77', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.934 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '16.77', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.935 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '17.11', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.936 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '17.11', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.936 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '17.01', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.937 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '17.01', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.938 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '19.75', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.938 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '19.75', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.939 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '20.81', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.939 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '20.81', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.940 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '23.07', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.940 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '23.07', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.941 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '23.99', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.942 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '23.99', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.942 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '25.14', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.943 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '25.14', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.943 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '26.07', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.944 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '26.07', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.944 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '25.96', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.945 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '25.96', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.945 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '25.91', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.946 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '25.91', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.947 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '25.34', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.947 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '25.34', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.948 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '24.59', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.948 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '24.59', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.949 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC: Query for item 'OpenWeather_Aussentemperatur' returned 26 rows in 20 ms
2025-07-06 16:10:06.949 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::query: item is OpenWeather_Aussentemperatur
2025-07-06 16:10:06.950 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::getHistItemFilterQuery filter='true' numberDecimalcount='3' table='openweather_aussentemperatur_0001' item='OpenWeather_Aussentemperatur (Type=NumberItem, State=24.59 °C, Label=Außentemperatur, Category=Temperature, Tags=[Temperature, Measurement], Groups=[OpenWeather_Vorhersage, gPersistence, gTemperatur])' itemName='OpenWeather_Aussentemperatur'
2025-07-06 16:10:06.950 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::getHistItemFilterQueryProvider filter = FilterCriteria [itemName=OpenWeather_Aussentemperatur, beginDate=null, endDate=2025-07-06T04:10:06.928847536+02:00[Europe/Berlin], pageNumber=0, pageSize=1, operator=EQ, ordering=DESCENDING, state=null], numberDecimalcount = 3, table = openweather_aussentemperatur_0001, simpleName = OpenWeather_Aussentemperatur
2025-07-06 16:10:06.951 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::query queryString = SELECT time, value FROM openweather_aussentemperatur_0001 WHERE TIME<='2025-07-06 04:10:06' ORDER BY time DESC LIMIT 0,1
2025-07-06 16:10:06.952 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::doGetHistItemFilterQuery sql=SELECT time, value FROM openweather_aussentemperatur_0001 WHERE TIME<='2025-07-06 04:10:06' ORDER BY time DESC LIMIT 0,1
2025-07-06 16:10:06.955 [DEBUG] [istence.jdbc.internal.db.JdbcBaseDAO] - JDBC::ItemResultHandler::handleResult getState value = '17.65', unit = '°C', getClass = 'class java.lang.Double', clazz = 'Double'
2025-07-06 16:10:06.955 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC: Query for item 'OpenWeather_Aussentemperatur' returned 1 rows in 5 ms
2025-07-06 16:10:06.958 [ERROR] [.handler.AbstractScriptModuleHandler] - Script execution of rule with UID 'change-2' failed: 'split' is not a member of 'org.openhab.core.types.State'; line 52, column 41, length 19 in change