Smarthome-controlecentrum met ArduiTouch deel 2 - het gegevensprotocol

Dit artikel is bedoeld om het principe van berichttransmissie tussen het bedieningspaneel en de externe apparaten (eenvoudig hieronder apparaten genoemd) uit te leggen. Aangezien de apparaten eenvoudig moeten zijn en geen handmatige instellingen nodig moeten hebben, is het volgende principe ontworpen.

  • Een apparaat gebruikt altijd zijn MAC-adres om
  • Een nieuw apparaat moet actief inloggen op het hoofdkantoor
  • Om een apparaat gegevens met het centrale controlecentrum te kunnen uitwisselen, moet het handmatig op het hoofdkantoor worden geregistreerd.

Een bericht bouwen:

struct ATMSGPACKET
uint8_t id[6];    id van het externe apparaat typische mac-adres
uint8_t pakketten;  aantal pakketten in het bericht
uint16_t apparaatbits; bits om apparaatmogelijkheden te beheren
};

De koptekst van een bericht heeft 9 bytes. De eerste zes bytes bevatten de id gevolgd door een byte met het aantal kanalen (maximaal acht). Dit wordt gevolgd door een 16-bits Niet-ondertekend geheel getal. Elk van deze 16 bits heeft een andere betekenis en geeft de mogelijkheden van de zender of de specifieke kenmerken van de datapakketten aan. Bit 0 bepaalt of het apparaat passief is, d.w.z. moet worden opgevraagd door het hoofdkantoor. Bit 1 geeft aan of het transmissie-interval van een actief apparaat kan worden gewijzigd vanuit het bedieningspaneel. Bit 2 geeft aan dat er een checksum wordt gevormd over het hele bericht dat aan het einde van het bericht is toegevoegd. Bit 3 geeft aan dat datapakketten versleuteld zijn (voorbereiding op latere versies). Andere bits zijn momenteel niet gedefinieerd. De header wordt gevolgd door datapakketten voor elk kanaal. 

struct ATDATAPACKET
uint8_t kanaal; kanaal als identificatie
uint8_t type;    type van het pakket
uint8_t eenheid;    eenheid van het pakket
uint8_t waarde[4];/vier gegevensbytes om een lang geheel getal of een vlotter vast te houden
};

Een gegevenspakket begint met een byte voor het kanla-nummer, gevolgd door één byte met het type dat zowel de transportrichting als de gegevenstype-informatie bevat. 0= Geheel getal bericht van het apparaat naar het controlecentrum, 1= zwevenbericht van het apparaat naar het controlecentrum, 2= integer bericht van het controlecentrum naar het apparaat, 3= zwevenbericht van het controlecentrum naar het apparaat, 4 Booleaanse bericht van het apparaat naar het controlecentrum en 5 Booleaanse bericht van het controlecentrum naar het apparaat. Vervolgens volgt een byte voor de bijbehorende eenheid. Sommige eenheden zijn al gedefinieerd, andere zullen volgen. Ten slotte volgen vier bytes om de waarde vast te leggen. Deze moeten worden geïnterpreteerd als zweven of 32-bits geheel getal, afhankelijk van het type. Alleen byte 0 wordt gebruikt voor booleaanse berichten.

Procedure voor de gegevensuitwisseling:

1. Actief apparaat

Actieve apparaten worden meestal gebruikt voor sensoren. U stuurt gegevens met vaste of variabele intervallen naar het hoofdkantoor. Of bijvoorbeeld een belknop of radioschakelaar wanneer iemand op de knop drukt.

Als het apparaat nog niet op de hoogte is van een bedieningspaneel, zoekt het naar een toegangspunt met de SSID "ATSmartHome" in de WLan. Als dit is gevonden, blijft het bekend bij het apparaat zolang de voeding niet is onderbroken. Berichten met de id van het apparaat worden naar dit AccessPoint verzonden.

Wanneer het controlecentrum (access point) een dergelijk bericht ontvangt, wordt eerst gecontroleerd of een apparaat met de ontvangen id al is geregistreerd. Zo niet, dan worden de gegevens genegeerd en weergegeven op het hoofdkantoor dat er een nieuw apparaat is gevonden. Dit apparaat moet dan worden geregistreerd op het hoofdkantoor om gegevens te ontvangen.

Als het apparaat is geregistreerd, als de checksum wordt gecontroleerd. Als dit ok is, worden de gegevens opgeslagen. Het actieve apparaat blijft na verzending nog even klaar. Gedurende deze periode kunnen bestaande gegevens naar het apparaat worden verzonden of als het apparaat dit kan doen, zoals een nieuwe intervaltijd, die vanuit het bedieningspaneel naar het apparaat wordt verzonden.

2. Passief apparaat

Passieve apparaten zijn altijd klaar voor ontvangst. Maar het passieve apparaat stuurt ook berichten met tussenpozen naar het hoofdkantoor. Dit dient enerzijds voor registratie en anderzijds voor het centrale bureau om te communiceren op welke kanalen het apparaat gegevens kan ontvangen.

Als het apparaat nog niet op de hoogte is van een bedieningspaneel, zoekt het naar een toegangspunt met de SSID "ATSmartHome" in de WLan. Zodra dit is gevonden, begint het apparaat, net als de actieve, regelmatig gegevens naar het hoofdkantoor te verzenden.

Als een bericht op het hoofdkantoor wordt ontvangen vanaf een niet-geregistreerd passief apparaat, wordt de id van dat apparaat weergegeven als een nieuw apparaat en kan deze handmatig worden geregistreerd. Met de informatie uit het ontvangen gegevenspakket kan het bedieningspaneel bepalen op welke kanalen het apparaat klaar is om te ontvangen. Een passief apparaat kan ook tegelijkertijd metingen doorgeven aan het bedieningspaneel op andere kanalen. Als het bedieningspaneel een passief apparaat heeft geregistreerd en een schakelaar op een van de kanalen van dat apparaat wordt ingedrukt, stuurt het de wijziging naar het apparaat op het juiste kanaal. Als het kanaal de volgende keer dat het gegevens van het passieve apparaat ontvangt, niet de gewenste waarde heeft, is de wijziging een kwalijke last. Dit voorkomt dat een verloren bericht geen schakelbewerking uitvoert op het apparaat.

Aandacht! Als iemand de ATMessageBuffer-bibliotheek al heeft geladen, moet deze versie de nieuwste versie krijgen en de schetsen die deze bibliotheek gebruiken opnieuw compileren. Dit is nodig omdat ik de datastructuur ATMESSAGEPKT heb uitgebreid met de variabele devicebits.

Ik hoop de nodige informatie te hebben verstrekt om nieuwe apparaten te ontwikkelen die compatibel zijn met dit bedieningspaneel. Een eerste passief apparaat dat een relais kan schakelen zal binnenkort volgen.

 

 

 

 

Projekte für fortgeschritteneSmart home

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Aanbevolen blog berichten

  1. Installeer ESP32 nu van de raad van bestuur
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - ESP Programmeren via Wi-Fi