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 zusammen,

muss mich doch noch einmal melden :oops:

Meine Rules sehen jetzt folgendermaßen aus:

Code: Alles auswählen

rule "Counter Rule"

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

        }
end


rule "Counter Rule Null"

when 
    Time cron "/10 * * * * ?"  // Nur für Testzwecke - soll später auf Mitternacht gestellt werden!
    					// Jetzt sind es 10 Sekunden!
then
		Counter_All.postUpdate (Counter.state as DecimalType)
		//Counter_Summe.postUpdate ((Counter_Summe.state as DecimalType) + (Counter_All.state as DecimalType))

		if (Counter.state >= 0) {
            Counter.postUpdate(0)
        } 
end
Was ich jetzt hin bekomme ist, dass der Counter richtig zählt.
Wenn die Rule "Counter Rule Null" aufgerufen wird setzt die Rule den Counter (Tagescounter) auf null und
in Counter_All wird der Wert übergeben, sodass der vorherigen Tageswert angezeigt wird.

Was ich jedoch noch möchte ist mir den Gesamtwert mit "Counter_Summe" anzeigen lassen.
Wenn ich jedoch folgende Zeile einfüge wird der Tageswert (Counter) und er Vortageswert (Counter_All) nicht mehr zurückgesetzt sondern weitergezählt.

Code: Alles auswählen

		//Counter_Summe.postUpdate ((Counter_Summe.state as DecimalType) + (Counter_All.state as DecimalType))
Und es kommt folgende Fehlermeldung:

Code: Alles auswählen

2017-11-26 16:51:40.020 [ERROR] [ntime.internal.engine.ExecuteRuleJob] - Error during the execution of rule Counter Rule Null: org.eclipse.smarthome.core.library.types.DecimalType
Was mache ich da falsch?

Danke für Eure nochmalige Hilfe!

Gruß
Jörg

Benutzeravatar
seppy
Beiträge: 738
Registriert: 24. Sep 2015 20:25
Answers: 4
Wohnort: Bonn

Re: Projekt Hamsterrad ......

Beitrag von seppy »

Hi,
also wie ich vermutet habe ist da noch ein Problem vorhanden. Ich denke, dass die Prüfung auf NULL nicht funktioniert und dann der Cast auf DecimalType nicht funktioniert. Zum Anderen zählt Deine Regel nur jede zweite Runde, da die Regel nur beim "öffnen" des Kontaktes zählt.

Prüf mal bitte (am Besten auf der Karaf Console) ob Dein neues Item auch noch NULL ist
Grüße,
Seppy
Homematic und HomematicIP über Raspberrymatic (RaspPi 4 4GB) mit 2x HMLAN. Steuerung und Visualisierung durch OpenHAB2 auf RaspPi in Hutschienengehäuse im Sicherungskasten. Rund 100 Aktoren/Sensoren

- Abgesichert durch APC USV
- Bewässerungssteuerung mit Hunter Magnetventilen (HM-LC-Sw4-DR)
- Beleuchtungssteuerung Innen und Aussen (HM-LC-Sw4-DR + HM-LC-SW1-FM + HMW-IO-12-SW7-DR)
- Rolladensteuerung mit Beschattungsautomatik über Temperaturdifferenzsensor (HM-LC-Bl1PBU-FM)
- Wetter und Unwetterinformationen von wunderground
- Benachrichtigung der Bewohner via Pushover
- Multimediawand und Dreambox Steuerung (HM-LC-SW1-FM)
- Heizungssteuerung mit Komfort und Energiesparfunktionen (HM-CC-RT-DN + HM-Sec-SC-2 + HMIP-eTRV-2)
- Werkstatt Kompressorsteuerung (HMW-IO-12-SW7-DR)
- Weihnachtsbeleuchtung außen
- Präsenzerkennung über Geolocation (iCloud Binding), iBeacon und WLAN (Unifi Binding)
- Philips HUE & Tasmota Devices (Tuya) Einbindung

Benutzeravatar
seppy
Beiträge: 738
Registriert: 24. Sep 2015 20:25
Answers: 4
Wohnort: Bonn

Re: Projekt Hamsterrad ......

Beitrag von seppy »

Ach und noch was, warum arbeitest Du nicht mit Persistence um Deine Stats zu bauen? Das wäre sehr viel sinniger.

Grüße,
Seppy
Homematic und HomematicIP über Raspberrymatic (RaspPi 4 4GB) mit 2x HMLAN. Steuerung und Visualisierung durch OpenHAB2 auf RaspPi in Hutschienengehäuse im Sicherungskasten. Rund 100 Aktoren/Sensoren

- Abgesichert durch APC USV
- Bewässerungssteuerung mit Hunter Magnetventilen (HM-LC-Sw4-DR)
- Beleuchtungssteuerung Innen und Aussen (HM-LC-Sw4-DR + HM-LC-SW1-FM + HMW-IO-12-SW7-DR)
- Rolladensteuerung mit Beschattungsautomatik über Temperaturdifferenzsensor (HM-LC-Bl1PBU-FM)
- Wetter und Unwetterinformationen von wunderground
- Benachrichtigung der Bewohner via Pushover
- Multimediawand und Dreambox Steuerung (HM-LC-SW1-FM)
- Heizungssteuerung mit Komfort und Energiesparfunktionen (HM-CC-RT-DN + HM-Sec-SC-2 + HMIP-eTRV-2)
- Werkstatt Kompressorsteuerung (HMW-IO-12-SW7-DR)
- Weihnachtsbeleuchtung außen
- Präsenzerkennung über Geolocation (iCloud Binding), iBeacon und WLAN (Unifi Binding)
- Philips HUE & Tasmota Devices (Tuya) Einbindung

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

Re: Projekt Hamsterrad ......

Beitrag von Nordmann »

Hallo Seppy,

ich habe die ganze Sache jetzt folgendermaßen "gelöst":

Code: Alles auswählen

rule "Counter Rule"

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

        }
end


rule "Counter Rule Null"

when 
    	Time cron "/10 * * * * ?"
	
then
		Counter_All.postUpdate (Counter.state as DecimalType)
		//Counter_Summe.postUpdate (Counter_Summe.state as DecimalType) + (Counter_All.state as DecimalType)

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


rule "Counter Rule Summe"

when 
    Time cron "/10 * * * * ?"
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
Die Cronjobs brauche ich ja nur, um die einzelnen Counter auf 0 (Counter_All) zu setzen bzw. hoch zu zählen (Counter_Summe).
Über meine mysql.persist schreibe ich die Daten in die MySQL Datenbank; das funktioniert auch schon :-)

Einziger Nachteil bei der ganze Sache, wenn das System zum Beispiel restart wird (sudo systemctl restart openhab2
) wird, werden alle Counter auf 0 gesetzt, die aktuellen werte gehen also verloren :-(

Gruß
Jörg

Benutzeravatar
seppy
Beiträge: 738
Registriert: 24. Sep 2015 20:25
Answers: 4
Wohnort: Bonn

Re: Projekt Hamsterrad ......

Beitrag von seppy »

Hi,
Einziger Nachteil bei der ganze Sache, wenn das System zum Beispiel restart wird (sudo systemctl restart openhab2
) wird, werden alle Counter auf 0 gesetzt, die aktuellen werte gehen also verloren :-(
genau deswegen solltest Du Dir die Persistence Funktionen anschauen, denn über die meisten Fragen die Du Dir stellst haben sich auch schon andere Gedanken gemacht ;) :
http://docs.openhab.org/configuration/p ... -and-rules
Grüße,
Seppy
Homematic und HomematicIP über Raspberrymatic (RaspPi 4 4GB) mit 2x HMLAN. Steuerung und Visualisierung durch OpenHAB2 auf RaspPi in Hutschienengehäuse im Sicherungskasten. Rund 100 Aktoren/Sensoren

- Abgesichert durch APC USV
- Bewässerungssteuerung mit Hunter Magnetventilen (HM-LC-Sw4-DR)
- Beleuchtungssteuerung Innen und Aussen (HM-LC-Sw4-DR + HM-LC-SW1-FM + HMW-IO-12-SW7-DR)
- Rolladensteuerung mit Beschattungsautomatik über Temperaturdifferenzsensor (HM-LC-Bl1PBU-FM)
- Wetter und Unwetterinformationen von wunderground
- Benachrichtigung der Bewohner via Pushover
- Multimediawand und Dreambox Steuerung (HM-LC-SW1-FM)
- Heizungssteuerung mit Komfort und Energiesparfunktionen (HM-CC-RT-DN + HM-Sec-SC-2 + HMIP-eTRV-2)
- Werkstatt Kompressorsteuerung (HMW-IO-12-SW7-DR)
- Weihnachtsbeleuchtung außen
- Präsenzerkennung über Geolocation (iCloud Binding), iBeacon und WLAN (Unifi Binding)
- Philips HUE & Tasmota Devices (Tuya) Einbindung

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

Re: Projekt Hamsterrad ......

Beitrag von Nordmann »

Hallo Seppy,

danke für den Hinweis.
Ich werde mir die Sache mit den "Persistence Funktionen" zu Gemüte führen :P und das jetzige "Konstrukt" überarbeiten!
Wenn's so weit ist und funktioniert poste ich das Ergebnis :-)

Auf jeden Fall noch einmal vielen Dank an Dich,
Deine Tipps haben mich echt weiter gebracht!

Ich wünsche noch einen schönen Abend!

Gruß
Jörg

Benutzeravatar
seppy
Beiträge: 738
Registriert: 24. Sep 2015 20:25
Answers: 4
Wohnort: Bonn

Re: Projekt Hamsterrad ......

Beitrag von seppy »

Viel Erfolg und ich bin mal gespannt was der Hamster so läuft ...


Gesendet von iPhone mit Tapatalk
Homematic und HomematicIP über Raspberrymatic (RaspPi 4 4GB) mit 2x HMLAN. Steuerung und Visualisierung durch OpenHAB2 auf RaspPi in Hutschienengehäuse im Sicherungskasten. Rund 100 Aktoren/Sensoren

- Abgesichert durch APC USV
- Bewässerungssteuerung mit Hunter Magnetventilen (HM-LC-Sw4-DR)
- Beleuchtungssteuerung Innen und Aussen (HM-LC-Sw4-DR + HM-LC-SW1-FM + HMW-IO-12-SW7-DR)
- Rolladensteuerung mit Beschattungsautomatik über Temperaturdifferenzsensor (HM-LC-Bl1PBU-FM)
- Wetter und Unwetterinformationen von wunderground
- Benachrichtigung der Bewohner via Pushover
- Multimediawand und Dreambox Steuerung (HM-LC-SW1-FM)
- Heizungssteuerung mit Komfort und Energiesparfunktionen (HM-CC-RT-DN + HM-Sec-SC-2 + HMIP-eTRV-2)
- Werkstatt Kompressorsteuerung (HMW-IO-12-SW7-DR)
- Weihnachtsbeleuchtung außen
- Präsenzerkennung über Geolocation (iCloud Binding), iBeacon und WLAN (Unifi Binding)
- Philips HUE & Tasmota Devices (Tuya) Einbindung

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

Re: Projekt Hamsterrad ......

Beitrag von Nordmann »

Hallo Seppy,

werde nächste Woche den Fensterkontakt am Hamsterrad befestigen
und dann schaun wir mal was unsere Lusie so wegstrampelt :-)

Gruß
Jörg

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

Re: Projekt Hamsterrad ......

Beitrag von Nordmann »

Und nochmal ich!

Mir ist gerade aufgefallen, dass meine Kreisumfangsberechnung nicht stimmt.
Wenn ich den Counter so angebe

Code: Alles auswählen

Counter.postUpdate (((Counter.state as DecimalType) + 1)*0.98646)
wird der errechnete Kreisumfang bei jedem Kontakt immer kleiner und bleibt nicht konstant.
Eine Umdrehung des Rades ist aber nicht genau 1 Meter, sondern nur 0,98646 Meter.
Nun könnte man natürlich sagen "gemessen am Erdumfang ist das ja gar nichts", stimmt,
aber ich würde gerne wissen wie ich den genauen Umfang einer Umdrehung ausrechnen kann.

Meine Rule sieht im Augenblick so aus:

Code: Alles auswählen

rule "Counter Rule"

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


rule "Counter Rule Null"

when 
    	Time cron "57 59 23 * * ?"
	
then
		Counter_All.postUpdate (Counter.state as DecimalType)
		//Counter_Summe.postUpdate (Counter_Summe.state as DecimalType) + (Counter_All.state as DecimalType)

		if (Counter.state >= 0) {
            Counter.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
Meine mysql.persist sieht so aus, ich glaube das ist das was Seppy meinte, oder?

Code: Alles auswählen

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

Code: Alles auswählen

Counter_Summe : strategy = Midnight, restoreOnStartup
im Augenblick nur zur Sicherheit gesetzt wurde.

Also ich habe an einigen Stellen versucht "rumzuschrauben", hat aber außer ein paar Errors nicht's gebracht.
Vielleicht hat einer von Euch DIE Idee.

Gute Nacht.

Gruß
Jörg

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

Re: Projekt Hamsterrad ......

Beitrag von Cyrelian »

Nordmann hat geschrieben: 26. Nov 2017 23:42 Und nochmal ich!

Mir ist gerade aufgefallen, dass meine Kreisumfangsberechnung nicht stimmt.
Wenn ich den Counter so angebe

Code: Alles auswählen

Counter.postUpdate (((Counter.state as DecimalType) + 1)*0.98646)
wird der errechnete Kreisumfang bei jedem Kontakt immer kleiner und bleibt nicht konstant.
Eine Umdrehung des Rades ist aber nicht genau 1 Meter, sondern nur 0,98646 Meter.
Nun könnte man natürlich sagen "gemessen am Erdumfang ist das ja gar nichts", stimmt,
aber ich würde gerne wissen wie ich den genauen Umfang einer Umdrehung ausrechnen kann.
Hi Jörg,

ich würde erstmal runden ;) also auf 0,99. Was ist aber noch nicht verstanden habe ist, wie der Umfang kleiner werden kann. Du Addierst immer eine ganze Zahl (1). Die Summe also der (Counter.state) wird dann mit dem Umfang multipliziert. Der Umfang ist ja fest auf 0,98646 gesetzt. Woran machst Du fest, dass er kleiner wird?

CU
Cyrelian

Antworten