FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: flipse am 23 Dezember 2018, 13:48:30

Titel: Reading aus einem Device als Status in DummyDevice übergeben
Beitrag von: flipse am 23 Dezember 2018, 13:48:30
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
Titel: Antw:Reading aus einem Device als Status in DummyDevice übergeben
Beitrag von: KernSani am 23 Dezember 2018, 14:31:14
Stichwort notify bzw. DOIF. Weiteres Stichwort: Einsteigerhandbuch.


Kurz, weil mobil
Titel: Antw:Reading aus einem Device als Status in DummyDevice übergeben
Beitrag von: Felix_86 am 23 Dezember 2018, 14:43:10
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
}
}
Titel: Antw:Reading aus einem Device als Status in DummyDevice übergeben
Beitrag von: flipse am 23 Dezember 2018, 18:53:43
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?)
Titel: Antw:Reading aus einem Device als Status in DummyDevice übergeben
Beitrag 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.
Titel: Antw:Reading aus einem Device als Status in DummyDevice übergeben
Beitrag von: flipse am 23 Dezember 2018, 19:42:29
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?
Titel: Antw:Reading aus einem Device als Status in DummyDevice übergeben
Beitrag von: marvin78 am 23 Dezember 2018, 19:49:28
Den Begriff userReadings nehmen und in der commandref danach suchen.
Titel: Antw:Reading aus einem Device als Status in DummyDevice übergeben
Beitrag 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.
Titel: Antw:Reading aus einem Device als Status in DummyDevice übergeben
Beitrag von: marvin78 am 23 Dezember 2018, 20:12:57
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.
Titel: Antw:Reading aus einem Device als Status in DummyDevice übergeben
Beitrag von: Pfriemler am 23 Dezember 2018, 20:24:50
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.
Titel: Antw:Reading aus einem Device als Status in DummyDevice übergeben
Beitrag von: flipse am 23 Dezember 2018, 20:30:12
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?

Titel: Antw:Reading aus einem Device als Status in DummyDevice übergeben
Beitrag von: flipse am 23 Dezember 2018, 20:31:08
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?
Titel: Antw:Reading aus einem Device als Status in DummyDevice übergeben
Beitrag von: Pfriemler am 23 Dezember 2018, 22:54:57
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
Titel: Antw:Reading aus einem Device als Status in DummyDevice übergeben
Beitrag von: flipse am 24 Dezember 2018, 07:53:41
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"
}
Titel: Antw:Reading aus einem Device als Status in DummyDevice übergeben
Beitrag von: Wzut am 24 Dezember 2018, 08:47:46
statt ReadingsVal() bitte ReadingsNum() verwenden !
Titel: Antw:Reading aus einem Device als Status in DummyDevice übergeben
Beitrag von: KernSani am 24 Dezember 2018, 08:48:37
ReadingsNum statt ReadingsVal sollte helfen


Kurz, weil mobil
Titel: Antw:Reading aus einem Device als Status in DummyDevice übergeben
Beitrag von: KernSani am 24 Dezember 2018, 08:53:14
Wzut ear schneller ;-)

Als default Wert (3. Parameter) bei ReadingsNum eine 0 ohne Anführungszeichen.


Kurz, weil mobil