ESAM Kannenbrüh - Funktion nachrüsten

    Diese Seite verwendet Cookies und Google AdSense. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen und Google AdSense zur Einblendung von Werbung benutzen. Weitere Informationen

    • ESAM Kannenbrüh - Funktion nachrüsten

      Hallo zusammen,

      ich habe bei meiner ESAM 3500 dahingehend umgebaut, dass es jetzt möglich ist, eine ganze Kanne Kaffee zu brühen.
      Hier schon mal ein Video vom Umbau.
      Sobald ich den Schaltplan zu Papier gebracht habe, ergänze ich den Rest.
      youtu.be/gr6oCoLrqxQ
      Werbung

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von oliverzier ()

    • Auf alle Fälle interessant, aber bis jetzt habe ich nur gesehen daß du für eine Tasse 9x gedrückt hast :1f643:
      Gruß Stefan
      ------------------------------------------------------------------------------------------------------------------------------------------------
      Wo ist das Problem, bei Anfragen Groß-und Kleinschreibung/Punkt und Komma zu beachten? So was fällt bei mir unter Höflichkeit.
      Ich beantworte keine Fragen per PN oder Email, dazu gibt es das Forum!
    • Aber eine lumperte Tasse kann ein jeder Automat :1f609:
      Gruß Stefan
      ------------------------------------------------------------------------------------------------------------------------------------------------
      Wo ist das Problem, bei Anfragen Groß-und Kleinschreibung/Punkt und Komma zu beachten? So was fällt bei mir unter Höflichkeit.
      Ich beantworte keine Fragen per PN oder Email, dazu gibt es das Forum!
    • Hier der Schaltplan
      [img]http://666kb.com/i/dpnz4tlyw3sejv34e.jpg[/img]

      Sowie der Quelltext für den Arduino. Dieser kann einfach via Sketch per USB geflasht werden.

      C-Quellcode: EsamCannenBruehFunktion

      1. //Delonghi Esam Kannenbrüh-Funktion
      2. //by Oliver R.
      3. int led1 = 9; //pin led1
      4. int led2 = 8; //pin led2
      5. int led3 = 7; //pin led3
      6. int led4 = 6; //pin led4
      7. int led5 = 5; //pin led5
      8. int led6 = 4; //pin led6
      9. int led7 = 3; //pin led7
      10. int led8 = 2; //pin led8
      11. double startzeit = 6; //Laufzeit Maschinen-Start in s
      12. //double startzeit = 6; //Laufzeit Maschinen-Start in s
      13. double auswahlzeit = 4; //Auswahlzeit für Tassenwahl per Taster in s
      14. double bruehzeit = 89; //Brühzeit für eine Tasse in s
      15. //double bruehzeit = 8;
      16. const int button1 = 12; //pin für button
      17. int rel1 = 11; //pin für relais
      18. double laufzeit = 0;
      19. int zaehler = 99;
      20. int tmp2 = 0;
      21. double tmp = 0;
      22. int kaffeekochen(char lednr);
      23. void setup() {
      24. // initialize the digital pins
      25. pinMode(led1, OUTPUT);
      26. pinMode(led2, OUTPUT);
      27. pinMode(led3, OUTPUT);
      28. pinMode(led4, OUTPUT);
      29. pinMode(led5, OUTPUT);
      30. pinMode(led6, OUTPUT);
      31. pinMode(led7, OUTPUT);
      32. pinMode(led8, OUTPUT);
      33. pinMode(rel1, OUTPUT);
      34. pinMode(button1, INPUT);
      35. Serial.begin(9600);
      36. }
      37. void loop() {
      38. //Serial.println(zaehler);
      39. delay(200);
      40. if (zaehler == 99){ //Maschinenstart LED Startsequenz ausführen
      41. zaehler = 0;
      42. tmp = laufzeit + startzeit * 1000;
      43. while ((digitalRead(button1) == LOW) && laufzeit < tmp) {
      44. //Serial.print("laufzeit:");
      45. //Serial.println(laufzeit);
      46. //Serial.print("startzeit:");
      47. //Serial.println(startzeit);
      48. //Serial.print("tmp:");
      49. //Serial.println(tmp);
      50. laufzeit=millis();
      51. digitalWrite(led1, HIGH);
      52. delay(80);
      53. digitalWrite(led1, LOW);
      54. digitalWrite(led2, HIGH);
      55. delay(80);
      56. digitalWrite(led2, LOW);
      57. digitalWrite(led3, HIGH);
      58. delay(80);
      59. digitalWrite(led3, LOW);
      60. digitalWrite(led4, HIGH);
      61. delay(80);
      62. digitalWrite(led4, LOW);
      63. digitalWrite(led5, HIGH);
      64. delay(80);
      65. digitalWrite(led5, LOW);
      66. digitalWrite(led6, HIGH);
      67. delay(80);
      68. digitalWrite(led6, LOW);
      69. digitalWrite(led7, HIGH);
      70. delay(80);
      71. digitalWrite(led7, LOW);
      72. digitalWrite(led8, HIGH);
      73. delay(80);
      74. digitalWrite(led8, LOW);
      75. delay(150);
      76. }
      77. }
      78. if (digitalRead(button1) == HIGH){
      79. zaehler ++;
      80. delay(200); }
      81. if (zaehler > 8){ //Anzeige zurücksetzen
      82. zaehler = 0;
      83. digitalWrite(led8, LOW);
      84. delay(80);
      85. digitalWrite(led7, LOW);
      86. delay(80);
      87. digitalWrite(led6, LOW);
      88. delay(80);
      89. digitalWrite(led5, LOW);
      90. delay(80);
      91. digitalWrite(led4, LOW);
      92. delay(80);
      93. digitalWrite(led3, LOW);
      94. delay(80);
      95. digitalWrite(led2, LOW);
      96. delay(80);
      97. digitalWrite(led1, LOW);
      98. delay(80);
      99. }
      100. if (zaehler == 1){
      101. digitalWrite(led1, HIGH);
      102. //Serial.print("laufzeit vor rechnung");
      103. //Serial.println(laufzeit);
      104. tmp = laufzeit + auswahlzeit * 1000;
      105. //Serial.print("tmp nach rechnung");
      106. //Serial.println(tmp);
      107. //Serial.print("auswahlzeit nach rechnung");
      108. //Serial.println(auswahlzeit);
      109. tmp2 = 0;
      110. //while ((digitalRead(button1) == LOW) && laufzeit < tmp ){
      111. while (zaehler == 1 && laufzeit < tmp ){
      112. laufzeit=millis();
      113. //Serial.print("laufzeit");
      114. //Serial.println(laufzeit);
      115. if (digitalRead(button1) == HIGH){
      116. zaehler = 2;
      117. delay(200); }
      118. tmp2 = 1;
      119. }
      120. if (zaehler == 1 && tmp2 == 1) {
      121. kaffeekochen(led1); }
      122. }
      123. if (zaehler == 2){
      124. digitalWrite(led1, HIGH);
      125. digitalWrite(led2, HIGH);
      126. //Serial.print("laufzeit vor rechnung");
      127. //Serial.println(laufzeit);
      128. tmp = laufzeit + auswahlzeit * 1000;
      129. //Serial.print("tmp nach rechnung");
      130. //Serial.println(tmp);
      131. //Serial.print("auswahlzeit nach rechnung");
      132. //Serial.println(auswahlzeit);
      133. tmp2 = 0;
      134. //while ((digitalRead(button1) == LOW) && laufzeit < tmp ){
      135. while (zaehler == 2 && laufzeit < tmp ){
      136. laufzeit=millis();
      137. //Serial.print("laufzeit");
      138. //Serial.println(laufzeit);
      139. if (digitalRead(button1) == HIGH){
      140. zaehler = 3;
      141. delay(200); }
      142. tmp2 = 1;
      143. }
      144. if (zaehler == 2 && tmp2 == 1) {
      145. kaffeekochen(led2); }
      146. }
      147. if (zaehler == 3){
      148. digitalWrite(led1, HIGH);
      149. digitalWrite(led2, HIGH);
      150. digitalWrite(led3, HIGH);
      151. //Serial.print("laufzeit vor rechnung");
      152. //Serial.println(laufzeit);
      153. tmp = laufzeit + auswahlzeit * 1000;
      154. //Serial.print("tmp nach rechnung");
      155. //Serial.println(tmp);
      156. //Serial.print("auswahlzeit nach rechnung");
      157. //Serial.println(auswahlzeit);
      158. tmp2 = 0;
      159. //while ((digitalRead(button1) == LOW) && laufzeit < tmp ){
      160. while (zaehler == 3 && laufzeit < tmp ){
      161. laufzeit=millis();
      162. //Serial.print("laufzeit");
      163. //Serial.println(laufzeit);
      164. if (digitalRead(button1) == HIGH){
      165. zaehler = 4;
      166. delay(200); }
      167. tmp2 = 1;
      168. }
      169. if (zaehler == 3 && tmp2 == 1) {
      170. kaffeekochen(led3); }
      171. }
      172. if (zaehler == 4){
      173. digitalWrite(led1, HIGH);
      174. digitalWrite(led2, HIGH);
      175. digitalWrite(led3, HIGH);
      176. digitalWrite(led4, HIGH);
      177. //Serial.print("laufzeit vor rechnung");
      178. //Serial.println(laufzeit);
      179. tmp = laufzeit + auswahlzeit * 1000;
      180. //Serial.print("tmp nach rechnung");
      181. //Serial.println(tmp);
      182. //Serial.print("auswahlzeit nach rechnung");
      183. //Serial.println(auswahlzeit);
      184. tmp2 = 0;
      185. //while ((digitalRead(button1) == LOW) && laufzeit < tmp ){
      186. while (zaehler == 4 && laufzeit < tmp ){
      187. laufzeit=millis();
      188. //Serial.print("laufzeit");
      189. //Serial.println(laufzeit);
      190. if (digitalRead(button1) == HIGH){
      191. zaehler = 5;
      192. delay(200); }
      193. tmp2 = 1;
      194. }
      195. if (zaehler == 4 && tmp2 == 1) {
      196. kaffeekochen(led4); }
      197. }
      198. if (zaehler == 5){
      199. digitalWrite(led1, HIGH);
      200. digitalWrite(led2, HIGH);
      201. digitalWrite(led3, HIGH);
      202. digitalWrite(led4, HIGH);
      203. digitalWrite(led5, HIGH);
      204. tmp = laufzeit + auswahlzeit * 1000;
      205. tmp2 = 0;
      206. while (zaehler == 5 && laufzeit < tmp ){
      207. laufzeit=millis();
      208. if (digitalRead(button1) == HIGH){
      209. zaehler = 6;
      210. delay(200); }
      211. tmp2 = 1;
      212. }
      213. if (zaehler == 5 && tmp2 == 1) {
      214. kaffeekochen(led5); }
      215. }
      216. if (zaehler == 6){
      217. digitalWrite(led1, HIGH);
      218. digitalWrite(led2, HIGH);
      219. digitalWrite(led3, HIGH);
      220. digitalWrite(led4, HIGH);
      221. digitalWrite(led5, HIGH);
      222. digitalWrite(led6, HIGH);
      223. //Serial.print("laufzeit vor rechnung");
      224. //Serial.println(laufzeit);
      225. tmp = laufzeit + auswahlzeit * 1000;
      226. tmp2 = 0;
      227. while (zaehler == 6 && laufzeit < tmp ){
      228. laufzeit=millis();
      229. if (digitalRead(button1) == HIGH){
      230. zaehler = 7;
      231. delay(200); }
      232. tmp2 = 1;
      233. }
      234. if (zaehler == 6 && tmp2 == 1) {
      235. kaffeekochen(led6); }
      236. }
      237. if (zaehler == 7){
      238. digitalWrite(led1, HIGH);
      239. digitalWrite(led2, HIGH);
      240. digitalWrite(led3, HIGH);
      241. digitalWrite(led4, HIGH);
      242. digitalWrite(led5, HIGH);
      243. digitalWrite(led6, HIGH);
      244. digitalWrite(led7, HIGH);
      245. tmp = laufzeit + auswahlzeit * 1000;
      246. tmp2 = 0;
      247. //while ((digitalRead(button1) == LOW) && laufzeit < tmp ){
      248. while (zaehler == 7 && laufzeit < tmp ){
      249. laufzeit=millis();
      250. if (digitalRead(button1) == HIGH){
      251. zaehler = 8;
      252. delay(200); }
      253. tmp2 = 1;
      254. }
      255. if (zaehler == 7 && tmp2 == 1){
      256. kaffeekochen(led7);
      257. }
      258. }
      259. if (zaehler == 8){
      260. digitalWrite(led1, HIGH);
      261. digitalWrite(led2, HIGH);
      262. digitalWrite(led3, HIGH);
      263. digitalWrite(led4, HIGH);
      264. digitalWrite(led5, HIGH);
      265. digitalWrite(led6, HIGH);
      266. digitalWrite(led7, HIGH);
      267. digitalWrite(led8, HIGH);
      268. tmp = laufzeit + auswahlzeit * 1000;
      269. tmp2 = 0;
      270. while (zaehler == 8 && laufzeit < tmp ){
      271. laufzeit=millis();
      272. if (digitalRead(button1) == HIGH){
      273. zaehler = 9; //prüfung, ob in der schleife die Taste gedrückt wird, falls ja, nächste Tasse (Zähler+1) oder abbruch (zähler = 9)
      274. delay(200);
      275. }
      276. tmp2 = 1;
      277. }
      278. if (zaehler == 8 && tmp2 == 1) {
      279. kaffeekochen(led8);
      280. }
      281. }
      282. } //EndLoop
      283. int kaffeekochen(char lednr) {
      284. digitalWrite(rel1, HIGH);
      285. delay(380);
      286. digitalWrite(rel1, LOW);
      287. delay(380);
      288. digitalWrite(rel1, HIGH);
      289. delay(380);
      290. digitalWrite(rel1, LOW);
      291. zaehler = zaehler - 1;
      292. tmp = laufzeit + bruehzeit * 1000;
      293. while ((digitalRead(button1) == LOW) && laufzeit < tmp ){
      294. laufzeit=millis();
      295. digitalWrite(lednr, LOW);
      296. if (digitalRead(button1) == HIGH){
      297. zaehler = 9; }
      298. delay(80);
      299. digitalWrite(lednr, HIGH);
      300. delay(80);
      301. digitalWrite(lednr, LOW);
      302. }
      303. return 0;
      304. }
      Alles anzeigen

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von oliverzier ()

    • Hey Oliver! Mega cool !!! :1f600: Bin begeistert!

      Theoretisch müsste doch auch folgende Idee machbar sein: Hatte überlegt, ob man nicht durch bestimmtes
      Abgreifen der Bedienteilkontakte und weiterer Bastelei (Raspberry Pi,...) und passender Software eine
      Delonghimaschine "Alexa"-fähig machen kann?

      Also wenn ich in einem "Delonghi-Alexa"-Skill im Amazon Developer alles programmiere und mit lokaler Hardware
      kombiniere, müsste sowas wie "Alexa, mache mir bitte einen mittleren Kaffee auf Stufe 3" machbar sein. :2753:
      Werbung
    • Ja, das sollte kein Problem sein und ich hatte auch schon darüber nachgedacht.

      Benötigt wird dazu ja nur ein Raspberry sowie z.B. ein 8Fach China-Relais-Modul. Das kann direkt an den Raspberry angeschlossen werden. Ich würde es Softwaretechnisch in FHEM abbilden. Ich habe so auch unsere Außenbeleuchtung realisiert.

      Problematisch ist allerdings, dass man keine Information darüber hat, wann das Wasser / Bohnen leer sind oder wann der Satzbehälter voll ist.
      Man könnte vielleicht vorhandene Kontakte abgreifen und die Anzahl der Tassen Zählen. Allerdings müsste man dann zusätzlich auch die Tasten an der Maschine selbst überwachen.

      Hier mal die Projektseite:
      rother-it.de/project-delonghi.html