Inhoudsopgave:

Virtuele deurknop met Mongoose OS en XinaBox - Ajarnpa
Virtuele deurknop met Mongoose OS en XinaBox - Ajarnpa

Video: Virtuele deurknop met Mongoose OS en XinaBox - Ajarnpa

Video: Virtuele deurknop met Mongoose OS en XinaBox - Ajarnpa
Video: Ikea ПАКС гардеробная дверь - сборка и регулировка 2024, November
Anonim
Virtuele deurknop met Mongoose OS en XinaBox
Virtuele deurknop met Mongoose OS en XinaBox

Met Mongoose en wat xChips hebben we een virtuele deurknop gemaakt. In plaats van een fysieke knop om personeel in te zoemen, kunnen ze het nu zelf doen.

Stap 1: Dingen die in dit project worden gebruikt

Hardware onderdelen

  • XinaBox CW02 x 1 Je zou in plaats daarvan de CW01 kunnen gebruiken
  • XinaBox IP01 x 1
  • XinaBox PU01 x 1 U kunt de IP01 gewoon gebruiken voor stroom, als u niet van plan bent meer modules te programmeren.
  • XinaBox OC03 x 1
  • XinaBox XC10 x 1 De "lijm" die het allemaal laat werken!

Software-apps en online services

Mongoose OS Echt een geweldige en gemakkelijke IoT-ontwikkeltool … en gratis

Stap 2: Verhaal

Bij onze receptie moest ons personeel worden ingezoemd, dus besloten we om ons eigen medicijn te nemen en een virtuele knop te maken. Met deze code kun je een RPC (Remote Procedure Call) verzenden, die eruitziet als een normale HTTP-oproep vanuit elke browser. We gebruikten Mongoose, omdat het heel gemakkelijk en snel is om mee te werken en het is een ingebouwde OTA (Over The Air)-update van de code, wat betekent dat we onze technologie konden installeren en toch na verloop van tijd de firmware konden upgraden, zonder deze te demonteren voor herprogrammering.

Stap 3: Voorbereiding

  • Installeer Mongoose-OS: rechttoe rechtaan, volg gewoon deze zeer eenvoudige stappen voor uw besturingssysteem hier:
  • Klik de IP01 en de CW02 aan elkaar met behulp van een XC10 connector. Zie afbeelding hieronder:
Afbeelding
Afbeelding
  • Steek de IP01 in uw USB-poort
  • Zorg ervoor dat de IP01-schakelaars in positie B en DCE staan.
  • Flash de Mongoose-OS naar CW02 vanaf je opdrachtregel. Zoals dit:

CD

export MOS_PORT= bin/mos flash esp32

Je kunt ook gewoon naar de console gaan en het meeste vanaf daar doen, maar hier doen we het vanaf de opdrachtregel, dus het werk is snel gedaan. Om naar de console te gaan:

CD

bin/mos

Stap 4: Configuratie

Hoewel deze stappen in één lange verklaring kunnen worden gedaan, hebben we besloten ze op te splitsen, en aangezien je ze toch zou kopiëren en plakken, laten we het gemakkelijk maken:

Stel de I2C-pinnen in op de xChips-standaard:

bin/mos configuratieset i2c.scl_gpio=14 i2c.sda_gpio=2

Verbind je CW02 met je wifi:

bin/mos wifi

Ontkoppel wifi in AP-modus en stel een domeinnaam in, zodat je op hostnaam verbinding kunt maken met de CW01 in plaats van het juiste IP-adres te zoeken. Dit werkt alleen als:

  • Je ontkoppelt wifi in AP-modus zoals we hieronder doen.
  • Gebruik een Mac of installeer Bonjour op uw Windows-computer.

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

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

En tot slot moet je de CW02 opnieuw opstarten om de configuratie te laten werken

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

Heel snel hierna zou je xinabox_switch.local moeten kunnen pingen

Stap 5: Installeren

Koppel de IP01 los van uw computer en monteer een circuit volgens de bovenste afbeelding.

Sluit de PU01 (of als je besloten hebt om bij de IP01 te blijven) aan op een USB-stroombron. Verbind de draden parallel van je bestaande schakelaar (laat dat, voor het geval dat) met de OC03 (polariteit maakt niet uit). Zie Fritzing-tekening.

Eenmaal ingeschakeld en om te zien dat u daadwerkelijk met uw xCW02 praat, hoe zit het met het scannen van de BUS, ook wel de I2C-bus genoemd:

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

Als het allemaal werkt en je xOC03 correct is geïnstalleerd, zou je een nummer '56' moeten zien worden geretourneerd. Dat is het I2C-adres van de OC03 in decimaal (in hex is het 0x38).

Stap 6: Programmeren

  • Open nu de Mongoose in console-modus, zie hierboven. Het zou moeten openen met een venster waarin het om een poortnummer vraagt, voer in: ws://xinabox_switch.local/rpc
  • Het communiceert met de CW02 en realiseert zich dat het apparaat al is geflitst en is verbonden met wifi, dus het geeft slechts 3 vinkjes. Sluit het venster en vernieuw de bestandslijst
  • Kopieer en plak de onderstaande code in init.js en klik op opslaan+opnieuw opstarten
  • Je circuit is nu geprogrammeerd.

Stap 7: Testen

U heeft nu een andere RPC-oproep geïmplementeerd, dus vanaf uw terminal kunt u het volgende invoeren:

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

… en je zoemer moet 2 sec. Je zou het ook gewoon vanuit - bijna - elke browser kunnen doen:

xinabox_switch.local/rpc/Switch

… met hetzelfde effect.

Stap 8: Volgende stap

U kunt elke tool gebruiken die een URL kan activeren. Ik doe het vanuit een Apple-app genaamd Workflow, waarmee ik het vanaf mijn telefoon kan doen of als een complicatie vanaf mijn Apple Watch, maar er zijn veel andere opties. Hier is mijn Workflow-script, maar met een hardgecodeerd IP-adres: Veel plezier!

Afbeelding
Afbeelding

Apple App: Workflow - hier met hardgecodeerd IP-adres

Stap 9: Schema's

Zoemerschakeling Installeer de OC03 parallel aan de bestaande drukknop.

Download het hier.

OC03 Circuit Installeer de OC03 parallel aan de bestaande drukknop.

Download het hier.

Afbeelding
Afbeelding

Stap 10: Coderen

init.js JavaScript Uw belangrijkste en enige code voor dit project.

laden('api_config.js');

laden('api_gpio.js'); laden('api_i2c.js'); laden('api_net.js'); laden('api_sys.js'); laden('api_timer.js'); laden ("api_rpc.js"); laat led = Cfg.get('pins.led'); laat adr = 0x38; laat bus = I2C.get(); I2C.writeRegB(bus, adr, 3, 0); I2C.writeRegB(bus, adr, 1, 0); /* zet voor de zekerheid uit */ let delay = 2000; GPIO.set_mode (led, GPIO. MODE_OUTPUT); RPC.addHandler('Switch', function(args) {GPIO.toggle(led); I2C.writeRegB(bus, adr, 3, 0); /* in het geval dat de OC03 opnieuw wordt aangesloten */ I2C.writeRegB(bus, adr, 1, 1); Timer.set(vertraging, false, function() {GPIO.toggle(led); I2C.writeRegB(bus, adr, 1, 0); }, null); return true; });

Aanbevolen: