{"id":386110,"date":"2026-10-13T08:14:19","date_gmt":"2026-10-13T08:14:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/veloxa-solar-widget\/"},"modified":"2026-10-14T07:00:40","modified_gmt":"2026-10-14T07:00:40","slug":"veloxa-solar-widget","status":"publish","type":"plugin","link":"https:\/\/es-ec.wordpress.org\/plugins\/veloxa-solar-widget\/","author":23567623,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.7.2","stable_tag":"0.7.2","tested":"7.1.3","requires":"6.0","requires_php":"8.1","requires_plugins":null,"header_name":"Veloxa Solar Widget","header_author":"WPVeloxa","header_description":"Displays current solar production data (power, energy today\/total) on your WordPress site via shortcode and Gutenberg block \u2014 a presentation layer for PV data you already monitor elsewhere.","assets_banners_color":"383d44","last_updated":"2026-10-14 07:00:40","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/wpveloxa.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":74,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.7.2":{"tag":"0.7.2","author":"wpveloxa","date":"2026-10-14 07:00:40","revision":3745517}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3743241,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3743241,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3743241,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3743241,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.7.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3743241,"resolution":"1","location":"assets","locale":"","width":1280,"height":860},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3743241,"resolution":"10","location":"assets","locale":"","width":685,"height":804},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3743241,"resolution":"2","location":"assets","locale":"","width":1280,"height":860},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3743241,"resolution":"3","location":"assets","locale":"","width":1280,"height":860},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3743241,"resolution":"4","location":"assets","locale":"","width":1280,"height":860},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3743241,"resolution":"5","location":"assets","locale":"","width":685,"height":373},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3743241,"resolution":"6","location":"assets","locale":"","width":1280,"height":860},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3743241,"resolution":"7","location":"assets","locale":"","width":685,"height":394},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3743241,"resolution":"8","location":"assets","locale":"","width":1600,"height":900},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3743241,"resolution":"9","location":"assets","locale":"","width":685,"height":616}},"screenshots":{"1":"The Connections screen \u2014 every data source with its last reading, the time of the update, whether visitors can see it, and its ID for shortcodes.","2":"A Generic REST source \u2014 each value points at its place in the JSON response, with the unit the API uses.","3":"A push channel \u2014 the address, the token, ready-to-use curl and Home Assistant examples, and \"Check if data arrives\".","4":"Choosing Home Assistant sensors \u2014 only sensors that match each value by type and unit are listed.","5":"The Summary widget on a page \u2014 current power, energy today and total energy, with the time of the last update.","6":"The \"Solar production\" block in the editor, with the widget, data source and style settings.","7":"Pro: the daily production chart.","8":"Pro: the full-screen display on a TV in a reception area.","9":"Pro: energy flow \u2014 solar, home, battery and grid with the direction of each flow.","10":"Pro: production history for the last 30 days and statistics."}},"plugin_section":[],"plugin_tags":[27215,284427,286349,242290,8892],"plugin_category":[],"plugin_contributors":[284428],"plugin_business_model":[],"class_list":["post-386110","plugin","type-plugin","status-publish","hentry","plugin_tags-energy","plugin_tags-home-assistant","plugin_tags-inverter","plugin_tags-photovoltaic","plugin_tags-solar","plugin_contributors-wpveloxa","plugin_committers-wpveloxa"],"banners":{"banner":"https:\/\/ps.w.org\/veloxa-solar-widget\/assets\/banner-772x250.png?rev=3743241","banner_2x":"https:\/\/ps.w.org\/veloxa-solar-widget\/assets\/banner-1544x500.png?rev=3743241","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/veloxa-solar-widget\/assets\/icon-128x128.png?rev=3743241","icon_2x":"https:\/\/ps.w.org\/veloxa-solar-widget\/assets\/icon-256x256.png?rev=3743241","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/veloxa-solar-widget\/assets\/screenshot-1.png?rev=3743241","caption":"The Connections screen \u2014 every data source with its last reading, the time of the update, whether visitors can see it, and its ID for shortcodes."},{"src":"https:\/\/ps.w.org\/veloxa-solar-widget\/assets\/screenshot-2.png?rev=3743241","caption":"A Generic REST source \u2014 each value points at its place in the JSON response, with the unit the API uses."},{"src":"https:\/\/ps.w.org\/veloxa-solar-widget\/assets\/screenshot-3.png?rev=3743241","caption":"A push channel \u2014 the address, the token, ready-to-use curl and Home Assistant examples, and \"Check if data arrives\"."},{"src":"https:\/\/ps.w.org\/veloxa-solar-widget\/assets\/screenshot-4.png?rev=3743241","caption":"Choosing Home Assistant sensors \u2014 only sensors that match each value by type and unit are listed."},{"src":"https:\/\/ps.w.org\/veloxa-solar-widget\/assets\/screenshot-5.png?rev=3743241","caption":"The Summary widget on a page \u2014 current power, energy today and total energy, with the time of the last update."},{"src":"https:\/\/ps.w.org\/veloxa-solar-widget\/assets\/screenshot-6.png?rev=3743241","caption":"The \"Solar production\" block in the editor, with the widget, data source and style settings."},{"src":"https:\/\/ps.w.org\/veloxa-solar-widget\/assets\/screenshot-7.png?rev=3743241","caption":"Pro: the daily production chart."},{"src":"https:\/\/ps.w.org\/veloxa-solar-widget\/assets\/screenshot-8.png?rev=3743241","caption":"Pro: the full-screen display on a TV in a reception area."},{"src":"https:\/\/ps.w.org\/veloxa-solar-widget\/assets\/screenshot-9.png?rev=3743241","caption":"Pro: energy flow \u2014 solar, home, battery and grid with the direction of each flow."},{"src":"https:\/\/ps.w.org\/veloxa-solar-widget\/assets\/screenshot-10.png?rev=3743241","caption":"Pro: production history for the last 30 days and statistics."}],"raw_content":"<!--section=description-->\n<p>Veloxa Solar Widget is a presentation layer for photovoltaic data you already monitor elsewhere. It is not a monitoring system: it takes the data your inverter cloud, gateway or Home Assistant already has and shows it nicely on your website \u2014 on a company page, in a case study, or on a screen in your reception area.<\/p>\n\n<p><strong>Free and Pro<\/strong><\/p>\n\n<p><strong>Free<\/strong> \u2014 no limits: add as many installations, data sources and widgets as you need.<\/p>\n\n<ul>\n<li>Widgets: current power, energy today, total energy, summary, battery, avoided CO\u2082<\/li>\n<li>Data sources: Generic REST \/ JSON, push, Home Assistant, SolaX Cloud (beta)<\/li>\n<\/ul>\n\n<p><strong>Pro<\/strong> \u2014 everything in Free, plus:<\/p>\n\n<ul>\n<li>Daily production chart<\/li>\n<li>Production history (30 days, 12 months, this year) and statistics<\/li>\n<li>Full-screen display for a TV or tablet<\/li>\n<li>Energy flow: solar, home, battery and grid in one diagram<\/li>\n<li>Solarman cloud data source (your own Solarman API access)<\/li>\n<li>SolarEdge cloud data source (beta)<\/li>\n<\/ul>\n\n<p><strong>Agency<\/strong> \u2014 everything in Pro, plus:<\/p>\n\n<ul>\n<li>\"Our installations\": all your installations in one widget<\/li>\n<li>Add every plant of a Solarman account at once<\/li>\n<li>Your branding: company name, logo and brand colour<\/li>\n<\/ul>\n\n<p><strong>Widgets<\/strong><\/p>\n\n<ul>\n<li>Current power (e.g. 4.82 kW)<\/li>\n<li>Energy today (e.g. 24.8 kWh)<\/li>\n<li>Total energy, scaled automatically (e.g. 38.4 MWh)<\/li>\n<li>Summary \u2014 all three in one card<\/li>\n<li>Battery \u2014 charge level and whether it is charging, discharging or idle, with the charging\/discharging power<\/li>\n<li>Avoided CO\u2082 \u2014 the emissions your solar production has saved so far and today, as an estimate with the emission factor shown<\/li>\n<\/ul>\n\n<p>Every widget is available as a block and as a shortcode, shows when the data was last updated, and marks data as out of date when the source stops sending it. Data sources refresh roughly every 5 to 15 minutes, so widgets show the current production \u2014 not a real-time feed. A widget is offered only for values your source actually provides: no battery in the source means no battery value to choose, not a zero.<\/p>\n\n<p><strong>Data sources<\/strong><\/p>\n\n<ul>\n<li>Generic REST \/ JSON \u2014 any cloud API that returns JSON. Point each value at its place in the response with a dot path (e.g. <code>result.acpower<\/code>) \u2014 or add several together with <code>+<\/code> (e.g. <code>result.powerdc1+result.powerdc2<\/code>) \u2014 and pick the unit the API uses; the plugin converts it.<\/li>\n<li>Push \u2014 your device, script or Home Assistant automation sends readings to your site. Each channel has its own token, which you can replace at any time.<\/li>\n<li>Home Assistant \u2014 sensors are offered by their type and unit. For Solarman\/Sofar they are pre-selected; for Huawei Solar, Fronius, GoodWe, SMA, Enphase, SolarEdge and similar integrations they are pre-selected by their names (beta) \u2014 check them before saving. Gaps caused by rare refreshes are filled from Home Assistant's own history.<\/li>\n<li>SolaX Cloud (beta) \u2014 enter the token ID from SolaxCloud (Service \u2192 API) and the registration number of the dongle; solar power, energy, battery and grid are mapped for you.<\/li>\n<\/ul>\n\n<p>You can edit every data source later \u2014 for example, replace an API key or a Home Assistant token \u2014 without losing its settings or breaking the widgets that use it.<\/p>\n\n<p><strong>Pro<\/strong><\/p>\n\n<ul>\n<li>Daily production chart built from the history the plugin collects.<\/li>\n<li>Production history \u2014 daily bars for the last 30 days, or monthly bars for the last 12 months or this year. A day without data is shown as a gap, never as zero; estimated days and the current, incomplete day or month are marked.<\/li>\n<li>Statistics \u2014 production this year, total production since data collection started, the best day and the peak power. Choose which items are shown publicly.<\/li>\n<li>Full-screen display at an address such as \/solar-display\/your-connection-id\/ for a TV or tablet in your reception area \u2014 large type, refreshing automatically, without the theme's navigation. Three layouts (summary; energy flow with battery; flow with today's chart and statistics), dark or light, for landscape TVs and portrait tablets. When data stops arriving or the screen loses its network connection, it says so and resumes by itself.<\/li>\n<li>Energy flow \u2014 solar panels, home, battery and grid on one diagram, with the direction of each flow. Shown when your source reports the solar power and the home consumption; parts your source does not report (for example no battery) are left out.<\/li>\n<li>SolarEdge cloud data source (beta) \u2014 reads solar power, energy today and total, and \u2014 with a meter \u2014 home consumption, grid and battery, using the site API key from the SolarEdge monitoring portal (or an installer's account key; Agency: add every site at once). Refreshes every 15 minutes by default to stay within SolarEdge's 300 requests a day.<\/li>\n<li>Solarman cloud data source \u2014 reads solar power, home consumption, battery and grid directly from the Solarman cloud, without Home Assistant or a custom API mapping. Requires your own Solarman API access (APP ID and APP SECRET, requested from Solarman support) and your Solarman account login. Energy today is calculated from the inverter's total energy counter. When your site has few visitors and data is refreshed rarely, the plugin fills the gaps from Solarman's own history: exact daily totals, energy today and the 5-minute readings for the daily chart and peak power.<\/li>\n<\/ul>\n\n<p><strong>Agency \u2014 for installers<\/strong><\/p>\n\n<ul>\n<li>\"Our installations\" \u2014 all your public installations in one widget: how much they produce right now, energy today, total energy and avoided CO\u2082, with a list of the installations and their current power. Ideal for an installer's \"our projects\" page.<\/li>\n<li>Solarman: add every plant of a Solarman account as a separate data source in one step, with refresh intervals that keep all plants within the daily request limit.<\/li>\n<li>Your branding \u2014 your company name and logo in the header of the full-screen display, and your brand colour for the chart line, the battery level and the history bars.<\/li>\n<\/ul>\n\n<p><strong>Beta data sources<\/strong><\/p>\n\n<p>SolaX Cloud, SolarEdge and the name-based Home Assistant suggestions are built from the manufacturers' documentation and have not yet been confirmed on a real installation of each type. They are marked \"beta\". Compare the values with the manufacturer's app; the plugin also checks every reading of a beta source (for example energy today larger than total energy, negative solar power, battery outside 0\u2013100 %, a daily counter going down) and writes problems to the Diagnostics error log. The raw values received are shown on the data source's edit screen \u2014 if something is wrong, send them with the diagnostic report and we will correct the mapping. Nothing is sent anywhere automatically.<\/p>\n\n<p><strong>Home consumption<\/strong><\/p>\n\n<p>Use your source's own home consumption value when it has one. If it does not, the plugin estimates it as solar power + power taken from the grid \u2212 battery charging power (grid: positive when taking power from the grid; battery: positive when charging), and marks the value with \"\u2248\" and this formula wherever it is shown.<\/p>\n\n<p><strong>Privacy by default<\/strong><\/p>\n\n<p>Solar production can reveal when people are at home. Widgets of a data source are hidden from visitors until you switch on \"Show on public pages\" for that source. Public widgets show only the values themselves \u2014 never the source address, keys or raw API responses.<\/p>\n\n<p><strong>Performance<\/strong><\/p>\n\n<p>Data is fetched in the background (WP-Cron) and served from the database. A visitor loading a page never triggers a request to your data source.<\/p>\n\n<p><strong>Diagnostics<\/strong><\/p>\n\n<p>The Diagnostics screen shows whether each data source is up to date, when it was last measured and refreshed, the background tasks and the most recent errors. One button copies it all as a text report for a support request \u2014 without addresses, tokens or API keys.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to one service that is <strong>not<\/strong> the data source you configure yourself:<\/p>\n\n<ul>\n<li><strong>Freemius<\/strong> (licensing, update delivery, and \u2014 if you opt in \u2014 basic usage analytics). On first activation you're asked whether to allow anonymous diagnostic data (server environment, WordPress\/PHP version, plugin version, site URL) to be sent \u2014 you can decline, and review\/opt out again later from your account on freemius.com. No data about your data sources, installations, or the production values they return is ever included. <a href=\"https:\/\/freemius.com\/terms\/\">Terms of Service<\/a>, <a href=\"https:\/\/freemius.com\/privacy\/\">Privacy Policy<\/a>.<\/li>\n<\/ul>\n\n<p>Every other outbound request goes only to the addresses <strong>you<\/strong> configure:<\/p>\n\n<ul>\n<li>Generic REST sources: the API URL you enter, with the authorization header you enter. The plugin requests it in the background at the interval you set (at least every 5 minutes) to read your production data. Refer to your data provider's terms of use and privacy policy.<\/li>\n<li>Home Assistant: the Home Assistant address you enter, using the access token you enter, to read the states of the sensors you choose \u2014 when you set up the connection and then in the background at the interval you set \u2014 and, when readings are missing, the recorded history of those sensors.<\/li>\n<li><p>Solarman (Pro only, when you add a Solarman data source): the Solarman cloud API at globalapi.solarmanpv.com. The plugin sends your APP ID, APP SECRET, account e-mail and a SHA-256 hash of your Solarman password to obtain an access token, then requests your plant's current data in the background at the interval you set, and \u2014 a few times a day, when readings are missing \u2014 your plant's daily and 5-minute history (at most 500 requests per day per APP ID in total). Solarman (IGEN Tech Co., Ltd.): <a href=\"https:\/\/protocol.solarmanpv.com\/SOLARMAN\/service_en.html\">Terms of Service<\/a>, <a href=\"https:\/\/protocol.solarmanpv.com\/SOLARMAN\/privacy_en.html\">Privacy Policy<\/a>.<\/p><\/li>\n<li><p>SolaX Cloud (when you add a SolaX Cloud data source): www.solaxcloud.com. The plugin sends your SolaxCloud token ID and the registration number of your inverter's dongle to read its current data, in the background at the interval you set (SolaX allows 10 requests a minute and 10,000 a day). SolaX: <a href=\"https:\/\/www.solaxpower.com\/terms-of-use.html\">Terms of Use<\/a>, <a href=\"https:\/\/www.solaxpower.com\/privacy-policy.html\">Privacy Policy<\/a>.<\/p><\/li>\n<li>SolarEdge (Pro only, when you add a SolarEdge data source): monitoringapi.solaredge.com. The plugin sends your API key and site ID to read the site overview and current power flow, in the background at the interval you set (at most 280 requests a day per API key). SolarEdge: <a href=\"https:\/\/www.solaredge.com\/sites\/default\/files\/api_license_terms_and_conditions_aug2013.pdf\">API Terms and Conditions<\/a>, <a href=\"https:\/\/www.solaredge.com\/en\/privacy-policy\">Privacy Policy<\/a>.<\/li>\n<\/ul>\n\n<p>Push channels receive data on your own site and send nothing out.<\/p>\n\n<p><strong>Network safety<\/strong><\/p>\n\n<p>For security, the plugin refuses to connect to local and private network addresses (such as 192.168.x.x or homeassistant.local) unless an administrator enables \"Allow local network addresses\" in the plugin settings. Link-local addresses used by cloud metadata services (169.254.x.x) are always blocked. Redirects are checked with the same rules.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Go to Solar Widget \u2192 Connections and add a data source.<\/li>\n<li>Switch on \"Show on public pages\" for the source when you want visitors to see it.<\/li>\n<li>Add the \"Solar production\" block to a page, or use a shortcode such as <code>[veloxa_solar widget=\"summary\"]<\/code>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20shortcode%20attributes%20are%20available%3F\"><h3>Which shortcode attributes are available?<\/h3><\/dt>\n<dd><p>[veloxa_solar widget=\"power|today|total|summary|battery|co2\" connection=\"ID\" style=\"card|minimal\" label=\"Your label\"]. Pro adds <code>widget=\"chart|flow|history|stats\"<\/code>, with <code>period=\"30d|12m|year\"<\/code> for history and <code>show=\"year,total,best_day,max_power\"<\/code> for statistics. Agency adds <code>widget=\"portfolio\"<\/code> with <code>show=\"power,today,total,co2,list\"<\/code> and optionally <code>connections=\"id1,id2\"<\/code> (by default all data sources shown on public pages). The <code>connection<\/code> attribute takes the connection's ID, shown under its name on the Solar Widget \u2192 Connections screen. The ID never changes, so renaming a connection does not break your shortcodes or the full-screen display address. With only one data source, <code>connection<\/code> can be left out. An unknown value shows editors a message with the allowed values.<\/p><\/dd>\n<dt id=\"how%20is%20the%20avoided%20co%E2%82%82%20calculated%3F\"><h3>How is the avoided CO\u2082 calculated?<\/h3><\/dt>\n<dd><p>Energy produced \u00d7 an emission factor: the amount of CO\u2082 one kWh of grid electricity causes where the installation is. The default is 0.7 kg CO\u2082 per kWh, about the Polish grid according to KOBiZE. Set the factor for your country or your energy supplier under Solar Widget \u2192 Connections \u2192 Settings. The widget always shows the factor it used \u2014 it is an estimate, not a measurement.<\/p><\/dd>\n<dt id=\"is%20the%20data%20real-time%3F\"><h3>Is the data real-time?<\/h3><\/dt>\n<dd><p>No. Inverter clouds and gateways update every few minutes, so the widgets show the current production with the time of the last update.<\/p><\/dd>\n<dt id=\"my%20site%20gets%20few%20visitors.%20will%20the%20data%20still%20refresh%3F\"><h3>My site gets few visitors. Will the data still refresh?<\/h3><\/dt>\n<dd><p>The plugin refreshes data with WP-Cron, which WordPress runs only when someone opens a page of your site. On a site with few visitors \u2014 for example one used only for a screen in your reception area \u2014 the data may be refreshed late. For such sites we recommend a real system cron job:<\/p>\n\n<ol>\n<li>Add <code>define( 'DISABLE_WP_CRON', true );<\/code> to <code>wp-config.php<\/code>.<\/li>\n<li>Ask your host to run WP-Cron every 5 minutes, e.g. <code>*\/5 * * * * wget -q -O - https:\/\/example.com\/wp-cron.php?doing_wp_cron &gt;\/dev\/null 2&gt;&amp;1<\/code> or <code>wp cron event run --due-now<\/code> with WP-CLI.<\/li>\n<\/ol>\n\n<p>Most hosting control panels have a \"Cron jobs\" screen for this.<\/p>\n\n<p>The Diagnostics screen warns you when a data source was refreshed much less often than set in the last 24 hours. Home Assistant and Solarman (Pro) data sources fill the gaps from their own history: daily totals for days without readings (Home Assistant keeps 10 days of history by default), the daily chart and the peak power \u2014 so the history and statistics stay complete even with few visitors.<\/p><\/dd>\n<dt id=\"will%20many%20visitors%20cause%20many%20requests%20to%20my%20data%20source%3F\"><h3>Will many visitors cause many requests to my data source?<\/h3><\/dt>\n<dd><p>No. Visitors only read the last saved reading from your WordPress database \u2014 the plugin requests data in the background, once per the interval you set for each data source, however many people view the page. For Solarman (Pro) there is also a hard limit of 500 requests a day per APP ID.<\/p><\/dd>\n<dt id=\"can%20i%20use%20the%20same%20solarman%20app%20id%20for%20several%20plants%20or%20sites%3F\"><h3>Can I use the same Solarman APP ID for several plants or sites?<\/h3><\/dt>\n<dd><p>Yes. All plants with the same APP ID on one site share its daily request budget; the connection form shows the estimated number of requests and warns you when the refresh intervals are too short. Requests from another website using the same APP ID are not counted here \u2014 set longer intervals on both sites so that together they stay within your Solarman plan (the free plan allows 200,000 requests a year, about 548 a day).<\/p><\/dd>\n<dt id=\"my%20home%20assistant%20is%20on%20my%20home%20network.\"><h3>My Home Assistant is on my home network.<\/h3><\/dt>\n<dd><p>If your website is on external hosting, it cannot reach your home network. Use Home Assistant Cloud (Nabu Casa) or your own reverse proxy, or send data to a push channel from a Home Assistant automation \u2014 the channel screen shows a ready-to-paste example.<\/p>\n\n<p>If your WordPress site runs in the same network as Home Assistant (for example on a Raspberry Pi at home), an administrator can enable \"Allow local network addresses\" in the settings at the bottom of the Solar Widget \u2192 Connections screen. Then an address such as <code>http:\/\/homeassistant.local:8123<\/code> or <code>http:\/\/192.168.1.10:8123<\/code> works. On multisite, only a network administrator can change this setting. Leave it off on regular web hosting.<\/p><\/dd>\n<dt id=\"can%20i%20replace%20an%20api%20key%20or%20token%20without%20setting%20everything%20up%20again%3F\"><h3>Can I replace an API key or token without setting everything up again?<\/h3><\/dt>\n<dd><p>Yes. Click \"Edit\" next to the data source and enter the new key or token; fields you leave empty keep their current value. For push channels, \"Generate a new token\" on the channel screen replaces the token \u2014 the old one stops working immediately, and the collected values and history stay.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20when%20i%20delete%20the%20plugin%3F\"><h3>What happens to my data when I delete the plugin?<\/h3><\/dt>\n<dd><p>Nothing is removed unless you tick \"Remove all plugin data when the plugin is deleted\" in the plugin settings.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.7.2<\/h4>\n\n<ul>\n<li>Security: every field of the data source forms is sanitized as it is read, before it reaches any other code or filter.<\/li>\n<li>Security: widget HTML (shortcode and block) is passed through an allow-list of HTML and SVG tags before it is output.<\/li>\n<li>Fix: the request limit of push channels (60 per minute) holds under many simultaneous requests.<\/li>\n<li>Fix (Pro): the Account link appears once on the Account page.<\/li>\n<\/ul>\n\n<h4>0.7.1<\/h4>\n\n<ul>\n<li>Fix: a push value the widget cannot use \u2014 text instead of a number, battery level outside 0\u2013100 % \u2014 is now refused with a clear message (HTTP 400) instead of being accepted and ignored.<\/li>\n<li>Fix: the Avoided CO\u2082 factor falls back to the default 0.7 when it is set to zero or a negative number.<\/li>\n<li>Fix: the hint under \"Home consumption\" in Generic REST describes the home, not the grid.<\/li>\n<li>Fix: background refresh results in Diagnostics and the \"waiting for the device\" message of push channels are shown in the language of the person viewing them.<\/li>\n<li>Fix (Pro): production history no longer marks today as incomplete when there are no readings today yet.<\/li>\n<li>Fix (Pro): \"Total production\" in Statistics uses the inverter's lifetime counter when the data source has one, matching the summary widget.<\/li>\n<li>Fix (Pro): the \"Account\" page (licence, plan) is now in the Solar Widget menu.<\/li>\n<li>Fix (Agency): the brand colour now also colours the production history bars.<\/li>\n<li>Fix (Agency): \"Our installations\" shows \"\u2014\" instead of 0 kWh for energy today when no installation has a reading from today.<\/li>\n<\/ul>\n\n<h4>0.7.0<\/h4>\n\n<ul>\n<li>New: SolaX Cloud data source (beta) \u2014 token ID and dongle number, everything else is mapped for you.<\/li>\n<li>New (Pro): SolarEdge cloud data source (beta) \u2014 overview and power flow with the direction of grid and battery; Agency: add every site of an installer's API key at once.<\/li>\n<li>New: Home Assistant sensors of Huawei Solar, Fronius, GoodWe, SMA, Enphase, SolarEdge and similar integrations are pre-selected by their names (beta).<\/li>\n<li>New: readings of beta sources are checked for typical mapping mistakes, and the raw values are shown on the edit screen for comparison with the manufacturer's app.<\/li>\n<li>New: Generic REST paths can add values together, e.g. result.powerdc1+result.powerdc2.<\/li>\n<li>New: Site Health (Tools \u2192 Site Health) checks whether your solar data sources are up to date and whether the background refresh runs.<\/li>\n<li>New: a \"Getting started\" list on the Connections screen \u2014 add a data source, show it on public pages, add the widget to a page.<\/li>\n<li>New: Diagnostics can download the list of your Home Assistant power, energy and battery sensors (without the address and token, without phones and other battery devices) to send to support when your inverter is not recognised.<\/li>\n<li>Fix: a host name that cannot be resolved no longer writes a PHP warning to the debug log; .local addresses are not looked up in DNS.<\/li>\n<li>New (Agency): your branding \u2014 company name and logo on the full-screen display, brand colour on the widgets (Solar Widget \u2192 Connections \u2192 Settings).<\/li>\n<li>New: Avoided CO\u2082 widget \u2014 emissions saved so far and today, with an emission factor you can set (default 0.7 kg CO\u2082\/kWh).<\/li>\n<li>New (Agency): \"Our installations\" widget \u2014 all public installations in one widget: production now, energy today, total energy, avoided CO\u2082 and a list of installations.<\/li>\n<li>New (Agency): Solarman \u2014 add every plant of an account at once, with refresh intervals that fit the daily request limit.<\/li>\n<li>New: the [veloxa_solar] shortcode accepts connections=\"id1,id2\" for the \"Our installations\" widget.<\/li>\n<li>New (Pro): Solarman cloud data source \u2014 solar power, home consumption, battery and grid straight from the Solarman cloud, with your own Solarman API access. Energy today is calculated from the inverter's total energy counter.<\/li>\n<li>New (Pro): Solarman data is completed from Solarman's history when your site has few visitors \u2014 exact daily totals for days without readings, energy today, and 5-minute readings for the daily chart and peak power. The connection form shows the estimated daily requests per APP ID and warns when the intervals are too short.<\/li>\n<li>New: Home Assistant data is completed from Home Assistant's history when your site has few visitors \u2014 daily totals for days without readings and the solar power for the daily chart and peak power.<\/li>\n<li>New: Diagnostics warns when a data source was refreshed much less often than set in the last 24 hours (WP-Cron runs only when the site has visitors).<\/li>\n<li>Fix: Pro widgets are shown with their styles in the block editor preview (the energy flow was drawn without them).<\/li>\n<li>New (Pro): Production history widget \u2014 30 days, 12 months or this year, with gaps for days without data.<\/li>\n<li>New (Pro): Statistics widget \u2014 this year, total since the start, best day and peak power.<\/li>\n<li>New (Pro): Full-screen display layouts (summary, flow, full), light theme, portrait tablets, \"Last data\" and \"No connection\" bars with automatic resume.<\/li>\n<li>New (Pro): Energy flow adapts to 2, 3 or 4 nodes and warns administrators when the energy balance does not add up (usually a reversed battery or grid sign).<\/li>\n<li>New (Pro): Polish translation.<\/li>\n<li>New: The block offers the period and statistics items as settings; Pro widgets are marked \"(Pro)\" in the free version.<\/li>\n<li>Security: Carrier-grade NAT addresses (100.64.0.0\/10) are treated as a local network.<\/li>\n<li>Fix: After activating a Pro licence, the full-screen display could return \"page not found\" until the plugin was updated.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>New: Battery widget \u2014 charge level, charging \/ discharging \/ idle state and power. The idle threshold is set per data source (50 W by default).<\/li>\n<li>New: Energy flow (Pro) \u2014 solar, home, battery and grid on one diagram with the direction of each flow.<\/li>\n<li>New: Home consumption value from your source; an optional estimate (solar + grid \u2212 battery), off by default and marked \"\u2248\".<\/li>\n<li>New: Daily production totals are kept from the first day, for longer-term charts.<\/li>\n<li>New: Home Assistant \u2014 sensors of Solarman \/ Sofar inverters are recognised and pre-selected.<\/li>\n<li>New: Invert the sign of battery, grid and home consumption values per data source.<\/li>\n<li>Changed: Shortcode is now [veloxa_solar]; block, REST route and all internal names use the veloxa-solar prefix.<\/li>\n<li>Fix: Units sent by push devices are validated \u2014 unknown units are rejected instead of silently using the channel unit.<\/li>\n<li>Fix: Without an active licence, the Pro package behaves exactly like the free version.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>New: Diagnostics screen (Solar Widget \u2192 Diagnostics) with the state of each data source, background tasks and recent errors, plus a \"Copy diagnostic report\" button for support requests. Addresses, tokens and API keys are never included in the report.<\/li>\n<li>Fix: the error log is now limited to the 200 most recent entries.<\/li>\n<li>Fix: editing a push channel updates its current reading right away.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First version.<\/li>\n<\/ul>","raw_excerpt":"Show the current production of your solar installation on your site: power, energy today and total energy, as blocks or shortcodes.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/386110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=386110"}],"author":[{"embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wpveloxa"}],"wp:attachment":[{"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=386110"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=386110"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=386110"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=386110"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=386110"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/es-ec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=386110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}