[Gelöst] Notify für Kaffeemaschine

Begonnen von Micky, 09 September 2019, 16:36:19

Vorheriges Thema - Nächstes Thema

Micky

Hallo Joachim,

die Kaffeemaschine geht sowieso automatisch in 30 min. aus. Die hat so ein Eco mode alle 30 min. schaltet die sich aus.

ja also ich wollte der Kaffeemaschine zuvorkommen deshalb ca. 29 min dann ausschalten. Da Fhem den zustand dann richtig hat, wenn ich nicht per fhem nach 29 min ausschalten würde, dann würde sie nach 30 min. also 1 min später ausschalten und fhem hätte nicht den aktuellen status.

notify so besser?

Kaffeemaschinen_Steckdose:power:.* {
     if ($EVTPART1 > 0.85 && ReadingsVal("taster", "state", "off") eq "on") {
## Mache nix 
     }

  if ($EVTPART1 > 0.85 && ReadingsVal("taster", "state", "off") eq "off") {
##impuls
(set taster "on");
     }

  if ($EVTPART1 < 0.85 && ReadingsVal("taster", "state", "off") eq "off") {
##mache nix
     }

if ($EVTPART1 < 0.85 && ReadingsVal("taster", "state", "off") eq "on") {
##impuls
(set taster "off");
     }
}


der taster ist ein FHEM Schalter der nur den zustand annimmt von der Steckdose wenn power > 0,85 dann AN sonst aus richtig ?
Ich muss nicht alle 30 min. prüfen da die Maschine ja automatisch aus geht nach 30 min, oder ?

Ich glaub ich verstehe doch noch nicht, vor allem mit dem
defmod at 30min {prüfe ob Maschine Status (immer noch) on ist -> schalte aus (über das ToggleDingenz)  }

at 30 min. ?
ToggleDingenz ?

danke für die Hilfe

MadMax-FHEM

#46
Einmal versuche ich es noch...
...dann gebe ich auf!

NEIN!!!!!

Das Notify mit den Powerwerten MACHT NUR DEN STATUS DER KAFFEEMASCHINE!!!!

Der stimmt dann IMMER!
Egal worüber ein- oder ausgeschaltet wird/wurde!!!!

Also das hier:

Zitat
die Kaffeemaschine geht sowieso automatisch in 30 min. aus. Die hat so ein Eco mode alle 30 min. schaltet die sich aus.

ja also ich wollte der Kaffeemaschine zuvorkommen deshalb ca. 29 min dann ausschalten. Da Fhem den zustand dann richtig hat, wenn ich nicht per fhem nach 29 min ausschalten würde, dann würde sie nach 30 min. also 1 min später ausschalten und fhem hätte nicht den aktuellen status.

Ist QUATSCH!

Wenn du (endlich! ;)  ) in dem Notify mit den POWERWERTEN NUR den STATUS der Kaffeemaschine abbildest...
...hat fhem IMMER (EGAL WIE GESCHALTEN WURDE) den aktuellen Status!

Selbst wenn die Automatik abschaltet oder jemand wild (gut ganz so wild vielleicht nicht, die Powerwerte müssen zumindest eine Chance auf Änderung haben ;)  ) am Knöpfchen drückt...

...sogar egal welches: direkt an der Maschine ODER über das Relais (das schaltet doch auch!?) per fhem.

Also:

mit dem Notify was du hast setzt du NUR den Status!
Der steht dann woimmer du den hinschreibst (ein Reading im Devive selbst wäre eine Möglichkeit, so wie Otto geschrieben hat)...

Dort steht immer der aktuelle RICHTIGE Status.


Dann kannst du entweder direkt an der Maschine schalten

Status geht ja auf an (über Powerwerte)

Ein weiteres Notify auf eben: Status == an -> at auf 29min


Du schaltest per fhem Oberfläche (über das Relais) ein...

Status geht auf an wird ja wieder über die Powerwerte erkannt (NICHT ÜBER DAS DRÜCKEN IN DER OBERFLÄCHE-> NICHT VERMISCHEN! DAS DINGENZ IST NUR ZUM SCHALTEN!)

Staus == an -> at wird per Notify definiert auf 29min



at löst aus. Es wird im at der Status geprüft (der ist ja bekannt und STIMMT!), wenn noch an -> ausschalten über das Relais (oder das war doch dafür gedacht!?). Wenn bereits aus ist (z.B. du hast an der Maschine den Knopf gedrückt oder die Automatik der Maschine war schneller ;) ) macht das at nichts...


Über die Powerwerte wird wieder erkannt, dass (jetzt) aus ist -> passt also wieder!


Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

#47
Ich habe ehrlich gesagt noch nie verstanden, was eigentlich an dieser Stelle die Funktion für FHEM sein soll.
Micky, ich glaube Du verrennst Dich in irgendwelche Status Mogeleien die Du gar nicht brauchst.
Und Du verwirrst Dich permanent selbst durch die Bezeichnung Deiner Geräte.

Also mal ein konkreter Versuch Versuch für den Status.
attr Kaffeemaschinen_Steckdose userReadings Zustand {ReadingsNum($name,"power",0) > 0.85?"on":"off"}

Jetzt blickst Du erstmal nur noch bitte auf dieses Reading Zustand in deinem Device Kaffeemaschinen_Steckdose und sagst ob dies immer den Einschaltzustand deiner Kaffemaschine repräsentiert.

Machst Du mal bitte ein list Taster ? Damit ich verstehe was das ist.

Ich mache den Rest mal ziemlich aufwendig und einzeln, zusammenschrumpfen kann man das wenn man es verstanden hat immer noch:
Hier der Vorschlag für das notify was den Fibaro Taster bedient wenn die Kaffemaschine angehen soll
define Kaffeemaschine_n_an notify Kaffeemaschinen_Schalter:on {fhem("set Kaffeemaschine on;;sleep 1;;set Kaffeemaschine off;;set Kaffeemaschinen_Schalter an") if (ReadingsVal("Kaffeemaschinen_Steckdose","Zustand","") eq "off")}

das Gleiche wenn die Kaffemaschine ausgehen soll
define Kaffeemaschine_n_aus notify Kaffeemaschinen_Schalter:off {fhem("set Kaffeemaschine on;;sleep 1;;set Kaffeemaschine off;;set Kaffeemaschinen_Schalter aus") if (ReadingsVal("Kaffeemaschinen_Steckdose","Zustand","") eq "on")}


Das Steuerelement hab ich  mir jetzt ausgedacht, ist vielleicht dein "Taster" ?
define Kaffeemaschinen_Schalter dummy
attr Kaffeemaschinen_Schalter webCmd on:off

Das ist jetzt noch nicht perfekt. Der Schalter repräsentiert jetzt nur den letzten Schaltzustand und nicht den wirklichen Zustand der Maschine, der steht nur im Reading Zustand von Kaffeemaschinen_Steckdose.

Aber vielleicht ist das die Richtung wo es hingehen soll?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Micky

#48
Hallo,

danke nochmal für die Hilfe.

Also mit dem Taster meinte ich quasi was du Kaffeemaschinen_Schalter nennst.

Habe den Taster gelöscht.

Habe alle deine Codeschnipsel benutzt und es wurde alles erstellt in fhem, allerdings bleiben die beiden Notifys nur auf activ obwohl die Kaffeemaschine an ist. 

Scheint auch zu funktionieren ich teste es weiter.....und gebe feedback.

Otto123

Na die notifys treten ja nur in Aktion wenn du per fhem die Kaffeemaschine an oder aus schalten willst.
set Kaffeemaschinen_Schalter on
set Kaffeemaschinen_Schalter off

Wie schon gesagt, ich würde die Namen tauschen.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Micky

#50
Hallo Otto,

scheint gut zu funktionieren.

Kaffeemaschine_n_an 2019-09-15 20:36:08
Kaffeemaschine_n_aus 2019-09-15 20:38:49


Kaffeemaschinen_Schalter

Welchen Namen soll ich ändern ?

Habe noch das Fibaro Relais
Kaffeemaschine

Wall Plugin
Kaffeemaschinen_Steckdose


Aktuell hab ich nur das Problem das wenn ich die Kaffeemaschine einschalte, und direkt wieder ausschalten will nach 5 Sekunden (immer über Kaffeemaschinen_Schalter), die Kaffeemaschine nicht ausgeschaltet wird weil sich der Zustand von Kaffeemaschinen_Steckdose nicht schnell genug in "ON" gewechselt ist, kann man ein da irgendwie einen sleep einbauen oder kann man das so schreiben das sobald der Zustand von der Kaffeemaschinen_Steckdose dann auf "on" switch das Gerät sich dann abschaltet also quasi nachträglich, da der Kaffeemaschinen_Schalter auf OFF steht.

Kaffeemaschine_n_aus
Kaffeemaschinen_Schalter:off {
fhem("set Kaffeemaschine off;sleep 1;set Kaffeemaschine on;sleep 1; set Kaffeemaschine off;set Kaffeemaschinen_Schalter off")
if (ReadingsVal("Kaffeemaschinen_Steckdose","Zustand","") eq "on")
}



vielen Dank !

EDIT:
glaub ich hab es hinbekommen habe nur RedingsVal auf Kaffeemaschine gesetzt sprich das Fibaro relais wenn ON

hier der Code
Kaffeemaschine_n_aus
Kaffeemaschinen_Schalter:off {
fhem("set Kaffeemaschine off;sleep 1;set Kaffeemaschine on;sleep 1; set Kaffeemaschine off;set Kaffeemaschinen_Schalter off")
if (ReadingsVal("Kaffeemaschine","state","") eq "on")
}




Otto123

#51
Damit hast Du keine Rückmeldung zum wirklichen Zustand Deiner Kaffeemaschine. Dieser einzige und allein durch Deine Steckdose an FHEM gemeldet. Und ja, dieser Zustand ist nicht perfekt, weil diese Dose sicher nicht innerhalb einer Sekunde den richtigen Status einnimmt, da sie sicher nur in größeren Zeitabständen das power Reading sendet.
Was passiert mit deiner Variante wenn Du innerhalb von sekunden auch den echten Taster an der Kaffemaschine betätigst? Dann weiß dein Schalter nicht mehr wo er steht.  :-\

Damit musst Du leben. Aber wir reden von einer Kaffemaschine. Wozu sollte man die nach 5 sec wieder ausschalten?  :o

Der Schalter in FHEM ist noch nicht perfekt. Lass mich nochmal nachdenken, wie man das besser machen könnte.

Welches Gerät Du wie benennst ist deine Sache, ich würde es halt so machen das auch ein Fremder versteht was gemeint ist. Der Fibarotaster ist aber nicht der Zustand Deiner Kaffemaschine

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Micky

Hallo Otto,

ja du hast recht, es ist nicht der Zustand über Fibaro Relais, allerdings kann ich so das Gerät ausschalten obwohl die Leistung in Watt > 0,85 ist. Wenn man ausschalten will soll es ja direkt ausgehen.
Und so scheint es zu funktionieren, der Kaffeemaschinen_Schalter wird ja dann auch wieder auf off gesetzt also glaub ich das es passen sollte !?

Ja das vermischen geht nicht, also Taster V12 der Kaffeemaschine anschalten per fhem  ausschalten.

Hab da versucht weitere notify zu erstellen hab die Manuel an , manuell aus genannt.

Manuell an
Kaffeemaschinen_Steckdose:Zustand:.* {
fhem("sleep 18; set Kaffeemaschinen_Schalter on")
if (ReadingsVal("Kaffeemaschinen_Steckdose","Zustand","") eq "on")
}


Manuell aus
Kaffeemaschinen_Steckdose:Zustand:.* {
fhem("sleep 18; set Kaffeemaschinen_Schalter off")
if (ReadingsVal("Kaffeemaschinen_Steckdose","Zustand","") eq "off")
}


Klappt aber nicht der geht dann alle 18 sekunden wieder an und aus.
War nur eine idee falls Zustand steckdose auf "on" und fhem Kaffeemachinen_Schalter "off" dann muss manuell eingeschaltet worden sein, also stelle Kaffeemschinen_Schalter auf "on"

Manuell notify an klappt denke ich, manuell notify aus

Ist jetzt nicht so schlimm schalte dann meistens per app die Kaffeemaschine an, sobald man die Kaffeemaschine an der Kaffeemaschine selbst anschaltet wird es in Fhem nicht aktualisiert aber da sie sich dann selbständig ausschaltet passt es wieder.

Danke nochmal.

Otto123

#53
Zitat von: Micky am 15 September 2019, 23:42:07... allerdings kann ich so das Gerät ausschalten obwohl die Leistung in Watt > 0,85 ist. Wenn man ausschalten will soll es ja direkt ausgehen.
...
Ja das vermischen geht nicht, also Taster V12 der Kaffeemaschine anschalten per fhem  ausschalten.
Guten Morgen,

sorry ich denke Du hast mich verloren. Ich kann Dir nicht mehr folgen.

Ich hatte gedanklich jetzt schon versucht, die Abbildung des Zustandes Deiner Kaffeemaschine (Steckdose) mit der des Schalters für die Kaffeemaschine zu vereinen. Aber ich weiß momentan nicht was bei Dir wirklich geht und was nicht.

Ich weiß, Du brauchst noch eine Rückkopplung von der Steckdose zum virtuellen Schalter.

Nochmal ein Ansatz, ich will betonen: Dies ist mehr zum Lernen als zur finalen Realisierung. Ich würde das später noch zusammendampfen:
Als Erweiterung dessen was ich schon vorgeschlagen hatte:
Anderes stateFormat im Schalter und ein notify um den Zustand von der Steckdose auf den Schalter zu übertragen.
setreading Kaffeemaschinen_Schalter Zustand [Kaffeemaschinen_Steckdose:Zustand]
attr Kaffeemaschinen_Schalter stateFormat Zustand

define Kaffeemaschine_n_STATE notify Kaffeemaschinen_Steckdose:Zustand:.(on|off) setreading Kaffeemaschinen_Schalter Zustand $EVTPART1

Damit wird der Zustand vom Schalter auch aktualisiert wenn Du die Kaffeemaschine am lokalen Taster einschaltest. Aber natürlich nur mit der Verzögerung der Steckdosen Meldung und sicher nicht in 1 sec.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Micky

#54
Guten Morgen Otto,

viele Dank, ich denke oftmals zu kompliziert und unklug  :o

Und ja wenn man die Kaffeemaschine einschaltet, dann schaltet man sie nicht gleich nach 5 Sekunden wieder aus, wobei das Wall Plug einen sehr kurzen Intervall hat von 15 Sekunden.

Super so sollte der Zustand immer stimmen.

Selbst wenn die Kaffeemaschine nach ca. 30 min sich automatisch abschaltet (ist leider so bei dieser Kaffeemaschine), wird der Zustand sich ändern und der Schalter Kaffeemaschinen_Schalter sollte auf off switchen.

Danke, ich teste es heute Abend und gebe feedback

Otto123

#55
Hallo Micky,

ich stelle Dir jetzt mal einfach mein Übungsfeld hier zur Verfügung. So funktioniert es bei mir. Das sind mir jetzt immer noch zu viele beteiligte Geräte :)

Das hier hast Du quasi in Echt, hab ich mir zum Üben gebaut.

Meine virtuelle Umgebung
KaffeeRP           - repräsentiert Deine echten Kaffemaschine, kann man on/off schalten und der power Wert in der KaffeeSD wird gesetzt
KaffeeSD           - repräsentiert Deine echte Steckdose
KaffeeRelais       - ist quasi Dein Fibaro Relais
KaffeeSetPower  - ein Hilfsnotify um in meiner virtuellen den Schaltvorgang des Fibaro Relais zu simulieren

defmod KaffeeRP readingsProxy KaffeeSD:Zustand
attr KaffeeRP room Kaffee
attr KaffeeRP setFn {($CMD eq "on")?"power 0.86":"power 0.1"}
attr KaffeeRP setList on off

defmod KaffeeSD dummy
attr KaffeeSD readingList power
attr KaffeeSD room Kaffee
attr KaffeeSD userReadings Zustand {ReadingsNum($name,"power",0) > 0.85?"on":"off"}
setstate KaffeeSD on
setstate KaffeeSD 2019-09-16 12:57:07 Zustand off
setstate KaffeeSD 2019-09-16 12:47:18 power 0.1
setstate KaffeeSD 2019-09-16 12:57:07 state on

defmod KaffeeRelais dummy
attr KaffeeRelais room Kaffee
attr KaffeeRelais setList on off

defmod KaffeeSetPower notify KaffeeSchalter:_(off|on) setreading KaffeeSD power {("$EVENT" eq "_off"?0.1:0.86)}
attr KaffeeSetPower room Kaffee


Das hier brauchst Du für Deine Funktion.

FHEM Geräte
KaffeeSchalter  - ist der Ein und Ausschalter für die Kaffemaschine in FHEM
KaffeeSTATE     - ist ein Hilfsnotify um den Zustand von der Steckdose in den Schalter zu übertragen
KaffeeToggle    - ist ein Hilfsnotify fürs ein- und ausschalten der Maschine

Im Code musst Du Deine Geräte Bezeichnungen entsprechend ändern, ich hoffe Du kommst klar. Du kannst natürlich auch erstmal die Trockenübung so machen :)

defmod KaffeeSchalter dummy
attr KaffeeSchalter room Kaffee
attr KaffeeSchalter stateFormat Zustand
attr KaffeeSchalter webCmd on:off

defmod KaffeeSTATE notify KaffeeSD:Zustand:.(on|off) setreading KaffeeSchalter Zustand $EVTPART1
attr KaffeeSTATE room Kaffee

defmod KaffeeToggle notify KaffeeSchalter:(on|off) {fhem("set KaffeeRelais on;;sleep 1;;set KaffeeRelais off;;set KaffeeSchalter _$EVENT") if (ReadingsVal("KaffeeSD","Zustand","") ne $EVENT)}
attr KaffeeToggle room Kaffee


Anmerkung: Der Befehl "set KaffeeSchalter _$EVENT" im notify wird eigentlich nur in meiner Umgebung gebraucht, stört aber in der echten Umgebung nicht!

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Micky

#56
Hi Otto,

dh. KaffeeSetPower benötige ich nicht, ist ja nur für deine Virtuelle Umgebung?

Erstmal vielen Dank das du Dir solch eine mühe machst und das ganze nachbaust  ;) DANKE

Ich kann denke ich fast alles übernehmen bis auf das KaffeeToggle nicht,
da zum einschalten das Relais anderes geschaltet werden muss, wie zum ausschalten

ich zeig dir mal alle 3 notify's


//das ist zum ausschalten
Kaffeemaschinen_Schalter:off {
fhem("set Kaffeemaschine off;set Kaffeemaschine on;sleep 1; set Kaffeemaschine off")
if (ReadingsVal("Kaffeemaschine","state","") eq "on")
}

// das ist zum einschalten
Kaffeemaschinen_Schalter:on {
fhem("set Kaffeemaschine on;sleep 1;set Kaffeemaschine off;setreading Kaffeemaschine state on")
if (ReadingsVal("Kaffeemaschinen_Steckdose","Zustand","") eq "off")
}

//dein KaffeeToggle
KaffeeSchalter:(on|off)
{fhem("set KaffeeRelais on;;sleep 1;;set KaffeeRelais off;;set KaffeeSchalter _$EVENT")
if (ReadingsVal("KaffeeSD","Zustand","") ne $EVENT)}



danke

Otto123

Wozu ist das erste Set off für das Relais? Das ist doch in Ruhe immer off???
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Micky

#58
Hi Otto,

das liegt am Potentialfreien Kontakt des Relais dadurch schaltet er nicht richtig

sondern so:

set Kaffeemaschine on - Kaffeemaschine ist AN
set Kaffeemaschine off - Kaffeemaschine ist AN
set Kaffeemaschine on - Kaffeemaschine ist AUS
set Kaffeemaschine off - Kaffeemaschine ist AUS
__________________________________________ selber Zyklus nochmal

zum anschalten:
deshalb schalte ich es: set Kaffeemaschine ON / set Kaffeemaschine OFF / setreading Kaffeemaschine state on

zum ausschalten: set Kaffeemaschine OFF / set Kaffeemaschine ON / set Kaffeemaschine off

also ich hab gestern Abend rumprobiert und nur so war es dann tatsächlich auch AN und beim Ausschalten auch aus.
Ich kann aber später nochmal schauen evtl. gibts ne einfacherer Lösung.
Der Punkt ist der wenn ich nicht beim einschalten set ON / OFF / ON mache dann kann ich wenn ich an der Kaffeemaschine stehe die Kaffeemaschine nicht mehr am 12V Taster ausschalten.

Und beim ausschalten per FHEM würde die Kaffeemaschine ohne set OFF / ON / OFF, nicht mehr am Kaffeemaschinen 12V Taster einschalten können.


// das ist zum einschalten
Kaffeemaschinen_Schalter:on {
fhem("set Kaffeemaschine on;sleep 1;set Kaffeemaschine off;setreading Kaffeemaschine state on")
if (ReadingsVal("Kaffeemaschinen_Steckdose","Zustand","") eq "off")
}


//ausschalten
Kaffeemaschinen_Schalter:off {
fhem("set Kaffeemaschine off;set Kaffeemaschine on;sleep 1; set Kaffeemaschine off")
if (ReadingsVal("Kaffeemaschine","state","") eq "on")
}

Otto123

Du hast doch immer erzählt Du erzeugst mit dem Fibaro einen Impuls? ???

Deine Logik klingt für mich irgendwie unverständlich. Kannst Du deine Schaltung mal aufmalen?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz