I denna tråd tänkte jag avhandla bygget av en logger, som skall hämta produktionen från min SMA Sunny Boy 2.5 och förbrukningen från nätet via en OWL +USB CM160. Datat skall dels presenteras via Grafana hemma på intranätet, men även exporteras till lämplig tjänster t.ex. PVOutput m.fl.
Bakgrunden är att Eon 100koll inte verkar lira så bra med den elmätare jag fått för mikroproduktionen, samt att Sunny Portal / Sunny Places ligger 2-3 timmar efter. Jag vill se produktion och konsumtion med max 5 minuters fördröjning. Och så vill jag ha rätt siffror så klart. Och förbrukning per fas, vilket är viktigt då jag har produktion bara på en fas. Val av energimätare: OWL +USB CM160 har stöd för tre mättransformatorer och förutom en display som jag inte räknar med att ha nytta av, också en USB-utgång där jag skall kunna hämta data. Det finns färdig programvara för linux för att hämta datat. En sådan är beställd och får undersökas mer noggrant när den levereras. Val av loggerhårdvara Här hade jag alla möjliga val, antingen köra på min linux-router som kör dd-wrt/tomato, eller leta upp någon gammal utrangerad mikrodator, men enklast blev att köpa en Raspberry PI, eftersom den är strömsnål och kraftfull. Dessutom billig. |
Första delprojektet - hämta data från växelriktaren
Steg ett var att dra igång det som skall bli utvecklingsmiljön. Installerade Ubuntu Mate för Raspberryn, tog inte lång stund att komma igång med komplett grafiskt gränssnitt. Den kör en lite äldre variant av Gnome, för att spara på resurserna, men det är tillräckligt bra. Steg två var att reverseengineera SMA:s deviceportal. Med utvecklarverktygen i Chrome ser jag att den först anropar /dyn/login.json med användarnamn och lösenord. SMA:n svarar då med en token, och den använder man sedan i efterföljande request, oklart hur länge den är giltig. Sedan anropar den /dyn/getLogger.json?sid=XXX där XXX är token som svarades i loginanropet. getLogger.json innehåller (bl.a.) en json-vektor där totala antalet watt-timmar står i klartext med en tidsstämpel som är var femte minut. Det får vara allt för idag. Fortsättning följer! |
Steg 2b
Ett program i Go för att logga in och hämta datan från växelriktaren. https://github.com/linefeedse/sunnylog-http/ Tanken är att det där programmet skall köra var 5:e minut och hämta data som den lägger i någon slags databas. Har inte bestämt exakt vilken ännu. Kan bli InfluxDb eller bara MySQL. Grafana kan använda båda två som datakälla. Jag uppmätte raspberryns förbrukning också, med Eons smartplugg, den tar ganska exakt 2W vid tomgång och 3W när den arbetar hårt. |
In reply to this post by tor_fransson
Jag fick energimätaren i går, men stötte direkt på patrull, tyvärr. Jag borde ju fattat att den bara mäter nettoströmmen på varje fas, vilket innebär att ström som går ut från huset räknas som förbrukning
Som min växelriktare är inkopplad finns det ingenstans jag kan koppla in de tre mättransformatorerna utan att få med exporterad ström. [SMA]===[undercentral]===[gruppcentral]===[mätarskåp]===nätet Jag skulle behöva ta hit elektrikern igen och dra en egen kabel för växelriktaren, direkt till fasadmätarskåpet, och sedan sätta mättransformatorerna nedströms från den inkopplingspunkten... [SMA]=============================\\ [undercentral]===[gruppcentral]===[OWL]===[mätarskåp]===nätet Eller är det någon som har en smart idé på hur jag kan göra? |
Men om du kan mäta produktion (direkt från växelriktaren) och totalen (dvs hur mycket som går in eller alt går ut på nätet) momentant så kan du ju räkna ut konsumtionen? Konsumtion=total—produktion. Det är ju så som tex Fronius Smart Meter fungerar (googla).
Eller är problemet att du inte kan mäta och få ut data för samma fas som din växelriktare är inkopplad på? Eller något annat problem?
30x275W Amerisolar AS-6P30 Poly, Fronius Symo 6kW växelriktare, Fronius Smart Meter, Schletter montagesystem för falsat plåttak, 5 graders lutning, Orientering NO.
|
Jag skulle gissa på att tor-fransson menar att han skaffat en energimätare som mäter energiflödet för varje av de 3 faserna, och som mäter netto-energin. Dvs energi kan gå baklänges på 1 faser och framlänges på de 2 andra faserna, och det summeras till en klumpsumma. Hans solström drunknar då i en sådan netto-mätning och kan inte ses eller fås fram separat.
Kanske vore det bättre han skaffade en energimätare som just är avsedd för hans växelriktare och kan kommunicera med den. Då kan man göra just som Perwis säger. Men tor-fransson kanske har nöje av att mecka och försöka överlista systemen. Man får då lägga mycket energi och möda, men har man nöjet av det så varför inte försöka. |
In reply to this post by Perwis
Som Arne säger är energimätaren en sådan att den mäter strömmen på varje fas med en ring runt ledaren. Eftersom det är växelström kan den inte avgöra om det är ström in eller ut på nätet.
Dvs huset kan förbruka exempelvis 3x4=12A och växelriktare producerar 1x10A. Då mäter energimätaren 4+4+(10-4) totalt 14A. Fastän jag vet från SMA:ns data att den producerar 10A så kan jag alltså inte räkna ut hur mycket huset förbrukar, alltså 12A. För att kunna göra det behöver jag strömstyrkan per fas... Ska se om jag på något sätt kan få ut den datan! Det stolliga i sammanhanget är att blinkdioden på EOns elmätare verkar göra likadant, dvs slå samman absolutbeloppet av fasströmmarna? I nödfall kan jag hämta husets förbrukning timme för timme från Eon, men då blir det med 24 timmars fördröjning... Och ja - visst skulle jag kunna köpa SMA:s energimätare, men en gång ingenjör, alltid ingenjör! |
Nu har jag undersökt lite vilken data det är som kommer på USB-kabeln från energimätaren, och det är förutom klockslag och datum, en sammanslagen strömsiffra för alla tre faserna.
Så det blir till att konfigurera om inkopplingspunkten och mätpunkten innan jag kan fortsätta detta projekt! Stay tuned. |
In reply to this post by tor_fransson
Som överslagshandling ägnade jag en stund åt att reverseengineera Eons "mina sidor" för att kunna ladda ned förbrukningen timme för timme från dem. Det är verkligen inte snyggt, men så här gjorde man "förr i tiden" innan det fanns API:er.
Först behöver man en Cookie som är någonslags sessionsdata, den får man genom att göra en POST till https://minasidor.eon.se/eon-online/loginservlet, och det snurriga är att man måste lägga på en requestheader "Content-Type: application/json" men sedan måste man skicka POST-datat som ett urlkodat formulär Tog mig några minuter att hitta den egenheten. Gör man fel säger den bara "ErrorCode: 0" POST-datat skall se ut så här: 'userIdType=4&userId=epost%40adress.se&password=dittlosenord&cookies=1' Tillbaka får man då bland en massa annan goja en kaka som heter "MYSAPSSO2", och den skall man använda i nästa anrop, som sker till "https://minasidor.eon.se/eon-online/eon.consumption.month.sap" med datat "radioChosen=KWH&role=01&installationSelector=000123456789%7C0012345678%7C0012345678%7C0012345678%7CA&year=2018&month=05&type=P" "installationSelector" vet jag inte hur man får tag i annat än genom att inspektera dropdownmenyn där man väljer anläggning under "min förbrukning". De faktiska siffrorna i exemplet är fingerade så klart. Nu behöver jag så klart skriva ett program som hämtar denna information, gräver ut själva förbrukningen ur html-sidan och trycker in den i InfluxDB där jag redan lagt datan från växelriktaren. Fortsättning följer! |
Ett tips kan vara att använda en programmerbar webläsare som t.ex Selenium eller liknande när det inte finns API:er, kan oftast vara enklare än att reverse engineer:a, då webläsaren kan "klicka" på element precis som en människa
|
Det är en bra idé faktiskt. Speciellt om login kräver JavaScript eller dylikt.
|
Free forum by Nabble | Edit this page |