Inhoudsopgave:

IOT123 - ASSIMILEREN SENSOR HUB: ICOS10 AANPASSING WEBSEREVER - Ajarnpa
IOT123 - ASSIMILEREN SENSOR HUB: ICOS10 AANPASSING WEBSEREVER - Ajarnpa

Video: IOT123 - ASSIMILEREN SENSOR HUB: ICOS10 AANPASSING WEBSEREVER - Ajarnpa

Video: IOT123 - ASSIMILEREN SENSOR HUB: ICOS10 AANPASSING WEBSEREVER - Ajarnpa
Video: IOT123 - ASSIMILATE SENSOR HUB: ICOS10 IDC PANEL ASSEMBLY 2024, Juli-
Anonim
IOT123 - ASSIMILEER SENSOR HUB: ICOS10 AANPASSING WEBSEREVER
IOT123 - ASSIMILEER SENSOR HUB: ICOS10 AANPASSING WEBSEREVER
IOT123 - ASSIMILEER SENSOR HUB: ICOS10 AANPASSING WEBSEREVER
IOT123 - ASSIMILEER SENSOR HUB: ICOS10 AANPASSING WEBSEREVER
IOT123 - ASSIMILEER SENSOR HUB: ICOS10 AANPASSING WEBSEREVER
IOT123 - ASSIMILEER SENSOR HUB: ICOS10 AANPASSING WEBSEREVER

De ASSIMILATE SENSOR/ACTOR Slaves bevatten metadata die worden gebruikt voor het definiëren van visualisaties in Crouton. Deze build voegt een webserver toe aan de ESP8266 Master, serveert enkele configuratiebestanden die door de gebruiker kunnen worden gewijzigd en gebruikt die bestanden vervolgens om de visualisaties opnieuw te definiëren. Dus de namen van de dashboardkaarten en de meeste configureerbare eigenschappen kunnen worden gewijzigd. Dit was nodig b.v. de DHT11 publiceert temperatuur- en vochtigheidseigenschappen: als een site meerdere knooppunten heeft met afzonderlijke DHT11-sensoren, kunnen ze niet allemaal Temperatuur worden genoemd (Garage Temp., Yard Temp…). De beperking van de lengte van de metadata die is ingesteld door de I2C-bus (16 tekens) bestaat niet en rijkere waarden kunnen worden toegepast (tot 64 tekens).

Optionele basisverificatie kan worden geconfigureerd voor de bewerkingswebpagina, evenals een uitsluitingslijst van verificatie voor andere bronnen.

Op een bestaand dochterbord is ook een low-side schakelaar ontwikkeld die de slaves uitschakelt wanneer dat nodig is.

Als een technische opmerking, voordat met deze build werd begonnen, was de geheugenvoetafdruk 70% vanwege een globale metadata-objectgrafiek. De nieuwste AssimilateBus-bibliotheek heeft baanbrekende wijzigingen ondergaan die de globale variabele ontkoppelen in kleinere JSON-bestanden die zijn opgeslagen in SPIFFS. Dit heeft de footprint teruggebracht tot ~50%, wat veiliger is voor alle JSON-parsing/building. De AssimilateBusSlave-bibliotheek blijft tijdens deze wijzigingen hetzelfde (ASSIM_VERSION 2).

KENMERKEN EN VISIE

Momenteel zijn de slaves (sensoren en actoren) op zichzelf staand en vertrouwen ze op op conventies gebaseerde I2C-berichten om eigenschappen te lezen of op commando's te reageren. De Master haalt de metadata en eigenschappen van slaves op en stuurt deze naar een MQTT-makelaar. Het start ook een webserver en serveert JSON-bestanden die kunnen worden bewerkt om de master te configureren en de metadata/eigenschappen aan te passen die uiteindelijk door Crouton worden gebruikt. De afzonderlijke sensoren/actoren worden via Crouton uitgelezen/aangestuurd zonder dat de master enige voorkennis heeft van wat de slaves doen.

Een van de doelen van het ASSIMILATE IOT NETWORK is om Crouton aan te passen zodat mashup-editors die worden bediend vanaf de IOT NODE-webservers (zoals deze build), worden toegevoegd als webcomponenten die volledige controle geven over wat het ding doet, dwz de master is niet geprogrammeerd, de slaven hebben basisfuncties, maar het Crouton-dashboard bevat alle bedrijfsregels die nodig zijn om het ding te laten werken!

De Crouton-vork wordt gezien als een optie voor decentrale besturing/configuratie van dingen. In wezen kan elke MQTT-client/GUI-combinatie uw zaken beheren, aangezien elke functie (sensoren en actoren) wordt blootgesteld als MQTT-eindpunten.

Stap 1: Crouton

Crouton
Crouton
Crouton
Crouton

Crouton. https://crouton.mybluemix.net/ Crouton is een dashboard waarmee u uw IOT-apparaten kunt visualiseren en bedienen met minimale instellingen. In wezen is het het gemakkelijkste dashboard om in te stellen voor elke IOT-hardwareliefhebber die alleen MQTT en JSON gebruikt.

De ASSIMILATE SLAVES (sensoren en acteurs) hebben ingesloten metadata en eigenschappen die de master gebruikt om het deviceInfo json-pakket op te bouwen dat Crouton gebruikt om het dashboard te bouwen. De tussenpersoon tussen ASSIMILATE NODES en Crouton is een MQTT-makelaar die websocketsvriendelijk is: Mosquito wordt gebruikt voor de demo.

Aangezien de ASSIMILATE MASTER (deze build) eigenschappen aanvraagt, worden de responswaarden in de vereiste indeling voor Crouton-updates opgemaakt.

Stap 2: De webserver / editor

De webserver / editor
De webserver / editor
De webserver / editor
De webserver / editor

Als de Master opstart (deze build) wordt een embedded webserver gestart. Het IP-adres wordt uitgevoerd naar de seriële console; uiteindelijk zal dit worden gepubliceerd op het Crouton-dashboard.

Wanneer u naar de vermelde URL bladert, wordt de ACE EDITOR geladen:

Ace is een insluitbare code-editor geschreven in JavaScript. Het komt overeen met de functies en prestaties van native editors zoals Sublime, Vim en TextMate.

Ace is populair bij embedded webservers en biedt een goede interface voor het bewerken en opslaan van de JSON-bestanden.

Als u op een bestandsnaam aan de linkerkant klikt, wordt het bestand van SPIFFS op de ESP8266 gelezen en wordt de inhoud aan de rechterkant geladen voor bewerking. Het bestand kan worden opgeslagen vanaf de bovenste werkbalk.

Een bestand uploaden:

  1. Kies Bestand van uw lokale bestandssysteem.
  2. Voeg een mappad in (indien nodig) in het tekstvak.
  3. Klik op Uploaden.
  4. Ververs de pagina.

Stap 3: Apparaataanpassing

Apparaataanpassing
Apparaataanpassing

De configuratie van het apparaat (de ESP8266) wordt uitgevoerd via het bestand device.json.

Sommige van deze gegevens (wifi_ssid, wifi_key) moeten worden gewijzigd voordat u de gegevens uploadt naar SPIFFS (ESP8266 Sketch Data Upload).

Blader naar de root van de webserver (weergegeven in de console-uitvoer zoals

BEWERKEN

Kies in de ACE EDITOR config/device.json.

De inzendingen zijn:

  • www_auth_username: autorisatie gebruikersnaam voor webserverbestanden (leeg voor geen autorisatie).
  • www_auth_password: autorisatiewachtwoord voor webserverbestanden (indien gebruikersnaam gedefinieerd).
  • www_auth_exclude_files: door puntkomma's gescheiden lijst van bestandspaden die moeten worden uitgesloten van autorisatiecontroles (indien gebruikersnaam gedefinieerd).
  • sensor_interval: de milliseconden tussen publicaties van gegevens naar de MQTT-makelaar.
  • ntp_server_name: de naam van de te gebruiken tijdserver.
  • time_zone: de afwijking in uren voor uw lokale tijd.
  • wifi_ssid: de SSID van uw lokale toegangspunt.
  • wifi_key: de sleutel die moet worden gebruikt voor de SSID.
  • mqtt_broker: het adres van de MQTT-makelaar.
  • mqtt_username: de gebruikersnaam die moet worden gebruikt voor de MQTT-makelaar (leeg omdat er geen account nodig is).
  • mqtt_password: het te gebruiken wachtwoord van de MQTT-gebruikersnaam.
  • mqtt_port: de MQTT-brokerpoort.
  • mqtt_device_name: de naam die moet worden gebruikt voor MQTT-onderwerpen en Crouton-identificatie.
  • mqtt_device_description: de beschrijving van het apparaat dat wordt weergegeven in Crouton.
  • viz_color: de kleur om de apparaatkaarten in Crouton te identificeren (in de gevorkte versie)

Stap 4: Aanpassing van eigendom

Eigendomsaanpassing
Eigendomsaanpassing
Eigendomsaanpassing
Eigendomsaanpassing
Eigendom aanpassen
Eigendom aanpassen

Elk van de Slaves heeft een nvc struct-array gedefinieerd in het bestand definitions.h:

//--------------------------------------- GEPUBLICEERDE EIGENSCHAPPEN

nvc props[2] ={ {"Vochtigheid", "", true}, {"Temperatuur", "", false} }; //--------------------------------------- EINDE GEPUBLICEERDE EIGENSCHAPPEN

Elk van de items heeft een index waarvan de eerste 0 (nul) is.

De aanpassing van de eigenschapsnaam wordt uitgevoerd via het bestand user_props.json.

Blader naar de root van de webserver (weergegeven in de console-uitvoer zoals

BEWERKEN

Kies in de ACE EDITOR config/user_props.json (of upload er een).

De structuur is:

De eerste sleutel is het adres van de slave in het bestand definitions.h zoals geïdentificeerd door:

#define ADDRESS_SLAVE XX

  • Het volgende sleutelniveau is de index van de eigenschap.
  • De waarde van die sleutel is de eigenschapsnaam die in Crouton moet worden gebruikt in plaats van de eigenschapsnaam die is gedefinieerd in het definitiebestand.

Stap 5: Metadata aanpassen

Aanpassing van metagegevens
Aanpassing van metagegevens
Aanpassing van metagegevens
Aanpassing van metagegevens
Aanpassing van metagegevens
Aanpassing van metagegevens
Aanpassing van metagegevens
Aanpassing van metagegevens

Vanwege de hoeveelheid mogelijke aanpassingen heeft elke slave zijn eigen metadata-modificatiebestand. De bestanden moeten de indeling user_metas_.json hebben.

Het slave-adres is te vinden in het bestand definitions.h in de ATTINY85-schetsen:

#define ADDRESS_SLAVE XX

De metadata wordt als volgt in hetzelfde bestand gedefinieerd:

const static char viz1 PROGMEM = "VIZ_CARD_TYPE";

const static char viz2 PROGMEM = "2:chart-donut"; const static char viz3 PROGMEM = "1";

De eerste regel is de naam van het metadata-item.

De tweede regel is de waarde. Het heeft over het algemeen een achtervoegsel voor de eigenschapsindex.

De derde regel is de vervolgvlag. 1 - doorgaan, 0 - einde van metadata (VCC_MV).

Blader naar de root van de webserver (weergegeven in de console-uitvoer zoals

BEWERKEN

Kies in de ACE EDITOR config/user_metas_SLAVE_ADDRESS.json (of upload er een). De structuur is:

  • Een array van naam/waarde-paren.
  • Naam is de naam van het metadata-item dat moet worden gewijzigd.
  • Waarde is de verandering. Het indexachtervoegsel wordt gecontroleerd voor de vervanging.

Stap 6: materialen en gereedschappen

Materialen en gereedschappen
Materialen en gereedschappen
Materialen en gereedschappen
Materialen en gereedschappen
Materialen en gereedschappen
Materialen en gereedschappen

ICOS10 (IDC) Shell stuklijst

  1. D1M BLOCK-penmal (1)
  2. D1M BLOCK basis en behuizing (1)
  3. Wemos D1 Mini (1)
  4. Wemos D1 Mini Protoboard-schild (1)
  5. 40P vrouwelijke headers (8P, 8P, 9P, 9P)
  6. Mannelijke kop 90º (3P, 3P, 3P, 2P, 1P, 2P)
  7. 1" Dubbelzijdig protoboard (2)
  8. 2N7000 NFET (1)
  9. 6-pins gehulde IDC mannelijke kop (1)
  10. Aansluitdraad (~10)
  11. 0,5 mm vertinde draad (~ 4)
  12. 4G x 15mm Zelftappende schroeven met bolkop (2)
  13. 4G x 6 mm zelftappende verzonken schroeven (~20)
  14. Soldeer en ijzer (1)

Stap 7: MCU-voorbereiding

Image
Image
MCU-voorbereiding
MCU-voorbereiding

In deze build gebruiken we de Wemos D1 Mini. Als u eerder een D1M WIFI BLOCK heeft gebouwd, kunt u die gebruiken voor de modulaire hardwarecomponent. Als dat niet het geval is, volgt u minimaal het volgende gedeelte.

DE HEADER PINS OP DE MCU SOLDEREN (met behulp van de PIN JIG)Als u een PIN JIG niet kunt afdrukken, volgt u gewoon de instructies en improviseert u: de hoogte (offset) van de PIN JIG is 6,5 mm.

  1. Print/verkrijg een PIN JIG van deze pagina.
  2. Voer de header-pinnen door de onderkant van het bord (TX rechts-links) en in de soldeermal.
  3. Druk de pinnen naar beneden op een harde, vlakke ondergrond.
  4. Druk het bord stevig op de mal.
  5. Soldeer de 4 hoekpinnen.
  6. Verwarm het bord/de pinnen opnieuw en positioneer ze indien nodig (het bord of de pinnen zijn niet uitgelijnd of loodrecht).
  7. Soldeer de rest van de pinnen.

DE FIRMWARE UPLOADEN

De coderepository is hier te vinden (momentopname).

Een ZIP van de bibliotheek is hier te vinden (momentopname).

Instructies voor "Een ZIP-bibliotheek importeren" hier.

Zodra de bibliotheek is geïnstalleerd, kunt u het voorbeeld "mqtt_crouton_esp8266_customization_webserver" openen.

Instructies voor het instellen van Arduino voor de Wemos D1 Mini hier.

Afhankelijkheden: ArduinoJson, TimeLib, PubSubClient, NeoTimer (zie bijlagen als wijzigingen in repositories worden verbroken).

UPLOADEN NAAR SPIFFS

Nadat de code in de Arduino IDE is geladen, opent u device.json in de map data/config:

  1. Wijzig de waarde van wifi_ssid met uw WiFi SSID.
  2. Wijzig de waarde van wifi_key met uw WiFi-sleutel.
  3. Wijzig de waarde van mqtt_device_name met de apparaatidentificatie van uw voorkeur (verbinden is niet nodig).
  4. Wijzig de waarde van mqtt_device_description met de apparaatbeschrijving van uw voorkeur (in Crouton).
  5. Sla device.json op.
  6. Upload de gegevensbestanden naar SPIFFS.

Stap 8: MCU Behuizing Voorbereiding

Image
Image
Voorbereiding MCU-behuizing
Voorbereiding MCU-behuizing
Voorbereiding MCU-behuizing
Voorbereiding MCU-behuizing

De MCU-behuizing toont headers voor de D1 Mini om in te pluggen en headers voor dochterborden die communiceren met het Socket (sensoren en actoren) circuit.

HUISVESTING HEADERS Dit is gebaseerd op een D1 Mini Protoboard, en breekt deze pinnen uit:

  1. Pinnen voor de D1M WIFI BLOCK/D1 Mini om verbinding mee te maken.
  2. Directe Breakouts van de 2 rijen contacten van de D1M WIFI BLOCK/D1 Mini. Deze zijn alleen beschikbaar voor het gemak tijdens het maken van prototypes. De verwachting is dat de dochterborden alle toegang tot deze headers zullen blokkeren.
  3. 4 Breakouts van de specifieke pinnen die door de dochterborden worden gebruikt.

Om de D1M-contacten toe te voegen aan de HOUSING HEADER:

  1. Bekijk de video SOLDEREN MET DE SOCKET JIG.
  2. Voer de header-pinnen door de onderkant van het bord (TX linksboven aan de bovenzijde).
  3. Voer de mal over het plastic maaibord en breng beide oppervlakken waterpas.
  4. Draai de mal en de montage om en druk de kop stevig op een harde, vlakke ondergrond.
  5. Druk het bord stevig op de mal.
  6. Soldeer de 4 hoekpinnen met minimaal soldeer (alleen tijdelijke uitlijning van de pinnen).
  7. Verwarm het bord/de pinnen opnieuw en positioneer ze indien nodig (het bord of de pinnen zijn niet uitgelijnd of loodrecht).
  8. Soldeer de rest van de pinnen.
  9. Verwijder de mal.
  10. Knip pinnen af boven soldeer.

Om de dochterbord-breakouts toe te voegen:

  1. Knip 4 9P Female headers af.
  2. Plaats aan de bovenkant de 9P-headers zoals afgebeeld en soldeer aan de onderkant af.

Om de directe breakouts toe te voegen:

  1. Knip 2 8P Female headers af.
  2. Plaats aan de bovenkant de 8P-headers zoals afgebeeld en soldeer aan de onderkant af.

Om de headers aan te sluiten, aan de onderkant met de TX-pin naar boven gericht:

  1. Traceer en soldeer vanaf de RST-pin over 4 pinnen.
  2. Traceer en soldeer van de A0-pin over 4 pinnen.
  3. Traceer en soldeer vanaf de D1-pin over 4 pinnen.
  4. Traceer en soldeer van de D2-pin over 4 pinnen.
  5. Traceer en soldeer vanaf de D0-pin 2 rijen en over 4 pinnen.
  6. Traceer en soldeer van de D7-pin over 4 pinnen.
  7. Traceer en soldeer vanaf de GND-pin over 4 pinnen.
  8. Traceer en soldeer van de 5V-pin over 4 pinnen.
  9. Traceer en soldeer vanaf de 3V3-pin 45° naar beneden over 4 pinnen.

DE ARMATUUR MONTEREN

De HOUSING HEADERS is bevestigd aan de MCU HOUSING en deze is bevestigd aan de BASE PLATE.

  1. Plaats de D1M CONTACTEN in de openingen in de MCU HOUSING met de lange zijde van de BEHUIZING-KOPPELINGEN naar het gat gericht en druk ze vlak naar beneden.
  2. Plaats de MCU op de MCU CONTACTEN tijdens het aanbrengen om de juiste uitlijning te garanderen.
  3. Plaats het HEADER FRAME over de bovenkant van de monteerbare armaturen en bevestig met 2 schroeven van 4G x 16 mm.
  4. Plaats de gemonteerde armaturen met het gat naar de korte kant gericht en bevestig met de 4G x 6 mm schroeven.

Stap 9: De slaven bouwen Low-side Switch/RESET Dochterbord

De slaven bouwen Low-side schakelaar/RESET Dochterbord
De slaven bouwen Low-side schakelaar/RESET Dochterbord
De slaven bouwen Low-side schakelaar/RESET Dochterbord
De slaven bouwen Low-side schakelaar/RESET Dochterbord
De slaven bouwen Low-side schakelaar/RESET Dochterbord
De slaven bouwen Low-side schakelaar/RESET Dochterbord

Dit is een verbetering van het REST-dochterbord dat de laatste build is ontwikkeld. Dit voegt een low-side schakelaar toe die de slaves verbindt met GROUND. Als de master wordt gereset, zullen de slaves dat ook doen en begint de initialisatie die de metadata verspreidt opnieuw.

SAMENKOMST

  1. Plaats aan de binnenkant de 9P 90° mannelijke headers (1), 1P 90° mannelijke header (2), de 2N7000 (3), en soldeer aan de buitenkant af.
  2. Trek aan de binnenkant een gele draad van GEEL1 naar GEEL2 en soldeer.
  3. Trek aan de binnenkant een blanke draad van SILVER1 naar SILVER2 en soldeer.
  4. Trek aan de binnenkant een blanke draad van SILVER3 naar SILVER4 en soldeer.

Stap 10: Montage van de belangrijkste componenten

De belangrijkste componenten monteren
De belangrijkste componenten monteren
De belangrijkste componenten monteren
De belangrijkste componenten monteren
De belangrijkste componenten monteren
De belangrijkste componenten monteren
De belangrijkste componenten monteren
De belangrijkste componenten monteren
  1. Zorg ervoor dat de SHELL is gebouwd en het circuit is getest (kabel en stopcontacten).
  2. Verwissel de 2P mannelijke header op het 3V3 I2C DOCHTER-BOARD met een 2P 90º 1P mannelijke header.
  3. Plaats het 3V3 I2C DOCHTERBORD, met de 3V3-pin op het rafelige uiteinde van de headers (zie foto).
  4. Plaats de LOW-SIDE SWITCH/RESET DOCHTER-BOARD, met de draad naar binnen (zie foto).
  5. Traceer een Dupont-kabel tussen de 90º 1P mannelijke kop op het RESET DOCHTERBORD naar het 3V3 I2C DOCHTERBORD.
  6. Steek de IDC-aansluiting van de SHELL-KABEL in de IDC-header op het 3V3 I2C-DOCHTERBORD.
  7. Steek voorzichtig de DOCHTERPLANKEN/HUISING tussen de kabels in de SHELL en lijn de basisgaten uit.
  8. Bevestig de BASISMONTAGE aan de SHELL met de 4G x 6 mm schroeven.
  9. Bevestig alle ASSIMILAAT-SENSOREN die u hebt gemaakt.

Stap 11: Volgende stappen

Image
Image
Volgende stappen
Volgende stappen
Volgende stappen
Volgende stappen
  1. Ga met uw browser naar
  2. Zorg ervoor dat de makelaar test.mosquitto.org is.
  3. Klik op Verbinden.
  4. Voer de invoer van de apparaatnaam in als mqtt_device_name in het bestand /config/device.json.
  5. Klik op Apparaat toevoegen.
  6. Klik op Automatisch verbinden.
  7. Zet uw ICOS10 (5V MicroUSB) aan.
  8. Verifieer via het Crouton-dashboard.

Aanbevolen: