Hello
its regarding item Gartenhaus_Lampe_Timer_Dauer
Item:
Number Gartenhaus_Lampe_Timer_Dauer "Timer Dauer [%d Min.]"
After restore on startup the item has the value 3.0, that means is float
Log on restart:
2020-07-05 12:36:31.603 [vent.ItemStateChangedEvent] - Gartenhaus_Lampe_Timer_Dauer changed from NULL to 3.0
Log on Error:
2020-07-05 12:44:02.988 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Gartenlicht Timer Schaltung': For input string: "3.0"
mysql.persist:
Gartenhaus_Lampe_Timer_Dauer, Gartenhaus_Lampe_Timer : strategy = everyChange, restoreOnStartup
mariadb:
MariaDB [openhab]> show fields from Item18;
+-------+-------------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------------------+-------+
| Time | datetime | NO | PRI | 0000-00-00 00:00:00 | |
| Value | smallint(6) | NO | | NULL | |
+-------+-------------+------+-----+---------------------+-------+
2 rows in set (0.00 sec)
MariaDB [openhab]> select * from Item18;
±--------------------±------+
| Time | Value |
±--------------------±------+
| 2020-06-14 23:31:43 | 5 |
| 2020-06-14 23:31:44 | 3 |
| 2020-07-05 11:21:05 | 4 |
| 2020-07-05 11:21:07 | 3 |
±--------------------±------+
Rule:
var Timer gartenlicht_timer = null // AT THE TOP OF THE RULE FILE
// ------------------------------------------------------------------------------------------------------------
rule "Gartenlicht Timer Schaltung"
when
Item Door_01_Status changed to OPEN // Terassentür wird geöffnet
then
if( Gartenhaus_Lampe_Timer.state == ON ) { // Timer in Sitemap eingeschaltet?
if( Seagard_State.state == OFF) { // Ist das Gartenlicht aus?
if( Sonne_ist.state == OFF ) { // Ist die Sonne unter gegangen?
if (gartenlicht_timer === null) { // Ist ein vorheriger Gartenlicht Timer abgelaufen?
Seagard_CMD.sendCommand(ON) // Gartenlicht einschalten
// Timer starten, Dauer wird eingestellt über Sitemap
gartenlicht_timer = createTimer(now.plusMinutes(Integer::parseInt(Gartenhaus_Lampe_Timer_Dauer.state.toString)), [ |
logInfo("rules", "Gartenlicht Timer abgelaufen") // Timer ist abgelaufen
Seagard_CMD.sendCommand(OFF) // Gartenlicht ausschalten
gartenlicht_timer = null
])
}
}
}
}
end