Virtuell dörrknapp med Mongoose OS och XinaBox: 10 steg
Virtuell dörrknapp med Mongoose OS och XinaBox: 10 steg
Anonim
Virtuell dörrknapp med Mongoose OS och XinaBox
Virtuell dörrknapp med Mongoose OS och XinaBox

Med Mongoose och några xChips gjorde vi en virtuell dörrknapp. Istället för en fysisk knapp för att surra personal i kan de nu göra det själva.

Steg 1: Saker som används i detta projekt

Hårdvarukomponenter

  • XinaBox CW02 x 1 Du kan använda CW01 istället
  • XinaBox IP01 x 1
  • XinaBox PU01 x 1 Du kan bara använda IP01 för ström, om du inte tänker programmera fler moduler.
  • XinaBox OC03 x 1
  • XinaBox XC10 x 1 "Limet" som får allt att fungera!

Programvaruappar och onlinetjänster

Mongoose OS Verkligen fantastiskt och enkelt IoT -utvecklingsverktyg … och gratis

Steg 2: Berättelse

I vår mottagning behövde vår personal surras in, så vi bestämde oss för att ta vår egen medicin och skapa en virtuell knapp. Denna kod låter dig skicka ett RPC (Remote Procedure Call), som ser ut som ett vanligt HTTP -samtal från vilken webbläsare som helst. Vi använde Mongoose, eftersom det är väldigt enkelt och snabbt att arbeta med och det är inbyggd OTA (Over The Air) -uppdatering av kod, innebär att vi kan installera vår teknik och fortfarande över tid uppgradera firmware, utan att demontera den för omprogrammering.

Steg 3: Förberedelse

  • Installera Mongoose-OS: Rakt fram, följ bara dessa mycket enkla steg för ditt operativsystem här:
  • Klicka på IP01 och CW02 tillsammans med en XC10 -kontakt. Se bilden nedan:
Bild
Bild
  • Sätt i IP01 i din USB -port
  • Se till att IP01 -omkopplarna är i läge B och DCE.
  • Flasha Mongoose-OS till CW02 från din kommandorad. Så här:

CD

exportera MOS_PORT = bin/mos flash esp32

Du kan också bara gå in i konsolen och göra det mesta därifrån, men här gör vi det från kommandoraden, så arbetet är snabbt gjort. För att komma in i konsolen:

CD

bin/mos

Steg 4: Konfiguration

Även om dessa steg kunde utföras i ett långt uttalande, bestämde vi oss för att dela upp dem, och eftersom du ändå skulle kopiera och klistra in dem, gör det enkelt:

Ställ in I2C -stiften på xChips -standarden:

bin/mos config-set i2c.scl_gpio = 14 i2c.sda_gpio = 2

Anslut din CW02 till din WiFi:

bin/mos wifi

Koppla bort WiFi i AP -läge och konfigurera ett domännamn, så att du kan ansluta till CW01 med värdnamn istället för att hitta rätt IP -adress. Detta fungerar bara om:

  • Du kopplar bort WiFi i AP -läge som vi gör nedan.
  • Använd antingen en Mac eller installera Bonjour på din Windows -maskin.

bin/mos call Config. Set '{"config": {"wifi": {"ap": {"enable": false}}}}'

bin/mos call Config. Set '{"config": {"dns_sd": {"enable": true}}}' bin/mos call Config. Set '{"config": {"dns_sd": {"host- name ":" xinabox_switch "}}}

Och slutligen måste du starta om CW02 för att konfigurationen ska fungera

bin/mos call Config. Save '{"reboot": true}'

Mycket snabbt efter detta borde du kunna pinga xinabox_switch.local

Steg 5: Installera

Koppla ur IP01 från datorn och montera en krets enligt toppbilden.

Anslut PU01 (eller om du bestämde dig för att hålla dig till IP01) i en USB -strömkälla. Anslut kablar parallellt med din befintliga switch (lämna det, för säkerhets skull) till OC03 (polariteten spelar ingen roll). Se Fritzing -ritning.

När du väl startat och för att se att du faktiskt pratar med din xCW02, vad sägs om att skanna BUS, aka I2C -bussen:

bin/mos --port ws: //xinabox_switch.local/rpc call I2C. Scan

Om allt fungerar och din xOC03 är korrekt installerad bör du se ett nummer '56' returneras. Det är I2C -adressen för OC03 i decimal (i hex är det 0x38).

Steg 6: Programmering

  • Öppna nu Mongoose i konsolläge, se ovan. Det ska öppnas med ett fönster där det ber om ett portnummer, ange: ws: //xinabox_switch.local/rpc
  • Den kommer att kommunicera med CW02 och inse att enheten redan blinkar och är ansluten till WiFi, så den ger bara 3 bockar. Stäng fönstret och uppdatera fillistan
  • Kopiera och klistra in koden nedan i init.js och klicka på spara+starta om
  • Din krets är nu programmerad.

Steg 7: Testa

Du har nu implementerat ett annat RPC -samtal så från din terminal kan du ange:

bin/mos --port ws: //xinabox_switch.local/rpc samtalsväxel

… och din summer ska gå i 2 sekunder. Du kan också bara göra det från - nästan - vilken webbläsare som helst:

xinabox_switch.local/rpc/Switch

… med samma effekt.

Steg 8: Nästa steg

Du kan använda vilket verktyg som helst som kan avfyra en URL. Jag gör det från en Apple -app som heter Workflow, som gör att jag kan göra det från min telefon eller som en komplikation från min Apple Watch, men det finns många andra alternativ där ute. Här är mitt Workflow -skript, men med hårdkodad IP -adress: Njut!

Bild
Bild

Apple App: Workflow - här med hårdkodad IP -adress

Steg 9: Scheman

Summerkrets Installera OC03 parallellt med den befintliga tryckknappen.

Ladda ner den här.

OC03 -krets Installera OC03 parallellt med den befintliga tryckknappen.

Ladda ner den här.

Bild
Bild

Steg 10: Kod

init.js JavaScript Din huvudsakliga och enda kod för detta projekt.

load ('api_config.js');

load ('api_gpio.js'); load ('api_i2c.js'); load ('api_net.js'); load ('api_sys.js'); load ('api_timer.js'); load ("api_rpc.js"); låt led = Cfg.get ('pins.led'); låt adr = 0x38; låt buss = I2C.get (); I2C.writeRegB (buss, adr, 3, 0); I2C.writeRegB (buss, adr, 1, 0); / * stäng av bara för att vara säker */ låt fördröjning = 2000; GPIO.set_mode (led, GPIO. MODE_OUTPUT); RPC.addHandler ('Switch', funktion (args) {GPIO.toggle (led); I2C.writeRegB (buss, adr, 3, 0); / * om OC03 återansluts * / I2C.writeRegB (buss, adr, 1, 1); Timer.set (fördröjning, falsk, funktion () {GPIO.toggle (led); I2C.writeRegB (buss, adr, 1, 0);}, null); return true;});