Waschmaschinen Benachrichtigung mit der Homematic Schalt Mess Steckdose

Ich wollte euch hier mal meinen Skript zeigen mit dem ich eine Benachrichtigung bekomme wenn die Waschmaschine fertig ist und ich die Wäsche raus nehmen kann.

Und nebenbei habe ich noch eine Variabel die mir anzeigt wie viel Energie mich der Waschgang gekostet hat.

<?
 /* Verbrauch und Benachrichtigung Script für Waschmaschinen
 erstellt von Patrick Ramm
 Nur für den privaten Gebrauch */

$gesamtNR = 29648 ;    	//ID vom Objekt ENERGY_COUNTER hier eingeben
$momentanNR = 52459 ;  	//ID vom Objekt POWER hier eingeben
$webfrontNR = 55179 ;   //ID vom Webfront mit der PushNotification hier eingeben
$betrieb = 1; 				//Schwelle ab wann Maschine an ist in Watt
$standby = 4;           //Schwelle wo Maschine im Leerlauf ist in Watt

 /* Ab hier nichts mehr verändern */


$kategorie=IPS_GetParent($_IPS['SELF']);
$ObjektID = @IPS_GetObjectIDByName("Status", $kategorie);
if ($ObjektID === false)
{

IPS_CreateVariableProfile("Waschmaschine", 1);                 //Profil erstellen für Status der Waschmaschine
IPS_SetVariableProfileValues("Waschmaschine", 0, 2, 1);
IPS_SetVariableProfileAssociation("Waschmaschine", 0, "Aus", "", 0xFF0000);
IPS_SetVariableProfileAssociation("Waschmaschine", 1, "läuft", "", 0x00FF00);
IPS_SetVariableProfileAssociation("Waschmaschine", 2, "Bitte Wäsche entnehmen","" , 0xFFFF00);

$eid = IPS_CreateEvent(1);                                     //Wenn Variabeln noch nicht erstellt wurden
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclic($eid, 0 /* Keine Datumsüberprüfung */, 0, 0, 2, 2 /* Minütlich */ , 1 /* Alle 1 Minuten */);
IPS_SetEventActive($eid, true);

$Variabel = array();                                           //Variabeln erstellen
$Variabel[] = array("Typ" => 1,
                       "Name"=>"Status",
                       "Info"=>"Statusanzeige",
                       "Profil"=>"Waschmaschine");

$Variabel[] = array("Typ"=>2,
                       "Name"=>"Verbrauch Waschgang",
                       "Info"=>"",
                       "Profil"=>"");

$Variabel[] = array("Typ"=>2,
                       "Name"=>"Vor Waschen",
                       "Info"=>"",
                       "Profil"=>"");



for($i=0; $i < count($Variabel); $i++)
   {
  /* echo $Variabel[$i]["Typ"];
   echo $Variabel[$i]["Name"];
   echo $Variabel[$i]["Info"];
   echo $Variabel[$i]["Profil"]; */

$kategorie=IPS_GetParent($_IPS['SELF']);

echo $Variabel[$i]["Typ"];

$vid = IPS_CreateVariable($Variabel[$i]["Typ"]);
IPS_SetParent($vid, $kategorie);
IPS_SetName($vid, $Variabel[$i]["Name"]);
IPS_SetInfo($vid, $Variabel[$i]["Info"]);
IPS_SetVariableCustomProfile($vid, $Variabel[$i]["Profil"]);


	}}


$vorherNR = @IPS_GetObjectIDByName("Vor Waschen", $kategorie);
$waschgangNR = @IPS_GetObjectIDByName("Verbrauch Waschgang", $kategorie);
$statusNR = @IPS_GetObjectIDByName("Status", $kategorie);

$status = GetValue($statusNR);
$gesamt = GetValue($gesamtNR);
$vorher = GetValue($vorherNR);
$momentan = GetValue($momentanNR);

If ($status == 0 && $momentan > $betrieb)                //Wenn Waschmaschine gestartet wird
{SetValue($statusNR, 1 );
SetValue($vorherNR, $gesamt );                           //Zählerstand merken
//WFC_PushNotification($webfrontNR, 'WM', 'Waschmaschine geht an', '', 0);  //Nachricht das Maschine angeschaltet wurde

}
If ($status == 1 && $momentan < $standby)
{SetValue($statusNR, 2 );
WFC_PushNotification($webfrontNR, 'WM', 'Wäsche bitte entnehmen', '', 0); //Waschmaschine ist fertige, Wäsche kann entnommen werden

}
If ($status == 2 && $momentan < $betrieb)
{
SetValue($statusNR, 0 );
$ende = $gesamt - $vorher;
SetValue($waschgangNR, $ende );                                         //Energieverbrauch in Variabel schreiben
//WFC_PushNotification($webfrontNR, 'WM', 'Wäsche entnommen', '', 0);   //Nachricht das Wäsche entnommen wurde

}
?>

Um den Skript verwenden zu können muss er in den Ordner POWERMETER von der Steckdose
desweiteren müssen oben die 3 Id´s eingeben werden,

einmal die Schwelle ab wann die Waschmaschine im Betrieb ist.

(Bei mir hat sich 1 Watt bewert, wenn die Waschmaschine ganz aus ist zieht sie noch 0,1 Watt und sobald ich die Drehscheibe drehe ist sie bei 2-3 Watt)

und die Schwelle wenn die Waschmaschine fertig ist.

(Bei mir hatte die Waschmaschine ca 2-3 Watt also habe ich 4 Watt eingestellt.)

Ich hoffe ihr könnt was mit dem Skript anfangen

Gruß Patrick

Dass ist ja mal echt nett, dass du deinen Code hier zu Verfügung stellst! Besten Dank.

Bitte einmal Info ob der bei dir Funktioniert

Du musst den einmal selber ausführen danach läuft der automatisch

Hallo

bei mir funktioniert das Script leider nicht, zumindest kommt keine Pushmeldung.
Welchen Ordner vom Powermeter meinst Du? vielleicht liegts daran?

Hallo ich meine die Kategorie Powermeter die erstellt wurde als du die Steckdose in IP Symcon eingebunden hast.

Mach mal bitte nen Screenshot von der Kategorie in der du den Skript ausgeführt hast.

Gruß Patrick

Hallöchen, also das Script ist super! Ich finde es toll wenn man hier auch etwas teilt. Vor allem ist es auch sehr komfortabel und erstellt alles automatisch. Für den Anwendungszweck damit es überall passt wird es etwas schwieriger. im Prinzip ist es sicher nicht überall möglich nur aufgrund der Schwellwerte zu schalten. Ausser der Schwellwert für den Standbye stimmt hundertprozentig und alle Konfigs sind identisch. „Geeicht“ sind die Teile ja vermutlich nicht so richtig oder werden mit der Zeit träge. Zudem muss man beachten, dass man sehr viel an der Logik konfigurieren kann… zbsp ab welchem Schwellenwert Spannung der Aktor sendet, den INTERVALL ändert auf der CCU etc.

Wenn man das aber berücksichtig ist das Script super und aufgrund dessen oder als Basis genau das richtige, vielen Dank!

Gruss

Mahlzeit,

also ich musste meine Instanz in „POWERMETER“ umbenennen, da er mir beim anlernen die Instanz als „Homematic Device“ angelegt hat. Ich benutze den LAN Adapter. Ich musste noch den Schwellwert anpassen indem ich einen Waschgang „gemonitort“ habe. Ansonsten einwandfreies Script…Danke dafür.

Gruß

Thorsten

Danke für das Feedback. Freut mich das es bei euch funktioniert.

Das es nicht bei jeder Waschmaschine anzuwenden ist ist klar aber ich schätze bei 90 Prozent sollte es klappen wenn man die Schwellen einstellt

Gruß Patrick

Danke

Super !!

Servus Patrick und der Rest,

ich habe dein Script nun auch schon ne Weile im Einsatz, danke dafür. Jetzt stehe ich vor dem Problem, neue Waschmaschine. Die ist so klug, dass man einfach neue Wäsche einfüllen kann und drückt den Knopf „Wasche noch ne Ladung“. Das hat aber zur Folge, dass die Maschine im "Standby ca. 2,5W verbraucht. Während dem Waschgang, geht dieses Energiesparwunder aber ebenfalls in bis in die 2,xx Watt runter. Jetzt hab ich irgendwie Probleme die Schwellenwerte abzupassen. Das Script bekommt es nicht wirklich mit, dass die Waschmaschine fertig war vor einem „Neustart“. Jemand eine Idee wie das zu lösen sein könnte? Eventuell durch einen Timer?

Das Problem wurde auch im ELV-Magazin gelöst, da gab es irgendwas mit einem Timer, auch falls die WM in Pausen zu wenig Strom verbraucht etc. hab es aber nicht parat, kann zuhause mal schauen.

@Crackpot
Ich nutze ein an meine Geräte angepasstes Mittelwerts-Skript. Die Basis kam von Fraunhofer LINK

Funzt mit WaMa, Trockner und Spülmaschine einwandfrei! Die Spülmaschine macht bei mir ähnliche Stromspar-Sperenzien und hat so einen, dem Deiner WaMa ähnlichen, Schnellstart-Party-Modus. Man muss anfangs etwas mit den Werten spielen und die Verbrauchs-Graphen beobachten, kommt aber recht zügig zum Ergebnis.

Cheers
/Jens

Super,

vielen Dank. Werde ich dann mal implementieren und testen. Habt ihr auch irgendwas an den Werten direkt im Aktor geändert?

Darf ich diese super Vorlage mal aus der Versenkung holen?

Ich möchte damit ein Z-WAVE Zwischenstecker (mit ner Waschmaschine) überwachen.
Hab das Skript soweit an meine Gegebenheiten angepasst… Leider legt mir das Skript (nachdem es den Skripttimer auf minütlich) erstellt hat, die Variablen je Durchlauf zusätzlich/neu an.

Hier mal der Screenshot der Struktur:

$gesamtNR = 22795 /*[Z-Wave Switch 1 (Waschmaschine)\Energy_Counter]*/ ;        //ID vom Objekt ENERGY_COUNTER hier eingeben
$momentanNR = 22089 /*[Z-Wave Switch 1 (Waschmaschine)\Meter (2), Electric, W]*/ ;      //ID vom Objekt POWER hier eingeben
$webfrontNR = 33150 /*[WebFront]*/ ;   //ID vom Webfront mit der PushNotification hier eingeben
$betrieb = 8;                 //Schwelle ab wann Maschine an ist in Watt
$standby = 0.7;           //Schwelle wo Maschine im Leerlauf ist in Watt

 /* Ab hier nichts mehr verändern */


$kategorie=IPS_GetParent($_IPS['SELF']);
$ObjektID = @IPS_GetObjectIDByName("Z-Wave Switch 1 (Waschmaschine)", $kategorie);
if ($ObjektID === false)
{

IPS_CreateVariableProfile("Waschmaschine", 1);                 //Profil erstellen für Status der Waschmaschine
IPS_SetVariableProfileValues("Waschmaschine", 0, 2, 1);
IPS_SetVariableProfileAssociation("Waschmaschine", 0, "Aus", "", 0xFF0000);
IPS_SetVariableProfileAssociation("Waschmaschine", 1, "läuft", "", 0x00FF00);
IPS_SetVariableProfileAssociation("Waschmaschine", 2, "Bitte Wäsche entnehmen","" , 0xFFFF00);

$eid = IPS_CreateEvent(1);                                     //Wenn Variabeln noch nicht erstellt wurden
IPS_SetParent($eid, $_IPS['SELF']);
IPS_SetEventCyclic($eid, 0 /* Keine Datumsüberprüfung */, 0, 0, 2, 2 /* Minütlich */ , 1 /* Alle 1 Minuten */);
IPS_SetEventActive($eid, true);

$Variabel = array();                                           //Variabeln erstellen
$Variabel[] = array("Typ" => 1,
                       "Name"=>"StatusNR",
                       "Info"=>"Statusanzeige",
                       "Profil"=>"Waschmaschine");

$Variabel[] = array("Typ"=>2,
                       "Name"=>"Verbrauch Waschgang",
                       "Info"=>"",
                       "Profil"=>"");

$Variabel[] = array("Typ"=>2,
                       "Name"=>"Vor Waschen",
                       "Info"=>"",
                       "Profil"=>"");



for($i=0; $i < count($Variabel); $i++)
   {
  /* echo $Variabel[$i]["Typ"];
   echo $Variabel[$i]["Name"];
   echo $Variabel[$i]["Info"];
   echo $Variabel[$i]["Profil"]; */

$kategorie=IPS_GetParent($_IPS['SELF']);

echo $Variabel[$i]["Typ"];

$vid = IPS_CreateVariable($Variabel[$i]["Typ"]);
IPS_SetParent($vid, $kategorie);
IPS_SetName($vid, $Variabel[$i]["Name"]);
IPS_SetInfo($vid, $Variabel[$i]["Info"]);
IPS_SetVariableCustomProfile($vid, $Variabel[$i]["Profil"]);


    }}


$vorherNR = @IPS_GetObjectIDByName("Vor Waschen", $kategorie);
$waschgangNR = @IPS_GetObjectIDByName("Verbrauch Waschgang", $kategorie);
$statusNR = @IPS_GetObjectIDByName("Eigener Status", $kategorie);

$status = GetValue($statusNR);
$gesamt = GetValue($gesamtNR);
$vorher = GetValue($vorherNR);
$momentan = GetValue($momentanNR);

If ($status == 0 && $momentan > $betrieb)                //Wenn Waschmaschine gestartet wird
{SetValue($statusNR, 1 );
SetValue($vorherNR, $gesamt );                           //Zählerstand merken
//WFC_PushNotification($webfrontNR, 'WM', 'Waschmaschine geht an', '', 0);  //Nachricht das Maschine angeschaltet wurde

}
If ($status == 1 && $momentan < $standby)
{SetValue($statusNR, 2 );
WFC_PushNotification($webfrontNR, 'WM', 'Wäsche bitte entnehmen', '', 0); //Waschmaschine ist fertige, Wäsche kann entnommen werden

}
If ($status == 2 && $momentan < $betrieb)
{
SetValue($statusNR, 0 );
$ende = $gesamt - $vorher;
SetValue($waschgangNR, $ende );
}                                         //Energieverbrauch in Variabel schreiben
//WFC_PushNotification($webfrontNR, 'WM', 'Wäsche entnommen', '', 0);   //Nachricht das Wäsche entnommen wurde

Hat dazu jemand einen Denkanstoss?

Hi,

falls noch aktuell:
der Fehler scheint hier zu liegen:

$kategorie=IPS_GetParent($_IPS['SELF']);
$ObjektID = @IPS_GetObjectIDByName("Z-Wave Switch 1 (Waschmaschine)", $kategorie);

Gruß, Peter