Smarter SMC10EU Coffee in IPS?

Hallo zusammen,

der Kaffee ist echt gut. Bin auch am überlegen mir das Teil zuzulegen und wenn wir ein Modul dafür fertig haben ist das sicherlich noch wesentlich interessanter. :slight_smile: Aber irgendwie auch nur Spielerei. :smiley:

Vielleicht kann ja noch jemand einen Roboter bauen, der das Wasser auffüllt und den Filter leert. :smiley:

Grüße,
Kai

Hi Kai,

wo wir gerade bei Spielerei sind [emoji2].
Für sowas bräuchtest du rein theoretisch nur eine Wasserpumpe aus der PC Wasserkühlung.

Da du den Wasserstand ja dann per IPS abfragen kannst, schaltest du dementsprechend die Pumpe [emoji6].

Aber das brauche ich persönlich jetzt nicht wirklich [emoji12].

Gruß
Benjamin

Gesendet von iPhone mit Tapatalk

Hier mal ein Brühvorgang :

32 07 13 00 02 C2 7E 
32 0B 13 00 02 22 7E Start 2 Tassen 
32 53 13 00 02 22 7E brühen
32 47 13 00 02 22 7E fertig
32 46 13 00 02 22 7E Kanne entnommen
32 47 13 00 02 22 7E Kanne rein gestellt

Jetzt kommt das senden an den Client Socket dran,
Von Hand schon probiert per :

$InstanzID = @IPS_GetInstanceIDByName("Client Socket (IPS_SmarterCoffee #12746)", $ParentID);
$TX_BUF= "\x36\x02\x7e".chr(10);    //Tassen setzen
CSCK_SendText($InstanzID  ,$TX_BUF); 

Und klar, es ist spielerei im Moment, aber ich werde da den Wochplan mal nutzen, damit Morgens die „Arbeitskanne“ fertig ist…:smiley:

Vielleicht kann ja noch jemand einen Roboter bauen, der das Wasser auffüllt und den Filter leert.

Hau rein, Kai:D

So, einige neue Dinge für mich.
32 07 13 00 02 C2 7E
Hier nochmal Byte0 - Byte6.

Byte5 (C2) ist:
C = 12, die Tassen die aktuell, oder zuletzt gebrüht wurden.
2 = Der Sollwert der Tassen, die in der Maschine aktuell stehen.

Byte2 (07) auch hier sollte man teilweise aufteilen.
Byte2 : 07 = Fertig Bohnen, Heizplatte aus
Byte2 :47 = Fertig Bohnen, Heizplatte an
Byte2 :46 = Fertig, Heizplatte an, Kanne nicht vorhanden.

Ich habe das jetzt nur in Skripten, und steuere damit übers Webfront. Geht besser als mit der IOS APP.:eek:
Modul hat Kai angefangen, der Rest kommt dann da rein, wenn ich die Dinge die per Skript laufen, getestet habe.
Bis jetzt sieht es aber gut aus.
Ich denke, zum Ostertreffen ist das fertig.

Super Arbeit [emoji106]

Gesendet von iPhone mit Tapatalk

Ich vermute jetzt,
Byte1 (Status), Byte2( auch Wasserstand), Byte6 (Tassenanzahl, ist klar… Soll-Ist) müssen „zerlegt“ werden.

z.B. Byte2 in HEX für Wasserstand :
13 : 1=?, 3=Voll (bei standby)
12 : 1=?, 2=Halb (bei standby)
02 : 0=?, 2=Halb (bei brühen)
01 : 0=?, 1=Wenig (bei brühen)
00 : 0=?, 0=Leer ( bei brühen)

usw
Jeden Tag ein bischen mehr…

Und wieder was neues…
Status Byte wird in Bit’s zerlegt.
Wasserstand geht jetzt richtig.


<?
//host = '192.168.1.15'
//port = 2081
$ID= IPS_GetParent($_IPS['SELF']);

if ($_IPS['SENDER'] == "RegisterVariable")
   {
       	$data  = RegVar_GetBuffer($_IPS['INSTANCE']);
       	$data .= $_IPS['VALUE'];
		GetStatus($ID,$data);

   }

function GetStatus($ID,$data)
{
//var_dump($data);
    $byte0      = ord(substr($data,0,1));// immer 0x32 - 50 Startbyte
    $status     = ord(substr($data,1,1));//(carafe << 0) + (grind << 1) + (ready << 2) + (grinder << 3) + (heater << 4) + (hotplate << 6) + (working << 5) + (timer << 7))
    $waterlevel = ord(substr($data,2,1)); 1te Stelle Wasser genug für Tassen !, 2te Stelle voll, halb, wenig, leer.
    $byte3      = ord(substr($data,3,1));// immer 0x00 - 0
    $strength   = ord(substr($data,4,1));
    $cups       = dechex (ord(substr($data,5,1))); // 1te Stelle die Anzahl die gekocht würden(werden), 2te Stelle Sollwert
	$byte6      = ord(substr($data,6,1));// immer 0x7E - 126 Endbyte
	
	if ($byte0 == 50){//0x32
		$cups =str_pad($cups, 2 ,'0', STR_PAD_LEFT);
		$arr=str_split($cups, 1);
		$cups = hexdec($arr[0]);
		$cups_soll = hexdec($arr[1]);

		$waterlevel = dechex($waterlevel);
		$waterlevel =(str_pad($waterlevel, 2 ,'0', STR_PAD_LEFT));
		$arr =str_split($waterlevel, 1);
		$genugwasser = hexdec($arr[0]);
		$waterlevel = (hexdec($arr[1]));

	    $id = IPS_GetObjectIDByName("Status",$ID);
	    SetValue($id,$status);


	    $id = IPS_GetObjectIDByName("Wasserstand",$ID);
	    SetValue($id,$waterlevel);

	    $id = IPS_GetObjectIDByName("genug Wasser?",$ID);
	    SetValue($id,$genugwasser);
	
	    $id = IPS_GetObjectIDByName("Stärke",$ID);
	    SetValue($id,$strength);
	
	    $id = IPS_GetObjectIDByName("Tassen",$ID);
	    SetValue($id,$cups);
	    $id = IPS_GetObjectIDByName("Tassen Soll",$ID);
	    SetValue($id,$cups_soll);

        $stat =(str_pad(decbin($status), 8 ,'0', STR_PAD_LEFT));
	    $id = IPS_GetObjectIDByName("Filter/Bohnen",$ID);

	    SetValue($id, substr($stat,6,1));
	    $id = IPS_GetObjectIDByName("Kanne in Maschine ?",$ID);
	    SetValue($id, substr($stat,7,1));

	    $id = IPS_GetObjectIDByName("Heizplatte",$ID);
	    SetValue($id, substr($stat,1,1));

	    $id = IPS_GetObjectIDByName("Kaffee fertig",$ID);
	    SetValue($id, substr($stat,5,1));

	}
}

?>

So,
hier könnt Ihr mal ein Modul testen:

git://icy.my-router.de/TS_SmarterCoffee

unter Module eintragen.

Im „Client Socket (TS_SmarterCoffee #xxxxx)“ dann nur IP und Port eintragen, dass war es.

Super. Probiere ich übers Wochenende aus und berichte

Gesendet von iPhone mit Tapatalk

Ich kann erst am 16. April testen!

Dann bin ich mal gespannt, und sage auch mal an was ev. noch verbessert werden muss.
Habe heute meine Ersatzmaschine bekommen, die erste hatte nach 4 Tagen die Klappe nach dem mahlen nicht mehr geöffnet (welche das Kaffeepulver nach dem mahlen in den Filter lässt.).
Mal sehen, wie es jetzt läuft.:eek:
Wenn dann was passiert, zerlege ich das Teil und sch… auf die Garantie.

Zum Ostertreffen wird das Teil mitgenommen, wenn alles klappt.(Befehl von Spoosie :smiley: )

Hallo
Hab ein Problem mit den Funktionen des Moduls.
Wenn ich die Funktion

	TS_cof_SetCups($instanze,$cups);

benutzen will, kommt ein Fehler.

<b>Fatal error</b>:  Call to undefined method TS_SmarterCoffee::cof_SetCups() 

In __generated.inc.php steht

$result = (new TS_SmarterCoffee($InstanceID))->cof_SetCups($value);

Danke,
die Funktionen habe ich so nicht getestet,
Benutze nur das Webfront.
Werde mal auf Fehlersuche gegen…

Update online,

TScof_SetCups($instanze,$cups);
sollte dann gehen…

Hi Thomas,

erstmal vielen Dank für die Umsetzung! Super Sache.

Kurze Rückmeldung von mir. Habe das Modul installiert und läuft soweit sehr gut. Viel getestet habe ich leider noch nicht.
Hast du eine Übersicht an Funktionsaufrufen? Ich möchte halt über das Modul Kaffee Kochen per Script, da ich noch kein Webfront großartig nutze.

Was beudetet der Status „Boiler“ und Mahlwerk, Status, Status Hex ?

Hier ein kleiner Verbessungsvorschläge:

  • Start des Kochens sollte nur ein Button sein (kein Boolean Nein)

Was ich jetzt noch nicht getestet habe ist, wenn zB keine Kanne in der Maschine ist, kann ich trotzdem auf Start AN klicken?
Super wäre wenn es dann nur ein Button ist (siehe Verbessungsvorschlag) und dieser dann zu de-aktiviert wechseln würde (also kein Start Command sendet)

Super finde ich, dass der Status „genug Kaffee“ sich je nach Tassenanzahl ändert :wink:

Gruß
Benjamin

Danke dir Benjamin,
für deine Rückmeldung.
Das Modul ist schnell entstanden, und ich suche noch nach Bit’s, daher ist da noch Status und Status Hex drin, die in Bits zerlegt werden…
Boiler= die Heizung die das Wasser kocht, sollte ich in „brühen“ umbenennen.
Mahlwerk = wenn die Bohnen gemahlen werden, und es läuft.
Mit den Buttons habe ich noch keine Idee, gefällt mir auch noch nicht.

„genug Wasser“ bei soll Tassenanzahl zeigt an, ob das Bit (auch in dem Byte :Status und Status Hex) gesetzt ist…
Meine neue macht da aber etwas Probleme.:mad: Die Schwimmer passen nicht…Also doch zerlegen…

Wenn keine Kanne drin ist, startet die Maschine nicht, ausser nur hast die Kannenerkennung in der APP ausgeschaltet (war mein Test…) Leider geht das auch nich so gut, bei meiner neuen…
Ich werde nach Ostern weitermachen, da das Teil erst mit zum Ostertreffen muss.

Gestern vorab schon mein Geburtstagsgeschenk bekommen, voll begeistert! Timer über App programmiert leider war die Kaffeekanne leer! Werde heute Abend Mal das Modul ausprobieren!

Mfg
Maxx

Dann mal alles gute zum Geb.
Timer habe ich per IPS Wochenplan gemacht, starte jeden Morgen von Mo-Fr die Maschine mit 10 Tassen. (Kaffee für die Arbeit…) Klappt perfekt.

Von mir ebenfalls alles gute.
Ja der Timer in der App ist nichts anderes als eine Erinnerung. Du bekommst dann eine Notification, in der du noch manuell auf Kaffee kochen drücken darfst. Nicht wirklich automatisch :wink:

Deshalb ja die Integration über IPS, welche hervorragend funktioniert.

Gruß
Benjamin

Tolles Modul [emoji1360], funktioniert einwandfrei. Zur Info, habe heute ein Update gemacht und festgestellt das Start/Stop nun getrennte Buttons sind, gute Idee. Allerdings funktionieren diese beiden nicht, alle anderen Dinge gehen nur wenn man auf Start drückt passiert nichts.

Gruss Torsten

Gesendet von iPhone mit Tapatalk