@City IoT Cloud Platform
iSys - Intelligente systemen IoT Oplossingen
IoE.Systems
Ynhâldsopjefte
1. Ynlieding. 5
1.1 Stipe apparaattypen. 5
1.2. Stipe produkten soarten. 5
1.3. Stipe kommunikaasjeprotokollen 5
1.4. Stipe kommunikaasje technology fan 'e apparaten 6
1.5. @City Cloud Server 6
1.5.1. Server- en kommunikaasjeportaazjes 7
1.5.2 HTTP LoRaWAN yntegraasje 7
1.5.3. Front-end ynterface 8
1.5.3. Tsjinner tagongsrjochten 8
1.6. Smart Devices 9
1.6.1. CIoT - GSM-apparaten 9
1.6.3. BAS, BMS, IoT - Ethernet- en WiFi-apparaten 9
1.6.2. IoT -LoRaWAN-apparaten 9
1.7. Saken nei bedriuw (B2B) opsjes 9
2. @City IoT Platformfunksjonaliteit 10
3. Haadside 11
4. Haadformulier 11
4.1. Koptekst 12
4.1.1. Thúsferbining - (iepent tabel mei werklike resultaten) 12
4.1.2. Fakje "X" - iepenet / slút Queryformulier 12
4.1.3. "V" karfakje - iepenet / slút fjildfoarm 12
4.1.4. Grafyske ikoanen - keppelings nei resultaten fan fisualisaasje (bewurkber) 12
4.2. Foarm: 12
4.2.1. "X" karfakje - iepenet / slút heul Queryformulier 12
4.2.2. CSS - Selektearje Visualisaasjetema 12
4.2.3 Fekânsje sichtber fjilden - lit fjildfilterlist 12 sjen / ferbergje
4.2.4. Ljepper: Ljeppernamme om 12 ta te foegjen of te ferwiderjen
4.2.5. Knoppen tafoegje / fuortsmite - Ljeppers tafoegje of fuortsmite mei de namme yn ljepper fjild 12
4.2.6. Selektearje kearnknop 12
4.2.7. Deselektearje Alle knop 12
4.2.7. Selektearje Alle knop 12
4.2.8. Filter ferbergje - Hiel formulier 12 ferbergje
4.2.9. Knop útfiere - Parameterynstellings feroarje 13
4.2.10. "V" karfakje - fjilden sjen litte / heech filterje. 13
4.3. Ljeppers 13
4.4. Ynhâld Tabel 13
4.4.1. Run - werjaan resultattype 13
4.4.2. Kopiearje (+/- keppelings) 13
4.4.3. Tafelsellkeppelings 13
4.5. Gegevensbestelling 13
4.6. Foarbyld 13
5. Kaarten 15
5.1. Inisjalisaasje fan kaarten 15
5.2. Opsjonele ynstellings foar fraach 15
5.2.1. MAP-skaal feroarje (zoomnivo) 16
5.2.2. IMEI (Selektearje apparaatfjild) 16
5.2.3. Lon, Lat (fjilden foar lingtegraad, breedtegraad)
5.2.4. MAP-styl (tema) wizigje 16.
5.2.5. WAAR Klausule 16
5.2.6. Útfiere (Query-knop útfiere) 16
5.2.7. Deselektearje Alles (fuortsmite alle fjilden út 'e fraach) 17
5.2.8. Fakje "V" (Fjildfoarm iepenje / slute) 17
5.2.9. Fakje "X" (Queryformulier sjen litte / ferbergje) 17
5.3. Foarbyld 17
6. Resultaten sjen litte yn 'e tabel 18
6.1. Inisjalisaasje fan tabel 18
6.2. Opsjonele ynstellings foar fraach 19
6.2.1. Sortearje - fjild sortearje en op- / delgeande folchoarder 19
6.2.2. DB / IMEI - Selektearje apparaat 19
6.2.3. CSS - selektearje styl (Visualisaasjetema) 20
6.2.4. Sichtbere fjilden - Fjilden 20 sjen litte / ferbergje
6.2.5. Leech fuortsmite - Lit gjin lege kolommen 20 werjaan
6.2.6. Fakje "X" (Queryformulier sjen litte / ferbergje) 20
6.2.7. Wêr't klausule (foar gegevensbeheining) 20
6.2.8. Selektearje kearnknop (Meest foarkommende fjilden ynskeakelje) 20
6.2.9. Deselektearje Alle knop (alle fjilden fuortsmite fan 'e fraach) 20
6.2.10. Útfiere (Query-knop útfiere) 20
6.2.11. Finkje "V" (Fjildfoarm iepenje / slute) 20
7. Bargrafiken. 21
8. Histoaryske kaarten. 22
8.1. Inisjalisaasje fan histoaryske charts 22
8.2. Opsjonele ynstellingen fan histoaryske kaarten 23
8.2.1. IMEI - (Selektearje apparaat om histoaryske gegevens te werjaan) 23
8.2.2. Min - beheine minimale wearde fan earste fjild 23
8.2.3. Maks - limyt maksimale wearde fan earste fjild 23
8.2.4. "V" - Fjilden 23 sjen litte / ferbergje
8.2.5. Fan: minimale datum / tiid ynstelle (*) 23
8.2.6. Oan: maksimum datum datum / tiid ynstelle (*) 23
8.2.7. Fakje "X" (Queryformulier sjen / ferbergje) 23
8.2.8. "Wêr" Klausule 23
8.2.9. Deselektearje Alle knop (alle fjilden fuortsmite fan 'e fraach) 23
8.2.10. Útfiere (Query-knop útfiere) 23
8.2.11. Fakje "V" (Fjildformulier iepenje / slute) 24
8.3. Barsfariant: (toant allinich beskikbere gegevens) 24
8.4. Trochrinnende fariant (mei deselde gegevens): 24
9. Kompatibiliteit fan webbrowser 25
10. Tema's oanpasse 26
11. Algoritmen fernije 27
12. Databankstruktuer 28
12.1. "ithings_" en "*" tabellen struktuer 29
12.2. Apparaatkommando's (Eveneminten) wachtrige "* _c" tabel - struktuer 30
12.3. Tagong ta resultaten fan databases - Midnivo (lêsgegevens) 30
12.3.1. Krij hjoeddeistige status fan alle apparaten 30
12.3.2. Krij histoaryske gegevens foar it apparaat 31
12.3.3. Krij list mei apparaten - ien fjild fan hjoeddeistige status mei beheining 32
@City IoT Cloud Platform is wijd "mikro-wolk" systeem foar yndividuele klanten. Platfoarm is net te dielen en mar ien klant hat tagong ta fysike as firtuele server (VPS as spesjale servers). Klant kin ien fan tsientallen datasintra selektearje yn Jeropa as yn 'e wrâld.
@City IoT platfoarm is wijd oan it folgjen fan iSys.PL produkten
IoT - RF / LoRaWAN (Ynternet fan dingen)
CIoT - GSM / 2G / 3G / 4G / CATM1 / NBIoT (Cell Internet of Things)
WiFi
Ethernet
@City (eCity) Cloud IoT Platfoarm is ferskate grutte systeem foar IP IoT produkten (tegearre neamd as @City Hardware of CioT-apparaten ):
@Stêd
@Ljocht
@Metering
@Trace
@AirQ
@Bin
@City IoT platfoarm stipet folgjende protokollen foar kommunikaasje:
UDP - foarsteld foar CIoT-sensoren / apparaten (foaral NBIoT) - leechste gegevensbenutting
TCPIP - foarsteld foar apparaten mei bidireksjoneel kommunikaasje - handshaking / befestiging
HTTP - allinich foarsteld foar datatoegang / fisualisaasje / eksportearje / "wolk nei wolk"
HTTP Webhooks - foar LoRaWAN-kommunikaasje tusken LoRaWAN Network / Application Server en @City Cloud.
Gegevens ferstjoerd fan controller nei wolkserver en oarsom wurde fersifere yn unyk binêr formaat foar leechste gegevensgrutte en ferhege feiligens. Elke partner krijt syn eigen unike fersiferingskaai foar autorisaasje fan apparaat, validiteit fan gegevens, ensfh.
Foar net-eHouse / eCity-apparaten kinne wy yndividuele fersiferingsalgoritmen leverje ( "C" boarne koade) foar elke partner foar mikroprozessor om gegevens te beskermjen foar kommunikaasje.
Yn dit gefal binne gegevens folslein feilich by bidireksjoneel kommunikaasje oer de publike kommunikaasjemedia (ynternet, Air, ensfh.) ).
@City IoT platfoarm stipet:
GSM: 2G, 3G, 4G (LTE), CATM1 (LTEM1), NBIoT - apparaten (UDP / TCPIP-kommunikaasje)
LoRaWAN-apparaten (HTTP Webhooks) - fia LoRaWAN-gateway en LoRaWAN netwurk- / tapasserservers
Ethernet-controllers (UDP / TCP-kommunikaasje)
WiFi-controllers (UDP / TCP-kommunikaasje)
Takomstige IP-produkten
Net IP-produkten fia ekstra lokale @ City / eHouse.PRO Hardware Gateway
@City IoT Platfoarm is wijd oan apparaten / knooppunten:
Native iSys-produkten:
CIoT (GSM / 2G / 3G / 4G / CATM1 / NBIoT)
IoT (LoRaWAN)
WiFi - bepaalde produkten foar @City Platform
Ethernet - bepaalde produkten foar @City Platform
Co-Production produkten (makke troch tredden ûnder iSys lisinsje en eksterne merk)
Franchiseprodukten (makke troch tredden ûnder iSys-lisinsje mei iSys-logo's)
@City software wurket op Linux basearre VPS (Virtual Private Server) of Dedicated Server oan ynternetside, ôfhinklik fan frege prestaasjes fan 'e Tsjinner (letter Server neamd):
privee / iepenbiere tagong
algemiene apparaten telle
fernijing fan de statusfrekwinsje fan apparaten
gegevensferfarskingsrate
Ferskate farianten fan VPS besteane ôfhinklik fan:
Priis
data-sintrum geo-lokalisaasje
Firtuele prosessorkernen (1-8)
Firtuele RAM (1-32GB)
SSD-skiif (20GB-1TB)
Tsientallen Dedicated server bestiet ôfhinklik fan:
Priis
data-sintrum geo-lokalisaasje
Processor kearnen (4 .. 32)
RAM (16 .. 512GB)
SSD / HDD (256 GB .. 8TB)
It platfoarm @City IoT is wijd oan ien klant:
lokale oerheden en autoriteiten (Stêd, Mienskip, Lân)
B2B (foar eigner fan tredden)
Om't it Server net kin wurde dield tusken klanten, ferienfâldiget it problemen mei tagong ta feiligens en prestaasjes. Fanwegen dizze reden is allinich klant ferantwurdlik foar effektive feiligens, stabiliteit, effisjinsje, dataferfier, ensfh. Yn gefal fan net genôch prestaasjes kin klant heger plan keapje (VPS of Dedicated Server), mear optimaal foar ferwachte funksjonaliteit en prestaasjes.
Yn spesjale gefallen "Cloud to cloud" kommunikaasje kin wurde ymplementeare foar globalisearring en sintralisaasje fan gegevens nei gruttere gebieten ynstee fan multikundewolk.
Kommunikaasje fan @City Server wurdt realisearre op basis fan applikaasje op leech nivo foar maksimalisaasje fan prestaasjes.
Hovedfunksjes fan @City Server-tapassing binne:
ûntfange asynchroon gegevens fan apparaten (fia protokollen: UDP, TCP IP, HTTP)
gebrûk fan gegevens en de kosten tusken apparaten en Cloud minimalisearje (troch UDP, TCP IP mei lege nivo kommunikaasjeprotokollen)
fersifere status fan apparaten ûntfange (fia alle kommunikaasjemedia)
autorisaasje en validearjen fan gegevens fan apparaten troch dekodearjen fan har statussen
dekodearjen fan apparaatstatus en direkt bywurkje yn MariaDB / MySQL-tabellen (yn rûge gegevensformaat)
aktuele gegevenstabel (befettet allinich de nijste status fan elke apparaten)
histoaryske datatabel (befettet alle statussen foar ien apparaat)
stjoerde kommando's (Eveneminten) nei apparaten stjoere
it garandearjen fan handshaking, ferifikaasje en befestigingen
@City Server software is itselde foar elke brûker en kin net oanpast wurde foar ferskate klanten.
LoRaWAN-controllers binne yntegreare mei de @City-wolk fia de HTTP-ynterface (webhooks) beskikber op 'e LoRaWAN netwurk / tapassingsserver.
Ferskate soarten netwurk- / applikaasjeserver wurde stipe:
TTN (beheinde tiid "Yn 'e loft" en it maksimum oantal kommando's dy't nei de bestjoerder stjoerd binne en stipe gjin firmware-upgrade)
LoraWAN-Stack (fereasket hosting op in fysyk apparaat mei ynternet tagong).
LoraServer.Io (fereasket hosting op in fysyk apparaat mei ynternet tagong - stjoere allinich gegevens nei de server en stipet gjin firmware-upgrade)
De @City Cloud foar LoRaWAN-controllers is ferdield op deselde manier as foar oare ynterfaces. It wurdt besprutsen yn it foarige haadstik.
Front-end-interface wurdt realisearre mei PHP-skripts foar oanpasse gegevens út @City Cloud Database. It brûkt heul elastysk sykmeganisme, basearre op orizjinele SQL-fragen om winske gegevens te beheinen. Interface leveret query-resultaten yn JSON-formaat foar fierdere dekodearjen en ferwurkjen troch JavaScript Front-end Web "applikaasje".
Orizjinele front-end-interface is itselde foar elke brûker en kin net oanpast wurde foar ferskate klanten.
Overlay-interface kin makke wurde troch ús personiel of yn 'e gearwurking om oanpassing foar de klant te garandearjen.
Klant tagongsrjochten (ta fysike Server) binne beheind.
Triemtoegang allinich foar map "sjabloanen" (native tekstbestannen - .txt, .js, .css, .html):
tafoegjen, ferwiderjen, wizigjen fan suvere HTML-bestannen (Front-End GUI / interfaceûntwikkeling)
pure JavaScript-bestannen tafoegje, ferwiderje, oanpasse (Front-End GUI / interfaceûntwikkeling en algoritmen)
pure CSS-bestannen tafoegje, ferwiderje, wizigje (Front-End - oanpaste werjeften / tema's)
tafoegje, ferwiderje, feroarje tekstbestannen fan sjabloanen (Front-End GUI)
tabs, fluchtoetsen, keppelings nei gegevensresultaten tafoegje, ferwiderje, feroarje
Oare tagongsrjochten:
Folsleine tagong ta @City Cloud Database MySQL / MariaDB wêr't alle apparatengegevens wurde opslein
Tagong ta webservices wurde definieare (bewiisbrieven) foar klant.
Klant kin gjin referinsjes trochjaan oan tredden (meardere tagong fan resultaten kin ynfloed hawwe op prestaasjes, stabiliteit en feiligens fan it totale systeem)
Under bysûndere omstannichheden en gebrûk fan Dedicated Server mei hege prestaasjes, kin iepenbier akkount ynsteld wurde om de measte aktuele gegevens te observearjen (net histoarysk).
Brûker kin gegevens duplisearje nei syn eigen MySQL-tsjinner en eigen gegevens analysearje en ferwurkje, om gjin ynfloed te hawwen op de prestaasjes fan @City Server
iSys - meiwurkers fan Intelligent Systems - hawwe unbeheinde tagong ta heule server ynklusyf root-akkount en folsleine DB-tagong foar ûnderhâld.
Under bepaalde omstannichheden kin iSys ekstra beheinde rjochten jaan oan klant (PHP-skripts, bestannen) nei kontrolearjen fan boarnekoade, testen útfiere, as it gjin ynfloed hat op de totale systeemfeiligens, stabiliteit en prestaasjes.
Us apparaten befetsje mikrokontroller en GSM / GPS / GNSS-module (2G..4G, NBIoT, CATM1) foar kommunikaasje. Microcontroller befettet fersifere bootloader foar feilige OTA-firmware-upgrade. Hjirmei kinne jo in soad systeemfarianten oanmeitsje op basis fan deselde "CIoT Smart apparaat".
Ethernet- en WiFi-controllers meitsje IP-basearre kommunikaasje mei it systeem mooglik (sûnder opladen foar gegevensferfier nei de GSM-operator). Dizze apparaten hawwe ek bootloader fersifere en apparaten kinne wurde bywurke fia de eigen interface. Foar WiFi hat it OTA-firmware-upgrade fan haadserver
LoRaWAN makket datatransmissie mooglik oer heule lange ôfstannen (oant sawat 15km). Dit berik hinget ôf fan 'e snelheid fan gegevensferstjoering, de hoemannichte gegevens, ferstêdliking fan it gebiet en de effisjinsje fan' e radiopaden fan 'e apparaten.
Us apparaten befetsje in mikrokontroller en LoRaWAN-module foar kommunikaasje. De mikrokontroller befettet in fersifere bootloader foar feilige OTA-software-fernijing. Hjirmei kinne jo meardere systeemfarianten oanmeitsje op basis fan deselde "IoT smart device". De apparaten wurkje yn 'e ISM iepen band sûnder ekstra abonnemintskosten. It is needsaaklik LoRaWAN Gateways te brûken om it heule gebiet te dekken mei tagong ta it ynternet. Yn 't gefal fan besteande LoRaWAN-poarten binnen it berik fan apparaten (konfigureare foar TTN-tsjinner) is it mooglik om ynformaasje fia har te stjoeren. Firmware-upgrade fereasket in eigen netwurk / applikaasje LoRaWAN-tsjinner en in goed berik foar kommunikaasje.
D'r binne ferskate opsjes foar bedriuw en gearwurking:
ymportearje / eksportearje klear produkten (switchboards, apparaten) - definitive produkten
ymportearje / eksportearje OEM-produkten (PCB's, controllers, ensfh.) - tuskenprodukten, spare dielen
franchise - produksje basearre op ús lisinsje foar lokale merken (wy leverje allinich programmeare mikrokontrollers) ûnder iSys - Intelligent Systems Brands
Co-Production - (lykas hjirboppe) mar ûnder eksterne merken
@City-platfoarm stipet oanpasbere Front-End-sjabloan foar fisualisaasje, query, beheining en ferwurking fan gegevens (aktuele / histoaryske gegevens):
selekteare gegevens op 'e kaart visualisearje (geo-lokalisaasje)
toant selekteare gegevens en resultaten yn 'e tabellen
toant selekteare gegevens yn staafdiagrammen
toant selekteare gegevens yn histoaryske charts
eksportearje gegevens nei applikaasjes fan tredden en fierdere ferwurking
oare funksjonaliteit sil bywurke wurde op yndividuele fersiken.
De foarkant fan 'e brûker is tagonklik fia statysk IP- as DNS-trochferwizingsdomein / subdomein / bestân as beskikber.
Foarbyld- en demo-ynstallaasje (It is allinich ynskeakele foar potensjele klanten).
Ynformearje ús asjebleaft as jo it wolle testen - om publike tagong ta it platfoarm mooglik te meitsjen.
It kin statysk IP nedich wêze fan komputer op ôfstân om kommunikaasje mooglik te meitsjen mei @City-platfoarm.
Haadside wurdt mei opsetsin leech litten om feiligensredenen: http: //% YourIP% / IoT /
It kin yndividueel ynskeakele en bewurke wurde en befetsje keppelings nei alle beskikbere tsjinsten fan @City IoT Platfoarm as it ferplicht is
Haadformulier is bedoeld om nije presets en ljeppers te meitsjen: http: //%IP%/IoT/que.php
Dit is inisjele foarm foar it meitsjen fan resultaten, werjeften en ljeppers foar elke konfiguraasje
Beskriuwingen (Fan boppe en lofts nei rjochter rjochting)
Wizigje Visualisaasje Tema CSS-bestân moat bestean yn "sjabloanen / css /" map - automatysk neamd.
Selektearje haadfjilden sichtber op 'e tafel. It wurdt bywurke automatysk.
Deselektearje alle fjilden (moatte wurde folge troch guon derfan mei de hân te selektearjen)
Selektearje alle fjilden (moatte wurde folge mei guon fan 'e hân selektearje)
Dit is lykweardich oan alle (X) karfakje
Yndividueel makke ljeppers mei nammen en presets (opslein yn cfg / tabs.cfg map).
It bestân befettet eins namme en URL (skieden troch ljepper).
Toant alle fjilden beheind troch fjildfilter.
Fjilden yn 'e tabel:
map- resultaten fan kaarten op 'e kaart (ien as mear fjild kin wurde selekteare)
skiednis - histoaryske charts (ien as mear fjild kin wurde selekteare)
tab - toant tabel (elke kombinaasje fan fjilden kin wurde selekteare)
bar - mar ien fjild wurdt werjûn op it staafdiagram
As jo op ien fan 'e wearde drukke, sil it nije resultaten iepenje mei selekteare fjilden (foar hjoeddeistige rige).
In ljepper tafoegje / ferwiderje mei de namme ynsteld Tab fjild. It brûkt allinich fjilden dy't binne selekteare yn deselde rigel fan 'e tabel.
Troch op in oare fjildnamme te drukken sil Gegevensfisualisaasje fan it selekteare fjild foar de selekteare rige begjinne.
Oarder fan werjûn fjilden binne as syn oarder yn fjildfoarm (lykwols tm fjild wurdt altyd ferstjoerd nei it ein fan tekst). Dizze folchoarder kin allinich feroare wurde mei direkte bewurking fan URL-parameters (fjilden folchoarder diel).
Bygelyks: Tab ynstelle mei Asset Tracking namme en befettet kaart mei tiid en snelheid op 'e kaart
Alle beskriuwing ferwiist nei rige wêr "Map" tekst is yn "Rinne" pylder.
Fier namme yn "Asset Tracking" yn Tab fjild (sûnder oanhellingstekens)
Soargje derfoar dat alle kolommen net selekteare binne yn 'e rige
útkieze tm, gps_speed_km allinnich yn 'e rige
parse + knop wêr yn 'e rige
Kaarten kinne wurde lansearre fanút MainForm mei foarkonfiguraasje
Inisjalisaasje fan kaarten wurdt manuell útfierd as direkt útfierd mei keppeling: > http: //%IP%/IoT/maps.php
Brûker moat alle fjilden deselektearje (Druk op Deselektearje Knop)
Druk op in karfakje foar werjûn fjilden (bgl. Ain5 (foar Smog-nivo) en tm (foar mjitdatum / tiid)
parse "V" karfakje om fjildfoarm te ferbergjen
parse Eksekutearje knop om DB-fraach út te fieren en aktuele ynformaasje fan alle sensoren / apparaten werjaan
Kaart mei gegevens wurdt nei 30 sekonden of mear bywurke.
Ynstellingen beskreaun fan links nei rjochts (op boppesteande skermôfbylding).
Zoomnivo kin feroare wurde mei (+/-) knoppen foar skaal (respektivelik_skale * 2 of hjoeddeiske_skale / 2). As jo op ien fan dizze knoppen drukke, feroaret de skaal automatysk.
In oare manier is Selektearje nivo yn Zoom yn Kombyfjild fjild en drukke Eksekutearje knop. Yn dit gefal wurdt hiele werjefte / kaart opnij laden en ferfarskje (duorret in skoftke tidens inisjalisaasje).
IMEIfjild befettet unike apparaat-ID as Unike alias foar in apparaat. Standert ynstelling is * (asterisk) dy't de lêste resinte wearden en geolokaasje foar elk apparaat toant.
IMEI ynstelle op elke oare wearde sil histoaryske gegevens fan selekteare apparaat sjen litte. It hat allinich sin foar mobile en bewegende sensoren, oars oerlappe de resultaten op 'e kaart op deselde posysje.
Stel de sintrumposysje fan de kaart yn. Dit fjild is ynsteld op rinnerposysje as mûsknop op de kaart wurdt yndrukt.
Mapstyl / -tema kin wurde selekteare út Map ComboBox fjild (bgl. Dûnker, griis, topografysk).
Ferskate kaarttema's kinne ferskillende maksimale zoomnivo's hawwe, sadat it juste Tema kin twinge om kaartskaal te ferheegjen.
Wêr't Clause wurdt brûkt foar ekstra fraachstring {WHERE part} foar MySQL / MariaDB.
Dizze klausel wurdt rekken holden foar it oanmeitsjen fan folsleine QUERY-tekenrige foar databaseresultaat. It kin gegevens, tiid en alle oare wearden beheine troch it tellen fan resultaten te beheinen. Oarspronklike nammen fan tafelfjilden (net alias) moatte yn dit fjild brûkt wurde. Bv.
gps_speed_km> 10 // snelheid is mear dan 10 km / o
ain5> 3 // ain5 is grutter dan 3 (hâlden fan 2.5um dieltsjes telt - smognivo)
gps_speed_km> 10 en ain6> 5 // snelheid is mear dan 10 km / oere en ain6 is grutter dan 5 (hold 10um dieltsjes telle - smog nivo)
Druk op dizze knop is ferplicht om alle ynstellings, parameters te feroarjen (útsein drukke op +/- knoppen).
Kaart wurdt fanôf it begjin laden mei nije presets.
Kaart is hielendal net laden, as gjin gegevens beskikber binne foar hjoeddeistige fraach.
Nei it drukken op dizze knop moat teminsten ien fjild mei de hân wurde selekteare om resultaten op 'e kaart wer te jaan.
Dit karfakje wurdt brûkt om selektor fan te werjaan fjilden te sjen / ferbergjen.
Mei dit karfakje kinne jo hiele formulier ferbergje, útsein ( +/- knoppen)
De resultaten op 'e kaart wurde kontinu fernijd en fernijd mei nije wearden
Bgl Smog-resultaten (Sensor ynstalleare op 'e auto): Smog-nivo 2.5um-dieltsjes (Ain5), Snelheid (gps_speed_km), Datum / tiid (tm), kaart (2 - topografysk), zoomnivo 16,
Wêr klausule:
"gps_fix = 3 en tm> "2019-02-18 00:00:00" en tm <"2019-02-19 00:00:00" en gps_speed_km> 0".
// GPS = jildige 3D-resultaten & datum = 2019-02-18 & snelheid> 0 km / o
Resultaten sjen litte yn 'e tabel.
Op "Haadformulier" parse "tafel" item, nei it selektearjen fan guon fjilden om foarôf ynstelde tabel wer te jaan
As tafel iepen is fanôf link http: //%IP%/IoT/que.php? func = ljeppers it freget foarôf inisjalisaasje fan ynstellings.
Jo kinne sichtbere fjilden selektearje (troch op te drukken "Sichtbere fjilden" ) karfakje.
Druk op alle fereaske karfakje foar werjûn fjilden
Druk op karfakje "Sichtbere fjilden" om fjildenfoarm te ferbergjen
Druk op Utfiere knop om DB-fraach en tafel werjaan út te fieren
Ynstellings wurde beskreaun fan links nei rjochts (op 'e skermôfbylding).
Sortearje fjild is ekwivalint fan drukken op kolomkop.
IMEIfjild befettet unike apparaat-ID as Unike alias foar in apparaat. Mei lege wearde lit it tabel sjen fan meast resinte wearden.
IMEI ynstelle op elke oare wearde sil histoaryske gegevens fan selekteare apparaat sjen litte.
Dit is sufix foar MySQL / MariaDB ekstra oanfraachstring {WHERE diel}
Dizze klausel wurdt rekken hâlden mei it konstruearjen fan folsleine QUERY-tekenrige foar databaseresultaat. It kin gegevens, tiid en alle oare wearden beheine troch it tellen fan resultaten te beheinen. Oarspronklike nammen fan tafelfjilden (net alias) moatte yn dit fjild brûkt wurde. Bv.
gps_speed_km> 10 // snelheid is mear dan 10 km / o
ain5> 3 // ain5 is grutter dan 3 (hâlden fan 2.5um dieltsjes telt - smognivo)
gps_speed_km> 10 en ain6> 5 // snelheid is mear dan 10 km / oere en ain6 is grutter dan 5 (hold 10um dieltsjes telle - smog nivo)
Nei it drukken op dizze knop moat teminsten ien fjild mei de hân wurde selekteare om resultaten op 'e kaart wer te jaan.
Druk op dizze knop is ferplicht om alle ynstellings, parameters te feroarjen (útsein drukke op +/- knoppen).
Tabel wurdt fanôf it begjin opnij laden mei nije presets.
Dit karfakje wurdt brûkt om selektor fan te werjaan fjilden te sjen / ferbergjen.
Resultaten yn 'e tabel wurde neffens sorteare Sortearje fjild ynstelling. Sortearfolchoarder kin feroare wurde troch te drukken op rige koptekst (ien kear foar ien rjochting twa kear foar in oare rjochting).
Guon resultaten yn kolommen ferwize nei fierdere visualisearringsskermen (hurdkodearre).
By it werjaan fan histoaryske gegevens foar apparaat moatte it wurde beheind om gjin heule histoarje-ynformaasje wer te jaan, om't it kin liede ta prestaasjes of problemen mei ûnthâld.
Streepkaarten moatte wurde útfierd fanút Haadformulier troch te drukken op ien fjild yn 'e rige "Bar".
It toant sorteare balken normalisearre oant maksimale wearde, werjûn fan heechste nei leechste folchoarder.
It is nuttich foar snelle kontrôle fan ekstreme resultaten en wat aksjes nimme.
Mûs oer barren sil ekstra ynformaasje werjaan foar it apparaat.
Histoaryske charts kinne wurde inisjearre fanút de MainForm as jo op selekteare kolom drukke yn 'e rige "Histoarje" (foar ien fjild).
Foar meardere fjilden yn 'e "Histoarje" moatte winske fjilden wurde kontroleare en de link "Histoarje" moat wurde yndrukt yn' e kolom "Run".
Histoaryske resultaten binne beheind ta lêste 24 oeren + folgjende 24 oeren (foar úteinlike ferfrissende charts), doe't gjin limiten waarden ynsteld.
Histoaryske kaartsjes as iepene fanút haadlink fereaskje inisjalisaasje as oare resultaten, as se iepen binne fan kepling sûnder foarkarparameters.
Meardere fjilden kinne wurde selekteare om ferskate items werjaan. It kin ek ynsteld wurde yn Field Filter Form.
Druk op alle fereaske karfakje foar werjûn fjilden
Druk op karfakje "Sichtbere fjilden" om fjildenfoarm te ferbergjen
Druk op Utfiere knop om DB-fraach út te fieren en de tabel werjaan
Items beskreaun fan boppe en fan links nei rjochts (op 'e skermôfbylding).
IMEIfjild befettet unike apparaat-ID as Unike alias foar in apparaat. Mei * (asterix) wearde lit it tabel sjen fan meast resinte wearden dy't gjin sin hat.
IMEI ynstelle op elke oare wearde sil histoaryske gegevens fan selekteare apparaat sjen litte.
Klausule foar it beheinen fan gegevensresultaten MySQL / MariaDB ekstra oanfraachstring {WHERE diel}.
Dizze klausel wurdt rekken holden foar it oanmeitsjen fan folsleine QUERY-tekenrige foar databaseresultaat. It kin gegevens, tiid en alle oare wearden beheine troch it tellen fan resultaten te beheinen. Oarspronklike nammen fan tafelfjilden (net alias) moatte wurde brûkt yn dit fjild en jildige SQL-syntaksis. Bv.
gps_speed_km> 10 // snelheid is mear dan 10 km / o
ain5> 3 // ain5 is grutter dan 3 (hâlden fan 2.5um dieltsjes telt - smognivo)
gps_speed_km> 10 en ain6> 5 // snelheid is mear dan 10 km / oere en ain6 is grutter dan 5 (hold 10um dieltsjes telle - smog nivo)
Nei it drukken op dizze knop moat teminsten ien fjild mei de hân wurde selekteare om histoaryske resultaten te werjaan.
Druk op dizze knop is ferplicht om alle ynstellings, parameters te feroarjen (útsein it werjaan fan fjilden as querypaniel). Tabel wurdt fanôf it begjin opnij laden mei nije presets.
Dit karfakje wurdt brûkt om selektor fan te werjaan fjilden te sjen / ferbergjen.
Mûsoanwizer werjaan wearden fan mjittingen en datum / tiid.
Funksje / WWW-blêder | Chrome 72 | FireFox 65 | Râne | Opera 58 |
Kaarten | + | + | + | + |
Histoarysk | + | + (*) | + | + |
Bars | + | + | + | + |
Ljeppers | + | + | + | + |
* - Firefox stipet gjin datum / tiidkiezer (tekstfjild moat mei de hân bewurke wurde mei de juste opmaak fan datumtiid).
Internet Explorer wurdt net stipe (gebrûk Râne ynstee)
Oare webbrowsers waarden net hifke.
Websiden binne basearre op algemien sjabloanbestân op "sjabloanen" map "* .template".
Dêrneist befettet elk paginatype:
"* .head" bestân dat koptekst fan 'e pagina opslaat (keppelings, ymporteare CSS, JavaScript Bestannen, ensfh. )
"* .foot" bestannen dy't de foettekst fan 'e pagina bewarret (keppelings, ensfh. )
Tema foar fisualisaasje kin feroare wurde neffens foarkarren fan brûkers troch CSS-bestannen te kopiearjen en te feroarjen. CSS-bestannen lizze yn "sjabloanen / css" triemtafel. Ferskillende websidesema's kinne wurde brûkt om optimalisearre te meitsjen foar bg. printsje, SmartPhones, PAD's sjabloanen.
Table werjeften - hawwe selekteare fjild foar it kiezen fan CSS-bestân foar folsleine modifikaasje fan tema (opslein yn "sjabloanen / css / ljeppers" map).
Map views - algemien tema wurdt selekteare troch "map" typ kombinaasjefak. Derneist is d'r in standert CSS-bestân "sjabloanen / css / map.css" dy't wat ekstra funksjonaliteit befettet lykas resultaten ferbergje / kleurje basearre op har wearden. De rest fan dit CSS-bestân is praktysk beheind ta fraach- en fjildfoarmen.
Measte @City Platform PHP-bestannen foar fisualisaasje akseptearje cssparameter mei wearde fan bestânsnamme foar it Tema (sûnder tafoeging). Bestân moat yn 'e map "sjabloanen / css" sitte en de namme is haadlettergefoelich.
Guon eleminten fan Theme-werjefte binne direkt yn it JavaScript bestân yn "sjabloan / js" triemtafel.
Foarnaamste @Stêd skrift"@ City.js" leit yn boppeste map. D'r is gjin feroaringsmooglikheid yn lokaasje, lykwols kin skript wurde kopieare nei "sjabloanen / js" map en dêr oanpast. Gebrûk fan yndividueel skript fereasket alle koptekstbestannen bywurkje.
Guon unike sensoren kinne spesjale berekkeningsfunksjes nedich wêze.
D'r is gjin mooglikheid om meardere farianten fan te aktualisearjen en te ûnderhâlden @City Server Software, Front-end PHP ynterface, wat in soad problemen, ferzjes, flaters soene feroarsaakje.
De bêste en maklikste manier om it te berikken is it bywurkjen fan JavaScript "overlay" bestannen foar in goede werjefte fan de wearde / beskriuwing.
Oarspronklike JS-skripts binne iepen tekstbestân en kinne wurde oannaam nei klantferlet. Lykas sein yn it foarige haadstik moatte se wurde kopieare "sjabloanen / js" map wêr't klant tagongsrjochten hawwe foar wiziging.
Technysk aspekt oer programmearring fan @Stêd systeem is gjin ûnderwerp fan dit dokumint, lykwols kin webûntwikkelder mei basiskennis fan HTML en JS Front-endapplikaasje oanpasse oan yndividuele behoeften fan klanten.
@City Database mei in namme "IoT" of "* IoT" is ferdield yn tabellen (wêr't asterix foarheaksel is, ôfhinklik fan hosting-server - as nedich). DataBase kin wurde waarnommen yn PHPAdmin (webapplikaasje) by link http: //% IP% / phpmyadmin
Tabellen ynsteld foar elk apparaat (wêr * {asterix} is IMEI-adres - unike ID):
"* _t" - tokens foar autorisaasje fan hjoeddeistige brûkers (net brûkt foar wolken foar ien klant)
"* _c" - kommando's (Eveneminten) wachtrige - te ferstjoeren nei it apparaat
"*" - alle dekodearre statusresultaten.
Oare tabellen:
"ithings_" tabel - befettet dekodearre aktuele status fan alle apparaten (it wurdt kopieare by update ien fan "*" tafels). Struktuer fan ithings_ tafel is hast itselde oan 'e "*" tafels. "ithings_" hawwe ekstra fjilden foar postadres en beskriuwingen.
tabel "brûkers" is beheind en moat oanpast wurde.
"idx" - yndeks
"tm" - automatyske tiidstempel
"dt" - unix tiidstempel
"imei" - unyk apparaatadres
"rssi" - RSSI-sinjaalnivo
"rsrp" - RSRP-sinjaal
"barrens" - wachtsjende barrens wurde ferstjoerd nei controller
"out1" .. "out16" - dekodearre útgongsstatus
"in1" .. "in16" - dekodearre yngongen status
"ain1" .. "ain8" - dekodearre ADC-wearden (RAW)
"sens1" .. "sens8" - konverteare sensorwearden (hinget ôf fan apperaattype)
"dimm1" .. "dimm8" - dekodearre dimmerswearden (hinget ôf fan apperaattype)
"int1" .. "int6" - dekodearre tellers wearden (hinget ôf fan apperaattype)
"text1" .. "text6" - dekodearre tekstwearden (hinget ôf fan apperaattype)
"kreaasje" - datum / tiid foar oanmeitsjen fan apparaat
"lêst" - lêste datum / tiid
"brûker" - takomstich gebrûk
"trochjaan" - takomstich gebrûk
"sn" - GSM-serienr
"status" - hjoeddeistige controllerstatus net dekodearre yn hex formaat
"hash_code" - takomstich gebrûk
"addr" - koart apparaatadres
"fwnr" - firmware nr
"útskeakele" - útskeakele apparaat (net útfierd)
"gsm_nr" - CIoT gsm-nûmer
"ferkeaper" - ferkeaperkoade (foar franchise / koproduksje)
"tiidsône" - Offset fan tiidsône
"dst" - Brûk deistige besparringsynstellingen
"gps_lat" - GPS Lingtegraad
"gps_long" - GPS-lingtegraad
"gps_hdop" - GPS HDOP
"gps_alt" - GPS-hichte
"gps_fix" - GPS-befestiging (moat 3 wêze - foar jildige resultaten)
"gps_cog" - GPS Cog
"gps_speed_km" - GPS-snelheid yn [km / h]
"gps_sat" - GPS-satelliten fûn
"kontinint", "lân", "regio", "subregio", "subsubregio", "stêd", "wyk", "strjitte", "street_nr", "item_nr" - Klantadres en beskriuwingsfjilden (!!!! Net beskikber foar "*" histoaryske tabellen)
"log" - loggegevens
De fjildenammen binne wichtich foar it meitsjen fan SQL-fragen foar it ferheegjen fan sykfunksjonaliteit, om't orizjinele namme moat wurde brûkt yn SQL-ferklearring.
Dizze tabel is evenemint / kommando-wachtrige foar elk apparaat en hawwe de folgjende struktuer:
"kommando" - kommando om te ferstjoeren of al ferstjoerd te wurden nei de controller
"befestige" - befestigingsflagge as dizze al ferstjoerd en befestige is
"datum" - unix tiidsstempel fan barren
"bywurke" - automatyske update flagge (tiidstempel datum / tiid)
Gegevens kinne tagonklik wêze sûnder Front-end webapplikaasje. @City-systeem befettet skript mei funksjes op middelnivo. Resultaten wurde weromjûn yn JSON-formaat.
http: //%IP%/IoT/que.php? func = devsjson
Query jout hiel werom "_ithings" tabel (hjoeddeistige status fan alle apparaten) yn JSON-formaat:
[{ "lân":"", "stêd":"", "kontinint":"", "lân":"", "regio":"", "subregio":"", "subsubregio":"", "stêd":"", "distrikt":"", "strjitte":"", "street_nr":"", "item_nr":"", "gps_lat":"0000.0000N", "gps_long":"00000.0000E", "tm":"2019-02-10 12:56:23", "kreaasje":"2019-02-09 18:12:38", "lêst":"0000-00-00 00:00:00", "barrens":"", "brûker":"", "pas":"", "imei":"351580051067110", "sn":"", "status":"73000200000f360033026800240000002c002c002dffffffffffffff5b63000001c1000001c2000000000000000009250a4f0a760a7a0a750a780a7e0000031d032205fc34029b025c025600460eb305320000", "hash_code":"", "addr":"", "fwnr":"", "ynvalide":"", "gsm_nr":"", "ferkeaper":"", "Tiidsône":"", "dst":"", "rssi":"91", "rsrp":"99", "gps_lat":"0000.0000N", "gps_long":"00000.0000E", "gps_hdop":"", "gps_alt":"", "gps_fix":"4", "gps_cog":"", "gps_speed_km":"", "gps_sat":"", "barrens":"", "out1":"0", "out2":"0", "out3":"0", "out4":"0", "out5":"0", "out6":"0", "out7":"0", "out8":"0", "out9":"0", "out10":"1", "out11":"0", "out12":"0", "out13":"0", "out14":"0", "out15":"0", "out16":"0", "in1":"0", "in2":"0", "in3":"0", "in4":"0", "in5":"0", "in6":"0", "in7":"0", "in8":"0", "in9":"0", "in10":"0", "in11":"0", "in12":"0", "in13":"0", "in14":"0", "in15":"0", "in16":"0", "ain1":"3894", "ain2":"51", "ain3":"616", "ain4":"36", "ain5":"0", "ain6":"44", "ain7":"44", "ain8":"45", "sens1":"0", "sens2":"0", "sens3":"0", "sens4":"0", "sens5":"0", "sens6":"0", "sens7":"0", "sens8":"0", "dimm1":"255", "dimm2":"255", "dimm3":"255", "dimm4":"255", "dimm5":"255", "dimm6":"255", "dimm7":"255", "dimm8":"255", "int1":"-16776767", "int2":"450", "int3":"", "int4":"", "int5":"", "int6":"0", "text1":"", "text2":"", "text3":"", "text4":"", "text5":"", "text6":"" }]
Freegje histoaryske gegevens fan ien apparaat troch IMEI nr:
http: //%IP%/IoT/que.php? func = imeijson & imei = 356345080018095
Om't heule tabel miljoenen rigen kin befetsje, moat it wurde beheind mei WHERE-klausule om server net op te hingjen.
Oanfoljende parameters url-parameters:
func - imeijson
imei - IMEI fan apparaat
fjild - fjilden dy't moatte wurde werjûn yn 'e resultaten (list mei komma's skieden)
min - minimale wearde foar it earste fjild út 'e list
max - maksimale wearde foar it earste fjild út 'e list
soft - fjild foar soarte
tm - fjild wurdt automatysk tafoege oan 'e resultaten.
where - wêr klausel om gegevens te beheinen
Foarbyld:
Wy wolle it folgjende resultaat krije
foar apparaat mei imei=356345080018095
fjilden sjen litte: ain5, ain6, gps_lat, gps_long
en beheine ain5 binnen berik ( 1, 10000 ) - moat it earste fjild yn 'e list wêze
en gps jildige gegevens hawwe (gps_fix = 3)
en datum / tiid (tm) from2019-02-14 23:00:19 to 2019-02-15 00:00:00
Konstruearre URL-tekenrige:
http: //%IP%/IoT/que.php? func =imeijson& imei =356345080018095& fjild =ain5, ain6, gps_lat, gps_long& min =1& max =1000& wêr =gps_fix = 3 en tm> "14-02-2019 23:00:19" en tm <"2019-02-15 00:00:00"
Query-resultaten:
[{ "ain5":"66","ain6":"68","gps_lat":"5202.7326N","gps_long":"02115.8073E","tm":"2019-02-14 23:04:31" }, { "ain5":"67","ain6":"76","gps_lat":"5202.7328N","gps_long":"02115.8075E","tm":"2019-02-14 23:05:42" }, { "ain5":"63","ain6":"77","gps_lat":"5202.7328N","gps_long":"02115.8074E","tm":"2019-02-14 23:06:05" }, { "ain5":"58","ain6":"77","gps_lat":"5202.7328N","gps_long":"02115.8075E","tm":"2019-02-14 23:06:32" }, { "ain5":"58","ain6":"68","gps_lat":"5202.7328N","gps_long":"02115.8076E","tm":"2019-02-14 23:06:55" }]
Dizze funksje jout beheinde gegevens werom út 'e tabel "_ithings"
http: //%IP%/IoT/que.php? func = fieldjson & fjild = ain5 & min = 13 & max = 5000
Parameters:
func - fieldjson
fjild - fjild te werjaan yn 'e resultaten - imei en tm wurde automatysk tafoege
min - minimale wearde foar it fjild
max - maksimale wearde foar it fjild
Foar boppesteande fraachstring komt it werom resultaten fan ain5, imei, tm fjilden:
as ain5 is yn berik (13.5000)
Query-resultaten:
[{"imei":"353080090069142", "tm":"2019-03-14 11:51:01", "ain5":"14" },
{"imei":"356345080018095", "tm":"2019-02-20 09:13:04", "ain5":"115" },
{"imei":"karczew", "tm":"2019-03-07 13:08:22", "ain5":"103" }]