Categories
Betraktelser & Berättelse Linux M2M programming Sensors Techstuff VSCP

Ny smart elmätare från Ellevio

An English version is here.

Så monterades den då den nya elmätaren. Tydligen skall 5.4 miljoner nya mätare ut innan 2025. Jodå, jag har samlat data från dess föregångare (som bara satt monterad här i två år) rätt länge. S0-puls var inte tillgänglig för vanligt folk men den blinkande IR dioden var det. Så effekt och energi har jag alltså loggat. Jodå, jag har en till mätare också, på mitt kontor. Läser S0 och IR där och kan på så sätt skilja på husets totala elförbrukning och kontorets elförbrukning.

Men den nya elmätaren lovade mer. Ett seriell interface för kunder. En HAN port. Japp, definitivt sådant som en sådan som jag går igång på. Några minuter efter att den var installerad var kundinterfacet aktiverat. Bara att gå in i på “mina sidor” och aktivera. Smidigt.

Tyvärr han jag inte gå vidare med att bygga den interface logik som krävs för att kunna läsa ut värden från interfacet då den dan. Fick (otåligt) hålla mig till dagen efter eftersom jag hade annat att göra. Men det var mycket enkelt. En transistor några motstånd och en USB till serie konverter är allt som behövs. Sen kunde en Raspberry Pi läsa informationen som mätaren skickar ut. Man skulle lika gärna kunnat använda en ESP32’a eller en ESP8266, Arduino, eller en pc såklart. Inget konstigt, dyrt eller avancerat.

Den nya mätaren ger ström och spänning och aktiv och reaktiv last på alla faser separat. Plus summerad energi. Ja både in och ut, om man nu är en sådan som har ett vindkraftverk eller solpaneler på tomten. Härligheter för den som gillar data. All data skickas ut var tionde sekund.

Så vad skickar mätaren?

Efter vad jag förstår heter protokollet “P1 Companion Standard” som är baserad på IEC 62056-21 Mode D. Energiföretagen har gett ut en Branschrekommendation för lokalt kundgränssnitt för elmätare som beskriver funktion och protokoll. Man kan gissa att Elleio inte är de enda som har det här kundinterfacet och protokollet.

Det seriella formatet är okrypterat med hastighet och format 115200,N,8,1. Lite standard. Sänds dock inverterat så det måste man ta hand om.

Kontakten på elmätaren är en RJ12 enligt nedan

Kundgränssnitt på elmätare

Mätaren skickar data på pin 5 när D_Rqst(RTS) är hög. Jag har testat anpassningskretsen nedan med både 5V och 3.3V och båda fungerar utmärkt.

Tittar man på hur gränssnittet på mätaren ser ut så förstår man att både 3.3V och 5V fungerar.

Kundgränssnitt på elmätare

Mätaren ger +5V, max 250mA ut på 5V.

En enkel krets är det enda som behövs för att anpassa det här till en USB TTL serieadapter som jag använt eller till de seriella kanalerna på en Raspberry Pi, Arduino eller annan enhet.

p1 serial interface

Välj 5V för VCC om rx skall anslutas till en 5V ingång (Arduino etc), annars välj 3.3V (ESP32/ESP8266/Raspberry Pi etc). I mitt fall så använder jag en USB till serie adapter som kan hantera TTL nivåer. Kom ihåg att koppla jorden också till den enhet som skall läsa data.

Om du använder en usb till serie adapter som jag och Raspberry Pi så kommer den att bli tillgänglig som /dev/ttyUSB0, /dev/ttyUSB1, etc när den kopplas in. Med programmet Minicom kan du titta på den råa datan. Installera Minicom med

sudo apt install minicom

Vill du kunna öppna porten utan “sudo” så adderar du bara den användare du kör under (oftast “pi”) till dialout i /dev/group

Använd editorn nano eller vim eller din egen favorit.

Kör nu Minicom med

minicom -b115200 -D/dev/ttyUSB0

Addera sudo om du inte gjort ändringen i /dev/group.

Switcharna talar väl för sig själv. Men för säkerhets skull tar vi dom. -b sätter baudraten. -D anger den port som du vill kommunicera på. Du ändrar såklart till den port du använder. Om allt är som det skall skrivs följande ut på skärmen var tionde sekund

I det länkade dokumentet ovan finns en bilaga 3 som talar om vad respektive rad är för typ av data. Enkelt att “parsa”. Man har tänkt till.

För att avsluta Minicom skriver du

ctrl-A Z X 

och väljer “yes” när du får frågan “Leave Minicom?” Bäst att skriva det eftersom sekvensen inte är den första man kommer på.

Mer än så är det inte. Nu är det bara att skriva ett program som läser de här värdena och listar dem i diagram och tabeller. node-red är en utmärkt verktyg att använda för det här. node-red kan läsa från en seriell port direkt eller också kan man skriva en snutt som denna i Python

import serial

sio = serial.Serial(
port='/dev/ttyUSB1',\
baudrate=115200,\
parity=serial.PARITY_NONE,\
stopbits=serial.STOPBITS_ONE,\
bytesize=serial.EIGHTBITS,\
timeout=12)

print("connected to: " + sio.portstr)
count=1

while True:
line = sio.readline().decode('ascii')
if (-1 != line.find("1-0:31.7.0")):
print("[" + line + "]")
print("Fas L1:"+line[11:-5]+ " " + line[-4])
print(float(line[11:-5]))

Lämpligen skickar man sen data till en MQTT broker eller liknande istället för att skriva ut den. Lite roligt kodande för en kväll helt enkelt.

Jag har knappat ihop projektet vscp-python-p1-power-meter som skickar sensorvärden till valfri MQTT broker. Gillar du inte VSCP så kan koden enkelt anpassas för andra format (det finns till och men en konfigurering för VSCP hatare ;-)). Jag tror att koden är ganska enkel att förstå. Konfigurering sker i filen config.ini och du har dokumentation på kodsidan. Nedan en skärmdump från MQTT explorer som visar MQTT VSCP data för spänning, fas 1 i realtid

Och strömmen för samma fas

Notera diagrammet nere till höger. En smidig finess i MQTT explorer för att snabbt visualisera data.

Såhär kan set se ut när data presenteras i node-red

Men det är mycket enkelt att göra en egen websida för att presentera data om man först sänder den till en MQTT broker. Websockets är din vän där. Skickar du VSCP events över det interfacet istället för någon annan slumpvis data så har du en lösning som både skalar och är återanvändbar på alla nivåer. Återkommer kanske senare med ett exempel som visar hur det där går till.

Ja och såhär någonting ser det ut när allt rullar.

Demo i realtid finns här

Drivare till VSCP daemon finns här.

Categories
Home Automation Internet of Things (IoT) M2M

Electrolux: Användarnyttan styr uppkopplingen – Elektroniktidningen

Luftkonditioneringar, ugnar, tvättmaskiner och torktumlare är några produkter som vitvarujätten Electrolux kopplat upp till nätet. Inte för att det är möjligt, utan för att det är meningsfullt.

Source: Electrolux: Användarnyttan styr uppkopplingen – Elektroniktidningen

Categories
Internet of Things (IoT) M2M VSCP

Tio spänn

Säljs för en tia. En BLE keyfinder. Batteri ingår. Använd som keyfinder (få den att pipa i app.) eller få app att pipa om den kommer utanför område. Ja alla fattar.

Men…

Det intressanta är att man snabbt kan göra annat. Bara scanna av

så vet man hut man hanterar den. Så därefter kan man ha den som en beacon, läsa av den där knappen, få den att pipa. Enkelt gjort med en Raspberry Pi t.ex. och några minuters kodande. Så

  • Larm när knappen trycks in.
  • Larm där den försvinner utanför omådet man vill att den skall finnas på.
  • Tänd lyset när den kommer in i omåpdet man ställt in.
  • ja och en jäkla massa andra saker…

Alltså tio spänn… med batteri…

Categories
Betraktelser & Berättelse Elektronik Home Automation Internet of Things (IoT) M2M Open Source Development programming

Kan detta vara en väg framåt för fri programvara?

http://etn.se/index.php/64150?via=n&knapp=lasmer

Skall bli spännande att se hur det här utvecklar sig framöver.  Hoppas Richard får en saftig lön.

Categories
Internet of Things (IoT) M2M

Iot-system för jordbruket tar plats i Ericssons inkubator

https://www.nyteknik.se/automation/iot-system-for-jordbruket-tar-plats-i-ericssons-inkubator-6879247?source=carma&utm_custom[cm]=315344646,33270&utm_campaign=mail4#conversion-122831618

Categories
Internet of Things (IoT) Linux M2M Open Source Development VSCP

androidthings

Inte för att jag har tid, men så dimper det ner ett paket från San Francisco och gratis är ju alltid gott och…  Får nog ta mig lite tid nästa vecka helt enkelt för att testa det här.

Categories
Betraktelser & Berättelse M2M VSCP

Städdag

Städdag idag. Ja och så är jag lite poorly sådär. Kanske är det bara ålder som gör sig påmind. Kanske är det influensa. Kanske är det en uttröttad jävel bara. Men städar gör jag. Inte kontor. Men lägenhet. Det går hyfsat. Kanske för att gårdagskvällen blev soffan framför tv’n. Kanske inte. Snorar vidare.

Men kommer igång med låtsasjobb. nä, det gör jag inte. Sitter mest. Lyssnar på IoT  POD. Den stora behållningen är faktiskt en av sponsorernas inslag, Rejlers. Vinner solklart första pris i nämnandet av mest floskler. Definitivt. Har aldrig tidigare i mitt liv hört ett sådant enastående ordbajseri. Och då har jag ändå lyssnat på en del annat i mitt liv. Den gyllene ordbasjkorven är deras. Definitivt. Vinsten kommer att bli svår att överträffa.

För övrigt är det väl inte så mycket att lyssna på heller. Egentligen. Men går att lyssna på. Upplever det som proffsigt såklart. Nope, VSCP, lär väl aldrig nämnas där. “IoT protokollet som fanns före IoT”. Om just det, som ju är sant, är en bra sak eller en dålig sak vet jag nu inte. Svärfar och K’s brorsa flinade lite åt det där. Själv gillade jag det.

Igår kändes det som “fan jag skiter i VSCP”. Det är inte ofta som det händer. Att den känslan kommer över mig. Men så känns det inte idag. Konstigt vad en natts sömn kan göra. Men kanske borde jag skriva in mig på ett behandlingshem och bli kvitt mitt VSCP beroende? Om det finns några sådana behandlingshem. Gör det det?

Men vad är det då som får mig att hänga kvar. Jo det har med det där gemensamma formatet att göra, japp och en gemensamma kommunikationen. Ja, hela IoT världen gapar såklart. Va då!? Sen fortsätter man att göra en lösning för x1, en lösning för x1, en annan lösning för x3, en till för y3, en för version åtta va z1 också såklart, en för a3, en för google1234243865t73800943775093884990095883009, an för UI989, och två för Å45, en internationell som hete AA45 och en Svensk/Finsk för Å45 ja och sådär hela vägen in i himlen.

Jo jo jo jo “MQTT är en IoT server” – Nog hör man väl det till leda. Ja precis som en webserver är en internetserver då. Så långt. Men tänk nu om ingen använt HTML som sidbeskrivning i det som ramlar ut från webservrarna. Att alla kommit upp med sin egen version av ett sidbeskrivningsspråk. Den ena dummare än den andra. Hade värdet varit detsamma för webservrar som det de facto är idag? Ja i läsrana hade man såklart fått gjort en lösning för x1, en lösning för x1, en annan lösning för x3, en till för y3, en för version åtta va z1 också såklart, en för a3, en för google1234243865t73800943775093884990095883009, an för UI989, och två för Å45, en internationell som hete AA45 och en Svensk/Finsk för Å45 ja och sådär hela vägen in i himlen. Känns det igen? Nehej. Fortsätt då…

Allt det här handlar om att uppkopplade enheter pratar med varandra. MQTT är en transportlösning, en serverlösning, en bra sådan. Men en IOT server? Knappast. Tillsammans med något annat kanske. Men det är det där “något annat” som är mest intressant. Det är därför VSCP jobbar med just med det. Var är alla andra?

Men är då inte VSCP bara en till sån där “egen lösning”. Jo så kan man se det såklart. Men alla fall en lösning som gör ett försök att standardisera hur t.ex. ett mätvärde skickas, eller en påslag av en apparat, ja och gör det på ett sådant sätt att det fungerar på en liten skitenhet utan minne men också på en stor jävla enhet men minne så att den kan drunkna i minne. NEJ VSCP ÄR INTE ETT HEMAUTOMATIONSPROTOKOLL. Men inte ett IoT protokoll heller. VSCP är ett m2m protokoll. Ett språk som maskiner kan använda för att prata med varandra.

Titta på den här

Den visar hur VSCP beskriver en given “hårdvara”. Japp, en given hårdvara. Det kan vara en TV, ett kylskåp, en bil, en lampa, en pump, eller vad tusan som helst. Allt kan beskrivas såhär. Japp Allt. “Hårdvara” kan lika väl vara en annan “mjukvara” eller ett fenomen. “Vad som helst” kan beskrivas såhär.

Att beskriva “vad som helst” är såklart inget problem. Man bara beskriver “vad som helst” på något sätt man kommer på att beskriva “vad som helst” på. Så sätter du 999 personer på uppgiften så kommer det att bli 999 olika sätt att beskriva detta “vad som helst” på. Men problemet är egentligen inte att det blir 999 olika sätt som vad som helst beskrivs på. Problemet är att “det” som skall jobba mot vad som helst antingen måste välja att jobba mot “vad som helst” på ett av 999 sätt eller lära sig att jobba mot “vad som helst” på 999 olika sätt. Jobbigt. Liksom.

Så om man kom överens om en abstraktion av “vad som helst” ja då skulle man kunna låtsas att allt omkring en ser ut så. Ja man skulle till och med kunna använda den där abstraktionen på någon av de där 999 sättet om nu någon redan lagt ned jobbet och inte ville kasta bort det.

Fast det är klart. den där abstraktionen borde fungera för hög och för låg. Alltså måste den vara sjuhelvetes enkelt. Annars blir det jobbigt för de som kräver “enkelt”. Men samtidigt måste den vara lite avancerad för de där mer avancerade sakerna. Det finns mycket krångligt där ute som kan betraktas som vad som helst.

VSCP löser detta på följande sätt.

  • Allt kan beskrivas av en samling 8-bitars register.
  • Vill man veta vad som finns i ett register behöver man läsa det.
  • Vill man ändra innehållet i ett register så behöver man skriva i det.

Så VSCP kan beskriva allt som finns i världen, allt från en blomma, en bil till en människa genom att specificera ett antal register. Det enda som krävs för att du skall kunna hämta informationen är att en läsa information är implementerad som kan läsa ett byte och det enda som krävs för att ändra något i den där registeruppsättningen är en funktion för att skriva ett byte.

  • Läsa ett byte.
  • Skriva ett byte.

är det som behövs i VSCP för att jobba mot “vad som helst” på den lägsta nivån.

Det här är vad VSCP kalla Register Abstraction Model.

VSCP’s register abstraction model kräver att  det på alla “vad som helst” finns en uppsättning register som innehåller viss information. De två viktigaste delarna som de här register utrymmena innehåller är GUID, ett globally unique id för enheten på 16 byte, och en 32-byte area som innehåller en pekare till en Module Description File.  GUID’et identifierar enheten på ett globalt unikt sätt Ungefär som en MAC adress gör för en Ethernet krets. Faktum är att de kan kopplas. MDF pekaren kan peka på ett internt lagringsutrymme eller vara en URL som pekar på en MDF fil som i XML form beskriver den här “vad som helst” enheten.

Registerinnehållet för enheten beskrivs såklart i den här filen. Men på registernivå kan det bli krångligt ibland. Ett flyttal t.ex. kan kräva åtta register positioner. Krångligt och onödigt att hålla reda på om det enda man är intresserad av är att det i de där åtta registerpositionerna finns ett temperaturmätvärde.

För att göra livet lättare för de som vill se världen i form av strängar, flyttal, logiska enheter så beskriver (eller kan beskriva) MDF’en “vad som helst” enheten med högnivå variabler i form av abstraktioner. Det enda de är är en pekare till ett register där de ligger, hur många register de använder, samt vilken sort de är.

Så nu har vi en “vad som helst” enheten som antingen kan beskrivas med en massa 8-bitars register eller med mer komplexa dataenheter men där det enda som behövs är en läs operation och en skriv operation.

Här kan man alltså skriva en applikation som konfigurerar vilken enhet som helst. Läs bara mdf’en från enheten och sen är det bara att låta användaren fylla i uppgifterna. Ja eller den andra maskinen. TV, bil, klockradio kan ha ett och samma konfigurationsprogram.

MDF’n kan också innehålla wizards som steg för steg hjälper till att fylla i register/abstractions värden för att åstadkomma något specifikt.  Allt beskrivet på ett abstract sätt så att applikationen som verkligen går igenom stegen kan skapas i vilket språk som helst på vilken plattform som helst. Fungerar alltså lika bra i C/C++ som I JavaScript.

Naturligtvis kan XML/JSON filer skickas in på den här nivån om man vill. Lagren ovanför abstraktionen kan vara vilka som helst. En read och en write är det enda som fortfarande behövs.

Ja faktum är att register abstraction modellen är så lågviktig att den med lätthet lever bredvid en annan propritär lösning. Man kan äta kakan och ha den kvar således.

Men varför?

Ja det får du fundera ut själv…

ps VSCP är såklart så mycket mer än det här. Det finns event, klasser/typer, bootloaderspecifikationer, beslutsmatriser och en massa annat. ds

ps2 Varför jag skriver detta i min Svenska blog har jag heller ingen bra förklaring på. Kanske har jag feber helt enkelt. ds2

Categories
Internet of Things (IoT) M2M Techstuff

Internet of Very Different Things – Elektroniktidningen

Internet of Very Different Things – Elektroniktidningen.

Categories
Internet of Things (IoT) M2M Techstuff

Uppgradera M2M till smart trådlöst nät – Elektroniktidningen

Uppgradera M2M till smart trådlöst nät – Elektroniktidningen.

Categories
Betraktelser & Berättelse Internet of Things (IoT) M2M Techstuff

Meningslöst

2014-09-30_11-25-58

Jag använder förmiddagen åt att fylla i en ansökan till en tävling för IoT finansiering som EU utlyst. Det är såklart fullständigt bortkastad tid att fylla i de där formulären. Man skall vara kvinna, bo i storstad och var under trettio för att ha en chans och sen skall man ha visioner a’la Google fast det aldrig någonsin har skapats ett “Google” från ett sådant här sammanhang. Aldrig någonsin och kommer aldrig att göra. Det är de som har lön från att administrera de här projekten som är de verkliga vinnarna. Precis som det är i varje näringspolitiska stiftelse i Sverige också.

Men det är såklart som vilket lotteri som helst det där. Tar man ingen lott så har man definitivt ingen chans. Och någon promilles chans finns det väl i alla fall att någon skulle orka sätta sig in i vad det handlar om och därmed förstå. Då vet jag att jag har dem i min hand. Men hur kommer man dit? De flesta orkar inte förstå eller har inte kunskaperna att förstå. Det var ingen skillnad när Internet rullar ut och det är ingen skillnad nu när IoT/m2m rullas ut.

Ja, ja, vad är tre, fyra, fem, sex bortkastade timmar om några år. Det är så man får se det. Sen jobba vidare…