Obsah:

Kávovar s podporou IoT: 9 krokov (s obrázkami)
Kávovar s podporou IoT: 9 krokov (s obrázkami)

Video: Kávovar s podporou IoT: 9 krokov (s obrázkami)

Video: Kávovar s podporou IoT: 9 krokov (s obrázkami)
Video: ЛЮБОВЬ С ДОСТАВКОЙ НА ДОМ (2020). Романтическая комедия. Хит 2024, Júl
Anonim
Image
Image
Potrebné vybavenie
Potrebné vybavenie

Tento návod je zaradený do súťaže IoT - Ak sa vám páči, hlasujte zaň

AKTUALIZOVANÉ: Teraz podporuje obojsmerné komunikácie a aktualizácie OTA

Už nejaký čas mám kávovar Jura a vždy som ho chcel nejako automatizovať.

Už niekoľko rokov používam základný systém automatiky pre domácnosť, ale kávovar nebol taký jednoduchý na úpravu (alebo som si to aspoň myslel). Kávovary Jura majú spravidla „diagnostický port“a/alebo port slúžiaci na pridanie platobného systému do zariadenia, ale nenašiel som žiadne informácie o tom, ako by sa dal použiť. Nedávno bol tento protokol niektorými jednotlivcami vytvorený na základe reverzného inžinierstva a zverejnený. Problém bol v tom, že väčšina odkazov na dostupné funkcie bola pre oveľa väčšie stroje ako moje (Ena 7).

Okrem toho môj stroj nemá trvalý pohotovostný režim ako väčšie stroje, namiesto toho má spínač VN, vďaka ktorému sa napájací zdroj „zapne“. Fyzické tlačidlo na zariadení v skutočnosti aktivuje 2 prepínače - jeden nízkonapäťový (logická strana, vypnutý) a jeden vysokonapäťový (zapnutý). Oba spínače sú dočasné.

Tiež som sa potreboval uistiť, že stroj stále funguje 100% nezávisle od akéhokoľvek riadiaceho mechanizmu, tj. Stroj stále funguje tak normálne, ako keby nemal povolené IoT.

Na automatizáciu zariadenia sú potrebné dve veci: 1) Ovládanie napájania zariadenia 2) Schopnosť komunikovať so zariadením a aktivovať funkcie na prípravu kávy, plákanie atď.

Krok 1: Ako to urobíme

Na pripojenie k domácej sieti Wi-Fi a prihlásenie na odber servera/témy počúvania príkazov MQTT použijeme modul ESP8266 'ESP-01'. „Frontend“, ktorý som použil, je OpenHAB2, ale neexistuje žiadny dôvod, prečo by ste nemohli pridať do webového rozhrania v zariadení a ovládať priamo, ak by ste chceli alebo pomocou príkazov HTTP Get.

ESP8266 zvládne ovládanie 2 relé súvisiacich s vypínačom a tiež spracuje sériové príkazy do/z kávovaru.

UPOZORNENIE - Tento návod popisuje postup, ktorý som použil na úpravu svojho kávovaru Jura Ena7 tak, aby sa dal ovládať pomocou domácej automatizácie. Zaoberá sa úpravou zariadenia na elektrickú sieť, ktoré môže byť nebezpečné, ak je nesprávne vykonávané. Informácie tu môžu byť neúplné, nepresné a nebezpečné. Postupujte opatrne. Žiadna zodpovednosť nie je akceptovaná.

Krok 2: Potrebné vybavenie

Potrebné vybavenie
Potrebné vybavenie
Potrebné vybavenie
Potrebné vybavenie
Potrebné vybavenie
Potrebné vybavenie

Časti

  • Modul ESP-01 a spôsob jeho programovania (Arduino IDE a fyzický adaptér na programovanie)
  • 2 -cestný reléový modul EBAY
  • 5v -> 3,3v regulátor EBAY
  • Malá 5 V sieťová nabíjačka na telefón
  • Konvertor logickej úrovne* Freetronics
  • Rôzne vodiče, kolíkové záhlavia, tepelne zmršťovacie zariadenia atď. Na prepojenie všetkého.

Nástroje

  • Spájkovačka s jemným hrotom
  • Spájka
  • Praktické sú odizolovače drôtov
  • Ovládač Torx T15
  • Oválny bezpečnostný nástroj (alebo si ho vytvorte, trvá len niekoľko minút)

*Na testovanie všetkých sériových príkazov do zariadenia som pôvodne použil arduino UNO a fungovalo to bezchybne, modul ESP však odmietol fungovať. Trojnásobne som skontroloval kód a bol som si istý, že príkazy opúšťajúce modul ESP sú rovnaké ako arduino, ale bolo to neprítomné. Dal som to do modulu ESP, ktorý pracuje iba na logike 3,3 V, a nie na 5 V. Keď som vložil prevodník logiky, fungoval dobre. Na iných strojoch to môže, ale nemusí byť požadované.

V ideálnom prípade by ste mali existujúci systém automatizácie domácnosti, ktorý podporuje protokol MQTT (napríklad openhab), pretože na to je projekt zameraný. Ak ho chcete ovládať iba pomocou tlačidiel na webovej stránke bez akýchkoľvek podporných systémov, budete musieť vo vloženom kóde webovej stránky vykonať určité zmeny. Nie je to príliš komplikované na dosiahnutie (možno rev2..)

Krok 3: Jura protokol

Jura protokol
Jura protokol

Údaje do/zo stroja sú len sériové @ 9600, ale Jura má v rukáve aj niekoľko trikov. Protokol to buď používa na extra ECC a/alebo na zahmlievanie komunikácie. Jednoducho povedané, každý bajt údajov (znak) je rozdelený na bity 2 a 5 zo 4 štandardných sériových bajtov, ktoré sú prerušené pauzou 8 ms. Ak sa chcete dozvedieť, ako to funguje, v odkazoch tu je veľa informácií.

Informácie o protokole extrahované z:

Arduino kód to zjednodušuje a umožňuje vám prenášať štandardné, pre človeka čitateľné príkazy, ktoré potom transponuje do protokolu Jura.

Môj kód je kombináciou kódu z: https://github.com/oliverk71/Coffeemaker-Payment-…

Príkazy uvedené na vyššie uvedených stránkach neboli pre môj počítač presné, ale metódou pokusu a omylu som dokázal prísť s nasledujúcim:

FA: 01 - Vypne sa (ale nezdá sa, že by opláchol, aj keď je to potrebné) FA: 02 - Odpovedá „ok“, ale nie je si istý, čo robí. FA: 03 - Správa o pláchaní (Vynúti správu „plákanie“na obrazovke, stlačenie rotačného oplachu) FA: 04 - Plákanie - Pláchne, keď sa zobrazí hlásenie „Stlačte rotačné tlačidlo“, inak nerobí nič FA: 05 - Silné na obrazovke (Pravdepodobne to skombinujte s prípravou kávy pre silných) FA: 06 - Silné na obrazovke (Pravdepodobne to skombinujte s prípravou kávy pre silných) FA: 07 - „Špeciálne“na obrazovke, ale v skutočnosti nerobí nič, nie ste si istí, čo to je: 08 - Steam FA: 09 - Malá káva FA: 0A - Veľká káva

Existujú aj iné príkazy, ale toto mi stačí …

Buďte opatrní pri zadávaní neznámych príkazov, napríklad zrejme AN: 0A vymaže EEPROM zariadenia …

Krok 4: Demontáž

Samotné otvorenie stroja nie je príliš jednoduché, pretože potrebujete trochu špeciálne nástroje, ale vášnivý človek si cestu nájde - potrebujete bit T15 Torx a „oválny kľúč“na 2 skrutky. Torx, ktorý som už mal, oválny nástroj, ktorý som vyrobil zo skrutky s vnútornou hlavou s priemerom 4 mm, vyvŕtal a trochu sploštil kladivom.

Tu uvedené pokyny sú pomerne dobre prezentované-https://marius.me.uk/blog/2015/03/open-jura-ena-5/

Krok 5: Zrušenie záruky

Zrušenie záruky
Zrušenie záruky
Zrušenie záruky
Zrušenie záruky
Zrušenie záruky
Zrušenie záruky
Zrušenie záruky
Zrušenie záruky

Akonáhle ste v stroji, uvidíte hlavné komponenty. Hlavný vstup napájania má pod sebou pekné miesto na pridanie 5 V nabíjačky.

Na svorkovnicu pri vstupe do zariadenia som pridal vodiče (určené pre sieťové napájanie) a tieto spájkované/tepelne zmršťované som spojil so sieťovými kolíkmi 5V nabíjačky. Môj konkrétny model nebol typ portu USB, ale ten, ktorý mal trvale pripojený kábel. Možno nemáte dostatok miesta na port USB, aby ste mohli používať skutočný USB kábel, ale ak ste otvorili nabíjačku, môžete odpojiť port USB a nahradiť ho štandardným káblom k bodom 5v a Gnd.

Ak chcete, môžete nahradiť iný 5V napájací zdroj. 500 ma by malo stačiť.

V blízkosti mlynčeka je dostatok miesta pre reléový modul. Musíme zapojiť dve relé, aby pracovali paralelne s hlavnými vypínačmi. Jednoducho prestrihám existujúce vodiče, odizolujem, pocínujem, pridám ďalší drôt a spájkujem späť k sebe (nezabudnite na heatshrink). Na to bola v kábloch dostatok vôle.

Reléový modul je držaný na mieste pomocou kvalitnej obojstrannej pásky. Keď sú káble pripojené a má iba obmedzený priestor na pohyb, modul nepohne príliš ďaleko a nemôže prísť do kontaktu s akýmikoľvek kovovými predmetmi, aj keď páska stratí priľnavosť.

Tiež som spätne otestoval diagnostický port na svojom počítači, aby som určil umiestnenie vnútorných pripojení, aby som mohol dosiahnuť úplne skrytú integráciu. Používajú sa iba vodiče tx, rx a Gnd.

Ak máte komerčnejší stroj, ktorý podporuje napätie v pohotovostnom režime, alebo nechcete, aby sa naň vzťahovala záruka, môžete sa namiesto toho pripojiť priamo k diagnostickému portu, ale je možné, že pomocou tohto zariadenia nebudete môcť zariadenie zapnúť.

Moje zariadenie používa 7 -kolíkový konektor. Zľava doprava je to:

NC Tx G Rx NC 5v NC

Zodpovedajúce kolíky na základnej doske: Červená = Gnd Oranžová = Rx Čierna = Tx

Viac informácií nájdete na vývodoch tu:

Krok 6: Zapojenie logickej strany

Zapojenie logickej strany
Zapojenie logickej strany
Zapojenie logickej strany
Zapojenie logickej strany
Zapojenie logickej strany
Zapojenie logickej strany

Pozrite sa na diagram - vyzerá to príliš komplikovane, ale v skutočnosti to tak nie je.

Menič hladiny som namontoval na zadnú stranu (znázorneného) regulátora napätia pomocou obojstrannej pásky. Potom som použil niektoré komponentné nohy na spájkovanie napájacích a uzemňovacích kolíkov na oboch stranách prevodníka úrovne k zodpovedajúcim kolíkom výkonového modulu. Celý tento modul potom funguje ako „priechod“pre všetku logiku a napájanie systému ESP-01.

Použil som dva stredné prevodníky na sériové údaje a vonkajšie dva na signály riadenia relé, ale nezáleží na tom, ktorý použijete.

V skutočnosti nie je potrebné s týmito reléovými modulmi prevádzkovať logiku 5v, pretože sú aktívne LOW, ale fungovalo to pekne, takže som to aj tak urobil.

Na pripojenie k modulu ESP som použil zásuvku 4x2. To umožňuje ľahké nahranie kódu alebo výmenu modulu.

Na obrázku nie je zobrazený 5V vstup - zapojil som môj priamo do reléového modulu (pozri druhý obrázok). Čierny drôt v dolnej ľavej časti obrázku sú sériové údaje vedené na hlavnú dosku. Použil som časť tieneného 3,5 mm predlžovacieho kábla pre slúchadlá, aby som znížil pravdepodobnosť rušenia v dátovom vedení.

Kód 12f používa namiesto sériového hardvéru SoftwareSerial - To umožňuje modulu hlásiť stav pre ladenie späť pomocou normálneho sériového čísla. Namiesto toho sa pripájajú pomocou pinov 4 a 5. Prispôsobil som rovnakú hlavičku, aby bol ESP12F plug in swap pre ESP-01, len som vymenil tieto sériové piny

Krok 7: Programovanie modulu

Programovanie modulu
Programovanie modulu

Kód bol zostavený proti Arduino 1.8.1 s doplnkom pre dosku ESP8266 a PubSubClient 2.6.0 (čo je knižnica MQTT)

Upravte kód podľa svojich požiadaviek a nahrajte ho do modulu ESP-01 a pripojte ho k stroju. Buďte opatrní s orientáciou čapov!

Konfigurácia

Možnosť 1)

Iba na základnom kóde vo formáte zip. Keď sa modul ESP prvýkrát spustí, prejde do režimu AP a nastaví IP na 192.168.4.1. Potom sa môžete pripojiť k modulu, zmeniť IP a pripojiť sa k svojmu vlastnému prístupovému bodu. V tomto rozsahu budete musieť tiež nastaviť IP adresu zariadenia, pretože v module nie je DHCP.

Predvolený AP SSID je „ESPSwitch“a heslo je „12345678“

V predvolenom nastavení zostane v režime AP 2 minúty. Toto nastavenie môžete zmeniť v „global.h“- nazýva sa „adminTimeout“a trvá milisekundy. Keď máte platnú konfiguráciu v EEPROM, odporúčam to zmeniť na niečo nízke, pretože v opačnom prípade to spôsobí zbytočné oneskorenia pri zavádzaní zariadenia.

Možnosť 2)

Toto je predvolený režim pre novší kód, ktorý podporuje obojsmerné komunikácie, možnosť 1 nie je k dispozícii. Predvolené nastavenia SSID/hesla môžete tiež zmeniť v hlavnom ino súbore (vyhľadajte „// DEFAULT CONFIG“), aby sa načítal tieto nastavenia do EEPROM pri prvom spustení a zmeňte oneskorenie režimu admin na niečo nízke v „global.h“. Vyhnete sa tak problémom s pripojením k dočasnému prístupovému bodu.

Zariadenie automaticky nastaví svoje ID MQTT (a cestu predplatného) na posledné 4 číslice sériového čísla modulov. Cesta je predvolene ha/mod //#, zmeňte podľa vlastného uváženia, ale prečítajte si komentáre v kóde a uistite sa, že príslušné pole má správnu dĺžku.

Robím to, pretože to znamená, že nemusím generovať jedinečné ID pre každý modul v mojej sieti.

ID zariadenia je viditeľné a server MQTT je možné nastaviť prostredníctvom stránky servera MQTT na internom webovom serveri

Krok 8: Výroba vecí …

Príkazy MQTT sú

ha/mod/xxxx/0 alebo 1 = Prepnúť výkon

Akýkoľvek iný reťazec bude považovaný za príkaz a bude odoslaný cez sériový port. Stav je hlásený na /ha /kávu v HEX

S OpenHAB

kávovar.položky

Číslo Coffee_Machine_Power „Power“{mqtt = "> [control: ha/mod/8002/: command:*: default]"} String Coffee_Machine_Status {mqtt = "<[control: ha/coffee: state: default]"}}

Mapa webu

Skupinová položka = „Kávovar“{Switch item = Coffee_Machine_Power label = "Power" mappings = [1 = "Toggle"] Prepnúť položku = Coffee_Machine_Cmd label = "" mappings = ["FA: 09" = "Small"] Prepnúť položku = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Large"] Prepnúť položku = Coffee_Machine_Cmd label = "" mappings = ["FA: 04" = "Rinse"] Textová položka = Coffee_Status label = "Status [%s] "}

pravidlá hlasového ovládania

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

pravidlo „Pravidlá hlasového príkazu“

keď položka VoiceCommand dostane príkaz, potom var String príkaz = VoiceCommand.state.toString.toLowerCase logInfo („Voice. Rec“, „VoiceCommand prijatý“+príkaz)

if (command.contains ("turn on the coffee machine") || command.contains ("turn off the coffee machine")) {

sendCommand (Coffee_Machine_Power, 1)} if (command.contains ("make me a small coffee")) {sendCommand (Coffee_Machine_Cmd, "FA: 09")} if (command.contains ("make me a great coffee")) { sendCommand (Coffee_Machine_Cmd, "FA: 0A")} if (command.contains ("opláchnite kávovar")) {sendCommand (Coffee_Machine_Cmd, "FA: 04")}} end

Pravidlá (na interpretáciu reakcií HEX na „skutočné“hodnoty):

pravidlo „Stav kávovaru“, keď položka Coffee_Machine_Status dostala aktualizáciu, potom 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 intinseBit = binaryString.substring (6, 7)

if (trayBit == "0") {

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

}

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

Krok 9: Upresnenie/Todo

Zjednodušte počiatočné nastavenie pripojenia k wifi - Hotovo. Opustilo myšlienku „režimu správcu“, pretože to bolo nepríjemné. Teraz do kódu zadajte SSID a heslo. Uloží sa do EEPROM, ak aktualizujete/zmeníte prostredníctvom webového rozhrania.

Novší kód tiež podporuje aktualizácie OTA, ale na to, aby fungoval alebo komentoval zodpovedajúce položky OTA, budete musieť aktualizovať EEPROM na module ESP-01

Pridajte kód na spracovanie odpovedí zo zariadenia a prečítajte si stav ako žiadny zásobník, prázdna zemina a plniaca nádrž - Hotovo. Pridal som kód na prečítanie stavu späť a publikovanie na ha/coffee. Toto sú len prvotné reakcie a stále pracujem na ich interpretácii, ale zatiaľ mi chýba zásobník a prázdny tank. Zapne zariadenie každých 9 sekúnd a zverejní odpoveď na MQTT

Odozva je v HEX, ale jednotlivé bity označujú senzory

Pridajte kód na webové stránky, aby ste ich mohli priamo ovládať pomocou príkazov HTTP GET.

Súťaž internet vecí 2017
Súťaž internet vecí 2017
Súťaž internet vecí 2017
Súťaž internet vecí 2017

Prvá cena v súťaži internet vecí 2017

Odporúča: