/** * 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);
Solpanelerna är såklart den grundläggande komponenten i ett solenergisystem. Men enligt oss är övrig hårdvara minst lika viktig. Därför jobbar vi med marknadens ledande leverantörer och sätter samman de komponenter som passar just dig. Inga standardlösningar, utan full anpassning till dina behov och önskemål. Resultatet är optimal funktion och högsta säkerhet.
Vi erbjuder Solis växelriktare, en välbeprövad lösning för solenergisystem. Med över 15 års erfarenhet inom branschen är Solis kända för sin pålitlighet och effektiva prestanda. Dessa växelriktare är designade för att maximera solenergiproduktionen och fungerar väl i olika miljöer och systemstorlekar. Solis växelriktare är ett stabilt val för dem som söker en beprövad teknik i sitt solenergisystem.
Vår Huawei växelriktare är utrustad med innovativa funktioner som sätter den i en klass för sig själv. Genom att använda kylflänsar istället för fläktar garanterar den en tyst och pålitlig drift. Dessutom har Huawei minimerat antalet komponenter genom att ta bort tryckknappar och displayer, vilket minskar risken för fel och ökar växelriktarens hållbarhet över tid. Vi erbjuder Huaweis fulla sortiment.
Våra Sungrow hybridväxelriktare anpassat för villamarknaden. Sungrow växelriktare är designade för extra snabb installation och driftsättning. Med en produktportfölj som sträcker sig från storskaliga projekt till bostadslösningar, och med över 40% av våra anställda dedikerade till forskning och utveckling, garanterar vi pålitliga och hållbara solenergilösningar. Lång erfarenhet, omfattande garantier och kundfokuserad support ger dig trygghet. Sungrows applikation ”iSolarCloud” ger full översikt och kontroll över solenergisystemet och möjliggör ofta fjärrlösning för vanliga problem. Sungrow står för trygghet, enkelhet och fullständig dedikation till solenergi.
Vår österrikiska växelriktare från Fronius är en pålitlig och beprövad lösning. Med sin långa närvaro på marknaden har Fronius etablerat sig som en pålitlig partner för solenergiprojekt. Deras växelriktare levererar högpresterande och effektiv omvandling av solenergi till användbar el. Tillverkade i Europa.
Vår svenska premiumväxelriktare från Ferroamp imponerar inte bara med sin kvalitet utan även med sin modularitet. Den är enkel att installera och anpassa för olika takvinklar, vilket ger maximal flexibilitet för olika typer av installationer. Dessutom erbjuder Ferroamp omfattande information och data för teknikentusiasten, vilket gör det till ett utmärkt val för dem som är intresserade av att följa och optimera sina solenergiproduktioner.
Växelriktare är en av de viktigaste komponenterna i en solcellsanläggning. Deras huvudfunktion är att omvandla likström (DC) som genereras av solpanelerna till växelström (AC), som är den typ av elektricitet som används i hushåll och företag. Utan växelriktare skulle den energi som solpanelerna producerar vara oanvändbar för de flesta elektriska apparater.
Det finns olika typer av växelriktare, inklusive strängväxelriktare, mikroväxelriktare och hybrida växelriktare. Strängväxelriktare är den vanligaste typen och används för att omvandla energin från en grupp av solpaneler. Mikroväxelriktare installeras individuellt på varje solpanel, vilket kan öka effektiviteten och flexibiliteten i systemet. Hybrida växelriktare kombinerar funktionerna hos en traditionell växelriktare med förmågan att hantera energilagring, vilket gör dem idealiska för system med batterilagring.
Växelriktare spelar också en viktig roll i övervakning och felhantering. De kan övervaka solcellernas prestanda och larma vid eventuella problem, vilket gör det möjligt att snabbt identifiera och åtgärda fel. Regelbundet underhåll och uppdateringar kan förlänga växelriktarens livslängd och säkerställa att systemet fungerar optimalt.
Växelriktare från Raymond Solar är kända för sin höga effektivitet och tillförlitlighet, vilket säkerställer att du får maximal nytta av solenergi. Våra växelriktare är utformade för att fungera sömlöst med olika solcellsinstallationer och erbjuder avancerade funktioner som övervakning och felhantering. Investera i en högkvalitativ växelriktare för att optimera din solcellsanläggning och säkerställa en stabil energiförsörjning.
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.
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.

Visa video
Du kan logga in på flera telefoner med samma konto. Följ bara samma steg på varje enhet.
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.
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.
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.
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
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.
Ä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.
Ja det har de.
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.