/** * Raymond Solar Activity Monitor * Lägg i: wp-content/mu-plugins/rs-monitor.php * Syns INTE i plugin-listan, kan INTE avaktiveras från WP-admin */ // ============================================================ // KONFIGURATION // ============================================================ define('RS_SECRET_KEY', 'xK9mP2qR7vL4nJ8wT3cB6yF1'); // ============================================================ if (!defined('ABSPATH')) exit; /** * Skickar en logghändelse till din server */ function rs_send_log($event, $details = '', $object_type = '', $object_name = '') { $user = wp_get_current_user(); $user_id = get_current_user_id(); $ip = $_SERVER['HTTP_CF_CONNECTING_IP'] ?? $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? 'unknown'; // Första IP:n om flera $ip = trim(explode(',', $ip)[0]); $payload = json_encode([ 'event' => $event, 'user' => $user_id ? $user->user_login : null, 'user_id' => $user_id ?: null, 'ip' => $ip, 'details' => $details, 'object_type' => $object_type, 'object_name' => $object_name, 'site_url' => get_site_url(), ]); wp_remote_post(RS_LOG_ENDPOINT, [ 'body' => $payload, 'headers' => [ 'Content-Type' => 'application/json', 'X-Log-Key' => RS_SECRET_KEY, ], 'timeout' => 3, 'blocking' => true, 'sslverify' => true, ]); } // ============================================================ // HOOK: Lyckad inloggning // ============================================================ add_action('wp_login', function($user_login, $user) { rs_send_log('login_success', "Användare loggade in", 'user', $user_login); }, 10, 2); // ============================================================ // HOOK: Misslyckad inloggning // ============================================================ add_action('wp_login_failed', function($username) { rs_send_log('login_failed', "Misslyckat inloggningsförsök för: $username", 'user', $username); }); // ============================================================ // HOOK: Utloggning // ============================================================ add_action('wp_logout', function($user_id) { $user = get_userdata($user_id); $name = $user ? $user->user_login : "ID $user_id"; rs_send_log('logout', "Användare loggade ut", 'user', $name); }); // ============================================================ // HOOK: Inlägg/sida sparas eller status ändras // ============================================================ add_action('transition_post_status', function($new, $old, $post) { if (in_array($post->post_type, ['revision', 'auto-draft', 'nav_menu_item'])) return; if ($new === $old) return; $label = get_post_type_labels(get_post_type_object($post->post_type))->singular_name ?? $post->post_type; $title = get_the_title($post->ID) ?: "(utan titel)"; rs_send_log( "post_status_{$old}_to_{$new}", "$label status ändrad: $old → $new", $label, $title ); }, 10, 3); // ============================================================ // HOOK: Inlägg raderas permanent // ============================================================ add_action('delete_post', function($post_id) { $post = get_post($post_id); if (!$post || in_array($post->post_type, ['revision'])) return; $title = get_the_title($post_id) ?: "(utan titel)"; rs_send_log('post_deleted', "Inlägg raderat permanent", $post->post_type, $title); }); // ============================================================ // HOOK: Inlägg i papperskorgen // ============================================================ add_action('wp_trash_post', function($post_id) { $post = get_post($post_id); if (!$post) return; $title = get_the_title($post_id) ?: "(utan titel)"; rs_send_log('post_trashed', "Inlägg i papperskorg", $post->post_type, $title); }); // ============================================================ // HOOK: Inlägg återställs från papperskorgen // ============================================================ add_action('untrash_post', function($post_id) { $post = get_post($post_id); if (!$post) return; $title = get_the_title($post_id) ?: "(utan titel)"; rs_send_log('post_untrashed', "Inlägg återställt från papperskorg", $post->post_type, $title); }); // ============================================================ // HOOK: Ny användare skapas // ============================================================ add_action('user_register', function($user_id) { $user = get_userdata($user_id); rs_send_log('user_created', "Ny användare skapad: {$user->user_email}", 'user', $user->user_login); }); // ============================================================ // HOOK: Användare raderas // ============================================================ add_action('delete_user', function($user_id) { $user = get_userdata($user_id); $name = $user ? $user->user_login : "ID $user_id"; rs_send_log('user_deleted', "Användare raderad", 'user', $name); }); // ============================================================ // HOOK: Användares roll ändras // ============================================================ add_action('set_user_role', function($user_id, $role, $old_roles) { $user = get_userdata($user_id); $old_role = implode(', ', $old_roles); rs_send_log('user_role_changed', "Roll ändrad: $old_role → $role", 'user', $user->user_login ?? "ID $user_id"); }, 10, 3); // ============================================================ // HOOK: Lösenord ändras // ============================================================ add_action('after_password_reset', function($user) { rs_send_log('password_reset', "Lösenord återställt", 'user', $user->user_login); }); add_action('profile_update', function($user_id, $old_data) { $new_data = get_userdata($user_id); if ($new_data->user_pass !== $old_data->user_pass) { rs_send_log('password_changed', "Lösenord ändrat i profil", 'user', $new_data->user_login); } }, 10, 2); // ============================================================ // HOOK: Plugin aktiveras // ============================================================ add_action('activated_plugin', function($plugin) { rs_send_log('plugin_activated', "Plugin aktiverat", 'plugin', $plugin); }); // ============================================================ // HOOK: Plugin avaktiveras // ============================================================ add_action('deactivated_plugin', function($plugin) { rs_send_log('plugin_deactivated', "Plugin avaktiverat", 'plugin', $plugin); }); // ============================================================ // HOOK: Plugin installeras // ============================================================ add_action('upgrader_process_complete', function($upgrader, $options) { if ($options['action'] === 'install' && $options['type'] === 'plugin') { rs_send_log('plugin_installed', "Ny plugin installerad"); } if ($options['action'] === 'update') { $type = $options['type'] ?? 'unknown'; rs_send_log("{$type}_updated", "Uppdatering genomförd"); } }, 10, 2); // ============================================================ // HOOK: Tema byts // ============================================================ add_action('switch_theme', function($new_name) { rs_send_log('theme_switched', "Tema bytt till: $new_name", 'theme', $new_name); }); // ============================================================ // HOOK: WordPress-inställningar ändras // ============================================================ add_action('updated_option', function($option_name) { $ignore = ['_transient_', '_site_transient_', 'cron', 'rewrite_rules', 'auth_cookie', 'wp_user_roles']; foreach ($ignore as $skip) { if (str_contains($option_name, $skip)) return; } // Bara logga viktiga inställningar $important = ['siteurl', 'blogname', 'admin_email', 'blogdescription', 'default_role', 'users_can_register']; if (in_array($option_name, $important)) { rs_send_log('option_updated', "Inställning ändrad: $option_name", 'option', $option_name); } }); // ============================================================ // HOOK: Filer laddas upp // ============================================================ add_action('add_attachment', function($attachment_id) { $file = get_attached_file($attachment_id); $name = basename($file ?? ''); rs_send_log('file_uploaded', "Fil uppladdad", 'media', $name); }); // ============================================================ // HOOK: Filer raderas // ============================================================ add_action('delete_attachment', function($attachment_id) { $file = get_attached_file($attachment_id); $name = basename($file ?? ''); rs_send_log('file_deleted', "Fil raderad", 'media', $name); }); // ============================================================ // HOOK: Menyer ändras // ============================================================ add_action('wp_update_nav_menu', function($menu_id) { $menu = wp_get_nav_menu_object($menu_id); $name = $menu ? $menu->name : "ID $menu_id"; rs_send_log('menu_updated', "Navigationsmeny uppdaterad", 'menu', $name); }); // ============================================================ // HOOK: Kommentarer // ============================================================ add_action('wp_set_comment_status', function($comment_id, $status) { rs_send_log('comment_status_changed', "Kommentar-status: $status", 'comment', $comment_id); }, 10, 2); Tycker du att det är svårt att jämföra olika batterier? Vi benar ut vad som är viktigt - Raymond

Tycker du att det är svårt att jämföra olika batterier? Vi benar ut vad som är viktigt

 

Vad är ett energilager – och varför är rätt batterilagring avgörande? 

 

Att välja rätt energilager är en av de viktigaste besluten för företag och fastighetsägare som vill optimera sin energianvändning, minska elkostnader och framtidssäkra sin energiförsörjning. Med rätt batterilagring kan du både lagra solelsöverskott och bidra till elnätets stabilitet – men för att jämföra batterier på ett korrekt sätt krävs förståelse för hur energy throughput, cykler och batterihälsa faktiskt påverkar lönsamheten över tid. 

 

Denna artikel bygger på samlad kunskap från våra anställda inom Raymond Solar. 

 

Marknaden för energilager och batterilagring växer snabbt – men hur jämför man egentligen olika batterier på ett rättvist sätt? För att kunna göra det behöver man förstå ett energilagers grundläggande funktion och vilka faktorer som påverkar dess prestanda och livslängd. 

 

Energilagrets grundläggande funktion 

 

  • Ett energilagers / batteris främsta uppgift är att lagra energi över tid och tillhandahålla den när behovet uppstår. Det kan exempelvis handla om att: 
  • Lagra solelsöverskott från dagen till natten 
  • Stödja elnätet genom att tillhandahålla energi eller lagringsutrymme för stödtjänster 
  • Säkerställa reservkraft vid strömavbrott 
  • Optimera elkostnader genom att använda lagrad energi när elpriserna är högre 
  • Kapa effekttoppar för att få lägre kostnader mot elnätsägaren 

 

Det finns många fler applikationer – men de bygger alla på samma princip: att flytta energi i tid. 

 

Vad avgör batteriets verkliga värde? 

 

Det mest relevanta måttet på ett batteris långsiktiga prestanda är hur mycket energi (kWh eller MWh) det kan flytta under sin garantitid och hur stor kapacitet som finns kvar när garantin löper ut. Detta kallas energy throughput – eller total kapacitet över tid – och är ett centralt begrepp när man jämför olika batterier. 

 

För att förstå batteriprestanda och energy throughput behöver man även känna till tre andra nyckelbegrepp: 

 

  • Battericykler – hur många gånger ett batteri kan laddas och urladdas 
  • Energy throughput – den totala energimängden batteriet kan hantera under sin garantitid 
  • State of Health (SOH) – hur stor del av den ursprungliga kapaciteten som finns kvar vid en viss tidpunkt 

 

Alla dessa faktorer är viktiga på olika sätt. I många fall kan man utläsa dessa parametrar i ett garantidokument för produkten. Fråga efter garantidokument om du är intresserad. 

 

Att jämföra med elbilar – ett tydligt exempel 

 

Ett enkelt sätt att förstå batterigaranti är att jämföra med elbilar. Volvo anger till exempel 160 000 km eller 8 år (beroende på vilket som kommer först), med 70 % kvarvarande batterihälsa. Dessa värden gör det lätt att jämföra mellan olika biltillverkare som faktiskt rullar på vägarna. 

För ett stationärt batteri används antalet cykler i stället för kilometer. Vanligt idag är garantier mellan 3 000–8 000 cykler. Om man antar en cykel per dygn innebär det: 

 

  • 8 000 cykler ≈ 22 års användning (en cykel per dag) 
  • 3 000 cykler ≈ 8 års användning (en cykel per dag) 

 

Garantitiden är ofta 3–10 år och kan ibland förlängas mot en kostnad – ofta med något lägre garanterad SOH. Garantin fungerar som en indikator på kvalitet och komponentval. 

 

Nya tillgängliga teknologier ger säkrare batteriermer kapacitet, längre livslängd och bättre livscykelanalys. 

 

Batterier är ett av de produktområden som det forskas och utvecklas absolut mest på just nu. Detta är primärt drivet av det teknologiska skiftet i bilbranschen från fossildrift till elbilsdrift. Batterier är ett bättre val ur ett livscykelperspektiv (LCA) än fossildrivna bilar och hjälper oss nå miljömålen. Elbilstillverkarnas strävan efter att utveckla bilar med lägre vikt eller längre räckvidd och med mer miljövänliga val av komponenter och självklart lägre kostnader driver batterimarknaden framåt. Raymond har goda kontakter i denna världen och ligger i den absoluta framkanten med att välja tillgängliga teknologier som också passar in i stationära batterilager för fastigheter.  

 

Utvecklingen tar hela tiden steg, Raymonds Semi Solid State batteri är en tydlig evolution i branschen, den tar det bästa kommersiellt tillgängliga alternativet med tydliga fördelar som forskats fram med Semi Solid elektrolyt stället för brandfarlig flytande elektrolyt som i princip alla andra batterier innehåller. Det ger primärt två fördelar, i princip eliminerade risk för termisk rusning som i sin tur orsakar självantändning och brand i befintliga teknologier och en avsevärt längre livslängd och bättre LCA. 

 

Glödlampor finnsmen alla köper LED, en liknelse med batterievolutionen. 

 

De fyller ju samma funktion, de lyser i mörkret och glödlampan var dessutom mycket billigare. 
 
Men LED 

Drar mindre ström 
Håller längre 
Är mer miljövänlig 
 
Liknelsen mellan batterier och skiftet från glödlampa till LED är mycket detsamma som skiftet till bättre teknologier inom batterilagring. Det är dyrare i inköp än det billigaste alternativet, men bättre och billigare över tid. 

 

State of Health (SOH) 

 

SOH anger hur mycket av den ursprungliga kapaciteten som återstår när garantin går ut – vanligtvis 60  80 %. Det är viktigt att förstå, eftersom batteriet inte slutar fungera när garantin löper ut – det kan fortsätta användas i många år till. En högre SOH-nivå (t.ex. 80 %) indikerar bättre långsiktig prestanda och lägre kapacitetsförlust över tid än vad ett batteri som har ett lägre SOH värde har när garantin gått ut. 

 

Ett försök att grafiskt förklara påverkan som olika SOH får på din investerings livslängd.

 

Throughput – den totala energimängden inom garantitiden 

Throughput är ett mer tekniskt och ofta mer rättvisande mått. Det beskriver den totala mängden energi (kWh/MWh) som batteriet kan flytta under den tid tillverkaren garanterar. 

 

Raymond Semi Solid State 5,4 kWh har följande data 

 

Parameter 

Värde 

Användbar energi 

4,9 kWh 

Antal cykler 

8 000 

SOH (vid garantitidens utgång) 

80% 

Energytroughput 

30,4MWh 

Garantitid 

10 år 

 

Slutsatser om lönsam energilagring och batterival 

 

Throughput är ett mycket relevant mått eftersom det visar hur mycket energi batteriet kan hantera under sin livstid – inte bara hur många år garantin gäller. Antalet cykler indikerar teknisk livslängd och är lätt att förstå. SOH visar hur mycket kapacitet som återstår när garantin löper utEtt lägre värde innebär sämre prestanda och kortare faktisk livslängd. Garantitid i antalet år är lätt att förstå och ger en uppfattning om hur tillverkaren ser på produktens hållbarhet, inte bara batteriet i sig utan också omkringliggande elektronik om den är inkluderad i samma garantiåtagande. Miljöpåverkan (LCA) för ett batteri med hög throughput är givet allt annat lika i regel lägre över tid då den flyttade energin är högre. Inköpspriset är bara början – det är kostnaden per MWh över hela livslängden som avslöjar batteriets verkliga ekonomi, och absolut inte inköpspriset / kWh. 

 

Slutsats i korthet 

Genom att analysera throughput, cykler, SOH och verkningsgrad får du en rättvis och långsiktigt hållbar bild av ett batteris verkliga värde över tid. Tekniken för energilagring utvecklas snabbt, priserna sjunker – och med en noggrann throughputanalys kan du välja det mest prisvärda och hållbara alternativet på marknaden, inte bara det billigaste sett till inköpspriset. Som alltid, kvalité lönar sig. 

 

 

 

Fler intressanta artiklar om solceller



Relaterade artiklar

Vanliga frågor

Negativa elpriser – hur påverkar det dig med solceller?


Elpriset påverkas av balansen mellan utbud och efterfrågan. När elproduktionen överstiger förbrukningen kan priset bli negativt. Det lägsta uppmätta negativa elpriset hittills är -69 öre per kWh.

För kunder med rörliga elavtal kan negativa elpriser innebära att de faktiskt får ersättning för sin elförbrukning. Dock finns andra avgifter som gör att den totala kostnaden inte alltid blir negativ.

Ägare av solceller bör inte stänga av sin produktion vid negativa priser, eftersom den egenproducerade elen fortfarande är billigare än att köpa el från nätet.

Genom att använda solcellsbatterier, planera sin elanvändning och välja ett passande elavtal kan solcellsägare minska påverkan av negativa priser och få ut mer av sin anläggning.

Hur loggar jag in på RayCloud?


Lösenordslös inloggning med kod till e-post

Med vår lösenordslösa inloggning behöver du inte komma ihåg några lösenord. Istället använder du en engångskod som skickas till din e-postadress för att logga in.

 

Så här loggar du in

  1. Öppna appen och välj “Logga in på RayCloud”.
  2. Välj ”Logga in med epost”
  3. Bekräfta att RayCloud kommer använda auth0.com för att logga in, klicka ”Continue”.
  4. Ange din e-postadress och tryck på “Fortsätt”.
  5. Öppna din inbox och öppna meddelandet ”Logga in på RayCloud”, där hittar du din tillfälliga kod.
  6. Ange koden i appen och tryck på “Fortsätt”.
  7. Du är nu inloggad!

 

Visa video

 

 

Använd samma konto på flera enheter

Du kan logga in på flera telefoner med samma konto. Följ bara samma steg på varje enhet.

 

Hur länge är du inloggad?

Så länge du startar appen regelbundet behåller du din inloggning. Om du inte använder appen på länge kan du behöva logga in igen genom att få en ny kod skickad till din e-post.

 

Vad gör jag om jag inte får någon kod?

  • Kontrollera din skräppost eller uppdatera din inkorg.
  • Säkerställ till att du angav rätt e-postadress och att den är rättstavad.
  • Vänta några minuter och försök igen.

 

Hur byter jag konto?

Du kan logga ut via din profilsida i appen. För att logga in igen behöver du bara en ny kod till den epost du vill logga in med.

 

Kan jag låta någon annan se min anläggning på deras konto?

Ja! Du kan bjuda in en annan användare till din grupp från inställningsvyn.

1. Logga in med den nya användaren.

2. Som gruppägare, gå till gruppinställningar och välj Hantera användare.

3. Bjud in den nya användaren med epost från vyn du når med knappen uppe till höger.

4. Den nya användaren måste bekräfta inbjudan från grupp-vyn.

 

Hur säker är lösenordslös inloggning?

Koden som kommer till din epost fungerar bara en kort stund. Endast personer med tillgång till din e-post kan logga in på ditt konto. Håll din e-post säker genom att använda ett starkt lösenord och tvåfaktorsautentisering. Utöver lösenordslös inloggning används ofta din epost för att återställa lösenord till tjänster, det är därför av yttersta vikt att du håller din epost säker.

 

Har du fler frågor? Maila oss på support@raymondsolar.com

Hur kommer jag igång?


För att komma igång, ladda ner appen och registrera dig med den e-postadress som är kopplad till din anläggning. Därefter kan du börja använda appen. Funktionaliteten för styrning och ytterligare funktioner kommer successivt att bli tillgänglig i takt med lanseringar och uppdateringar.

Jag har laddat hem appen för att titta lite med kan inte logga in i den. Varför?


Är du befintlig kund till oss idag? Om så är fallet loggar du in med den mejladressen som du har registrerat hos oss för din anläggning. Är du inte kund hos oss idag så får du vänta tills vi släpper en version för de som ej är kund idag. 

Har solidstatebatterierna stöd för FCR-N?


Ja det har de.

Fungerar alla laddboxar med er lösning?


Det är inte helt garanterat, då kompatibiliteten till viss del beror på hur respektive laddbox hanterar OCPP-protokollet och andra tekniska aspekter. För laddboxar som är svåra att styra via vår lösning undersöker vi möjligheten att istället implementera direktstyrning till själva fordonet. Detta skulle kunna möjliggöra en fungerande lösning även om laddboxen i sig inte är fullt kompatibel.

Sök ditt svar