NETIO professionelle smarte stikkontakter til både virksomheder og nørderne
- Wi-Fi-stik som ikke alle kommer fra Kina
- Appellerer til udviklere, takket være en simpel JSON API (og de andre API'er)
- Producenten arbejder på en mobil app og cloud-baseret kontrol af output
Vi har for nylig testet i praksis, hvad en pass-through Wi-Fi socket fra den kinesiske Aliexpress kan gøre-naturligvis bærer risikoen for, at det er temmelig svært at klage over et nedbrændte hus til en kinesisk e-shop.
Det var faktisk den hyppigste argument mod at købe denne form for billige legetøj. De arbejder, kan nemt forbindes til Google og Amazon Voice assistenter, entusiaster kan helt omprogrammere dem med bare en lille indsats, men det er stadig billig kinesisk produktion med alle de tilhørende ulemper.
Tjekkiske professionelle Wi-Fi Sockets af NETIO
I dag vil vi se på den modsatte ende af spektret, hvor vi for eksempel finder de professionelle Wi-Fi-stikkontakter fra NETIO, der er fremstillet i Tjekkiet, en EU-medlemsstat. Disse stikkontakter er i overensstemmelse med alle relevante sikkerhedsstandarder. Med deres API (Application Programming Interface) er de beregnet til at blive integreret med et eksisterende system, såsom et smart Home-eller serverrum-udstyr.
I den øverste kategori, NETIO tilbyder en komplet PDU (strømforsyning enhed), der kan automatisk tænde og slukke op til fire 230V apparater og kommunikere (afhængigt af modellen) via Wi-Fi, Ethernet eller seriel linje ved hjælp af protokoller såsom Modbus, SNMP, MQTT og Mere. Nogle modeller kan også meget præcist måle elektriske parametre.
PowerCable-familie
NETIO-porteføljen indeholder også billigere PowerCable-enheder, der ligner et kort strøm forlængerkabel, og som kan skifte et 230V/16A-apparat. De styres enten via Wi-Fi (802.11 n ved 2,4 GHz) eller den tjekkisk-Made 868MHz Iqrf - protokol.
Slutkundernes pris på sådanne stikkontakter er omkring 1100 KR + moms. Det betyder, at vi forlader verden af asiatisk legetøj helt, herunder pris-Wise, og vi vil have et nærmere kig på to enheder: powercable rest og powercable mqtt. I dag vil vi vise dig PowerCable resten, hvad du får for dine penge værd, og hvad gør produktet unikt.
Stikkontakt med forbrugs måler
Efter tilslutning til et lokalt netværk og erhvervelse af en IP-adresse, produktet giver en simpel web-interface, hvor stikket kan tændes og slukkes, og samtidig det umiddelbare energiforbrug er vist.
I realtid kan du se de umiddelbare værdier af den elektriske spænding (V), strøm (mA), strømtilførsel til det tilsluttede apparat (W), samlet energiforbrug (wh) samt netfrekvensen (Hz) og den sande effektfaktor.
Ud overhoved administratoren giver webgrænsefladen mulighed for at oprette nye brugere og tildele dem forskellige rettigheder. For eksempel kan de kun have adgang til målinger, eller de kan også styre kontakten.
Højere modeller kan også planlægge on/off-skift i tid og kan styres med en mobilapp. PowerCable-familien har endnu ikke en app. men det er allerede ved at blive udviklet og bør være klar om et par måneder.
Sockets med API til udviklere
Man kunne hævde, at den grundlæggende PowerCable model ikke kan faktisk gøre meget; Dette er imidlertid i overensstemmelse med det tilsigtede formål. I stedet for at sikre kompleks automatisering, som i dit hjem, tilbyder det kommunikations-API'EN. Derfor er det virkelig designet til at være forbundet til en eksisterende Smart Home system-det er ikke et smart hjem system bare af sig selv.
Det er også et godt legetøj til hardware entusiaster, der måske tøver med at introducere en ikke-betroet asiatisk enhed i deres hjemmenetværk, men ikke ønsker at stole på en proprietær producentens ansøgning, når deres smarte hjem er bygget f. eks på Fibaro, den samfund-baserede domoticz, eller andre systemer, der er åbne for tredjepartsenheder.
Hovedmålgruppen består imidlertid af større operationer, der ønsker at tackle automatisering på egen hånd med en brugerdefineret løsning.
Styring af stikket ved hjælp af en webadresse
Som navnet antyder, tilbyder Power Cable REST en simpel HTTP REST API. Stikket kan tændes ved at få adgang til sin særlige webadresse. På samme måde kan forbrugsdata fås i det populære JSON-format eller i den noget aldrende XML.
Først, lad os prøve den enkleste mulige API og skifte stikket ved at få adgang til sin webadresse. For at gøre dette, er det nødvendigt at aktivere URL API og angive en adgangskode i enhedens indstillinger.
Vær forsigtig, adgangskoden er bestået blandt andre parametre i webadressen og socket enheden kører en grundlæggende ukrypteret HTTP-server, så adgangskoden rejser gennem netværket ukrypteret. Det er bare en grundlæggende beskyttelse, for eksempel for at forhindre nogen i at skifte stikket ved en fejltagelse.
Min Smart socket enhed har en URL af pc-rest.netio-products.com og lytter på port 22888 og min adgangskode er "Mops". Nu kan jeg skifte stikket ved at få adgang til denne adresse:
http://pc-rest.netio-products.com:22888/netio.cgi?pass=mops&output1=1
Som vi kan se, foruden adgangskoden er der en anden parameter-OUTPUT1-der indikerer output til at skifte. Da PowerCable kun har én udgang, er dens nummer 1. Parameteren har værdien 1, hvilket betyder at tænde for stikket.
For at slukke for stikket, kan jeg blot få adgang til:
http://pc-rest.netio-products.com:22888/netio.cgi?pass=mops&output1 =0
Den grundlæggende API understøtter også en kommando til at skifte den aktuelle tilstand:
http://pc-rest.netio-products.com:22888/netio.cgi?pass=mops&output1 =4
Endelig er der to specielle kommandoer, der er svære at finde andre steder. Stikkontakten kan tænde eller slukke i et kort tidsrum og derefter vende tilbage til den forrige tilstand. På denne måde, det skaber en Power Pulse med en konfigurerbar længde i millisekunder.
Hvad er det godt for? En kort slukning kan bruges til kold genstart af en computer, der er holdt op med at svare. Det er så simpelt som at få adgang til:
http://pc-rest.netio-products.com:22888/netio.cgi?pass=mops&output1 =2
I modsat fald – stikket er slukket, men du skal tænde den i en kort tid og derefter slukke den igen, alt dette i et enkelt trin-WEBADRESSEN til adgang er:
http://pc-rest.netio-products.com:22888/netio.cgi?pass=mops&output1 =3
Dette er nyttigt for eksempel til at lyde et advarsels horn i 10 sekunder i tilfælde af en alarm og derefter slukke den igen. Systemet kan blot påberåbe sig en adresse, der ligner den ovenfor. Et andet eksempel-et smart system kan få adgang til denne adresse periodisk, såsom en gang i timen, til at tænde den tilsluttede apparat, som måler nogle data, sender dem et eller andet sted, og derefter bliver slukket igen.
Af den måde, hyppige Skift bør ikke understrege 230V kredsløb takket være den ZCS (Zero Current switching) teknologi: apparatets strøm er tilsluttet eller afbrudt, når den vekselstrøm bølgeform krydser nul-niveau.
JSON API
Ud over den enkleste URL-API er der også JSON API og XML API. Disse API'er bruger HTTP POST i stedet for HTTP GET. Det betyder, at kommandoerne sendes i brødteksten i anmodningen og ikke i URL-adressen. I denne tilstand kommunikerer Smart socket også alt, hvad den ved om sin tilstand.
Det er også vigtigt at bemærke, at PowerCable kun kan "tale" én API ad gangen. Så når du aktiverer JSON-API'EN, deaktiveres den simple URL-API automatisk og omvendt.
Hvad er JSON?
JSON historisk står for JavaScript objekt notation; men i dag er det en de-facto standard for videregivelse af data mellem forskellige teknologier. Det er faktisk ikke bundet til JavaScript, og det er gradvist at erstatte XML.
Notationen bruger krøllede parenteser til nøgle: værdipar og firkantede parenteser til matricer. Dette er et eksempel på et objekt, der indeholder, lad os sige, nogle personlige oplysninger om en person:
{
"navn":
"John",
"sex":
mand,
"vægt":
83
}
I modsætning til XML, der plejede at være meget populær, er notationen mere kondenseret, fordi der ikke er nogen start-og slutkoder, f. eks. <name> John </name>. Men den største fordel er, at en JSON-parser nu er inkluderet som standard i stort set alle moderne programmeringssprog (Javascript, Python osv.) og eksterne biblioteker er tilgængelige for de andre-herunder biblioteker for Tiny Arduino og andre mikrocontrollere, hvor hver byte af RAM tæller.
JSON data om stikkontakten og dens forbrug
Efter denne korte Resumé (undskyldninger til erfarne kodere), lad os gå tilbage til JSON API på powercable Wi-Fi socket. I dette tilfælde bruges JSON til at overføre data om elektricitetsforbrug og andre oplysninger.
Altså, jeg aktivere JSON istedet for den URL API og pege mig gennemser hen til http://PC-rest.NetIO-Products.com:22888/NetIO.JSON. Først skal jeg autentificere mig selv med et Brugernavn og en adgangskode, og derefter den komplette JSON data om socket vises:
{
"Agent": {
"Model":
"101x",
"DeviceName":
"PC-rest-onlinedemo",
"Mac":
"24: A4:2c: 38: D3:8Q",
"Jsonver":
"2,0",
"Tid":
"2019-10-12t15:18:41 + 01:00",
"Oppetid":
10108,
"Version":
"2.2.1",
"OEMID":
"5",
"VendorID":
"0",
"Numoutputs":
1
},
"Globalmeasure": {
"Spænding":
236,
"Totalload":
34,
"Totalenergy":
970,
"Overallpowerfactor":
0,96,
"Hyppighed":
50,
"Energystart":
"2019-05-03t11:11:10 + 01:00"
},
"Udgange": [
{
"ID":
1,
"Navn":
"Power OUTPUT1",
"Stat":
1,
"Handling":
6,
"Forsinkelse":
2000,
"Aktuel":
149,
"Powerfactor":
0,96,
"Energi":
970,
"Belastning":
34
}
]
}
Da alle herunder komplette begyndere kan læse JSON nu, lad os begrænse os til et kort resumé.
I begyndelsen er der nogle grundlæggende oplysninger om stikket. Men det, der interesserer os mest, er global measure-objektet og output-arrayet. Afsnittet GlobalMeasure viser de samlede forbrugsstatistikker. men da vores PowerCable kun har én tændt strømudgang, gælder dataene også for outputtet. Dette output er også det eneste punkt i output feltet, hvor vi også kan se den aktuelle tilstand (tilstand) og den øjeblikkelige aktuelle (nuværende) i milliampere.
Så kan vi se, at PowerCable kontrollere vores fan i øjeblikket læser 236V ved 50Hz på sin udgang. En strøm på 149mA strømmer gennem kredsløbet, og ventilatoren forbruger omkring 34W. Siden den sidste nulstilling har soklen leveret 970Wh energi, og som tilstands variablen viser, er den nu tændt.
Denne maskinlæsbare data kan læses af ethvert automatiseret system, der kan få adgang til denne webadresse, såsom en app, der kører på en Raspberry pi i dit hjem, og yderligere behandlet-fx lagret i en database, plottet i en time-Series graf, eller bruges til at beregne de daglige omkostninger ved at køre ventilatoren.
HTTP-basisgodkendelse
Som allerede nævnt, når JSON API-adressen tilgås med en webbrowser, vises en login-dialog. Loginoplysningerne konfigureres i enhedskonfigurationen for denne API.
Den webserver, som er indbygget i smart socket-enheden, bruger den primitive http-basis godkendelse. Så hvis vi ønsker at hente data fx ved at få adgang til adressen fra vores eget program, skal vi inkludere den tilsvarende header i HTTP-anmodningen. For eksempel:
Autorisation: grundlæggende d3JpdGU6ZGVtbw = =
Sekvensen af tegn i den tredje del er det Brugernavn: adgangskode par (herunder kolon) i base64 kodning. Webserveren afkoder den tilbage, og hvis legitimationsoplysningerne er korrekte, returneres JSON-data.
Lad os prøve det i praksis. Først, lad os bruge den tekst-baserede Curl klient, der er tilgængelig i dag som en del af enhver Linux-distribution, herunder Raspbian på Raspberry pi. En Windows-version er også tilgængelig.
Hentning af data ved hjælp af cURL og kommandolinjen
Curl selvfølgelig understøtter HTTP grundlæggende godkendelse; det samme JSON som i browseren eksempel kan hentes med denne kommando:
Curl-bruger administrator: Mops
http://
PC-rest.NetIO-Products.com:22888/NetIO. JSON
Bemærk den --User parameter efterfulgt af login: password par i kommandoen.
Hentning af data og lagring som CSV i Python
Lad os prøve det igen i et programmeringssprog. Måske har vi allerede en lille Raspberry pi Zero W i vores lokale netværk. Det koster ved siden af ingenting og kører den Linux-baserede Raspbian med Python. Så lad os skrive et script på dette sprog. Vi vil også bruge biblioteket anmodninger.
Den simple Python kode nedenfor forbinder til stikkontakten, downloads JSON data, parser det at få den umiddelbare spænding, strøm, strøm input og forbrug værdier, og gemmer alle disse værdier (adskilt med semikolon) på en ny linje i en. csv-fil. Denne fil kan senere åbnes f. eks i MS Excel.
import anmodninger
fra DateTime-
import dato
og klokkeslæt
http = anmodninger. Get
("http://PC-rest.NetIO-Products.com:22888/NetIO.JSON", auth
= ("Write", "demo"))
Hvis http. status_code
= =
200:
data = http. JSON()
my_voltage = data [
"globalmeasure"] [
"spænding"]
my_current = data [
"udgange"] [
0] [
"aktuel"]
my_load = data [
"udgange"] [
0] [
"Indlæs"]
my_consumption = data [
"udgange"] [
0] [
"energi"]
Print (
"spænding:" + Str (my_voltage) +
"V")
Udskriv (
"aktuel:" + Str (my_current) +
"Ma")
Udskriv (
"Indlæs:" + Str (my_load) +
"W")
Print (
"energiforbrug:" + Str (my_consumption) +
"wh")
med Open (
"data. csv",
"a")
som my_file:
my_filen. Write(DateTime. Today().
strftime(
"% h:%m:% S%d .% M .% Y") +
";" )
my_fil. Write(Str (my_voltage) +
";" )
my_fil. Write(Str (my_current) +
";" )
my_fil. Write(Str (my_load) +
";" )
my_fil. Write(Str (my_consumption) +
"\n")
Udskriv (
"gemt i data. csv")
Når scriptet kører, føjes der en ny linje til tekstfilen. Det kan se sådan ud:
15
: 39:45 12
. 10,2019; 237; 113; 40; 952
Alt, hvad der er behov for nu, er at køre en sådan kode periodisk for at få et løbende overblik over den tilsluttede apparatets tilstand og energiforbrug historie. Når belastningen er nul, slukkes apparatet formentlig. Når det er maksimalt, kører apparatet ved spidsbelastning.
Styring af stikket fra kommandolinjen
Hidtil har vi været i stand til at læse alle interessante data fra stikkontakten, men hvordan kan vi kontrollere det? Med JSON API Active kan vi ikke længere bruge den primitive webadresse-API. I stedet skal vi sende kommandoerne via HTTP POST, som fungerer som indsendelse af en webformular.
Lad os først prøve med den tekst-baserede cURL:
Curl-bruger administrator: Mops
-d
"{\" udgange \ ": [{\" id \ ": 1, \" handling \ ": 4}]}" http://PC-rest.NetIO-Products.com:22888/NetIO.JSON
Kommandoen ovenfor sender data til soklen i JSON-format inde i kroppen af en HTTP POST Request (-d parameter). Følgende struktur af værdier blev sendt:
{
"Udgange":
[
{
"ID":
1,
"Action":
4
}
]
}
Med dette instruerer vi PowerCable til at udføre action No. 4 med outputtet No. 1. Det kan lyde lidt kompliceret, men husk, at alle NetIO kasser har den samme API, og at de højere modeller har flere stikkontakter. Derfor er vi nødt til at identificere stikket, selv om den pågældende model kun har en.
De numeriske handlingskoder blev allerede forklaret sammen med URL-API'EN, så vi ved, at handling 4 betyder at skifte tilstand – stikkontakten tændes eller slukkes, afhængigt af om den var slukket eller tændt.
Styring af stikket fra Python
Lad os nu gøre det samme med Python og anmodningerne bibliotek. Vi vil skrive et script, der skifter socket tilstand og udskriver den.
Koden ser sådan ud:
import anmodninger
Importer JSON
make_me_switch = {
"Udgange":
[
{
"ID":
1,
"Action":
4
}
]
}
http = requests.post(
"http://PC-MODbus.NetIO-Products.com:22888",
auth = (
"admin",
"Mops"), data =JSON. dumps(make_me_switch))
Hvis http. status_code
= =
200:
data = http. JSON()
my_state = data [
"udgange"] [
0] [
"tilstand"]
Hvis my_state
= =
0:
Print (
"socket er slukket")
Elif my_state
= =
1:
Udskriv (
"socket er slået til")
Meddelelsen er igen meget enkel. I stedet for metoden GET kaldes POST-metoden i biblioteket anmodninger. Den almindelige tekst JSON-data, som vi ønsker at sende, er angivet som en parameter. Så snart Python-scriptet er startet, er stikket skiftet til den anden tilstand.
Programmør og integrationsvenlig sokkel
Power Cable REST Smart socket-enheden med dens universelle API er i sidste ende designet til at være let forbundet til dit eget smarte hjem, forretning eller Virksomhedssystem, uden at det er nødvendigt at blinke brugerdefineret firmware eller lignende besvær.
Som nævnt i indledningen, er producenten også arbejder på en mobil app til powercable, der vil gøre det muligt at styre stikket eksternt selv uden at have nogen smarte hjem system installeret.
Vi lovede også at se nærmere på PowerCable MQTT-modellen, der bruger den meget populære og komplekse mqtt - protokol til tingenes internet. Vi har endnu ikke dækket MQTT i vores portal, så vi vil holde PowerCable MQTT til et senere tidspunkt, efter at have dækket i detaljer, hvad der kan gøres med MQTT, og hvorfor er det så populært.
Svar
Svar
Vi bruger dit navn og kommentar til at vise offentligt på vores website. Din e-mail er for at sikre, at forfatteren af dette indlæg har mulighed for at komme i kontakt med dig Vi lover at passe på dine data og holde dem sikret.