Projekt Hamsterrad ......

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Projekt Hamsterrad ......

Beitrag von Nordmann »

Hallo zusammen!

Ich komme mal mit einer ziemlich abgefahrenen Sache, für die ich ein wenig Starthilfe brauche :mrgreen:

Also folgendes.
Seit ein paar Tagen haben wir ein neues Familienmitglied und zwar einen Goldhamster.
Die junge Dame saut abends immer ganz schön in ihrem Laufrad rum.
Jetzt würde mich mal interessieren wie viel Meter sie so an einem Tag im Laufrad zurücklegt.

Dazu habe ich folgende Idee:
  • Ich befestige über dem Laufrad einen optischen Türkontakt von Homematic.
  • Am Laufrad wird die Reflektorfolie befestigt.
  • Jedes Mal wenn das Laufrad sich einmal dreht wird ein OPEN bzw. CLOSED "generiert".
  • Ich möchte jetzt entweder das OPEN oder das CLOSED "Signal" in einer Variablen hochzählen und zwar immer von Mitternacht zu Mitternacht, also für einen ganzen Tag.
  • Dazwischen soll der aktuelle Wert mit dem Umfang des Laufrades multipliziert und über ein Item in der Sidemap angezeigt werden.
  • Am Ende des Tages soll die Summe diese Gesamtlaufstecke in meine MySQL Datenbank gespeichert, der Variablenzähler wieder auf Null gesetzt und der neue Aktuelle Wert sowie der Vortageswert wieder über ITEMs in der Sidemap angezeigt werden
  • Richtig toll wäre es wenn die Tagesendwerte in einem Chart angezeigt werden würden, so kann man dann sehen ob sich in der Laufleistung etwas ändert hat etc.
Da ich aber noch ziemlich am Anfang meines openHAB Verständnisses bin, brauche ich von Euch Unterstützung, sonst klappt das nicht.
Hat jemand von den alten Hasen Lust mir bei diesem Projekt zu helfen und mir auf die Sprünge zu helfen?
Von der Logik her müsste das doch auch umsetzbar sein, ode?

Ich wünsche Euch noch einen schönen Abend und vielen Dank im Voraus für Eure Hilfe!

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,

hmm, das sollte nicht all zu schwer sein. 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

Ein erster Entwurf der Rule zum zählen könnte so aussehen:

Code: Alles auswählen

rule "Counter Rule"
when 
    item Hamsterkontakt received command.......
then
    zaehler?.members.forEach(counter|
        if (counter.state == null) {
            postUpdate(counter, 0.0)
        }
    )
    zaehler?.members.forEach(counter|
        postUpdate(counter, 1.0 + (counter.state as DecimalType))
    }
end
CU
Cyrelian

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

Re: Projekt Hamsterrad ......

Beitrag von Nordmann »

Hallo Cyrelian,

danke erst einmal für Deine "Einstiegshilfe", aber ich glaube ich bin zu doof deinen Vorschlag umzusetzen.

Mein Item sieht so aus:

Code: Alles auswählen

Contact Hamsterkontakt			"Hamsterrad [MAP(de.map):%s]"				<hamster>		(Hamster)		{channel="homematic:HM-Sec-SCo:CCU2:NEQ1820381:1#STATE"}
Meine Rule:

Code: Alles auswählen

rule "Counter Rule"
when 
    item Hamsterkontakt received command OPEN
then
    zaehler?.members.forEach(counter|
        if (counter.state == null) {
            postUpdate(counter, 0.0)
        }
    )
    zaehler?.members.forEach(counter|
        postUpdate(counter, 1.0 + (counter.state as DecimalType))
    }
end
Im logfile erhalte ich folgende Fehlermeldung:

Code: Alles auswählen

2017-11-03 18:59:55.011 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'hamster.rules' has errors, therefore ignoring it: [3,5]: no viable alternative at input 'item'
[12,5]: mismatched input '}' expecting ')'
Ich habe keine Ahnung wo ich da ansetzen soll :?

Die nächste Frage wäre dann, wie kann ich mir den Wert vom "zaehler" anzeigen lassen und wie schreibe ich den Wert in meine MySQL Tabelle (geht über einen cron Job, das ist klar, aber wie muss ich den "zaehler" "angeben" damit er den Wert auch übergibt?

Die Sache mit influxDB und Grafana ist sehr interessant, aber da wage ich mich erst dann rann, wenn ich den Rest im "Kasten" habe :-)

Vielen Dank noch einmal für Deine Hilfe!

Dir einen schönen Abend!

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

Re: Projekt Hamsterrad ......

Beitrag von Cyrelian »

Hi,

probier´s mal so:

Code: Alles auswählen

var Numer zaehler
rule "Counter Rule"
when 
    Item Hamsterkontakt received command OPEN
then
    zaehler?.members.forEach(counter|
        if (counter.state == null) {
            postUpdate(counter, 0.0)
        }
    )
    zaehler?.members.forEach(counter|
        postUpdate(counter, 1.0 + (counter.state as DecimalType))
    )
end
CU
Cyrelian

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

Re: Projekt Hamsterrad ......

Beitrag von Nordmann »

Danke Cyrelian,

jetzt gibt es auf jeden Fall schon mal keine Fehlermeldungen!

Code: Alles auswählen

var Number zaehler
rule "Counter Rule"
when 
    Item Hamsterkontakt received command OPEN
then
    zaehler?.members.forEach(counter|
        if (counter.state == null) {
            postUpdate(counter, 0.0)
        }
    )
    zaehler?.members.forEach(counter|
        postUpdate(counter, 1.0 + (counter.state as DecimalType))
    )
end
Aber wie kann ich mir jetzt in der sidemap anzeigen lassen wie viele male die Variable Zähler jetzt hochgezählt hat?
Genauer gesagt müsste mann jede Umdrehung mit 0.98646 multiplizieren, dass ist nämlich der Innenumfang (in Meter) des Hamsterrad nach einer Umdrehung.

Und dieser Wert soll um Mitternacht in meine mySQL Datenbank geschrieben werden (geht das über einen cron Befehl?) und anschließend wieder auf Null gesetzt werden; klar, ein neuer Tag ein neuer Wert.

Leider bin ich noch zu neu dabei, sonst könnte ich bestimmt das Problem allein lösen :oops:
Aber wie sagte schön Goehte: " Aller Anfang ist schwer....", oder war es Schiller, Fontane ..... ;)

CU
Jörg

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

Re: Projekt Hamsterrad ......

Beitrag von Cyrelian »

Hi Jörg,

dafür würde ich mir ein ITEM vom Typ "Number" bauen. In dieses schreibst du dann den "counter". Das ITEM kannst Du dir ann in der Sitemap anzeigen lassen. Das Speichern in der MySQL kannst Du über eine "persistance" machen. Ich selber hab das aber noch nicht mit MySQl gemacht.

CU
Cyrelian

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

Re: Projekt Hamsterrad ......

Beitrag von Nordmann »

Hallo Cyrelian,

danke nochmals für Deine Hilfe.
Ich komme aber immer noch nicht weiter :-(
Was genau gehört zum "Counter" syntax mäßig dazu?
Ich habe versucht folgendes Item zu "kreieren", war aber der volle Reinfall:

Code: Alles auswählen

Number Counter	"Zähler [%.2f Meter]"		<motion>	(Hamster)		{counter = counter * 0.98646}
Ich mach da glaube ich mach da noch einige große Denkfehler!

Danke nochmals.

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,
Du definierst erst nur das ITEM:

Code: Alles auswählen

Number Counter	"Zähler [%.2f Meter]"		<motion>	(Hamster)
Deine Berechnung musst Du dann in einer Rule machen. Da hat Cyrelian Dir ja schon eine geschrieben. Kommst Du so klar? sonst melde Dich nochmal!

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 »

Guten Morgen Seppy,

vielen Dank für Deine Hilfe! :D
Ich habe das Item geändert.

Code: Alles auswählen

Number Counter	"Zähler [%.2f Meter]"		<motion>	(Hamster)

Das der Kontakt "reagiert" sehe ich an dem Item:

Code: Alles auswählen

Contact Hamsterkontakt	"Hamsterrad [%s]"	<hamster> (Hamster)		{channel="homematic:HM-Sec-SCo:CCU2:NEQ1820381:1#STATE"}

Im Logfile kann ich auch sehen, dass der Kontakt geschlossen und geöffnet wird!
Jedoch reagiert der Counter überhaupt nicht.
Wenn ich meine Rule abspeichere bekomme ich folgenden Logfile Input:

Code: Alles auswählen

2017-11-12 10:20:56.244 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'hamster.rules'
2017-11-12 10:20:56.263 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'hamster.rules' is either empty or cannot be parsed correctly!
2017-11-12 10:20:57.611 [INFO ] [el.core.internal.ModelRepositoryImpl] - Validation issues found in configuration model 'hamster.rules', using it anyway:
There is no context to infer the closure's argument types from. Consider typing the arguments or put the closures into a typed context.
There is no context to infer the closure's argument types from. Consider typing the arguments or put the closures into a typed context.
2017-11-12 10:20:57.628 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'hamster.rules'
Also irgendwie wird nichts "übergeben", es scheint kein "Inhalt" da zu sein, oder irgendwo noch ein logischer Fehler enthalten zu sein.

Ich wünsche Dir / Euch noch ein schönes Wochenende und nochmals Danke für die 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,
in der Rule ist scheinbar noch ein Fehler. Poste mal die gesamte Rule bitte.

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

Antworten