Zoeken
MENU
  • Tik op Home-apps
  • Uitdrukkingen
  • Systeemarchitectuur per projecttype
  • Gebruikers en machtigingen
  • Configuratie van Packet parser

    In InstellingenHardware selecteer Voeg een nieuwe interface toe en kies Packet parser.

    Er zijn twee mogelijkheden om apparaten toe te voegen. De eerste is om handmatig modules toe te voegen en vervolgens apparaten. Ten tweede is het toevoegen van een hele set vanuit de sjabloon. Volg hoofdstuk [ Configuratie van Packet parser met behulp van vooraf gedefinieerde sjablonen ] (https://taphome.com/support/454000658) om apparaten uit een sjabloon toe te voegen.

    Module toevoegen

    Module vertegenwoordigt het fysieke apparaat met IP-adres of hostnaam, toegangsdefinitie en andere algemene parameters. Na het toevoegen en configureren van een module is het mogelijk om apparaten toe te voegen, die op een fysiek apparaat zijn geïmplementeerd. Klik op MODULE TOEVOEGEN en stel eerst de hostnaam of het IP-adres in:

    Klik op OK en voer het rootpad in. Rootpad is een algemeen pad dat wordt gebruikt door alle apparaten in de module. Het eenvoudigste rootpad is één schuine streep: '/'

    Klik op OK om naar de instellingen van de moduleservice te gaan.

    Module service-instellingen

    Moduleservice-instellingen zijn onderverdeeld in een groep eigenschappen.

    Apparaatvariabelen

    Lijst met ondersteunde variabelen voor elk apparaat wordt weergegeven in de groep Apparaatvariabelen. De korte naam van variabelen die aan de rechterkant wordt weergegeven, wordt gebruikt bij het parseren van apparaatwaardedefinitie, uitvoeropmaakdefinities of bij berekening.

    Authenticatie

    Als er authenticatie vereist is, vul dan de gebruiker en het wachtwoord in en selecteer authenticatietype. Ondersteund zijn nu basis- en digest-authenticatietypes.

    Netwerkinstellingen

    Als u tijdens het toevoegen van de module het juiste IP-adres of de hostnaam en het rootpad invult, zijn deze parameters nu correct ingesteld. Sommige http api vereisen een andere dan de standaard 80-poort. Wijzig in dit geval Port in deze instellingen. In het geval dat na elke opdracht de verbinding moet worden gesloten, moeten de parameters 'Blijf verbonden' in de uit-stand staan. Als het mogelijk is om de verbinding tussen de commando's levend te houden, zet deze parameter dan aan. Kies verbindingstype tussen http en https (beveiligd).

    Definities voor lezen

    Module kan direct leesparameters definiëren om apparaatwaarden te vullen.

    'Interne pollinterval' wordt gebruikt om te definiëren hoe vaak de apparaatwaarden moeten worden opgevraagd. Als u een apparaat in een lokaal netwerk gebruikt, wordt aangeraden 2500 ms te gebruiken. Kortste interval is 500 ms. Als er een apparaat van internet wordt gebruikt - bijvoorbeeld meteorologische informatie zoals de luchttemperatuur voor een bepaalde stad - wordt aangeraden om een lang poll-interval (ten minste minuten of uur) te gebruiken om niet te worden uitgeschakeld door de paginabeheerder vanwege het spambeleid.

    Http-verzoek bestaat uit een URL-adres, speciale kopteksten en in het geval het een POST-verzoek is, ook van de aanvraag. URL-adres is samengesteld uit verbindingstype (http / https) hostnaam of IP-adres, poort, rootpad en relatief pad - in dit geval gedefinieerd in Read path property. Voorbeeld voor http-verzoek als rootpad alleen / is, poort 1400 is en relatief pad read_switch is:

    http://192.168.0.1:1400/read_switch

    Als 'Read http method' niet is gedefinieerd, wordt deze gebruikt GET-methode.

    Het is mogelijk om direct in de module parseerwaarden te definiëren van ontvangen antwoord op apparaatvariabelen of vooraf gedefinieerde virtuele variabelen.

    Het gebruik van variabelen in de definities van antwoordparsen vereist dat de variabelenaam wordt ingesloten met tekens $. Variabelenaam Vl1 moet bijvoorbeeld worden gebruikt als $ Vl1 $.

    Als we bijvoorbeeld een antwoord in JSON-formaat hebben zoals dit:

    {

    "name":null,

    "ison":false,

    }

    en we willen het antwoord parseren. De antwoordwaarde is boolean true / false na de naam "ison". We moeten virtuele variabelen van het booleaanse type definiëren (in dit geval is het Vl2 - de virtuele variabelen worden later uitgelegd) en eerst het antwoord op deze variabele ontvangen door de parameter 'Answer parse' als volgt te definiëren:

    Tekst "ison": $ Vl2 $ betekent dat we exact string "ison" willen vinden: en wanneer we het gevonden hebben, zullen we de volgende karakters interpreteren als een booleaanse variabele (waar / onwaar waarden zijn mogelijk). We hebben nu de waarde in virtuele variabele - maar we willen deze in apparaatvariabele - dus in apparaat is het noodzakelijk om de leesberekening te definiëren die alleen uit Vl2-variabele zal bestaan. Het type variabele wordt dan automatisch overgebracht naar het type apparaatvariabele - in dit geval 0/1. Voor meer informatie zie hoofdstuk Parse Definities.

    In eigenschappen 'ReadPath' en 'Body for reading' is het mogelijk om verwijzing naar variabele te gebruiken - apparaatvariabele of virtuele variabele. De variabele waarnaar wordt verwezen, is in definitietekst opnieuw ingesloten met $ aan het begin en einde. Behalve dit is het ook mogelijk om speciale formaatdefinities te gebruiken na de variabelenaam. Raadpleeg het hoofdstuk Formaatdefinities.

    Na het definiëren van ten minste 'Leespad' is het mogelijk om de verzoeksamenstelling te testen, naar het apparaat te verzenden, antwoord te ontvangen en indien ook gedefinieerde parseerwaarden en de berekeningen te doen. Klik op 'Testaanvraag' en krijg bijvoorbeeld het volgende antwoord:

    Er is informatie over samengestelde AANVRAAG, dan het antwoord na REACTIE, als er enkele variabelen zijn geparseerd, worden ze weergegeven na VARIABELEN, en als er FORMULEEN zijn gedefinieerd, wordt de berekening weergegeven na FORMULE.

    Natuurlijk is het mogelijk dat er een fout is gemaakt in de URL-samenstelling - in dat geval wordt het antwoord van de webserver met fout (404) meestal niet gevonden:

    Als het IP-adres of de hostnaam verkeerd is ingesteld, zodat het apparaat helemaal niet bereikbaar is, eindigt het verzoek na een time-out en is de testreactie als volgt:

    Definities voor schrijven

    Net als bij het lezen van definities is ook de URL voor het schrijven samengesteld uit eerder gedefinieerde delen en wordt het relatieve pad overgenomen uit de eigenschap 'Schrijfpad'. Ook hier is het mogelijk om aangepaste headers te definiëren en body aan te vragen. Ook de http-schrijfmethode kan hier worden ingesteld. Het is mogelijk om een testverzoek te gebruiken om de werkelijke apparaatwaarden naar het apparaat te sturen en het antwoord te controleren.

    Naar variabelen kan worden verwezen in de eigenschappen 'Schrijfpad' en 'Tekst om te schrijven'.

    'Body for writing'-eigenschap wordt gebruikt in het geval van de POST http-methode.

    Module basispagina

    Keer terug van module service-instellingen - sla de eigenschappen op indien gewijzigd. Klik op de gedefinieerde module om de modulepagina te openen:

    De basiseigenschappen worden aan het begin van de pagina weergegeven - het is dus mogelijk om deze hier rechtstreeks aan te passen. Vanaf de modulepagina kunt u naar de instellingen van de moduleservice navigeren. Op deze pagina is het mogelijk om virtuele variabelen toe te voegen. Vanaf deze pagina is het mogelijk om apparaten toe te voegen aan de module.

    Virtuele variabelen

    Virtuele variabelen worden gebruikt om speciale waarden die zijn gedefinieerd in tekenreeks, booleaans of teken om te zetten in TapHome-apparaatwaarden of om berekeningen te maken. Om een virtuele variabele toe te voegen, klik op 'Voeg virtuele variabele toe'

    Selecteer het type variabele dat u wilt toevoegen.

    Variabel typenummer

    Variabel type Nummer wordt gebruikt om een variabele te definiëren die numerieke waarden opslaat - ofwel hele getallen ofwel getallen met decimale punten.

    Variabel type String

    Variabel type String wordt gebruikt om tekst op te slaan zonder spaties. Als bijvoorbeeld op verzoek verwachte apparaatwaarden aan / uit zijn, maar in TapHome zijn gedefinieerd als 0/1, is het noodzakelijk om een virtuele variabele van het type string te berekenen en vervolgens de waarde van deze variabele te verzenden. Voor de berekening van het te rijgen aantal kan de formule SWITCH worden gebruikt:

    SWITCH(St2, 0, "off", 1, "on","off")

    Tekenreeksen in de berekeningsdefinitie moeten tussen apostrofs staan.

    Dit zal de string uitvoeren volgens de waarde van apparaatvariabele St2. De uitvoer is 'uit' voor waarde 0 en 'aan' voor waarde 1. Standaardwaarde is 'uit'. Raadpleeg Expressions voor meer informatie

    Variabel type teken

    Variabel type Teken kan worden gebruikt om binaire waarden uit te voeren. Wanneer een dergelijke variabele wordt gebruikt in de uitvoerformaatreferentie, worden de waarden rechtstreeks in de tekenreeks geplaatst. Laten we bijvoorbeeld aannemen dat we de binair gecodeerde waarde van de dimmer naar twee bytes willen uitvoeren als 0..1000, wat overeenkomt met 0..100%. In TapHome is de dimmerwaarde gecodeerd als 0.000 tot 1.000 wat de 0..100% vertegenwoordigt. We zullen twee virtuele variabelen van het type Teken definiëren Vl1 en Vl2. De output binaire string moet bijvoorbeeld beginnen met steek ST en eindigen met CR LF karakters (hexadecimaal 0x0D 0x0A). Na het startteken moet de opdrachtreferentie 0x05 en apparaatidentificatie 0xFE 0x1C zijn, gevolgd door de twee bytes die de dimmerwaarde vertegenwoordigen. Uitvoerreeks moet als volgt worden gedefinieerd:

    ST \ x05 \ xFE \ x1C $ Vl1 $$ Vl2 $ \ x0D \ x0A

    Na uitvoer string definitie zullen twee berekeningen worden ingeschakeld - voor Vl1 en Vl2. Deze berekeningen moeten als volgt worden gedefinieerd (apparaatwaarde wordt opgeslagen in Dm3 apparaatvariabele):

    Berekening voor VL1: ((Dm3 1000,0) > > 8) Berekening voor Vl2: ((Dm3 1000.0) & 0xFF)

    Eerste berekening gebruikt bitverschuiving voor 8 bits naar rechts - dus alleen bits 8..15 van twee bytes worden opgeslagen in de variabele Vl1. Tweede berekening gebruik binair en operatie om slechts 0..7 bits naar de variabele Vl2 te brengen. Raadpleeg Expressions voor meer informatie

    Orderbytes zijn in dit geval zogenaamde big endian. Als er een kleine endian wordt gebruikt voor codering, wijzig dan de volgorde van variabelen in de output string.

    Een big-endian-volgorde plaatst de belangrijkste byte eerst en de minst significante byte als laatste, terwijl een kleine-endian-volgorde het tegenovergestelde doet. Neem bijvoorbeeld het hexadecimale getal zonder teken 0x1234, waarvoor minimaal twee bytes nodig zijn om te vertegenwoordigen. In een big-endian-volgorde zouden ze 12 34 zijn, terwijl in een little-endian-volgorde de bytes 34 12 zouden zijn gerangschikt.

    Na het toevoegen van virtuele variabelen wordt de lijst weergegeven:

    Wanneer u op een virtuele variabele klikt, wordt het dialoogvenster Verwijderen weergegeven:

    Instellingen apparaatservices.

    Apparaten hebben vergelijkbare parameters als module die kunnen worden gebruikt voor het lezen en schrijven van definities. Als de apparaatdefinitie voor lezen en schrijven niet is gedefinieerd, worden moduledefinities gebruikt. Dit is erg handig als het verzoek uit waarden van veel apparaten moet bestaan en in module moet worden ingevuld.

    Het lezen van berekeningen en het schrijven van berekeningen zijn altijd gedefinieerd in het apparaat. Voor details over berekeningen verwijzen wij u naar uitdrukkingen.

    Berekening lezen

    Deze berekeningsoutput is altijd de apparaatvariabele. Als het apparaat slechts één bruikbare apparaatvariabele heeft, zoals Switch alleen de status Switch heeft, is er de naam van de variabele die niet opnieuw wordt gebruikt in de definitie en is er alleen de eigenschapsnaam 'Berekening lezen'. In het geval van apparaten die meer uitvoervariabelen hebben, zoals termostat met de gewenste temperatuur en ook de echte temperatuur, wordt de variabelenaam gebruikt na het lezen van de berekening:

    Berekeningen schrijven

    Schrijfberekeningen worden altijd gedefinieerd voor de variabelen die worden gebruikt in de eigenschappen 'Schrijfpad' of 'Body voor schrijven'. Bij het bewerken van een nieuwe waarde van een van deze eigenschappen wordt de variabele berekening automatisch toegevoegd:

    Ontleed definities.

    In parsedefinitie-eigenschappen willen we tekst uit het antwoord lezen en converteren naar variabele waarden. Er moet worden gedefinieerd waar het parseren van variabelen moet beginnen. Gewoonlijk is het voldoende om te schrijven vóór tekst met variabele definitie die voorafging aan de variabele tekst. We leggen dit al uit aan een eenvoudig voorbeeld - JSON-antwoord:

    {

    "name":null,

    "ison":false,

    }

    Als we de waarde false willen ontleden na tekst "ison": de parse-definitie moet als volgt worden gedefinieerd:

    "ison": $ Vl2 $

    In dit geval moet de Vl2-variabele een virtuele variabele van het type boolean zijn om de waarden true / false correct te accepteren.

    Wat te doen als we een ingewikkelder antwoord hebben - waarbij de tekst "ison": op veel plaatsen wordt gedefinieerd, maar wordt voorafgegaan door naamdefinities die precies kunnen definiëren waar de definitie begint.

    In het volgende voorbeeld worden meer parameters gedefinieerd in JSON-antwoord - om te laten zien hoe de juiste waarde kan worden geëxtraheerd.

    {

    "name":relay_0,

    "timer":null,

    "ison":false,

    }

    {

    "name":relay_1,

    "timer":null,

    "ison":false,

    }

    We willen bijvoorbeeld de relay_1-waarde ontleden - dus we willen beginnen met lezen op de positie waar de naam is gedefinieerd als relay_1. Maar na deze definitie worden meer parameters gedefinieerd, welke waarde we niet precies weten - dus we willen deze tekst gewoon overslaan tot de "ison": definitie. De parse-definitie moet als volgt worden gedefinieerd:

    "Name": relay_1 ... "ison": $ Vl2 $

    Er is eerst de tekst die de naam van relay_1 precies definieert en daarna zijn er drie punten gevolgd door dezelfde tekst als voorheen, die voorafging aan het begin van variabele tekst en vervolgens aan de variabele verwijzing.

    De drie stippen '...' in ontleeddefinities kunnen worden gebruikt tussen twee tekstdefinities om de tekst tussen over te slaan.

    De geparseerde waarde wordt geconverteerd naar het type waarnaar wordt verwezen.

    De variabelen van het TapHome-apparaat zijn altijd numeriek.

    Schakelwaarde kan 0/1 zijn.

    Schakelwaarden voor meerdere waarden beginnen bij 0 en worden met 1 verhoogd met elke volgende gedefinieerde waarde.

    Analoge waarden worden gedefinieerd als percentage van 0 tot 1 met zoveel decimalen als nodig. 29% betekent bijvoorbeeld 0,29. Sensorwaarden zijn in metrische eenheden. Temperaturen in graden C. Windsnelheid in km / h. Neerslag in mm / m2.

    Formaatdefinities

    De variabelenaam in uitvoerdefinities moet tussen $ tekens staan. Na variabelenaam en voor einde $ teken kan worden geschreven formaatdefinitie.

    $ Vl1, xxx: Fppp $

    xxx ... Wordt altijd gedefinieerd na een komma. Definieert de breedte van de tekenreeks die in de resultaatreeks wordt ingevoegd. Als de xxx positief is, is de tekenreeksrepresentatie van de variabele rechts uitgelijnd. Als de tekenreeksrepresentatie van de variabele echter meer dan xxx tekens lang is, wordt de gewenste veldbreedte genegeerd en wordt de hele tekenreeks ingevoegd in de resultaatreeks. Om strings in een veld links uit te lijnen, geeft u vooraf de veldbreedte aan met een negatief teken.

    F ... Formaat specificatie karakter - wordt altijd gedefinieerd na dubbele punt.

    ppp ... optioneel nummer - precisiespecificatie - voor tekens met een speciaal formaat. Betekenis is volgens het gebruikte speciale teken.

    De Fixed-Point ("F") formaatspecificatie

    De specificatie van het formaat met vast punt ("F") zet een getal om in een reeks met de vorm "-ddd.ddd ...", waarbij elke "d" een cijfer (0-9) aangeeft. De string begint met een minteken als het nummer negatief is.

    De precisiespecificatie geeft het gewenste aantal decimalen aan. Als de precisiespecificatie wordt weggelaten, worden alle gebruikte decimale punten naar de tekenreeks geschreven.

    Voorbeelden van opmaak:

    1234.567 (":F") -> 1234.57

    1234 (":F1") -> 1234.0

    -1234.56 (":F4") -> -1234.5600

    De exponentiële ("E") formaatspecificatie

    De exponentiële ("E") formaatspecificatie zet een getal om in een string met de vorm "-d.ddd ... E + ddd" of "-d.ddd ... e + ddd", waarbij elke "d" aangeeft een cijfer (0-9). De string begint met een minteken als het nummer negatief is. Precies één cijfer komt altijd voor de komma.

    De precisiespecificatie geeft het gewenste aantal cijfers achter de komma aan. Als de precisiespecificatie wordt weggelaten, wordt een standaard van zes cijfers achter de komma gebruikt.

    Het geval van de formaatspecificatie geeft aan of de exponent moet worden voorafgegaan door een "E" of een "e". De exponent bestaat altijd uit een plus- of minteken en minimaal drie cijfers. De exponent is indien nodig opgevuld met nullen om aan dit minimum te voldoen.

    Voorbeelden van opmaak:

    1052.0329112756 (":E") -> 1.052033E+003

    1052.0329112756 (":e2") -> -1.05e+003

    Voorbeeld van opmaak inclusief breedtedefinitie:

    Vl1 = 1794.68235

    $Vl1,12:E3$ $Vl1,12:F4$ => ' 1.795E+003 1794.6824'

    $Vl1,-12:E3$ $Vl1,-12:F4$ => '1.795E+003 1794.6824 '

    De hexadecimale ("X") formaatspecificatie

    De hexadecimale ("X") formaatspecificatie zet een getal om in een reeks hexadecimale cijfers. Het geval van de formaatspecificatie geeft aan of hoofdletters of kleine letters moeten worden gebruikt voor hexadecimale cijfers die groter zijn dan 9. Gebruik bijvoorbeeld "X" om "ABCDEF" te produceren, en "x" om "abcdef" te produceren. Dit formaat wordt alleen ondersteund voor numerieke typen en het nummer wordt gebruikt als geheel getal zonder afronding.

    De precisiespecificatie geeft het minimumaantal gewenste cijfers aan in de resulterende tekenreeks. Indien nodig wordt het nummer opgevuld met nullen aan de linkerkant om het aantal cijfers te produceren dat door de precisiespecificatie is opgegeven.

    Voorbeelden van opmaak:

    3567.7 (“:X4:) → 0DEF