Projekt Hamsterrad ......

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Nordmann
Beiträge: 45
Registriert: 17. Sep 2017 23:43

Re: Projekt Hamsterrad ......

Beitrag von Nordmann »

Hallo Cyrelian,

ja wenn ich das wüsste wieso die Werte immer kleiner werden.
Ich habe mal ein paar Messungen gemacht und dabei kam folgende "Entfernungsreihe" raus:
0,91
0,89
0,86
0,84
0,84
0,82
0,8
0,79
0,75

Wobei ich sagen muss, die Reihe unterbrochen war, weil ich nicht immer den Wert aufgeschrieben habe.
Aber man sieht, der "Umfangswert" wird immer kleiner.

Der Counter hat ja nur eine Aufgabe, er soll die Umdrehungen zählen.
Also hab ich hier im Grunde nur Integer Zahlen.
Wenn ich an dieser Stelle nun mit 0.98646 multipliziere, Bekomme ich ja keine
Integer Werte mehr.
Ich müsste also noch ein ITEM kreieren (z.B. Counter_Day) welches den aktuellen Wert aus Counter nimmt und mit 0.98646 multipliziert.
Klingt einfach, ist es bestimmt auch, aber ich hab's noch nicht hinbekommen.
Wie kann ich denn das Item Counter_Day mit dem korrigierten Wert vom ITEM Counter füllen?

Oder mache ich be der ganzen Sache noch einen großen Denkfehler?

Gruß
Jörg

Nordmann
Beiträge: 45
Registriert: 17. Sep 2017 23:43

Re: Projekt Hamsterrad ......

Beitrag von Nordmann »

Hallo zusammen,

jetzt müsste es funktionieren :lol:
dank EURER Hilfe!
Vielleicht gibt es noch einige Verbesserungsvorschläge was die Syntax des Rules angeht :-)

Code: Alles auswählen

Rule:

Code: Alles auswählen

rule "Counter Rule"

when 
    Item Hamsterkontakt changed from CLOSED to OPEN
then
        if (Counter.state == NULL) {
            Counter.postUpdate(0) and
			Counter_Day.postUpdate (0)
        } else {
        	Counter.postUpdate (((Counter.state as DecimalType) + 1))
			Counter_Day.postUpdate ((Counter.state as DecimalType)* 0.98646)
        }
end


rule "Counter Rule Null"

when 
    	Time cron "56 59 23 * * ?"
	
then
		Counter_All.postUpdate (Counter_Day.state as DecimalType)


		if (Counter.state >= 0) {
            Counter.postUpdate(0)
        } 
end

rule "Counter_Day Rule Null"

when 
    	Time cron "57 59 23 * * ?"
	
then

		if (Counter_Day.state >= 0) {
            Counter_Day.postUpdate(0)
        } 
end

rule "Counter Rule Summe"

when 
    Time cron "58 59 23 * * ?"
then
        if (Counter_Summe.state == NULL) {
            Counter_Summe.postUpdate(0)
        } else {
        	Counter_Summe.postUpdate ((Counter_Summe.state as DecimalType) + (Counter_All.state as DecimalType))

        }
end

Code: Alles auswählen

ITEM:

Code: Alles auswählen

// Hamsterlaufrad

Contact Hamsterkontakt			"Hamsterrad [%s]"				<hamster>		(Hamster)		{channel="homematic:HM-Sec-SC-2:CCU2:NEQ1679199:1#STATE"}	
Number Counter					"Heute [%.0f Umdrehungen]"		<motion>		(Hamster)	
Number Counter_Day				"Tagesleistung [%.2f Meter]"	<motion>		(Hamster)
Number Counter_All				"Gestern [%.2f Meter]"			<motion>		(Hamster)
Number Counter_Summe			"Summe [%.2f Meter]"			<motion>		(Hamster)

Code: Alles auswählen

*.persist:

Code: Alles auswählen

// Hamsterzähler
	Counter : strategy = everyChange, restoreOnStartup
	Counter_Day : strategy = everyChange, restoreOnStartup
	Counter_All : strategy = everyChange, restoreOnStartup
	Counter_Summe : strategy = everyChange, restoreOnStartup
	Counter_Summe : strategy = Midnight, restoreOnStartup

Code: Alles auswählen

Sitemap:

Code: Alles auswählen

		Frame label="Hamster" {
			Text item=CurrentDate
			Text item=date_today
			
			Text item=Counter_Summe {
				Chart item=Counter_Summe period=h refresh=600
				Chart item=Counter_Summe period=d refresh=600
				Chart item=Counter_Summe period=d refresh=600
				Chart item=Counter_Summe period=W refresh=600
				Chart item=Counter_Summe period=M refresh=600
				Chart item=Counter_Summe period=Y refresh=600
			}
			Text item=Counter_Day {
				Chart item=Counter_Day period=h refresh=600
				Chart item=Counter_Day period=d refresh=600
				Chart item=Counter_Day period=d refresh=600
				Chart item=Counter_Day period=W refresh=600
				Chart item=Counter_Day period=M refresh=600
				Chart item=Counter_Day period=Y refresh=600
			}
			Text item=Counter_All {
				Chart item=Counter_All period=h refresh=600
				Chart item=Counter_All period=d refresh=600
				Chart item=Counter_All period=d refresh=600
				Chart item=Counter_All period=W refresh=600
				Chart item=Counter_All period=M refresh=600
				Chart item=Counter_All period=Y refresh=600
			}
			Text item=Counter {
				Chart item=Counter period=h refresh=600
				Chart item=Counter period=d refresh=600
				Chart item=Counter period=d refresh=600
				Chart item=Counter period=W refresh=600
				Chart item=Counter period=M refresh=600
				Chart item=Counter period=Y refresh=600
			}
Wie gesagt, es muss noch Finetuning vorgenommen werden,
aber das kommt noch!

Und jetzt würde ich gern noch den Vorschlag von Cyrelian umsetzen:
Für den Chart kann ich dir influxDB und Grafana empfehlen...siehe hier(hab ich genau so)
https://community.openhab.org/t/influxd ... hing/13761
Muss ich da unbedingt auf die fluxDB umsteigen und diese installieren?

Euch einen schönen Abend!

Gruß
Jörg

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Projekt Hamsterrad ......

Beitrag von Cyrelian »

Hi Jörg,

super, dann kann der Hamster ja jetzt Knallgas geben :D .

Wenn Du Grafana nutzen möchtest, braucht du die influxDB. Ich nutze mittlerweile nur noch influx als Persistance.

CU
Cyrelian

Antworten