Reading aus einem Device als Status in DummyDevice übergeben

Begonnen von flipse, 23 Dezember 2018, 13:48:30

Vorheriges Thema - Nächstes Thema

flipse

Hallo zusammen,

ich stehe gerade davor, den Status meiner Überlaufpumpe der Zisterne in FHEM einzubinden, um ihn dann über Homebridge an mein HomeKit zu übergeben.

Die Pumpe hängt derzeit an einer DECT200 von Fritz und ist auch bereits in FHEM eingebunden. Das klappt soweit.
Die Steckdose ist immer eingeschaltet. Ich nutze zur Interpretation, ob die Pumpe läuft, den Stromverbrauchsmesser.

Nun möchte ich ein DummyDevice anlegen, welches ich als Sensor in die Homebridge gebe.
Der Sensor soll off sein, wenn der aktuelle Verbrauch der Pumpe <= xxx,xx Watt beträgt. Ist er größer, soll der Wert auf ON geschaltet werden.

Könnt ihr mir als Anfänger helfen?

Vielen Dank

KernSani

Stichwort notify bzw. DOIF. Weiteres Stichwort: Einsteigerhandbuch.


Kurz, weil mobil
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Felix_86

Ohne deine genauen Bezeichnungen zu kennen, könnte ein Notify so in etwa aussehen:

(für den def)
DECT200:Stromverbrauchsmesser:.* {
my $VERBRAUCHSSCHWELLERT= 10;
# EVTPARTX ist zu definieren
if ($EVTPARTX <= $VERBRAUCHSSCHWELLERT) {
set DummyDevice OFF
}
elsif ($EVTPARTX > $VERBRAUCHSSCHWELLERT) {
set DummyDevice ON
}
}
Grüße von Felix

Pi3, Raspbian 11, FHEM 6.4, ca 315 Device
SIGNALduino (TCM, TX, IT, SD_GT), CUL (EM, FS20, HMS), JeeLink (PCA301), mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS, Nina, MQTT2

flipse

hey vielen dank. das sieht schon genau nach dem aus, was ich suche. wo genau gebe ich das ein? definition vom dummy? oder irgendwo beim eigentlichen Device (DECT?)

Wzut

warum immer so umständlich und dann diese schei... Dummys :(
Einfach ein neues userReading an die DECT200 und das der Homebridge vorwerfen.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

flipse

#5
Zitat von: Wzut am 23 Dezember 2018, 19:34:05
warum immer so umständlich und dann diese schei... Dummys :(
Einfach ein neues userReading an die DECT200 und das der Homebridge vorwerfen.

kannst Du mir erklären, wie ich das mache?

Aber wenn ich aus einem Device z.B. die Werte Temperatur und Status für Einschalt auslesen will, brauche ich in HomeKit 2 Geräte. Kann ich das mittels Homebridge Mapping auch machen?

marvin78

Den Begriff userReadings nehmen und in der commandref danach suchen.

Pfriemler

#7
Das ist zwar höchstelegant, aber für einen newbie wenig zielführend. Denn in den Beispielen stehen zwar Umrechnungsbeispiele, aber nicht wie man eine Fallabfrage macht und das Resultat verwendet.

edit: attr <NameDerDECT200> userReadings inUse {(ReadingsVal($name,"ENERGY_Power", "0") > 2) ? 'on' : 'off'}

Ersetze "inUse" durch den gewünschten Namen Deines "Dummys".
Ersetze "ENERGY_Power" durch den Namen des Readings mit der aktuellen Leistungsaufnahme der DECT-Dose
Ersetze 2 durch den Schwellwenwert der gewünscht ist
Ersetze "on" und "off" durch die Texte, die als Zustandsbeschreibung gewünscht ist.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

marvin78

Das sehe ich anders. Mit ggf. weiterführenden Fragen kann man wieder herkommen. So lernt man. Der Post oben war übrigens eben noch deutlich knapper, was meine Reaktion begründet.

Pfriemler

Im Prinzip ACK. Aber der Newbie tendiert dazu, einen Dummy zu definieren und ihn mit notifys zu befüllen, weil das so schön übersichtlich ist. Und es wird funktionieren. Und das ist erst einmal die Hauptsache.

Wenn man ihn auf userReadings stößt mit dem Beitext "mensch mach das doch gleich so" und dann nur auf die Commandref verweist, wird er vermutlich nicht einmal einen Entwurf zur Diskussion hier vorstellen können. Und weil morgen Weihnachten ist, habe ich das mal stattdessen erledigt.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

flipse

Ich habe es nun mit einem userReading versucht und einem Homebridge Mapping.
Kann das so funktionieren?

Gibt es eine Möglichkeit, aus einem Device, 2 Meldungen an HomeKit zu übergeben?
   Beispiel: Das eine Reading gibt an HomeKit die Temperatur (genericDevice thermometer) und das andere als Switch den Status?


flipse

Zitat von: Pfriemler am 23 Dezember 2018, 20:11:03
Das ist zwar höchstelegant, aber für einen newbie wenig zielführend. Denn in den Beispielen stehen zwar Umrechnungsbeispiele, aber nicht wie man eine Fallabfrage macht und das Resultat verwendet.

edit: attr <NameDerDECT200> userReadings inUse {(ReadingsVal($name,"ENERGY_Power", "0") > 2) ? 'on' : 'off'}

Ersetze "inUse" durch den gewünschten Namen Deines "Dummys".
Ersetze "ENERGY_Power" durch den Namen des Readings mit der aktuellen Leistungsaufnahme der DECT-Dose
Ersetze 2 durch den Schwellwenwert der gewünscht ist
Ersetze "on" und "off" durch die Texte, die als Zustandsbeschreibung gewünscht ist.

Vielen Dank.
Kann ich davon ausgehen, dass der Wert als integer vorliegt und ich einen > Vergleich durchführen kann?

Pfriemler

#12
Zitat von: flipse am 23 Dezember 2018, 20:31:08
Vielen Dank.
Kann ich davon ausgehen, dass der Wert als integer vorliegt und ich einen > Vergleich durchführen kann?
Hm. Ich sehe gerade dass hier ein W hinter dem Wert steht. Versuch macht kluch. Perl ist nicht so empfindlich und konvertiert im Hintergrund. Wenn's eine "isn't numeric in"-Meldung im Log gibt,  dann sehen wir weiter.
via Tapatalk
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

flipse

2018.12.24 06:52:30 3: notifyTempGarageChange return value: set GarageTemp 8.5
2018.12.24 06:52:31 1: PERL WARNING: Argument "0.00 W" isn't numeric in numeric gt (>) at (eval 151161) line 2.
2018.12.24 06:52:31 3: eval: {
ReadingsVal($name, "power",0) >1? "on":"off"
}

Wzut

Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher