<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>
	Kommentare zu: Zusätzliche und hilfreiche Zeitdaten über eine Logik berechnen	</title>
	<atom:link href="https://www.smarthomeng.de/zeitdaten-ueber-eine-logik-berechnen/feed" rel="self" type="application/rss+xml" />
	<link>https://www.smarthomeng.de/zeitdaten-ueber-eine-logik-berechnen</link>
	<description>Die Device Integrations-Plattform für Dein Smart Home</description>
	<lastBuildDate>Mon, 12 Nov 2018 18:43:43 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.5</generator>
	<item>
		<title>
		Von: Marc René Frieß		</title>
		<link>https://www.smarthomeng.de/zeitdaten-ueber-eine-logik-berechnen#comment-21</link>

		<dc:creator><![CDATA[Marc René Frieß]]></dc:creator>
		<pubDate>Thu, 03 May 2018 16:21:07 +0000</pubDate>
		<guid isPermaLink="false">https://www.smarthomeng.de/?p=1643#comment-21</guid>

					<description><![CDATA[Ich habe mir das jetzt angeschaut und sehe noch nicht so recht den Verwendungszweck Deiner zusätzlichen Items? 

Die Beispiele im 2ten Post sind ok, die aber alle in den Artikel aufzunehmen und zu erklären bläht den Inhalt ziemlich auf und verwirrt eher..
Die lasse ich auch mal als Kommentar. Ist ja legitim.

Ich habe mir zudem erlaubt Deine Kommentare zu formatieren. Der interessierte Leser kann sich die ja dann im Nachgang &quot;einverleiben&quot;.
Bitte in Zukunft selber machen. ]]></description>
			<content:encoded><![CDATA[<p>Ich habe mir das jetzt angeschaut und sehe noch nicht so recht den Verwendungszweck Deiner zusätzlichen Items? </p>
<p>Die Beispiele im 2ten Post sind ok, die aber alle in den Artikel aufzunehmen und zu erklären bläht den Inhalt ziemlich auf und verwirrt eher..<br />
Die lasse ich auch mal als Kommentar. Ist ja legitim.</p>
<p>Ich habe mir zudem erlaubt Deine Kommentare zu formatieren. Der interessierte Leser kann sich die ja dann im Nachgang &#8222;einverleiben&#8220;.<br />
Bitte in Zukunft selber machen. </p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Von: sisamiwe		</title>
		<link>https://www.smarthomeng.de/zeitdaten-ueber-eine-logik-berechnen#comment-20</link>

		<dc:creator><![CDATA[sisamiwe]]></dc:creator>
		<pubDate>Wed, 02 May 2018 19:26:43 +0000</pubDate>
		<guid isPermaLink="false">https://www.smarthomeng.de/?p=1643#comment-20</guid>

					<description><![CDATA[Bei der Abfrage bzw. Berechnung von Verbrauchsdaten hätte ich auch noch ein Beispiel.
Ich ermittle des Heizölverbrauch über die Einschaltzeit des Brenners (via einem KNX-Binäreingang). Die Logik dahinter ist einfach: Der Brenner braucht 2l pro Betriebsstunde. Die Einschaltzeit des Brenners wird ermittelt und in die DB geschrieben. Der jeweiligen Verbrauchswerte werden aus den DB-Werten ermittelt.

Hier meine Items:
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;
heizung:

    brenner:
        name: Brennerstatus Heizung
        type: bool
        visu_acl: &#039;ro&#039;
        database: &#039;init&#039;
        knx_dpt: 1
        knx_cache: 0/3/91
        knx_reply: 0/3/91

        betriebsstunden:
            name: Betriebsstundenzähler Brenner Heizung in Sekunden
            type: num
            visu_acl: &#039;ro&#039;
            database: &#039;init&#039;
            eval: sh.heizung.brenner.betriebsstunden() + int(sh.heizung.brenner.prev_value()) * sh.heizung.brenner.prev_age() + int(sh.heizung.brenner.prev_value()) * -10
            eval_trigger: heizung.brenner

            gesamt:
                name: Betriebsstundenzähler Brenner Heizung in Stunden
                type: num
                visu_acl: &#039;ro&#039;
                database: &#039;init&#039;
                eval: round(sh...() / 60 / 60, 2)
                eval_trigger:
                  - ..
                  - heizung.recalc

            heute:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round((sh...() - sh...db(&#039;max&#039;, sh.time.minute.since.midnight.dbstr(), sh.time.minute.since.midnight.dbstr())) / 60 /60, 2)
                eval_trigger:
                  - ..
                  - heizung.recalc
                cache: &#039;yes&#039;

            woche:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round((sh...() - sh...db(&#039;max&#039;, sh.time.minute.since.week.dbstr(), sh.time.minute.since.week.dbstr())) / 60 / 60, 2)
                eval_trigger:
                  - ..
                  - heizung.recalc
                cache: &#039;yes&#039;

            monat:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round((sh...() - sh...db(&#039;max&#039;, sh.time.minute.since.month.dbstr(), sh.time.minute.since.month.dbstr())) / 60 / 60, 2)
                eval_trigger:
                  - ..
                  - heizung.recalc
                cache: &#039;yes&#039;

            jahr:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round((sh...() - sh...db(&#039;max&#039;, sh.time.minute.since.year.dbstr(), sh.time.minute.since.year.dbstr())) / 60 / 60, 2)
                eval_trigger:
                  - ..
                  - heizung.recalc
                cache: &#039;yes&#039;

            gestern:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round((sh...db(&#039;max&#039;, sh.time.minute.since.midnight.dbstr(), sh.time.minute.since.midnight.dbstr()) - sh...db(&#039;max&#039;, str(sh.time.minute.since.midnight() + 1440) + &#039;i&#039;, str(sh.time.minute.since.midnight() + 1440) + &#039;i&#039;)) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: &#039;yes&#039;
                database: &#039;yes&#039;

            gestern_minus1:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round((sh...db(&#039;max&#039;, str(sh.time.minute.since.midnight() + 1440) + &#039;i&#039;, str(sh.time.minute.since.midnight() + 1440) + &#039;i&#039;) - sh...db(&#039;max&#039;, str(sh.time.minute.since.midnight() + 2880) + &#039;i&#039;, str(sh.time.minute.since.midnight() + 2880) + &#039;i&#039;)) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: &#039;yes&#039;
            
            gestern_minus2:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round((sh...db(&#039;max&#039;, str(sh.time.minute.since.midnight() + 2880) + &#039;i&#039;, str(sh.time.minute.since.midnight() + 2880) + &#039;i&#039;) - sh...db(&#039;max&#039;, str(sh.time.minute.since.midnight() + 4320) + &#039;i&#039;, str(sh.time.minute.since.midnight() + 4320) + &#039;i&#039;)) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: &#039;yes&#039;
                
            gestern_minus3:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round((sh...db(&#039;max&#039;, str(sh.time.minute.since.midnight() + 4320) + &#039;i&#039;, str(sh.time.minute.since.midnight() + 4320) + &#039;i&#039;) - sh...db(&#039;max&#039;, str(sh.time.minute.since.midnight() + 5670) + &#039;i&#039;, str(sh.time.minute.since.midnight() + 5670) + &#039;i&#039;)) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: &#039;yes&#039;
                
            gestern_minus4:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round((sh...db(&#039;max&#039;, str(sh.time.minute.since.midnight() + 5670) + &#039;i&#039;, str(sh.time.minute.since.midnight() + 5670) + &#039;i&#039;) - sh...db(&#039;max&#039;, str(sh.time.minute.since.midnight() + 7200) + &#039;i&#039;, str(sh.time.minute.since.midnight() + 7200) + &#039;i&#039;)) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: &#039;yes&#039;

            gestern_minus5:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round((sh...db(&#039;max&#039;, str(sh.time.minute.since.midnight() + 7200) + &#039;i&#039;, str(sh.time.minute.since.midnight() + 7200) + &#039;i&#039;) - sh...db(&#039;max&#039;, str(sh.time.minute.since.midnight() + 8640) + &#039;i&#039;, str(sh.time.minute.since.midnight() + 8640) + &#039;i&#039;)) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: &#039;yes&#039;                
                
            vorwoche:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round((sh...db(&#039;max&#039;, sh.time.minute.since.week.dbstr(), sh.time.minute.since.week.dbstr()) - sh...db(&#039;max&#039;, str(sh.time.minute.since.week() + 10080) + &#039;i&#039;, str(sh.time.minute.since.week() + 10080) + &#039;i&#039;)) / 60 / 60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: &#039;yes&#039; 

            vorwoche_minus1:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round((sh...db(&#039;max&#039;, str(sh.time.minute.since.week() + 10080) + &#039;i&#039;, str(sh.time.minute.since.week() + 10080) + &#039;i&#039;) - sh...db(&#039;max&#039;, str(sh.time.minute.since.week() + 20160) + &#039;i&#039;, str(sh.time.minute.since.week() + 20160) + &#039;i&#039;)) / 60 / 60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: &#039;yes&#039;
                
            vorwoche_minus2:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round((sh...db(&#039;max&#039;, str(sh.time.minute.since.week() + 20160) + &#039;i&#039;, str(sh.time.minute.since.week() + 20160) + &#039;i&#039;) - sh...db(&#039;max&#039;, str(sh.time.minute.since.week() + 30240) + &#039;i&#039;, str(sh.time.minute.since.week() + 30240) + &#039;i&#039;)) / 60 / 60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: &#039;yes&#039;
                
            vorwoche_minus3:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round((sh...db(&#039;max&#039;, str(sh.time.minute.since.week() + 30240) + &#039;i&#039;, str(sh.time.minute.since.week() + 30240) + &#039;i&#039;) - sh...db(&#039;max&#039;, str(sh.time.minute.since.week() + 40320) + &#039;i&#039;, str(sh.time.minute.since.week() + 40320) + &#039;i&#039;)) / 60 / 60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: &#039;yes&#039;
                
            vormonat:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round((sh...db(&#039;max&#039;, str(sh.time.hour.since.month()) + &#039;h&#039;, str(sh.time.hour.since.month()) + &#039;h&#039;) - sh...db(&#039;max&#039;, str(sh.time.hour.since.month() + 730) + &#039;h&#039;, str(sh.time.hour.since.month() + 730) + &#039;h&#039;)) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 1 * = 1
                cache: &#039;yes&#039;
                
            vormonat_minus1:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round((sh...db(&#039;max&#039;, str(sh.time.hour.since.month() + 730) + &#039;h&#039;, str(sh.time.hour.since.month() + 730) + &#039;h&#039;) - sh...db(&#039;max&#039;, str(sh.time.hour.since.month() + 1460) + &#039;h&#039;, str(sh.time.hour.since.month() + 1460) + &#039;h&#039;)) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 1 * = 1
                cache: &#039;yes&#039;    
                
            vormonat_minus2:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round((sh...db(&#039;max&#039;, str(sh.time.hour.since.month() + 1460) + &#039;h&#039;, str(sh.time.hour.since.month() + 1460) + &#039;h&#039;) - sh...db(&#039;max&#039;, str(sh.time.hour.since.month() + 2190) + &#039;h&#039;, str(sh.time.hour.since.month() + 2190) + &#039;h&#039;)) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 1 * = 1
                cache: &#039;yes&#039;  

            vormonat_zaehlerstand:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round(sh...db(&#039;max&#039;, str(sh.time.hour.since.month()) + &#039;h&#039;, str(sh.time.hour.since.month()) + &#039;h&#039;) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 1 * = 1
                cache: &#039;yes&#039;
                
            vormonat_minus1_zaehlerstand:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round(sh...db(&#039;max&#039;, str(sh.time.hour.since.month() + 730) + &#039;h&#039;, str(sh.time.hour.since.month() + 730) + &#039;h&#039;) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 1 * = 1
                cache: &#039;yes&#039;
            
            vormonat_minus2_zaehlerstand:
                type: num
                visu_acl: &#039;ro&#039;
                eval: round(sh...db(&#039;max&#039;, str(sh.time.hour.since.month() + 1460) + &#039;h&#039;, str(sh.time.hour.since.month() + 1460) + &#039;h&#039;) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 1 * = 1
                cache: &#039;yes&#039;
&lt;/code&gt;&lt;/pre&gt;
Interessant?]]></description>
			<content:encoded><![CDATA[<p>Bei der Abfrage bzw. Berechnung von Verbrauchsdaten hätte ich auch noch ein Beispiel.<br />
Ich ermittle des Heizölverbrauch über die Einschaltzeit des Brenners (via einem KNX-Binäreingang). Die Logik dahinter ist einfach: Der Brenner braucht 2l pro Betriebsstunde. Die Einschaltzeit des Brenners wird ermittelt und in die DB geschrieben. Der jeweiligen Verbrauchswerte werden aus den DB-Werten ermittelt.</p>
<p>Hier meine Items:</p>
<pre><code class="language-yaml">
heizung:

    brenner:
        name: Brennerstatus Heizung
        type: bool
        visu_acl: 'ro'
        database: 'init'
        knx_dpt: 1
        knx_cache: 0/3/91
        knx_reply: 0/3/91

        betriebsstunden:
            name: Betriebsstundenzähler Brenner Heizung in Sekunden
            type: num
            visu_acl: 'ro'
            database: 'init'
            eval: sh.heizung.brenner.betriebsstunden() + int(sh.heizung.brenner.prev_value()) * sh.heizung.brenner.prev_age() + int(sh.heizung.brenner.prev_value()) * -10
            eval_trigger: heizung.brenner

            gesamt:
                name: Betriebsstundenzähler Brenner Heizung in Stunden
                type: num
                visu_acl: 'ro'
                database: 'init'
                eval: round(sh...() / 60 / 60, 2)
                eval_trigger:
                  - ..
                  - heizung.recalc

            heute:
                type: num
                visu_acl: 'ro'
                eval: round((sh...() - sh...db('max', sh.time.minute.since.midnight.dbstr(), sh.time.minute.since.midnight.dbstr())) / 60 /60, 2)
                eval_trigger:
                  - ..
                  - heizung.recalc
                cache: 'yes'

            woche:
                type: num
                visu_acl: 'ro'
                eval: round((sh...() - sh...db('max', sh.time.minute.since.week.dbstr(), sh.time.minute.since.week.dbstr())) / 60 / 60, 2)
                eval_trigger:
                  - ..
                  - heizung.recalc
                cache: 'yes'

            monat:
                type: num
                visu_acl: 'ro'
                eval: round((sh...() - sh...db('max', sh.time.minute.since.month.dbstr(), sh.time.minute.since.month.dbstr())) / 60 / 60, 2)
                eval_trigger:
                  - ..
                  - heizung.recalc
                cache: 'yes'

            jahr:
                type: num
                visu_acl: 'ro'
                eval: round((sh...() - sh...db('max', sh.time.minute.since.year.dbstr(), sh.time.minute.since.year.dbstr())) / 60 / 60, 2)
                eval_trigger:
                  - ..
                  - heizung.recalc
                cache: 'yes'

            gestern:
                type: num
                visu_acl: 'ro'
                eval: round((sh...db('max', sh.time.minute.since.midnight.dbstr(), sh.time.minute.since.midnight.dbstr()) - sh...db('max', str(sh.time.minute.since.midnight() + 1440) + 'i', str(sh.time.minute.since.midnight() + 1440) + 'i')) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: 'yes'
                database: 'yes'

            gestern_minus1:
                type: num
                visu_acl: 'ro'
                eval: round((sh...db('max', str(sh.time.minute.since.midnight() + 1440) + 'i', str(sh.time.minute.since.midnight() + 1440) + 'i') - sh...db('max', str(sh.time.minute.since.midnight() + 2880) + 'i', str(sh.time.minute.since.midnight() + 2880) + 'i')) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: 'yes'
            
            gestern_minus2:
                type: num
                visu_acl: 'ro'
                eval: round((sh...db('max', str(sh.time.minute.since.midnight() + 2880) + 'i', str(sh.time.minute.since.midnight() + 2880) + 'i') - sh...db('max', str(sh.time.minute.since.midnight() + 4320) + 'i', str(sh.time.minute.since.midnight() + 4320) + 'i')) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: 'yes'
                
            gestern_minus3:
                type: num
                visu_acl: 'ro'
                eval: round((sh...db('max', str(sh.time.minute.since.midnight() + 4320) + 'i', str(sh.time.minute.since.midnight() + 4320) + 'i') - sh...db('max', str(sh.time.minute.since.midnight() + 5670) + 'i', str(sh.time.minute.since.midnight() + 5670) + 'i')) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: 'yes'
                
            gestern_minus4:
                type: num
                visu_acl: 'ro'
                eval: round((sh...db('max', str(sh.time.minute.since.midnight() + 5670) + 'i', str(sh.time.minute.since.midnight() + 5670) + 'i') - sh...db('max', str(sh.time.minute.since.midnight() + 7200) + 'i', str(sh.time.minute.since.midnight() + 7200) + 'i')) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: 'yes'

            gestern_minus5:
                type: num
                visu_acl: 'ro'
                eval: round((sh...db('max', str(sh.time.minute.since.midnight() + 7200) + 'i', str(sh.time.minute.since.midnight() + 7200) + 'i') - sh...db('max', str(sh.time.minute.since.midnight() + 8640) + 'i', str(sh.time.minute.since.midnight() + 8640) + 'i')) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: 'yes'                
                
            vorwoche:
                type: num
                visu_acl: 'ro'
                eval: round((sh...db('max', sh.time.minute.since.week.dbstr(), sh.time.minute.since.week.dbstr()) - sh...db('max', str(sh.time.minute.since.week() + 10080) + 'i', str(sh.time.minute.since.week() + 10080) + 'i')) / 60 / 60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: 'yes' 

            vorwoche_minus1:
                type: num
                visu_acl: 'ro'
                eval: round((sh...db('max', str(sh.time.minute.since.week() + 10080) + 'i', str(sh.time.minute.since.week() + 10080) + 'i') - sh...db('max', str(sh.time.minute.since.week() + 20160) + 'i', str(sh.time.minute.since.week() + 20160) + 'i')) / 60 / 60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: 'yes'
                
            vorwoche_minus2:
                type: num
                visu_acl: 'ro'
                eval: round((sh...db('max', str(sh.time.minute.since.week() + 20160) + 'i', str(sh.time.minute.since.week() + 20160) + 'i') - sh...db('max', str(sh.time.minute.since.week() + 30240) + 'i', str(sh.time.minute.since.week() + 30240) + 'i')) / 60 / 60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: 'yes'
                
            vorwoche_minus3:
                type: num
                visu_acl: 'ro'
                eval: round((sh...db('max', str(sh.time.minute.since.week() + 30240) + 'i', str(sh.time.minute.since.week() + 30240) + 'i') - sh...db('max', str(sh.time.minute.since.week() + 40320) + 'i', str(sh.time.minute.since.week() + 40320) + 'i')) / 60 / 60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 * * = 1
                cache: 'yes'
                
            vormonat:
                type: num
                visu_acl: 'ro'
                eval: round((sh...db('max', str(sh.time.hour.since.month()) + 'h', str(sh.time.hour.since.month()) + 'h') - sh...db('max', str(sh.time.hour.since.month() + 730) + 'h', str(sh.time.hour.since.month() + 730) + 'h')) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 1 * = 1
                cache: 'yes'
                
            vormonat_minus1:
                type: num
                visu_acl: 'ro'
                eval: round((sh...db('max', str(sh.time.hour.since.month() + 730) + 'h', str(sh.time.hour.since.month() + 730) + 'h') - sh...db('max', str(sh.time.hour.since.month() + 1460) + 'h', str(sh.time.hour.since.month() + 1460) + 'h')) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 1 * = 1
                cache: 'yes'    
                
            vormonat_minus2:
                type: num
                visu_acl: 'ro'
                eval: round((sh...db('max', str(sh.time.hour.since.month() + 1460) + 'h', str(sh.time.hour.since.month() + 1460) + 'h') - sh...db('max', str(sh.time.hour.since.month() + 2190) + 'h', str(sh.time.hour.since.month() + 2190) + 'h')) / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 1 * = 1
                cache: 'yes'  

            vormonat_zaehlerstand:
                type: num
                visu_acl: 'ro'
                eval: round(sh...db('max', str(sh.time.hour.since.month()) + 'h', str(sh.time.hour.since.month()) + 'h') / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 1 * = 1
                cache: 'yes'
                
            vormonat_minus1_zaehlerstand:
                type: num
                visu_acl: 'ro'
                eval: round(sh...db('max', str(sh.time.hour.since.month() + 730) + 'h', str(sh.time.hour.since.month() + 730) + 'h') / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 1 * = 1
                cache: 'yes'
            
            vormonat_minus2_zaehlerstand:
                type: num
                visu_acl: 'ro'
                eval: round(sh...db('max', str(sh.time.hour.since.month() + 1460) + 'h', str(sh.time.hour.since.month() + 1460) + 'h') / 60 /60, 2)
                eval_trigger: heizung.recalc
                crontab: 1 0 1 * = 1
                cache: 'yes'
</code></pre>
<p>Interessant?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Von: sisamiwe		</title>
		<link>https://www.smarthomeng.de/zeitdaten-ueber-eine-logik-berechnen#comment-19</link>

		<dc:creator><![CDATA[sisamiwe]]></dc:creator>
		<pubDate>Wed, 02 May 2018 19:20:52 +0000</pubDate>
		<guid isPermaLink="false">https://www.smarthomeng.de/?p=1643#comment-19</guid>

					<description><![CDATA[Hi,
ich habe das auch so in Verwendung.
Um bei Verbrauchsangaben den richtigen Monat zu haben, habe ich die Logik im folgende Punkte ergänzt:
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;
# Aktueller Monat
sh.time.month.current(sh_now.month)

# Aktuelles Jahr
sh.time.year.current(sh_now.year)

# Aktuelles Monat/Jahr
today_date = datetime.date.today()
sh.time.date.current_month(today_date.strftime(&quot;%m/%Y&quot;))

# Letzter Monat/Jahr
last_month = today_date - relativedelta(months=1)
sh.time.date.last_month(last_month.strftime(&quot;%m/%Y&quot;))

# Vorletzter Monat/Jahr
last_month_but_one = today_date - relativedelta(months=2)
sh.time.date.last_month_but_one(last_month_but_one.strftime(&quot;%m/%Y&quot;))

# VorVorletzter Monat/Jahr
last_month_but_two = today_date - relativedelta(months=3)
sh.time.date.last_month_but_two(last_month_but_two.strftime(&quot;%m/%Y&quot;))
&lt;/code&gt;&lt;/pre&gt;

und die Items:
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;
    date:

        current_month:
            type: foo
            
        last_month:
            type: foo    
        
        last_month_but_one:
            type: foo
        
        last_month_but_two:
            type: foo  
    
    year:

        current:
            type: num
&lt;/code&gt;&lt;/pre&gt;

GGf. kannst Du das ergänzen

Michael]]></description>
			<content:encoded><![CDATA[<p>Hi,<br />
ich habe das auch so in Verwendung.<br />
Um bei Verbrauchsangaben den richtigen Monat zu haben, habe ich die Logik im folgende Punkte ergänzt:</p>
<pre><code class="language-python">
# Aktueller Monat
sh.time.month.current(sh_now.month)

# Aktuelles Jahr
sh.time.year.current(sh_now.year)

# Aktuelles Monat/Jahr
today_date = datetime.date.today()
sh.time.date.current_month(today_date.strftime("%m/%Y"))

# Letzter Monat/Jahr
last_month = today_date - relativedelta(months=1)
sh.time.date.last_month(last_month.strftime("%m/%Y"))

# Vorletzter Monat/Jahr
last_month_but_one = today_date - relativedelta(months=2)
sh.time.date.last_month_but_one(last_month_but_one.strftime("%m/%Y"))

# VorVorletzter Monat/Jahr
last_month_but_two = today_date - relativedelta(months=3)
sh.time.date.last_month_but_two(last_month_but_two.strftime("%m/%Y"))
</code></pre>
<p>und die Items:</p>
<pre><code class="language-yaml">
    date:

        current_month:
            type: foo
            
        last_month:
            type: foo    
        
        last_month_but_one:
            type: foo
        
        last_month_but_two:
            type: foo  
    
    year:

        current:
            type: num
</code></pre>
<p>GGf. kannst Du das ergänzen</p>
<p>Michael</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
