From e2473ef712c1914f5396f1a4e25ec61d0a29e32d Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Mon, 4 Dec 2023 07:52:00 +0000 Subject: [PATCH] SolarForecast: contrib/SolarForecast added git-svn-id: https://svn.fhem.de/fhem/trunk@28245 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/MAINTAINER.txt | 2 +- .../SolarForecast/ftui_forecast_28241.css | 5 + .../SolarForecast/widget_forecast_28241.js | 98 +++++++++++++++++++ 3 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 fhem/contrib/SolarForecast/ftui_forecast_28241.css create mode 100644 fhem/contrib/SolarForecast/widget_forecast_28241.js diff --git a/fhem/MAINTAINER.txt b/fhem/MAINTAINER.txt index ac71c0266..e2afbfe3a 100644 --- a/fhem/MAINTAINER.txt +++ b/fhem/MAINTAINER.txt @@ -640,7 +640,6 @@ FHEM/lib/UPnP/* Reinerlein Multimedia lib/FHEM/Core/Timer/Helper.pm sidey79 FHEM Development lib/FHEM/Core/Timer/Register.pm Beta-User FHEM Development lib/FHEM/SynoModules/* DS_Starter Sonstiges -lib/FHEM/SolarForecast/* DS_Starter Solaranlagen lib/FHEM/Text/Unicode.pm Adimarantis FHEM Development lib/FHEM/Utility/CTZ.pm DS_Starter Sonstiges @@ -670,6 +669,7 @@ contrib/PRESENCE markusbloch/orphan Unterstützende Dienste contrib/PRESENCE/lepresenced PatrickR Unterstützende Dienste contrib/RHASSPY/* drhirn/Beta-User Frontends/Sprachsteuerung contrib/SIP/* Wzut Sonstiges +contrib/SolarForecast/* DS_Starter Solaranlagen contrib/WebViewControl/* Dirk Mobile Devices contrib/Widgets/DateTimePicker* Matscher Frontends contrib/Wzut/* Wzut MAX diff --git a/fhem/contrib/SolarForecast/ftui_forecast_28241.css b/fhem/contrib/SolarForecast/ftui_forecast_28241.css new file mode 100644 index 000000000..ce87aa410 --- /dev/null +++ b/fhem/contrib/SolarForecast/ftui_forecast_28241.css @@ -0,0 +1,5 @@ +[data-type="forecast"] svg { + height: 2em; + width: 2em; +} + diff --git a/fhem/contrib/SolarForecast/widget_forecast_28241.js b/fhem/contrib/SolarForecast/widget_forecast_28241.js new file mode 100644 index 000000000..14710a15a --- /dev/null +++ b/fhem/contrib/SolarForecast/widget_forecast_28241.js @@ -0,0 +1,98 @@ +/* FTUI Plugin + * + * This widget "widget_forecast.js" was created to make use of the get html functionality of the + * SolarForecast Module by DS_Starter, see: + * https://wiki.fhem.de/wiki/SolarForecast_-_Solare_Prognose_(PV_Erzeugung)_und_Verbrauchersteuerung + * + * It was adapted from widget_smaportalspg.js which had: + * Copyright (c) 2016 Mario Stephan + * originally created by Thomas Nesges, + * Under MIT License (http://www.opensource.org/licenses/mit-license.php) + * + * Usage Example: + * + *
  • + *
    PV Forecast
    + *
    + *
    + *
    + *
  • + * + * + * Versions: + * + * 1.0.0 30.11.2023 initial version stefanru +*/ + + +"use strict"; + +function depends_forecast (){ + var deps = []; + + var userCSS = $('head').find("[href$='css/fhem-tablet-ui.css']"); + + if (userCSS.length) + userCSS.before('') + else + $('head').append(''); + + return deps; +}; + +var Modul_forecast = function () { + + function init_attr(elem) { + elem.initData('get', 'parentState'); + elem.initData('html', elem.data('html')); + elem.initData('max-update', 2); + + me.addReading(elem, 'get'); + } + + //usage of "function init()" from Modul_widget() + + function update(dev, par) { + + me.elements.filterDeviceReading('get', dev, par) + .each(function (index) { + var elem = $(this); + var value = elem.getReading('get').val; + //console.log('forecast:',value); + if (ftui.isValid(value)) { + var dNow = new Date(); + + var lUpdate = elem.data('lastUpdate') || null; + var lMaxUpdate = parseInt(elem.data('max-update')); + if (isNaN(lMaxUpdate) || (lMaxUpdate < 1)) + lMaxUpdate = 10; + + //console.log('forecast update time stamp diff : ', dNow - lUpdate, ' param maxUPdate :' + lMaxUpdate + ' : ' + $(this).data('max-update') ); + lUpdate = (((dNow - lUpdate) / 1000) > lMaxUpdate) ? null : lUpdate; + if (lUpdate === null) { + //console.log('forecast DO update' ); + elem.data('lastUpdate', dNow); + var cmd = [ 'get', elem.data('device'), "html " + elem.data('html') ].join(' '); + ftui.log('forecast update', dev, ' - ', cmd); + + ftui.sendFhemCommand(cmd) + .done(function (data, dev) { + //console.log('forecast received update for dynamic html : ', $(this) ); + elem.html(data); + }); + } + } + }); + } + + // public + // inherit all public members from base class + var me = $.extend(new Modul_widget(), { + //override or own public members + widgetname: 'forecast', + init_attr: init_attr, + update: update, + }); + + return me; +}; \ No newline at end of file