Sadržaj:

Aparat za kavu s omogućenim IoT -om: 9 koraka (sa slikama)
Aparat za kavu s omogućenim IoT -om: 9 koraka (sa slikama)

Video: Aparat za kavu s omogućenim IoT -om: 9 koraka (sa slikama)

Video: Aparat za kavu s omogućenim IoT -om: 9 koraka (sa slikama)
Video: Настройте свою кофемашину NESCAFÉ® Dolce Gusto® Infinissima от Krups® 2024, Srpanj
Anonim
Image
Image
Potrebna oprema
Potrebna oprema

Ova instrukcija je prijavljena na IoT natjecanje - ako vam se sviđa, glasajte za nju

AŽURIRANO: Sada podržava dvosmjerne komunikacije i OTA ažuriranja

Već neko vrijeme imam aparat za kavu Jura i uvijek sam ga htio nekako automatizirati.

Već nekoliko godina vodim osnovni sustav kućne automatizacije, ali aparat za kavu nije bilo nešto što je jednostavno modificirati (ili sam barem tako mislio). Aparati za kavu Jura općenito imaju "dijagnostički priključak" i/ili priključak koji se koristi za dodavanje sustava plaćanja na aparat, međutim nisam mogao pronaći nikakve informacije o tome kako se on može koristiti. U novije vrijeme neki su pojedinci obrnuto projektirali protokol i objavili ga. Problem je bio u tome što se većina referenci na dostupne funkcije odnosila na mnogo veće strojeve od mojih (Ena 7).

Povrh toga, moj stroj nema stalno napajanje u stanju pripravnosti kao veći strojevi, umjesto toga ima visokonaponski prekidač koji napajanje čini "uključenim". Fizički gumb na stroju zapravo aktivira 2 prekidača - jedan niski napon (logička strana, isključivanje) i jedan visoki napon (uključivanje). Oba su prekidača trenutna.

Također sam trebao biti siguran da stroj i dalje radi 100% neovisno o bilo kojem upravljačkom mehanizmu, tj. Stroj i dalje funkcionira normalno kao da nije omogućen IoT.

Za automatizaciju aparata potrebne su dvije stvari: 1) Moći kontrolirati napajanje aparata 2) Moći komunicirati sa aparatom za aktiviranje funkcija za kuhanje kave, ispiranje itd.

Korak 1: Kako ćemo to učiniti

Koristit ćemo ESP8266 'ESP-01' modul za spajanje na kućni WiFi i pretplatiti se na MQTT poslužitelj/temu koja sluša naredbe. "Prednji kraj" koji sam koristio je OpenHAB2, ali nema razloga da ga ne možete dodati na web sučelje na uređaju i izravno kontrolirati ako želite ili putem HTTP naredbi za preuzimanje.

ESP8266 će upravljati upravljanjem s 2 releja povezana s gumbom za uključivanje i također će obraditi serijske naredbe od/do aparata za kavu.

UPOZORENJE - Ovo uputstvo opisuje postupak koji sam koristio za izmjenu svog aparata za kavu Jura Ena7 za upravljanje putem kućne automatizacije. Bavi se izmjenom mrežnog uređaja koji može biti opasan ako se izvodi pogrešno. Ovdje navedeni podaci mogu biti nepotpuni, netočni i nesigurni. Pažljivo nastavi. Ne prihvaća se odgovornost.

Korak 2: Potrebna oprema

Potrebna oprema
Potrebna oprema
Potrebna oprema
Potrebna oprema
Potrebna oprema
Potrebna oprema

Dijelovi

  • Modul ESP-01 i način programiranja (Arduino IDE i fizički adapter za programiranje)
  • 2 -smjerni relejni modul EBAY
  • 5v -> 3.3v Regulator EBAY
  • Mali 5V mrežni punjač za telefon
  • Pretvarač logičke razine* Freetronics
  • Ostalo žica, zaglavlja iglica, termoskupljanje itd. Za sve povezivanje.

Alati

  • Lemilica s finim vrhom
  • Lem
  • Skidači žice su zgodni
  • Torx upravljački program T15
  • Ovalni sigurnosni alat (ili ga napravite, traje samo nekoliko minuta)

*U početku sam koristio arduino UNO u testiranju svih serijskih naredbi na stroju i radio je besprijekorno, međutim ESP modul je odbio raditi. Triput sam provjerio kôd i bio sam siguran da su naredbe koje izlaze iz ESP modula iste kao i arduino, međutim to je bilo zabranjeno. Ovo sam stavio na ESP modul koji radi samo na 3.3v logici, a ne na 5V. Nakon što sam stavio Logic pretvarač, radio je dobro. To može, ali i ne mora biti potrebno na drugim strojevima.

U idealnom slučaju, imali biste postojeći sustav kućne automatizacije koji podržava MQTT protokol (kao što je openhab) jer je tome cilj projekta. Ako ga samo želite kontrolirati pomoću gumba na web stranici bez ikakvih podržavajućih sustava, morat ćete unijeti neke promjene u kôd ugrađene web stranice. Nije pretjerano komplicirano postići (možda rev2..)

Korak 3: Jura protokol

Protokol Jura
Protokol Jura

Podaci do/sa stroja su samo serijski @ 9600, ali i Jura ima neke trikove u rukavu. Protokol to koristi za dodatni ECC i/ili za zamračivanje komunikacije. Jednostavno rečeno, svaki bajt podataka (znak) podijeljen je na bitove 2 i 5 od 4 standardna serijska bajta praćena pauzom od 8 ms. Ako želite saznati kako to funkcionira, na linkovima ovdje ima mnogo informacija.

Informacije o protokolu preuzete sa:

Arduino kôd to pojednostavljuje, omogućujući vam prijenos standardnih, čitljivih naredbi koje čovjek može prenijeti u protokol Jura.

Moj kôd je kombinacija koda s:

Naredbe navedene na gornjim stranicama nisu bile točne za moj stroj, ali metodom pokušaja i pogrešaka uspio sam doći do sljedećeg:

FA: 01 - Isključuje se (ali ne ispire, čak i ako je potrebno) FA: 02 - Odgovara "u redu", ali nije siguran što radi. FA: 03 - Poruka o ispiranju (Forsira poruku 'ispiranje' na ekranu, pritiskom na rotacijski stroj za ispiranje) FA: 04 - Radnja ispiranja - Ispire se kada se pojavi poruka 'Pritisnite okretni gumb', inače ne radi ništa FA: 05 - Jako na ekranu (Vjerojatno to kombinirajte s pravljenjem jake kave) FA: 06 - Jaka na ekranu (Vjerojatno to kombinirajte s jačom pripremom kave) FA: 07 - "Posebna" na ekranu, ali zapravo ne radi ništa, nisam siguran čemu služi: 08 - Steam FA: 09 - Mala kava FA: 0A - Velika kava

Postoje i druge naredbe, ali meni je ovo dovoljno …

Budite oprezni pri izdavanju nepoznatih naredbi, na primjer, očito AN: 0A će izbrisati EEPROM uređaja …

Korak 4: Rastavljanje

Otvaranje samog stroja nije pretjerano jednostavno jer su vam potrebni malo posebni alati, ali iskusna osoba će pronaći način - potreban vam je T15 Torx bit i 'ovalni ključ' za 2 vijka. Torx koji sam već imao, ovalni alat koji sam napravio od 4 mm vijka s nasadnom glavom izbušen i malo spljošten čekićem.

Ovdje su upute prilično dobro predstavljene-https://marius.me.uk/blog/2015/03/open-jura-ena-5/

5. korak: poništavanje jamstva

Poništavanje jamstva
Poništavanje jamstva
Poništavanje jamstva
Poništavanje jamstva
Poništavanje jamstva
Poništavanje jamstva
Poništavanje jamstva
Poništavanje jamstva

Kad uđete u stroj, vidjet ćete glavne komponente. Glavni ulaz za napajanje ima lijepo mjesto ispod za dodavanje 5v punjača.

Dodao sam žice (ocijenjeno mrežom) na priključni blok na ulazu u stroj i lemio/toplinski ih spojio na mrežne igle 5V punjača. Moj određeni model nije bio tip USB priključka, već onaj koji je imao trajno pričvršćen vod. Možda nemate dovoljno mjesta za USB priključak tipa jedan da biste mogli koristiti stvarni USB kabel, ali ako ste otvorili punjač, mogli biste ukloniti USB priključak i zamijeniti ga standardnom žicom do 5v i Gnd točaka.

Ako želite, možete zamijeniti drugo napajanje s naponom od 5 V. 500ma bi trebalo biti dosta.

U blizini brusilice ima dovoljno mjesta za relejni modul. Moramo spojiti dva releja da rade paralelno s glavnim prekidačima. Jednostavno sam izrezao postojeće žice, ogolio ih, pokosio, dodao dodatnu žicu i lemio ih natrag (ne zaboravite na hladnjak). Bilo je dovoljno opuštanja u žicama za to.

Relejni modul pričvršćen je dvostranom trakom dobre kvalitete. Sa spojenim žicama i sa samo ograničenim prostorom za kretanje, čak i ako traka izgubi prianjanje, modul neće otići predaleko i neće moći doći u dodir s metalnim predmetima.

Također sam provjerio dijagnostički port na svom računalu kako bih odredio mjesto unutarnjih veza kako bih mogao postići potpuno skrivenu integraciju. Koriste se samo žice tx, rx i Gnd.

Ako imate komercijalniji stroj koji podržava napon u stanju pripravnosti i/ili ne želite poništiti jamstvo za svoj uređaj, umjesto toga se možete povezati izravno s dijagnostičkim portom, ali možda nećete moći uključiti uređaj pomoću ovog uređaja.

Moj stroj koristi 7 -polni konektor. S lijeva na desno to je:

NC Tx G Rx NC 5v NC

Odgovarajući pinovi na matičnoj ploči: crvena = Gnd narančasta = Rx crna = Tx

Više informacija o pinout-ovima možete pronaći ovdje:

Korak 6: Ožičenje logičke strane

Ožičenje logičke strane
Ožičenje logičke strane
Ožičenje logičke strane
Ožičenje logičke strane
Ožičenje logičke strane
Ožičenje logičke strane

Pregledajte dijagram - Izgleda previše komplicirano, ali zapravo nije.

Pretvarač razine montirao sam na stražnju stranu (depiniranog) regulatora napona s nekom dvostranom trakom. Zatim sam upotrijebio neke sastavne noge za lemljenje pinova za napajanje i uzemljenje s obje strane pretvarača razine na odgovarajuće pinove modula snage. Cijeli ovaj modul tada radi kao "prolaz" za svu logiku i napajanje za ESP-01.

Koristio sam dva srednja pretvarača za serijske podatke, a dva vanjska za relejne upravljačke signale, ali nije važno koji koristite.

Zapravo nije potrebno da ti relejni moduli pokreću logiku od 5 V jer su aktivni NISKO, ali jednostavno su radili lijepo pa sam to ipak učinio.

Koristio sam žensko zaglavlje 4x2 za spajanje na ESP modul. To omogućuje jednostavno učitavanje koda ili zamjenu modula.

Na slici nije prikazan 5V ulaz - ja sam svoj spojio izravno na relejni modul (vidi drugu sliku). Crna žica u donjem lijevom kutu slike serijski je podatak s glavne ploče. Koristio sam dio zaštićenog produžnog kabela od 3,5 mm za slušalice samo kako bih smanjio šanse za smetnje u podatkovnoj liniji.

Kod 12f koristi SoftwareSerial umjesto hardverske serije - To omogućuje modulu da izvještava o statusu radi otklanjanja pogrešaka natrag putem normalne serijske serije. Umjesto toga, veze se izvode putem pinova 4 i 5. Prilagodio sam isto zaglavlje kako bi ESP12F bio zamjenski utikač za ESP-01, samo zamijenivši te serijske pinove

Korak 7: Programiranje modula

Programiranje modula
Programiranje modula

Kôd je sastavljen u odnosu na Arduino 1.8.1 s dodatkom ploče ESP8266 i PubSubClient 2.6.0 (što je biblioteka MQTT)

Izmijenite kôd prema svojim zahtjevima i prenesite kôd u modul ESP-01 i spojite se na stroj. Budite oprezni s orijentacijom iglica!

Konfiguracija

Opcija 1)

Samo na osnovnom kodu u zip -u. Kad se ESP modul prvi put pokrene, prelazi u AP način rada i postavlja svoj IP na 192.168.4.1. Zatim se možete povezati s modulom i promijeniti IP te se povezati s vlastitom pristupnom točkom. Također ćete morati postaviti IP za svoj stroj u tom rasponu jer na modulu nema DHCP -a.

Zadani AP SSID je "ESPSwitch", a lozinka je "12345678"

Prema zadanim postavkama ostaje u AP načinu rada 2 minute. Ovu postavku možete promijeniti u "global.h" - Zove se "adminTimeout" i nalazi se u milisekundama. Preporučujem da ovo promijenite na nešto nisko nakon što imate valjanu konfiguraciju u EEPROM -u jer će u protivnom samo uzrokovati nepotrebna kašnjenja pri pokretanju uređaja.

Opcija 2)

Ovo je zadani način rada za noviji kôd koji podržava dvosmjerne komunikacije, opcija 1. nije dostupna. Također možete promijeniti zadane postavke SSID -a/lozinke u glavnoj ino datoteci (potražite '// DEFAULT CONFIG') kako bi se učitao te postavke u EEPROM pri prvom pokretanju i mijenjaju kašnjenje administratorskog načina na nešto nisko u "global.h". Time se izbjegava petljanje oko povezivanja s privremenom pristupnom točkom.

Uređaj će automatski postaviti svoj MQTT ID (i put pretplate) na posljednje 4 znamenke serijskog broja modula. Staza je prema zadanim postavkama ha/mod //#, promijenite kako vam odgovara, ali pročitajte komentare u kodu kako biste bili sigurni da odgovarajući niz ima ispravnu duljinu.

Činim to jer znači da ne moram generirati jedinstveni ID za svaki modul na svojoj mreži.

ID uređaja je vidljiv, a MQTT poslužitelj može se postaviti putem stranice poslužitelja MQTT na unutarnjem web poslužitelju

Korak 8: Učinite to stvarima…

Naredbe MQTT su

ha/mod/xxxx/0 ili 1 = Uključivanje/isključivanje snage

Bilo koji drugi niz bit će tretiran kao naredba i poslan putem serijskog porta. Status se prijavljuje /ha /kavi u HEX -u

S OpenHAB -om

aparat za kavu.točke

Broj Coffee_Machine_Power "Power" {mqtt = "> [control: ha/mod/8002/: command:*: default]"} Niz Coffee_Machine_Status {mqtt = "<[control: ha/coffee: stanje: zadano]"}

Karta web stranice

Stavka grupe = "Aparat za kavu" {Switch item = Coffee_Machine_Power label = "Power" preslikavanja = [1 = "Toggle"] Switch item = Coffee_Machine_Cmd label = "" mappings = ["FA: 09" = "Small"] Switch item = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Large"] Promijeni stavku = Coffee_Machine_Cmd label = "" mappings = ["FA: 04" = "Ispiranje"] Tekstualna stavka = Coffee_Status label = "Status [%s] "}

voicecontrol.ru pravila

import org.openhab.model.script.actions.* import org.openhab.core.library.types.* uvoz java.util.*

pravilo "Pravila glasovnih naredbi"

kada je stavka VoiceCommand primila naredbu tada je Var String naredba = VoiceCommand.state.toString.toLowerCase logInfo ("Voice. Rec", "VoiceCommand primljena"+naredba)

if (command.contains ("uključite aparat za kavu") || command.contains ("isključite aparat za kavu")) {

sendCommand (Coffee_Machine_Power, 1)} if (command.contains ("napravi mi malu kavu")) {sendCommand (Coffee_Machine_Cmd, "FA: 09")} if (command.contains ("napravi mi veliku kavu")) { sendCommand (Coffee_Machine_Cmd, "FA: 0A")} if (command.contains ("isperite aparat za kavu")) {sendCommand (Coffee_Machine_Cmd, "FA: 04")}} end

Pravila (za tumačenje HEX odgovora u 'stvarne' vrijednosti):

pravilo "Status aparata za kavu" kada je stavka Coffee_Machine_Status primila ažuriranje, zatim var String response = Coffee_Machine_Status.state.toString () if (response.indexOf ("ic:")> -1) {var String hexString = response.substring (3, 5)

var int num = (Integer.parseInt (hexString, 16));

var String binaryString = String.format ("%8s", Integer.toBinaryString (num)). replace ('', '0')

var int trayBit = binaryString.substring (0, 1)

var int tankBit = binaryString.substring (2, 3) var int heatBit = binaryString.substring (7, 8) var int washBit = binaryString.substring (6, 7)

if (trayBit == "0") {

postUpdate (Coffee_Status, "Tray Missing")} if (tankBit == "1") {postUpdate (Coffee_Status, "Fill Tank")} if (washBit == "1") {postUpdate (Coffee_Status, "Press Rotary")} if (trayBit == "1" && tankBit == "0" && washBit == "0") {postUpdate (Coffee_Status, "Ready")}

}

if (response == "Off") {postUpdate (Coffee_Status, "Off")} kraj

Korak 9: Poboljšanja/Todo

Pojednostavite početno postavljanje povezivanjem na WiFi - Gotovo. Odustao od ideje 'administratorskog načina rada' jer je bio neugodan. Sada samo unesite SSID i lozinku u kôd. Sprema na EEPROM ako ažurirate/promijenite putem web sučelja.

Noviji kôd također podržava OTA ažuriranja, ali morat ćete nadograditi EEPROM na modulu ESP-01 da bi to funkcioniralo ili komentirati odgovarajuće OTA stavke

Dodajte kôd za obradu odgovora sa stroja i pročitajte status kao da nema pladnja, prazne zemlje i punjenja spremnika - Gotovo. Dodao sam kôd za ponovno čitanje statusa i objavljivanje u ha/kavi. Ovo su samo sirovi odgovori i još uvijek radim na njihovom tumačenju, ali zasad mi nedostaje ladica, a spremnik prazan. On uključuje stroj svakih 9 sekundi kada je uključen i objavljuje odgovor na MQTT

Odgovor je u HEX -u, ali pojedinačni bitovi označavaju senzore

Dodajte kod web stranicama za izravnu kontrolu putem naredbi HTTP GET.

Natjecanje za Internet stvari 2017
Natjecanje za Internet stvari 2017
Natjecanje za Internet stvari 2017
Natjecanje za Internet stvari 2017

Prva nagrada na natjecanju Internet of Things 2017

Preporučeni: