Hallo Gemeinde,
durch einen anderen (http://forum.fhem.de/index.php/topic,24876.0.html) Beitrag bin ich auf den Gedanken gekommen, den SHM direkt in FHEM zu erfassen.
Ich habe dann ein wenig mit Perl und lwp gespielt und war erstaunt wie gut das doch möglich ist. Ein fertiges Modul habe ich mal angehängt und ich würde mich über konstruktive Kritik freuen.
Definiert wird wie folgt:
Zitat
define <name> SHM <user> <password> (<delay>)
z.B.:
define MySHM SHM user@email.de password 60
attr MySHM room SHM
define FileLog_MySHM FileLog ./log/MySHM-%Y-%m.log MySHM
attr FileLog_MySHM room SHM
Achtung!
Das Passwort ist dann allerdings im FHEM als Klartext ersichtlich. Ich habe mir dazu einen ReadOnly User im Portal angelegt und würde dies jeden dringenst empfehlen.
Edit: der ReadOnly User hat leider keine Berechtigung mehr um die Live Daten zu lesen. Daher muss man einen Standartbenutzer nehmen.
(http://forum.fhem.de/index.php?action=dlattach;topic=27667.0;attach=19782)
Zusatzlich gibt es nun auch ein Modul welche den Forecast aus den SunnyPortal ausliest und in einen Logfile speichert. Mit einen SVG Graphen kann man sich den Forecast dan anzeigen lassen.
Das Logfile wird im Logverzeichniss als [DeviceName]-forecast.log angelegt.
Dieses Module nutzt die Cookies vom SHM Module. Alleine kann es also nich funktionieren.
Zitat
define <name> SHMForecast <delay in seconds>
z.B:
define PV_Forecast SHMForecast 600
attr PV_Forecast alias PV Prognose
attr PV_Forecast group Photovoltaik
attr PV_Forecast room Sys_PV
attr PV_Forecast stateFormat state W/h
Damit man sich eine Grafik anzeigen lassen kann muss man erst ein Dummy Logfile anlegen.
Zitat
define FileLog_MySHM_Forecast FileLog ./log/PV_Forecast-forecast.log PV_Forecast-NOTHING
attr FileLog_MySHM_Forecast room Sys_Logfiles
define Forecast SVG FileLog_MySHM_Forecast:SVG_FileLog_MySHM_Forecast:CURRENT
attr Forecast endPlotNow 0
attr Forecast endPlotToday 1
attr Forecast room Photovoltaik,Sys_PV
(http://forum.fhem.de/index.php?action=dlattach;topic=27667.0;attach=46626)
Updates
# Cahngelog:
# V0.1.1:
# - ignore "null" values
# - add reading "summary" for state
# V0.1.2
# - converting insted ignore "null" values
# V0.2
# - use JSON
# - add forecast from Sunny Portal
# V0.3
# - disabled forecast because problems
# - disabled ssl certificate checks
# V0.3.2
# - add Loginstatus as reading (Thanx BerndArnold)
PS: Wenn man sich die Forecast Werte nochmal seperat Logt kann man wunderbar sehen wie SMA die Prognosen wärend des Tages korrigieren.
(http://forum.fhem.de/index.php?action=dlattach;topic=27667.0;attach=46628)
Gerade drüber gestolpert - genial! Läuft :-)
Die Batterieüberwachung meiner FHTs schlug an und sendete innerhalb kürzester Zeit 47 Mails - hab das notify geändert.
Muss jetzt noch ein wenig mit UserReadings rumspielen, denke ich. Plot läuft auch, zeigt aber nur, dass die Batterie gerade entlädt :-)
Hallo,
ZitatDie Batterieüberwachung meiner FHTs schlug an und sendete innerhalb kürzester Zeit 47 Mails - hab das notify geändert.
Autsch - hast du soviele FHT und an allen waren die Batterien leer?
Ich bekomm nur eine Mail wenn an einem FHT die Batterie leer ist.
Grüße
Nein, der SHM löste das notify aus, weil er Statusmeldungen über die Hausbatterie enthält. Das notify achtete nur auf RegExp .*:[Bb]attery.* ungleich "ok" und dort kamen Entladewerte. Da die in SHM verwendeten Begriffe aber zusammengesetzte Begriffe wie zB BatteryOut sind, musste ich nur auf notify .*:[Bb]attery:.* gehen, jetzt ist Ruhe. Es war keine FHT-Batterie leer.
Das Modul nimmt die Bezeichnung so wie sie vom Portal kommen.
https://www.sunnyportal.com/homemanager liefert dann folgendes:
Zitat
{"Timestamp":"\/Date(1412747820945)\/",
"PV":69,
"FeedIn":0,
"GridConsumption":307,
"DirectConsumption":null,
"SelfConsumption":69,
"SelfSupply":69,
"TotalConsumption":376,
"DirectConsumptionQuote":null,
"SelfConsumptionQuote":100,
"AutarkyQuote":18,
"BatteryIn":null,
"BatteryOut":null,
"BatteryChargeStatus":null,
"OperationHealth":null,
"BatteryStateOfHealth":null,
"InfoMessages":[],
"WarningMessages":[],
"ErrorMessages":[],
"Info":{}
}
Ja, das ist kein Fehler in Deinem Modul. Mein notify war zu generisch.
Klasse! Habe es jetzt erst entdeckt. Dann kann man sich den Java supoxy quasi komplett sparen. Ich werde es heute Abend mal testen und Dir Feedback geben.
Hallo,
habe es heute auch mal ausprobiert, jedoch erhalte ich keine Werte. Bei Verbose 5 erhalte ich im Log folgende Meldungen:
2014.10.28 13:09:19 5: SMA -> 500
2014.10.28 13:09:19 4: not logged in. try to login...
2014.10.28 13:09:19 5: SMA -> 500
2014.10.28 13:09:19 5: SMA -> 500
2014.10.28 13:09:24 5: SMA -> 500
Passwort und Userkey sind definitiv richtig. Irgend einen Tipp woran es liegen könnte?
Danke
Klaus
500 ist der Statuscode den man von der Webseite bekommt.
Das könnte alles mögliche sein.
Hast du in deinen Passwort irgendwelche Sonderzeichen?
Oder das Portal hat gerade einen Hänger...
Hast du im fhem Verzeichniss eine Datei namens "mycookies.txt"?
mycookies.txt habe ich:
#LWP-Cookies-1.0
Passwort besteht aus Groß/Klein-Buchstaben und Ziffern.
Gruß
Klaus
Nimm mal dieses Modul.
Hab mal ein paar Debug Ausgaben eingebaut.
Verbose auf 5 setzen und dann mal das Log posten.
Wenn Du einmal am Code werkelst, kannst Du das cookie nach /tmp schreiben oder den cookie Pfad als attribut rausführen? Ich habe FHEM auf einem ro FS laufen und nur die Logs und Configs auf einem Stick.
Hallo,
hab den neuen Code geladen, jetzt kommen folgende Meldungen im Log:
2014.10.28 19:10:36 4: not logged in. try to login...
2014.10.28 19:10:36 5: SMA -> 500
2014.10.28 19:10:36 5: SMA -> Can't connect to www.sunnyportal.com:443
2014.10.28 19:10:36 5: SMA -> 500
2014.10.28 19:10:36 5: SMA -> Can't connect to www.sunnyportal.com:443
2014.10.28 19:10:36 5: SMA -> 500
2014.10.28 19:10:36 5: SMA -> Can't connect to www.sunnyportal.com:443
2014.10.28 19:10:36 4: not logged in. try to login...
2014.10.28 19:10:37 5: SMA -> 500
2014.10.28 19:10:37 5: SMA -> Can't connect to www.sunnyportal.com:443
2014.10.28 19:10:37 5: SMA -> 500
2014.10.28 19:10:37 5: SMA -> Can't connect to www.sunnyportal.com:443
Ich habe als Zeitintervall 10 Sec. eingegeben.
Klaus
Probier mal bitte folgendes und poste mal den Output:
nslookup www.sunnyportal.com
telnet www.sunnyportal.com 443
Also bei mir läuft das 1A! Ich habe die Readings mit onchange eingeschränkt, da ansonsten das Log ziemlich volläuft und man mit den Werten PV und TotalConsumption eigentlich alles andere errechnen kann.
define MySHM SHM <user> <pw> 10
attr MySHM event-on-change-reading PV,TotalConsumption,WarningMessages,ErrorMessages
attr MySHM room Photovoltaik
define FileLog_MySHM FileLog /mnt/storage/fhem/log/MySHM-%Y-%m.log MySHM
attr FileLog_MySHM room Photovoltaik
define SVG_MySHM SVG FileLog_MySHM:SVG_MySHM:CURRENT
attr SVG_MySHM plotsize 900,400
attr SVG_MySHM room Photovoltaik
Im Bild die Kaffeemaschine und der Sonnenaufgang ;)
Zitat von: Brun am 28 Oktober 2014, 20:35:47
Probier mal bitte folgendes und poste mal den Output:
nslookup www.sunnyportal.com
telnet www.sunnyportal.com 443
Hallo,
hier der gewünschte Output:
# nslookup www.sunnyportal.com
Server: 192.168.0.1
Address: 192.168.0.1#53
Non-authoritative answer:
Name: www.sunnyportal.com
Address: 171.25.178.17
# telnet www.sunnyportal.com 443
Trying 171.25.178.17...
Connected to www.sunnyportal.com.
Escape character is '^]'.
Viele Grüße
Klaus
Komisch...
Vielleicht fehlen auch irgendwelche Perl Module.
Installiere mal folgendes nach:
sudo apt-get install liblwp-protocol-https-perl liblwp-mediatypes-perl
Module waren bereits installiert :(
Das wird immer komischer...
Mach mal aus den https mal ein http in den Modul.
Hier läufts immernoch 1A. Außer das eine Stunde fehlt, weil der Homemanager die Netzwerkverbindung verloren hatte, und daher das on-change nix ins Log geschrieben hat, alles schick.
Zitat von: Brun am 29 Oktober 2014, 11:35:29
Das wird immer komischer...
Mach mal aus den https mal ein http in den Modul.
==> dann funktioniert es...
Dann schätze ich fehlt dir irgendeine Perl Lib die das SSL händelt.
Wenn kein SSL gemacht wird kann halt jeder unterwegs deine Daten lesen.
Vielleicht hilft ja ein Update schon weiter.
erst mal ein großes Dankeschön an Brun für das Modul. Leider bekomme ich seid knapp 2 Tagen eine Fehlermeldung im Log "WarningMessages: [The current PV generation could not be fully determined. 2 inverters did not respond in time.]" es werden auch keine Werte mehr für die WR angezeigt. Mein HomeManager meldet allerdings keinen Fehler und bekommt Daten.Woran kann das wohl liegen?
Gruß Balu
Das ist in jedem Fall eine Meldung, das zwischen dem SHM und dem Portal was nicht stimmt. Zeigt denn das Portal etwas an, wenn Du es mit dem Browser aufrufst?
Jein, das Portal meldet im Moment "Die aktuelle PV-Erzeugung konnte nicht vollständig ermittelt werden. 2 Wechselrichter haben nicht geantwortet." als Warnhinweis, im Logbuch "Das Gerät ist momentan nicht erreichbar. Möglicherweise ist das Gerät ausgeschaltet." .
Da die Meldung aber ca auf den Sonnenuntergang fällt denke ich das ist normal, denn tagsüber werden ja Daten gelesen.
Ansonsten wird kein Fehler angezeigt
Na das ist doch dieselbe Meldung auf deutsch. ;) Das Modul macht was es soll. Du solltest die on-change Funktionalität nutzen um das log nicht zuzumüllen.
Ja stimmt, aber die Meldung (in FHEM) kommt ja auch wenn die Sonne scheint und das Portal meldet dann alles IO
Von wann sind denn die readings?
Du kannst mal auch verbose auf 5 setzten. Dann schreibt er einiges ins fhem log.
ob Ihrs glaubt oder nicht, heute lief es wieder problemlos, lag evt. bei SMA, denn dort war das Portal heute Morgen nicht erreichbar. Trotzdem vielen Dank
eine Frage hätte ich aber noch, wie komme ich an Summen (z.B. KWh am Tag/Monat), die gelieferten Werte ist ja "nur" die aktuelle Leistung
Hallo,
seit heute (2014-11-12 10:39:12) liefert mir das Modul keine Werte mehr. Wenn ich verbose auf 5 setze erhlate ich im Log folgende Fehler:
2014.11.12 11:07:56 5: Solar_Leistung -> 500
2014.11.12 11:07:56 5: Solar_Leistung -> Can't connect to www.sunnyportal.com:443
2014.11.12 11:07:56 4: not logged in. try to login...
2014.11.12 11:07:56 5: Solar_Leistung -> 500
2014.11.12 11:07:56 5: Solar_Leistung -> Can't connect to www.sunnyportal.com:443
2014.11.12 11:07:56 5: Solar_Leistung -> 500
2014.11.12 11:07:56 5: Solar_Leistung -> Can't connect to www.sunnyportal.com:443
Habt ihr auch das Problem? Hat SMA am Portal etwas geändert?
Klaus
@Balu
Aktuelle sind noch keine weiteren Werte implementiert. Man bekommt nur die werte wie man sie auf der SMA Seite vom SHM sehen kann.
Aber eine Idee ist es und ich werde es mal aufnehmen.
@Klaus
Bei mir kommen noch Werte. Die Fehlermeldung 500 kommt von der SMA Seite und können leider alles mögliche bedeuten.
Was für ein Betriebssystem hast du denn und welche Version?
Vielleicht hilft ja auch ein Update.
Zitat von: Brun am 12 November 2014, 12:18:40
@Klaus
Bei mir kommen noch Werte. Die Fehlermeldung 500 kommt von der SMA Seite und können leider alles mögliche bedeuten.
Was für ein Betriebssystem hast du denn und welche Version?
Vielleicht hilft ja auch ein Update.
Hallo,
ich vermute ja, dass SMA heute auf reinen SSL-Zugriff umgestellt hat. Ich kann die Webseite nicht mehr mit HTTP://.... aufrufen, werde sofort auf SLL (HTTPS) weitergeleitet. Damit dürfte vermutlich wieder mein weiter oben beschribenes Problem mit den HTTPS Aufrufen gerade zuschlagen.
Aktuell habe ich folgendes Debian Linux auf meinem RPI:
Linux FHEM01 3.12.25+ #1 PREEMPT Sat Aug 2 19:08:33 CEST 2014 armv6l GNU/Linux
Pakete sind alle aktualisiert. Die von dir genannten Module habe ich auch alle installiert. Ich bin mit meinem Latein am Ende :(
Klaus
bei mir heute keine Probleme, Daten werden ohne Fehler gelesen
@Klaus:
poste mal bitte die Ausgabe von folgenden Befehl:
dpkg -l | grep -i perl
dpkg -l | grep -i ssl
dpkg -l | grep -i lwp
Zitat von: Brun am 13 November 2014, 11:35:52
@Klaus:
poste mal bitte die Ausgabe von folgenden Befehl:
dpkg -l | grep -i perl
dpkg -l | grep -i ssl
dpkg -l | grep -i lwp
Hallo,
ich hab den Output der 3 Befehle als modules.txt angehängt. Hoffe das ist ok.
Gruß
Klaus
Von den Modulen aus sieht das sehr gut aus.
Um das Problem genau analysieren zu können müsste ich deine Installation nachstellen.
Das könnte allerdings eine Weile dauern...
Aber könntest du bitte nochmal was testen und den Output posten.
lwp-request -E -d https://www.sunny-portal.com
Hallo Brun,
erstmal danke, dass hier unterstützt. Der Output ist wie folgt:
# lwp-request -E -d https://www.sunny-portal.com
GET https://www.sunny-portal.com
User-Agent: lwp-request/6.03 libwww-perl/6.04
500 Can't connect to www.sunny-portal.com:443
Content-Type: text/plain
Client-Date: Thu, 13 Nov 2014 11:46:49 GMT
Client-Warning: Internal response
Ich habe noch einen weiteren RPi für andere Zwecke, habe aber dort auch mal das Kommando abgesetzt. Dort ist der Output wie folgt:
# lwp-request -E -d https://www.sunny-portal.com
GET https://www.sunny-portal.com
User-Agent: lwp-request/6.03 libwww-perl/6.04
302 Found
Cache-Control: private
Connection: Keep-Alive
Date: Thu, 13 Nov 2014 11:47:12 GMT
Location: /Templates/Start.aspx?ReturnUrl=%2f
Server: Microsoft-IIS/7.5
Content-Length: 152
Content-Type: text/html; charset=utf-8
Client-Date: Thu, 13 Nov 2014 11:47:13 GMT
Client-Peer: 171.25.178.17:443
Client-Response-Num: 1
Client-SSL-Cert-Issuer: /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO Extended Validation Secure Server CA
Client-SSL-Cert-Subject: /serialNumber=HRB 3972/1.3.6.1.4.1.311.60.2.1.3=DE/businessCategory=Private Organization/C=DE/postalCode=34266/ST=Hessen/L=Niestetal/street=Sonnenallee 1/O=SMA Solar Technology AG/OU=Issued through SMA Solar Technology AG E-PKI Manager/OU=COMODO EV Multi-Domain SSL
Client-SSL-Cipher: AES256-SHA
Client-SSL-Socket-Class: IO::Socket::SSL
Set-Cookie: iZmNqKABwz=MDAwM2IyNzU0ZTQwMDAwMDAwMDgwXycNaSIxNDE1ODg2MTc0; Path=/
Title: Object moved
X-AspNet-Version: 4.0.30319
GET https://www.sunny-portal.com/Templates/Start.aspx?ReturnUrl=%2f
User-Agent: lwp-request/6.03 libwww-perl/6.04
200 OK
Cache-Control: private
Connection: Keep-Alive
Date: Thu, 13 Nov 2014 11:47:13 GMT
Server: Microsoft-IIS/7.5
Content-Length: 27769
Content-Type: text/html; charset=utf-8
Client-Date: Thu, 13 Nov 2014 11:47:14 GMT
Client-Peer: 171.25.178.17:443
Client-Response-Num: 1
Client-SSL-Cert-Issuer: /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO Extended Validation Secure Server CA
Client-SSL-Cert-Subject: /serialNumber=HRB 3972/1.3.6.1.4.1.311.60.2.1.3=DE/businessCategory=Private Organization/C=DE/postalCode=34266/ST=Hessen/L=Niestetal/street=Sonnenallee 1/O=SMA Solar Technology AG/OU=Issued through SMA Solar Technology AG E-PKI Manager/OU=COMODO EV Multi-Domain SSL
Client-SSL-Cipher: AES256-SHA
Client-SSL-Socket-Class: IO::Socket::SSL
Link: <../favicon.ico>; rel="shortcut icon"; type="image/x-icon"
Link: <../apple-touch-icon.png>; rel="apple-touch-icon"
Link: </dist/css/sma.theme.css?v=7.3.19.33747>; rel="stylesheet"
Link: </Tools/css/shadowbox/shadowbox.css>; rel="stylesheet"
Set-Cookie: iZmNqKABwz=MDAwM2IyNzU0ZTQwMDAwMDAwMDgwe0FMMSkxNDE1ODg2MTc1; Path=/
Set-Cookie: ASP.NET_SessionId=tjm3zocf3l21pwzy4morbhaw; path=/; HttpOnly
Title: SMA Solar Technology AG - Sunny Portal
X-AspNet-Version: 4.0.30319
X-Meta-Charset: utf-8
X-Meta-Viewport: width=device-width, initial-scale=1
X-Powered-By: ASP.NET
X-UA-Compatible: IE=edge
Viele Grüße
klaus
Ich habe auf dem FHEM RPi auch nochmals ein wget versucht, um Probleme bei der Namensauflösung oder Routing auszuschliessen.Das scheint alles zu funktionieren:
c# wget https://www.sunny-portal.com
--2014-11-13 12:51:41-- https://www.sunny-portal.com/
Resolving www.sunny-portal.com (www.sunny-portal.com)... 171.25.178.17
Connecting to www.sunny-portal.com (www.sunny-portal.com)|171.25.178.17|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: /Templates/Start.aspx?ReturnUrl=%2f [following]
--2014-11-13 12:51:46-- https://www.sunny-portal.com/Templates/Start.aspx?ReturnUrl=%2f
Reusing existing connection to www.sunny-portal.com:443.
HTTP request sent, awaiting response... 200 OK
Length: 27673 (27K) [text/html]
Saving to: `index.html'
100%[===================================================================================================>] 27,673 --.-K/s in 0.01s
2014-11-13 12:51:50 (2.49 MB/s) - `index.html' saved [27673/27673]
Irgendeinen Unterschied zwischen den beiden RPis muss es ja geben.
Fehlen irgendwo schreib-/leserechte auf den Filesystem? Ein anderer User? Eine andere Debian version?
Leider ist so eine tiefe Ferndiagnose relativ schwierig...
Eine weitere Erfolgsmeldung: Modul lies sich schnell einrichten und funktioniert 1A. 8) :D
Hab' die Config von Waldmensch nur mit PV und TC benutzt und werde mal beobachten, ob ich den supoxy jetzt in Rente schicken kann.
Next Step: DBLog statt Filelog
Moin,
wollte mich auch nochmal bedanken, läuft jetzt schon länger vollkommen reibungslos. Außer die SMA-Webseite ist down, was es auch einmal für einen Tag oder so gab.
Anbei ein Screenshot - zeigt eine gut gefüllte Batterie, die den Tag über vom BHKW und begrenzt auch mit PV geladen wird, dann in die Sättigung geht und abends / nachts das Haus betreibt. PV-Strom lade ich deshalb nur begrenzt in die Batterie, weil Einspeisen mehr bringt. BHKW-Überschuss geht wann immer möglich in die Batterie.
Meinen TotalConsume plotte ich nicht in dieser Grafik, weil der SMH zu dumm ist, meinen selbstverbrauchten BHKW-Strom zu sehen. Dafür habe ich einen anderen Plot. Einspeisung/Bezug sind aber eh viel wichtiger :-)
Macht Spaß - klasse Modul!
Viele Grüße,
Schorsch
Hi Brun,
erst einmal danke für das Modul. Ich nutze es nun seit einigen Tagen und es funktioniert bisher ohne Probleme. 8)
Ich logge dabei die Werte FeedIn, GridConsumption und TotalConsumption mit DbLog in eine MySQL DB (Interval 300s und event-on-change-reading).
Dabei ist mir aufgefallen, dass sporadisch keine Daten verfügbar sind, so dass immer mal wieder "null" als String anstatt eines numerischen Werts in der Datenbank landet.
Dieser String führt dann beim SVG Plot regelmäßig zu zahlreichen Warnings im Logfile.
Anbei habe ich dazu zwei Screenshots angefügt.
Wäre super, wenn Du dir das mal ansehen könntest und das "null" z.B. durch 0 ersetzen würdest. :)
Danke und Gruß
dikay
Hallo,
mir geht es ähnlich wie Klaus, Gestern ging es noch sporatisch, aber seit gestern Abend geht gar nichts mehr :'(
LWP bringt bei mir
F:\fhem>lwp-request -E -d https://www.sunny-portal.com
GET https://www.sunny-portal.com
User-Agent: lwp-request/6.03 libwww-perl/6.08
302 Found
Cache-Control: private
Connection: Keep-Alive
Date: Mon, 17 Nov 2014 12:08:34 GMT
Location: /Templates/Start.aspx?ReturnUrl=%2f
Server: Microsoft-IIS/7.5
Content-Length: 152
Content-Type: text/html; charset=utf-8
Client-Date: Mon, 17 Nov 2014 12:08:34 GMT
Client-Peer: 171.25.178.17:443
Client-Response-Num: 1
Client-SSL-Cert-Issuer: /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limite
d/CN=COMODO Extended Validation Secure Server CA
Client-SSL-Cert-Subject: /serialNumber=HRB 3972/1.3.6.1.4.1.311.60.2.1.3=DE/busi
nessCategory=Private Organization/C=DE/postalCode=34266/ST=Hessen/L=Niestetal/st
reet=Sonnenallee 1/O=SMA Solar Technology AG/OU=Issued through SMA Solar Technol
ogy AG E-PKI Manager/OU=COMODO EV Multi-Domain SSL
Client-SSL-Cipher: AES256-SHA
Client-SSL-Socket-Class: IO::Socket::SSL
Set-Cookie: iZmNqKABwz=MDAwM2IyNzU0ZTQwMDAwMDAwMDgwOVgSHT0xNDE2MjMzMDU0; Path=/
Title: Object moved
X-AspNet-Version: 4.0.30319
GET https://www.sunny-portal.com/Templates/Start.aspx?ReturnUrl=%2f
User-Agent: lwp-request/6.03 libwww-perl/6.08
500 Can't connect to www.sunny-portal.com:443
Content-Type: text/plain
Client-Date: Mon, 17 Nov 2014 12:08:34 GMT
Client-Warning: Internal response
Irgent welche Ideen?
Gruß Hermann
Ich habe beim Supoxy SSL aktiviert. Das ging erst gar nicht, bis ich alle möglichen und unmöglichen sowie selfsigned Zertifikate erlaubt habe. Änderung ist im Git - vielleicht ist das Problem hier ähnlich. Brun wird wissen was gemeint ist: https://github.com/Tommy-LSA/supoxy/commit/51c146554ec0be8e4ff4e949fb6697b6f3f8d427
Moin,
welchen Intervall habt ihr denn für die Aktualisierung angegeben?
Ich würde vermuten, dass SMA bei einer zu hohen Abfragefrequenz die Anfragen teilweise/dauerhaft blockt.
Man hat ja auch gelegentlich im normalen Sunny Portal das Problem, dass die Live-Werte nicht angezeigt werden - stattdessen gibt es ein rotes Ausrufezeichen nach einem Timeout des Scripts.
------
Neueste Erkenntnisse: :)
Ich habe seit dem Einsatz des Moduls sporadische Abbrüche der Verbindung zu meinem HMLAN Adapter, was laut Forum bedeutet, dass die komplette FHEM Instanz für über 90s "einfriert" bzw. auf die Antwort des Sunny Portals wartet.
Vermutlich wäre daher die Lösung dieser Probleme die Nachahmung des "original Verhaltens", konkret ein 5s Timeout auf den Request zu setzen, und zum anderen müsste idealerweise der Request irgendwie entkoppelt von FHEM ablaufen, so dass FHEM während des Requests in jedem Fall normal weiter arbeiten kann.
(Hat dazu zufällig jemand ein HowTo? Ich bräuchte dasselbe auch für das SMAspot-/SBFspot-Modul. 8) )
MfG
dikay
Hallo,
die Probleme haben was mit den Zertifikaten zu tun.
Ich kann mir vorstellen, wenn die CA nicht vorhanden ist, dass es zu den Fehler 500 kommt.
Mit folgende wird beim Test der Zertifikatscheck deaktiviert:
export PERL_LWP_SSL_VERIFY_HOSTNAME=0
Vielleicht hilft es die Zertifikate zu aktualisieren:
sudo dpkg-reconfigure ca-certificates
@Herman:
Was bei dir mir aber komisch ist, dass der erste Request erfolgreich ist und der Zweite dann nicht.
Hallo dikay,
Das Modul arbeitet eigentlich non blocking. Es ist also losgelöst. Das Modul holt ja nur eine kleine Datei vom SMA Server. Die bekommt er oder er wird abgewiesen. In dieser Datei steht nur das drin was der SHM vorher ans Portal gemeldet hat. An dieser Stelle kommt es dann zum Timeout. Diese Timeouts stören mein Modul nicht.
Ich habe mit meinen HMLAN keine Probleme feststellen können.
Testweise habe ich mal den updateintervall auf eine Sekunde gestellt. SMA hat mich nicht geblockt. Selbst wenn SMA blocken würde, würde nicht der Fehler 500 kommen.
Zitat von: Brun am 17 November 2014, 20:19:25
Hallo,
die Probleme haben was mit den Zertifikaten zu tun.
Ich kann mir vorstellen, wenn die CA nicht vorhanden ist, dass es zu den Fehler 500 kommt.
Mit folgende wird beim Test der Zertifikatscheck deaktiviert:
export PERL_LWP_SSL_VERIFY_HOSTNAME=0
Vielleicht hilft es die Zertifikate zu aktualisieren:
sudo dpkg-reconfigure ca-certificates
Guten Morgen,
leider keine Veränderung der Situation.
Klaus
Hallo Klaus,
kannst du mal nach den "export" der Variable den "lwp-request" machen.
Das Setzen der Variable hat nur Auswirkung auf die aktuelle Shell Sitzung und somit keine Auswirkung auf FHEM.
Sind bei dir in den Verzeichnis "/etc/ssl/certs/" folgende Zertifikate drin?
Comodo_AAA_Services_root.pem
COMODO_Certification_Authority.pem
COMODO_ECC_Certification_Authority.pem
Comodo_Secure_Services_root.pem
Comodo_Trusted_Services_root.pem
Das sind Verlinkungen auf die .crt Dateien in /usr/share/ca-certificates/mozilla/
Zitat von: Brun am 18 November 2014, 08:09:46
kannst du mal nach den "export" der Variable den "lwp-request" machen.
root@FHEM01:~# export PERL_LWP_SSL_VERIFY_HOSTNAME=0
root@FHEM01:~# lwp-request -E -d https://www.sunny-portal.com
GET https://www.sunny-portal.com
User-Agent: lwp-request/6.03 libwww-perl/6.08
500 Can't connect to www.sunny-portal.com:443
Content-Type: text/plain
Client-Date: Tue, 18 Nov 2014 07:19:54 GMT
Client-Warning: Internal response
Problem bleibt bestehen :(
Zitat von: Brun am 18 November 2014, 08:09:46
Sind bei dir in den Verzeichnis "/etc/ssl/certs/" folgende Zertifikate drin?
Comodo_AAA_Services_root.pem
COMODO_Certification_Authority.pem
COMODO_ECC_Certification_Authority.pem
Comodo_Secure_Services_root.pem
Comodo_Trusted_Services_root.pem
Das sind Verlinkungen auf die .crt Dateien in /usr/share/ca-certificates/mozilla/
Ja, die und noch viel mehr sind enthalten.
Klaus
Hallo Brun,
ja das ist seltsam, gestern ab 17:15 ging es dann mal für ne kurze zeit, dann wieder ..
Bei mir mag der lwp-request nicht mal mehr auf http://localhost:8083/fhem
kommt immer nur noch
500 Can't connect to ...
ich denk ich versuch mal das 98_SHM auf wget oder curl umzustricken ... :(
Firewalls hatte ich mal alle deaktiviert, machte keinen unterschied ...
Gruß Hermann
cURL wäre vielleicht eine alternative.
Allerdings muss ich mich erstmal damit beschäftigen.
@Klaus:
probier bitte mal folgendes und poste mal den Output:
curl -vI https://www.sunny-portal.com
@Hermann:
benutzt du Windows als Server?
Zitat von: Brun am 18 November 2014, 12:10:26
@Klaus:
probier bitte mal folgendes und poste mal den Output:
curl -vI https://www.sunny-portal.com
Scheint zu funktionieren, hier der Outout:
~# curl -vI https://www.sunny-portal.com
* About to connect() to www.sunny-portal.com port 443 (#0)
* Trying 171.25.178.17...
* connected
* Connected to www.sunny-portal.com (171.25.178.17) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using AES256-SHA
* Server certificate:
* subject: serialNumber=HRB 3972; 1.3.6.1.4.1.311.60.2.1.3=DE; businessCategory=Private Organization; C=DE; postalCode=34266; ST=Hessen; L=Niestetal; street=Sonnenallee 1; O=SMA Solar Technology AG; OU=Issued through SMA Solar Technology AG E-PKI Manager; OU=COMODO
* start date: 2013-05-16 00:00:00 GMT
* expire date: 2015-05-16 23:59:59 GMT
* subjectAltName: www.sunny-portal.com matched
* issuer: C=GB; ST=Greater Manchester; L=Salford; O=COMODO CA Limited; CN=COMODO Extended Validation Secure Server CA
* SSL certificate verify ok.
> HEAD / HTTP/1.1
> User-Agent: curl/7.26.0
> Host: www.sunny-portal.com
> Accept: */*
>
* additional stuff not fine transfer.c:1037: 0 0
* HTTP 1.1 or later with persistent connection, pipelining supported
< HTTP/1.1 302 Found
HTTP/1.1 302 Found
< Set-Cookie: iZmNqKABwz=MDAwM2IyNzU0ZTQwMDAwMDAwMDgwGxpuDw8xNDE2MzE2MzA3; Path=/
Set-Cookie: iZmNqKABwz=MDAwM2IyNzU0ZTQwMDAwMDAwMDgwGxpuDw8xNDE2MzE2MzA3; Path=/
< Cache-Control: private
Cache-Control: private
< Content-Length: 152
Content-Length: 152
< Content-Type: text/html; charset=utf-8
Content-Type: text/html; charset=utf-8
< Location: /Templates/Start.aspx?ReturnUrl=%2f
Location: /Templates/Start.aspx?ReturnUrl=%2f
< Server: Microsoft-IIS/7.5
Server: Microsoft-IIS/7.5
< X-AspNet-Version: 4.0.30319
X-AspNet-Version: 4.0.30319
< Date: Tue, 18 Nov 2014 11:12:20 GMT
Date: Tue, 18 Nov 2014 11:12:20 GMT
< Connection: Keep-Alive
Connection: Keep-Alive
<
* Connection #0 to host www.sunny-portal.com left intact
* Closing connection #0
* SSLv3, TLS alert, Client hello (1):
#
Viele Grüße
Klaus
Hallo Bruns,
ja ich teste fhem gerade unter Windows bei mir.
Hab mal jetzt Dein 98_SHM.pm auf curl umgestellt, da funktioniert es bisher ohne Abbrüche ...
Gruß Hermann
Zitat von: Herjemine am 18 November 2014, 15:43:18
Hallo Bruns,
ja ich teste fhem gerade unter Windows bei mir.
Hab mal jetzt Dein 98_SHM.pm auf curl umgestellt, da funktioniert es bisher ohne Abbrüche ...
Gruß Hermann
Hallo Hermann,
klingt super, kannst Du mir den Code zum testen zur Verfügung stellen?
Viele Grüße
Klaus
Hallo Klaus,
schick mir mal Diene Mail, per PN scheint man keine Dateien verschicken zu können.
Gruß Hermann
Hallo,
bei mir funktioniert es jetzt seit 3 Tagen ohne Abbrüche mit cURL!
Hab jetzt auch meinen WR und die Batterieüberwachung im fhem.
Da ich mich erst seit dieser Woche mit fhem beschäftige, stell ich mir jetzt die Newbie Frage,
habt Ihr auch Berechnungen für den Verbrauch in Wh je Tag/Monat .. gemacht, wenn ja wie,
ein entsprechendes Beispiel würde ich mich freuen.
Danke Hermann
Danke für das Skript.
Zwei kurze Fragen:
Hat das jemand gesehen (fhem.log)
2014.11.23 16:02:39 1: PERL WARNING: Argument "null" isn't numeric in subtraction (-) at ./FHEM/98_SHM.pm line 127.
Kann es sein, das das Sunny Portal im Moment ein Problem hat ?
2014-11-23_16:02:39 MySHM ErrorMessages: [Communication with the Sunny Home Manager is currently not possible.\u003cbr/\u003eCheck the Sunny Home Manager Internet connection and try again.]
Danke
Jürgen
Zitat von: JueFi am 23 November 2014, 18:24:18
Kann es sein, das das Sunny Portal im Moment ein Problem hat ?
2014-11-23_16:02:39 MySHM ErrorMessages: [Communication with the Sunny Home Manager is currently not possible.\u003cbr/\u003eCheck the Sunny Home Manager Internet connection and try again.]
ja, die Meldung habe ich seit heute ca. 12:10 Uhr bei mir auch...
Jetzt geht es wieder.
Wie kann ich die erste Zeile plotten ?
Das Feld hat keinen Namen wie z.B. in der 2ten Zeile "AutarkyQuote"
Example lines for input:
2014-11-23_20:23:31 MySHM -981
2014-11-23_20:23:31 MySHM AutarkyQuote: null
2014-11-23_20:23:31 MySHM BatteryChargeStatus: null
Danke
Jürgen
@Jürgen,
das ist der "STATE" Reading.
Ich glaub den kann man nicht Plotten. Werde aber mal ein Reading einbauen.
Das mit den "null" kommt vom Sunny Portal. Das Modul verarbeitet die Werte so wie sie vom Portal kommen.
In einer neuen Version werde ich die "null" Werte nicht mehr übernehmen und dann sollten die Fehlermeldungen weg sein.
Gruß Brun
Habe ein paar Änderungen gemacht und in den ersten Beitrag aktualisiert.
Zitat von: Brun am 24 November 2014, 13:47:21
Habe ein paar Änderungen gemacht und in den ersten Beitrag aktualisiert.
Danke schön - klappt.
Mal schauen, wenn morgen Strom erzeugt wird.
Hallo,
hat einer von Euch auch eine Möglichkeit gefunden den Status der Verbraucher am SHM abzufragen?
Gruß Hermann
Hallo,
die Abfrage der Verbraucher ist noch nicht implementiert. Es steht aber noch auf der Ideenliste.
Könntest du uns vielleicht mal deine cURL Version zur Verfügung stellen?
Vor ein paar Tagen hat SMA eine Schnittstelle veröffentlicht. Damit soll es auch möglich sein andere Verbraucher zu steuern.
Zitat von: Brun am 26 November 2014, 18:41:08
Hallo,
die Abfrage der Verbraucher ist noch nicht implementiert. Es steht aber noch auf der Ideenliste.
Könntest du uns vielleicht mal deine cURL Version zur Verfügung stellen?
Vor ein paar Tagen hat SMA eine Schnittstelle veröffentlicht. Damit soll es auch möglich sein andere Verbraucher zu steuern.
Hallo Brun,
Dass habe ich schon mal mit Hermann kurz andiskutiert, leider habe ich keine Ahnung von Perl, denke aber, dass FHEM ein geniales SEMP Gateway darstellen könnte. Die Verbraucher-Charakteristika ( z.B. Verbrauch, etc) könnte man ja als Attribute in einem GatewayDevice eintragen.
Viele Grüße
Klaus
Gesendet von meinem iPad mit Tapatalk
Zitat von: Brun am 26 November 2014, 18:41:08
Könntest du uns vielleicht mal deine cURL Version zur Verfügung stellen?
Hi ich habe auch den SMA Homemanger mit Bluetooth Steckdosen
Wo finde ich die cURL Version und was ist das ?
Könnte man Alternativ nicht auch einen Bluetooth Stick an den Pi hängen ?
Viele Grüße
Jürgen
Hallo Brun,
ich übernehme noch Deine letzte Änderung, dann lad ichs hier hoch.
Mist den neuen SEMP Tread im PV Forum hab ich verschlafen :'(
hat sich jemand von Euch die Beispiele von SMA gespeichert die Christian eingestellt hatte?
Hallo Jürgen,
das ganze hat nichts mit den BT Steckdosen zu tun, es kann im Moment nur die Daten vom Portal in fhem einlesen,
die curl Version verwendet dafür nur eine andere Abfrage
Gruß Hermann
Hallo Jürgen,
Ich verwende bei meinen Modul LWP Liberies. Diese verarbeiten den Webzugriff auf das Portal. Neben LWP gibt es auch noch cURL. Hermann hatte mein Modul auf cURL umgebaut.
Allein mit einen Bluetooth Stick ist es leider nicht getan. Mann muss sich dann noch um das Protokoll kümmern und das ist leider nicht offen.
Gruß Brun
Zitat von: Brun am 27 November 2014, 10:48:42
Ich verwende bei meinen Modul LWP Liberies. Diese verarbeiten den Webzugriff auf das Portal. Neben LWP gibt es auch noch cURL.
Hallo Brun,
Verstehe. Wie steht dann HTTPMOD zu diesen beiden ?
Danke
Jürgen
Hallo Brun,
hier mal meine cURL Variante, das Unterdrücken der nul Werte im Log ist ne gute Idee!
Nach dem bei mir die EdiMax EdiPlug abfrage über die HttpUtils gut funktioniert,
stell ich den SHM event. auch noch dahin um.
Gruß Hermann
axo Thema SMA semp
ich komme in nächster Zeit nicht dazu mich damit zu beschäftigen, Hauptproblem sehe ich im Discovery, wenn darüber mal die Verbindung steht,
sieht die http Kommunikation eigentl. recht einfach aus ...
Falls sich jemand von Euch daran versuchen möchte, ich habe inzwischen die Doku und die C++ Beispiel Anwendung.
Gruß Hermann
Zitat von: Klaus Rubik am 28 Oktober 2014, 13:16:44
Hallo,
habe es heute auch mal ausprobiert, jedoch erhalte ich keine Werte. Bei Verbose 5 erhalte ich im Log folgende Meldungen:
2014.10.28 13:09:19 5: SMA -> 500
2014.10.28 13:09:19 4: not logged in. try to login...
2014.10.28 13:09:19 5: SMA -> 500
2014.10.28 13:09:19 5: SMA -> 500
2014.10.28 13:09:24 5: SMA -> 500
Passwort und Userkey sind definitiv richtig. Irgend einen Tipp woran es liegen könnte?
Danke
Klaus
Hallo,
nachdem ich Perl mit allen Modulen komplett deinstalliert und dann neu installiert habe funktioniert es!! Danke an Brun für den Hinweis.
Klaus
Ich kriege auf einem frisch aufgesetzten Raspbian, mit dem Modul aus dem ersten Beitrag
Can't locate LWP/UserAgent.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/98_SHM.pm line 30.
BEGIN failed--compilation aborted at ./FHEM/98_SHM.pm line 30.
Was fehlt da bzw wie kann ich das fixen?
Edit: Habe dies gefunden, ausgeführt, Fehler weg: http://michael.stapelberg.de/cpan/
Edit2: Scheint zu laufen aber wirft nur fehler. Verbose 5
2014.12.17 15:43:29 5: MySHM -> 501
2014.12.17 15:43:29 5: MySHM -> 501
2014.12.17 15:43:29 4: not logged in. try to login...
2014.12.17 15:43:29 5: MySHM -> 501
2014.12.17 15:43:29 5: MySHM -> 501
2014.12.17 15:43:30 5: MySHM -> 501
2014.12.17 15:43:30 4: not logged in. try to login...
2014.12.17 15:43:30 5: MySHM -> 501
2014.12.17 15:43:30 5: MySHM -> 501
2014.12.17 15:43:30 5: MySHM -> 501
2014.12.17 15:43:30 4: not logged in. try to login...
2014.12.17 15:43:30 5: MySHM -> 501
2014.12.17 15:43:30 5: MySHM -> 501
Hallo,
dier Fehlercode 501 heist "Not Implemented".
Auf was für einen Betriebssystem dein FHEM laufen.
Wenn es ein Ubuntu/Debian ist, dann empfehle ich dir diese Pakete.
apt-get install libnet-https-any-perl sollte eigentlich alle Abhängigkeiten mit auflösen.
Gruß Brun
Der FHEM läuft auf einem aktuellen Raspbian. Ich habe das Paket installiert aber leider hat sich nichts geändert. Nach der Paketinstallation habe ich FHEM mit shutdown restart neu gestartet. Unten das Log der Paketinstallation.
root@raspberrypi:/media/usbdisk/opt/fhem/FHEM# apt-get install libnet-https-any-perl
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libtie-ixhash-perl liburi-perl
Suggested packages:
libwww-perl
The following NEW packages will be installed:
libnet-https-any-perl libtie-ixhash-perl liburi-perl
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 122 kB of archives.
After this operation, 391 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libtie-ixhash-perl all 1.21-2 [12.0 kB]
Get:2 http://mirrordirector.raspbian.org/raspbian/ wheezy/main liburi-perl all 1.60-1 [100 kB]
Get:3 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libnet-https-any-perl all 0.10-3 [9,684 B]
Fetched 122 kB in 0s (173 kB/s)
Selecting previously unselected package libtie-ixhash-perl.
(Reading database ... 73521 files and directories currently installed.)
Unpacking libtie-ixhash-perl (from .../libtie-ixhash-perl_1.21-2_all.deb) ...
Selecting previously unselected package liburi-perl.
Unpacking liburi-perl (from .../liburi-perl_1.60-1_all.deb) ...
Selecting previously unselected package libnet-https-any-perl.
Unpacking libnet-https-any-perl (from .../libnet-https-any-perl_0.10-3_all.deb) ...
Processing triggers for man-db ...
Setting up libtie-ixhash-perl (1.21-2) ...
Setting up liburi-perl (1.60-1) ...
Setting up libnet-https-any-perl (0.10-3) ...
root@raspberrypi:/media/usbdisk/opt/fhem/FHEM#
EDIT: Habe grad das "suggested package" gelesen. Habe dann ein apt-get install libwww-perl gemacht und schon geht es ;D
Hallo zusammen,
ich bin bisher stiller Leser im Forum und habe seit zwei Tagen einen Raspberry PI mit FHEM und dem Originalkonfigurationsstick mit HMCfgusb zum laufen bekommen. Momentan aktiv ein Thermostat und ein 1 fachen UP Aktor. Der Thermostat schaltet den selbigen ein und aus. Geplant ist natürlich noch ein weiterer Ausbau des ganzen.
Im Besitz befindet sich zusätzlich eine SMA 6,8kwp Anlage mit Homemanager 2 Funksteckdosen und den Zähler von SMA. Als ich gelesen habe das es möglich ist das Sunnyportal auszuwerten habe ich mich auch gleich dran gemacht und versucht das ganze zu implementieren. Die Daten werden auch korrekt gelesen und geladen.
Ich hoffe ihr könnt mir noch weiterhelfen. Ich verstehe das mit dem Plot zeichnen nicht. Ihr habt alle so schöne Screenshots angehängt.
Brauche ich dafür eine Gplot Datei auf dem FHEM? Wie erstelle ich diese?
Vielen Dank für eure Hilfe.
Gruß
Michael
Es zeigt sich mal wieder wer lesen kann ist klar im Vorteil :-) Hab den Editor gefunden. Sieht zwar noch nicht so hübsch aus aber er macht was aus den Werten.
Danke für das tolle Modul, funktioniert einwandfrei.
Nachdem ich nun die den aktuellen status der PV im FHEM habe, würde ich gerne statusabhängig Geräte schalten.
z.B. wenn PV > 2000 pumpe an
da ich totaler FHEM Neuling bin, schnall ich nicht wie man z.B. das MySHM state dazu benutz ein Gerät zu schalten.
Hat einer einen tip für mich ?
habs mal so versucht ohne Erfolg:
define PvBilanz notify MySHM.* {
if ($EVTPART1 < 1000 ) {
fhem('set pumpe off');
}else {
if ($EVTPART1 > 2000 ) {
fhem('set pumpe on');
}
}
}
bin für jede Hilfe dankbar
Schau dir mal DOIF oder Threshold an :)
Gesendet von meinem iPad mit Tapatalk
Danke für den Tipp mit DOIF funktioniert es:
define PVueber1000 DOIF ([MySHM:state] > 1000) (set pumpe on) DOELSE (set pumpe off)
attr PVueber1000 do always
Gute gemacht - Vielen DANK!
Hi
Bis Gestern hat alles wunderbar funktioniert nur jetzt hängt es und wird nicht mehr aktualisiert.
Ein Neustart hat auch nicht geholfen.
2015.05.16 22:34:38 5: MySHM -> 500
2015.05.16 22:34:38 4: not logged in. try to login...
2015.05.16 22:34:38 5: MySHM -> 500
2015.05.16 22:34:38 5: MySHM -> 500
Woran könnte das liegen?
Zitat von: ixsus300 am 05 März 2015, 20:17:26
Danke für den Tipp mit DOIF funktioniert es:
define PVueber1000 DOIF ([MySHM:state] > 1000) (set pumpe on) DOELSE (set pumpe off)
attr PVueber1000 do always
Hallo.
Ich weiss nicht wieviel deine Pumpean Leistung zieht, aber wenn du bei > 1000 einschaltest, könntest du bei < 1 abschalten.
Und nicht wie jetzt bei < 1000.
z.b.
define PVueber1000 DOIF ([MySHM:state] > 1000) (set pumpe on) DOELSE ([MySHM:state] < 1) (set pumpe off)
hat den vorteil das pumpe solange läuft solange der überschuss grösser 1 ist.
Hallo,
bis gestern um 07:29 lief SHM bei mir sehr zuverlässig. Seitdem erhalte ich nur die Meldung "not logged in. try to login..." :(
Bin nicht der große Linuxer aber,
bei vorigen Problemmeldungen wurde immer nach dem lwp-request gefagt. Hier die Ausgabe bei mir:
lwp-request -E -d https://www.sunny-portal.com
GET https://www.sunny-portal.com
User-Agent: lwp-request/6.09 libwww-perl/6.13
500 Can't connect to www.sunny-portal.com:443
Content-Type: text/plain
Client-Date: Sat, 16 May 2015 20:09:53 GMT
Client-Warning: Internal response
der lwp-request auf die http Seite scheint mir interessanter. Der scheint auf die HTTPS-Seite weitergeleitet zu werden. Dabei gibt es wohl ein Zertifikatsproblem:
lwp-request -E -d http://www.sunny-portal.com
GET http://www.sunny-portal.com
User-Agent: lwp-request/6.09 libwww-perl/6.13
301 Moved Permanently
Connection: close
Date: Sat, 16 May 2015 20:18:01 GMT
Location: http://www.sunnyportal.com/
Server: Apache
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Client-Date: Sat, 16 May 2015 20:18:01 GMT
Client-Peer: 80.92.90.41:80
Client-Response-Num: 1
Status: 301 Moved Permanently
X-Powered-By: PHP/5.1.6
GET http://www.sunnyportal.com/
User-Agent: lwp-request/6.09 libwww-perl/6.13
302 Moved Temporarily
Location: https://www.sunnyportal.com/
Content-Length: 0
Client-Date: Sat, 16 May 2015 20:18:01 GMT
Client-Peer: 171.25.178.17:80
Client-Response-Num: 1
GET https://www.sunnyportal.com/
User-Agent: lwp-request/6.09 libwww-perl/6.13
500 Can't connect to www.sunnyportal.com:443 (certificate verify failed)
Content-Type: text/plain
Client-Date: Sat, 16 May 2015 20:18:01 GMT
Client-Warning: Internal response
Wenn ich die Seite im Firefox lokal auf meinem Server aufrufe wird die Seite jedoch normal aufgerufen.
Seitdem ich das Comodo-Zertifikat COMODO RSA Extended Validation Secure Server CA im Firefox importiert habe komme ich dort auch keine Zertifikatsfehlermeldung mehr.
Als OS wird Open SUSE 13.2 eingesetzt.
Hat jemand eine Idee, oder ähnliche Beobachtungen gemacht?
Gleiches bei mir ... da hat SMA wohl etwas an den Servern verstellt...
Habe das selbe Problem :(
Vielleicht findet ja jemand die Änderung oder den Fehler
SMA hat sich scheinbar ein neues Zertifikat geholt was nicht vom LWP validiert werden kann.
Ich habe mal die Prüfung des SSL Zertifikats deaktiviert. Nun sollte es wieder gehen.
Achtung!!!
Allerdings ist jetzt eine "Man in the middle Attacke" möglich und es können die Portal Daten abgefangen werden!
Benutzt daher bitte als Portal User nur einen unpreviligierten Benutzer der nichts verstellen kann.
Gruß Brun
Hallo Brun,
damit funktioniert es erstmal wieder. Viele Dank :)
Hallo Brun,
habe dein Modul seit ein paar Monaten im Einsatz. Hat bisher prima funktioniert. Jezt habe ich auch das Problem.
Habe das neue "98_SHM.pm" in das Verzeichnis opt/fhem/FHEM/ kopiert.
Leider erhalte ich jezt die Meldung "configfile: Cannot load module SHM".
Was mache ich falsch?
Vielen Dank im Voraus.
Hi
seit heute Mittag 12 Uhr geht es wieder.
Die neue Datei habe ich noch nicht eingefügt. Danke aber für deine Hilfe.
Hallo zusammen,
bei mir funktioniert es jezt auch.
War wohl zu ungeduldig.
Bei mir kommt mit der neuen Datei auch die Fehlermeldung "configfile: Cannot load module SHM"
Die alte Datei funktioniert seit ein paar Tagen wieder nicht mehr.
Bin ich der einzigste bei dem es im Moment nicht mehr geht?
Was mache ich denn falsch?
Hallo Kalli01,
bei mir hatte das neue Modul die gleiche Fehlermeldung. Das alte Modul funktioniert.
Dabei ist mir aufgefallen das ich beim SMA Home Manager nicht als Gast angemeldet sein darf!
Hi MC_Fhem du bist mein Retter :)
Einfach im Portal von Gast auf Standartbenutzer umschalten.
Danke
Hallo,
ich hab das Modul bei mir auch installiert, läuft! Dankeschön für die Arbeit :)
Eine Frage habe ich aber noch: Die BT-Steckdosen kann man ja (noch?) nicht per fhem schalten, aber es müsste doch theoretisch möglich sein, deren Werte auszulesen? Immerhin sendet der HomeManager den ganze Kram ja auch ins Portal ...
Hat das schon jemand hinbekommen? Wäre halt schön, wenn man auch eine Nachricht bekommt (von fhem, zB über einen Pushdienst), wenn Wasch- und Spülmaschine fertig sind :)
Das hatte ich bisher mti HomeMatic Steckdosen eingerichtet, war sehr praktisch und fehlt mir jetzt.
... eine Alternative wäre natürlich, vor die SMA-BT-Steckdose noch eine reine MessSteckdose zu klemmen und diese per fhem auszulesen - aber schön ist anders ;-)
Viele Grüße und besten Dank
spilu
Hallo Brun,
kannst Du bitte mal folgendes anschauen?
http://forum.fhem.de/index.php/topic,38743.0.html
Danke
Klaus
Zitat von: dikay am 17 November 2014, 20:12:52
Moin,
welchen Intervall habt ihr denn für die Aktualisierung angegeben?
Ich würde vermuten, dass SMA bei einer zu hohen Abfragefrequenz die Anfragen teilweise/dauerhaft blockt.
Man hat ja auch gelegentlich im normalen Sunny Portal das Problem, dass die Live-Werte nicht angezeigt werden - stattdessen gibt es ein rotes Ausrufezeichen nach einem Timeout des Scripts.
------
Neueste Erkenntnisse: :)
Ich habe seit dem Einsatz des Moduls sporadische Abbrüche der Verbindung zu meinem HMLAN Adapter, was laut Forum bedeutet, dass die komplette FHEM Instanz für über 90s "einfriert" bzw. auf die Antwort des Sunny Portals wartet.
Vermutlich wäre daher die Lösung dieser Probleme die Nachahmung des "original Verhaltens", konkret ein 5s Timeout auf den Request zu setzen, und zum anderen müsste idealerweise der Request irgendwie entkoppelt von FHEM ablaufen, so dass FHEM während des Requests in jedem Fall normal weiter arbeiten kann.
(Hat dazu zufällig jemand ein HowTo? Ich bräuchte dasselbe auch für das SMAspot-/SBFspot-Modul. 8) )
MfG
dikay
Hallo,
gibt es dazu etwas neues? Ich habe seit ein paar Wochen auch einen HMLAN Adapter im Einsatz, welcher sich alle paar Minuten reconnected. APPTIME zeigt, dass SHM immer sehr lange braucht.
Klaus
Momentan noch nicht.
Ich hatte mal mit der BlockingCall Funktion experimentiert aber noch nicht in das Modul übernommen.
Steht noch auf der Agende.
Gruß Brun
Zitat von: Brun am 10 Juli 2015, 13:48:21
Momentan noch nicht.
Ich hatte mal mit der BlockingCall Funktion experimentiert aber noch nicht in das Modul übernommen.
Steht noch auf der Agende.
Gruß Brun
Danke für das Feedback, wenn ich eine Version testen soll, lass es mich wissen ;)
Guten morgen, seit gestern 23:00 bekomme ich keine Werte mehr. Im Log verbose 5 sieht eigentlich alles OK aus. Sunny Portal Webseite funktioniert auch. Hat das noch jemand?
2015.07.20 08:08:49 4: not logged in. try to login...
2015.07.20 08:08:50 5: MySHM -> 302
2015.07.20 08:08:51 5: MySHM -> 200
2015.07.20 08:09:52 5: MySHM -> 200
2015.07.20 08:09:52 5: MySHM -> 200
2015.07.20 08:09:52 4: not logged in. try to login...
2015.07.20 08:09:53 5: MySHM -> 302
2015.07.20 08:09:53 5: MySHM -> 200
2015.07.20 08:10:54 5: MySHM -> 200
2015.07.20 08:10:55 5: MySHM -> 200
2015.07.20 08:10:55 4: not logged in. try to login...
2015.07.20 08:10:55 5: MySHM -> 302
2015.07.20 08:10:56 5: MySHM -> 200
2015.07.20 08:11:57 5: MySHM -> 200
2015.07.20 08:11:57 5: MySHM -> 200
2015.07.20 08:11:57 4: not logged in. try to login...
2015.07.20 08:11:58 5: MySHM -> 302
2015.07.20 08:11:59 5: MySHM -> 200
2015.07.20 08:12:59 5: MySHM -> 200
2015.07.20 08:13:00 5: MySHM -> 200
2015.07.20 08:13:00 4: not logged in. try to login...
Das waren die letzten Logeinträge:
2015-07-19_22:55:22 MySHM TotalConsumption: 475
2015-07-19_22:55:22 MySHM GridConsumption: 475
2015-07-19_22:56:23 MySHM TotalConsumption: 473
2015-07-19_22:56:23 MySHM GridConsumption: 473
2015-07-19_22:57:24 MySHM TotalConsumption: 477
2015-07-19_22:57:24 MySHM GridConsumption: 477
2015-07-19_22:59:25 MySHM TotalConsumption: 473
2015-07-19_22:59:25 MySHM GridConsumption: 473
2015-07-19_23:01:26 MySHM TotalConsumption: 472
2015-07-19_23:01:26 MySHM GridConsumption: 472
2015-07-19_23:02:27 MySHM TotalConsumption: 470
2015-07-19_23:02:27 MySHM GridConsumption: 470
2015-07-19_23:03:27 MySHM TotalConsumption: 474
2015-07-19_23:03:27 MySHM GridConsumption: 474
2015-07-19_23:04:30 MySHM TotalConsumption: 475
2015-07-19_23:04:30 MySHM GridConsumption: 475
ich habe mal den JSON am Portal gesniffed, eventuell hat sich da was geändert?
{
"__type": "LiveDataUI",
"Timestamp": {
"__type": "DateTime",
"DateTime": "2015-07-20T09:12:53",
"Kind": "Unspecified"
},
"PV": 1717,
"FeedIn": 1166,
"GridConsumption": 0,
"DirectConsumption": null,
"SelfConsumption": 551,
"SelfSupply": 551,
"TotalConsumption": 551,
"DirectConsumptionQuote": null,
"SelfConsumptionQuote": 32,
"AutarkyQuote": 100,
"BatteryIn": null,
"BatteryOut": null,
"BatteryChargeStatus": null,
"OperationHealth": {
"__type": "StateOfHealth",
"Ok": 2,
"Warning": 0,
"Error": 0,
"Unknown": 0
},
"BatteryStateOfHealth": null,
"InfoMessages": [],
"WarningMessages": [],
"ErrorMessages": [],
"Info": {}
}
hat sich erledigt! Hatte gestern ein neues Startskript eingebaut. Dort hatte ich vergessen in den FHEM Pfad zu wechseln. Damit schlug das mycookie.txt fehl, was in ./log gespeichert wird. Um so viel ecken kann man gar nicht denken ;D
Moinsen. Nachdem ich das Script am laufen habe (Respekt, läuft genial) und es zudem geschafft habe das ganze auf DBLOG umzustellen, stehe ich nun vor einem Problem bzw. vor einer Aufgabe, bei der ihr sicherlich wisst, wie das geht.
Ich hab es in einem anderen Bereich auch schon geschrieben, da antwortet aber leider keiner.
Die Situation ist, das ich eine Klimaanlage habe, die bei einer PV Überschussleistung von 3000 Watt schalten soll. Das über einen FS20 Schalter. Jetzt mag es die Klimaanlage sicher nicht, wenn sie taktet. Das kann einerseits passieren, wenn sich Wolken und Sonne abwechseln, es könnte aber auch sein, das ein anderer Verbraucher sehr viel Strom nimmt.
Mein erster Gedanke war: on.for timer setzen. Aber dann würde er diesen Befehl ja bei jedem Durchlauf wieder und wieder senden, worauf der FS20 von vorne startet.
Vielleicht wäre folgender Lösungansatz richtig:
Schaltbefehlt geht bei PV Überschuss raus mit on-for timer (Vielleicht eine Stunde oder so). Ca. 20 Sekunden vor Ablauf der Zeit prüft ein script, ob immer noch Überschuss besteht und sendet den Befehl neu, ansonsten geht der Schalter automatisch aus.
Eine Verfeinerung wäre es, wenn man eine Kontrolle hätte, ob die Klimaanlage denn auch läuft (PV Überschuss -1350 Watt(das nimmt die Klimaanlage)) Aber das wäre sicher nur ein Schmankerl.
Konnte ich mich verständlich ausdrücken und hat da jemand eine Idee? Ich bin da leider nicht so der Profi.
Ich schalte meine Poolpumpe abhängig von der Einspeisung (FeedIn). Ab 2000W Einspeisung schaltet sich die Pumpe ein und bei < 1000W Einspeisung wieder aus. Als 3. Parameter habe ich noch eine Höchstlaufzeit von 4h pro Tag, die ich über den "hourcounter" ermittle. Realisiert ist das ganze mit DOIF. Dort kannst Du auch Hysteresen einstellen. Beispiel die >2000W müssen 5 Minuten anliegen zum einschalten und die <1000W müssen 3 Minuten anliegen zum ausschalten. Sonst geht die Pumpe bei jeder Wolke aus.
ich poste heute Abend mal die Config dazu. Aktuell komme ich nicht ran. Die grobe Richtung sollte aber mit der deutschen commandref zu DOIF und hourcounter klar sein.
Tja, da waren sie wieder, meine drei Probleme. Ich kann sowas lesen, klar, verstehen ist wieder was anderes und umsetzen sowieso. Wäre nett, wenn Du Deine Config postest. Mal schauen, ob ich dahinter steige und dann adaptieren kann.
Also, meine config:
Das ist die Steckdose für die Pumpe
define Steckdose_Pool FS20 4455 50
attr Steckdose_Pool IODev COC
attr Steckdose_Pool alias Steckdose Pool
attr Steckdose_Pool room FS20
Das ist der Betriebsstundenzähler, der die Poolsteckdose überwacht (die unnötigen Werte werden nicht in dblog geschrieben):
define PoolCounter HourCounter Steckdose_Pool:on Steckdose_Pool:off
attr PoolCounter DbLogExclude tickHour,countsPerDay,countsOverall,pauseTimeIncrement,pauseTimePerDay,pauseTimeOverall,state,pulseTimeIncrement,pulseTimeOverall,pulseTimeEdge,pauseTimeEdge,tickUpdated,tickChanged,tickDay,tickWeek
attr PoolCounter event-min-interval .*:600
attr PoolCounter event-on-change-reading .*
attr PoolCounter group Pool
attr PoolCounter interval 5
attr PoolCounter room Control
Und hier nun die eigentliche Steuerung mit DOIF:
define pool_solar
DOIF ([PoolCounter:pulseTimePerDay] >= 14400 and [Steckdose_Pool:state] eq "on")
(set Steckdose_Pool off)
DOELSEIF ([MySHM:FeedIn] < 1000 and [Steckdose_Pool:state] eq "on")
(set Steckdose_Pool off)
DOELSEIF ([MySHM:FeedIn] > 2000 and [10:00-18:00] and [Steckdose_Pool:state] eq "off" and [PoolCounter:pulseTimePerDay] < 14400)
(set Steckdose_Pool on)
attr pool_solar alias Pool bei PV Überschuss
attr pool_solar group Pool
attr pool_solar room Control
attr pool_solar wait 1:120:300
Das erste DOIF fragt den Betriebsstundenzähler ab, ob schon 4h rum sind. Falls ja und die Steckdose ist noch an -> ausschalten.
Das erste DOELSEIF fragt SHM ab ob die Einspeisung kleiner 1000 ist. Falls ja und die Steckdose ist noch an -> ausschalten.
Das zweite DOELSEIF fragt ab ob die Einspeisung größer 2000 ist, wir im Zeitfenster 10-18 Uhr sind und die Pumpe noch keine 4h gelaufen ist. Falls ja und die Steckdose ist aus -> einschalten.
Das attr pool_solar wait 1:120:300 sorgt dafür, das der Zustand des ersten Kommando 1 Sekunde, des 2. 120 Sekunden und des 3. 300 Sekunden bestehen muß. Also wird die Pumpe frühestens 10:05 eingeschaltet wenn 2000W Einspeisung anliegt, da das Kommando sich das ja erstmal 300Sek (5 Minuten) angeschaut hat.
Bei den DOIF ist die logisch korrekte Reihenfolge wichtig, da der erste Treffer genommen wird
Wie das Grafisch aussieht siehst du in den Anhängen. Das eine ist die Visualisierung der Pumpenschaltung und das andere das Log der Solaranlage am gleichen Tag
Also zunächst mal...Respekt! :o
Code 1: Steckdose.
Passt, die hab ich ähnlich.
Code 2: Hourcounter
Das kannte ich gar nicht, hab es so übernommen und schau mir das morgen während des Betriebes an. Der Hintergrund ist angekommen.
Code 3: DOIF
Bei den ersten drei mal lesen hab ich mich gefragt, was an geraucht haben muss um das zu verstehen. Aber mittlerweile steige ich dahinter. Logik verstehen ok, sie in einer Formel zu begreifen:tricky. Aber langsam gehts.
Ohne solche Beispiele würde ich das nicht verstehen.
Ich sage mal recht herzlichen Dank für die Hilfe und ausgiebigen Antworten, damit kann ein Halbanfänger etwas anfangen!
Danke nochmal
Naja, so schwer ist es nicht, wenn man sich erstmal reinversetzt hat. Schlimm ist es nur, wenn ma wie ich schon 3x die komplette Config wg. SD-Card crash auf dem Raspi verloren hat. Mittlerweile habe ich mein NAS per NFS gemounted und schreibe jede Nacht das komplette FHEM Verzeichnis als Backup weg.
2 Sachen noch zur config oben:
1. Der Hourcounter muss aktuell sein. Meine: VERSION 1.0.1.2 - 24.12.2014. Ältere Versionen kennen das attribut "Interval" nicht und schreiben die readings nur bei steigender oder fallender Flanke (also wenn sich was tut). Wir brauchen aber die Betriebsstunden immer aktuell. Dafür sorgt Intervall
2. Das DOIF Komando steht bei mir komplett in einer Zeile. Ich habe das nur umgebrochen um es dir mit etwas Struktur zu zeigen. Es kann sein, das das so 1:1 in eine Config kopiert nicht funktioniert. Als dann alles hintereinander ohne Zeilenumbrüche und Tabs.
Der Raspi isz nagelneu aufgesetzt, Fhem auch. Deshalb sollte Hourcounter aktuell sein.
Das DOIF habe ich dann auch gemerkt. Beim in eine Zeile nehmen habe ich dann auch gleich mal eine eckige Kkammer mit eleminiert... War dann witzig bis ich den Fehler gefunden habe.
Aber es scheint bisher zu laufen, mehr kann ich ja erst bei Sonne sagen.
Eigentlich steckt in der Geschichte mit der PV Anlage soviel Potential.
Danke
Schau lieber nach der Version, ich habe auch neu aufgesetzt und hatte eine ältere, die nicht mit intervall funktionierte.
Zum Potenzial: Na logisch, prinzipiell kannst Du damit die Bluetooth Steckdosen von SMA einsparen. Wenn Du der 70% Regel unterliegst kannst Du in den Abregelspitzen zum Beispiel einen Heizstab für einen Warmwasserspeicher zuschalten. Lieber warmes Wasser als den vorhandenen Überschuss ungenutzt verpuffen lassen.
Hier nochmal eine ganz aktuelle Ansicht des Sunny Portal, wie nach 2 Minuten <1000W die Pumpe abschaltet. Die Pumpe selbst schlägt mit ca. 500W zu Buche.
Hallo zusammen, ich habe heute das SHM Modul bei mir eingebunden. Ich bekomme direkt die gleiche Fehlermeldung wie Waldmensch (Antwort #102, 20 Juli 2015).
2015.10.14 20:55:43 4: not logged in. try to login...
2015.10.14 20:55:44 5: PVAnlage -> 302
2015.10.14 20:55:45 5: PVAnlage -> 200
2015.10.14 20:56:45 5: PVAnlage -> 200
2015.10.14 20:56:45 4: not logged in. try to login...
2015.10.14 20:56:46 5: PVAnlage -> 302
2015.10.14 20:56:47 5: PVAnlage -> 200
2015.10.14 20:57:47 5: PVAnlage -> 200
Ich habe allerdings kein besonderes Startstript. Auch die Datei mycookie.txt ist im Ordner ./log vorhanden und die Datei enthält einen Eintrag vom Sunny Portal. Fehlende Berechtigungen würde ich also ausschließen.
Hat jemand eine Idee?
Habe doch noch mal den Thread durchgeblättert. Das Problem war der Gast-User.
Ich habe den Read-Only user im ersten Post falsch verstanden. Der Standarduser im Sunnyportal darf ja die Steckdosen schalten.
Zitat
Achtung!
Das Passwort ist dann allerdings im FHEM als Klartext ersichtlich. Ich habe mir dazu einen ReadOnly User im Portal angelegt und würde dies jeden dringenst empfehlen.
@Brun
Vielleicht kannst du den Read only user ja in "Standardbenutzer" ändern.
Moin
Habe jetzt erst das Modul gesichtet.
Super Arbeit.
Aber bei mir scheint was nicht richtig zu sein.
Version: !!!BETA!!! V0.1.1 / s.h. Anhang
positives Feedback meinerseits an Brun: läuft jetzt alles prima, ich musste aber einiges querlesen und ein bisschen experimentieren. Hab die Gelegenheit genutzt und das FHEM Wiki zum Modul aktualisiert.
@Michael: so sah es bei mir auch aus, als ich noch den "Gast"-Berechtigungen genutzt habe. Mit "Standardbenutzer"-Rechten im Sunnyportal läuft's jetzt bei mir :-)
Hallo zusammen,
auch von mir ein herzliches Dankeschön für dieses Modul. Das Übernehmen der Werte vom Portal ist wirklich genial.
Bei mir sieht es allerdings auch so aus wie bei @Michael - trotz Standardbenutzer-Rechten (wie von @Regengott erwähnt).
@Michael: ist es bei dir immer noch so wie auf deinem Bild?
Ich möchte gerne die Vorschauwerte (also das zukünftige Wetter, erwarteter Ertrag der PV-Anlage sowie den Glühbirnen-Hinweis, ob man Geräte einschalten soll) in Fhem übernehmen. Ich werde dabei das JSON-Modul nutzen (so wie z. B. im Modul 70_XBMC.pm).
Besteht hier allgemeines Interesse?
Ich habe mir die Readings so vorgestellt:
ThisHour_IsConsumptionRecommended = 1 oder 0 (oder "true"/"false" oder so)
ThisHour_PvMeanPower = 1234 (in Wh)
ThisHour_ConsumptionForecast = 123 (wird in Joule übermittelt, evtl. Umrechnung in Wh)
ThisHour_Time = "2016-02-14 15:00:00"
NextHour01_IsConsumptionRecommended...
...
NextHour02_Time = "2016-02-14 16:00:00"
NextHour03_...
usw. für die nächsten 10 Stunden.
Mit JSON würde ich dann auch gleich die bisherige Abfrage parsen und die ErrorMessages, WarningMessages und InfoMessages als Zähler erfassen, so dass ich darauf innerhalb Fhem reagieren kann. Wie oben geschrieben, wird es bei mir im Moment wie bei Michael dargestellt. Bei JSON sehe ich den Vorteil, dass man nicht split benutzen muss, was evtl. fehleranfällig ist.
Meinungen? Vorschläge?
@BerndArnold: Also mich würden diese Forecast-Werte schon interessieren - mir schwebt vor, im Sommer ein Klimagerät im Schlafzimmer dann anzuschalten, wenn die PV eigentlich in die 70%-Begrenzung gehen würde :) Derzeit hadere ich aber noch mit der Sinnhaftigkeit dieses Unterfangens...
Bei dem Auslesefehler kann ich leider nicht weiterhelfen, sorry.
Moin@BerndArnoldZitat... ist es bei dir immer noch so wie auf deinem Bild?
Ja, es hat sich nichts geändert.
@Regengott @BerndArnoldHabe alle User Rechte getestet (Gast,Standard, Admin) ohne Erfolg.
Programmieren kann ich
leider nicht, aber Testen. :)
Vielen Dank für eure Antworten!
Danke für dein Feedback, Michael.
Ich habe es jetzt schon so weit, dass DateTime und InfoMessagesCount etc. richtig gesetzt werden. Das ist noch nicht perfekt, weil DateTime doppelt gesetzt wird, aber es funktioniert bei mir.
Wer ausprobieren möchte: Datei ersetzen (siehe Anhang) und dann reload 98_SHM
im Kommando-Eingabefeld ausführen.
Edit: Bild noch angehängt.
Servus.
Für den Forecast hatte ich schon mal ein Modul gebastelt. Ich werde es bei Gelegenheit mal posten.
Gruß Brun
Hallo Brun,
das wäre echt super. Ich hänge jetzt hier mal meinen aktuellen Stand an. Einige Sachen sind bei mir noch zu machen. Im Moment werden die nächsten 24 Stunden übernommen und es wird bei jedem regulären Aufruf aktualisiert. Das müsste aus meiner Sicht nicht sein. Evtl. kann man das ja parametrisieren (also ob überhaupt die Vorhersage erfasst und wie oft aktualisiert werden soll).
Im Anhang ist die angepasste PM-Datei (erfordert das JSON-Modul) und ein aktuelles Bild.
Hallo an alle,
ich habe mal mein Engangsbeitrag aktualisiert und das Modul für den Forecast mit angehängt.
Gruß Brun
Hallo Brun,
vielen Dank, dein Forecast-Modul läuft schon :)
Hallo ,
vor einer ca. Woche habe ich das SHM-Modul installiert (tiefer eingestiegen in FHEM vor ca. zwei Wochen, Tolle Plattform).
Leider habe ich Probleme mit dem einloggen:
Json laeuft
User im Sunny-Portal als Std-Benutzer
(direkter Login am SMA-Portal funktionert)
liefert die Fehlermeldung 302 & 200 ('not logged in. try to login...')
nach naeherem Hinsehen festgestellt, dass der Pfad fuer die Cookies nicht existiert
Fehlt mir da noch ein Modul oder...
Fuer Hilfe waere ich sehr dankbar
Gruesse und vielen Dank
Bodo
Hallo Bodo,
die Datei für die Cookies wird automatisch angelegt. Der Fhem-Prozess muss allerdings auf das angegebene Verzeichnis schreibberechtigt sein. Evtl. musst du den Pfad anpassen. Und das Verzeichnis muss existieren, damit die Cookies-Datei dirt erstellt wird.
Falls das nicht funktioniert: Welches Betriebssystem verwendest du?
Viele Grüße
Bernd
Hallo Bernd,
vielen Dank fuer die schnelle Antwort.
Das Problem ist geloest, es lag tatsaechlich an dem fehlenden Verszeichnis und den Rechten.
Viele Gruesse
Bodo
PS.
sorry vergessen
raspbian Jessie auf raspberry pi b
FHEM 5.7
Hallo Bodo,
alles klar, danke für das Feedback :-)
Hallo zusammen,
wer die Glühbirnen-Symbole (IsConsumptionRecommended) im Forecast mit haben möchte, sollte folgende Zeile zu dem readingsBulkUpdate-Block (Zeile 231 in 98_SHMForecast.pm vom 15.02.2016) hinzufügen:
readingsBulkUpdate($hash,"Forecast-".$DateTime."-IsConsumptionRecommended", ($_->{'IsConsumptionRecommended'} ? "yes" : "no"));
Die Readings werden dann auf "yes" und "no" gesetzt, je nachdem, ob empfohlen wird, zusätzliche Geräte einzuschalten (siehe Bild, "yes" für 10:00 und 11:00 Uhr, sonst "no").
Brun, möchtest du diese Ergänzung in dein Modul aufnehmen?
Viele Grüße
Bernd
Liebe Gemeinde,
Seit gestern 23.02.2016 09:45Uhr bekomme ich keine Daten mehr über diese tolle Modul! Auf der HP von Sunny kann ich mich mit den Daten aber einloggen.
Liefert die HP von sunny neue Daten (neues Format)?
noa
Bei mir ist es auch so. Gut zu wissen, dass es wohl nicht an meinem System liegt.
Hier klemmt es auch.
Das Portal war gestern im Wartungsmodus.
Dasselbe bei mir. Wobei die Werte bei meiner Instanz von SHM noch aktualisiert wurden. Nur die Readings von SHMForecast wurden seit vorgestern Nachmittag nicht mehr aktualisiert.
Ist es bei euch auch so? Also dass SHM geht und SHMForecast nicht?
Nach einigen Spielereien im Quellcode habe ich es jetzt hinbekommen. Welche Schritte entscheidend waren, kann ich nicht sagen, aber ich habe in der 98_SHM.pm
- den Agent angepasst
- die Post-Variablen angepasst
- den Post-Aufruf gedoppelt
Außerdem habe ich die Cookies-Datei gelöscht. Man kann ja nie wissen :)
Meine Version hänge ich euch mal dran. Bitte beachten: der Ablageort meiner Cookies-Datei ist anders, den müsst ihr evtl. anpassen (an 2 Stellen im Skript).
Musste am WE meinen RasPi neu installieren und daher auch jetzt gerade FHEM -> Aber das SHM-Modul aus dem ersten Beitrag (Stand 15.2.) funktioniert bei mir einwandfrei.
Hatte aber noch keine Zeit mit dem SHMForecast zu spielen, daher kann ich dazu nix sagen...
Hallo Bernd Arnold, vielen Dank für diesen schnellen Einsatz. Wo im Script steht an zwei Stellen der Cookie -Ablageort? Und wo finde ich die Cookie-Datei um sie zu löschen?
Sorry, war nicht schwer zu finden. Hat aber leider noch keine Änderung gebracht.
Hallo maximat0,
bis wann ging es denn bei dir? Und was genau geht nicht? Also nur SHM? Oder SHM und SHMForecast?
Bei mir hat das SHM heute Nachmittag auch wieder aufgehört zu funktionieren (Werte bei SHM und SHMForecast wurden nicht mehr aktualisiert).
Ich habe jetzt auch mal die Datei vom 1. Post genommen (wie von Regengott beschrieben), Cookie-Datei gelöscht, Reload durchgeführt.
Ergebnis: keine Updates.
Dann die Zeile mit dem Agent ausgetauscht (das hatte ich gestern bei einer Zeile vergessen):
$ua->agent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36');
Wieder Cookie-Datei gelöscht, Reload durchgeführt.
Ergebnis: Daten werden wieder aktualisiert. Hurra :)
Soweit meine Erfahrungen. Warum es bei Regengott ohne Anpassungen geht, kann ich nicht sagen. Vielleicht ist auch die Session noch nicht abgelaufen oder es liegt an der Häufigkeit der Zugriffe, wenn man SHMForecast aktiviert...
Ich stelle meine aktuelle Datei mal mit hier rein (bitte wieder den Pfad zur Cookies-Datei anpassen)...
Feedback gerne erwünscht :)
Hallo Bernd,
es ging seit dem 23.02. 9:47 Uhr nicht mehr. Nur SHM, weil ich es gerade erst zwei Tage vorher installiert hatte (habe meine Speicherbatt erst zwei Wochen).
Forecast wollte ich später machen.
Hatte mir einen neuen Raspi mit Fhem aufgesetzt, aber es brachte nichts.
Gerade habe ich deine Version genutzt, den Cookie-Pfad angepasst + Cokies gelöscht.
Jetzt gehts auf beiden Raspi.
Vielen Dank, da bin ich froh -und meine Frau auch, dass ich wieder zufrieden bin.
Ich will mir eine eigene Anzeige mit php basteln
Herzlich Klaus
Ich habe es mit der neuen Datei von Bernd versucht aber irgend etwas stimmt etwas nicht.
Can't locate JSON.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/98_SHM.pm line 41.
BEGIN failed--compilation aborted at ./FHEM/98_SHM.pm line 41.
was steht denn in Zeile 41?
ist JSON installiert und am richtigen Platz?
in Zeile 41 müsste "use JSON;" stehen und ob JSON richtig installiert ist weiß ich nicht. Wie mach ich das?
Welches Betriebssystem?
Raspi: sudo apt-get update
sudo apt-get install libjson-perl
Windows kenne ich nicht
Hi Maximat0
Ja es ist Raspberry und es funktioniert erst einmal wieder. Danke :)
na prima - viel Spaß
mir ist auch schon viel geholfen worden hier im Forum
Vielen Dank für eure Rückmeldungen, Klaus und Kalli01!
Freut mich, dass es wieder klappt :)
Der User Agent scheint wohl wirklich was mit den Problemen zu tun zu haben.
Ich habe jetzt mal den User Agent geändert und nun scheint es wieder zu funktionieren. Die Dateien in meinen Eingangseintrag habe ich entsprechend aktualisiert.
Allerdings könnte es sein, dass es trotzdem nicht geht. Denn wenn man sich anmeldet kommt seit den Update bei SMA ein paar Abfragen. Die müsste man dann erstmal bestätigen.
Bei der Gelegenheit habe ich auch nochmal die Werte für "IsConsumptionRecommended" wie gewünscht hinzugefügt.
Gruß Brun
Hallo Brun
bei mir geht es mit dem neuen Modul wieder. Ich hatte Ausfall seit gestern 15:51.
Danke
Gruß Ulf
Am Montag früh will SMA wieder basteln, mal sehen was uns blüht. ich finds gut, dass wir es gemeinsam wieder hinkriegen. Schönes WE
Ob man's glaubt oder nicht - bei mir lief es bis Freitag 16 Uhr, danach nicht mehr. Neues Modul aus dem ersten Artikel eingespielt, mit dem Benutzer, den ich für FHEM eingerichtet habe auf dem Sunnyportal eingeloggt, einmal alle Menüpunkte durchgeklickt und damit die Nachrichten zu Änderungen weggeklickt --> Jetzt geht's wieder alles. Mal schauen wie lange ;)
Dank an alle, die an dem Update mitgewirkt haben!
Bei mir ging auch nichts mehr,
hab das neue Script eingespielt, neustart, läuft.
DANKE an Alle !
Seit 11 uhr 8 ist es wieder vorbei. Heute hat sma wieder am server gearbeitet
Jepp kann ich bestätigen Seit 11:08 keine Daten mehr:
2016.03.08 16:12:11 5: MySHM -> 200
2016.03.08 16:12:11 4: not logged in. try to login...
2016.03.08 16:12:11 5: MySHM -> 200
2016.03.08 16:12:12 5: MySHM -> 200
2016.03.08 16:12:15 5: MySHM -> 200
2016.03.08 16:12:15 4: not logged in. try to login...
2016.03.08 16:12:15 5: MySHM -> 200
2016.03.08 16:12:16 5: MySHM -> 200
Das selbe bei mir. Ich schaue mir das daheim mal an...
Also... Im Grunde ist es recht einfach :-)
In der Datei 98_SHM.pm mal wieder den agent anpassen. Anstatt Chrome/48.0.2564.103 muss es jetzt Chrome/48.0.2564.116 heißen. Reload nicht vergessen. Die Cookies-Datei habe ich auch gelöscht, das alleine hat jedoch nicht geholfen.
Der Browser-Agent wird zweimal gesetzt - unbedingt beide Zeilen anpassen.
Ich habe mir jetzt ein neues Reading gesetzt (Brun, evtl. möchtest du das offiziell übernehmen?):
# Example
# <span id="ctl00_ContentPlaceHolder1_Logincontrol1_ErrorLabel" class="base-error">Login Failed</span>
if ( $loginp->content =~ /Logincontrol1_ErrorLabel.*Login Failed/ ) {
readingsSingleUpdate($hash, "Login-Status", "Login failed", 1);
} else {
readingsSingleUpdate($hash, "Login-Status", "Login successful", 1);
}
Diesen Block habe ich in den letzten else-Zweig eingefügt (ziemlich am Schluss der Datei), nach Log3 $hash->{NAME}, 5, "$hash->{NAME} -> " . $loginp->code; und vor dem $ua->get von HoManLive.aspx.
Es sieht dann wie folgt aus (Bilder jeweils vor und nach der Änderung vom Browser-Agent)...
Viele Grüße
Bernd
Das hilft erst einmal.
Kann es sein, das man bei zu vielen Aufrufen, ausgesperrt wird?
Sorry aber wo ist der andere UserAgent den man ändern soll? ich habe nur einen in der 98_SHM
Moin
@BerndArnold, @Brun
Leider bin ich nur Nutzer dieses super Moduls.
Mehr kann ich nicht. :-[
Habe aber einen Vorschlag.
Zitat
In der Datei 98_SHM.pm mal wieder den agent anpassen. Anstatt Chrome/48.0.2564.103 muss es jetzt Chrome/48.0.2564.116 heißen. Reload nicht vergessen.
Kann man da nicht ein
attr für einführen, da doch die Änderungen öffter sind.
ZitatIch habe mir jetzt ein neues Reading gesetzt (Brun, evtl. möchtest du das offiziell übernehmen?):
Bitte. :)
Servus,
ich habe die Module mal aktualisiert und den Vorschlag von Bernd übernommen.
Was mich aber wundert warum es zu einen Fehler kommt. Wertet SMA den Useragent aus und blockt bestimmte Versionen?
Wollen die uns aussperren?
Gruß Brun
Zitat von: Michael am 09 März 2016, 07:28:20
Habe aber einen Vorschlag.Kann man da nicht ein attr für einführen, da doch die Änderungen öffter sind.
Besser wärs doch, wenn das automatisch aktualisiert würde. Kann man diese Info nicht irgendwo auslesen und automatisch setzen lassen?
Hier wird ja ein OSX vorgegauckelt: ist die SMA-Seite weniger restriktiv, wenn man den Standard-IE 10 user agent verwendet?
"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)"
Hallo,
ich stolpere auch immer wieder über dieses Problem und warte auf Hilfe aus diesem Thread.
Beim letzten Ausfall (bei mir am 4.3.16 16:00h) habe ich aber festgestellt, dass das von SMA angekündigt wird. In einer der letzten Datenlieferungen steht dann nämlich im Error Parameter "die Sitzungszeit ist abgelaufen, ....".
Wenn man das als Trigger verwendet, um den User Agent zu aktualisieren, sollte das Problem automatisch zu lösen sein, oder sehe ich das falsch.
Gruß
Helmut
hallo Bernd,
wie findest du es raus dass es Chrome/48.0.2564.116 heißen muss?
Vielen Dank für die schnelle Hilfe. Es läuft wieder.
Danke für's Feedback an alle.
Zitat von: maximat0 am 09 März 2016, 16:03:52
wie findest du es raus dass es Chrome/48.0.2564.116 heißen muss?
Ich habe es mit dem User-Agent, wie ihn Chrome in der aktuellen Version verwendet, probiert. Hat geklappt :)
Evtl. könnte es auch mit dem IE-String klappen, wie von
sct14675 erwähnt.
Zitat von: Brun am 09 März 2016, 08:37:56
ich habe die Module mal aktualisiert und den Vorschlag von Bernd übernommen.
Was mich aber wundert warum es zu einen Fehler kommt. Wertet SMA den Useragent aus und blockt bestimmte Versionen?
Wollen die uns aussperren?
Danke für die Übernahme, Brun. Über die Gründe kann ich jedoch nichts sagen.
Den Vorschlag von Michael finde ich gut, den Agent mittels
attr zu parametrisieren. Ich hätte übrigens auch gerne den Pfad zur Cookie-Datei als attr (mit dem Default wie es jetzt kodiert ist, falls kein attr gesetzt wurde) :)
Moin
Bei mir läuft gar nichts mehr, ist das bei euch auch so.
- Auch wenn der User Admin Rechte tut sich nichts.
- Modul getaucht, Cookie gelöscht
- s.h. Bild im Anhang.
Zitat von: Michael am 10 März 2016, 19:28:31
Bei mir läuft gar nichts mehr, ist das bei euch auch so.
Hallo Michael,
im Moment läuft alles super. Ich habe auch mal die Cookies-Datei gelöscht - neuer Login, Cookie-Datei wird angelegt, Daten kommen wieder.
Schade, dass es bei dir nicht klappt.
Bei mir hat SMA heute den Benutzer von Standard auf Gast geändert.
11.03.2016 12:19:02 Anlage Portal/Kommunikation Info Benutzer 'xxx@xxxx.de' wurde durch serviceline@sma.de bearbeitet.
Dann ging es nicht mehr
Ich krieg seit Sonntag gar keine Livedaten mehr, weder im fhem noch im Browser und nicht als Standardbenutzer oder als normaler Benutzer.
Als Meldung gabs 'Communication with the Sunny Home Manager is currently not possible.Check the Sunny Home Manager Internet connection and try again.'
Meine Internetverbindung ist aber ok und die Tagesdaten kommen trotzdem an. Mit der IOS App kann ich auch die Livedaten sehen.
Seltsam!
Hallo, das Modul funktioniert bei mir einwandfrei ! Vielen Dank.
@Brun du hast in deinem ersten Post ein Plot in dem GridConsumption und SelfConsumption dargestellt bei dem du die beiden Werte scheinbar addiert hast damit sie gestapelt erscheinen. Bei mir laufen die beiden Werte ineinander. Kannst du dein Gplot File mal posten?
Grüße
Albatros
Moin
@all
Habt ihr das http://www.sma.de/partners/sma-developer.html (http://www.sma.de/partners/sma-developer.html) schon gesehen?
Leider bin ich nicht in der Lage dazu. :-[ ::)
Cool, wenn ich mir die Homemanager Doku laden will, muß ich sagen, was ich damit machen will. Was weiß ich denn, was da überhaupt drinsteht :D
Hallo miteinander,
ich habe genau das gleiche Problem wie klausp.
Seit 2016-03-15 04:01:58, bekomme ich keine Daten mehr.
Der Login Status besagt folgendes: Login successful 2016-03-17 14:47:15
Wenn ich das sma Modul nun auf verbose 5 stelle, wird es ziemlich voll bei mir im Log:
2016.03.17 11:55:36 5: sunnyHomeManager -> 200
2016.03.17 11:55:36 4: not logged in. try to login...
2016.03.17 11:55:37 5: sunnyHomeManager -> 200
2016.03.17 11:55:37 5: sunnyHomeManager ->
<!DOCTYPE html>
<!--[if IE 8]><html class="ie8 oldie"><![endif]-->
<!--[if IE 9 ]><html class="ie9"><![endif]-->
<!--[if gt IE 9]><!--><html><!--<![endif]-->
<head id="ctl00_Head"><meta charset="utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>
SMA Solar Technology AG - Sunny Portal
</title><link rel="shortcut icon" type="image/x-icon" href="../favicon.ico" /><link rel="apple-touch-icon" href="../apple-touch-icon.png" />
<link rel="stylesheet" href="/dist/css/sma.theme.css?v=7.9.13.40782"/>
<link rel="stylesheet" href="/dist/css/sma.webforms.css?v=7.9.13.40782"/>
<!--[if IE ]>
<link rel="stylesheet" type="text/css" href="/Content/themes/redesign/webforms.ie.css" />
<![endif]-->
<link rel="stylesheet" href="/dist/css/sma.modules.css?v=7.9.13.40782"/>
<link rel="stylesheet" type="text/css" href="/Content/Login/RedesignMaster.css" /><link rel="stylesheet" type="text/css" href="/Tools/css/form/form.css" /><link rel="stylesheet" type="text/css" href="/Tools/css/shadowbox/shadowbox.css" />
<script src="/Scripts/require.js?v=7.9.13.40782"></script>
<script src="/Scripts/requirejs-config.js?v=7.9.13.40782"></script>
<script>
requirejs.config({ urlArgs: 'v=7.9.13.40782' });
(function (global, name, factory) {
global.SMA = global.SMA || {};
global.SMA[name] = factory();
}(this, 'version', function () {
return '7.9.13.40782';
}));
</script>
Für mich sieht es so aus als wenn die ganze Page ins log geschrieben wird.
Der Aufruf im Browser sieht dagegen besser aus:
https://www.sunnyportal.com/homemanager
{"__type":"LiveDataUI","Timestamp":{"__type":"DateTime","DateTime":"2016-03-17T14:54:23","Kind":"Unspecified"},"PV":6413,"FeedIn":6095,"GridConsumption":0,"DirectConsumption":288,"SelfConsumption":318,"SelfSupply":288,"TotalConsumption":288,"DirectConsumptionQuote":4,"SelfConsumptionQuote":5,"AutarkyQuote":100,"BatteryIn":30,"BatteryOut":0,"BatteryChargeStatus":97,"OperationHealth":null,"BatteryStateOfHealth":null,"ModuleTemperature":null,"EnvironmentTemperature":null,"WindSpeed":null,"Insolation":null,"InfoMessages":[],"WarningMessages":[],"ErrorMessages":[],"Info":{}}
Jemand eine Idee?
Update: SMA hatte auch meinen FHEM-Benutzter auf Gastrechte gesetzt, allerdings funktioniert es nach wie vor nicht. Einstellung ist jetzt wieder Standardbenutzer!
Gruß Marcel
Hallo,
bitte mal die Cookies-Datei löschen und danach prüfen, ob sie wieder erstellt wird.
Möglicherweise ist das "Login successful" aus dem Reading auch irreführend. Es wird geprüft, ob in der Antwort "Login Failed" vorkommt. Falls nicht, wird "successful" gesetzt. So hat es damals bei meinem Test geklappt. Möglicherweise wird aber eine andere Fehlermeldung zurückgegeben.
Also: erstmal prüfen, ob das Löschen der Cookies-Datei hilft.
Wenn das nichts bringt wäre es hilfreich, die Antwort beim Login-Versuch zu kennen. Dazu kannst du folgenden Abschnitt nach Log3 $hash->{NAME}, 5, "$hash->{NAME} -> " . $loginp->code; (ziemlich am Ende von 98_SHM.pm) hinzufügen (Modul anschließend neu laden oder Neustart von Fhem durchführen):
open TEMPOUT, ">", "/tmp/98_SHM_loginp-output.txt";
print TEMPOUT $loginp->content;
close TEMPOUT;
Die Rückgabe vom Login wird in die angegebene Datei geschrieben (Annahme von mir: du hast Linux).
Hallo BerndArnold,
danke für deine Antwort.
1. Löschen der mycookies.txt hat nichts gebracht, nach wie vor login = successfull
2. Erweitertes Login eingebaut, ja Jessie auf nem RaPi 2, und die gleiche Ausgabe wie im Log bei Verbose 5.
Siehe vorheriger Post.
--> Aber ich habe es rausgefunden. Ich habe mal versucht mich mit dem User am Portal anzumelden und siehe da, Kennwort falsch... SMA hat nicht nur die Rechte für den Account verbogen, sondern auch das Kennwort verändert. Ist das noch jemandem passiert? Wie häufig holt ihr die Daten ab?
Moin Xguide
Zitat... dem User am Portal anzumelden und siehe da, Kennwort falsch... SMA ...
Das Kennwort war bei mir auch Falsch.
Auch mit ein neuem bekomme ich keine Daten mehr. :'(
Hallo Michael,
ich habe den User im Portal gelöscht und neu angelegt, die Email besagte dann, dass das Kennwort gleichgeblieben sei. Ich konnte mich jedoch nicht anmelden, somit habe ich das Kennwort zurückgesetzt, sprich das Alte mir bekannte vergeben. Anschließend habe ich FHEM neu gestartet und schon kamen wieder Werte.
Wie sieht denn Dein Log bei Verbose 5 aus, bzw. was steht im erweiterten Logging (Vorgehen siehe Post von BerndArnold).
Noch mal die Frage, wie häufig pollt ihr die Daten?
Ich habe bei mir 60s eingestellt...
Ein schönes Wochenende,
Marcel
Hallo XguideDanke für deine Antwort.
Zitatich habe den User im Portal gelöscht und neu angelegt ...
Leider hat auch das nichts geholfen.
ZitatAutor: BerndArnold
« am: 17 März 2016, 18:46:16 » Zitat einfügen
Habe das gemacht,
Die Dateien sind im Anhang.
Habe aber noch die Hoffnung, das eines Tages ein anderes Modul kommt. ;)
ZitatAutor: Michael
« am: 14 März 2016, 17:34:17
Hallo Michael,
vielen Dank für die Ausgabe. Das war sehr aufschlussreich. In deinem Fall ist diese Zeile enthalten
<span id="ctl00_ContentPlaceHolder1_Logincontrol1_ErrorLabel" class="base-error">Login failed! Login will be blocked for 125 seconds.</span>
Meine Prüfung im Perl-Modul war auf "Login Failed" (also ein großes F). Bei einem erfolgreichen Login wird dieses Span-Konstrukt nicht ausgegeben, das habe ich gerade getestet.
Ich habe die Prüfung angepasst. "Login successful" wird jetzt nur gesetzt, wenn die Span-ID in der Ausgabe nicht vorkommt. Ansonsten wird der Inhalt als zusätzliches Reading gesetzt.
Mein angepasster Code sieht jetzt so aus:
if ( $loginp->content =~ /<span id="ctl00_ContentPlaceHolder1_Logincontrol1_ErrorLabel" class="base-error">([^<]+)<\/span>/ ) {
readingsSingleUpdate($hash, "Login-Status", "Login failed", 1);
readingsSingleUpdate($hash, "Login-Error", "$1", 1);
} else {
readingsSingleUpdate($hash, "Login-Status", "Login successful", 1);
readingsSingleUpdate($hash, "Login-Error", "", 1);
}
Das Reading Login-Error wird auf den Inhalt vom Span gesetzt (was in meinem Fall jetzt gleich ist mit dem Login-Status, siehe Bild im Anhang).
Viele Grüße
Bernd
Hallo BerndArnold
Das ganze wird bei mir ::) immer seltsammer.
Neuen Standardnutzer Angelegt und prompt Fehlermeldung "Login failed".
Selbst beim Sunnyportal Mail-Addr od. PWD Falsch.
Mit meiner Admin Mail klappt alles.
ZitatMein angepasster Code sieht jetzt so aus:
Code: [Auswählen]
if ( $loginp->content =~ /<span id="ctl00_ContentPlaceHolder1_Logincontrol1_ErrorLabel" class="base-error">([^<]+)<\/span>/ ) {
readingsSingleUpdate($hash, "Login-Status", "Login failed", 1);
readingsSingleUpdate($hash, "Login-Error", "$1", 1);
} else {
readingsSingleUpdate($hash, "Login-Status", "Login successful", 1);
readingsSingleUpdate($hash, "Login-Error", "", 1);
}
Diesen Code habe ich übernommen. Danke.
PS. Hatte gerade im Sunnyportal neue User mit unterschiedliche Rechte angelegt.
Und mit keinen konnte ich mich Anmelden.
Denke mal das dass Sunnyportal bei mir Probleme macht.
So werde ich erstmal mit meiner Admin Mail es laufen lassen müssen.
Zugang von Außen ist nicht gegeben.
Zitat von: Michael am 19 März 2016, 13:50:01
Mit meiner Admin Mail klappt alles.
Das ist echt seltsam. Also natürlich freut es mich, dass du wieder Werte bekommst, aber dass du dazu das Adminkonto brauchst, finde ich merkwürdig. Bei mir geht es weiterhin mit einem Standardbenutzer.
Hm, vielleicht liegt es auch an dem Kennwort? Zu komplex? Zuviele oder "falsche" Sonderzeichen mit drin? Oder zu kurz? Oder zu lang? Das ist noch ein Punkt, an dem du experimentieren könntest...
Zitat von: Xguide am 18 März 2016, 14:57:49
Noch mal die Frage, wie häufig pollt ihr die Daten?
Ich habe bei mir 60s eingestellt...
Ein schönes Wochenende,
Marcel
Dito für das 98_SHM. Die Forecast-Werte ca. alle 6 Minuten.
Hallo Brun, hallo BerndArnold, hallo Solar-Freunde,
herzlichen Dank für dieses hilfreiche Modul welches bei mir nun ebenfalls gute Dienste leistet. :)
Ausgehend vom Originalmodul von Brun habe ich mein Modul alledings komplett auf Blocking.pm umgestellt, weil mein FHEM sonst 1-3 Sekunden beim Datenabruf blockierte.
Auch sonst habe ich einiges umgebaut und angepasst, es sind auch Ideen enthalten die hier im Forum geäußert wurden.
Ich möchte euch die Änderungen die ich gemacht habe nicht vorenthalten.
Hier die Änderungen (sind auch im Kopf des Moduls enthalten):
- Nutzung von BlockingCall um blockierende Situationen zu vermeiden
- nur ein BlockingCall zur gleichen Zeit darf laufen (entspr. Doku im Wiki)
- Attribut "timeout" (default 30) für den Portalabruf
- Attribut "userAgent" um den Useragnt eingeben zu können (default: "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)"
- Attribut "disable" disabled das Modul temporär wenn "1"
- Attribut "cookieLocation" für Pfad/namen des cookiefile (default: "./log/mycookies.txt")
Achtung: nicht ändern wenn 98_SHMForecast.pm eingesetzt wrd -> Abhängigkeit !
- erweiterte Logeinträge für verbose-modes
- Testroutine für "Login failed" geändert (nur Test auf "Logincontrol1_ErrorLabel")
- alle Readings werden upgedatet, nicht nur diejenigen bei denen sich die Werte geändert haben
-> das führt zu einer korrekten SVG-Darstellung wenn Werte lange Zeit "0" sind und dann auf einen anderen Wert ändern
Wenn ihr das Modul einsetzt und "stateFormat" so setzt:
{ ReadingsVal("$name","state", undef) eq "disabled" ? ReadingsVal("$name","state", undef) : ReadingsVal("$name","state", undef)." W ,ToGrid (+) , FromGrid (-)" }
wird auch der disabled-Status in der Übersicht entprechend angezeigt wenn gesetzt.
Ich hoffe meine Änderungen sind eine Anregung und nutzen euch etwas.
Den Datenabruf mache ich übrigens alle 185 Sekunden mit einem Standardnutzer.
Schönes WE und viele Grüße
Heiko
Hallo Heiko,
vielen Dank für deine Mühen. Ich habe deine Fassung zum Ausprobieren gleich mal aktiviert.
Zitat von: DS_Starter am 19 März 2016, 18:34:19
- alle Readings werden upgedatet, nicht nur diejenigen bei denen sich die Werte geändert haben
-> das führt zu einer korrekten SVG-Darstellung wenn Werte lange Zeit "0" sind und dann auf einen anderen Wert ändern
Ob das sinnvoll ist oder nicht, kann ich nicht beurteilen, weil ich SVG nicht einsetze.
Wo es mich allerdings stört, ist beim Reading
Login-Status. Das hatte mir besser gefallen, als es auch nur bei einem tatsächlichen Login-Versuch aktualisiert wird. Ich konnte damit anhand des Reading-Zeitstempels sehen, wann der letzte Login stattfand.
Die Umstellung auf Blocking.pm hat bestimmt Vorteile. So genau kenne ich mich damit nicht aus. Das Blockieren hatte ich entweder nicht bemerkt oder war gar nicht relevant in meiner Konfiguration :)
Nach dem Reload hat das Modul allerdings erstmal alle 10 bis 15 Sekunden die Daten aktualisiert. Das hatte sich erst beruhigt, nachdem ich das Attribut für meine Cookies-Datei (cool, dass du das mit aufgenommen hast :)
) und nochmal mittels Modify die Definition neu gesetzt hatte.
Nochmals vielen Dank für deine Version.
Viele Grüße
Bernd
Hallo Bernd,
danke für dein Feedback.
ZitatDas hatte mir besser gefallen, als es auch nur bei einem tatsächlichen Login-Versuch aktualisiert wird
Wenn ich dich richtig verstehe meinst du damit, dass das Reading nur dann einmalig aktualisiert werden sollte wenn der erste erfogreiche Login stattgefunden hat, richtig ?
Kann ich ja nochmal schauen und anpassen...
Naja, das Nonblocking kann vor allem in Umgebungen mit Homematic Geräten unschön sein. Vor allem dann wenn die Portalseite nicht ordentlich antwortet oder es andere Verzögerungen Richtung SMA-Portal gibt. So (mit Blocking.pm) stört es halt nicht.
Und wenn ihr (weiß garnicht so recht ob du oder Brun die "Modulfäden" in der Hand hältst) vielleicht mal ein "offizielles" FHEM-Modul daraus machen wollt (schön wäre es) , wäre es wichtig. ;)
Die Geschichte mit der Cookiedatei hat halt noch den Haken, dass SHMForecast die an der programmierten Stelle erwartet um zu funktionieren. Das Modul müßte man auch nochmal anpassen/anfassen oder vielleicht in SHM irgendwie mit integrieren.
Mal drüber nachdenken ....
viele Grüße
Heiko
Zitat von: DS_Starter am 19 März 2016, 20:05:47
Wenn ich dich richtig verstehe meinst du damit, dass das Reading nur dann einmalig aktualisiert werden sollte wenn der erste erfogreiche Login stattgefunden hat, richtig ?
Kann ich ja nochmal schauen und anpassen...
Ja, genau so meinte ich es :)
Und natürlich bei jedem folgenden Login, wenn die Session abgelaufen ist.
Zitat von: DS_Starter am 19 März 2016, 20:05:47
Naja, das Nonblocking kann vor allem in Umgebungen mit Homematic Geräten unschön sein. Vor allem dann wenn die Portalseite nicht ordentlich antwortet oder es andere Verzögerungen Richtung SMA-Portal gibt. So (mit Blocking.pm) stört es halt nicht.
Und wenn ihr (weiß garnicht so recht ob du oder Brun die "Modulfäden" in der Hand hältst) vielleicht mal ein "offizielles" FHEM-Modul daraus machen wollt (schön wäre es) , wäre es wichtig. ;)
Okay, sehe ich ein, ist sinnvoll. Danke für die Erklärung. Finde ich prima, dass du dich darum gekümmert hast. Homematic habe ich auch. Vielleicht hat es mich ja schon betroffen :)
Die Ehre gebührt Brun, er hat das Modul programmiert.
Das "offiziell" würde ich auch begrüßen.
Zitat von: DS_Starter am 19 März 2016, 20:05:47
Die Geschichte mit der Cookiedatei hat halt noch den Haken, dass SHMForecast die an der programmierten Stelle erwartet um zu funktionieren. Das Modul müßte man auch nochmal anpassen/anfassen oder vielleicht in SHM irgendwie mit integrieren.
Mal drüber nachdenken ....
Das mit der Cookie-Datei habe ich so gelöst, dass ich den Pfad in dem Forecast-Modul hart kodiert habe. So wie ich es bisher im 98_SHM.pm auch getan hatte.
Vielleicht kann man ja in dem Forecast-Modul ein attr zum Hauptmodul setzen und es wird dann automatisch das Hauptmodul befragt, welche Cookies-Datei zu verwenden ist. Dann müsste man die Einstellung nur einmal pflegen. Nur so 'ne Idee...
Hallo Bernd,
ich glaube jetzt haben wir es .
Habe die Änderung angehängt.
Der Login-Status wird einmal auf "successful" gesetzt wenn die Session das erste mal gültig wird und der Login erfolgreich war . Ein "failed" wird immer geloggt.
Kannste mal testen wenn du das Cookiefile löscht und dann falsche Login-Daten eingibst usw. ....
Das Forecast-Modul mit einem Attribut "cookielocation" wie beim SHM-Modul zu versorgen kann ich kurzfristig tun.
Ansonsten würde ich mir mal ein paar Gedanken machen .....
Weißt du ob Brun noch an einer Weiterentwicklung des Moduls und an einer offiziellen Version interessiert ist ? Ist ja schließlich sein Modul ....
Schau mal ob es jetzt passt ..
Grüße
Heiko
Zitat von: DS_Starter am 19 März 2016, 22:22:23
Habe die Änderung angehängt.
Der Login-Status wird einmal auf "successful" gesetzt wenn die Session das erste mal gültig wird und der Login erfolgreich war . Ein "failed" wird immer geloggt.
Danke für die schnelle Änderung. Werde ich ausprobieren.
Zitat von: DS_Starter am 19 März 2016, 22:22:23
Das Forecast-Modul mit einem Attribut "cookielocation" wie beim SHM-Modul zu versorgen kann ich kurzfristig tun.
Ansonsten würde ich mir mal ein paar Gedanken machen .....
Ok. Da habe ich auch noch etwas beizusteuern. Ich habe mir ein 3. Modul gemacht. Ist ein Abkömmling vom 98_SHMForecast. Ich habe es 98_SHMForecastRelative genannt. Der Unterschied ist, dass nicht die absoluten Stundenzeiten erfasst werden, sondern die relativen.
Beispiel: Ertrag in den nächsten 4 Stunden, Anzahl der Stunden mit "Empfehlung, Geräte einzuschalten" in den nächsten 4 Stunden. Ich habe mir ein DOIF zusammengebastelt, das die Spülmaschine am nächsten Tag zu einer günstigen Zeit einschaltet. Oder eben nicht einschaltet, wenn zu wenig Ertrag prognostiziert wird.
Zitat von: DS_Starter am 19 März 2016, 22:22:23
Weißt du ob Brun noch an einer Weiterentwicklung des Moduls und an einer offiziellen Version interessiert ist ? Ist ja schließlich sein Modul ....
Nein, weiß ich nicht. Aber Brun liest bestimmt mit und ich kann mir schon vorstellen, dass er das weitermachen möchte.
ZitatDa habe ich auch noch etwas beizusteuern. Ich habe mir ein 3. Modul gemacht. Ist ein Abkömmling vom 98_SHMForecast.
Das klingt richtig gut, genau da will ich auch hin. Zur Zeit benutze ich zwei Bluetooth-Schalterdosen die der Sunny Home Manager direkt steuert.
Aber die weiteren Geräte habe ich vor entsprechend mit FHEM zu steuern.
Wäre super wenn du dein Modul mit zur Verfügung stellen würdest ...
viele Grüße und schönen Sonntag,
Heiko
Zitat von: DS_Starter am 19 März 2016, 23:02:51
Das klingt richtig gut, genau da will ich auch hin. Zur Zeit benutze ich zwei Bluetooth-Schalterdosen die der Sunny Home Manager direkt steuert.
Aber die weiteren Geräte habe ich vor entsprechend mit FHEM zu steuern.
Wäre super wenn du dein Modul mit zur Verfügung stellen würdest ...
viele Grüße und schönen Sonntag,
Heiko
Im Anhang habe ich das angepasste Modul 98_SHMForecastRelative.pm hinterlegt. Der Pfad zur Cookie-Datei ist nicht der Standard und das mit dem Blocking habe ich nicht angepasst. Soviel zu den wichtigsten Warnhinweisen :)
Die Definitionen (Dummy/DOIF/Notify) und ein paar Erklärungen zur Automatik habe ich mal ins Wiki gestellt:
http://www.fhemwiki.de/wiki/Diskussion:SunnyHomeManager#Steuerung_der_Sp.C3.BClmaschine
Feedback ist gerne erwünscht.
Guten Morgen Bernd,
danke für dein Modul und die Erläuterungen. Das schaue ich mir in Ruhe an ....
Bezüglich unserer gestrigen Unterhaltung habe ich das "normale" 98_SHMForecast so angepasst dass es jetzt automatisch einem gesetzten Attribut "cookieLocation" des SHM-Gerätes folgt.
Dazu mußte ich das DEF von Forecast etwas erweitern, es sieht jetzt so aus:
define <name> SHMForecast <SHM_Name> [Intervall]
SHM_Name steht für den Namen des SHM-Devices was man vorher mit dem SHM-Modul angelegt hat. Bei heißt mir es Sonnenstrom, demzufolge als Beispiel:
define <name> SHMForecast Sonnenstrom [Intervall]
Wenn jetzt im SHM-Device das Cookiefile per Attribut geändert wird, bekommt SHMForecast das mit und verwendet auch das geänderte File entsprechend.
Klappt bei mir super .... probiers mal aus ...
EDIT: Dein Modul habe ich jetzt auch so angepasst und angehängt ... Standard f. cookiefile ist ./log/mycookies.txt, müßtest du in deinem SHM-Device per Attr anpassen !
Dein Modul find ich super, bringt m.M. nach durch deine Änderung dienliche Infos für die nachgelagerte Gerätesteuerung.
Der Def für dein Modul sähe dann so aus:
define <name> SHMForecastRelative <SHM_Name> [Intervall]
Alles andrere schaue ich mir später an, BlockingCall usw. ...
Grüße
Heiko
Hallo Heiko,
danke für deine Updates. Die Dateien habe ich übernommen. Dazu habe ich Fhem gestoppt, die Definitionen in der fhem.cfg angepasst und danach Fhem wieder gestartet. Schön ist, dass bei den Forecast-Objekten das Haupt-Objekt jetzt in der Liste "Probably associated with" auftaucht - und umgekehrt.
Den Wiki-Eintrag habe ich vorhin noch aktualisiert.
Viele Grüße
Bernd
Morgen,
Klar lese ich mit.
An den Module entwickle ich auch immer etwas weiter. Momentan bin ich auch schon dran das Module auf non blocking um zu bauen. Wäre das nächste Release.
Gruß Brun
Morgen Brun,
super ... vielleicht kannst du ja ein paar Dinge die ich gemacht habe in dein Modul übernehmen.
Danke für deine Idee und die Lösung mit dem Sunny Home Manger !
Schönen Tag und viele
Grüße
Heiko
Morgen Heiko,
dein non-blocking habe ich mal so übernommen. Gute arbeit!
Allerdings hatte ich damals nur geänderte Werte übernommen. Da sonst mir das Log mit Müll zugemüllt wurde. Da ist der Graph zwar nicht so schön. Aber das hatte mich weniger gestört.
Ich schaue mir auch noch grad die anderen Änderungen an.
Hallo Bernd,
relativer Forecast? Wie bist du denn da drauf gekommen? Was hast du damit denn genau vor?
Gruß Brun
Hallo Brun,
ja, alles hat so seine Vor- und Nachteile.
Ich habe das Filelog über RegEx nur auf die Werte beschränkt die ich im SVG auch verwende. Dann hält sich die Datenflut in Grenzen.
Grüße
Heiko
Ich habe heute ein E-Mail der Firma SMA erhalten:
Sehr geehrter Sunny Portal-Benutzer,
wir haben bei der Analyse unseres Datenverkehrs festgestellt, dass Sie Daten des Sunny Portals automatisiert abgreifen.
In unseren Nutzungsbedingungen unter III. Nr. 2, wird das automatische Auslesen durch Computerprogramme explizit untersagt. Wir möchten Sie hiermit auf den Verstoß hinweisen.
Die Integration und Visualisierung der Informationen Ihrer PV-Anlage in weiterführenden Systemen wie z.B. FHEM ist für uns definitiv nachvollziehbar. Jedoch können wir Ihnen derzeit keine Schnittstelle anbieten, die dem gerecht wird. Um Ihnen den Zugriff weiter gewähren zu können, sollten Sie die Aktualisierungsrate auf minimal 60 Sekunden erhöhen.
Mit freundlichen Grüßen
Ich habe mal darüber nachgedacht und dann eine Antwort verfasst, die - zugegebenermaßen - dann doch recht harsch ausgefallen ist.
Ich habe ja durchaus Verständnis, dass das Abfragen der Daten Last auf dem Maschinen von SMA erzeugt, aber irgendwie ist mir dann doch irgendwie der Geduldsfaden geplatzt. Hier meine Antwort:
Hallo Herr....,
danke für Ihre E-Mail. Ich verstehe Ihre Situation ebenfalls. Meine Abfrageintervall ist bereits 120 Sekunden und ich kann gerne auch noch höher gehen, damit die Last auf Ihren Maschinen geringer wird.
Viel klüger wäre es, wenn Sie den Nutzern die Möglichkeit gäben, die Daten von der Sunny Home Manager Box direkt per http im lokalen Netz abzufragen. Dann wäre die Last auf Ihrem Portal durch automatischen Abgriff gleich null und die Kunden hätten, was sie wollten, nämlich die Daten der Anlage.
Leider bieten Sie das nicht an und schaffen zusätzlich zu den Lastproblemen noch eine paradoxe Situation:
Sie verkaufen mir für 300 Euro eine Box, die am Ende eigentlich nur Ihnen nutzt, denn Sie sind es, die mit den gewonnen Daten Geld verdienen können: Lieferung der Daten Dienste wie z.B. Wetterdienste, Gewinnung von Erkenntnissen zur Optimierung des eigenen Angebots etc. Sie haben massive strategische Vorteile durch die Vernetzung Ihrer Wechselrichter und ich bekomme nur ein paar läppische bunte Bildchen auf dem Portal und hin und wieder eine E-Mail. Das ganze für für 300 Euro!!. Respekt. Die automatische Nutzung meiner (!) Daten wird mir untersagt. Auf die bunten Bildchen und die E-Mail kann ich sehr gerne verzichten, aber die Auswertung meiner eigenen (!) Daten ist mir sehr wichtig, dann auch ich habe weiterführende Interessen neben dem Konsum bunter Grafiken.
Sollten Sie also auf die Idee kommen, meinen Account zu sperren oder die API ein zu stellen, dann können Sie die Sunny Home Manager Box morgen auf eBay finden und ich greife mir die Daten von Wechselrichter einfach per bluetooth in Eigenregie ab. Nur haben Sie dann gar keinen Zugriff mehr auf meine Anlage oder können diese bei mir kaufen, wenn sie wollen.
Wie Sie mit einer solchen Geschäfts-Politik am Ende dem Kunden ein Angebot machen wollen, dass dem digitalen Zeitalter gerecht wird, ist mir ein Rätsel. Die in Deutschland ach so verteufelten US-Konzerne (Google etc.) machen vor wie es geht: für Anwender und Entwickler offenen Schnittstellen, so dass sich Systeme auf allen Ebenen vernetzen lassen. Nur so wird am Ende ein System entstehen, dass wirklich "Smart" ist. Und Geld verdient Google damit auch, wie sie vielleicht wissen.
Aber trösten Sie sich: Sie befinden sich in bester Gesellschaft. Die Box der Firma Viessmann - ein Gerät ähnlich dem Sunny Home Manager - zur Steuerung einer Wärmepumpe, habe ich nach 2 Wochen zurück gegeben, weil der Deal noch unverschämter ist als Ihrer: das Ding kostet 450,- Euro und außer einer läppischen Grafik auf dem Smartphone darf ich als Kunde keinerlei Nutzen daraus ziehen. Dieser liegt alleine bei Viessmann. Das geht selbst mir als Early-Adopter zu weit.
Sie, Viessmann und der Rest des Deutschen Mittelstands haben halt nicht nicht verstanden, dass die deutsche Übersetzung des Begriffs "Cloud" nunmal nicht "Kundenverblödung" bedeutet. Sie schlafen lieber weiter, während US-Konzerne Märkte aufbauen, von denen Sie nur träumen können. Und nachher ist das Gejammere groß, weil die "bösen" Konzerne Ihnen alles kaputt machen.
Herzliche Grüße
....
Wenn diese Firmen wie SMA, Viessmann und andere nicht einfach nur vollkommen verbohrt, spießig und letztlich digital-ungebildet wären, würden Sie die Chancen, die eine aktive Community und eine Vernetzung der Anlagen generieren nutzen, und ein Geschäftsmodell entwickeln, von dem alle etwas haben. Leider scheint das absolut nicht der Fall zu sein und ich kann es nicht ertragen, dass ich für so eine Dämlichkeit auch noch Geld ausgegeben habe.
In dem Moment, wo SMA sperrt, ist die Box bei eBay.
Ich freue mich drauf, wenn sich Google diesem Markt annimmt.
Gruß
VK
Die Mail von SMA kenne ich auch und bin auf die Antwort gespannt.
Mir ist gerade noch mal der Kragen geplatzt:
ich bin gerade dabei, ein FHEM Modul für die Einbindung des SMA Energy-Meters zu bauen. Das ist bei mir ebenfalls verbaut und im Gegensatz zur der SHM-Box schickt das SMA-EM seine Daten easy lesbar zyklisch auf eine Multicast-Adresse. Damit würde (für mich) 98_SHM überflüssig und SMA kann mir auch nicht mehr mit Wartung, Mails usw reingrätschen.
Das Abgreifen der Daten vom Multicast mache ich mit dem Daemon von http://www.unifox.at/sma_energy_meter/
Den habe ich angepasst, so dass er alles liefert, was gebraucht wird.
Jetzt müssen die Daten noch in FHEM.
Gibt es ein Modul, welches einfach einen Wert auf einer Datei liest?
Oder gibt es irgendwo ein Modul-Template, auf das ich aufsetzen kann?
Habe bisher keine Erfahrung in der Modulentwicklung.
Moin vk
Auch auf die Gefahr hin das es jetzt andere Nervt. :)
Zitat
Antw:SMA Sunny Home Manager abfragen.
« Antwort #168 am: 14 März 2016, 17:34:17 »
Moin
@all
Habt ihr das http://www.sma.de/partners/sma-developer.html schon gesehen?
Leider bin ich nicht in der Lage dazu. :-[ ::)
Hi Michael,
ja, das habe ich mir angeschaut.
Das hilft nur bedingt weiter:
1. die API für den SHM scheint mir primär für das SEMP Protokoll (basiert auf SIP) zu sein. Also für die Steuerung von Geräten. Das simple Abfragen der Leistungswerte der Anlage habe ich gar nicht gefunden
2. Ein Toolkit o.ä. für den EM scheint nicht dabei zu sein. Dafür verwende ich halt das Tool http://www.unifox.at/sma_energy_meter/.
Im übrigen wäre es ohne den SMA-EM-Daemon auch schwer, die Multicast-Pakete des EM im FHEM zu verarbeiten. Den EM kann man nicht pollen, sondern man muss auf die Pakete warten. Das wäre im Rahmen des FHEM vermutlich nicht einfach zu implementieren, ohne Gefahr zu laufen, das Laufzeitverhalten des ganzen Teils durcheinander zu bringen (zumindest soweit ich das Modell des FHEM verstanden habe).
3. Wenn ich die Doku und den C++-Code sehe, dann scheint mir, dass seitens SMA noch Methoden der 90er eingesetzt werden. Das sieht alles nach Wasserfallmodell mit irgendwelchen Windows C++-Tools aus.
Das ist nicht (mehr) meine Welt. Ich habe keine Lust mich durch Spaghetti-C++ zu wühlen und dann das ganze noch irgendwo nach Linux zu portieren. Zeitgemäße Entwicklung sieht ganz anders aus. Das Python-Tool ist ein guter Anfang.
Gruß
vk
P.S.: Sichtwort zeitgemäße Entwicklung: das FHEM könnte im Kern mal dringend ein Re-Modelling mit MVC-Modell gebrauchen. Dann wäre es auch leicht, das ganze mal mit einer richtigen Oberfläche im responsive Design (z.B. mit Bootstrap) auszustatten, statt dieser Horror-Lösung mit 3 Webserver-Ports für unterschiedliche Endgeräte.
Hallo zusammen
ich habe das neue/geänderte Modul erfolgreich am Laufen. Danke für die gute Arbeit.
Als Anmerkung zu dem Abfrageintervall - ich hatte 29sec eingestellt.
Ich habe nun heute von SMA Solar eine Mail erhalten, wo sie mich darauf hinweisen, dass der automatisierte Zugriff auf die Homemanager in den Nutzungsbedingungen ausgeschlossen sei.
Sie können das Interesse an einer Weiterverarbeitung der Daten in der Hausautomatisierung nachvollziehen, bieten jedoch derzeit keine technische Möglichkeit dieses umzusetzen.
Und dann:
Um mir weiteren Zugriff auf die Daten zu ermöglichen, bitten Sie mich das Abfrageintervall auf >=60sec zu setzen.
Ich glaube, das ist erstmal ein guter Kompromiss.
Viele Grüße Ulf
Hallo vk, hallo zusammen,
bei mir gibt es ebenfalls einen SMA Energymeter und den lese ich bisher folgendermaßen aus:
1. Installation der Anwendung Smart Charging Controller 1.4.92 (läuft mit auf dem FHEM Linux): http://www.eb-systeme.de/?page_id=1382
Die Software liefert neben anderen Funktionen die XML-Daten des EM per Webabfrage
2. in die 99_myUtils die Funktion zur Datenabfrage des Controllers einbauen (habe ich nonblocking ausgeführt):
#######################################################################################
### Auslesen SMA Energy Meter und zuweisen an Energymeter-Readings #####
#######################################################################################
sub UpdateEnergyMeter {
my $hash->{NAME} = "SMA_EM";
my $param = {
url => "http://192.168.2.46:18001/xml",
timeout => 5,
hash => $hash,
method => "GET",
header => "Accept: application/xml",
callback => \&UpdateEnergyMeter_Return
};
HttpUtils_NonblockingGet ($param);
}
sub UpdateEnergyMeter_Return {
my ($param, $err, $xmltext) = @_;
my $hash = $param->{hash};
my $name = $hash->{NAME};
if ($err ne "") {
# wenn ein Fehler bei der HTTP Abfrage aufgetreten ist
my $logstr = "error while requesting ".$param->{url}." - $err";
Log3 ($name, 3, "$name - $logstr");
return;
}
elsif ($xmltext ne "")
# wenn die Abfrage erfolgreich war
{
my $ref = XMLin($xmltext, KeyAttr => { }, ForceArray => [ ]);
Log3 ($name, 4, "$name - update readings");
fhem("setreading Energymeter total_pac_usage $ref->{SmartMeter}{ActualPower}");
fhem("setreading Energymeter phase_1_usage $ref->{SmartMeter}{RealPower}{L1}");
fhem("setreading Energymeter phase_2_usage $ref->{SmartMeter}{RealPower}{L2}");
fhem("setreading Energymeter phase_3_usage $ref->{SmartMeter}{RealPower}{L3}");
}
return;
}
3. Definition für Dummy, Logfile und SVG-Plot anlegen:
# Gerätedefinition Energymeter
define Energymeter dummy
attr Energymeter group SMA Energy Meter
attr Energymeter icon measure_power
attr Energymeter room Energie
#
# Logfile Definition
#
define FileLog_Energymeter FileLog ./log/Energymeter-%Y-%m.log Energymeter:.*total_pac.*|Energymeter:.*phase_1.*|Energymeter:.*phase_2.*|Energymeter:.*phase_3.*
attr FileLog_Energymeter group SMA Energy Meter
attr FileLog_Energymeter room FileLog
#
# Definition Plots
#
define SVG_FileLog_Energymeter_1 SVG FileLog_Energymeter:SVG_FileLog_Energymeter_1:CURRENT
attr SVG_FileLog_Energymeter_1 group SMA Energy Meter
attr SVG_FileLog_Energymeter_1 room Energie
attr SVG_FileLog_Energymeter_1 title "Einspeisung (-) / Verbrauch (+) _ Min $data{min1}, Max $data{max1}, Last $data{currval1}"
4. fehlt noch das notify oder at zum Triggern:
define UpdateVerbrauch notify STP_5000:device_status:.* {UpdateEnergyMeter}
attr UpdateVerbrauch room Energie
Ich triggere hier den Energy Meter wenn ich den Wechselrichter auslese, damit das einigermaßen synchron läuft.
Das ist zwar kein Modul in dem Sinne, aber vielleicht eine Anregung .....
Grüße
Heiko
Hatte heute dieselbe E-Mail von SMA. Ich habe vorm abschicken den Teil wieder gelöscht, in dem ich anbiete, ihnen einen Webservice zu schreiben.
Wenn sie mich aus dem Portal kicken, fliegt der Homemanager raus. Der ist dann so nützlich wie ein Kropf. Die Bluetooth Lösung ist A) viel zu teuer und erreicht B) meine Waschmaschine nicht und schon gar nicht die 60m entfernte Pumpe vom Pool. Die "einschalten bei Sonne" Funktion muss dann halt über einen anderen Lichtsensor realisiert werden. Bei meiner 10kwp Anlage ist da immer Reserve ab Sonneneinstrahlung X
Hat schon mal jemand dran gedacht, den Netzwerktraffic des Homemanager zu sniffen und die Daten direkt abzugreifen? Ich frag mich echt grad warum das Teil überhaupt an der Wand hängt.
Meine Antwort:
Sehr geehrter Herr ........,
Der Aktualisierungsintervall meiner Software ist, wie sie ihren
Serverlogs entnehmen können auf 120! Sekunden eingestellt, das ist das
doppelte von dem, was sie als Minimum fordern.
Das sie keine offizielle Schnittstelle anbieten, weder online noch
offline an der Anlage, ist in der Tat sehr traurig, für einen so
prominenten Hersteller. Hätte ich das vorher gewusst, hätte ich mich für
einen anderen Hersteller entschieden. Gerade die FHEM Nutzer würden
sofort und liebend gern auf eine angebotene offizielle Schnittstelle
bzw. Webservice umsteigen.
Zum Vergleich, wenn ich auf der Portal Webseite bin wird die gleiche
Abfrage alle 5 Sekunden gemacht, das sind 24 Anfragen innerhalb 120
Sekunden, statt einer. Das Volumen einer Datenübertragung liegt bei 900
Byte.
Mir freundlichen Grüßen,
Morgen,
ich finde die Reaktion von SMA interessannt. Allerdings auch verständlich. So etwas habe ich leider schon vermutet und es hat sich ja auch bewahrheitet.
Es gibt da leider nur die Möglichkeit auf die Gnade von SMA zu hoffen. Obwohl es relativ schwierig ist für SMA raus zu finden wer mein Modul verwendet. Denn der Zugriff auf die Daten ist der Selbe wie die Anzeige von der SMA Seite. Also wenn man die SMA Seite dauerhaft offen hat, verursacht die sogar noch mehr Last.
Alternativ könnten wir alle zusammen einen offenen Brief an SMA verfassen in dem wir um eine Möglichkeit zur Abfrage Bitten. Wenn genug von uns den selben Brief an SMA schicken, dann bekommen wir etwas mehr gehör.
Über Social Networking kann man dann noch die Bitte verbreiten.
Gruß Brun
Ich denke mal, das SMA hier sowieso undercover mitliest. Das ihr Portal automatisiert abgefragt wird, sehen sie anhand der Logs. Niemand hat 24/7 die Webseite offen, und wenn, dann ist der Intervall 5 Sekunden und nicht variabel.
Gesendet von iPhone mit Tapatalk
"Auf die Gnade von SMA" hoffen finde ich keine gute Strategie.
Frage in die Runde: wer hat mit dem SHM zugleich auch das SMA-EM im Einsatz?
Denn wie in meinem letzten Beitrag geschrieben: das SMA-EM wäre leicht zu integrieren (bin bereits dabei), macht keinen Traffic bei SMA weil der Zugriff nur im lokalen Netz erfolgt und verstößt auch gegen keine Nutzungsbestimmungen.
Einzige Nachteile:
- hat evtl. nicht jeder, der den SHM hat (oder??)
- liefert nicht alle Werte, die das Portal liefert - die wesentlichen, nämlich Bezug+Einspeisung jeweils aktuell (W) und Zählung (kWh) liefert es aber.
Der Code von DS_Starter ist ein Ansatz. Wobei ich aber die Entwicklung in Modulform statt 99_myUtils bevorzugen würde, da ein offizielles Modul z.B. 98_SMAEM einfacher zu warten und verteilen wäre.
Zusätzlich zum FHEM-Modul wäre der Daemon http://www.unifox.at/sma_energy_meter/ nötig. Der ist aber sehr gut gemacht und einfach zu nutzen.
Ich werde versuchen, mir heute oder morgen mal an zu schauen, wie ein Modul 98_SMAEM aussehen könnte und mal was implementieren.
Gruß
vk
Hallo VK,
eine Umsetzung in einem separaten Modul würde ich auch begrüßen.
War bisher nicht dazu gekommen ... Hatte bisher andere Präferenzen.
Wenn du etwas hast würde ich es gerne mit testen.
Grüße
Heiko
Um ehrlich zu sein kenne ich SMA-EM gar nicht. Google ist da auch nicht sehr ergiebig. Habt ihr ein paar Links für mich? Was kostet der Spass? Edit, habs gefunden, 300EUR, seid ihr verrückt? >:( Wenn ich einen Ersatz für den Homemanager finde soll mir das nur Recht sein. Ich brauche das Portal nicht. Was meine Anlage leistet weiß ich selber und zur EV Optimierung ist das SMA Bluetooth System schlichtweg untauglich, wenn der Wechselrichter 20m und ein paar dicke Lehmwände weg vom restlichen Haushalt ist.
Der Neue Raspi3 hat Bluetooth an Bord. Wäre es da nicht eine Idee, in die Bluetooth Kommunikation zwischen WR und HM einzusteigen? Wobei man da nur die aktuellen Erzeugungsdaten bekommen wird. Hat schon mal wer mit Wireshark die Pakete angeschaut, die der HM nach Hause telefoniert? Das kann so viel nicht sein. Wenn man einen kleinen Webserver baut und die DNS Adresse umbiegt, könnte der HM ja statt mit Mama auch mit einem Raspi telefonieren, und seine Daten abladen.
Das hört sich alles recht brutal an, aber es sind immerhin unsere Daten. Es ist niemand verpflichtet, seine Daten an SMA zu übermitteln. Zudem ist der HM unser Eigentum, genauso wie der WR und die Panels auf dem Dach.
Wenn sich SMA weiterhin ziert, einen Webservice anzubieten, fliegt der Wechselrichter bei Defekt raus und wird durch Fronius ersetzt. Andere Mütter haben auch schöne Töchter http://www.fronius.com/cps/rde/xchg/fronius_international/hs.xsl/83_28911_DEU_HTML.htm?fail=1&rdeDmResult=-6502#.VuGKk-aO5kE
Das SMA da was dran macht sieht man ja auch.
Siehe Plugwiese Steckdosen und SEMP.
Auch werden sie uns nicht wirklich aussperren. Dann hätten sie ja nicht den Vorschalg mit den 60sek Intervall gemacht.
Wir sollten die Gelegenheit nutzen und mal mit SMA in den Dialog treten.
Ich denke mal nicht das SMA hier mitliest.
Alternative wäre dann halt nur die Funktionen des SHM nach zu bauen.
Naja, der USER AGENT lässt nicht auf FHEM schließen, trotzdem wird FHEM explizit in der Mail erwähnt.Was ich nicht verstehe, ist, dass sie von mir 60 Sekunden einfordern, obwohl mein Intervall schon seit Ewigkeiten auf 120 steht (schon aufgrund der riesigen Datenenmengen im Log) Um irgendwas erzeugungsabhängig zu schalten reichen 120 Sekunden locker aus. Mir kann niemand erzählen, das sie ihre eigenen Serverlogs nicht interpretieren können. Ich bin der Meinung, das das einfach nur ein Textbaustein ist, der an alle Nutzer auf einer imaginären "schwarzen Liste" geht
Wenn ich SMA wäre, würde ich einen separaten Server aufsetzen und API Keys an die FHEM Nutzer verteilen. Dann haben sie keinen negativen Impact auf ihrem Portal. Die Daten kommen eh von einem SQL Server, an dem sich der Webserver bedient. Wenn der SQL Server nicht skaliert, dann eh gute Nacht, das wäre arg peinlich.
Im Übrigen gibt es von SMA auch eine App (Android/ios), die ebenfalls Echtzeit Daten liefert. Keine Ahnung mit welchem Server die sich verbindet, aber es muss ja auch ein Webservice sein. Ich glaub ich muss über Ostern wirklich mal Wireshark anwerfen.
@vk: https://github.com/datenschuft/SMA-EM <- geil! Aber 300EUR schmerzen wirklich >:(
Die verbindet sich mit keinem Server sondern holt die Daten Live aus dem MultiCast des Energy Meter ...
Das wäre es die bessere Lösung, diese Daten abzugreifen statt vom Portal zu holen.
Zitat von: GrayDeath am 22 März 2016, 11:22:29
Die verbindet sich mit keinem Server sondern holt die Daten Live aus dem MultiCast des Energy Meter ...
Das wäre es die bessere Lösung, diese Daten abzugreifen statt vom Portal zu holen.
Die App? Das glaube ich kaum. Dann würde sie ja bei mir nicht funktionieren, mangels EM. Sie tut es aber trotzdem und hat auch Zugriff auf historische Daten.
(http://uploads.tapatalk-cdn.com/20160322/337f23c24cd1adfa71d69216140bed62.jpg)
nein dir nicht ;) die holt die Daten aus dem Portal ... merkt man auch an der verzögerung.
Ich meine eine andere ... die kann den EM direkt auslesen ...
Es gibt eine eigene App für das SMA EM. Die bekommt die Daten über die Multicastgruppe im lokalen Netz.
Genau diese Schnittstelle würde ich auch verwenden, um FHEM an zubinden.
@Waldmensch: ja, diese GIT-Repo verwende ich für den Code für die Schnittstelle zum EM.
Deine Überlegungen zu SMA (SQL-Server etc. aufsetzen): wenn SMA erkannt hätte, wie strategisch wichtig es ist, offene Schnittstellen und eine aktive Community zu haben, um einen Service aufzubauen, der Daten im Mittelpunkt der Nutzung hat, weil diese immer wichtiger werden (z.B. beim Wetter - siehe diese Interessante Doku: http://www.ndr.de/fernsehen/sendungen/45_min/Das-Geschaeft-mit-dem-Wetter,sendung363162.html - SMA wäre in der Lage Wetterdaten Live und mit hoher Auflösung zu liefern), dann wäre ein SQL-Server (oder 10 oder 100 davon) das kleinste Problem. Aber der deutsche Mittelstand hat das nach wie vor nicht kapiert. Siehe meine Mail an SMA. Mir als Kunde geht das mittlerweile sehr auf den Nerv. Alle rennen mit top modernen Smartphones rum, aber wenn es um Techniken wie Heizung, PV, Haussteuerung etc. geht, dann haben Sie nur altbackenen Mist zu bieten (siehe die C++ Schnittstelle).
Zitat von: Waldmensch am 22 März 2016, 09:44:40
300EUR, seid ihr verrückt?
300 Euro sind ganz okay. Ein KNX Zähler liegt auch in der Preisklasse. Dafür funktionieren diese Geräte (KNX Zähler und SMA-EM) auch zuverlässig und lassen sich leicht in Infrastrukturen integrieren.
Generell kann ich KNX sehr empfehlen, wenn man neu baut oder kernsaniert. Im ersten Moment erschrecken die Preise dieser Geräte, aber in der Praxis wirst Du merken, dass der ganze Folgeaufwand wesentlich geringer ist, als bei allen anderen Techniken.
Zitat von: Waldmensch am 22 März 2016, 09:44:40
Der Neue Raspi3 hat Bluetooth an Bord. Wäre es da nicht eine Idee, in die Bluetooth Kommunikation zwischen WR und HM einzusteigen?
Das geht recht einfach. Es gibt da bereits ein FHEM Modul. Aber BT halt halt enge Grenzen mit der Reichweite
Zitat von: Waldmensch am 22 März 2016, 09:44:40
Hat schon mal wer mit Wireshark die Pakete angeschaut, die der HM nach Hause telefoniert?
Ja, habe ich. DNS umbiegen auf eigenen Webserver habe ich auch schon überlegt. Ist definitv machbar. Aber wesentlich aufwändiger als den Multicast des SMA-EM zu verwenden.
Hätte aber den Vorteil, dass man keinen SMA-EM braucht.
Aber es hat den Nachteil, dass man eine Möglichkeit zum "DNS umbiegen" braucht. Das dürfte für die meisten Anwender mit Routern der Provider eher schwierig werden. Außerdem hängst Du wieder davon ab, dass Du die API von SMA kennst und pflegen musst. Jede Änderung von SMA an der Schnittstelle bedeutet wieder Downtime des FHEM-Moduls und es wird einer gebraucht, der das fixt.
Zitat von: Waldmensch am 22 März 2016, 09:44:40
Das hört sich alles recht brutal an, aber es sind immerhin unsere Daten. Es ist niemand verpflichtet, seine Daten an SMA zu übermitteln. Zudem ist der HM unser Eigentum, genauso wie der WR und die Panels auf dem Dach.
Ja, das sehe ich auch so. Der ganze Deal mit dem SHM ist sehr einseitig zu Gunsten von SMA.
ZitatAber es hat den Nachteil, dass man eine Möglichkeit zum "DNS umbiegen" braucht. Das dürfte für die meisten Anwender mit Routern der Provider eher schwierig werden. Außerdem hängst Du wieder davon ab, dass Du die API von SMA kennst und pflegen musst. Jede Änderung von SMA an der Schnittstelle bedeutet wieder Downtime des FHEM-Moduls und es wird einer gebraucht, der das fixt.
Naja, ein Raspi mit DHCP und BIND sollte das schon bringen. Dazu einen kleinen selbstgestrickten http Server, der die Daten in Empfang nimmt und in eine SQLite Datenbank packt bzw. im Speicher vorhält, bis die Abfrage von FHEM kommt. Es ist aufwändig aber machbar. Man könnte es ja fix&fertig als Raspi Image anbieten. Einen alten RPi 1 haben viele noch rumliegen.
Aber natürlich hast Du recht, was den SMA-EM betrifft, das ist definitiv eine saubere und vermutlich die sexiest Lösung.
Vielleicht lässt sich SMA ja zu einem Rabatt hinreißen, wenn ihnen die FHEM Nutzung ihres Portals wirklich physische Schmerzen bereitet. Wenn es eine ausentwickelte EM -> FHEM Anbindung gäbe, würden die sicher auch viele benutzen. Schon aus Gründen der Ausfallsicherheit.
Leider steckt das Theme HausAutomation immer noch in den Kinderschuhen.
Es gibt nur sehr wenige Standarts an die sich die Herstellen richten können. Da ist es halt so, dass jeder sein eigenes Süpchen kocht.
Für Über 95% der Kunden reicht das ja auch aus.
Im Thema Offenheit hat sich ja bei SMA auch einiges getan.
Nun liegt es an uns SMA zu bitten noch offener zu werden.
@VK:
Was meinst du denn mit "altbacken"?
@Brun: Nimms mir nicht übel, aber ich werde keine Firma "bitten" oder betteln, mich an meine eigenen Daten zu lassen. Wenn sie sich in ihrem eigenen Universum einigeln und keine API anbieten, kommt der nächste Wechselrichter halt von der Konkurenz, die das tun. Die Elektronik der Wechselrichter ist eh bei allen gleich. Auf dem Markt kann man sich nur von der Konkurrenz abheben, wenn man ein Highlite hat. Wenn das Highlite bei SMA heißt "Muss hausfrauentauglich sein - Webportal reicht", dann bin ich halt einfach nicht die Zielgruppe für dieses Produkt.
@vk: Gibt es zum SMA-EM eigentlich auch vergleichbare Produkte anderer Hersteller?
@Waldmensch: klar, jeder Zähler mit KNX, IP oder sonst einer offenen Schnittstelle geht. Ich setze selbst eine ganze Reihe von Zählern der Firma NZR ein:
http://www.elektro4000.de/Anlagen-Systemtechnik/Zaehlerplatz-und-Verteilersysteme/Elektrizitaetszaehler/NZR-Hutschienenzaehler-WBZ-80-4TE-ungee::294324.html
Da baut man dann noch eine KNX Schnittstelle dran:
http://www.elektro4000.de/Elektroinstallations-Systeme/Einbau-Messgeraete/Zubehoer-fuer-Einbau-Messgeraete/NZR-EIB-KNX-Schnittstelle-56050004::296463.html
und hat eine perfekte Lösung, die sich super leicht in FHEM integriert (10_EIB.pm).
Ich habe mich halt irgendwann strategisch für KNX entschieden und dann auch alle Zähler darauf hin angeschafft.
Das Ding von SMA spricht TCP/IP - das passt zwar nicht 100% in mein KNX-Konzept, aber da letztlich alle Daten per TCP/IP auf dem Raspberry Pi landen, ist das okay (Ich benutzte einen KNX2IP Gateway, um den ganzen KNX Bus auf eine Multicast TCP/IP Verbindung zu bringen, daher ist "früher oder später" eh alles TCP/IP).
@Brun: wenn ich mir anschaue, was SMA veröffentlicht - insbesondere die Doku - dann sehe ich, dass die Methoden und Tools, mit denen entwickelt wird, sehr altbacken sind. Das wirkt alles nicht agil und setzt Techniken aus den 90er Jahren ein. Kein Mensch in einem agilen Web-Entwicklungs-Umfeld entwickelt in C++ und schreibt Doku mit MS Word. Das Thema Softwarentwicklung wird - wie bei fast allen deutschen Mittelständlern - hier nicht ernst genommen und es wird nicht in moderne Techniken und Entwickler investiert (die Kosten beide ja Geld), sondern einfach mit dem Zeug, das man aus der internen IT kennt (MS Produkte usw.) weiter gemacht.
@vk: Okay, vom Preis her nimmt sich das nicht viel. Ich habe zwar eine alte EIB Installation mit "nicht LED fähigen" Dimmern (kotz), die habe ich aber nicht in FHEM eingebunden. Besser gesagt, ich habe es mal versucht, habe aber die Dimmer nie richtig angesprochen gekriegt. Das ist aber ein anderes Thema. Letztlich müsste ich den Bus dann aber fast 100m übers Gehöft verlegen, wohingegen Netzwerkkabel schon liegt, für den HM. 1:0 für das EM
Ich bin mir 100pro sicher, dass das Argument mit der Serverlast nur vorgeschoben ist. Man will halt seine BT Steckdosen verticken und da ist FHEM ein Dorn im Auge. Verhindern können sie den Zugriff nicht, ohne den jeweiligen Account zu deaktivieren. Das könnten sie sicher machen, es würde sich aber schnell in der Szene der tech-affinen Leute rumsprechen. Gerade die sind aber potenzielle Kunden. Man verkennt dort, bei SMA, das Potenzial einer Community und die Synergien daraus. Viele PV Anlagen Erstkäufer sind ratlos, für welches System sie sich entscheiden sollen. Unterstützt man Communities bekommt man auch Empfehlungen von dort Bsp. "Nimm SMA, da kannste wunderbar FHEM drankoppeln ......" Letztlich werden sie ein paar Bluetooth Steckdosen weniger verkaufen (Die sie an einen FHEM User eh nicht verkauft hätten), dafür halt ein paar Komplettanlagen mehr. Es liegt an den Managern was sie wollen, dafür bekommen sie ihren Bonus. Ein FHEM User wird immer einen Weg finden, seine Aktoren abhängig vom Lichteinfall zu schalten. Das ist zwar nicht ganz so optimal, wie direkt mit den Daten der PV Anlage, aber irgendwie geht es immer.
Wenn man das EM unter dem Aspekt sieht, das man für das gleiche Geld nicht mal 3 BT Steckdosen kriegt, sieht es auch nicht mehr so teuer aus, wenn man den Mehrwert betrachtet. Immerhin kann man beliebig viele Aktoren schalten.
Zitat von: Waldmensch am 22 März 2016, 15:51:28
@vk: Okay, vom Preis her nimmt sich das nicht viel. Ich habe zwar eine alte EIB Installation mit "nicht LED fähigen" Dimmern (kotz), die habe ich aber nicht in FHEM eingebunden. Besser gesagt, ich habe es mal versucht, habe aber die Dimmer nie richtig angesprochen gekriegt. Das ist aber ein anderes Thema. Letztlich müsste ich den Bus dann aber fast 100m übers Gehöft verlegen, wohingegen Netzwerkkabel schon liegt, für den HM. 1:0 für das EM
Du kannst einfach 2 Adern des CAT-Kabels für KNX verwenden. Geht bis 1km Länge - für mehr brauchst Du einen sog. Linienkoppler. Wenn Du nur 100MBit beim Ethernet brauchst, dann kannst Du sogar 100BaseT-Ethernet und KNX über die 8-Adern schicken, weil das 100BaseT nur 4 der 8 Adern belegt. Die nicht genutzten kann man - durch geschicktes Verdrahten - für den 2-Draht Bus verwenden.
Das hier ist eine günstigere Variante für einen 3-Phasen Zähler:
http://www.voltus.de/hausautomation/knx-eib/systemgeraete/energiezaehler/lingg-janke/sonstige/lingg-janke-ez-emu-dstd-d-reg-fw-emu-standard-knx-reg-energiezaehler-te-5-standard-direktmessend-3-ph-0-25-5-75.html?etimclass=EC001506&listtype=search&searchparam=z%C3%A4hler%20knx
Kann der denn auch Einspeisung zählen? Das EM zeigt ja, soweit ich das verstanden habe, negative Werte bei Einspeisung.
Gesendet von iPhone mit Tapatalk
Zitat von: Waldmensch am 22 März 2016, 16:43:00
Kann der denn auch Einspeisung zählen? Das EM zeigt ja, soweit ich das verstanden habe, negative Werte bei Einspeisung.
Gute Frage. Ich verwende die Geräte von NZR nur unidirektional. Es gibt aber bei den Herstellern in der Regel auch immer Modelle für bidirektionalen Betrieb. Von Saia gibt es auf jeden Fall einen. Bei dem weiss ich aber nicht, ob es den mit KNX gibt. Verwende diesen mit Modbus. Und auch das SMA-EM, denn beide habe ich im Einsatz. Google ist Dein Freund.
Hallo
einen Energy Meter habe ich nicht. der ist mir einfach zu teuer. Eine Lösung ohne wäre für mich schöner.
Zum Auslesen der Wechselrichter über Bluetooth gibt es SBFspot. Das Funktioniert recht gut, aber da fehlt mir der aktuelle Verbrauch.
Gruß Kalli
Hallo,
habe zum Glück einen EM wegen 70% weich..
Da ich meinen Speicher per fhem steuere war mir die Erreichbarkeit vom SMA Portal bald zu schlecht
Lese deshalb den EM seit 2014 wie von Heiko beschrieben aus und den Wechselrichter per Speedwire und SPFSpot,
die Werte werden zusätzlich in die SHM readings geschrieben
seit dem ist es nice wenn der SHM Modul läuft, wenn nicht egal ... ;)
Ich habe ja meine Daten Vorort life und nicht so Zeitverzögert wie vom Portal,
wenn ich nen SI hätte würde mir vieleicht ein paar schöne Daten vom SHM fehlen ...
Gruß Hermann
Hallo zusammen,
ich habe das Modul für das SMA Energy Meter (SMA-EM) fertig.
SMAEM liest die Datenpakete vom SMA-EM direkt im LAN, statt Abfragen über das Internet an SMA zu schicken.
Wer ein SMA-EM in seiner Anlage hat, kann dadurch also auf den SHM verzichten.
Ich habe einen eigenen Forum-Thread dazu gestartet:
https://forum.fhem.de/index.php?topic=51569.0
Wer gleich los legen will, hier gibt es das Modul:
https://github.com/kettenbach-it/FHEM-SMAEM
Freue mich über Tester!
Gruß
VK
Danke Volker du bist der Beste ;)
ich werde das heute mal testen ...
Zitat von: Brun am 21 März 2016, 08:26:46
Hallo Bernd,
relativer Forecast? Wie bist du denn da drauf gekommen? Was hast du damit denn genau vor?
Hallo Brun,
"relativ" deshalb, weil es nicht die absoluten Stundenwerte wiedergibt (wie 13 Uhr, 14 Uhr usw.), sondern "in der nächsten Stunde", "in der übernächsten" usw.
Wann genau der Geschirrspüler läuft, ist mir egal. Es soll nur sichergestellt sein, dass in den nächsten Stunden genug Dachstrom kommt :)
Zitat von: Volker Kettenbach am 30 März 2016, 12:47:26
Hallo zusammen,
ich habe das Modul für das SMA Energy Meter (SMA-EM) fertig.
SMAEM liest die Datenpakete vom SMA-EM direkt im LAN, statt Abfragen über das Internet an SMA zu schicken.
Wer ein SMA-EM in seiner Anlage hat, kann dadurch also auf den SHM verzichten.
Gruß
VK
Hallo Volker,
das ist ja super :) Werde ich auch testen.
Kann man da auf den SHM wirklich komplett verzichten? Der EM zeigt doch, wieviel man einspeist und aus dem Netz bezieht, aber wieviel vom Dach kommt ist nicht mit dabei, oder?
Ich habe auch gerne den aktuellen Ladestand des Akkus im Fhem ;)
Trotzdem: die Werte vom EM finde ich eine sinnvolle Ergänzung. Die hatte ich bisher leider nicht im Fhem.
Zitat von: BerndArnold am 31 März 2016, 06:19:22
Kann man da auf den SHM wirklich komplett verzichten? Der EM zeigt doch, wieviel man einspeist und aus dem Netz bezieht, aber wieviel vom Dach kommt ist nicht mit dabei, oder?
Ich habe auch gerne den aktuellen Ladestand des Akkus im Fhem ;)
Trotzdem: die Werte vom EM finde ich eine sinnvolle Ergänzung. Die hatte ich bisher leider nicht im Fhem.
Es hängt halt von Deiner individuellen Anlage ab: der SMA-EM bekommt keine Werte vom Wechselrichter und auch nicht anders herum. Der SHM ist das Gerät, welches die Werte sammelt und dann (leider nur) an das Portal weiter gibt.
Folglich bekommst Du den Akkuladestand oder Details über die Leistung der Module nicht vom SMA-EM, sondern nur vom SHM oder dem WR.
Die Werte des SMA-EM wiederum kannst Du besser von diesem bekommen, als vom SHM. Der WR kennt sie auch nicht.
Wenn Du - wie ich - aus dem ganzen letztlich nur Einspeisung und Bezug weiter verarbeiten willst, dann reicht der SMA-EM.
Für alles weitere dann entweder SHM - mit den bekannten Nebeneffekten oder direktes Abfragen des WR per Bluetooth.
Ich habe übrigens festgestellt, dass es für die SMA Wechselrichter ein Ethernetmodul gibt, welches wohl das gleiche Protokoll spricht, wie der SMA-EM. Könnte also ggf. auch mit meinem Modul gelesen werden. Kostet auch nur 90,- Euro.
Folglich wäre es denkbar, den SHM dadurch zu ersetzen und eine Anlage komplett per Ethernet über WR-LAN und SMA-EM auszulesen.
Leider hat der Vertrieb, der mir die Anlage gekauft hat, von allen diesen Dingen keine Ahnung. Sonst hätte ich das anders gemacht.
Gruß
Volker
funktioniert bei Euch das Modul noch? Schaut mal auf das Datum der Readings. Das Portal läuft ganz normal auf der Webseite
Hallo Waldmensch,
bei mir ist auch seit kurz vor 06:00 Uhr ein Ausfall zu verzeichnen.
Man das nervt vielleicht und ich war anfangs so von SMA überzeugt. :(
Hallo,
vielen Dank an das Modul. Funktioniert ausgezeichnet, solange SMA nicht wieder mal an seinem Webserver fummelt.
Derzeitig bekomme ich mal wieder keine Werte. Da ich keine Ahnung von Perl habe kann ich aber eventuell damit helfen:
{"__type":"LiveDataUI","Timestamp":{"__type":"DateTime","DateTime":"2016-03-31T09:36:53","Kind":"Unspecified"},"PV":null,"FeedIn":null,"GridConsumption":null,"DirectConsumption":null,"SelfConsumption":null,"SelfSupply":null,"TotalConsumption":null,"DirectConsumptionQuote":null,"SelfConsumptionQuote":null,"AutarkyQuote":null,"BatteryIn":null,"BatteryOut":null,"BatteryChargeStatus":null,"OperationHealth":null,"BatteryStateOfHealth":null,"ModuleTemperature":null,"EnvironmentTemperature":null,"WindSpeed":null,"Insolation":null,"InfoMessages":["The current consumption could not be determined. The current purchased electricity is unknown. "],"WarningMessages":["The current PV generation could not be fully determined. An inverter did not respond in time.","The battery values could not be determined. The battery did not respond in time."],"ErrorMessages":["The current data cannot be retrieved from the PV system. Check the cabling and configuration of the following energy meters:\u003cdiv class=\"liveModeErrorSub\"\u003e\u003cul\u003e\u003cli class=\"faultingCounter\"\u003e\u003cspan\u003eFeed-in meter\u003c/span\u003e\u003c/il\u003e\u003cli class=\"faultingCounter\"\u003e\u003cspan\u003eExternal consumption meter\u003c/span\u003e\u003c/il\u003e\u003c/ul\u003e\u003c/div\u003e"],"Info":{}}
Es sieht für mich so aus, das SAM den JSON-String nicht mehr richtig zusammensetzt bzw. den request dafür ins Lehre laufen lässt. Mit dem gleichen User gegen das Portal, direkt im Webinterface sehe ich aktuelle Werte.
Danke für die super Arbeit!
Gruß
tomtom
Hallo Waldmensch,
nein. Seit gestern ca. Mittag sieht es genau so aus wie bei dir.
Das was an die Webseite geliefert wird, sieht eigentlich aus wie immer, oder? Kann man im Browser sehen, wenn man sunnyportal aufruft, auf F12 drückt und in der Konsole dann auf Netzwerk die Pakete anschaut. Geraderücken mit http://jsonlint.com/
Edit: wobei ein paar werte dazugekommen sind?! ModuleTemperature, Windspeed etc. Wirft das das Modul aus der Bahn?
{
"__type": "LiveDataUI",
"Timestamp": {
"__type": "DateTime",
"DateTime": "2016-03-31T10:04:38",
"Kind": "Unspecified"
},
"PV": 1439,
"FeedIn": 1046,
"GridConsumption": 0,
"DirectConsumption": null,
"SelfConsumption": 393,
"SelfSupply": 393,
"TotalConsumption": 393,
"DirectConsumptionQuote": null,
"SelfConsumptionQuote": 27,
"AutarkyQuote": 100,
"BatteryIn": null,
"BatteryOut": null,
"BatteryChargeStatus": null,
"OperationHealth": null,
"BatteryStateOfHealth": null,
"ModuleTemperature": null,
"EnvironmentTemperature": null,
"WindSpeed": null,
"Insolation": null,
"InfoMessages": [],
"WarningMessages": [],
"ErrorMessages": [],
"Info": {}
}
@theta-my: bei dir kommen ja gar keine Werte?! habe dein JSON auch mal "geradegerückt". Sieht aus als ob dein HM keine Daten ans Portal liefert. Hängt der noch am Internet?
{
"__type": "LiveDataUI",
"Timestamp": {
"__type": "DateTime",
"DateTime": "2016-03-31T09:36:53",
"Kind": "Unspecified"
},
"PV": null,
"FeedIn": null,
"GridConsumption": null,
"DirectConsumption": null,
"SelfConsumption": null,
"SelfSupply": null,
"TotalConsumption": null,
"DirectConsumptionQuote": null,
"SelfConsumptionQuote": null,
"AutarkyQuote": null,
"BatteryIn": null,
"BatteryOut": null,
"BatteryChargeStatus": null,
"OperationHealth": null,
"BatteryStateOfHealth": null,
"ModuleTemperature": null,
"EnvironmentTemperature": null,
"WindSpeed": null,
"Insolation": null,
"InfoMessages": ["The current consumption could not be determined. The current purchased electricity is unknown. "],
"WarningMessages": ["The current PV generation could not be fully determined. An inverter did not respond in time.", "The battery values could not be determined. The battery did not respond in time."],
"ErrorMessages": ["The current data cannot be retrieved from the PV system. Check the cabling and configuration of the following energy meters:\u003cdiv class=\"liveModeErrorSub\"\u003e\u003cul\u003e\u003cli class=\"faultingCounter\"\u003e\u003cspan\u003eFeed-in meter\u003c/span\u003e\u003c/il\u003e\u003cli class=\"faultingCounter\"\u003e\u003cspan\u003eExternal consumption meter\u003c/span\u003e\u003c/il\u003e\u003c/ul\u003e\u003c/div\u003e"],
"Info": {}
}
Hallo,
ja, Daten wurden an das Portal geliefert. Ich hab sie direkt auf der Webseite ja sehen können - mit dem selben User, der auch im FHEM hinterlegt worden ist.
Komischerweise läuft es jetzt wieder obwohl keine Änderungen meinerseits erfolgt sind.
(Hier liest wohl doch jemand von SMA mit ;) )
Gruß
tomtom
Hallo zusammen,
Bei mir ging es nach dem zuvor beschriebenen Ausfall von 11:00 - 12:00 Uhr wieder und seit dem ist wieder nichts mehr gekommen.
das selbe bei mir. Sofern ich das überblicke hat sich der Aufruf geändert. Das war vorher JQuery und ist jetzt ein anderes Script. Die Ausgabe ist nach wie vor dieselbe
Ich glaube, ich habe die Ursache gefunden. Ich bekomme solange Daten im Modul, wie ich das Sunny Portal gleichzeitig im Browser offen hab. Der Quelltext der Seite enthält ein Script, s. Screenshot. Scheinbar wird darüber identifiziert, ob man den Browser offen hat. Der Rest wird dann im Skript gemacht, s. 2. Screenshot
Also nicht vergessen alle 50 Minuten mal im Browser F5 zu drücken :D :D :D
also bei mir läuft es auch ohne offenen browser, aber nach 1-2h ist die Verbindung weg. Dann lösch ich das mycookies.txt und es geht wieder für ein paar Stunden...sehr seltsam.
können wir in das modul einen "force reconnect" nach, sagen wir, 30 Minuten einbauen?
Ich habe jetzt erstmal einen cronjob eingerichtet, der die Cookie Datei alle 50 Minuten löscht. Mal sehen ob das was bringt
Ich habe nebenbei mal noch mit Wireshark rumgespielt und geschaut, wie der SHM Nach Hause telefoniert. Das tut er so alle Minute. Allerdings sehe ich da keine Daten?! Wo verstecken die sich?
Hallo zusammen,
ich verwende inzwischen eine Lösung die aus der Kombination zweier Scripte besteht und die Daten lokal erfasst.
Ich habe das Modul SMAUtils erweitert, so dass zusätzlich die Werte aus dem Script vom Datenschuft eingelesen werden.
Das Script SMA-EM öffnet einen Multicast Socket und empfängt Pakete vom emeter.
Ich habe es angepasst,sodass nur ein Paket empfangen wird und die Ausgabe reduziert,damit es leichter zu parsen ist.
Der Vorteil ist, dass die Werte vom WR und Emeter quasie Zeitgleich abgerufen werden und so z.b. der Eigenverbrauch besser berechnet werden kann.
Mein WR hängt per Bluetooth am SHM. Ich habe ihn jedoch für SBFSpot zusätzlich per Lan angebunden.
Die angepassten Scripte sind im Anhang.
Quelle der Scripte:
https://github.com/datenschuft/SMA-EM
https://sbfspot.codeplex.com/
https://forum.fhem.de/index.php/topic,14624.msg153006.html#msg153006
Define (Die Adresse ist in meinem Fall egal, weil SBFSpot auf Lan konfiguriert ist:
define Solar SMASBFUtils 00:80:25:2D:46:16 60
attr Solar delay 60
attr Solar icon measure_photovoltaic_inst
attr Solar room Energie
attr Solar userReadings SelfConsumption {ReadingsVal("Solar","total_pac",0)*1000-ReadingsVal("Solar","pfeedin",0)}, TotalConsumption {ReadingsVal("Solar","SelfConsumption",0)+ReadingsVal("Solar","pregard",0)}
Meines Erachtens würde es mehr Sinn machen, die Broadcasts des HM abzufangen. Der überträgt ja irgendwie alles zusammen (WR und Verbrauch)
Hallo zusammen,
ich bin auch der Meinung von Waldmensch. Der SHM hat alle Daten die ich benötige um Verbraucher nach PV-Produktion zu schalten, leider stellt er nur aktuelle Werte bereit und keine aufsummierten Tageserträge und -verbräuche. Damit konnte ich bisher aber ganz gut leben.
Wenn man nun den SHM außer Acht lässt, muss man für den gleichen Informationsgewinn den EM, WR und in meinem Fall den SunnyIsland (Batterie WR) abfragen.
Gut die drei Geräte sprechen alle auf ihre Weise mit FHEM, allerdings nervt die Tatsache, dass eigentlich alle Daten synchron aus dem SHM kommen könnten.
Hätte ich es vorher gewusst, wäre sicherlich ein alternatives Produkt zum Einsatz gekommen. Ich musste bei einem Bekannten feststellen, dass SolarLog da etwas besser aufgestellt ist und für die Eigenverbruachsoptimierung Steckdosen von Belkin (frei erhältlich) einsetzt.
@Albatros, Du schreibst Du hast Deinen SMA WR (?) per Speedwire (also LAN) und Bluethooth verbunden. Wenn ich das mache, dann schreibt er mir kontinuierlich Fehlermeldungen ins Portal-Log, dass der WR eben über beide Verbindungen verfügt und das zu ändern sei. Kannst Du mir sagen wie Du das konfiguriert hast? Ich habe einen Sunny Tripower 10000TL-20 im Einsatz.
Ich werde jetzt auch vorübergehend erstmal ein CronJob zum löschen der "mycookies.txt" einbauen. Dieses könnte man natürlich auch gleich in die 98_SHM.pm integrieren, also vor dem Aufruf von SHM_Parse. Leider bin ich in Perl noch nicht wirklich zu Hause und gerade auf dem Sprung....
Tut es bei mir 1A.
*/50 * * * * rm /media/usbdisk/fhem/log/mycookies.txt
Pfad muß natürlich angepasst werden
danke, so habe ich es auch gemacht :-)
Zitat von: Waldmensch am 31 März 2016, 19:39:55
Ich habe nebenbei mal noch mit Wireshark rumgespielt und geschaut, wie der SHM Nach Hause telefoniert. Das tut er so alle Minute. Allerdings sehe ich da keine Daten?! Wo verstecken die sich?
Hm, wäre natürlich eine feine Sache. Allerdings bin ich der Meinung, dass der SHM in kürzeren Intervallen nach Hause funkt. In der App werden die Daten alle 4 oder 5 Sekunden aktualisiert...
Bist du bei den Datenpaketen schon weitergekommen? Deinen Screenshot habe ich mir angesehen, kann aber auch nichts entdecken.
Ich habe ein bisschen in den Developer Unterlagen zur SEMP Protokoll-Schnittstelle gestöbert. Demnach sind die Pakete in Wireshark nur "discover" Pakete. Wenn ein Gateway darauf antwortet wird eine Verbindung aufgebaut. Dann kann man mit dem HM kommunizieren. Allerdings sieht es nicht so aus, als ob man aus dem HM die Leistungsdaten auslesen kann. Da gehts eher darum devices (aktoren) anzubinden, die der HM dann schalten soll. Also so wie die Bluetooth steckdosen.
Die Kommunikation mit dem Portal ist das jedenfalls nicht, die man dort sieht. Allerdings habe den Filter in Wireshark auf die IP des HM gesetzt. Eigentlich sollte doch dann alles zu sehen sein?! Ich krieg aber nur diese Pakete auf Port 1900.
@XGuide: Der WR (9000-tl-20) war erst über BT verbunden. Speedwire hab ich erst später verbunden. Bisher keine Fehlermeldung. Allerdings leuchtet die blaue LED am SHM nicht mehr. An der Konfig habe ich in dem Zuge nichts geändert.
Evtl. liegt es an der BT ID? Die habe ich von 0 abgeändert.
Hallo Waldmensch, vielen Dank für deine Bemühungen und Forschungen. Ich habe leider keine Ahnung vom Datenschnüffeln.
Wäre aber oberdankbar für eine Lösung, den HM im Heimnetz auszulesen, weil ich oft eine miserable Internetverbindug habe.
Nur EM auslesen würde nicht reichen, da ich eine Batterie und BT-Steckdosen habe. Ich brauche auch keine Grafiken, nur immer die aktuellen Werte. Die Grafiken kann ich mir ja im Portal ansehen.
Herzlich Klaus
Hallo Brun,
gibt es eine Möglichkeit, das 98_SHM Modul nur zu starten wenn man die Daten aktuell aulesen will. Bei mir wäre es nicht nötig, es alle 60 Sekunden auszulesen da ich auf die Gafiken verzichte und die Werte in einem kleinen php-Programm anzeige.
Herzlich Klaus
Hallo zusammen,
ich hab mal den Ansatz von Waldmensch aufgegriffen ...
Ich habe jetzt erstmal einen cronjob eingerichtet, der die Cookie Datei alle 50 Minuten löscht. Mal sehen ob das was bringt
und dem SHM-Modul ein Attribut "cookielifetime" gegönnt.
Wenn nicht gesetzt wird das Cookiefile vom Modul nach default 3000 Sekunden gelöscht, sonst kann man die Zeit darüber festlegen. Verzeichnis und Filename legt das Attribut "cookieLocation" fest (Standardfile "./log/mycookies.txt").
Dadurch gibt es eine integrierte Lösung für die aktuelle Problematik ....
@Brun, vielleicht magst du es wieder in dein Modul übernehmen.
Super Idee!!! Mit meinem cronjob alle 50 Minuten lief es heute den ganzen Tag durch.
Ich habe meine Recherchen zum Abfragen vom SHM vorhin leider im falschen Thread gepostet. Drum hier nochmal
Zum SHM anzapfen gibt es Lesestoff hier http://www.photovoltaikforum.com/sma-anlagenueberwachung-f48/geraete-mit-home-manager-koppeln-via-semp-ethernet-t104060-s120.html
und ein GIT Projekt hier: https://github.com/camueller/SmartApplianceEnabler
Allerdings ist das Ziel dort, Dinge durch den HM schalten zu lassen. Ich habe jetzt adHoc nichts gefunden, wie man einfach die HM Daten erhält, die auch ans Portal geliefert werden.
Also die letzten Tage wird es mit den Unterbrechungen immer schlimmer.
Im Moment ist keine Kommunikation mit den Wechselrichtern möglich. Logge ich mich aber ein, ist alles normal und ich sehe die aktuellen Daten.
Ich würde auch gerne die Daten direkt vom SHM auslesen, aber mir fehlt das Wissen dazu. Vielleicht kann ich beim testen etwas helfen.
Gruß Kalli
Also mit meinem Cronjob läuft es seit Tagen wieder stabil. Das Modul, was das Cookie selber löscht, habe ich noch nicht getestet, sollte aber denke ich auch klappen.
Hallo zusammen,
es gibt jetzt im offiziellen FHEM-SVN zwei neue Module für SMA Geräte:
77_SMAEM.pm: Support for SMA Energymeter, a bidirectional energy meter/counter
77_SMASTP.pm: Support for SMA Sunny Tripower Inverter
Je nach installierter Anlage macht das hakelige Tools, wie die Abfrage des Sunny Home Manager per FHEM-Modul oder auch den SBFSpot überflüssig.
Bevor die Module ins SVN wandern, finden Sie sich inkl. Doku und weiteren Tools auch auf:
https://github.com/kettenbach-it/FHEM-SMA-Speedwire
Viel Spaß damit!
Gruß
Volker
Hallo,
hat das aktuelle Modul jemand unter Win zum laufen bekommen?
ich bekomme das SHM Modul bei mir unter Win nicht mehr zum laufen, auf zwei Maschinen das gleiche
2016.07.19 17:02:58 3: MySHM - login to SMA-Portal successful, get data when next cycle runs
2016.07.19 17:02:58 5: MySHM -> 500
2016.07.19 17:02:58 4: MySHM SHM_GetData homemanager_content: {"Login-Status":"successful"}
2016.07.19 17:02:58 4: MySHM BlockingCall SHM_GetData finished
2016.07.19 17:02:59 5: MySHM Start BlockingCall SHM_ParseData
2016.07.19 17:02:59 5: MySHM -> Login-Status - successful
2016.07.19 17:02:59 5: MySHM BlockingCall SHM_ParseData finished
2016.07.19 17:04:06 5: MySHM Start BlockingCall SHM_GetData with CookieLocation: ./log/mycookies.txt and UserAgent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
2016.07.19 17:04:06 1: MySHM - not logged in. try to login...
2016.07.19 17:04:06 4: MySHM -> 500
2016.07.19 17:04:06 5: MySHM -> Login-Page return: Can't connect to www.sunnyportal.com:443
Ein ungültiges Argument wurde angegeben. at D:/fhem/perl/vendor/lib/LWP/Protocol/http.pm line 49.
2016.07.19 17:04:06 3: MySHM - login to SMA-Portal successful, get data when next cycle runs
2016.07.19 17:04:06 5: MySHM -> 500
2016.07.19 17:04:06 4: MySHM SHM_GetData homemanager_content: {"Login-Status":"successful"}
2016.07.19 17:04:06 4: MySHM BlockingCall SHM_GetData finished
2016.07.19 17:04:14 5: MySHM Start BlockingCall SHM_ParseData
2016.07.19 17:04:14 5: MySHM -> Login-Status - successful
2016.07.19 17:04:14 5: MySHM BlockingCall SHM_ParseData finished
2016.07.19 17:05:08 5: MySHM Start BlockingCall SHM_GetData with CookieLocation: ./log/mycookies.txt and UserAgent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
2016.07.19 17:05:08 1: MySHM - not logged in. try to login...
2016.07.19 17:05:08 4: MySHM -> 500
2016.07.19 17:05:08 5: MySHM -> Login-Page return: Can't connect to www.sunnyportal.com:443
Ein ungültiges Argument wurde angegeben. at D:/fhem/perl/vendor/lib/LWP/Protocol/http.pm line 49.
2016.07.19 17:05:08 3: MySHM - login to SMA-Portal successful, get data when next cycle runs
2016.07.19 17:05:09 5: MySHM -> 500
2016.07.19 17:05:09 4: MySHM SHM_GetData homemanager_content: {"Login-Status":"successful"}
2016.07.19 17:05:09 4: MySHM BlockingCall SHM_GetData finished
2016.07.19 17:05:14 5: MySHM Start BlockingCall SHM_ParseData
2016.07.19 17:05:14 5: MySHM -> Login-Status - successful
2016.07.19 17:05:14 5: MySHM BlockingCall SHM_ParseData finished
aufm PI geht das gleiche ...
Gruß Hermann
Nach dem uns SMA einen strich durch die Rechnung gemacht hatte, mit der Portalabfrage, habe ich ein langes Hin und Her hinter mir, aber so richtig hat keine Lösung gegriffen.
Heute Modul entdeckt, define usw... Läuft!!!
Modul 77_SMASTP, leider Geil.
Vielen Dank
Noanda
Hallo Volker,
kann man den SMASTP irgendwie überreden ähnlich viele Informationen wie der SBFSpot auszuspucken?
Mir fehlen da die ganzen String Parameter aber auch z.B. Temperatur
Danke.
Gruß Hermann
Sicher kann man SBFSpot komplett nachbauen, aber warum eine Scriptlösung, die FHEM gehörig belastet, wenn es eine nativ kompilierte Lösung in C gibt, die problemlos in FHEM eingebunden werden kann. Wenn FHEM alle Minute für 5 Sekunden blockt, weil Unmengen Daten vom WR abgerufen werden, fehlt die Zeit für andere Aufgaben.
sorry ich red hier nicht vom Nachbau des SBFSpot :-\
die ganze History vom WR braucht man logischerweise für fhem nicht
die rede ist von 7 weiteren Werten String: Spannung Strom Leistung plus Wechselrichter Temperatur
wenn man den WR ausliest sind die eigentlich auch ganz interessant .. ;)
Wo das ne Unmenge von Daten sein soll und zum blockieren der Lösunng führt ...
Gruß Hermann
Zitat von: Herjemine am 25 Juli 2016, 13:57:47
die rede ist von 7 weiteren Werten String: Spannung Strom Leistung plus Wechselrichter Temperatur
wenn man den WR ausliest sind die eigentlich auch ganz interessant .. ;)
Das halte ich ebenfalls für sinnvoll und es ist sicherlich auch machbar.
Leider bin ich nicht der Entwickler der SMASTP-Moduls, sondern nur dessen Maintainer. D.h. ich teste, dokumentiere und bringe das Modul ins offizielle FHEM.
Ich verstehe auch nicht viel vom Protokoll, welches SMA spricht.
Wenn man mir sagt, wie man die von Dir gewünschten Werte aus dem SMA-Protokoll heraus bekommt, kann ich das gerne machen. Am besten ist es, einen Patch gegen die aktuelle Version des Moduls zu erzeugen und mir zu schicken bzw. als Pull Request hier zu submitten: https://github.com/kettenbach-it/FHEM-SMA-Speedwire
Die String PDC ist bereits im Modul.
Kann mir hier bitte jemand helfen?
Das Skript
perl smaem_test.pl
funktioniert, es kommen auch sinnvolle Werte.
Wenn ich das Modul /opt/fhem/FHEM/77_SMAEM.pm starte (reload 77_SMAEM) ist auch noch alles okay.
Wenn ich dann aber diesen Code in die fhem.cfg kopiere, dann kann die fhem Seite nicht mehr aufgerufen werden, bis ich das Modul lösche oder umbenenne.
Zitatdefine DP11_SMAEM SMAEM
attr DP11_SMAEM alias SMA Energy Meter
attr DP11_SMAEM room Keller
attr DP11_SMAEM interval 120
attr DP11_SMAEM powerCost 0.2675
attr DP11_SMAEM feedinPrice 0.1231
attr DP11_SMAEM icon measure_power
ZitatDiese Website ist nicht erreichbar
server hat die Verbindung abgelehnt.
Auf Google nach server 8083 fhem suchen
ERR_CONNECTION_REFUSED
Hm, jetzt habe ich mich auch an das andere Modul gemacht.
Dort ist es genau andersrum.
Das Perlskript liefert nichts zurück, nicht mal eine Fehlermeldung.
Zitatperl smastp_test.pl 192.168.178.35 password
Sending to inverter 192.168.178.35:9522
Dafür funktioniert das laden des Moduls und der Eintrag in der fhem.cfg führt nicht zum Absturz.
Leider kommen keine Daten an (NetID hab ich schon auf 0 gestellt)!
Bin für jeden Tipp dankbar!
Zitat von: Straightforward am 21 Dezember 2016, 12:36:18
Hm, jetzt habe ich mich auch an das andere Modul gemacht.
Dort ist es genau andersrum.
Das Perlskript liefert nichts zurück, nicht mal eine Fehlermeldung.
Dafür funktioniert das laden des Moduls und der Eintrag in der fhem.cfg führt nicht zum Absturz.
Leider kommen keine Daten an (NetID hab ich schon auf 0 gestellt)!
Bin für jeden Tipp dankbar!
Ich würde 77_SMASTP nicht mehr verwenden. Es ist deprecated.
Schau Dir das hier an:
https://forum.fhem.de/index.php/topic,56080.0.html
Zitat von: Straightforward am 21 Dezember 2016, 11:04:05
Kann mir hier bitte jemand helfen?
Das Skript perl smaem_test.pl
funktioniert, es kommen auch sinnvolle Werte.
Wenn ich das Modul /opt/fhem/FHEM/77_SMAEM.pm starte (reload 77_SMAEM) ist auch noch alles okay.
Wenn ich dann aber diesen Code in die fhem.cfg kopiere, dann kann die fhem Seite nicht mehr aufgerufen werden, bis ich das Modul lösche oder umbenenne.
Anhand dieser Infos ist nicht zu ermitteln, woran es liegt.
Es wäre gut, wenn Du den Debug-Level erhöhst und dann man in den fhem.log schaust.
Bitte das ganze in folgenden Forum posten:
https://forum.fhem.de/index.php/topic,51569.0.html
Das ist besser dafür geeignet und DS_Starter hat auch mittlerweile das SMAEM Modul weiter vebessert
Hallo zusammen,
ich stimme Volker voll und ganz zu. SMAInverter und SMAEM laufen super und liefer für meinen Fall mehr und bessere Daten. Allerdings nutze ich dieses Modul noch für den Forecast.
Ein Blick auf die vorgeschlagenen Module zu werfen ist auf jeden Fall sinnvoll!
Grüße Marcel
hat uns SMA wieder abgehängt?
Bei gehts seit drei Tagen nicht mehr.
Cookies löschen nützt nichts.
Gibt es ähnliche Erfahrungen?
Bei mir läuft es noch...
Nach einer Seitenaktualisierung bekomme ich den Login-Status auf succesfull aber keinerlei Readings mehr. Die bleiben auf dem Datum 22.3. 18:04 Uhr stehen. Ich suche schon den halben Tag rum.
Hat jamand ne Idee?
Zitat von: maximat0 am 24 März 2017, 19:35:45
Nach einer Seitenaktualisierung bekomme ich den Login-Status auf succesfull aber keinerlei Readings mehr. Die bleiben auf dem Datum 22.3. 18:04 Uhr stehen. Ich suche schon den halben Tag rum.
Hat jamand ne Idee?
Sorry, da muss ich passen. Bei mir werden die Readings bis gerade eben alle aktualisiert.
Was genau meinst du mit "Seitenaktualisierung"?
PS.: ich habe die Module von DS_Starter im Einsatz, die seit ca. April 2016 tadellos funktionieren.
Es lief alles ohne dass ich etwas verändert hatte bis zum 22.3. 18:04.
Von da an wird nur der Login alle 60 sek als succesfull angezeigt, alle anderen Werte stehen auf 22.3.
Welches sind die Module von ds_starter?
Ich hab noch die, die hier im Forum auf der ersten Seite von Brun vom 9. März 2016 stehen.
Kann es an einem Update von FHEM liegen?
Vielen Dank fürs Kümmern.
Seitenaktualisierung: bei meinem Firefox werden die aktualisierten Readings nur nach manuellem Seite neu laden angezeigt.
Ich nehme jetzt Safari
Auf meinem Testsystem läuft die Version V0.3.2 ohne Probleme (Versionsinfo aus dem Kopf kopiert)
##############################################
#
# A Module to read the values from the Sunny Portal Home Manager.
#
# FHEM Forum: http://forum.fhem.de/index.php/topic,27667.0.html
# FHEM Wiki:
#
# Author: Brun von der Gönne <brun at goenne dot de>
#
# !!!BETA!!! V0.3.1
#
# Cahngelog:
# V0.1.1:
# - ignore "null" values
# - add reading "summary" for state
# V0.1.2
# - converting insted ignore "null" values
# V0.2
# - use JSON
# - add forecast from Sunny Portal
# V0.3
# - disabled forecast because problems
# - disabled ssl certificate checks
# V0.3.1
# - changed User Agent
# V0.3.2
# - add Loginstatus as reading (Thanx BerndArnold)
#
##############################################
# Definition: define <name> SHM <user> <password> (<delay>)
#
##############################################
Löscht du die mycookies.txt zyklisch?
Poste doch auch noch mal ein "list devicename" Ergebnis. Devicename = Name der shm Instanz.
Gruß Marcel
PS: mein List anbei:
Internals:
CHANGED
DEF BENUTZERNAME KENNWORT 60
NAME sunnyHomeManager
NR 181
STATE Battery: 91 % | PVprod: 665 Wh | Cons: 396 Wh | Grid-: 0 Wh | Grid+: 269 Wh
TYPE SHM
interval 60
password KENNWORT
username BENUTZERNAME
Readings:
2017-04-11 15:37:08 AutarkyQuote 100
2017-04-11 15:36:07 BatteryChargeStatus 91
2017-04-11 15:21:59 BatteryIn 0
2017-04-11 15:37:08 BatteryOut 0
2017-04-11 15:37:08 DirectConsumption 396
2017-04-11 15:37:08 DirectConsumptionQuote 60
2017-04-11 15:21:59 ErrorMessages []
2017-04-11 15:37:08 FeedIn 269
2017-04-11 15:37:08 GridConsumption 0
2016-03-12 00:10:03 Info {}
2017-04-11 15:21:59 InfoMessages []
2017-04-11 15:35:09 Login-Status Login successful
2017-04-11 15:37:08 PV 665
2017-04-11 15:37:08 SelfConsumption 396
2017-04-11 15:37:08 SelfConsumptionQuote 60
2017-04-11 15:37:08 SelfSupply 396
2017-04-11 15:37:08 TotalConsumption 396
2017-04-11 15:21:59 WarningMessages []
2016-03-12 00:10:03 __type LiveDataUI
2017-04-11 15:37:11 state 269
2017-04-11 15:37:11 summary 269
Attributes:
alias PV Status
event-on-change-reading .*
group Sunny Home Manager
room 11_PV-Plant
stateFormat Battery: BatteryChargeStatus % | PVprod: PV Wh | Cons: TotalConsumption Wh | Grid-: GridConsumption Wh | Grid+: FeedIn Wh
verbose 0
Zitat von: Xguide am 11 April 2017, 15:38:56
Löscht du die mycookies.txt zyklisch?
Nein, nicht bewusst.
Zitat von: Xguide am 11 April 2017, 15:38:56
STATE Battery: 91 % | PVprod: 665 Wh | Cons: 396 Wh | Grid-: 0 Wh | Grid+: 269 Wh
...
stateFormat Battery: BatteryChargeStatus % | PVprod: PV Wh | Cons: TotalConsumption Wh | Grid-: GridConsumption Wh | Grid+: FeedIn Wh
Danke, Marcel, für den stateFormat. Sieht richtig klasse aus und habe ich gleich bei mir übernommen!
Zitat von: maximat0 am 31 März 2017, 19:49:26
Es lief alles ohne dass ich etwas verändert hatte bis zum 22.3. 18:04.
Von da an wird nur der Login alle 60 sek als succesfull angezeigt, alle anderen Werte stehen auf 22.3.
Welches sind die Module von ds_starter?
Ich hab noch die, die hier im Forum auf der ersten Seite von Brun vom 9. März 2016 stehen.
Kann es an einem Update von FHEM liegen?
Vielen Dank fürs Kümmern.
Seitenaktualisierung: bei meinem Firefox werden die aktualisierten Readings nur nach manuellem Seite neu laden angezeigt.
Ich nehme jetzt Safari
ds_starter hatte noch ein paar Optimierungen eingebaut. Genau kann ich es nicht mehr sagen, weil es mittlerweile 1 Jahr her ist (Änderungsdatum der Dateien) :)
Ein Update von Fhem schließe ich mal soweit aus, als dass ich Fhem auch aktuell habe und es damit keine Probleme gibt.
Ich füge euch hier mal die Dateien an, so wie ich sie einsetze...
Viele Grüße
Bernd
Hallo zusammen,
ich habe es lange vor mir hingeschoben, doch heute bin ich mal dazu gekommen.
Ich hatte die SHM-Abfrage lange Zeit auf einem 2. Raspberry Pi laufen und habe die Werte via FHEM2FHEM an meine Hauptinstanz übertragen, dies war der damaligen Performance von SHM geschuldet. Ich vermute mal hier ist auch der Durchbruch mit der Umstellung auf Non-Blocking gelungen, zumindest hat DS_STARTER das bei SMAInverter und SMAEnergyMeter hervoragend hinbekommen. Zumindest ist mir bei meinem Post am 11.April aufgefallen, dass mein Testsystem nur noch wg. des SHM, speziell hier wg. dem Forecast welches ich im TabletUI visualisiere, dauerhaft läuft.
Dafür einen 2. Rapi dauerhaft laufen zu lassen macht irgendwie kein Sinn, also ist das SHM & SHM_Forecast Modul heute umgezogen und ich habe noch ForecastRelative neu entdeckt.
Mir ist aufgefallen das es ziemlich viele verschieden Versionen von:
- 98_SHM.pm
- 98_SHMForecast.pm
gibt und die Revisionierung mit Versionsnummern nicht gerade übersichtlich ist. Ich habe mal versucht meine Version (entspricht ca. der DS_STARTER Version gepsotet am "« Antwort #251 am: 01 April 2016, 21:42:20 »") mit der von BerndArnold geposteten Version zusammenzuführen (« am: 14 April 2017, 16:02:54 ») was auch für SHM.pm recht gut geklappt hat, bei Forecast und ForecastRelative habe ich aber das Problem, dass a[2], was ja der Name der SHM Instanz aus dem Define sein soll, nicht wirklich funktioniert. Ich habe das bei mir jetzt hardcoded gemacht und es scheint zu laufen.
Ferner habe ich noch eine dauerhafte Meldung "Use of uninitialized value" von SHM und SHMForeCast bekommen.
Ich habe sub SHM_ParseData (ca. Zeile 257ff) wie folgt modifiziert und die Meldung damit eliminiert:
if (($homemanager_content->{$homemanger_name} =~ m/ARRAY/i) || ($homemanager_content->{$homemanger_name} =~ m/HASH/i)) {
my ($homemanager_dumper0,$homemanager_dumper1) = split(/ = /,Dumper($homemanager_content->{$homemanger_name}));
# chomp $homemanager_dumper1;
# $homemanager_dumper1 =~ s/\;//g;
# $new_val = $homemanager_dumper1;
if (defined $homemanager_dumper1) {
$homemanager_dumper1 =~ s/\;//g;
$new_val = $homemanager_dumper1;
}
}
Analog dazu habe ich das in SHMForecast gemacht (sub SHMForecast_DoParse (ca. Zeile 125))
my $homemanager = JSON->new->utf8->decode($homemanager_page->content);
for my $homemanger_name (keys %$homemanager) {
if (defined $homemanager->{$homemanger_name}) {
if (($homemanager->{$homemanger_name} =~ m/ARRAY/i) || ($homemanager->{$homemanger_name} =~ m/HASH/i)) {
my ($homemanager_dumper0,$homemanager_dumper1) = split(/ = /,Dumper($homemanager->{$homemanger_name}));
if (defined $homemanager_dumper1) {
$homemanager_dumper1 =~ s/\;//g;
}
}
}
}
@Maximat und Bernd, mir ist aufgefallen das das Löschen per cronjob der mycookies.txt mit irgendeiner Version obsolete wurde, da es von DS_Starter im SHM-Modul implementiert wurde. Dafür muss das Attribut cookieLocation und cookielifetime entsprechend gesetzt werden.
Hallo, vielen Dank für die Hinweise. Ich habe nun das Problem gelöst. Ich habe mich bei sma mit einem weiteren Benutzer angemeldet und diesen für 98_SHM Modul genommen und vorsichtshalber die Readings auf 60 Sekunden eingestellt (vorher waren es 15 Sekunden). Seit ein paar Tagen läuft es fehlerfrei.
Hallo zusammen,
das ist (glaube ich) mein erster Beitrag - ich lese schon eine ganze Zeit mit und habe mittlerweile einen Signalduino gebaut und erfolgreich mit Somfy eingebunden - ich verstehe also langsam, wie FHEM funktioniert.
Leider komme ich mit dem Modul 98_SHM nicht klar! Der Forecast läuft, aber das eigentliche SHM-Modul greift sich immer einen Wert und updatet dann nicht mehr. Intervall auf 60.
Auch habe ich wie in den letzten Beiträgen beschrieben verschiedene Versionen der 98_SHM.pm versucht, leider vergebens.
Gefühlt (nicht reproduzierbar) funktioniert es ein paar Stunden und friert dann ein.
Aktuelle Ausagbe:
defmod Strom SHM xxxxxxxxx@gmail.com PASSWORT 60
attr Strom room Strom
attr Strom verbose 5
setstate Strom 0
setstate Strom 2017-05-07 10:13:34 FeedIn 0
setstate Strom 2017-05-07 10:13:34 GridConsumption 0
setstate Strom 2017-05-07 10:12:12 __type LiveDataUI
setstate Strom 2017-05-07 13:07:41 state 0
setstate Strom 2017-05-07 13:07:41 summary 0
State und Summary bekommen regelmäßig ein Update, aber keine Werte (oft freezt das bei einem Wert wie z.B. 1.633 anstelle der "0")
Event Monitor:
2017-05-07 13:19:51 SHM Strom 0
2017-05-07 13:19:51 SHM Strom summary: 0
2017-05-07 13:20:52 SHM Strom 0
2017-05-07 13:20:52 SHM Strom summary: 0
2017-05-07 13:21:12 SHMForecast Stromforecast plantOid: blablablabla
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-00-Consumption: 203
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-00-PV: 0
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-00-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-00: -203
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-01-Consumption: 196
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-01-PV: 0
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-01-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-01: -196
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-02-Consumption: 189
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-02-PV: 0
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-02-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-02: -189
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-03-Consumption: 191
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-03-PV: 0
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-03-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-03: -191
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-04-Consumption: 200
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-04-PV: 0
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-04-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-04: -200
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-05-Consumption: 182
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-05-PV: 0
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-05-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-05: -182
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-06-Consumption: 193
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-06-PV: 45
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-06-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-06: -148
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-07-Consumption: 243
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-07-PV: 426
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-07-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-07: 183
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-08-Consumption: 442
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-08-PV: 639
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-08-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-08: 197
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-09-Consumption: 306
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-09-PV: 852
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-09-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-09: 545
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-10-Consumption: 689
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-10-PV: 1081
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-10-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-10: 392
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-11-Consumption: 2073
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-11-PV: 941
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-11-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-11: -1131
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-12-Consumption: 1492
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-12-PV: 1421
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-12-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-12: -70
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-13-Consumption: 1849
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-13-PV: 1364
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-13-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-13: -485
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-14-Consumption: 962
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-14-PV: 1405
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-14-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-14: 443
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-15-Consumption: 805
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-15-PV: 1372
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-15-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-15: 567
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-16-Consumption: 803
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-16-PV: 1126
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-16-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-16: 322
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-17-Consumption: 844
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-17-PV: 683
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-17-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-17: -160
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-18-Consumption: 792
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-18-PV: 395
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-18-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-18: -397
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-19-Consumption: 501
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-19-PV: 156
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-19-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-19: -345
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-20-Consumption: 519
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-20-PV: 36
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-20-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-20: -483
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-21-Consumption: 486
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-21-PV: 0
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-21-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-21: -486
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-22-Consumption: 418
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-22-PV: 0
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-22-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-22: -418
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-23-Consumption: 334
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-23-PV: 0
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-23-IsConsumptionRecommended: no
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-23: -334
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-Today-Consumption: 14912
2017-05-07 13:21:12 SHMForecast Stromforecast Forecast-Today-PV: 11942
2017-05-07 13:21:12 SHMForecast Stromforecast 11942
2017-05-07 13:21:12 SHMForecast Stromforecast STATE: 11942
2017-05-07 13:21:12 SHMForecast Stromforecast summary: -2970
2017-05-07 13:21:53 SHM Strom 0
2017-05-07 13:21:53 SHM Strom summary: 0
Abfrage im Sunnyportal funktioniert einwandfrei.
Forecast funktioniert hingegen meines Erachtens:
Was mache ich falsch? Oder hat SMA hier etwas aktiviert, um die Abfragen zu unterbinden?
Ich bin für jede Hilfe dankbar, da ich ENDLICH meine Luft-Luft und Luft-Wasser-Wärmepumpen intelligent zwischen unterschiedlichen Stromkreisläufen mit SONOFF hin- und her schalten möchte, also wirklich einen $$$$-Nutzen dadurch habe.
DANKE vorab für Ideen und Vorschläge!
Hallo assi05,
Hast du beim shm die cookielifetime gesetzt, bzw. löscht du die Datei via cronjob?
Gruß Marcel
Hallo Marcel,
nein, das hab' ich nicht. Im Forum meine ich gelesen zu haben, dass das mit einer neueren Revision von 98_SHM nicht mehr nötig ist?!
Habe eben kurz gegoogelt, aber: Wie mache ich das?
Gruß
Joe
Ich habe bei mir
- cookieLocation pfad
- cookielifetime 3100
gesetzt.
Ich kann dir später auch noch ein list schicken, bin aber gerade unterwegs.
Du kannst ja mal bei blockiertem shm das mycookies.txt file manuell löschen, wenn es dann bei der nächsten Abfrage wieder klappt, dann weisst du woran es liegt.
Gruß Marcel
Marcel, Du bist der BESTE!! :)
attr Strom cookielifetime 100
attr Strom room Strom
attr Strom verbose 5
setstate Strom 1599
setstate Strom 2017-05-07 14:21:44 AutarkyQuote 100
setstate Strom 2017-05-07 14:21:44 FeedIn 1599
setstate Strom 2017-05-07 14:21:44 GridConsumption 0
setstate Strom 2017-05-07 14:20:40 Login-Status successful
setstate Strom 2017-05-07 14:21:44 PV 2160
setstate Strom 2017-05-07 14:21:44 SelfConsumption 561
setstate Strom 2017-05-07 14:21:44 SelfConsumptionQuote 26
setstate Strom 2017-05-07 14:21:44 SelfSupply 561
setstate Strom 2017-05-07 14:21:44 TotalConsumption 561
setstate Strom 2017-05-07 14:21:44 __type LiveDataUI
setstate Strom 2017-05-07 14:21:44 state 1599
setstate Strom 2017-05-07 14:21:44 summary 1599
2017.05.07 14:26:23 5 : Strom -> SelfConsumption - 395
2017.05.07 14:26:23 5 : Strom -> WarningMessages -
2017.05.07 14:26:23 5 : Strom -> AutarkyQuote - 100
2017.05.07 14:26:23 5 : Strom -> __type - LiveDataUI
2017.05.07 14:26:23 5 : Strom -> Timestamp -
2017.05.07 14:26:23 5 : Strom -> GridConsumption - 0
2017.05.07 14:26:23 5 : Strom -> SelfSupply - 395
2017.05.07 14:26:23 5 : Strom -> TotalConsumption - 395
2017.05.07 14:26:23 5 : Strom -> Info -
2017.05.07 14:26:23 5 : Strom -> SelfConsumptionQuote - 18
2017.05.07 14:26:23 5 : Strom -> ErrorMessages -
2017.05.07 14:26:23 5 : Strom -> FeedIn - 1765
2017.05.07 14:26:23 5 : Strom -> InfoMessages -
2017.05.07 14:26:23 5 : Strom -> PV - 2160
2017-05-07 14:26:23 SHM Strom SelfConsumption: 395
2017-05-07 14:26:23 SHM Strom AutarkyQuote: 100
2017-05-07 14:26:23 SHM Strom __type: LiveDataUI
2017-05-07 14:26:23 SHM Strom GridConsumption: 0
2017-05-07 14:26:23 SHM Strom SelfSupply: 395<br> 2017-05-07 14:26:23 SHM Strom TotalConsumption: 395
2017-05-07 14:26:23 SHM Strom SelfConsumptionQuote: 18
2017-05-07 14:26:23 SHM Strom FeedIn: 1765
2017-05-07 14:26:23 SHM Strom PV: 2160
2017-05-07 14:26:23 SHM Strom 1765
2017-05-07 14:26:23 SHM Strom summary: 1765
2017.05.07 14:26:23 4 : Strom BlockingCall SHM_ParseData finished
Scheint also auf jeden Fall am Cookie zu liegen! Habe mal den Intervall auf 70 und zu Testzwecken DeleteCookie auf 100.
Werde das mal beobachten, aber nochmals DANKE! Ich bin echt Tage davor gesessen.... :(
Gruß
Joe
Freut mich das es jetzt geht!
Einen sonnigen Restsonntag,
Marcel
Hallo Zusammen,
nachdem ich FHEM auf meiner DS211j installiert und erfolgreich mit den Phillips HUE Komponenten verbunden habe,
möchte ich nun den SHM mit einbinden um die Pool Stecksose die am HUE hängt zu steuern.
Der Login auf das Portal ist auch erfolgreich, doch im SHM Log finde ich nur das erfolgreiche Logon und keine weiteren Daten.
Das allgemeine Log zeigt das schon mehr, besonders mit dem verbose=5. Nur kann ich leider mit den Infos, da ich noch neu mit fhem bin nicht wirklich was anfangen.
Hat jemand einen Tip für mich? Schaue ich an der falschen Stelle?
PS
Update auf 5.8 habe ich gemacht.
CFG:
DEF BENUTZER KENNWORT 60
NAME EweSHM
NR 39
STATE ???
TYPE SHM
interval 60
password KENNWORT
username BENUTZER
Helper:
oldlogintime 1496745493.89455
Readings:
2017-06-02 18:49:58 FeedIn 0
2017-06-02 18:49:58 GridConsumption 0
2017-06-06 12:38:13 Login-Status successful
Helper:
Attributes:
cookieLocation ./opt/cookies/mycookies.txt
cookielifetime 3100
room SHM
timeout 200
verbose 5
Log:
2017.06.06 12:31:43 3: EweSHM - not logged in. try to login...
2017.06.06 12:31:44 4: EweSHM -> 302
2017.06.06 12:31:44 3: EweSHM - login to SMA-Portal successful, get data when ne xt cycle runs
2017.06.06 12:31:46 4: EweSHM SHM_GetData homemanager_content: {"Login-Status":" successful"}
2017.06.06 12:31:46 4: EweSHM BlockingCall SHM_GetData finished
2017.06.06 12:31:50 4: EweSHM Start BlockingCall SHM_ParseData
2017.06.06 12:31:51 4: EweSHM BlockingCall SHM_ParseData finished
2017.06.06 12:32:51 3: EweSHM - not logged in. try to login...
2017.06.06 12:32:52 4: EweSHM -> 302
2017.06.06 12:32:52 3: EweSHM - login to SMA-Portal successful, get data when next cycle runs
2017.06.06 12:32:54 4: EweSHM SHM_GetData homemanager_content: {"Login-Status":"successf ul"}
2017.06.06 12:32:54 4: EweSHM BlockingCall SHM_GetData finished
2017.06.06 12:32:58 4: EweSHM Start BlockingCall SHM_ParseData
2017.06.06 12:32:59 4: EweSHM BlockingCall SHM_ParseData finished
2017.06.06 12:33:29 5: EweSHM Start BlockingCall SHM_GetData with CookieLocation: ./opt/cookies/mycookies.txt and UserAgent: Moz illa/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
2017.06.06 12:33:46 3: EweSHM - not logged in. try to login...
2017.06.06 12:33:47 4: EweSHM -> 302
2017.06.06 12:33:47 5: EweSHM -> Login-Page return: <html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/Templates/UserProfile.aspx">here</a>.</h2>
</body></html>
<!DOCTYPE html>
<!--[if IE 8]><html class="ie8 oldie"><![endif]-->
<!--[if IE 9 ]><html class="ie9"><![endif]-->
<!--[if gt IE 9]><!--><html><!--<![endif]-->
<head id="ctl00_Head"><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta charset="utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>
---- noch mehr htlml code ----- snap ---
2017.06.06 12:33:47 3: EweSHM - login to SMA-Portal successful, get data when next cycle runs
2017.06.06 12:33:48 5: EweSHM -> 200
2017.06.06 12:33:48 4: EweSHM SHM_GetData homemanager_content: {"Login-Status":"successful"}
2017.06.06 12:33:48 4: EweSHM BlockingCall SHM_GetData finished
2017.06.06 12:33:50 4: EweSHM Start BlockingCall SHM_ParseData
2017.06.06 12:33:51 5: EweSHM -> Login-Status - successful
2017.06.06 12:33:52 4: EweSHM BlockingCall SHM_ParseData finished
Hallo NiedPitt,
welche Berechtigung hat der Portal-User den du verwendest? Hast Du wirklich nur die drei Readings wie im List angezeigt?
Für Dein Vorhaben mit der Steuerung eignet sich veemutlich noch das Forecast Modul, das funktioniert natürlich nur wenn SHM problemlos läuft.
Wird das cookie-file geschrieben? Wenn Du es löscht, dann sollte es mit der nächsten Abfrage wieder da sein...
Gruß Marcel
Hallo Marcel,
Der Portal user ist der Standart User (nicht gast und nicht admin).
Was nicht was du mit den 3 readings meinst, die log wird fortwährend mit diesen Infos gefüllt.
Das cookie file hab ich mal irgendwann gelöscht, seitdem finde ich es nicht mehr.
root@net1:/usr/local/fhem/opt/cookies# ls -las
total 8
4 drwxrwxrwx 2 fhem users 4096 Jun 3 12:21 .
4 drwxr-xr-x 12 fhem users 4096 Jun 6 12:43 ..
root@net1:/usr/local/fhem/opt/cookies#
Da sollte es eigentlich sein, aber das verzeichnis bleibt leer.
Ganz richtig, wenn SHM läuft gehts ans forecast Module :-).
Hi,
in der Modul Definition hast Du gemäß cfg Auszug als Pfad:
./opt/cookies/mycookies.txt
definiert. Wenn es da nicht liegt und ggf. nicht schreiben kann, dann ist schlecht.
Ferner sind dort nur 3 Readings zu erkennen, die aber bereits am 02.06 beschrieben wurden.
Benutzerrechte müssen: Standardbenutzer sein, aber das meinst Du vermutlich...
Sitze gerade nicht am Rechner, sonst würde ich Dir meine Version mal schicken, wobei ich bei SHM vermutlich suf dem Standard bin. Forecast und Forecast_Relative habe ich etwas modifiziert.
Versuch mal das cookie zu finden.
Gruß Marcel
Hallo Marcel,
ich hab meine CookieLocation gelöscht. Nix passiert
Dann habe ich ein log Verzeichnis unter fhem angelegt und volle rechte zugeteilt und .... tada
2017.06.06 21:20:37 5: EweSHM -> SelfSupply - 620
2017.06.06 21:20:37 5: EweSHM -> BatteryOut - 620
2017.06.06 21:20:37 5: EweSHM -> DirectConsumption - 0
2017.06.06 21:20:37 5: EweSHM -> WarningMessages - []
2017.06.06 21:20:37 5: EweSHM -> GridConsumption - 0
2017.06.06 21:20:37 5: EweSHM -> PV - 0
2017.06.06 21:20:37 5: EweSHM -> AutarkyQuote - 100
2017.06.06 21:20:37 5: EweSHM -> BatteryChargeStatus - 40
2017.06.06 21:20:37 5: EweSHM -> Info - {}
2017.06.06 21:20:37 5: EweSHM -> SelfConsumption - 0
2017.06.06 21:20:37 5: EweSHM -> FeedIn - 0
2017.06.06 21:20:37 5: EweSHM -> ErrorMessages - []
2017.06.06 21:20:37 5: EweSHM -> __type - LiveDataUI
2017.06.06 21:20:37 5: EweSHM -> BatteryIn - 0
2017.06.06 21:20:37 5: EweSHM -> TotalConsumption - 620
super!! Vielen Dank!
Bitte schick mir deine modifizierten Versionen, bin gespannt wie es weitergeht.
Gruß Pitt
Schicke ich Dir gleich als PM, ich möchte nicht das noch mehr inoffizielle Module existieren.
Hier müssten mal alle existierenden Lösungen zusammengefahren werden.
Prinzipiell bin ich auch weg von SHM, ich nutze dieses Modul nur für den Forecast.
Falls deine gesamte Peripherie von SMA ist, dann empfiehlt es sich SMA_Inverter und SMA_EM (EnergyMeter) einzusetzen. Bei SHM läufst Du Gefahr das SMA den automatisierten Abruf der Daten irgendwann einmal unterbindet. Das hatten wir in der Vergangenheit bereits...
Damit das aber nun erstmal läuft, achte bitte auf cookie lifetime und prüfe ob das cookie-file nach der Zeit erneuert wird.
Ich habe meine Abfrageintervalle extrem verlängert, wie gesagt nur für Forecast...
Gruß Marcel
Hallo Peter,
hier noch einmal die Links zu den Ersatzmodulen für den SHM.
SMAInverter:
https://forum.fhem.de/index.php/topic,56080.0.html
Verwendet mit SMA SunnyIsland und SMA Tripower
SMAEM (Energymeter)
https://forum.fhem.de/index.php/topic,51569.0.html
Verwendet mit SMA EnergyMeter
Gruß Marcel
Hallo Marcel,
das sieht jetzt sehr gut aus :D !!
Die Syntax vom State format hab ich etwas geändert, die backslash als Zeilenfortsetzung haben nicht richtig gefunzt.
jetzt: { "<div class=\"row\">Forcast Production Tomorrow: ".sprintf("%.2f",ReadingsVal($name,"Tomorrow-PV",0)/1000)."kWh</div><div class=\"row\"> Forecast Consumption Tomorrow: ".sprintf("%.2f",ReadingsVal($name,"Tomorrow-Consumption",0)/1000)."kWh</div>" }
SMA-Home Manager
PV Prognose
Forcast Production Today: 26.51kWh
Forecast Consumption Today: 17.79kWh
PV Prognose Relative
Forcast Production Tomorrow: 34.34kWh
Forecast Consumption Tomorrow: 16.79kWh
Viiieeeelen Dank für deinen Code und deine Hilfe
jetzt noch DOIF :-).
glg
Pitt
PS.
Endlich wieder online, Techniker war da!
Hallo Pitt,
mein Code-Snip stammte aus den "Raw Definitions" dort müssen die \ als Zeilenende rein.
Hättest Du genau an der Stelle auch rein kopieren können und execute drücken oder direkt in die fhem.cfg packen können.
Freut mich das es geht!
Gruß Marcel
Hallo Marcel,
direkt in die fhem.cfg ist immes etwas risikobehaftet.
Mit \ in der fhem.cfg bekomme ich:
V Prognose Relative
Error evaluating sunnyHomeManager_ForecastRelative stateFormat: syntax error at (eval 24) line 1, near ""
"\"
wenn ich über detn State Format editor die \ rauswerfe bekomme ich:
Forcast Production Tomorrow: 24.52kWh
Forecast Consumption Tomorrow: 15.34kWh
Vieleicht ist das \r \n für das Zeilenende im PC Bereich daran schuld, im unix ist der Zeilenvorschub nur ein \n.
Mit od -c 98_SHMForecastRelative.pm|more findet man die \r\n am Zeilenende.
Aber Hauptsache es funzt jetzt !
Nochmals Danke!
Namasté
Pitt
.. sehr geil
supoxy war immer etwas launisch bei mir, jetzt läuft 98_SHM.pm & 98_SHMForecast.pm sauber seit 3 Std.
Danke an Brun und alle diejenigen die hier ihre Erfahrungen und Anregungen fleißig teilen.
Super!!!
Hallo,
danke schön für das Modul. Ich verwende das von DS_Starter angepasste Modul aus #251. Scheint soweit über mehrere Stunden problemlos zu funktionieren.
Wie sieht denn bei eich die Konfiguration des SVG-Diagramms aus? Ich habe meine mal angehangen. Leider funktioniert die Skalierung der y-Achse nicht. Obwohl ich "Range as" ausgefüllt habe, wird die y-Achse auf den Maximalwert skaliert.
Gibt es eine Beschreibung der einzelnen Felder? Was hat es z.B. mit der 4 bei Input auf sich? Bei anderen Zahlen wird nichts mehr angezeigt. Oder was bedeuten "Tics as"
Gibt es eine Möglichkeit die Messwerte irgendwie so zu exportieren z.B. als csv um sie dann weiter verwenden zu können? Die Daten bei "Show processed data" sind da nicht so schön strukturiert.
Gruß, Achim
Hallo Achim,
Tics sind Striche, d.h. Bedeutung der Striche als ....
Fragen zu SVG sind wahrscheinlich besser in einem Unterforum zu SVG augehoben -> https://forum.fhem.de/index.php/board,78.0.html
ZitatGibt es eine Möglichkeit die Messwerte irgendwie so zu exportieren z.B. als csv um sie dann weiter verwenden zu können?
Falls du DbLOg im Einsatz hast kannst du dir mit dem Hilfsmodul DbRep die Werte mit "exportToFile" exortieren und noch mehr Auswertungen machen, z.B. soetwas -> https://wiki.fhem.de/wiki/Datenbankgest%C3%BCtzte_Erstellung_der_Energiebilanz_einer_SMA_PV-Anlage_mit_%C3%9Cberschu%C3%9Feinspeisung
Grüße
Heiko
Hallo,
Danke schön Heiko.
Ich habe mittlerweile auf DbLog umgestellt.
Beim Range war der Fehler, dass ich 6000 statt [6000] geschrieben hatte.
Bis dann
Achim
8)
Echt cool!
Hi @ll,
Habe beide Module installiert, und sie scheinen auch zu laufen :o
kann mir da einer Helfen ?
2017.10.25 14:26:26 1: PERL WARNING: Use of uninitialized value $homemanager_dumper1 in scalar chomp at ./FHEM/98_SHMForecast.pm line 154.
2017.10.25 14:26:26 1: PERL WARNING: Use of uninitialized value $homemanager_dumper1 in substitution (s///) at ./FHEM/98_SHMForecast.pm line 155.
2017.10.25 14:26:39 1: PERL WARNING: Use of uninitialized value $homemanager_dumper1 in scalar chomp at ./FHEM/98_SHMForecast.pm line 154.
2017.10.25 14:26:39 1: PERL WARNING: Use of uninitialized value $homemanager_dumper1 in substitution (s///) at ./FHEM/98_SHMForecast.pm line 155.
-edit-
hier noch der log
2017-10-25_13:05:30 MySHM summary: -1094
2017-10-25_13:05:30 MySHM -1094
2017-10-25_13:05:30 MySHM summary: -1094
2017-10-25_13:06:32 MySHM BatteryIn: 1560
2017-10-25_13:06:32 MySHM PV: 2478
2017-10-25_13:06:32 MySHM DirectConsumption: 918
2017-10-25_13:06:32 MySHM BatteryChargeStatus: 92
2017-10-25_13:06:32 MySHM SelfConsumption: 2478
2017-10-25_13:06:32 MySHM AutarkyQuote: 99
2017-10-25_13:06:32 MySHM SelfSupply: 918
2017-10-25_13:06:32 MySHM TotalConsumption: 928
2017-10-25_13:06:32 MySHM GridConsumption: 10
2017-10-25_13:06:32 MySHM DirectConsumptionQuote: 37
2017-10-25_13:06:32 MySHM -10
2017-10-25_13:06:32 MySHM summary: -10
2017-10-25_13:06:32 MySHM -10
2017-10-25_13:06:32 MySHM summary: -10
2017-10-25_13:07:35 MySHM GridConsumption: 0
2017-10-25_13:07:35 MySHM TotalConsumption: 900
2017-10-25_13:07:35 MySHM SelfSupply: 900
2017-10-25_13:07:35 MySHM AutarkyQuote: 100
2017-10-25_13:07:35 MySHM BatteryIn: 1510
2017-10-25_13:07:35 MySHM SelfConsumption: 2410
2017-10-25_13:07:35 MySHM DirectConsumption: 900
2017-10-25_13:07:35 MySHM PV: 2410
2017-10-25_13:07:35 MySHM 0
2017-10-25_13:07:35 MySHM summary: 0
2017-10-25_13:07:35 MySHM 0
2017-10-25_13:07:35 MySHM summary: 0
2017-10-25_13:08:38 MySHM BatteryIn: 1400
2017-10-25_13:08:38 MySHM PV: 2419
2017-10-25_13:08:38 MySHM DirectConsumption: 1019
2017-10-25_13:08:38 MySHM SelfConsumption: 2419
2017-10-25_13:08:38 MySHM SelfSupply: 1019
2017-10-25_13:08:38 MySHM TotalConsumption: 1019
2017-10-25_13:08:38 MySHM DirectConsumptionQuote: 42
2017-10-25_13:08:38 MySHM 0
2017-10-25_13:08:38 MySHM summary: 0
2017-10-25_13:08:38 MySHM 0
2017-10-25_13:08:38 MySHM summary: 0
2017-10-25_13:09:41 MySHM AutarkyQuote: 91
2017-10-25_13:09:41 MySHM SelfSupply: 1418
2017-10-25_13:09:41 MySHM PV: 2528
2017-10-25_13:09:41 MySHM DirectConsumption: 1418
2017-10-25_13:09:41 MySHM BatteryChargeStatus: 93
2017-10-25_13:09:41 MySHM SelfConsumption: 2528
2017-10-25_13:09:41 MySHM BatteryIn: 1110
2017-10-25_13:09:41 MySHM DirectConsumptionQuote: 56
2017-10-25_13:09:41 MySHM TotalConsumption: 1555
2017-10-25_13:09:41 MySHM GridConsumption: 137
2017-10-25_13:09:41 MySHM -137
2017-10-25_13:09:41 MySHM summary: -137
2017-10-25_13:09:41 MySHM -137
2017-10-25_13:09:41 MySHM summary: -137
2017-10-25_13:10:45 MySHM DirectConsumptionQuote: 39
2017-10-25_13:10:45 MySHM TotalConsumption: 1003
2017-10-25_13:10:45 MySHM GridConsumption: 0
2017-10-25_13:10:45 MySHM SelfSupply: 1003
2017-10-25_13:10:45 MySHM AutarkyQuote: 100
2017-10-25_13:10:45 MySHM BatteryIn: 1550
2017-10-25_13:10:45 MySHM SelfConsumption: 2553
2017-10-25_13:10:45 MySHM PV: 2553
2017-10-25_13:10:45 MySHM DirectConsumption: 1003
2017-10-25_13:10:45 MySHM 0
2017-10-25_13:10:45 MySHM summary: 0
2017-10-25_13:10:45 MySHM 0
2017-10-25_13:10:45 MySHM summary: 0
2017-10-25_13:11:47 MySHM SelfSupply: 1000
2017-10-25_13:11:47 MySHM SelfConsumption: 2550
2017-10-25_13:11:47 MySHM PV: 2556
2017-10-25_13:11:47 MySHM DirectConsumption: 1000
2017-10-25_13:11:47 MySHM FeedIn: 6
2017-10-25_13:11:47 MySHM TotalConsumption: 1000
2017-10-25_13:11:47 MySHM 6
2017-10-25_13:11:47 MySHM summary: 6
2017-10-25_13:11:47 MySHM 6
2017-10-25_13:11:47 MySHM summary: 6
2017-10-25_13:12:50 MySHM 6
2017-10-25_13:12:50 MySHM summary: 6
2017-10-25_13:12:50 MySHM 6
2017-10-25_13:12:50 MySHM summary: 6
2017-10-25_13:13:53 MySHM 6
2017-10-25_13:13:53 MySHM summary: 6
2017-10-25_13:13:53 MySHM 6
2017-10-25_13:13:53 MySHM summary: 6
2017-10-25_13:14:56 MySHM 6
2017-10-25_13:14:56 MySHM summary: 6
2017-10-25_13:14:56 MySHM 6
2017-10-25_13:14:56 MySHM summary: 6
2017-10-25_13:16:00 MySHM 6
2017-10-25_13:16:00 MySHM summary: 6
2017-10-25_13:16:00 MySHM 6
mfg.m
-edit2-
so läuft aber mit einem kleinen Schönheitsfehler
2017.10.26 11:40:24 1: ERROR evaluating {SHMForecast_ParseDone('PV_Forecast||')}: malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/98_SHMForecast.pm line 172.
es geht um den malformed JSON string
# Auswerten des JSON
my $forecast = JSON->new->utf8->decode($a[2]);
konnte es leider nicht fixen
hat da noch einer ne Lösung ?
mfg.m
Hallo m,
ich habe es bei mir seinerzeit auch nicht über das Attribut zum Laufen gebracht und bin dazu übergangen den Namen der SHM Instanz fest in 98_SHMForecast.pm einzutragen.
sub SHMForecast_Define($$)
{
my ($hash, $def) = @_;
my @a = split(/\s+/, $def);
###MS: Parameterübergabe funktionierte bei mir nicht richtig, somit den Namen fix angegeben!
my $shm_name = "sunnyHomeManager";
my $interval = 300;
$interval = $a[2] if($a[2]);
$hash->{interval} = $interval;
$hash->{shm_name} = $shm_name;
# $hash->{TYPE} = "SHMForecast";
RemoveInternalTimer($hash);
InternalTimer(gettimeofday()+$interval+20, "SHMForecast_Parse", $hash, 0);
return "Wrong syntax: use define <name> SHMForecast <interval>" if(int(@a) < 2);
return undef;
}
Meine SHM Instanz heiß sunnyHomeManager, bei Dir entsprechend MySHM eintragen!
Speichern und ein reload 98_SHMForecast.pm sollte dann helfen.
Analog in 98_SHMForecastRelative...
Gruß Marcel
Hi Xguide,
kurze frage
Zitatich habe es bei mir seinerzeit auch nicht über das Attribut zum Laufen gebracht
welches meinst du ?
mfg. m
Hi m,
ich sehe es so, dass das Array $a[2] nicht gefüllt ist und das ist der Instanzname des SHM Moduls.
SHM Forecast nutzt die Verbindungseinstellungen von SHM, deshalb benötigt.
Mein Vorschlag ist der, den Namen Deiner SHM-Instanz fest im Modul zu hinterlegen. Siehe vorheriger Post.
Attribut ist nicht ganz korrekt gewesen vom Wording, es handelt sich um ein Parameter aus dem Def.
Tausche einfach die Routine wie gepostet bei dir aus und passe den Namen an.
Ich hoffe dss hilft,
Marcel
Hi Marcel,
Zitatich sehe es so, dass das Array $a[2] nicht gefüllt ist und das ist der Instanzname des SHM Moduls.
SHM Forecast nutzt die Verbindungseinstellungen von SHM, deshalb benötigt.
Mein Vorschlag ist der, den Namen Deiner SHM-Instanz fest im Modul zu hinterlegen. Siehe vorheriger Post.
Attribut ist nicht ganz korrekt gewesen vom Wording, es handelt sich um ein Parameter aus dem Def.
Tausche einfach die Routine wie gepostet bei dir aus und passe den Namen an.
Danke für deine Ausführung
und vielen Dank für deinen Patch :)
mfg. m
Hat es geklappt?
Hi Marcel,
hab es so gemacht wie du gesagt hast aber ich habe immer noch ein
2017.10.27 16:25:34 1: ERROR evaluating {SHMForecast_ParseDone('PV_Forecast||')}: malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./FHEM/98_SHMForecast.pm line 170.
mfg. m
Hallo m,
da unsere Versionen sich unterscheiden komme ich da so schnell jetzt nicht hinter. Was ich Dir anbieten kann, ist es meine Version zu benutzen. Du musst wieder den SHM Namen anpassen (Zeile 43 bei SHM_Forecast, Zeile 48 bei ForecastRelative) , dann sollte es gehen. Ich packe auch noch mal die beiden Device Lists mit hinzu.
Feedback erwünscht :-)
list Forecast:
Internals:
CFGFN ./FHEM/msPV-Plant.cfg
DEF 1800
NAME sunnyHomeManager_Forecast
NR 2105
STATE <div class="row">Forcast Production Today: 4.16kWh</div><div class="row">Forecast Consumption Today: 11.73kWh</div>
TYPE SHMForecast
interval 1800
shm_name sunnyHomeManager
READINGS:
2017-10-28 12:07:20 Forecast-00 -324
2017-10-28 12:07:20 Forecast-00-Consumption 324
2017-10-28 12:07:20 Forecast-00-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-00-PV 0
2017-10-28 12:07:20 Forecast-01 -305
2017-10-28 12:07:20 Forecast-01-Consumption 305
2017-10-28 12:07:20 Forecast-01-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-01-PV 0
2017-10-28 12:07:20 Forecast-02 -351
2017-10-28 12:07:20 Forecast-02-Consumption 351
2017-10-28 12:07:20 Forecast-02-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-02-PV 0
2017-10-28 12:07:20 Forecast-03 -257
2017-10-28 12:07:20 Forecast-03-Consumption 257
2017-10-28 12:07:20 Forecast-03-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-03-PV 0
2017-10-28 12:07:20 Forecast-04 -271
2017-10-28 12:07:20 Forecast-04-Consumption 271
2017-10-28 12:07:20 Forecast-04-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-04-PV 0
2017-10-28 12:07:20 Forecast-05 -239
2017-10-28 12:07:20 Forecast-05-Consumption 239
2017-10-28 12:07:20 Forecast-05-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-05-PV 0
2017-10-28 12:07:20 Forecast-06 -299
2017-10-28 12:07:20 Forecast-06-Consumption 299
2017-10-28 12:07:20 Forecast-06-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-06-PV 0
2017-10-28 12:07:20 Forecast-07 -787
2017-10-28 12:07:20 Forecast-07-Consumption 787
2017-10-28 12:07:20 Forecast-07-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-07-PV 0
2017-10-28 12:07:20 Forecast-08 -792
2017-10-28 12:07:20 Forecast-08-Consumption 795
2017-10-28 12:07:20 Forecast-08-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-08-PV 3
2017-10-28 12:07:20 Forecast-09 4
2017-10-28 12:07:20 Forecast-09-Consumption 276
2017-10-28 12:07:20 Forecast-09-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-09-PV 280
2017-10-28 12:07:20 Forecast-10 -141
2017-10-28 12:07:20 Forecast-10-Consumption 521
2017-10-28 12:07:20 Forecast-10-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-10-PV 379
2017-10-28 12:07:20 Forecast-11 -194
2017-10-28 12:07:20 Forecast-11-Consumption 563
2017-10-28 12:07:20 Forecast-11-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-11-PV 368
2017-10-28 12:07:20 Forecast-12 -629
2017-10-28 12:07:20 Forecast-12-Consumption 1175
2017-10-28 12:07:20 Forecast-12-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-12-PV 545
2017-10-28 12:07:20 Forecast-13 83
2017-10-28 12:07:20 Forecast-13-Consumption 540
2017-10-28 12:07:20 Forecast-13-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-13-PV 624
2017-10-28 12:07:20 Forecast-14 194
2017-10-28 12:07:20 Forecast-14-Consumption 611
2017-10-28 12:07:20 Forecast-14-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-14-PV 806
2017-10-28 12:07:20 Forecast-15 270
2017-10-28 12:07:20 Forecast-15-Consumption 324
2017-10-28 12:07:20 Forecast-15-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-15-PV 594
2017-10-28 12:07:20 Forecast-16 94
2017-10-28 12:07:20 Forecast-16-Consumption 293
2017-10-28 12:07:20 Forecast-16-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-16-PV 387
2017-10-28 12:07:20 Forecast-17 -462
2017-10-28 12:07:20 Forecast-17-Consumption 620
2017-10-28 12:07:20 Forecast-17-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-17-PV 158
2017-10-28 12:07:20 Forecast-18 -785
2017-10-28 12:07:20 Forecast-18-Consumption 803
2017-10-28 12:07:20 Forecast-18-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-18-PV 17
2017-10-28 12:07:20 Forecast-19 -584
2017-10-28 12:07:20 Forecast-19-Consumption 584
2017-10-28 12:07:20 Forecast-19-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-19-PV 0
2017-10-28 12:07:20 Forecast-20 -475
2017-10-28 12:07:20 Forecast-20-Consumption 475
2017-10-28 12:07:20 Forecast-20-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-20-PV 0
2017-10-28 12:07:20 Forecast-21 -440
2017-10-28 12:07:20 Forecast-21-Consumption 440
2017-10-28 12:07:20 Forecast-21-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-21-PV 0
2017-10-28 12:07:20 Forecast-22 -461
2017-10-28 12:07:20 Forecast-22-Consumption 461
2017-10-28 12:07:20 Forecast-22-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-22-PV 0
2017-10-28 12:07:20 Forecast-23 -417
2017-10-28 12:07:20 Forecast-23-Consumption 417
2017-10-28 12:07:20 Forecast-23-IsConsumptionRecommended no
2017-10-28 12:07:20 Forecast-23-PV 0
2017-10-28 12:07:20 Forecast-Today-Consumption 11731
2017-10-28 12:07:20 Forecast-Today-PV 4161
2017-10-28 12:07:20 STATE 4161
2017-10-28 12:07:20 plantOid xxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxx
2017-10-28 12:07:20 state 4161
2017-10-28 12:07:20 summary -7570
helper:
Attributes:
alias PV Prognose
event-on-change-reading .*
group SMA-Home Manager
room 11_PV-Plant
stateFormat {
"<div class=\"row\">".
"Forcast Production Today: ".sprintf("%.2f",ReadingsVal($name,"Forecast-Today-PV",0)/1000)."kWh".
"</div>".
"<div class=\"row\">".
"Forecast Consumption Today: ".sprintf("%.2f",ReadingsVal($name,"Forecast-Today-Consumption",0)/1000)."kWh".
"</div>"
}
list ForecastRelative:
Internals:
CFGFN ./FHEM/msPV-Plant.cfg
DEF 1800
NAME sunnyHomeManager_ForecastRelative
NR 2108
STATE <div class="row">Forcast Production Tomorrow: 7.60kWh</div><div class="row">Forecast Consumption Tomorrow: 11.69kWh</div>
TYPE SHMForecastRelative
interval 1800
shm_name sunnyHomeManager
READINGS:
2017-10-28 12:07:07 Next04Hours-Consumption 2651
2017-10-28 12:07:07 Next04Hours-IsConsumptionRecommended 0
2017-10-28 12:07:07 Next04Hours-PV 2570
2017-10-28 12:07:07 Next04Hours-Total -80
2017-10-28 12:07:07 NextHour01 83
2017-10-28 12:07:07 NextHour01_Consumption 540
2017-10-28 12:07:07 NextHour01_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour01_PvMeanPower 624
2017-10-28 12:07:07 NextHour01_Time 2017-10-28T13:00:00
2017-10-28 12:07:07 NextHour02 194
2017-10-28 12:07:07 NextHour02_Consumption 611
2017-10-28 12:07:07 NextHour02_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour02_PvMeanPower 806
2017-10-28 12:07:07 NextHour02_Time 2017-10-28T14:00:00
2017-10-28 12:07:07 NextHour03 270
2017-10-28 12:07:07 NextHour03_Consumption 324
2017-10-28 12:07:07 NextHour03_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour03_PvMeanPower 594
2017-10-28 12:07:07 NextHour03_Time 2017-10-28T15:00:00
2017-10-28 12:07:07 NextHour04 94
2017-10-28 12:07:07 NextHour04_Consumption 293
2017-10-28 12:07:07 NextHour04_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour04_PvMeanPower 387
2017-10-28 12:07:07 NextHour04_Time 2017-10-28T16:00:00
2017-10-28 12:07:07 NextHour05 -462
2017-10-28 12:07:07 NextHour05_Consumption 620
2017-10-28 12:07:07 NextHour05_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour05_PvMeanPower 158
2017-10-28 12:07:07 NextHour05_Time 2017-10-28T17:00:00
2017-10-28 12:07:07 NextHour06 -785
2017-10-28 12:07:07 NextHour06_Consumption 803
2017-10-28 12:07:07 NextHour06_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour06_PvMeanPower 17
2017-10-28 12:07:07 NextHour06_Time 2017-10-28T18:00:00
2017-10-28 12:07:07 NextHour07 -584
2017-10-28 12:07:07 NextHour07_Consumption 584
2017-10-28 12:07:07 NextHour07_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour07_PvMeanPower 0
2017-10-28 12:07:07 NextHour07_Time 2017-10-28T19:00:00
2017-10-28 12:07:07 NextHour08 -475
2017-10-28 12:07:07 NextHour08_Consumption 475
2017-10-28 12:07:07 NextHour08_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour08_PvMeanPower 0
2017-10-28 12:07:07 NextHour08_Time 2017-10-28T20:00:00
2017-10-28 12:07:07 NextHour09 -440
2017-10-28 12:07:07 NextHour09_Consumption 440
2017-10-28 12:07:07 NextHour09_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour09_PvMeanPower 0
2017-10-28 12:07:07 NextHour09_Time 2017-10-28T21:00:00
2017-10-28 12:07:07 NextHour10 -461
2017-10-28 12:07:07 NextHour10_Consumption 461
2017-10-28 12:07:07 NextHour10_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour10_PvMeanPower 0
2017-10-28 12:07:07 NextHour10_Time 2017-10-28T22:00:00
2017-10-28 12:07:07 NextHour11 -417
2017-10-28 12:07:07 NextHour11_Consumption 417
2017-10-28 12:07:07 NextHour11_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour11_PvMeanPower 0
2017-10-28 12:07:07 NextHour11_Time 2017-10-28T23:00:00
2017-10-28 12:07:07 NextHour12 -408
2017-10-28 12:07:07 NextHour12_Consumption 408
2017-10-28 12:07:07 NextHour12_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour12_PvMeanPower 0
2017-10-28 12:07:07 NextHour12_Time 2017-10-29T00:00:00
2017-10-28 12:07:07 NextHour13 -351
2017-10-28 12:07:07 NextHour13_Consumption 351
2017-10-28 12:07:07 NextHour13_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour13_PvMeanPower 0
2017-10-28 12:07:07 NextHour13_Time 2017-10-29T01:00:00
2017-10-28 12:07:07 NextHour14 -327
2017-10-28 12:07:07 NextHour14_Consumption 327
2017-10-28 12:07:07 NextHour14_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour14_PvMeanPower 0
2017-10-28 12:07:07 NextHour14_Time 2017-10-29T02:00:00
2017-10-28 12:07:07 NextHour15 -261
2017-10-28 12:07:07 NextHour15_Consumption 261
2017-10-28 12:07:07 NextHour15_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour15_PvMeanPower 0
2017-10-28 12:07:07 NextHour15_Time 2017-10-29T03:00:00
2017-10-28 12:07:07 NextHour16 -242
2017-10-28 12:07:07 NextHour16_Consumption 242
2017-10-28 12:07:07 NextHour16_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour16_PvMeanPower 0
2017-10-28 12:07:07 NextHour16_Time 2017-10-29T04:00:00
2017-10-28 12:07:07 NextHour17 -248
2017-10-28 12:07:07 NextHour17_Consumption 248
2017-10-28 12:07:07 NextHour17_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour17_PvMeanPower 0
2017-10-28 12:07:07 NextHour17_Time 2017-10-29T05:00:00
2017-10-28 12:07:07 NextHour18 -308
2017-10-28 12:07:07 NextHour18_Consumption 308
2017-10-28 12:07:07 NextHour18_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour18_PvMeanPower 0
2017-10-28 12:07:07 NextHour18_Time 2017-10-29T06:00:00
2017-10-28 12:07:07 NextHour19 -497
2017-10-28 12:07:07 NextHour19_Consumption 497
2017-10-28 12:07:07 NextHour19_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour19_PvMeanPower 0
2017-10-28 12:07:07 NextHour19_Time 2017-10-29T07:00:00
2017-10-28 12:07:07 NextHour20 -617
2017-10-28 12:07:07 NextHour20_Consumption 727
2017-10-28 12:07:07 NextHour20_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour20_PvMeanPower 109
2017-10-28 12:07:07 NextHour20_Time 2017-10-29T08:00:00
2017-10-28 12:07:07 NextHour21 -284
2017-10-28 12:07:07 NextHour21_Consumption 697
2017-10-28 12:07:07 NextHour21_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour21_PvMeanPower 412
2017-10-28 12:07:07 NextHour21_Time 2017-10-29T09:00:00
2017-10-28 12:07:07 NextHour22 200
2017-10-28 12:07:07 NextHour22_Consumption 545
2017-10-28 12:07:07 NextHour22_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour22_PvMeanPower 745
2017-10-28 12:07:07 NextHour22_Time 2017-10-29T10:00:00
2017-10-28 12:07:07 NextHour23 593
2017-10-28 12:07:07 NextHour23_Consumption 455
2017-10-28 12:07:07 NextHour23_IsConsumptionRecommended no
2017-10-28 12:07:07 NextHour23_PvMeanPower 1049
2017-10-28 12:07:07 NextHour23_Time 2017-10-29T11:00:00
2017-10-28 12:07:07 RestOfDay-Consumption 6748
2017-10-28 12:07:07 RestOfDay-IsConsumptionRecommended 0
2017-10-28 12:07:07 RestOfDay-PV 3134
2017-10-28 12:07:07 RestOfDay-Total -3614
2017-10-28 12:07:07 STATE 2570
2017-10-28 12:07:07 ThisHour -629
2017-10-28 12:07:07 ThisHour_Consumption 1175
2017-10-28 12:07:07 ThisHour_IsConsumptionRecommended no
2017-10-28 12:07:07 ThisHour_PvMeanPower 545
2017-10-28 12:07:07 ThisHour_Time 2017-10-28T12:00:00
2017-10-28 12:07:07 Tomorrow-Consumption 11687
2017-10-28 12:07:07 Tomorrow-IsConsumptionRecommended 0
2017-10-28 12:07:07 Tomorrow-PV 7600
2017-10-28 12:07:07 Tomorrow-Total 967
2017-10-28 12:07:07 plantOid xxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxx
2017-10-28 12:07:07 state 2570
2017-10-28 12:07:07 summary 2651
helper:
Attributes:
alias PV Prognose Relative
event-on-change-reading .*
group SMA-Home Manager
room 11_PV-Plant
stateFormat {
"<div class=\"row\">".
"Forcast Production Tomorrow: ".sprintf("%.2f",ReadingsVal($name,"Tomorrow-PV",0)/1000)."kWh".
"</div>".
"<div class=\"row\">".
"Forecast Consumption Tomorrow: ".sprintf("%.2f",ReadingsVal($name,"Tomorrow-Consumption",0)/1000)."kWh".
"</div>"
}
Hi Marcel,
gemacht so wie du gesagt hast
[code]2017.10.29 16:33:40 1: PERL WARNING: print() on closed filehandle FORECASTLOG at ./FHEM/98_SHMForecast.pm line 198.
2017.10.29 16:33:40 3: eval: {SHMForecast_ParseDone('PV_Forecast||{"__type":"\u003c\u003ef__AnonymousType1f`5","ForecastSeries":[{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T00:00:00","Kind":"Unspecified"},"WeatherId":130,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2349720.0109863281","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T01:00:00","Kind":"Unspecified"},"WeatherId":130,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2466180.0000000005","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T02:00:00","Kind":"Unspecified"},"WeatherId":130,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2405160","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T03:00:00","Kind":"Unspecified"},"WeatherId":130,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2500380.0000000005","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T04:00:00","Kind":"Unspecified"},"WeatherId":130,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2260080","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T05:00:00","Kind":"Unspecified"},"WeatherId":130,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2372400","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T06:00:00","Kind":"Unspecified"},"WeatherId":130,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2196360","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T07:00:00","Kind":"Unspecified"},"WeatherId":130,"PvMeanPower":{"__type":"Power","Amount":"14.141455","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"50909.238000000005","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2285243.955","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T08:00:00","Kind":"Unspecified"},"WeatherId":30,"PvMeanPower":{"__type":"Power","Amount":"95.3955875","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"343424.115","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2657940.255","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T09:00:00","Kind":"Unspecified"},"WeatherId":30,"PvMeanPower":{"__type":"Power","Amount":"383.088125","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"1379117.25","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2377509.255","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T10:00:00","Kind":"Unspecified"},"WeatherId":30,"PvMeanPower":{"__type":"Power","Amount":"492.22637499999996","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"1772014.95","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2490899.085","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T11:00:00","Kind":"Unspecified"},"WeatherId":30,"PvMeanPower":{"__type":"Power","Amount":"479.826275","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"1727374.59","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2699420.94","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T12:00:00","Kind":"Unspecified"},"WeatherId":30,"PvMeanPower":{"__type":"Power","Amount":"790.5318","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"2845914.48","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3179895.48","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T13:00:00","Kind":"Unspecified"},"WeatherId":30,"PvMeanPower":{"__type":"Power","Amount":"994.815425","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"3581335.53","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3317739.3","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T14:00:00","Kind":"Unspecified"},"WeatherId":60,"PvMeanPower":{"__type":"Power","Amount":"652.9247","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"2350528.92","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3287631.51","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T15:00:00","Kind":"Unspecified"},"WeatherId":60,"PvMeanPower":{"__type":"Power","Amount":"1056.35215","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"3802867.7399999998","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"4623369.66","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T16:00:00","Kind":"Unspecified"},"WeatherId":1,"PvMeanPower":{"__type":"Power","Amount":"623.5772750000001","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"2244878.1900000004","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3141208.8450000007","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T17:00:00","Kind":"Unspecified"},"WeatherId":101,"PvMeanPower":{"__type":"Power","Amount":"37.267570750000004","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"134163.25470000002","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3244353.3899999997","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T18:00:00","Kind":"Unspecified"},"WeatherId":100,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3384064.7100000004","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T19:00:00","Kind":"Unspecified"},"WeatherId":100,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3800076.0749999997","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T20:00:00","Kind":"Unspecified"},"WeatherId":100,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3798819.45","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T21:00:00","Kind":"Unspecified"},"WeatherId":100,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3346947.45","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T22:00:00","Kind":"Unspecified"},"WeatherId":100,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3301717.68","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T23:00:00","Kind":"Unspecified"},"WeatherId":100,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2660289.6149999998","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T00:00:00","Kind":"Unspecified"},"WeatherId":100,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2252492.505","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T01:00:00","Kind":"Unspecified"},"WeatherId":100,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2216913.165","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T02:00:00","Kind":"Unspecified"},"WeatherId":100,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2319179.85","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T03:00:00","Kind":"Unspecified"},"WeatherId":100,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2249840.25","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T04:00:00","Kind":"Unspecified"},"WeatherId":100,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2647735.11","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T05:00:00","Kind":"Unspecified"},"WeatherId":100,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2402481.0599999996","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T06:00:00","Kind":"Unspecified"},"WeatherId":100,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2386798.5149999997","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T07:00:00","Kind":"Unspecified"},"WeatherId":101,"PvMeanPower":{"__type":"Power","Amount":"582.841425","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"2098229.13","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2416928.4899999998","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T08:00:00","Kind":"Unspecified"},"WeatherId":1,"PvMeanPower":{"__type":"Power","Amount":"1477.654","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"5319554.4","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2187772.02","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T09:00:00","Kind":"Unspecified"},"WeatherId":1,"PvMeanPower":{"__type":"Power","Amount":"2360.43775","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"8497575.9","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2562124.9499999997","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":true},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T10:00:00","Kind":"Unspecified"},"WeatherId":2,"PvMeanPower":{"__type":"Power","Amount":"3112.2262499999997","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"11204014.499999998","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3006244.575","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":true},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T11:00:00","Kind":"Unspecified"},"WeatherId":2,"PvMeanPower":{"__type":"Power","Amount":"3590.0935","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"12924336.6","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3549714.3899999997","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":true},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T12:00:00","Kind":"Unspecified"},"WeatherId":2,"PvMeanPower":{"__type":"Power","Amount":"3571.09475","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"12855941.100000001","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3211442.1899999995","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":true},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T13:00:00","Kind":"Unspecified"},"WeatherId":3,"PvMeanPower":{"__type":"Power","Amount":"3075.076","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"11070273.6","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3799630.125","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":true},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T14:00:00","Kind":"Unspecified"},"WeatherId":3,"PvMeanPower":{"__type":"Power","Amount":"2265.35575","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"8155280.7","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3525044.6700000004","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":true},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T15:00:00","Kind":"Unspecified"},"WeatherId":3,"PvMeanPower":{"__type":"Power","Amount":"1459.927","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"5255737.1999999993","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2995283.97","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T16:00:00","Kind":"Unspecified"},"WeatherId":3,"PvMeanPower":{"__type":"Power","Amount":"557.04995","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"2005379.8199999998","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2928988.26","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T17:00:00","Kind":"Unspecified"},"WeatherId":103,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2884255.965","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T18:00:00","Kind":"Unspecified"},"WeatherId":102,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2853678.735","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T19:00:00","Kind":"Unspecified"},"WeatherId":102,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3776613.7499999995","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T20:00:00","Kind":"Unspecified"},"WeatherId":101,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3897848.6999999993","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T21:00:00","Kind":"Unspecified"},"WeatherId":101,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3687599.8350000004","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T22:00:00","Kind":"Unspecified"},"WeatherId":101,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3004068.645","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-30T23:00:00","Kind":"Unspecified"},"WeatherId":101,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2417519.79","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false}],"PlantPeakPower":{"__type":"Power","Amount":"17995","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"TariffUnit":"Euro / kWh","ForecastTimeframes":null,"Consumers":[]}')}
2017.10.29 16:33:40 1: PERL WARNING: print() on closed filehandle FORECASTLOG at ./FHEM/98_SHMForecast.pm line 199.
2017.10.29 16:33:40 3: eval: {SHMForecast_ParseDone('PV_Forecast||{"__type":"\u003c\u003ef__AnonymousType1f`5","ForecastSeries":[{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T00:00:00","Kind":"Unspecified"},"WeatherId":130,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2349720.0109863281","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T01:00:00","Kind":"Unspecified"},"WeatherId":130,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2466180.0000000005","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T02:00:00","Kind":"Unspecified"},"WeatherId":130,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2405160","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T03:00:00","Kind":"Unspecified"},"WeatherId":130,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2500380.0000000005","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T04:00:00","Kind":"Unspecified"},"WeatherId":130,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2260080","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T05:00:00","Kind":"Unspecified"},"WeatherId":130,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2372400","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T06:00:00","Kind":"Unspecified"},"WeatherId":130,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2196360","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T07:00:00","Kind":"Unspecified"},"WeatherId":130,"PvMeanPower":{"__type":"Power","Amount":"14.141455","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"50909.238000000005","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2285243.955","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T08:00:00","Kind":"Unspecified"},"WeatherId":30,"PvMeanPower":{"__type":"Power","Amount":"95.3955875","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"343424.115","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2657940.255","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T09:00:00","Kind":"Unspecified"},"WeatherId":30,"PvMeanPower":{"__type":"Power","Amount":"383.088125","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"1379117.25","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2377509.255","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T10:00:00","Kind":"Unspecified"},"WeatherId":30,"PvMeanPower":{"__type":"Power","Amount":"492.22637499999996","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"1772014.95","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2490899.085","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T11:00:00","Kind":"Unspecified"},"WeatherId":30,"PvMeanPower":{"__type":"Power","Amount":"479.826275","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"1727374.59","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"2699420.94","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T12:00:00","Kind":"Unspecified"},"WeatherId":30,"PvMeanPower":{"__type":"Power","Amount":"790.5318","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"2845914.48","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3179895.48","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T13:00:00","Kind":"Unspecified"},"WeatherId":30,"PvMeanPower":{"__type":"Power","Amount":"994.815425","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"3581335.53","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3317739.3","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T14:00:00","Kind":"Unspecified"},"WeatherId":60,"PvMeanPower":{"__type":"Power","Amount":"652.9247","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"2350528.92","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3287631.51","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T15:00:00","Kind":"Unspecified"},"WeatherId":60,"PvMeanPower":{"__type":"Power","Amount":"1056.35215","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"3802867.7399999998","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"4623369.66","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T16:00:00","Kind":"Unspecified"},"WeatherId":1,"PvMeanPower":{"__type":"Power","Amount":"623.5772750000001","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"2244878.1900000004","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3141208.8450000007","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T17:00:00","Kind":"Unspecified"},"WeatherId":101,"PvMeanPower":{"__type":"Power","Amount":"37.267570750000004","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"134163.25470000002","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3244353.3899999997","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T18:00:00","Kind":"Unspecified"},"WeatherId":100,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3384064.7100000004","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T19:00:00","Kind":"Unspecified"},"WeatherId":100,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3800076.0749999997","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T20:00:00","Kind":"Unspecified"},"WeatherId":100,"PvMeanPower":{"__type":"Power","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"W"}},"PvEnergy":{"__type":"Energy","Amount":"0","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"ConsumptionForecast":{"__type":"Energy","Amount":"3798819.45","StandardUnit":{"__type":"Unit`1","Symbol":"J"}},"GridConsumptionTariff":0.25,"IsConsumptionRecommended":false},{"__type":"ForecastChartDataPoint","TimeStamp":{"__type":"DateTime","DateTime":"2017-10-29T21:00:00","Kind":"Unspecified"},"WeatherId":10
Hallo m,
schau Dir mal Zeile 176 an und passe sie an deine Konfiguration an.
open(FORECASTLOG, ">/media/RAPI-FHEM/FHEM_LogFile/$hash->{NAME}-forecast.log");
Das hatte ich nicht mehr auf dem Schirm und ist mir beim kurzen Überfliegen auch entgangen.
Trage anstelle /media/RAPI-FHEM/FHEM_LogFile den Pfad zu Deinen Logfiles ein und sorge dafür, dass die Berechtigungen für die Datei {NAME}-forecast.log = NameSHMForecast-forecast.log (bei mir sunnyHomeManager_Forecast-forecast.log) entsprechend gesetzt sind.
shutdown restart oder reload 98_SHMForecast.pm nicht vergessen.
Anyway, die Readings sollten aber stimmen, oder?
Gruß Marcel
Hi Marcel,
hatte noch keine Zeit :-\
aber jetzt schaut es gut aus :)
Vielen Dank für dein Versionen
Zitat
Anyway, die Readings sollten aber stimmen, oder?
jup
mfg. manu
Hi Manu,
ich hatte auch nicht wirklich Zeit mir das anzusehen, ich weiss gerade nicht ob das Logging überhaupt benötigt wird. Ist halt drin und läuft 😊
Btw, hast du einen SHM der ersten Generation?
Gruß Marcel
Hi Marcel,
ZitatBtw, hast du einen SHM der ersten Generation?
ich denke nicht
habe einen SHM 2.0 Version A1
mfg. m
Hallo zusammen,
funktioniert das Modul bei euch noch, oder hat SMA was am Portal verändert?
Login funktioniert, allerdings erhalte ich keine Daten mehr.
Danke für eure Antwort und einen schönen Restsonntag,
Marcel
Ja, läuft nach wie vor.
Grüße
Heiko
Nabend Heiko,
danke für deine Info. Fehler gefunden. Meine Faulheit hat es mir mal wieder gezeigt, es war mal wieder der USB-Stick im RaPi der Probleme gemacht hat. Ergo nicht mehr beschreibar, ergo das Cookiefile zu alt, ergo keine Daten. Danke, jetzt läuft es erstmal wieder, bis zum nächsten Crash. Ich muss da unbedingt mal ran....
Viele Grüße
Marcel
Moin,
ich habe das Modul eingerichtet wie beschrieben, aber erhalte immer die Meldung: [ 'Updating of the live data was interrupted.' ]
Wodran kann das liegen?
defmod MySHM SHM XX@XXX XXXX 60 attr MySHM room Photovoltaik define FileLog_MySHM FileLog ./log/MySHM-%Y-%m.log MySHM attr FileLog_MySHM room SHM
VG
Hallo
bin heute über das Modul gelaufen, Und es läuft eigentlich auch alles soweit ich sehen jedoch wird mein Log alles 600 sek damit geflutet
2019.02.15 19:01:58 1: ERROR: empty name in readingsBeginUpdate
2019.02.15 19:01:58 1: stacktrace:
2019.02.15 19:01:58 1: main::readingsBeginUpdate called by ./FHEM/98_SHMForecast.pm (215)
2019.02.15 19:01:58 1: main::SHMForecast_ParseDone called by (eval 76183) (1)
2019.02.15 19:01:58 1: (eval) called by fhem.pl (1132)
2019.02.15 19:01:58 1: main::AnalyzePerlCommand called by fhem.pl (1157)
2019.02.15 19:01:58 1: main::AnalyzeCommand called by fhem.pl (1079)
2019.02.15 19:01:58 1: main::AnalyzeCommandChain called by ./FHEM/98_telnet.pm (255)
2019.02.15 19:01:58 1: main::telnet_Read called by fhem.pl (3689)
2019.02.15 19:01:58 1: main::CallFn called by fhem.pl (742)
2019.02.15 19:01:58 1: readingsUpdate(,Forecast-00-Consumption,1458) missed to call readingsBeginUpdate first.
2019.02.15 19:01:58 1: stacktrace:
2019.02.15 19:01:58 1: main::readingsBulkUpdate called by ./FHEM/98_SHMForecast.pm (236)
2019.02.15 19:01:58 1: main::SHMForecast_ParseDone called by (eval 76183) (1)
2019.02.15 19:01:58 1: (eval) called by fhem.pl (1132)
2019.02.15 19:01:58 1: main::AnalyzePerlCommand called by fhem.pl (1157)
2019.02.15 19:01:58 1: main::AnalyzeCommand called by fhem.pl (1079)
2019.02.15 19:01:58 1: main::AnalyzeCommandChain called by ./FHEM/98_telnet.pm (255)
2019.02.15 19:01:58 1: main::telnet_Read called by fhem.pl (3689)
2019.02.15 19:01:58 1: main::CallFn called by fhem.pl (742)
2019.02.15 19:01:58 1: readingsUpdate(,Forecast-00-PV,0) missed to call readingsBeginUpdate first.
2019.02.15 19:01:58 1: stacktrace:
und wenn ich ehrlich bin sagt mir das garnix.
Zitat von: Frahmi am 27 November 2018, 13:26:14
Moin,
ich habe das Modul eingerichtet wie beschrieben, aber erhalte immer die Meldung: [ 'Updating of the live data was interrupted.' ]
Wodran kann das liegen?
defmod MySHM SHM XX@XXX XXXX 60 attr MySHM room Photovoltaik define FileLog_MySHM FileLog ./log/MySHM-%Y-%m.log MySHM attr FileLog_MySHM room SHM
VG
Moin,
ich habe das gleiche Problem und bekomme auch ständig die Warnung "Updating of the live data was interrupted" woran kann das liegen. Es läuft bei mir sehr instabil. Ohne das ich etwas ändere, werden mal die Daten gelesen und dann stockt es wieder.
Hier einige Auszüge aus dem Logfile.
2019-02-19_11:42:14 MySHM 0
2019-02-19_11:42:14 MySHM summary: 0
2019-02-19_11:44:00 MySHM InfoMessages: []
2019-02-19_11:44:00 MySHM Info: {}
2019-02-19_11:44:00 MySHM WarningMessages: [ 'Updating of the live data was interrupted.' ]
2019-02-19_11:44:00 MySHM __type: LiveDataUI
2019-02-19_11:44:00 MySHM ErrorMessages: []
2019-02-19_11:44:00 MySHM 0
2019-02-19_11:44:00 MySHM summary: 0
2019-02-19_11:46:33 MySHM 0
2019-02-19_11:46:33 MySHM summary: 0
2019-02-19_11:47:36 MySHM 0
2019-02-19_11:47:36 MySHM summary: 0
2019-02-19_11:48:37 MySHM 0
2019-02-19_11:48:37 MySHM summary: 0
2019-02-19_11:49:37 MySHM 0
2019-02-19_11:49:37 MySHM summary: 0
2019-02-19_15:55:18 MySHM Login-Status: Login successful
2019-02-19_15:56:21 MySHM PV: 119
2019-02-19_15:56:21 MySHM SelfConsumptionQuote: 100
2019-02-19_15:56:21 MySHM WarningMessages: []
2019-02-19_15:56:21 MySHM AutarkyQuote: 24
2019-02-19_15:56:21 MySHM SelfConsumption: 119
2019-02-19_15:56:21 MySHM TotalConsumption: 494
2019-02-19_15:56:21 MySHM GridConsumption: 375
2019-02-19_15:56:21 MySHM SelfSupply: 119
2019-02-19_15:56:21 MySHM -375
2019-02-19_15:56:21 MySHM summary: -375
2019-02-19_15:57:21 MySHM -375
2019-02-19_15:57:21 MySHM summary: -375
2019-02-19_15:58:21 MySHM ErrorMessages: [ 'The current data cannot be retrieved from the PV system. Check the cabling and configuration of the following energy meters:<div class="liveModeErrorSub"><ul><li class="faultingCounter"><span>PV generation meter</span></il><li class="faultingCounter"><span>Feed-in meter</span></il><li class="faultingCounter"><span>External consumption meter</span></il></ul></div>' ]
2019-02-19_15:58:21 MySHM InfoMessages: [ 'The current consumption could not be determined. The current purchased electricity is unknown. ' ]
2019-02-19_15:58:21 MySHM -375
2019-02-19_15:58:21 MySHM summary: -375
2019-02-19_15:59:22 MySHM ErrorMessages: []
2019-02-19_15:59:22 MySHM AutarkyQuote: 15
2019-02-19_15:59:22 MySHM InfoMessages: []
2019-02-19_15:59:22 MySHM PV: 131
2019-02-19_15:59:22 MySHM SelfSupply: 131
2019-02-19_15:59:22 MySHM TotalConsumption: 877
2019-02-19_15:59:22 MySHM SelfConsumption: 131
2019-02-19_15:59:22 MySHM GridConsumption: 746
2019-02-19_15:59:22 MySHM -746
2019-02-19_15:59:22 MySHM summary: -746
2019-02-19_16:00:22 MySHM -746
2019-02-19_16:00:22 MySHM summary: -746
2019-02-19_16:01:22 MySHM -746
2019-02-19_16:01:22 MySHM summary: -746
2019-02-19_16:02:23 MySHM -746
2019-02-19_16:02:23 MySHM summary: -746
2019-02-19_16:55:59 MySHM summary: -614
2019-02-19_16:57:00 MySHM GridConsumption: 627
2019-02-19_16:57:00 MySHM SelfConsumption: 135
2019-02-19_16:57:00 MySHM TotalConsumption: 762
2019-02-19_16:57:00 MySHM SelfSupply: 135
2019-02-19_16:57:00 MySHM PV: 135
2019-02-19_16:57:00 MySHM -627
2019-02-19_16:57:00 MySHM summary: -627
2019-02-19_16:58:09 MySHM InfoMessages: [ 'The current consumption could not be determined. The current purchased electricity is unknown. ' ]
2019-02-19_16:58:09 MySHM ErrorMessages: [ 'The current data cannot be retrieved from the PV system. Check the cabling and configuration of the following energy meters:<div class="liveModeErrorSub"><ul><li class="faultingCounter"><span>PV generation meter</span></il><li class="faultingCounter"><span>Feed-in meter</span></il><li class="faultingCounter"><span>External consumption meter</span></il></ul></div>' ]
2019-02-19_16:58:09 MySHM -627
2019-02-19_16:58:09 MySHM summary: -627
2019-02-19_16:59:09 MySHM SelfSupply: 118
2019-02-19_16:59:09 MySHM GridConsumption: 600
2019-02-19_16:59:09 MySHM TotalConsumption: 718
2019-02-19_16:59:09 MySHM SelfConsumption: 118
2019-02-19_16:59:09 MySHM ErrorMessages: []
2019-02-19_16:59:09 MySHM AutarkyQuote: 16
2019-02-19_16:59:09 MySHM PV: 118
2019-02-19_16:59:09 MySHM InfoMessages: []
2019-02-19_16:59:09 MySHM -600
2019-02-19_16:59:09 MySHM summary: -600
2019-02-19_17:00:09 MySHM SelfSupply: 76
2019-02-19_17:00:09 MySHM GridConsumption: 590
2019-02-19_17:00:09 MySHM SelfConsumption: 76
2019-02-19_17:00:09 MySHM TotalConsumption: 666
2019-02-19_17:00:09 MySHM AutarkyQuote: 11
2019-02-19_17:00:09 MySHM PV: 76
2019-02-19_17:00:09 MySHM -590
019-02-19_17:41:23 MySHM summary: -779
2019-02-19_17:42:23 MySHM TotalConsumption: 1097
2019-02-19_17:42:23 MySHM GridConsumption: 1097
2019-02-19_17:42:23 MySHM -1097
2019-02-19_17:42:23 MySHM summary: -1097
2019-02-19_17:43:23 MySHM WarningMessages: [ 'Updating of the live data was interrupted.' ]
2019-02-19_17:43:23 MySHM -1097
2019-02-19_17:43:23 MySHM summary: -1097
2019-02-19_17:44:24 MySHM -1097
2019-02-19_17:44:24 MySHM summary: -1097
2019-02-19_17:45:24 MySHM -1097
2019-02-19_17:45:24 MySHM summary: -1097
2019-02-19_17:46:24 MySHM -1097
2019-02-19_17:46:24 MySHM summary: -1097
2019-02-19_17:47:25 MySHM -1097
2019-02-19_17:47:25 MySHM summary: -1097
2019-02-19_17:48:25 MySHM -1097
2019-02-19_17:48:25 MySHM summary: -1097
2019-02-19_17:49:25 MySHM -1097
2019-02-19_17:49:25 MySHM summary: -1097
Hat jemand eine Idee woran es liegen kann?
Viele Grüße
Dietmar
Ich habe jetzt festgestellt, dass die Übertragung immer genau nach 1 Std. unterbrochen wird. Liegt das an SMA? Ich habe den Intervall der Abfrage schon auf 120 sec. angehoben, hilft aber nicht.
2019-02-19_16:42:54 MySHM Login-Status: Login successful
...
2019-02-19_17:43:23 MySHM WarningMessages: [ 'Updating of the live data was interrupted.' ]
2019-02-21_02:09:16 MySHM Login-Status: Login successful
...
2019-02-21_03:09:39 MySHM WarningMessages: [ 'Updating of the live data was interrupted.' ]
2019-02-21_08:43:45 MySHM Login-Status: Login successful
...
2019-02-21_09:44:10 MySHM WarningMessages: [ 'Updating of the live data was interrupted.' ]
Guten Morgen zusammen,
habt ihr das mit dem Löschen des Cookies berücksichtigt?
Ich habe seinerzeit einen Cronjob dafür angelegt und es läuft seit langer Zeit stabil, wobei ich die SHM Portalverbindung nur noch für den Forecast nutze und das Interval auf 10min gesetzt habe.
Gruß Marcel
***EDIT***
Das Cronjob Thema ist obsolete ab einer gewissen Version - mein Fehler! Kann über Attribute (attr) gesetzt werden.
Hi Marcel,
danke für deine schnelle Antwort. Ich beschäftige mich erst sei kurzem mit dem Raspi und FHEM. Wie richte ich den Cronjob, zum löschen der Cookies, ein? Gibt es dazu eine Beschreibung? Ich habe dazu leider nichts
gefunden?
In dem Thread habe ich wohl gelesen, dass es auch im Modul berücksichtigt sein soll. Ich habe die Version "V0.3.1" gibt es noch eine neuere?
Gruß
Dietmar
Hi Dietmar,
die Cookie-Thematik findest du ziemlich einfach, indem Du hier im Thread cookie in die Suche eingibst.
Allerdings waren meine Erinnerungen nicht mehr auf dem letzten Stand. In Post #275 schrieb ich schon mal:
Zitat
@Maximat und Bernd, mir ist aufgefallen das das Löschen per cronjob der mycookies.txt mit irgendeiner Version obsolete wurde, da es von DS_Starter im SHM-Modul implementiert wurde. Dafür muss das Attribut cookieLocation und cookielifetime entsprechend gesetzt werden.
Also nun die Frage, passt cookieLocation und die Lebenszeit?
Meine Einstellungen sehen wie folgt aus:
cookieLocation /media/USBSTICK/FHEM_StateFile/mycookies.txt
cookielifetime 3100
oder das ganze List:
Internals:
CFGFN ./FHEM/msPV-Plant.cfg
DEF USERNAME PASSWORD 600
FUUID FUUID
NAME sunnyHomeManager
NR 2063
STATE Battery: 97 % | PVprod: 7200 Wh | Cons: 288 Wh | Grid-: 0 Wh | Grid+: 6892 Wh
TYPE SHM
interval 600
password PASSWORD
username USERNAME
.attraggr:
.attreocr:
.*
.attrminint:
HELPER:
oldlogintime 1551091190.59257
READINGS:
2019-02-25 12:09:49 AutarkyQuote 100
2019-02-25 12:09:49 BatteryChargeStatus 97
2019-02-25 12:09:49 BatteryIn 20
2019-02-25 12:09:49 BatteryOut 0
2019-02-25 12:09:49 DirectConsumption 288
2019-02-25 12:09:49 DirectConsumptionQuote 4
2019-02-25 12:09:49 ErrorMessages
2019-02-25 12:09:49 FeedIn 6892
2019-02-25 12:09:49 GridConsumption 0
2019-02-25 12:09:49 Info
2019-02-25 12:09:49 InfoMessages
2019-02-25 11:39:50 Login-Status successful
2019-02-25 12:09:49 PV 7200
2019-02-25 12:09:49 SelfConsumption 308
2019-02-25 12:09:49 SelfConsumptionQuote 4
2019-02-25 12:09:49 SelfSupply 288
2019-02-25 12:09:49 Timestamp
2019-02-25 12:09:49 TotalConsumption 288
2019-02-25 12:09:49 WarningMessages
2019-02-25 12:09:49 __type LiveDataUI
2019-02-25 12:09:49 state 6892
2019-02-25 12:09:49 summary 6892
helper:
Attributes:
alias PV Status
cookieLocation /media/USBSTICK/FHEM_StateFile/mycookies.txt
cookielifetime 3100
event-on-change-reading .*
group SMA-Home Manager
room 11_PV-Plant
stateFormat Battery: BatteryChargeStatus % | PVprod: PV Wh | Cons: TotalConsumption Wh | Grid-: GridConsumption Wh | Grid+: FeedIn Wh
verbose 0
Hallo Freee84neu,
schon den Thread mit Post 298 - 308 gelesen?
Gruß Marcel
Ich habe jetzt erstmal das Modul ausgetauscht und die Version genommen, die von DS_Starter angepasst wurde. Jetzt läuft es seit über 2 Std. ohne Unterbrechung.
#####################################################################################################################################################
#
# A Module to read the values from the Sunny Portal Home Manager.
#
# FHEM Forum: http://forum.fhem.de/index.php/topic,27667.0.html
# FHEM Wiki:
#
# Author: Brun von der Gönne <brun at goenne dot de>
#
# !!!BETA!!! V0.3.1
#
# Cnangelog:
# V0.1.1:
# - ignore "null" values
# - add reading "summary" for state
# V0.1.2
# - converting insted ignore "null" values
# V0.2
# - use JSON
# - add forecast from Sunny Portal
# V0.3
# - disabled forecast because problems
# - disabled ssl certificate checks
# V0.3.1
# - changed User Agent
# V0.3.2
# - add Loginstatus as reading (Thanx BerndArnold)
#
# Changes by DS_Starter
# - use of BlockingCall to avoid blocking situations
# - only one BlockingCall can be running
# - added attribute "timeout" (default 30) for BlockingCall added
# - added attribute "userAgent" to determine useragent entry (default: "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)"
# - added attribute "disable" to disable the module temporary
# - added attribute "cookieLocation" for path/name of cookiefile (default: "./log/mycookies.txt") - consider dependency of 98_SHMForecast.pm !
# - enhanced log-entries for verbose-modes
# - Testroutine of "Login failed" changed (only "Logincontrol1_ErrorLabel")
# - all readings will be updated, not only changed readings data (see ($old_val ne $new_val) commented), it's for correct exposure in SVG diagram if
# one value is "0" for a long time and goes then suddenly to a high value
# - attribute "cookielifetime" and sub for deleting cookiefile added
#
################################################################################################################################
Mein Ziel ist es, eine Verbindung zwischen SHM und meinem Go-eCharger herzustellen, so das ich mein Elektroauto mit möglich viel PV-Strom laden kann. Bin mal gespannt, ob ich das hinbekomme. Für den go-echarger habe ich etwas gefunden, dass über HTTPMOD läuft.
Das klingt doch erst einmal gut, sorry bin von der Version die Du jetzt hast ausgegangen.
Leider herrscht bei dem Modul, vorallem wenn es dann um die Prognosen geht (SHM_FORMCAST), etwas Unordnung.
Viel Erfolg und einen sonnigen Tag,
Marcel
Den Wechselrichter direkt abfragen, ohne das Portal, läuft aber wesentlich stabiler.
Gesendet von iPhone mit Tapatalk
Wenn das mit meinen Wechselrichtern geht?
- SB 4000TL-21 450
- STP 8000TL-20 194
Soweit ich weiß, läuft bei den Wechselrichtern die Kommunikation nur über Bluetooth. Ansonsten bin ich für alle Lösungen offen.
Nabend zusammen,
zum SB kann ich nichts sagen, beim STP8000TL-20 sollte es wie bei meinem baugleichen 10000er gehen.
Allerdings geht Bluetooth und Speedwire gemeinsam nicht ohne Fehlermeldungen, deswegen habe ich Bluetooth deaktiviert und alles über Speedwire = Ethernet verkabelt. Die Schnittstelle ist da.
Über Bluetooth kommunizieren jetzt nur noch SHM und die SMA Steckdosen. Zum Deaktivieren von Bluetooth einfach die NodeID am SHM ändern und die Steckdosen umparametrieren.
Um Bluetooth nur am STP zu deaktivieren muss man ihn aufmachen, das wollte ich nicht.
Für Forecast finde ich dieses Modul trotzdem noch sehr gut, denn das liefern die anderen Module nicht.
Grüße Marcel
Guten Abend,
über das Wochende hatte ich mich nochmal mit dem 98_SHM von Brun und dem 98_SHMForecastRelative von BerndArnold beschäftigt und wollte neben einer allgemeinen Verbesserung im Handling auch ein gemeinsames Modul aus beiden Teilen erstellen, da die jeweiligen Funktionen ohnehin zusammengehören.
Herausgekommen ist das Modul 76_SMAPortal, was ich in meinem contrib-Ordner zum Download bereitgestellt habe:
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter (Downloadbutton benutzen)
Der Name des Moduls ist nun auch ein Hinweis darauf, dass ein Portal abgerufen wird und nicht der Sunny Homemanager direkt.
Das Modul enthält eine deutsche Hlilfe die nach dem Download nach FHEM mit "help SMAPortal de" aufgerufen werden kann.
Hier ein Auszug welche Features es gibt:
* einfaches Define mit "define <name> SMAPortal"
* keine Angabe der Zugangsdaten im Define und auch nicht mehr in den Internals sichtbar
* Zugangsdaten werden durch "set <name> credentials" gesetzt und einem File unleserlich gespeichert. Sie können mit einem Get-Kommando angezeigt werden.
* Daten können automatisch per Intervall oder manuell (Notify / At) mit einem Get-Kommando abgerufen werden.
* die zu erstellenden Readings können durch Angabe von Detail-Levels quantifiziert werden
L1 - nur Live-Daten werden generiert.
L2 - Live-Daten und Prognose der nächsten 4 Stunden
L3 - wie L2 und zusätzlich Daten des Resttages und Folgetages
L4 - wie L3 und zusätzlich die detaillierte Prognose der nächsten 24 Stunden
* erweiterte Statusmeldungen gegenüber den Originalmodulen
Beispiel für eine Raw-Definition:
defmod Sonnenstrom SMAPortal
attr Sonnenstrom cookieLocation ./log/cookies.txt
attr Sonnenstrom cookielifetime 3000
attr Sonnenstrom detailLevel 3
attr Sonnenstrom disable 0
attr Sonnenstrom event-on-update-reading state,L1_FeedIn,L1_PV,L1_SelfSupply,L1_SelfConsumption,L1_SelfConsumptionQuote,L1_TotalConsumption,L1_GridConsumption,L1_AutarkyQuote
attr Sonnenstrom group Sunny Home Manager
attr Sonnenstrom interval 65
attr Sonnenstrom room Energie
attr Sonnenstrom stateFormat { ReadingsVal("$name","state", "") eq "disabled" ? ReadingsVal("$name","state", "") : ReadingsVal("$name","summary", 0)." W (+ ToGrid, - FromGrid) / PV-Prognose der nächsten 4 Stunden: ".ReadingsVal("$name","next04hours_state", 0)." Wh" }
attr Sonnenstrom timeout 200
attr Sonnenstrom verbose 3
Grüße,
Heiko
Danke Heiko, dass du dir Zeit genommen hast und das ganze noch weiterentwickelt hast. Die Hilfe funktioniert bei mir nicht. Wenn ich sie aufrufen, kommt:
"SMAPortal
Is coming soon..."
Mach ich was falsch oder ist die Hilfe noch nicht fertig?
Grüße
Dietmar
Hallo Dietmar,
äh ... die deutsche Hilfe ist fertig. Wenn man man nicht global language = DE eingestellt hat, muss man aufrufen:
help SMAPortal de
Lg
Heiko
Alles klar, funktoniert. Ich beschäftige mich erst seit kurzem mit FHEM und muss wohl noch viel lernen :-)
Danke!
Hallo,
ich habe das Modul bezüglich der Stabilität des Datenabrufs vom Portal verbessert.
Die Ergebnisse sind schon sehr gut und die Daten werden in dem vorgegebenen Intervall recht zuverlässig geliefert.
Es gibt das neu Attribut "getDataRetries ".
Download wieder hier:
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter (Downloadbutton benutzen)
Grüße,
Heiko
Mit der Version 1.2.0 des Moduls 76_SMAPortal in meinem contrib habe ich noch die Wetterdaten, die SMA für den Anlagenstandort liefert bzw. prognostiziert, mit eingebaut und ein paar kleine Unschönheiten beseitigt.
Download wie oben geschrieben.
Kennt ihr eigentlich schon das SolarCoin-Programm ?
(https://www.sma.de/newsroom/aktuelle-nachrichten/news-detail/news/3761-solarcoins-jetzt-ganz-einfach-ueber-sma-sunny-portal-verfuegbar.html)
Wenn man sich dafür registriert hat, bekommt man SolarCoins gutgeschrieben und die Anzahl SLR wird im Portal mit angezeigt.
Falls jemand eine Seite findet die diesen Wert abrufbar anbietet, würde ich es mit in das Modul einbinden können.
Also wenn ihr eine entsprechende Seite habt, gebt mal bitte Bescheid.
VG
Zur Info:
Habe die V 1.2.1 ins contrib gelegt. Das state-Verhalten habe ich noch etwas geändert.
Ansonsten läuft der Datenabruf bei mir seit der V1.2.0 sehr stabil. Damit kann man jetzt etwas anfangen denke ich :)
LG und schönen Sonntag,
Heiko
Hallo @all,
Wow 😮 ,Mega was sich hier so alles tut ! Absoluten Respekt vor eurer Arbeit ...
Mir ist ein Sunny Home Manager 2.0 ( Hutschienenmodel ) zugelaufen 😂 und wenn ich das hier alles richtig verstehe , so kann ich diesen mit dem Modul 76_SMAPortal nutzen !
Der Thread hier ist allerdings etwas heftig ,da er wohl wirklich in den Anfängen startet 🤔
Das hat mich etwas verwirrt ,da auch die Wiki-Einträge wohl überholt sind bzw noch von einem alten Modul sind ...
Leider blicke ich noch nicht durch alles so wirklich durch ....
Darum wollte ich mal nach einem kleinen Leitfaden fragen :
Nach Installation und Einrichtung des SMA2.0 im Sicherungskasten , registriere ich mich im Portal .
Baue mit diesen Registrieten Daten das 76_SMAPortal entsprechend ein
Soweit alles korrekt ?
Einen Wiki-Eintrag für das aktuelle Modul gibt es nicht ? ( oder ich war zu doof es zu finden )
Das Modul gehört nicht zum Standard von Fhem und müsste händisch mit Updates versorgt werden ?
Zitat von: Aladin222 am 15 März 2019, 11:16:39
Mir ist ein Sunny Home Manager 2.0 ( Hutschienenmodel ) zugelaufen 😂 und wenn ich das hier alles richtig verstehe , so kann ich diesen mit dem Modul 76_SMAPortal nutzen !
du kannst auch 77_SMAEM nutzen und dir den Umweg ins externe Sunny Portal sparen :)
@Wzut, erstmal Danke !
Werde beides mal testen .... die Abfrage mit SMAEM scheint schon mal zu funzen ....
@DS_Starter ,
habe dein Modul 76_SMAPortal ins Verzeichnis /opt/fhem/FHEM kopiert ...
Wenn ich nun aus Fhem ein reload 76_SMAPortal mache bekomme ich :
Undefined subroutine &FHEM::Meta::InitMod called at ./FHEM/76_SMAPortal.pm line 82.
Wenn ich versuche mit
define Solar SMAPortal
bekomme ich auch einen Fehler :
Cannot load module SMAPortal
könnt ihr mir da bitte weiterhelfen ? Fehlt mir noch etwas in der Linuxkonfiguration ?
die fehlt vermutlich die Meta.pm ... ist zur eigentlichen Funktion des Moduls zwar gar nicht notwendig, aber das Thema Meta.pm breitet sich allerdings in letzter Zeit seuchenartig über diverse Module aus.
Hallo Aladin222,
Zitat
Darum wollte ich mal nach einem kleinen Leitfaden fragen :
Nach Installation und Einrichtung des SMA2.0 im Sicherungskasten , registriere ich mich im Portal .
Baue mit diesen Registrieten Daten das 76_SMAPortal entsprechend ein
Soweit alles korrekt ?
Einen Wiki-Eintrag für das aktuelle Modul gibt es nicht ? ( oder ich war zu doof es zu finden )
Das Modul gehört nicht zum Standard von Fhem und müsste händisch mit Updates versorgt werden ?
Erstmal zu deinem Fehler mit Meta.pm.
Das Modul Meta.pm ist sehr neu und es ist noch nicht ganz klar wohin die Reise gehen wird. Aber ich habe es in das (noch) nicht offizielle Modul 76_SMAPortal eingebunden um damit etwas "warm" zu werden.
Du brauchst also nichts anderes tun, als dein fhem mit "update" oder "update Meta.pm" zu aktualisieren. Dann klappt das auch.
Lade dir nach dem update am Besten die aktuellste Version von 76_SMAPortal von heute herunter. Danach FHEM Restart und du kannst damit loslegen.
Zu den Modulen rund um SMA Produkte ist zu sagen, dass es eine Reihe von offiziellen und nicht offiziellen Modulen gibt die verschiedene SMA-Produkte bedienen und sich in den Funktionalitäten teilweise überschneiden und auch ergänzen. Meiner Meinung nach hat aber jedes dieser Module seine Daseinsberechtigung weil auch jedes Modul Stärken und Schwächen hat. Die meisten haben eine längere Entstehungsgeschichte.
Ich selbst verwende fast jedes dieser Module. Fachlich wäre das nicht notwendig, aber weil ich bei etlichen davon an der Weiterentwicklung beteiligt war, hat es sich so ergeben.
Ich versuche es mal etwas im Überblick darzustellen (ohne Anspruch auf Vollständigkeit):
- SMAEM : Modul für dem SMA Energy Meter, Vorteil ist die sehr genaue Erfassung Energieverbräuche und Lieferungen
durch mögliche kurze Updatezyklen im FHEM, Multimetersupport haben wir auch eingebaut
- SMAInverter: Modul zur Abfrage von Wechselrichtern, Vorteil ist die lokal mögliche Abfrage mit Sonnenzyklus Steuerung
und lokaler Abfrage, Nachteil ist dass nur WR mit Speedwire Interface angesprochen werden können und es
auch nicht mit jedem WR funktioniert
- SMAPortal: Fragt die Anlagendaten aus dem SMA Portal ab. Vorteil ist dass neben den Daten der Energieverbräuche auch
Daten wie Autarkiequote, Selbstverbrauchsquote oder Empfehlungen ob größere Verbraucher eingeschaltet
werden sollten mit geliefert werden. Nachteil ist die Abhängigkeit vom SMA Portal und dass die Updatezyklen
gering sein sollten (z.B. alle 5 Minuten). Dadurch ist die Genauigkeit nicht so hoch.
- SMAUtils: ein inoffizielles Modul welches mit SBFSpot zur Abfrage von SMA WR zusammmenarbeitet. Dazu gibt es
einen Wikieintrag. Vorteil ist dass man jeden WR einbinden kann der mit SBFSpot funkitioniert. Somit ist
auch die Kopplung via Bluetooth möglich. Nachteil ist eben die Abhängigkeit von SBFSpot was extra
installiert werden muss.
- SMASTP: (noch) offizielles Modul für WR Abfrage welches aber nicht mehr verwendet werden sollte und besser durch
die SMAInverter oder eine andere Variante ersetzt werden sollte
Offiziell im Repository sind SMAEM, SMAInverter, (SMASTP). SMAPortal findet man in meinem contrib Verzeichnis. SMAUtils findet man im Wiki mit Hinweis auf verschiedene Threads.
Deneben gibt es mit Sicherheit noch weitere diverse Vor- und Nebenentwicklungen im Forum.
Das ist, was ich an dieser Stelle an Hilfe bieten kann. :)
Grüße,
Heiko
@Heiko , danke dir !!! Prima 👌🏾
Das macht das Verstehen nun um einiges leichter 😂
Hallo,
ich habe eine neue Version des 76_SMAPortal Moduls in mein contrib geladen.
Neu ist die Integration von Verbrauchern (Bluetooth-Steckdosen) die über den Sunny Home Manager angesprochen werden.
Sobald eine SMA-Dose in den Standby geschaltet ist, wird im SMA-Portal die Zeitspanne angegeben in der der Homemanager diesen Verbraucher anschalten wird.
Diese Information wird nun auch im Modul im Level3 abgebildet. Die entstehenden Readings enthalten den im Portal hinterlegen Verbrauchernamen human readable wie Geschirrspüler o.ä.
Außerdem habe ich die UTC-Zeit in lokale Zeit umgesetzt und ein paar weitere Kleinigkeiten eingebaut.
Download wieder hier:
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter (Downloadbutton benutzen)
Nebenbei ... sollte es störend sein die Informationen zu dem Modul in diesem Thread zu schreiben, mache ich einen neuen Thread dafür auf. Aber da das Modul auf den
Vorarbeiten in diesem Thread basiert, hatte es sich angeboten hier auf den entstandenen Fork aufmerksam zu machen. Brun, als TE ggf. bitte monieren, dann erstelle ich einen extra Thread :)
LG,
Heiko
Ich habe mir die Version gerade mal angeschaut, liefert ja einiges an Daten.
Ist das gewollt das bei einigen Readings noch $VAR1 auftaucht ?
2019-03-24 18:21:09 L1_WarningMessages $VAR1 = undef
2019-03-24 18:21:10 L1_today_WeatherDescription $VAR1 = Heavy cloud or overcast
BTW : Es wäre toll wenn du bei deinen Modulen nicht sooo stark auf Meta.pm setzen würdest (vllt in eval Blöcke packen ?),
ich muß da immer einiges von Hand rauskratzen damit es auch auf älteren Instanzen läuft :)
ZitatIst das gewollt das bei einigen Readings noch $VAR1 auftaucht ?
Nein, das habe ich bei mir auch nicht, ich meine $VAR1 gibt es bei meinen Readings nicht.
Da muss ich mir mal überlegen wo das herkommen könnte.
Zitat
BTW : Es wäre toll wenn du bei deinen Modulen nicht sooo stark auf Meta.pm setzen würdest (vllt in eval Blöcke packen ?),
ich muß da immer einiges von Hand rauskratzen damit es auch auf älteren Instanzen läuft :)
:) ok. Habe mir extra mein inoffizielles Modul rausgesucht um damit ein bisschen zu üben. Das heißt bei deiner Installation gibt es kein Meta.pm ?
Ich habe dir mal noch ein List in voller "Schönheit" angehängt:
Internals:
CREDENTIALS Set
FUUID 5c8a0765-f33f-b178-1faf-c39b1a82c16232e9
FVERSION 76_SMAPortal.pm:v1.5.0-s00000/2019-03-14 TESTING
MODE Automatic - next polltime: 18:44:02
NAME Sonnenstrom
NR 596
STATE -2103 W (+ ToGrid, - FromGrid) / PV-Prognose der nächsten 4 Stunden: 4 Wh
TYPE SMAPortal
HELPER:
CREDENTIALS blablabla
PACKAGE FHEM::SMAPortal
RETRIES 3
VERSION 1.5.0
oldlogintime 1553448849.45127
Helper:
DBLOG:
........
READINGS:
2019-03-24 18:39:09 L1_AutarkyQuote 0
2019-03-24 18:39:09 L1_ErrorMessages none
2019-03-24 18:39:09 L1_FeedIn 0
2019-03-24 18:39:09 L1_GridConsumption 2103
2019-03-24 18:39:09 L1_InfoMessages none
2019-03-24 18:34:09 L1_Login-Status successful
2019-03-24 18:39:09 L1_PV 0
2019-03-24 18:39:09 L1_SelfConsumption 0
2019-03-24 18:39:09 L1_SelfConsumptionQuote 0
2019-03-24 18:39:09 L1_SelfSupply 0
2019-03-24 18:39:09 L1_TotalConsumption 2103
2019-03-24 18:39:09 L1_WarningMessages none
2019-03-24 18:39:09 L1_today_Temperature 8.3 °C
2019-03-24 18:39:09 L1_today_WeatherDescription Cloudy
2019-03-24 18:39:09 L1_tomorrow_Temperature 9.3 °C
2019-03-24 18:39:09 L1_tomorrow_WeatherDescription Heavy cloud or overcast
2019-03-24 18:39:09 L2_Next04Hours-Consumption 4288
2019-03-24 18:39:09 L2_Next04Hours-IsConsumptionRecommended 0
2019-03-24 18:39:09 L2_Next04Hours-PV 4
2019-03-24 18:39:09 L2_Next04Hours-Total -4284
2019-03-24 18:39:09 L2_PlantPeakPower 5130 W
2019-03-24 18:39:09 L2_ThisHour -1556
2019-03-24 18:39:09 L2_ThisHour_Consumption 1561
2019-03-24 18:39:09 L2_ThisHour_IsConsumptionRecommended no
2019-03-24 18:39:09 L2_ThisHour_PvMeanPower 4
2019-03-24 18:39:09 L2_ThisHour_Time 24.03.2019 19:00:00
2019-03-24 18:39:09 L3_Geschirrspüler_Planned no
2019-03-24 18:39:09 L3_Geschirrspüler_PlannedOpTimeBegin undefined
2019-03-24 18:39:09 L3_Geschirrspüler_PlannedOpTimeEnd undefined
2019-03-24 18:39:09 L3_RestOfDay-Consumption 5521
2019-03-24 18:39:09 L3_RestOfDay-IsConsumptionRecommended 0
2019-03-24 18:39:09 L3_RestOfDay-PV 4
2019-03-24 18:39:09 L3_RestOfDay-Total -5517
2019-03-24 18:39:09 L3_Tomorrow-Consumption 13690
2019-03-24 18:39:09 L3_Tomorrow-IsConsumptionRecommended 0
2019-03-24 18:39:09 L3_Tomorrow-PV 8816
2019-03-24 18:39:09 L3_Tomorrow-Total 1576
2019-03-24 18:39:09 L3_Waschmaschine_Planned no
2019-03-24 18:39:09 L3_Waschmaschine_PlannedOpTimeBegin undefined
2019-03-24 18:39:09 L3_Waschmaschine_PlannedOpTimeEnd undefined
2019-03-24 18:39:09 L4_NextHour01 -1173
2019-03-24 18:39:09 L4_NextHour01_Consumption 1173
2019-03-24 18:39:09 L4_NextHour01_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour01_PvMeanPower 0
2019-03-24 18:39:09 L4_NextHour01_Time 24.03.2019 20:00:00
2019-03-24 18:39:09 L4_NextHour02 -689
2019-03-24 18:39:09 L4_NextHour02_Consumption 689
2019-03-24 18:39:09 L4_NextHour02_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour02_PvMeanPower 0
2019-03-24 18:39:09 L4_NextHour02_Time 24.03.2019 21:00:00
2019-03-24 18:39:09 L4_NextHour03 -864
2019-03-24 18:39:09 L4_NextHour03_Consumption 864
2019-03-24 18:39:09 L4_NextHour03_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour03_PvMeanPower 0
2019-03-24 18:39:09 L4_NextHour03_Time 24.03.2019 22:00:00
2019-03-24 18:39:09 L4_NextHour04 -685
2019-03-24 18:39:09 L4_NextHour04_Consumption 685
2019-03-24 18:39:09 L4_NextHour04_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour04_PvMeanPower 0
2019-03-24 18:39:09 L4_NextHour04_Time 24.03.2019 23:00:00
2019-03-24 18:39:09 L4_NextHour05 -547
2019-03-24 18:39:09 L4_NextHour05_Consumption 547
2019-03-24 18:39:09 L4_NextHour05_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour05_PvMeanPower 0
2019-03-24 18:39:09 L4_NextHour05_Time 25.03.2019 00:00:00
2019-03-24 18:39:09 L4_NextHour06 -418
2019-03-24 18:39:09 L4_NextHour06_Consumption 418
2019-03-24 18:39:09 L4_NextHour06_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour06_PvMeanPower 0
2019-03-24 18:39:09 L4_NextHour06_Time 25.03.2019 01:00:00
2019-03-24 18:39:09 L4_NextHour07 -408
2019-03-24 18:39:09 L4_NextHour07_Consumption 408
2019-03-24 18:39:09 L4_NextHour07_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour07_PvMeanPower 0
2019-03-24 18:39:09 L4_NextHour07_Time 25.03.2019 02:00:00
2019-03-24 18:39:09 L4_NextHour08 -442
2019-03-24 18:39:09 L4_NextHour08_Consumption 442
2019-03-24 18:39:09 L4_NextHour08_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour08_PvMeanPower 0
2019-03-24 18:39:09 L4_NextHour08_Time 25.03.2019 03:00:00
2019-03-24 18:39:09 L4_NextHour09 -428
2019-03-24 18:39:09 L4_NextHour09_Consumption 428
2019-03-24 18:39:09 L4_NextHour09_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour09_PvMeanPower 0
2019-03-24 18:39:09 L4_NextHour09_Time 25.03.2019 04:00:00
2019-03-24 18:39:09 L4_NextHour10 -509
2019-03-24 18:39:09 L4_NextHour10_Consumption 509
2019-03-24 18:39:09 L4_NextHour10_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour10_PvMeanPower 0
2019-03-24 18:39:09 L4_NextHour10_Time 25.03.2019 05:00:00
2019-03-24 18:39:09 L4_NextHour11 -501
2019-03-24 18:39:09 L4_NextHour11_Consumption 501
2019-03-24 18:39:09 L4_NextHour11_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour11_PvMeanPower 0
2019-03-24 18:39:09 L4_NextHour11_Time 25.03.2019 06:00:00
2019-03-24 18:39:09 L4_NextHour12 -745
2019-03-24 18:39:09 L4_NextHour12_Consumption 875
2019-03-24 18:39:09 L4_NextHour12_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour12_PvMeanPower 130
2019-03-24 18:39:09 L4_NextHour12_Time 25.03.2019 07:00:00
2019-03-24 18:39:09 L4_NextHour13 -321
2019-03-24 18:39:09 L4_NextHour13_Consumption 669
2019-03-24 18:39:09 L4_NextHour13_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour13_PvMeanPower 347
2019-03-24 18:39:09 L4_NextHour13_Time 25.03.2019 08:00:00
2019-03-24 18:39:09 L4_NextHour14 -30
2019-03-24 18:39:09 L4_NextHour14_Consumption 555
2019-03-24 18:39:09 L4_NextHour14_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour14_PvMeanPower 525
2019-03-24 18:39:09 L4_NextHour14_Time 25.03.2019 09:00:00
2019-03-24 18:39:09 L4_NextHour15 303
2019-03-24 18:39:09 L4_NextHour15_Consumption 477
2019-03-24 18:39:09 L4_NextHour15_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour15_PvMeanPower 780
2019-03-24 18:39:09 L4_NextHour15_Time 25.03.2019 10:00:00
2019-03-24 18:39:09 L4_NextHour16 565
2019-03-24 18:39:09 L4_NextHour16_Consumption 453
2019-03-24 18:39:09 L4_NextHour16_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour16_PvMeanPower 1018
2019-03-24 18:39:09 L4_NextHour16_Time 25.03.2019 11:00:00
2019-03-24 18:39:09 L4_NextHour17 707
2019-03-24 18:39:09 L4_NextHour17_Consumption 483
2019-03-24 18:39:09 L4_NextHour17_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour17_PvMeanPower 1190
2019-03-24 18:39:09 L4_NextHour17_Time 25.03.2019 12:00:00
2019-03-24 18:39:09 L4_NextHour18 705
2019-03-24 18:39:09 L4_NextHour18_Consumption 456
2019-03-24 18:39:09 L4_NextHour18_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour18_PvMeanPower 1161
2019-03-24 18:39:09 L4_NextHour18_Time 25.03.2019 13:00:00
2019-03-24 18:39:09 L4_NextHour19 551
2019-03-24 18:39:09 L4_NextHour19_Consumption 520
2019-03-24 18:39:09 L4_NextHour19_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour19_PvMeanPower 1071
2019-03-24 18:39:09 L4_NextHour19_Time 25.03.2019 14:00:00
2019-03-24 18:39:09 L4_NextHour20 377
2019-03-24 18:39:09 L4_NextHour20_Consumption 578
2019-03-24 18:39:09 L4_NextHour20_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour20_PvMeanPower 956
2019-03-24 18:39:09 L4_NextHour20_Time 25.03.2019 15:00:00
2019-03-24 18:39:09 L4_NextHour21 319
2019-03-24 18:39:09 L4_NextHour21_Consumption 463
2019-03-24 18:39:09 L4_NextHour21_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour21_PvMeanPower 782
2019-03-24 18:39:09 L4_NextHour21_Time 25.03.2019 16:00:00
2019-03-24 18:39:09 L4_NextHour22 65
2019-03-24 18:39:09 L4_NextHour22_Consumption 477
2019-03-24 18:39:09 L4_NextHour22_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour22_PvMeanPower 543
2019-03-24 18:39:09 L4_NextHour22_Time 25.03.2019 17:00:00
2019-03-24 18:39:09 L4_NextHour23 -239
2019-03-24 18:39:09 L4_NextHour23_Consumption 510
2019-03-24 18:39:09 L4_NextHour23_IsConsumptionRecommended no
2019-03-24 18:39:09 L4_NextHour23_PvMeanPower 271
2019-03-24 18:39:09 L4_NextHour23_Time 25.03.2019 18:00:00
2019-03-24 18:39:09 L4_plantOid 9bfdbda3-9584-42e8-89fe-24b6f3dfbbf8
2019-03-24 18:39:09 next04hours_state 4
2019-03-24 18:39:09 state ok
2019-03-24 18:39:09 summary -2103 W
Attributes:
comment Forum:
======
https://forum.fhem.de/index.php/topic,27667.0.html
cookieLocation ./log/cookies.txt
cookielifetime 3000
detailLevel 4
disable 0
event-on-update-reading state,summary,L1_FeedIn,L1_PV,L1_SelfSupply,L1_SelfConsumption,L1_TotalConsumption,L1_GridConsumption,.*Temperature,.*IsConsumptionRecommended,L2_PlantPeakPower
getDataRetries 4
group Sunny Home Manager
icon measure_photovoltaic_inst
interval 300
room Energie
stateFormat { ReadingsVal("$name","state", "") eq "disabled" ? ReadingsVal("$name","state", "") : ReadingsVal("$name","summary", 0)." (+ ToGrid, - FromGrid) / PV-Prognose der nächsten 4 Stunden: ".ReadingsVal("$name","next04hours_state", 0)." Wh" }
timeout 200
verbose 4
Zitat von: DS_Starter am 24 März 2019, 18:37:38
Das heißt bei deiner Installation gibt es kein Meta.pm ?
auf den richtigen FHEMs nicht (die sind immer schön alt und rock solid) , meine Entwicklungsumgebung ist natürlich top aktuell und ich teste alle meine Module bzw. deren Änderungen vor dem einchecken sowohl mit den alten beiden Alten als auch mit der Aktuellen.
Bei mir taucht das VAR1 in vier Readings auf , aber hier mal alle meine Level 4 Readings
2019-03-24 18:21:09 L1_AutarkyQuote 27
2019-03-24 18:21:09 L1_ErrorMessages $VAR1 = undef
2019-03-24 18:21:09 L1_FeedIn 0
2019-03-24 18:21:09 L1_GridConsumption 600
2019-03-24 18:21:09 L1_InfoMessages $VAR1 = undef
2019-03-24 18:19:05 L1_Login-Status successful
2019-03-24 18:21:09 L1_PV 218
2019-03-24 18:21:09 L1_SelfConsumption 218
2019-03-24 18:21:09 L1_SelfConsumptionQuote 100
2019-03-24 18:21:09 L1_SelfSupply 218
2019-03-24 18:21:09 L1_TotalConsumption 818
2019-03-24 18:21:09 L1_WarningMessages $VAR1 = undef
2019-03-24 18:21:10 L1_today_Temperature 0.0 °C
2019-03-24 18:21:10 L1_today_WeatherDescription $VAR1 = Heavy cloud or overcast
2019-03-24 18:21:10 L1_tomorrow_Temperature 0.0 °C
2019-03-24 18:21:10 L1_tomorrow_WeatherDescription $VAR1 = Heavy cloud or overcast
2019-03-24 18:21:09 L2_Next04Hours-Consumption 3588
2019-03-24 18:21:09 L2_Next04Hours-IsConsumptionRecommended 0
2019-03-24 18:21:09 L2_Next04Hours-PV 67
2019-03-24 18:21:09 L2_Next04Hours-Total -3520
2019-03-24 18:21:10 L2_PlantPeakPower 8820 W
2019-03-24 18:21:09 L2_ThisHour -714
2019-03-24 18:21:09 L2_ThisHour_Consumption 782
2019-03-24 18:21:09 L2_ThisHour_IsConsumptionRecommended no
2019-03-24 18:21:09 L2_ThisHour_PvMeanPower 67
2019-03-24 18:21:09 L2_ThisHour_Time 2019-03-24 19:00:00
2019-03-24 18:21:09 L3_RestOfDay-Consumption 5371
2019-03-24 18:21:09 L3_RestOfDay-IsConsumptionRecommended 0
2019-03-24 18:21:09 L3_RestOfDay-PV 67
2019-03-24 18:21:09 L3_RestOfDay-Total -5304
2019-03-24 18:21:09 L3_Tomorrow-Consumption 27528
2019-03-24 18:21:09 L3_Tomorrow-IsConsumptionRecommended 2
2019-03-24 18:21:09 L3_Tomorrow-PV 19998
2019-03-24 18:21:09 L3_Tomorrow-Total 1300
2019-03-24 18:21:09 L4_NextHour01 -924
2019-03-24 18:21:09 L4_NextHour01_Consumption 924
2019-03-24 18:21:09 L4_NextHour01_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour01_PvMeanPower 0
2019-03-24 18:21:09 L4_NextHour01_Time 2019-03-24 20:00:00
2019-03-24 18:21:09 L4_NextHour02 -918
2019-03-24 18:21:09 L4_NextHour02_Consumption 918
2019-03-24 18:21:09 L4_NextHour02_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour02_PvMeanPower 0
2019-03-24 18:21:09 L4_NextHour02_Time 2019-03-24 21:00:00
2019-03-24 18:21:09 L4_NextHour03 -963
2019-03-24 18:21:09 L4_NextHour03_Consumption 963
2019-03-24 18:21:09 L4_NextHour03_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour03_PvMeanPower 0
2019-03-24 18:21:09 L4_NextHour03_Time 2019-03-24 22:00:00
2019-03-24 18:21:09 L4_NextHour04 -912
2019-03-24 18:21:09 L4_NextHour04_Consumption 912
2019-03-24 18:21:09 L4_NextHour04_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour04_PvMeanPower 0
2019-03-24 18:21:09 L4_NextHour04_Time 2019-03-24 23:00:00
2019-03-24 18:21:09 L4_NextHour05 -871
2019-03-24 18:21:09 L4_NextHour05_Consumption 871
2019-03-24 18:21:09 L4_NextHour05_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour05_PvMeanPower 0
2019-03-24 18:21:09 L4_NextHour05_Time 2019-03-25 00:00:00
2019-03-24 18:21:09 L4_NextHour06 -853
2019-03-24 18:21:09 L4_NextHour06_Consumption 853
2019-03-24 18:21:09 L4_NextHour06_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour06_PvMeanPower 0
2019-03-24 18:21:09 L4_NextHour06_Time 2019-03-25 01:00:00
2019-03-24 18:21:09 L4_NextHour07 -774
2019-03-24 18:21:09 L4_NextHour07_Consumption 774
2019-03-24 18:21:09 L4_NextHour07_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour07_PvMeanPower 0
2019-03-24 18:21:09 L4_NextHour07_Time 2019-03-25 02:00:00
2019-03-24 18:21:09 L4_NextHour08 -736
2019-03-24 18:21:09 L4_NextHour08_Consumption 736
2019-03-24 18:21:09 L4_NextHour08_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour08_PvMeanPower 0
2019-03-24 18:21:09 L4_NextHour08_Time 2019-03-25 03:00:00
2019-03-24 18:21:09 L4_NextHour09 -596
2019-03-24 18:21:09 L4_NextHour09_Consumption 596
2019-03-24 18:21:09 L4_NextHour09_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour09_PvMeanPower 0
2019-03-24 18:21:09 L4_NextHour09_Time 2019-03-25 04:00:00
2019-03-24 18:21:09 L4_NextHour10 -666
2019-03-24 18:21:09 L4_NextHour10_Consumption 666
2019-03-24 18:21:09 L4_NextHour10_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour10_PvMeanPower 0
2019-03-24 18:21:09 L4_NextHour10_Time 2019-03-25 05:00:00
2019-03-24 18:21:09 L4_NextHour11 -758
2019-03-24 18:21:09 L4_NextHour11_Consumption 758
2019-03-24 18:21:09 L4_NextHour11_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour11_PvMeanPower 0
2019-03-24 18:21:09 L4_NextHour11_Time 2019-03-25 06:00:00
2019-03-24 18:21:09 L4_NextHour12 -792
2019-03-24 18:21:09 L4_NextHour12_Consumption 954
2019-03-24 18:21:09 L4_NextHour12_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour12_PvMeanPower 162
2019-03-24 18:21:09 L4_NextHour12_Time 2019-03-25 07:00:00
2019-03-24 18:21:09 L4_NextHour13 -352
2019-03-24 18:21:09 L4_NextHour13_Consumption 1052
2019-03-24 18:21:09 L4_NextHour13_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour13_PvMeanPower 700
2019-03-24 18:21:09 L4_NextHour13_Time 2019-03-25 08:00:00
2019-03-24 18:21:09 L4_NextHour14 157
2019-03-24 18:21:09 L4_NextHour14_Consumption 1041
2019-03-24 18:21:09 L4_NextHour14_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour14_PvMeanPower 1198
2019-03-24 18:21:09 L4_NextHour14_Time 2019-03-25 09:00:00
2019-03-24 18:21:09 L4_NextHour15 366
2019-03-24 18:21:09 L4_NextHour15_Consumption 1287
2019-03-24 18:21:09 L4_NextHour15_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour15_PvMeanPower 1653
2019-03-24 18:21:09 L4_NextHour15_Time 2019-03-25 10:00:00
2019-03-24 18:21:09 L4_NextHour16 577
2019-03-24 18:21:09 L4_NextHour16_Consumption 1431
2019-03-24 18:21:09 L4_NextHour16_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour16_PvMeanPower 2008
2019-03-24 18:21:09 L4_NextHour16_Time 2019-03-25 11:00:00
2019-03-24 18:21:09 L4_NextHour17 99
2019-03-24 18:21:09 L4_NextHour17_Consumption 2176
2019-03-24 18:21:09 L4_NextHour17_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour17_PvMeanPower 2276
2019-03-24 18:21:09 L4_NextHour17_Time 2019-03-25 12:00:00
2019-03-24 18:21:09 L4_NextHour18 931
2019-03-24 18:21:09 L4_NextHour18_Consumption 1635
2019-03-24 18:21:09 L4_NextHour18_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour18_PvMeanPower 2567
2019-03-24 18:21:09 L4_NextHour18_Time 2019-03-25 13:00:00
2019-03-24 18:21:09 L4_NextHour19 1082
2019-03-24 18:21:09 L4_NextHour19_Consumption 1630
2019-03-24 18:21:09 L4_NextHour19_IsConsumptionRecommended yes
2019-03-24 18:21:09 L4_NextHour19_PvMeanPower 2713
2019-03-24 18:21:09 L4_NextHour19_Time 2019-03-25 14:00:00
2019-03-24 18:21:09 L4_NextHour20 1068
2019-03-24 18:21:09 L4_NextHour20_Consumption 1532
2019-03-24 18:21:09 L4_NextHour20_IsConsumptionRecommended yes
2019-03-24 18:21:09 L4_NextHour20_PvMeanPower 2600
2019-03-24 18:21:09 L4_NextHour20_Time 2019-03-25 15:00:00
2019-03-24 18:21:09 L4_NextHour21 871
2019-03-24 18:21:09 L4_NextHour21_Consumption 1213
2019-03-24 18:21:09 L4_NextHour21_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour21_PvMeanPower 2085
2019-03-24 18:21:09 L4_NextHour21_Time 2019-03-25 16:00:00
2019-03-24 18:21:09 L4_NextHour22 -195
2019-03-24 18:21:09 L4_NextHour22_Consumption 1517
2019-03-24 18:21:09 L4_NextHour22_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour22_PvMeanPower 1322
2019-03-24 18:21:09 L4_NextHour22_Time 2019-03-25 17:00:00
2019-03-24 18:21:09 L4_NextHour23 -1196
2019-03-24 18:21:09 L4_NextHour23_Consumption 1781
2019-03-24 18:21:09 L4_NextHour23_IsConsumptionRecommended no
2019-03-24 18:21:09 L4_NextHour23_PvMeanPower 584
2019-03-24 18:21:09 L4_NextHour23_Time 2019-03-25 18:00:00
2019-03-24 18:21:09 next04hours_state 67
2019-03-24 18:21:10 state ok
2019-03-24 18:21:10 summary -600 W
Habe das Modul gegen fehlende Meta.pm gehärtet (eval) und neu hochgeladen. :D
Wegen der VAR1 schaue ich noch. Wenn du vor mir eine Idee haben solltest lass es mich wissen ...
Grüße
Heiko
Kannst du mir mal zum Vergleich einen verbose 5 Ausschnitt von dem Livedata Get posten ?
....
2019.03.24 19:13:14.737 4: Sonnenstrom - Login to SMA-Portal succesful
2019.03.24 19:13:14.738 4: Sonnenstrom - Getting live data now
2019.03.24 19:13:14.740 5: Sonnenstrom - Data received:
{
'BatteryMode' => undef,
'TotalConsumption' => 3257,
'InfoMessages' => [],
'SelfSupply' => undef,
'ErrorMessages' => [],
'DirectConsumption' => undef,
'AutarkyQuote' => undef,
'WarningMessages' => [
'The current PV generation could not be fully determined. An inverter did not respond in time.'
],
'Timestamp' => {
'__type' => 'DateTime',
'Kind' => 'Unspecified',
'DateTime' => '2019-03-24T19:13:14'
},
'ModuleTemperature' => undef,
'WindSpeed' => undef,
'FeedIn' => 0,
'__type' => 'LiveDataUI',
'GridConsumption' => 3257,
'BatteryChargeStatus' => undef,
'EnvironmentTemperature' => undef,
'PV' => undef,
'SelfConsumptionQuote' => undef,
'OperationHealth' => undef,
'DirectConsumptionQuote' => undef,
'BatteryStateOfHealth' => undef,
'BatteryOut' => undef,
'SelfConsumption' => undef,
'Info' => {},
'BatteryIn' => undef,
'Insolation' => undef
}
2019.03.24 19:13:14.741 4: Sonnenstrom - Getting weather data now
....
aber sicher doch , der ist nur "etwas" länger, da machen die Code Tags nicht mit :( daher als extra txt File.
( die stacktrace Zeilen Nummern stimmen jetzt durch mein ändern natürlich nicht !)
Danke schon mal fürs Meta.pm ändern, ich werde mir das morgen mal ansehen.
Hmm, alle deine Dumper-Ausgaben fangen mit $VAR1 an, meine tun das nicht.
Ansonsten sieht alles identisch zu meiner Datenstruktur aus wenn ich nichts übersehen habe. Das ist mir momentan nicht transparent woher das kommen könnte.
Man könnte $VAR1 mal probehalber bei Zeile 525 wegsubstituieren, etwa so:
$livedata_content = $livedata->content;
$livedata_content =~ /^(\$VAR1 = )?(.*)/s;
$livedata_content = $2;
Vielleicht magst du das mal testen.
Mal eine Frage in die Runde, wie sieht es denn bei anderen aus die dieses Modul inzwischen nutzen/testen ?
@Wzut, ich glaube ich habe das Problem identifiziert und auch gefixt. Die korrigierte Version befindet sich im contrib.
Bin gespannt auf dein Testergebnis morgen.
Grüße,
Heiko
Moin Heiko ,
zuerst die gute Nachricht : die $VAR1 sind weg und ich habe die Temperaturwerte in den Readings !!
die "schlechte" ... dein eines eval nur um InitMod reicht nicht aus , u.A. hast du 2 x use Meta.pm noch drin ( direkt über Initialize und paar Zeilen tiefer)
und dann müsste auch im Define das setVersionInfo($hash) in ein eval gepackt werden.
Anyway, mach dir keinen Kopf drum ich kann mir ja selbst helfen :) , das eigentliche Thema dahinter für Modulautoren ist hier sowieso OT und sollte ggf. im richtigen Board ein einem extra Fred diskutiert werden.
Na das sieht doch gut aus. :)
Den Rest kriege ich dann auch noch hin. Ist schon mein Anspruch dass man einfach updaten kann und fertig ;)
LG
In meinem contrib befindet sich eine 76_SMAPortal-Version, die fest gegen Meta.pm-Absent ist.
Habe es bei mir getestet. ;)
Grüße
Heiko
Moin DS_Starter
Bei mir wird im Reading "L1_BatteryOut" ein Wert angezeigt obwohl sie gerade geladen wird.
Ist das richtig so.
Oder kommt das nur bei mir vor.
Vielen Dank für das Modul.
Schöne Ostentage ( Feiertage )
Hallo Michael,
nein, so soll es nicht sein. Ich habe keine Batterie, deswegen sehe ich es bei mir nicht.
Setz das Device mal bitte auf verbose 4 und poste mir einen solchen Ausschnitt:
2019.04.21 18:43:59.298 4: Sonnenstrom - Login to SMA-Portal succesful
2019.04.21 18:43:59.300 4: Sonnenstrom - Getting live data now
2019.04.21 18:43:59.301 4: Sonnenstrom - Getting weather data now
2019.04.21 18:43:59.435 4: Sonnenstrom - Getting forecast data now
2019.04.21 18:43:59.938 4: Sonnenstrom -> SelfConsumption - 237
2019.04.21 18:43:59.939 4: Sonnenstrom -> PV - 237
2019.04.21 18:43:59.939 4: Sonnenstrom -> AutarkyQuote - 50
2019.04.21 18:43:59.940 4: Sonnenstrom - Livedata content "Timestamp": HASH(0x558717707720)
2019.04.21 18:43:59.940 4: Sonnenstrom -> GridConsumption - 239
2019.04.21 18:43:59.940 4: Sonnenstrom - Livedata content "WarningMessages": ARRAY(0x558710de1b90)
2019.04.21 18:43:59.941 4: Sonnenstrom -> SelfConsumptionQuote - 100
2019.04.21 18:43:59.941 4: Sonnenstrom -> SelfSupply - 237
2019.04.21 18:43:59.941 4: Sonnenstrom - Livedata content "Info": HASH(0x558719415ff0)
2019.04.21 18:43:59.942 4: Sonnenstrom -> TotalConsumption - 476
2019.04.21 18:43:59.942 4: Sonnenstrom - Livedata content "InfoMessages": ARRAY(0x558718d8ea80)
2019.04.21 18:43:59.942 4: Sonnenstrom - Livedata content "ErrorMessages": ARRAY(0x55871a42e690)
2019.04.21 18:43:59.958 4: Sonnenstrom - Plantdata "PlantPeakPower Amount": 5130
2019.04.21 18:43:59.959 4: Sonnenstrom - Plantdata "PlantPeakPower Symbol": W
2019.04.21 18:43:59.959 4: Sonnenstrom - Consumer data "1_ConsumerName": Geschirrspüler
2019.04.21 18:43:59.960 4: Sonnenstrom - Consumer data "1_ConsumerOid": 5d511e6e-608f-4c97-ac89-f0d03ee566ac
2019.04.21 18:43:59.960 4: Sonnenstrom - Consumer data "0_ConsumerName": Waschmaschine
2019.04.21 18:43:59.961 4: Sonnenstrom - Consumer data "0_ConsumerOid": 3905a2ea-5c23-40c2-9e53-a33cbc32ca65
2019.04.21 18:43:59.961 4: Sonnenstrom - Weatherdata content "tomorrow": HASH(0x558710fef918)
2019.04.21 18:43:59.961 4: Sonnenstrom - Weatherdata "tomorrow WeatherIcon": /Images/Dashboard/Weather/00.png
2019.04.21 18:43:59.962 4: Sonnenstrom - Weatherdata "tomorrow TemperatureSymbol": °C
2019.04.21 18:43:59.962 4: Sonnenstrom - Weatherdata "tomorrow Temperature": 19.131175994873
2019.04.21 18:43:59.962 4: Sonnenstrom - Weatherdata "tomorrow WeatherDescription": Cloudless
2019.04.21 18:43:59.963 4: Sonnenstrom -> tomorrow_WeatherDescription - Cloudless
2019.04.21 18:43:59.963 4: Sonnenstrom - Weatherdata content "today": HASH(0x558718ab09f0)
2019.04.21 18:43:59.964 4: Sonnenstrom - Weatherdata "today WeatherIcon": /Images/Dashboard/Weather/00.png
2019.04.21 18:43:59.964 4: Sonnenstrom - Weatherdata "today TemperatureSymbol": °C
2019.04.21 18:43:59.964 4: Sonnenstrom - Weatherdata "today Temperature": 17.076358795166
2019.04.21 18:43:59.965 4: Sonnenstrom - Weatherdata "today WeatherDescription": Cloudless
2019.04.21 18:43:59.965 4: Sonnenstrom -> today_WeatherDescription - Cloudless
Ich fixe das Verhalten dann.
Edit: Besser noch verbose 5 und den Ausschnitt wo man BatteryOut bzw. BatteryIn sieht.
Ebenfalls schöne Ostern !
Heiko
Moin DS_Starter
Kann ich dir die Log Datei auf einen anderen Weg dir zukommen lassen.
Per E Mail / PN kann ich keine Datei anhängen.
Moin,
normale E-Mail an Heiko.MaazATt-online.de.
Aber eigentlich reicht es den relevanten Ausschnitt zu kopieren und in Codetags hier einzufügen.
LG,
Heiko
Hallo Michael, @all,
habe eine neue Version von 76_SMAPortal.pm in mein contrib geladen.
Es sollte nun mit den Battery-Readings funktionieren.
Probiere es mal aus und gebe mir bitte Rückmeldung.
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter (Downloadbutton benutzen)
Grüße,
Heiko
Moin Heiko
Es sieht gut aus habe zwei Hardcopy's hier angehangen.
Viel Dank !
Danke für die Rückinfo Michael. Habe ich erst heute gesehen.
Leider bekomme ich manchmal keine Emails von Threads die ich beobachte.
Grüße,
Heiko
Hallo zusammen,
saschab hat hier https://forum.fhem.de/index.php/topic,24876.msg934615.html#msg934615 eine interessante Anzeigeprafik erstellt.
Die grafische Anzeigelösung hat mir sehr gut gefallen und hat mich inspiriert sie in das Modul zu übernehmen.
Ich habe die Funktion so abgeändert, dass man mit einem set Kommando ein separates weblink-Device erstellen kann, welches man z.B. auch auf einem Dashboard platzieren kann. (siehe Anhang)
* set <name> createPortalGraphic
Erstellt ein weblink-Device zur grafischen Anzeige der SMA Portaldaten. Das Attribut "detailLevel" muss auf den Level 4 gesetzt sein. Der Befehl setzt dieses Attribut automatisch auf den benötigten Wert.
Der Download des Moduls aus meinem contrib und danach restart:
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter (Downloadbutton benutzen)
Grüße,
Heiko
ist ja lustig, als ich das gestern Morgen gesehen habe konnte ich ich auch nicht die Finger davon lassen :)
Ich habe es als Funktion in die 99_myUtils gepackt, den Code vereinfacht und die Darstellung etwas auf meinen Geschmack angepasst.
Moin Wzut,
so kanns gehen. :) Ist aber wirklich eine schöne Idee von saschab.
Ich will auch noch Anpassungsmöglichkeiten für Farben einbauen und den Code stark einlkürzen. Weiß aber nicht ob ich das vor meinem Urlaub noch schaffe, eher nicht. Wollte gestern nur erstmal diese Möglichkeit integrieren.
Aber wenn du magst, gibst du deinen Code mal bekannt und ich baue es als weiteren Style ins Modul ein.
LG,
Heiko
Bitteschön :)
Was habe ich geändert :
a. die Stunden nach unten verschoben und diese zähle ich nicht mehr nur stur durch, sondern verwende das jeweilige Reading _Time. So stimmen die Stunden auch wenn die Werte mal nicht geholt werden konnten. Leider war das etwas mehr Aufwand, da die SMA Zeitwerte auf GMT basieren und sich durch unsere Zeitzone und Sommerzeit eine Verschiebung ergibt. ( z.Z 2 Stunden )
b. Die Höhe der Balken passt sich an den max Ertrag an , so hat man im Winter auch ordenliche Balken und keine Bodendecker
c. Wenn kein Ertrag zu erwarten ist beträgt die Balkenbreite nur 25% (24px vs. 6px) , das macht die Nacht schön schmal und schafft Raum am Tag.
d. Ich habe mal wieder gemerkt das ich mich bisher viel zuwenig um FHEM Styles und CSS gekümmert habe, das war ein echter Krampf bis ich die Balken unten sauber auf einer Linie hatte weil in FHEM die Tabellen per default abgerundete Ecken haben. Die hellgraue Farbe der Balken passt jetzt nur zum DarkStyle.
sub SMA_Portal_G($)
{
my $name = shift;
my $i;
my @p;
my @r;
my @t;
my $t;
my $maxVal; # max Ertrag in den nächsten 24 Stunden
my $he; # Balkenhöhe
my $space = 1; # Platz zwischen den Balken
my $width = 24; # Breite der Balken , 24 max , 6 min
my $height = 200; # Höhe der Balken
my $fsize = 20; # Höhe für Font
my $color = "#7F7F7F"; # Farbe des Wertes , ggf dyn ermitteln aus Device WEB styleData cols.Header
#my $icon = "/fhem/images/default/10px-kreis-gruen.png";
my $icon = "/fhem/images/openautomation/light_light_dim_100.svg";
my (undef,undef,$h,undef,undef,undef,undef,undef,undef) = localtime(time);
my (undef,undef,$g,undef,undef,undef,undef,undef,undef) = gmtime(time);
my $td = $h-$g; # Zeitversatz zwischen jetzt + Sommer/Winterzeit und GMT
# Sonderfall aktuelle Stunde
$p[0] = ReadingsNum($name,"L2_ThisHour_PvMeanPower",0);
$r[0] = (ReadingsVal($name,"L2_ThisHour_IsConsumptionRecommended",'no') eq 'yes' ) ? $icon : undef;
(undef,undef,undef,$t) = ReadingsVal($name,"L2_ThisHour_Time",'0') =~ m!(\d{4})-(\d{2})-(\d{2})\s(\d{2})!;
$t = int($t-$td);
$t[0] = ($t < 0) ? $t+24 : $t;
$maxVal = $p[0]; # nehmen wir mal als Startwert
for ($i=1; $i<=23; $i++)
{
$p[$i] = ReadingsNum($name,"L4_NextHour".sprintf("%02d",$i)."_PvMeanPower",0);
$maxVal = ($p[$i] > $maxVal) ? $p[$i] : $maxVal;
$r[$i] = (ReadingsVal($name,"L4_NextHour".sprintf("%02d",$i)."_IsConsumptionRecommended",'no') eq 'yes') ? $icon : undef;
(undef,undef,undef,$t) = ReadingsVal($name,"L4_NextHour".sprintf("%02d",$i)."_Time",'0') =~ m!(\d{4})-(\d{2})-(\d{2})\s(\d{2})!;
$t = int($t-$td);
$t[$i] = ($t < 0) ? $t+24 : $t;
}
my $html = "<html><table><tr>
<td colspan='24'> Prognose der nächsten 4 h: ".ReadingsNum($name,"L2_Next04Hours-PV",0)." Wh / Rest des Tages: ".ReadingsNum($name,"L3_RestOfDay-PV",0)." Wh / Morgen: ".ReadingsNum($name,"L3_Tomorrow-PV",0)." Wh</td></tr><tr style='height:".$height."px;'>";
for ($i=0; $i<=23; $i++)
{
$he = int(($maxVal-$p[$i])/$maxVal*$height) + $fsize;
$space = ($p[$i]) ? 1 : 0;
$width = ($p[$i]) ? 24 : 6;
$p[$i] = " " if (!$p[$i]); # keine Anzeige bei Null
$html .= "<td style='width:".$width."px; height:".($height+$fsize)."px; padding-right:".$space."px; padding-left:".$space."px'>
<table>
<tr style='height:".$he."px'><td style='vertical-align:bottom'>".$p[$i]."</td></tr>";
if ($he < ($height+$fsize))
{
$html .= "<tr style='height:".($height+20-$he)."px;'><td style='background-color:".$color."; padding-bottom:0px; padding-top:1px; vertical-align:top'>";
$html .="<img src='".$r[$i]."' height='".$fsize."'/>" if (defined($r[$i]));
$html .="</td></tr>";
}
$html .= "<tr><td>".$t[$i]."</td></tr>";
$html .= "</table></td>";
}
$html .= "</tr></table></html>";
return $html;
}
Guten Tag zusammen,
hey eure schönen Bildchen haben mich heute auch mal dazu bewegt SMAPortal zu integrieren.
Danke für die tolle Arbeit. Wzuts Design gefällt mir richtig gut, da es prima zum darkstyle passt.
Aktuell vermisse ich zwei Readings die ich zuvor genutzt habe, hast Du die mit Absicht weggelassen Heiko?
- Forecast-Today-PV
- Forecast-Today-Consumption
Grüße Marcel
Hallo ihr zwei,
danke Wzut :D
Gebe Marcel recht, dein Style ist echt super und gefällt mir natürlich ebenfalls sehr gut. Bin auch nicht so der HTML-CSS Fan und muss da immer viel recherchieren.
Vielelicht schaffe ich es noch vor meinem Urlaub schön zu integrieren, bin schon mitten in den Vorbereitungen ;)
@Marcel, habe nichts bewusst weggelassen. Ist mir dann bestimmt durchgerutscht. Das war sicher imm Forecastmodul ...
LG,
Heiko
Hallo Heiko,
genau im Forecast war es.
Vielleicht magst Du es mit aufnehmen, ich habe es mal quick and dirty erweitert. Die Readings könnten sicher vom Namen noch besser angepasst werden.
my $PV_sum = 0;
my $consum_sum = 0;
# Loop through all forecast objects
# Energie wird als "J" geliefert, Wh = J / 3600
foreach my $fc_obj (@{$forecast->{'ForecastSeries'}}) {
# Example for DateTime: 2016-02-15T23:00:00
my $fc_datetime = $fc_obj->{'TimeStamp'}->{'DateTime'};
# Calculate Unix timestamp (month begins at 0, year at 1900)
my ($fc_year, $fc_month, $fc_day, $fc_hour) = $fc_datetime =~ /^(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):00:00$/;
my $fc_uts = POSIX::mktime( 0, 0, $fc_hour, $fc_day, $fc_month - 1, $fc_year - 1900 );
my $fc_diff_seconds = $fc_uts - time + 3600; # So we go above 0 for the current hour
my $fc_diff_hours = int( $fc_diff_seconds / 3600 );
#MS - to keep known readings from former moduls, implementation of an integrator for daily PV and Consumption forecast
if ( $current_day == $fc_day ) {
$PV_sum += int($fc_obj->{'PvMeanPower'}->{'Amount'});
$consum_sum += int($fc_obj->{'ConsumptionForecast'}->{'Amount'}/3600);
}
# Don't use old data
next if $fc_diff_seconds < 0;
# Sum up for the next few hours (4 hours total, this is current hour plus the next 3 hours)
if ($obj_nr < 4) {
$nextFewHoursSum{'PV'} += $fc_obj->{'PvMeanPower'}->{'Amount'};
$nextFewHoursSum{'Consumption'} += $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600;
$nextFewHoursSum{'Total'} += $fc_obj->{'PvMeanPower'}->{'Amount'} - $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600;
$nextFewHoursSum{'ConsumpRcmd'} += $fc_obj->{'IsConsumptionRecommended'} ? 1 : 0;
}
# If data is for the rest of the current day
if ( $current_day == $fc_day ) {
$restOfDaySum{'PV'} += $fc_obj->{'PvMeanPower'}->{'Amount'};
$restOfDaySum{'Consumption'} += $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600;
$restOfDaySum{'Total'} += $fc_obj->{'PvMeanPower'}->{'Amount'} - $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600;
$restOfDaySum{'ConsumpRcmd'} += $fc_obj->{'IsConsumptionRecommended'} ? 1 : 0;
}
# If data is for the next day (quick and dirty: current day different from this object's day)
# Assuming only the current day and the next day are returned from Sunny Portal
if ( $current_day != $fc_day ) {
$tomorrowSum{'PV'} += $fc_obj->{'PvMeanPower'}->{'Amount'} if(exists($fc_obj->{'PvMeanPower'}->{'Amount'}));
$tomorrowSum{'Consumption'} += $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600;
$tomorrowSum{'Total'} += $fc_obj->{'PvMeanPower'}->{'Amount'} - $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600 if ($fc_obj->{'PvMeanPower'}->{'Amount'});
$tomorrowSum{'ConsumpRcmd'} += $fc_obj->{'IsConsumptionRecommended'} ? 1 : 0;
}
# Update values in Fhem if less than 24 hours in the future
if($dl >= 2) {
if ($obj_nr < 24) {
my $time_str = "ThisHour";
$time_str = "NextHour".sprintf("%02d", $obj_nr) if($fc_diff_hours>0);
if($time_str =~ /NextHour/ && $dl >= 4) {
readingsBulkUpdate( $hash, "L4_${time_str}_Time", UTC2LocalString($hash,$fc_obj->{'TimeStamp'}->{'DateTime'}) );
readingsBulkUpdate( $hash, "L4_${time_str}_PvMeanPower", int( $fc_obj->{'PvMeanPower'}->{'Amount'} ) );
readingsBulkUpdate( $hash, "L4_${time_str}_Consumption", int( $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600 ) );
readingsBulkUpdate( $hash, "L4_${time_str}_IsConsumptionRecommended", ($fc_obj->{'IsConsumptionRecommended'} ? "yes" : "no") );
readingsBulkUpdate( $hash, "L4_${time_str}", int( $fc_obj->{'PvMeanPower'}->{'Amount'} - $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600 ) );
}
if($time_str =~ /ThisHour/ && $dl >= 2) {
readingsBulkUpdate( $hash, "L2_${time_str}_Time", UTC2LocalString($hash,$fc_obj->{'TimeStamp'}->{'DateTime'}) );
readingsBulkUpdate( $hash, "L2_${time_str}_PvMeanPower", int( $fc_obj->{'PvMeanPower'}->{'Amount'} ) );
readingsBulkUpdate( $hash, "L2_${time_str}_Consumption", int( $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600 ) );
readingsBulkUpdate( $hash, "L2_${time_str}_IsConsumptionRecommended", ($fc_obj->{'IsConsumptionRecommended'} ? "yes" : "no") );
readingsBulkUpdate( $hash, "L2_${time_str}", int( $fc_obj->{'PvMeanPower'}->{'Amount'} - $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600 ) );
}
}
}
# Increment object counter
$obj_nr++;
}
#MS: publish integrated PV and consumption forecast values
readingsBulkUpdate($hash,"L1_Forecast-Today-Consumption", $consum_sum);
readingsBulkUpdate($hash,"L1_Forecast-Today-PV", $PV_sum);
Ergebnis passt!
Grüße Marcel
Ich habe den Dark-Style auch mit integriert, reines Copy+Paste ==> funktioniert.
Ich habe ein Attribut "portalAsHtml_Design" mit der Selektion default und dark angelegt, je nach Auswahl wird dann der WL generiert.
Ich habe es mir runtergeladen zur Integration, kannst die Datei wieder entfernen. :)
Gesagt getan - schönen Feiertag.
Mist, völlig übersehen, Du hattest die Variablendeklaration schon drin, allerdings wurden die nicht verwendet.
my $PV_sum = 0;
my $consum_sum = 0;
nur einmal deklarieren :(
Danke ... dir auch schönen Feiertag !
Zum Abschluss ein Screenshot. Like!
Habe mal gleich die anderen drei Module entsorgt ;D
eigentlich schön ( was soll ich auch anderes sagen ... ) aber warum ist bei dir die Glühbirne und die Stundenwerte nicht zentriert unter dem Balken ?
Mein Fehler oder deine Absicht ?
Hallo Wzut,
ist mir auch schon störend aufgefallen. Habe Deinen Code 1zu1 im Modul übernommen.
Muss ich mir noch mal ansehen. Definitiv keine Absicht.
Gruß Marcel
dann sollte man zur Sicherheit noch jedem TD entweder align="center" mitgeben oder style erweitern um text-align:center
Nehme ich mal mit auf Wzut. Habe den Style bei mir schon integriert. Muss aber noch etwas Hand anlegen weil ich auch eione Datumformatumschaltung drin habe, je nach global DE oder EN. Bei DE hat deine Grafik Fehler, aber das ist kein Problem, muss ich nur korrigieren.
@Wzut ...
ZitatLeider war das etwas mehr Aufwand, da die SMA Zeitwerte auf GMT basieren und sich durch unsere Zeitzone und Sommerzeit eine Verschiebung ergibt. ( z.Z 2 Stunden )
Verstehe ich grade nicht, weil ich in meiner bis dato aktuellen Version bereits eine Umrechnung UTC zu local time drin hatte und die Readings _Time bereits richtig waren. Dann entfällt nämlich die Rechnerei.
Hattest du evtl. nicht die aktuellste Version im Einsatz ?
Zitat von: DS_Starter am 30 April 2019, 19:15:52
Hattest du evtl. nicht die aktuellste Version im Einsatz ?
Natürlich nicht ... ich bin doch immer mit uralt Versionen unterwegs, aber umso besser dann kannst den Part ja komplett rauswerfen.
Hallo zusammen,
ich habe alles miteinander verheiratet und als V1.7.0 in mein contrib geladen.
Es gibt nun zwei Attribute mit denen man den Style und die Farbgebung über einen colorpicker auswählen kann.
Weil die Farbe kein spezifisches Merkmal mehr ist, habe ich die Styles in "default" und "modern" umbenannt.
* set <name> createPortalGraphic
Erstellt ein weblink-Device zur grafischen Anzeige der SMA Portal Prognosedaten. Das Attribut "detailLevel" muss auf den Level 4 gesetzt sein. Der Befehl setzt dieses Attribut automatisch auf den benötigten Wert.
Mit den Attributen "portalGraphicStyle" und "portalGraphicColor" können Erscheinungsbild und Farbgebung des erstellten Devices angepasst werden.
* portalGraphicColor <RGB-Code>
Definiert die Farbe der grafischen Darstellung von SMA Portal Prognosedaten. (siehe "set <name> createPortalGraphic")
* portalGraphicStyle <default | modern>
Wählt das Erscheinungsbild der grafischen Darstellung von SMA Portal Prognosedaten aus. (siehe "set <name> createPortalGraphic")
@Marcel, die fehlenden Readings gibt es nun mit im Level2.
Der Download des Moduls aus meinem contrib und danach restart:
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter (Downloadbutton benutzen)
LG,
Heiko
Hallo Heiko ,
Vielen Dank für deine Arbeit !
Mir ist der Sunny Home Manager 2.0 ja mehr oder weniger zugelaufen :-)
Leider habe ich aber keinen SMA Wechselrichter ... ich nutze einen Schüco Wechselrichter mit einem SolarLog500 .
Jetzt stelle ich mir gerade die Frage ob es Sinn macht bzw ob es möglich ist die Readings vom SolarLog500 ins SMAPortal zu schubsen ...
Dann hätte ich ja alles zusammen ....ist das möglich ?
ZitatDann hätte ich ja alles zusammen ....ist das möglich ?
Hmm, deinen Wunsch kann ich natürlich verstehen. Allerdings wüßte ich nicht wie das gehen soll.
Du müßtest quasi deinen SMA Home Manager dazu bringen mit dem Schüco Wechselrichter zu reden, wobei ich mir nicht vorstellen kann dass es funktioniert. Falls du das doch hinbekommen solltest, könntest du natürlich versuchen deinen SMA Home Manager im SMA Portal zu registrieren. Sofern dann dort Werte vorhanden sind, bekommt man sie mit dem Modul.
Das Modul holt sich die Daten aus dem Portal nicht vom Home Manager direkt !!!
Deswegen habe ich den Namen auch so gewählt damit man sofort daran erinnert wird.
Also ich glaube nicht dass dieses Vorhaben gelingt. Aber eine andere Frage ist natürlich ob es vielleicht ein Modul für den SolarLog500 gibt ? Das kann ich momentan nicht beantworten ... mußt mal googeln.
Dann gäbe es auch noch die Möglichkeit einen Eintrag in die Wunschliste (https://forum.fhem.de/index.php/board,35.0.html) zu setzen. Vielleicht findet sich ein Developer ...
LG,
Heiko
@Heiko, ich habe mir jetzt mal deine letzte Version aus dem svn gezogen. Hattest natürlich Recht damit das nun die Zeitstempel in den Readings direkt passen :)
Ich habe mir auch den HTML Quellcode mal angschaut, sieht ja aus als hättest du im wesentlichen meinen Code übernommen.
Allerdings stolperte ich zuerst daran das ich nur die Meldung "Awaiting level 4 Data" bekam :( obwohl die längst im Device vorlagen. Ich habe die Zeile jetzt einfach auskommentiert und habe die HTML Ausgabe. Werde jetzt nochmal genau suchen warum angeblich keine der beiden Level 2 Daten da sein soll.
Stichwort HTML : Deine Ausgabe ist mir persönlich noch zu nah an der Ur Version. Ich bin zwar ein beschissener Web Designer, aber wenn du magst
nehme ich mir den Abschnitt morgen mal vor unter diversen FHEM Styles. Ich denke man muss einfach mehr mit den vorhanden CSS Klassen arbeiten um die Ausgabe besser in das vorhandene Style Design zu bekommen. Bei der Gelegenheit, sollte man für die Glühbirne nicht vllt. ein Icon Attribut spendieren ?
Hi Wzut,
ZitatAllerdings stolperte ich zuerst daran das ich nur die Meldung "Awaiting level 4 Data" bekam :( obwohl die längst im Device vorlagen.
Ja, den Bug hatte ich vor ein paar Minuten auch entdeckt und gleich gefixt. Einfach nochmal aus dem contrib ziehen.
ZitatStichwort HTML : Deine Ausgabe ist mir persönlich noch zu nah an der Ur Version. Ich bin zwar ein beschissener Web Designer, aber wenn du magst
nehme ich mir den Abschnitt morgen mal vor unter diversen FHEM Styles. Ich denke man muss einfach mehr mit den vorhanden CSS Klassen arbeiten um die Ausgabe besser in das vorhandene Style Design zu bekommen. Bei der Gelegenheit, sollte man für die Glühbirne nicht vllt. ein Icon Attribut spendieren ?
Ja klar, schau es dir ruhig mal an. Die Idee mit dem Icon Attribut hatte ich auch und wollte es nach meinem Urlaub machen. :D Ich hatte heute auch schon angefangen zu experimentieren wie man das SVG-icon eingefärbt bekommt. Ich habe nämlich noch die Idee die eventuell vohandenen Readings "L3_xxxxx_Planned..." auszuwerten und dann zu den geplanten Zeiten die Gühbirne erstrahlen zu lassen. War mir aber nicht gelungen und ich musste mich erstmal der Gartenarbeit widmen ;)
LG
@Wzut,
ich habe es hinbekommen, dass die SVG's nun auch als solche verwendet werden, d.h. sie können eingefärbt werden. Momentan habe ich sie auf black gesetzt.
Nachteilig ist nun, dass sie größer als vorher sind, nämlich entsprechend dem CSS des Web-Styles. Aber das würde ja passen wenn wir ohnehin mehr die CSS Einstellungen verwenden wollen.
Ist als Version 1.7.1 im contrib. Zieh sie dir vorher nochmal wenn du dich morgen damit beschäftigen willst.
Grüße,
Heiko
Heiko , erstmal einen schönen Urlaub !
.... meine Daten von der Photovoltaik bekomme ich in Fhem , dachte eher an einen anderen Ansatz , diese Daten in das SMAPortal zu Mappen ,oder mit userreadings dahin zu bewegen ....
Aber das ist alles erstmal Nebensache ... Urlaub geht vor ...viel Spaß .
Zitatdachte eher an einen anderen Ansatz , diese Daten in das SMAPortal zu Mappen ,oder mit userreadings dahin zu bewegen ....
Achso ... na sowas kriegt man schon irgendwie hin :)
Danke für deine Wünsche ... geht bald los ... muss aber noch packen, wieder auf die letzte Minute ;)
LG,
Heiko
Zitat von: Wzut am 01 Mai 2019, 19:14:56
Deine Ausgabe ist mir persönlich noch zu nah an der Ur Version.
Ach ich Depp ... portalGraphicStyle = modern hätte ich wählen sollen !
So und nun schau zu das deine Koffer zu gehen und pack nicht zu viel rein, Übergepäck ist teuer :)
Jo mach ich :) ... bis denne Wzut !
Moin zusammen,
ein change request hätte ich noch.
Die neuen Readings :
- L2_Forecast-Today-Consumption
- L2_Forecast-Today-PV
werden nicht richtig versorgt.
Heiko, meines Erachtens nach, dürfen die ersten Werte für den Tag nicht verworfen werden. Was aber durch next if $fc_diff_seconds < 0;
passiert!
# Loop through all forecast objects
# Energie wird als "J" geliefert, Wh = J / 3600
foreach my $fc_obj (@{$forecast->{'ForecastSeries'}}) {
# Example for DateTime: 2016-02-15T23:00:00
my $fc_datetime = $fc_obj->{'TimeStamp'}->{'DateTime'};
# Calculate Unix timestamp (month begins at 0, year at 1900)
my ($fc_year, $fc_month, $fc_day, $fc_hour) = $fc_datetime =~ /^(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):00:00$/;
my $fc_uts = POSIX::mktime( 0, 0, $fc_hour, $fc_day, $fc_month - 1, $fc_year - 1900 );
my $fc_diff_seconds = $fc_uts - time + 3600; # So we go above 0 for the current hour
my $fc_diff_hours = int( $fc_diff_seconds / 3600 );
# Use also old data to integrate daily PV and Consumption
if ( $current_day == $fc_day ) {
$PV_sum += int($fc_obj->{'PvMeanPower'}->{'Amount'}); # integrator of daily PV
$consum_sum += int($fc_obj->{'ConsumptionForecast'}->{'Amount'}/3600); # integrator of daily Consumption forecast
}
# Don't use old data
next if $fc_diff_seconds < 0;
# Sum up for the next few hours (4 hours total, this is current hour plus the next 3 hours)
if ($obj_nr < 4) {
$nextFewHoursSum{'PV'} += $fc_obj->{'PvMeanPower'}->{'Amount'};
$nextFewHoursSum{'Consumption'} += $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600;
$nextFewHoursSum{'Total'} += $fc_obj->{'PvMeanPower'}->{'Amount'} - $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600;
$nextFewHoursSum{'ConsumpRcmd'} += $fc_obj->{'IsConsumptionRecommended'} ? 1 : 0;
}
# If data is for the rest of the current day
if ( $current_day == $fc_day ) {
$restOfDaySum{'PV'} += $fc_obj->{'PvMeanPower'}->{'Amount'};
$restOfDaySum{'Consumption'} += $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600;
$restOfDaySum{'Total'} += $fc_obj->{'PvMeanPower'}->{'Amount'} - $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600;
$restOfDaySum{'ConsumpRcmd'} += $fc_obj->{'IsConsumptionRecommended'} ? 1 : 0;
#$PV_sum += int($fc_obj->{'PvMeanPower'}->{'Amount'}); # integrator of daily PV
#$consum_sum += int($fc_obj->{'ConsumptionForecast'}->{'Amount'}/3600); # integrator of daily Consumption forecast
}
Siehe Kommentar "# Use also old data to integrate daily PV and Consumption" und entspreched an der Stelle entfernen wo Du summierst.
Optik der PortalGraphic ist in Bezug auf Ausrichtung und Localization nun richtig gut!
Danke für die ganze Arbeit und Dir Heiko, einen schönen Urlaub.
Viele Grüße
Marcel
Danke Marcel :)
Klar, den Change übernehme ich wenn ich wieder einsatzbereit bin ...
LG,
Heiko
Feature request Abstimmung für die PortalGraphic!?!
In den Readings sind mir, im Gegensatz zu den alten Modulen, nun auch meine Verbraucher, schaltbar über die SMA-BT Steckdosen aufgefallen. Was meint ihr, sollten wir die vielleicht nach Verbrauchsstart unten mit auf den Balken legen?
Konfiguration der Readingnames dann über ein attr?
Bin auf Eure Meinung gespannt....
L3_Spuelmaschine_Planned no
L3_Spuelmaschine_PlannedOpTimeBegin undefined
L3_Spuelmaschine_PlannedOpTimeEnd undefined
L3_Trockner_Planned no
L3_Trockner_PlannedOpTimeBegin undefined
L3_Trockner_PlannedOpTimeEnd undefined
L3_Waschmaschine_Planned yes
L3_Waschmaschine_PlannedOpTimeBegin 2019-05-02 10:30:00
L3_Waschmaschine_PlannedOpTimeEnd 2019-05-02 13:00:00
Grüße Marcel
Zitat von: Xguide am 02 Mai 2019, 09:27:33
Optik der PortalGraphic ist in Bezug auf Ausrichtung und Localization nun richtig gut!
Warte mal ab die wird noch besser :) Ich bin echt überrascht wie schön sich das auch anderen Styles darstellen lässt wenn man nur konsequent die bestehenden Klassen nutzt statt krampfhaft versucht es mit Gewalt zu formatieren.
ZitatWas meint ihr, sollten wir die vielleicht nach Verbrauchsstart unten mit auf den Balken legen?
Die Idee hatte ich auch schon, deswegen die Möglichkeit mit den einfärbbaren Icons. :) ... Also ja.
ZitatWarte mal ab die wird noch besser :)
Bin ganz gespannt auf dein Ergebnis 8)
Also der Versuch es jedem Style Recht zu machen ist eine Arbeit für jemand der Vater und Mutter erschlagen hat :(
Ich bin jetzt soweit das ich schöne Ausgaben bekomme mit Ausnahme bei ios12 und ios6
Wie schauts aus jemand Lust zu testen? So könnten wir die Zeit nutzen bis Heiko wieder aus dem Urlaub zurück ist.
Im Anhang ein Screenshot der zeigt wie sich die Ausgabe des Weblinks in die Ausrichtung des Devices einfügt.
Weblinks haben halt den Nachteil das sie immer unter den Devices aber vor den SVGs angezeigt werden.
Hi @Wzut,
Klar ! Teste gerne ein paar Styles ...
Parallel fummele ich gerade an einer Idee , wie ich meine aktuellen Photovoltaikdaten mit ins Modul bekomme 😂
Habe leider keinen SMA Wechselrichter ... aber einen SolarLog500 der die Photovoltaikproduktion ins Fhem loggt ...
Der Smart Home Manager 2 zeigt mir ,,nur" den Rest an ....da das aber sooo schick wird ,möchte ich das zusammen packen ...
Wzut , welcher Ansatz , wäre für mich am besten ? Im Sunnyportal Modul die Variable mit meinen des Solarlog ersetzen ,oder geht das eleganter ?
Hallo Zusammen,
danke an Heiko, Wzut und Marcel das Ihr meine Idee so positiv aufgenommen und erheblich schöner gestaltet habt.
Ich werde jetzt auch regelmässiger reinschauen und testen.
Beim "hausautomatisierung_com" Style sieht es gut aus, wenn PortalGraphic und das Model in der gleichen Group sich befinden.
Wenn nicht ist der Test über den Säulen weiß.
Gruß Sascha
@Aladin222, sorry aber da habe ich im Moment keinen Plan
Also denn : Ich hänge hier eine von mir modifizierte Version des 76_SMAPortal.pm Moduls an. Keine Ahnung was und was nicht Heiko später davon übernehmen wird,
oder eventuell doch ganz anders machen möchte. Meine Änderungen :
attr portalGraficStyle gelöscht !
attr portalGraficColor
Kann verwendet werden ist aber nicht zwingend. Ohne das Attribut werden für die Balken nur Farben aus dem jeweiligen Style verwendet.
Wenn jemand aber unabhängig davon gerne unbedingt rosa Balken möchte kann er diese sich mit dem Colorpicker festlegen.
attr portalGrafikIcon hinzugefügt -> bestimmt welches Icon und in welche Farbe die Glühbirne in den Balken haben soll.
Mögliche Werte : jeder in FHEM bekannte Icon Name , bei svg Icons kann noch die Wunschfarbe angegeben werden, Beispiel RPi@red wäre eine rote Himmbeere
attr portalGrapicHour hinzugefügt -> Werte 4- 24 default 24
Für manche Anwendungen/Styles ist die Darstellungen mit 24 Balken einfach zu breit. Mit dem Attribut lassen sich so ggf. auch weniger darstellen und so erheblich Platz einsparen. ( siehe Screenshot von mir heute Morgen Antwort #393 , Ausgabe von nur 12 Balken )
Ein Punkt hat mich bei Weblinks schon immer gestört, sie reihen sich auf einer Seite nicht sauber unter die normalen Geräte und ihnen fehlt der Name als Überschrift (ink Link zu den Eigenschaften). Das habe ich auch angepasst, siehe wieder der Screenshot von heute Morgen -> links oben das AAAA ist anklickbar. Um die Funktion zu aktivieren muss entweder der bestehende Weblink editiert werden oder einfach der alte gelöscht und neu angelegt werden. Im DEF wird zusätzlich der Name angehängt.
Beispiel alt
htmlCode {FHEM::SMAPortal::PortalAsHtml ("SMAP")}
neu
htmlCode {FHEM::SMAPortal::PortalAsHtml ("SMAP","AAAA")}
Wie ich bereits geschrieben habe finde ich die Darstellung in den beiden ios Styles nicht so gelungen, das liegt aber IMHO einfach am jeweiligen Style selbst der den Weblink unnötig in die Breite zieht. OK, sind die Darstellungen bei dark, f18, bright , default und ios7
Solltet ihr noch andere FHEM Styles nutzen wie der oben genannte hausautomatisierung_com Styl, so benötige ich die Angabe einer Bezugsquelle zum Testen.
Edit :
@saschab, den hausautomatisierung_com Style habe ich inzwischen gefunden. Den Weblink in eine Gruppe zu packen ist eine gute Idee und macht die Darstellung bei dieser Art Style etwas besser.
Edit 2 : siehe letzte Version Antwort #423
Guten Morgen zusammen!
@Aladin, Deine Konfiguration ist mir gerade nicht ganz klar! Was genau liefert Dir Dein SHM2 und was fehlt? Wäre es nicht eine Möglichkeit die fehlenden Readings über usrreadings zu definieren und von den anderen Devices (Solar Log) abzuholen? In der Portal Graphic werden m.W.n. doch nur Vorhersagewerte benutzt, stehen die bei Dir zur Verfügung?Vielleicht kannst du mal ein List vom sunnyPortal und vom SolarLog Device schicken.
@Wzut, bin leider noch nicht zum Testen Deiner Änderungen gekommen, werde ich aber hoffentlich heute Abend schaffen. IMHO ist es schirr unmöglich allen Styles, vorallem den unbekannten gerecht zu werden. Eine Kompatibilität zu den fhem Standards sollte doch völlig ausreichend sein, oder? Die externen Styles müssten dann vom Ersteller gepflegt/ergänzt werden.
Ich hatte mich neulich mal kurz, wie oben schon erwähnt, mit dem Auslesen der Verbraucher (SMA BT-Steckdosen) beschäftigt. Bin dann aber leider an meine Perl-Grenzen gestossen und habe es erstmal beiseite gelegt. :(
Was ich bisher gemacht habe:
Ein attr agelegt, das kommagetrennte Devicenamen entgegen nimmt (Waschmaschine,Trockner,Spuelmaschine).
Diese werden in einer foreach ausgewertet und nach "Planned = yes" gepüft. Wenn eine geplante Aktivität gefunden wird, möchte ich mir diese in einem Array speichern und mit Start und End-Stunde versehen.
Kann mir jemand kurz die Verwendung von Mehrdimensionalen Arrays an einem Bsp. näher bringen? Sonst packe ich die aktiven Verbraucher in ein eindimensionales String-Array und Splitte bei Bedarf.
Kurzer code snip:
my @pgcDevices = split ',', AttrVal($name, "portalGraphicsConsumers", "");
foreach my $item (@pgcDevices) {
#trim it
$item =~ s/^\s+|\s+$//g;
#extend raw device name to planned reading name
my $tmpItem = "L3_".$item."_Planned";
my $tmpItemPlanned = ReadingsVal($name, $pgCDevice, "no");
#check if listed device is planed
if ($tmpItemPlanned eq "yes") {
#get start and end hour
my $start = 0;
my $end = 0;
(undef,undef,undef,$start) = ReadingsVal($name,"L3_".$item."_PlannedOpTimeBegin",'0') =~ m/(\d{4})-(\d{2})-(\d{2})\s(\d{2})/;
(undef,undef,undef,$end) = ReadingsVal($name,"L3_".$item."_PlannedOpTimeEnd",'0') =~ m/(\d{4})-(\d{2})-(\d{2})\s(\d{2})/;
$start -= $t{0};
$end -= $t{0};
#jetzt wegschreiben
#$item | $start | $ stop
}
}
Grüße Marcel
@Wzut
der Style kann hier heruntergeladen werden: https://github.com/klein0r/fhem-style-haus-automatisierung (https://github.com/klein0r/fhem-style-haus-automatisierung)
Gruß Sascha
@Xguide ,
erstmal ein Danke für die Hilfe und ein List vom SHM:
Internals:
CFGFN /opt/fhem/FHEM/05_Sonnenstrom.cfg
CREDENTIALS Set
FUUID 5cbe87a9-f33f-9117-05b5-fbffa27f61ed95bf
FVERSION 76_SMAPortal.pm:v1.7.1-s00000/2019-03-14 TESTING
MODE Automatic - next polltime: 14:21:54
NAME Sonnenstrom
NR 727
STATE 181 W W (+ ToGrid, - FromGrid) / PV-Prognose der nächsten 4 Stunden: 4808 Wh
TYPE SMAPortal
HELPER:
CREDENTIALS T[}n]Im~NmI~WJHzb3<}QsUnPvGqe\7kOkNz
PACKAGE FHEM::SMAPortal
RETRIES 3
VERSION 1.7.1
oldlogintime 1557057714.64648
Helper:
DBLOG:
L1_AutarkyQuote:
DBLogging:
TIME 1557058614.92173
VALUE 0
L1_FeedIn:
DBLogging:
TIME 1557058614.92173
VALUE 181
L1_GridConsumption:
DBLogging:
TIME 1557058614.92173
VALUE 0
L1_PV:
DBLogging:
TIME 1557058614.92173
VALUE 0
L1_SelfConsumption:
DBLogging:
TIME 1557058614.92173
VALUE 0
L1_SelfConsumptionQuote:
DBLogging:
TIME 1557058614.92173
VALUE 0
L1_SelfSupply:
DBLogging:
TIME 1557058614.92173
VALUE 0
L1_TotalConsumption:
DBLogging:
TIME 1557057715.20596
VALUE 200
state:
DBLogging:
TIME 1557058614.93433
VALUE ok
OLDREADINGS:
READINGS:
2019-05-05 14:16:54 L1_AutarkyQuote 0
2019-05-05 14:16:54 L1_FeedIn 181
2019-05-05 14:16:54 L1_GridConsumption 0
2019-05-05 14:01:54 L1_Login-Status successful
2019-05-05 14:16:54 L1_PV 0
2019-05-05 14:16:54 L1_SelfConsumption 0
2019-05-05 14:16:54 L1_SelfConsumptionQuote 0
2019-05-05 14:16:54 L1_SelfSupply 0
2019-05-05 14:01:55 L1_TotalConsumption 200
2019-05-05 14:16:54 L1_today_Temperature 11.1 °C
2019-05-05 14:16:54 L1_today_WeatherDescription Heavy cloud or overcast
2019-05-05 14:16:54 L1_tomorrow_Temperature 11.1 °C
2019-05-05 14:16:54 L1_tomorrow_WeatherDescription Heavy cloud or overcast
2019-05-05 14:16:54 L2_Forecast-Today-Consumption 7241
2019-05-05 14:16:54 L2_Forecast-Today-PV 5591
2019-05-05 14:16:54 L2_Next04Hours-Consumption 2342
2019-05-05 14:16:54 L2_Next04Hours-IsConsumptionRecommended 1
2019-05-05 14:16:54 L2_Next04Hours-PV 4808
2019-05-05 14:16:54 L2_Next04Hours-Total 2466
2019-05-05 14:16:54 L2_PlantPeakPower 3010 W
2019-05-05 14:16:54 L2_ThisHour 1114
2019-05-05 14:16:54 L2_ThisHour_Consumption 297
2019-05-05 14:16:54 L2_ThisHour_IsConsumptionRecommended yes
2019-05-05 14:16:54 L2_ThisHour_PvMeanPower 1411
2019-05-05 14:16:54 L2_ThisHour_Time 05.05.2019 14:00:00
2019-05-05 14:16:54 L3_RestOfDay-Consumption 7245
2019-05-05 14:16:54 L3_RestOfDay-IsConsumptionRecommended 1
2019-05-05 14:16:54 L3_RestOfDay-PV 5594
2019-05-05 14:16:54 L3_RestOfDay-Total -1651
2019-05-05 14:16:54 L3_Tomorrow-Consumption 13792
2019-05-05 14:16:54 L3_Tomorrow-IsConsumptionRecommended 1
2019-05-05 14:16:54 L3_Tomorrow-PV 9933
2019-05-05 14:16:54 L3_Tomorrow-Total 792
2019-05-05 14:16:54 L4_NextHour01 672
2019-05-05 14:16:54 L4_NextHour01_Consumption 657
2019-05-05 14:16:54 L4_NextHour01_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour01_PvMeanPower 1330
2019-05-05 14:16:54 L4_NextHour01_Time 05.05.2019 15:00:00
2019-05-05 14:16:54 L4_NextHour02 248
2019-05-05 14:16:54 L4_NextHour02_Consumption 920
2019-05-05 14:16:54 L4_NextHour02_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour02_PvMeanPower 1168
2019-05-05 14:16:54 L4_NextHour02_Time 05.05.2019 16:00:00
2019-05-05 14:16:54 L4_NextHour03 430
2019-05-05 14:16:54 L4_NextHour03_Consumption 467
2019-05-05 14:16:54 L4_NextHour03_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour03_PvMeanPower 898
2019-05-05 14:16:54 L4_NextHour03_Time 05.05.2019 17:00:00
2019-05-05 14:16:54 L4_NextHour04 -377
2019-05-05 14:16:54 L4_NextHour04_Consumption 925
2019-05-05 14:16:54 L4_NextHour04_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour04_PvMeanPower 548
2019-05-05 14:16:54 L4_NextHour04_Time 05.05.2019 18:00:00
2019-05-05 14:16:54 L4_NextHour05 -1060
2019-05-05 14:16:54 L4_NextHour05_Consumption 1261
2019-05-05 14:16:54 L4_NextHour05_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour05_PvMeanPower 201
2019-05-05 14:16:54 L4_NextHour05_Time 05.05.2019 19:00:00
2019-05-05 14:16:54 L4_NextHour06 -731
2019-05-05 14:16:54 L4_NextHour06_Consumption 767
2019-05-05 14:16:54 L4_NextHour06_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour06_PvMeanPower 35
2019-05-05 14:16:54 L4_NextHour06_Time 05.05.2019 20:00:00
2019-05-05 14:16:54 L4_NextHour07 -718
2019-05-05 14:16:54 L4_NextHour07_Consumption 718
2019-05-05 14:16:54 L4_NextHour07_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour07_PvMeanPower 0
2019-05-05 14:16:54 L4_NextHour07_Time 05.05.2019 21:00:00
2019-05-05 14:16:54 L4_NextHour08 -687
2019-05-05 14:16:54 L4_NextHour08_Consumption 687
2019-05-05 14:16:54 L4_NextHour08_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour08_PvMeanPower 0
2019-05-05 14:16:54 L4_NextHour08_Time 05.05.2019 22:00:00
2019-05-05 14:16:54 L4_NextHour09 -542
2019-05-05 14:16:54 L4_NextHour09_Consumption 542
2019-05-05 14:16:54 L4_NextHour09_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour09_PvMeanPower 0
2019-05-05 14:16:54 L4_NextHour09_Time 05.05.2019 23:00:00
2019-05-05 14:16:54 L4_NextHour10 -572
2019-05-05 14:16:54 L4_NextHour10_Consumption 572
2019-05-05 14:16:54 L4_NextHour10_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour10_PvMeanPower 0
2019-05-05 14:16:54 L4_NextHour10_Time 06.05.2019 00:00:00
2019-05-05 14:16:54 L4_NextHour11 -566
2019-05-05 14:16:54 L4_NextHour11_Consumption 566
2019-05-05 14:16:54 L4_NextHour11_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour11_PvMeanPower 0
2019-05-05 14:16:54 L4_NextHour11_Time 06.05.2019 01:00:00
2019-05-05 14:16:54 L4_NextHour12 -408
2019-05-05 14:16:54 L4_NextHour12_Consumption 408
2019-05-05 14:16:54 L4_NextHour12_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour12_PvMeanPower 0
2019-05-05 14:16:54 L4_NextHour12_Time 06.05.2019 02:00:00
2019-05-05 14:16:54 L4_NextHour13 -382
2019-05-05 14:16:54 L4_NextHour13_Consumption 382
2019-05-05 14:16:54 L4_NextHour13_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour13_PvMeanPower 0
2019-05-05 14:16:54 L4_NextHour13_Time 06.05.2019 03:00:00
2019-05-05 14:16:54 L4_NextHour14 -375
2019-05-05 14:16:54 L4_NextHour14_Consumption 375
2019-05-05 14:16:54 L4_NextHour14_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour14_PvMeanPower 0
2019-05-05 14:16:54 L4_NextHour14_Time 06.05.2019 04:00:00
2019-05-05 14:16:54 L4_NextHour15 -396
2019-05-05 14:16:54 L4_NextHour15_Consumption 396
2019-05-05 14:16:54 L4_NextHour15_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour15_PvMeanPower 0
2019-05-05 14:16:54 L4_NextHour15_Time 06.05.2019 05:00:00
2019-05-05 14:16:54 L4_NextHour16 -393
2019-05-05 14:16:54 L4_NextHour16_Consumption 432
2019-05-05 14:16:54 L4_NextHour16_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour16_PvMeanPower 38
2019-05-05 14:16:54 L4_NextHour16_Time 06.05.2019 06:00:00
2019-05-05 14:16:54 L4_NextHour17 -236
2019-05-05 14:16:54 L4_NextHour17_Consumption 431
2019-05-05 14:16:54 L4_NextHour17_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour17_PvMeanPower 194
2019-05-05 14:16:54 L4_NextHour17_Time 06.05.2019 07:00:00
2019-05-05 14:16:54 L4_NextHour18 -52
2019-05-05 14:16:54 L4_NextHour18_Consumption 546
2019-05-05 14:16:54 L4_NextHour18_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour18_PvMeanPower 494
2019-05-05 14:16:54 L4_NextHour18_Time 06.05.2019 08:00:00
2019-05-05 14:16:54 L4_NextHour19 388
2019-05-05 14:16:54 L4_NextHour19_Consumption 419
2019-05-05 14:16:54 L4_NextHour19_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour19_PvMeanPower 808
2019-05-05 14:16:54 L4_NextHour19_Time 06.05.2019 09:00:00
2019-05-05 14:16:54 L4_NextHour20 553
2019-05-05 14:16:54 L4_NextHour20_Consumption 553
2019-05-05 14:16:54 L4_NextHour20_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour20_PvMeanPower 1106
2019-05-05 14:16:54 L4_NextHour20_Time 06.05.2019 10:00:00
2019-05-05 14:16:54 L4_NextHour21 728
2019-05-05 14:16:54 L4_NextHour21_Consumption 559
2019-05-05 14:16:54 L4_NextHour21_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour21_PvMeanPower 1288
2019-05-05 14:16:54 L4_NextHour21_Time 06.05.2019 11:00:00
2019-05-05 14:16:54 L4_NextHour22 947
2019-05-05 14:16:54 L4_NextHour22_Consumption 367
2019-05-05 14:16:54 L4_NextHour22_IsConsumptionRecommended yes
2019-05-05 14:16:54 L4_NextHour22_PvMeanPower 1315
2019-05-05 14:16:54 L4_NextHour22_Time 06.05.2019 12:00:00
2019-05-05 14:16:54 L4_NextHour23 770
2019-05-05 14:16:54 L4_NextHour23_Consumption 493
2019-05-05 14:16:54 L4_NextHour23_IsConsumptionRecommended no
2019-05-05 14:16:54 L4_NextHour23_PvMeanPower 1263
2019-05-05 14:16:54 L4_NextHour23_Time 06.05.2019 13:00:00
2019-05-05 14:16:54 next04hours_state 4808
2019-05-05 14:16:54 state ok
2019-05-05 14:16:54 summary 181 W
Attributes:
cookieLocation ./log/cookies.txt
cookielifetime 3000
detailLevel 4
disable 0
event-on-update-reading state,L1_FeedIn,L1_PV,L1_SelfSupply,L1_SelfConsumption,L1_SelfConsumptionQuote,L1_TotalConsumption,L1_GridConsumption,L1_AutarkyQuote
group Sunny Home Manager
interval 300
portalGraphicStyle default
room Solar
stateFormat { ReadingsVal("$name","state", "") eq "disabled" ? ReadingsVal("$name","state", "") : ReadingsVal("$name","summary", 0)." W (+ ToGrid, - FromGrid) / PV-Prognose der nächsten 4 Stunden: ".ReadingsVal("$name","next04hours_state", 0)." Wh" }
timeout 200
verbose 3
Für die Daten der Photovoltaikanlage nutze ich einen SolarLog500 und bekomme über Modbus folgende Werte :
list solarlog_dailyyield :
Internals:
CFGFN /opt/fhem/FHEM/80_Solar.cfg
DEF 0 3508
FUUID 5c462d36-f33f-9117-ad97-dfcc929b5d53fd48
IODev SolarLogServer
LASTInputDev SolarLogServer
MSGCNT 2876
ModbusRegister_lastRcv 2019-05-05 14:23:42
NAME solarlog_dailyyield
NR 1612
NTFY_ORDER 50-solarlog_dailyyield
STATE 8.17
SolarLogServer_MSGCNT 2876
SolarLogServer_TIME 2019-05-05 14:23:42
TYPE ModbusRegister
lastUpdate Sun May 5 14:23:39 2019
nextUpdate Sun May 5 14:24:42 2019
READINGS:
2019-05-05 14:23:42 RAW 1fee0000
2019-05-05 14:23:42 state 8.174
helper:
addr 3 0 3508
address 3508
disableRegisterMapping 0
lastUpdate 0
nextUpdate 1557059082.24391
nread 2
readCmd
�
register 3508
registerType 3
unitId 0
updateIntervall 60
cnv:
a 0.001
b 0
max 65.535
min 0
step 0.1
Attributes:
DbLogExclude .*
IODev SolarLogServer
conversion 0.001:0
event-on-change-reading .*
plcDataType DWORD
room Solar
stateFormat {sprintf("%0.2f", ReadingsVal($name,"state",0))}
updateInterval 60
list solarlog_monthlyyield
Internals:
CFGFN /opt/fhem/FHEM/80_Solar.cfg
DEF 0 3512
FUUID 5c462d36-f33f-9117-ad24-ae553342d2c2f1b3
IODev SolarLogServer
LASTInputDev SolarLogServer
MSGCNT 50
ModbusRegister_lastRcv 2019-05-05 13:59:23
NAME solarlog_monthlyyield
NR 1618
NTFY_ORDER 50-solarlog_monthlyyield
STATE 43.18
SolarLogServer_MSGCNT 50
SolarLogServer_TIME 2019-05-05 13:59:23
TYPE ModbusRegister
lastUpdate Sun May 5 13:59:23 2019
nextUpdate Sun May 5 14:59:23 2019
READINGS:
2019-05-05 13:59:23 RAW a8ac0000
2019-05-05 13:59:23 state 43.18
helper:
addr 3 0 3512
address 3512
disableRegisterMapping 0
lastUpdate 0
nextUpdate 1557061163.96091
nread 2
readCmd
�
register 3512
registerType 3
unitId 0
updateIntervall 3600
cnv:
a 0.001
b 0
max 65.535
min 0
step 0.1
Attributes:
DbLogExclude .*
IODev SolarLogServer
conversion 0.001:0
event-on-change-reading .*
plcDataType DWORD
room Solar
stateFormat {sprintf("%0.2f", ReadingsVal($name,"state",0))}
updateInterval 3600
list solarlog_totalpac
Internals:
CFGFN /opt/fhem/FHEM/80_Solar.cfg
CHANGED
DEF 0 3502
FUUID 5c462d36-f33f-9117-d6d5-a95957b282e12818
IODev SolarLogServer
LASTInputDev SolarLogServer
MSGCNT 343740
ModbusRegister_lastRcv 2019-05-05 14:26:28
NAME solarlog_totalpac
NR 1606
NTFY_ORDER 50-solarlog_totalpac
STATE 2714
SolarLogServer_MSGCNT 343740
SolarLogServer_TIME 2019-05-05 14:26:28
TYPE ModbusRegister
lastUpdate Sun May 5 14:26:27 2019
nextUpdate Sun May 5 14:26:28 2019
READINGS:
2019-05-05 14:26:28 RAW 0a9a
2019-05-05 14:26:28 state 2714
helper:
addr 3 0 3502
address 3502
disableRegisterMapping 0
lastUpdate 0
nextUpdate 1557059188.46199
nread 1
readCmd
�
register 3502
registerType 3
unitId 0
updateIntervall 0.1
cnv:
a 1
b 0
max 65535
min 0
step 100
Attributes:
DbLogExclude .*
IODev SolarLogServer
event-on-change-reading .*
room Solar
list solarlog_yearlyyield :
Internals:
CFGFN /opt/fhem/FHEM/80_Solar.cfg
DEF 0 3514
FUUID 5c462d36-f33f-9117-65f7-031bbffedefe0b36
IODev SolarLogServer
LASTInputDev SolarLogServer
MSGCNT 51
ModbusRegister_lastRcv 2019-05-05 14:00:00
NAME solarlog_yearlyyield
NR 1624
NTFY_ORDER 50-solarlog_yearlyyield
STATE 384.48
SolarLogServer_MSGCNT 51
SolarLogServer_TIME 2019-05-05 14:00:00
TYPE ModbusRegister
lastUpdate Sun May 5 14:00:00 2019
nextUpdate Sun May 5 15:00:00 2019
READINGS:
2019-05-05 14:00:00 RAW dddb0005
2019-05-05 14:00:00 state 384.475
helper:
addr 3 0 3514
address 3514
alignUpdateInterval 3600
disableRegisterMapping 0
lastUpdate 0
nextUpdate 1557061200
nread 2
readCmd
�
register 3514
registerType 3
unitId 0
updateIntervall 3600
cnv:
a 0.001
b 0
max 65.535
min 0
step 0.1
Attributes:
DbLogExclude .*
IODev SolarLogServer
alignUpdateInterval 01:00:00
conversion 0.001:0
event-on-change-reading .*
plcDataType DWORD
registerType Holding
room Solar
stateFormat {sprintf("%0.2f", ReadingsVal($name,"state",0))}
updateInterval 01:00:00
list solarlog_yesterdayyield :
Internals:
CFGFN /opt/fhem/FHEM/80_Solar.cfg
DEF 0 3510
FUUID 5c462d36-f33f-9117-6af3-77cf00a713379be9
IODev SolarLogServer
LASTInputDev SolarLogServer
MSGCNT 2
ModbusRegister_lastRcv 2019-05-05 08:00:00
NAME solarlog_yesterdayyield
NR 1600
NTFY_ORDER 50-solarlog_yesterdayyield
STATE 9.87
SolarLogServer_MSGCNT 2
SolarLogServer_TIME 2019-05-05 08:00:00
TYPE ModbusRegister
lastUpdate Sun May 5 08:00:00 2019
nextUpdate Mon May 6 08:00:00 2019
READINGS:
2019-05-05 08:00:00 RAW 268f0000
2019-05-05 08:00:00 state 9.871
helper:
addr 3 0 3510
address 3510
alignUpdateInterval 28800
disableRegisterMapping 0
lastUpdate 0
nextUpdate 1557122400
nread 2
readCmd
�
register 3510
registerType 3
unitId 0
updateIntervall 86400
cnv:
a 0.001
b 0
max 65.535
min 0
step 0.1
Attributes:
DbLogExclude .*
IODev SolarLogServer
alignUpdateInterval 08:00:00
conversion 0.001:0
event-on-change-reading .*
plcDataType DWORD
registerType Holding
room Solar
stateFormat {sprintf("%0.2f", ReadingsVal($name,"state",0))}
updateInterval 24:00:00
Zitat von: Xguide am 05 Mai 2019, 11:45:02
Kann mir jemand kurz die Verwendung von Mehrdimensionalen Arrays an einem Bsp. näher bringen? Sonst packe ich die aktiven Verbraucher in ein eindimensionales String-Array und Splitte bei Bedarf.
Gibt es hunderfach im Netz und de erklären das alle besser als ich es könnte. Aber: keep it simple !
Was spricht gegen einen langen String mit zwei unterschiedlichen Trennzeichen den du dir wieder passend zerlegst ?
$var .= $item."|". $start."|." $stop.'#";
BTW : Morgen habe ich ein Update für euch, damit geht noch wesentlich mehr als bisher :)
@Wzut, so mache ich es! Hoffe ich finde später noch den Weg Richtung Schreibtisch.
@Aladin, die Readings sind ja schon sehr komplett. Was genau fehlt Dir jetzt und für was? PV, Autarkie, SelfConsumption
Gruß Marcel
Schreibtisch gefunden und die Funktion fertiggestellt.
Designtechnisch bin ich bei HTML eine Niete und es müsste noch besser integriert werden.
Wollte mal generell hören ob so etwas hilfreich wäre?
Die Einschaltzeiten sind gerade fix gesetzt, da beim Testen kein Verbrauch geplant war. Deswegen fallen sie auch in den Bereich wo keine Verbrauchsempfehlung vorliegt. Kein Fehler!
Habe die Stellen an denen ich geändert habe alle kenntlich gemacht, bis auf das Anlegen des attr . @Wzut, vielleicht kannst du damit ja auch in Deinem Design was anfangen und nimmst es mit auf :-)
###############################################################################
# Subroutine für WebLink-Device
###############################################################################
sub PortalAsHtml ($) {
my ($name) = @_;
my $hash = $defs{$name};
my $ret = "";
my ($i,$header,$icon);
my (%pv,%is,%t);
return "Device \"$name\" doesn't exist !" if(!$hash);
if(AttrVal($name, "detailLevel", 1) != 4) {
return "The attribute \"detailLevel\" of device \"$name\" has to be set to level \"4\" !";
}
# Stylewerte
my $maxVal; # max Ertrag in den nächsten 24 Stunden
my $he; # Balkenhöhe
my $space = 1; # Platz zwischen den Balken
my $width = 24; # Breite der Balken , 24 max , 6 min
my $height = 200; # Höhe der Balken
my $fsize = 20; # Höhe für Font
my $color1 = "#FFFFFF"; # Farbwert 1
my $colorv = "#".AttrVal($name, "portalGraphicColor", "7F7F7F"); # Farbe des Wertes , ggf dyn ermitteln aus Device WEB styleData cols.Header (original grün -> "#4B9C8A")
# Icon Erstellung, mit @<Farbe> ergänzen falls einfärben
# Beispiel mit Farbe: $icon = FW_makeImage('light_light_dim_100.svg@green');
$icon = FW_makeImage('light_light_dim_100.svg@black');
my $pv4h = ReadingsNum($name,"L2_Next04Hours-PV", "");
my $pvRe = ReadingsNum($name,"L3_RestOfDay-PV", "");
my $pvTo = ReadingsNum($name,"L3_Tomorrow-PV", "");
# Headerzeile generieren
my $alias = AttrVal($name, "alias", "SMA Portal"); # Linktext als Aliasname oder "SMA Portal"
my $dlink = "<a href=\"/fhem?detail=$name\">$alias</a>";
if(AttrVal("global","language","EN") eq "DE") {
$header = "$dlink Prognosedaten - nächste 4 Stunden: $pv4h Wh / Rest des Tages: $pvRe Wh / Morgen: $pvTo Wh";
} else {
$header = "$dlink forecast data - next 4 hours: $pv4h Wh / rest of day: $pvRe Wh / tomorrow: $pvTo Wh";
}
# Werte aktuelle Stunde
$pv{0} = ReadingsNum($name,"L2_ThisHour_PvMeanPower", undef);
$is{0} = (ReadingsVal($name,"L2_ThisHour_IsConsumptionRecommended",'no') eq 'yes' ) ? $icon : undef;
return "Awaiting level 4 data ... " if(!defined $pv{0});
if(AttrVal("global","language","EN") eq "DE") {
(undef,undef,undef,$t{0}) = ReadingsVal($name,"L2_ThisHour_Time",'0') =~ m/(\d{2}).(\d{2}).(\d{4})\s(\d{2})/;
} else {
(undef,undef,undef,$t{0}) = ReadingsVal($name,"L2_ThisHour_Time",'0') =~ m/(\d{4})-(\d{2})-(\d{2})\s(\d{2})/;
}
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#MS: get consumer list and disply it in portalGraphics
#Consumers needs to be defied with the real SMA name comma seperated via the attribute portalGraphicsConsumers ("Trockner,Waschmaschine")
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
my @pgCDev = split(',', AttrVal($name, "portalGraphicsConsumers", ""));
my @colors = ("firebrick", "steelblue", "darkolivegreen ", "yellow", "gray", "black", "red", "blue");
my $colorIndex = 0;
foreach my $item (@pgCDev) {
$item =~ s/^\s+|\s+$//g; #trim it, if blanks were used
#check if listed device is planned if not, set it to undef
if (ReadingsVal($name, "L3_".$item."_Planned", "no") eq "yes") {
#get start and end hour
my $start = -1;
my $end = -1;
(undef,undef,undef,$start) = ReadingsVal($name,"L3_".$item."_PlannedOpTimeBegin",'0') =~ m/(\d{4})-(\d{2})-(\d{2})\s(\d{2})/;
(undef,undef,undef,$end) = ReadingsVal($name,"L3_".$item."_PlannedOpTimeEnd",'0') =~ m/(\d{4})-(\d{2})-(\d{2})\s(\d{2})/;
#correct the hour for accurate display
if ($start > $t{0}) {
$start = 23-$t{0}+$start;
}else{
$start -= $t{0};
}
if ($end > $t{0}) {
$end = 23-$t{0}+$end;
}else{
$end -= $t{0};
}
$item = $item.",".$start.",".$end.",".$colors[$colorIndex];
$colorIndex += 1;
}else {
$item = undef;
}
}
#create some Testdata
$pgCDev[0] = "Trockner,15,18".",".$colors[0]; #should be 12 - 14
$pgCDev[1] = "Waschmaschine,18,20".",".$colors[1];
$pgCDev[2] = "Spuelmaschine,17,21".",".$colors[2];
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#/MS
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Style-Auswahl
if(AttrVal($name, "portalGraphicStyle", "default") eq "modern") {
# modern Style
$maxVal = $pv{0}; # nehmen wir mal als Startwert
foreach $i (1..23) {
$pv{$i} = ReadingsNum($name,"L4_NextHour".sprintf("%02d",$i)."_PvMeanPower",0);
$maxVal = ($pv{$i} > $maxVal) ? $pv{$i} : $maxVal;
$is{$i} = (ReadingsVal($name,"L4_NextHour".sprintf("%02d",$i)."_IsConsumptionRecommended",'no') eq 'yes') ? $icon : undef;
if(AttrVal("global","language","EN") eq "DE") {
(undef,undef,undef,$t{$i}) = ReadingsVal($name,"L4_NextHour".sprintf("%02d",$i)."_Time",'0') =~ m/(\d{2}).(\d{2}).(\d{4})\s(\d{2})/;
} else {
(undef,undef,undef,$t{$i}) = ReadingsVal($name,"L4_NextHour".sprintf("%02d",$i)."_Time",'0') =~ m/(\d{4})-(\d{2})-(\d{2})\s(\d{2})/;
}
}
$ret = "<html><table><tr>";
$ret .= "<td colspan=24 style='text-align:center; font-weight:bold;'> $header </td>";
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#MS: inject the legend to the top
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$ret .= "</tr><tr><td colspan=\"24\" style='text-align:center; font-weight:bold;'>";
foreach my $item (@pgCDev) {
if (defined $item) {
my @activeDev = split (',', $item);
$ret .= "<font color=\"".$activeDev[3]."\">".$activeDev[0]." </font> ";
}
}
$ret .= "</td>";
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#/MS
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$ret .= "</tr><tr style='height:".$height."px;'>";
foreach $i (0..23) {
$he = int(($maxVal-$pv{$i})/$maxVal*$height) + $fsize;
$space = ($pv{$i}) ? 1 : 0;
$width = ($pv{$i}) ? 24 : 6;
$pv{$i} = " " if (!$pv{$i}); # keine Anzeige bei Null
$ret .= "<td style='text-align:center; width:".$width."px; height:".($height+$fsize)."px; padding-right:".$space."px; padding-left:".$space."px'>
<table>
<tr style='height:".$he."px'><td style='vertical-align:bottom'>".$pv{$i}."</td></tr>";
if ($he < ($height+$fsize)) {
$ret .= "<tr style='height:".($height+20-$he)."px;'><td style='background-color:".$colorv."; padding-bottom:0px; padding-top:1px; vertical-align:top'>";
$ret .= $is{$i} if (defined $is{$i});
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#MS: inject the new icon if defined
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
foreach my $item (@pgCDev) {
if (defined $item) {
my @activeDev = split (',', $item);
Log3($name, 5, "MS Debug: item: ".$activeDev[0]." Start: ".$activeDev[1]." End: ".$activeDev[2]." color: ".$activeDev[3]);
$ret .= FW_makeImage('message_socket_enabled.svg@'.$activeDev[3]) if ($i >= $activeDev[1] && $i <= $activeDev[2]);
}
}
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#/MS
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$ret .= "</td></tr>";
}
$ret .= "<tr><td>".$t{$i}."</td></tr>";
$ret .= "</table></td>";
}
$ret .= "</tr></table></html>";
} else {
# default Style
my $maxValue = ReadingsNum($name,"L2_PlantPeakPower", 8020); # Konfiguration des maximal übergebenen Werts
$space += 1; # Adaption Platz zwischen den Balken
$height -= 40; # Konfiguration der Höhe der Balken
foreach $i (1..23) {
$pv{$i} = ReadingsNum($name,"L4_NextHour".sprintf("%02d",$i)."_PvMeanPower",undef);
$is{$i} = (ReadingsVal($name,"L4_NextHour".sprintf("%02d",$i)."_IsConsumptionRecommended",'no') eq 'yes') ? $icon : undef;
if(AttrVal("global","language","EN") eq "DE") {
(undef,undef,undef,$t{$i}) = ReadingsVal($name,"L4_NextHour".sprintf("%02d",$i)."_Time",'0') =~ m/(\d{2}).(\d{2}).(\d{4})\s(\d{2})/;
} else {
(undef,undef,undef,$t{$i}) = ReadingsVal($name,"L4_NextHour".sprintf("%02d",$i)."_Time",'0') =~ m/(\d{4})-(\d{2})-(\d{2})\s(\d{2})/;
}
}
#### Tabelle
$ret = "<html><table border=2 bordercolor='darkgreen' cellspacing=1><tr>";
$ret .= "<td colspan=24 style='text-align:center; font-weight:bold; width:".($width)."px'>$header</td>";
$ret .= "</tr><tr>";
foreach $i (0..23) {
$is{$i} = FW_makeImage('rc_BLANK.svg') if(!$is{$i});
$ret .= "</td>";
$ret .= "<td style='text-align:center; padding-right:".($space)."px;padding-left:".($space)."px;width:".($width)."px'>";
$ret .= "<table border=0 bordercolor='darkgreen' cellspacing=1>";
$ret .= "<tr>";
$ret .= "<td style='text-align:center; padding-right:".($space)."px;padding-left:".($space)."px;background-color:".$color1."'>".$t{$i}."</td>";
$ret .= "</tr><tr>";
$ret .= "<td style='text-align:center; padding-right:".($space)."px;padding-left:".($space)."px;background-color:".$color1.";height=".$fsize."'>".$is{$i}."</td>";
$ret .= "</tr>";
$ret .= "<tr style='height:".(($maxValue-$pv{$i})/$maxValue*$height)."px'><td style='padding-right:".($space)."px;padding-left:".($space)."px;background-color:".$color1.";height=".$fsize."'>".$pv{$i}."</td></tr>";
$ret .= "<tr style='height:".($pv{$i}/$maxValue*$height)."px'><td style='padding-right:".($space)."px;padding-left:".($space)."px;background-color:".$colorv."'></td></tr>";
$ret .= "</table>";
}
$ret .= "</td>";
$ret .= "</tr></table></html>";
}
return $ret;
}
@Xguide ,
Hab es erstmal mit userreadings gelöst .... meine Werte der PV Anlage , also den aktuellen Ertrag mit reingenommen.
Im Moment zeigt die Gfx ,,nur" die Vorhersage an ... Vieleicht ist es ja auch möglich , den momentanen Ertrag zum Verbrauch auch grafisch ins Verhältnis zu setzen ...ähnlich Sunnyportal .
( Das geht im SunnyPortal bei mir nicht ,da mein Wechselrichter dem Sunnyportal ja keine Auskunft gibt )
Daher dachte ich, es wäre schön alle Daten zusammen zu haben ...
Für zwei Freunde von mir ,ist das einspeisen von dem erzeugten Strom relativ uninteressant, da sie nur sehr wenig dafür von den Stadtwerken bekommen .
Wenn der Ertrag der PV-Anlage größer ist ,als der Verbrauch im Haushalt ,könnte man ja (mit den Daten des SHM) über ein DOIF, eine Heizpatrone schalten lassen, welche das Trinkwasser heizt...
Moin Aladin,
das war genau der Grund meiner Frage, wofür Du die aktuellen Werte benötigst. Bei mir bspw. läuft das SunnyPortal tatsächlich nur wg. der Vorhersage und der Verbrauchsempfehlungen über den Tag verteilt.
Deswegen ist die Grafik für mich vollkommen ausreichend, wenn die Verbraucher noch schön mit integriert sind. Einen Vorschlag habe ich ja gemacht, mal schauen was Heiko dazu sagt.
Wzut arbeitet ja gerade noch an einem Redesign, vielleicht integriert er auch die aktuelle Leistung, dazu müsste er was sagen.
Generell wäre mir das Portal zu asynchron für Steuerungen, zumal ich die Daten nur alle 10 Minuten polle. Es gab da mal eine Einschränkung von SMA, dass Benutzerkonten gesperrt wurden die zuviel Traffic erzeugt haben.
Ich hole meine Livedaten, und dieses Thema hatten wir schon einige Male, leider alle von den lokalen Einzelgeräten ab, obwohl alles im SHM zur Verfügung steht. Aber der SHM1, das ist der den ich habe, gibt die Daten nicht frei :-( Hast Du mal versucht die Verbrauchsdaten vom SHM2 mit dem Modul SMAEM auszulesen? Ich weiss nicht ob das beim SHM2 funktioniert, aber m.W.n. ist der SHM2 doch eine Kombination aus EnergyMeter und dem alten Sunny Home Manager. Vielleicht mal ausprobieren, dann hast du die Daten aktuell vorliegen. Ferner kannst du auswerten auf welcher Phase gerade besonders viel verbraucht wird, etc...
Mit diesem Ansatz kannst Du die genannte Heizpatrone auch ohne SMAPortal steuern. Wenn der Verbrauch (SMAEM-Modul) kleiner Erzeugung (SolarLog-Modul) ist, dann Heizpatrone an.
Viel Erfolg,
Marcel
Kleines Update:
einen Fehler hatte ich noch drin bei der Korrektur der Anzeige im richtigen Balken.
###############################################################################
# Subroutine für WebLink-Device
###############################################################################
sub PortalAsHtml ($) {
my ($name) = @_;
my $hash = $defs{$name};
my $ret = "";
my ($i,$header,$icon);
my (%pv,%is,%t);
return "Device \"$name\" doesn't exist !" if(!$hash);
if(AttrVal($name, "detailLevel", 1) != 4) {
return "The attribute \"detailLevel\" of device \"$name\" has to be set to level \"4\" !";
}
# Stylewerte
my $maxVal; # max Ertrag in den nächsten 24 Stunden
my $he; # Balkenhöhe
my $space = 1; # Platz zwischen den Balken
my $width = 24; # Breite der Balken , 24 max , 6 min
my $height = 200; # Höhe der Balken
my $fsize = 20; # Höhe für Font
my $color1 = "#FFFFFF"; # Farbwert 1
my $colorv = "#".AttrVal($name, "portalGraphicColor", "7F7F7F"); # Farbe des Wertes , ggf dyn ermitteln aus Device WEB styleData cols.Header (original grün -> "#4B9C8A")
# Icon Erstellung, mit @<Farbe> ergänzen falls einfärben
# Beispiel mit Farbe: $icon = FW_makeImage('light_light_dim_100.svg@green');
$icon = FW_makeImage('light_light_dim_100.svg@black');
my $pv4h = ReadingsNum($name,"L2_Next04Hours-PV", "");
my $pvRe = ReadingsNum($name,"L3_RestOfDay-PV", "");
my $pvTo = ReadingsNum($name,"L3_Tomorrow-PV", "");
# Headerzeile generieren
my $alias = AttrVal($name, "alias", "SMA Portal"); # Linktext als Aliasname oder "SMA Portal"
my $dlink = "<a href=\"/fhem?detail=$name\">$alias</a>";
if(AttrVal("global","language","EN") eq "DE") {
$header = "$dlink Prognosedaten - nächste 4 Stunden: $pv4h Wh / Rest des Tages: $pvRe Wh / Morgen: $pvTo Wh";
} else {
$header = "$dlink forecast data - next 4 hours: $pv4h Wh / rest of day: $pvRe Wh / tomorrow: $pvTo Wh";
}
# Werte aktuelle Stunde
$pv{0} = ReadingsNum($name,"L2_ThisHour_PvMeanPower", undef);
$is{0} = (ReadingsVal($name,"L2_ThisHour_IsConsumptionRecommended",'no') eq 'yes' ) ? $icon : undef;
return "Awaiting level 4 data ... " if(!defined $pv{0});
if(AttrVal("global","language","EN") eq "DE") {
(undef,undef,undef,$t{0}) = ReadingsVal($name,"L2_ThisHour_Time",'0') =~ m/(\d{2}).(\d{2}).(\d{4})\s(\d{2})/;
} else {
(undef,undef,undef,$t{0}) = ReadingsVal($name,"L2_ThisHour_Time",'0') =~ m/(\d{4})-(\d{2})-(\d{2})\s(\d{2})/;
}
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#MS: get consumer list and disply it in portalGraphics
#Consumers needs to be defied with the real SMA name comma seperated via the attribute portalGraphicsConsumers ("Trockner,Waschmaschine")
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
my @pgCDev = split(',', AttrVal($name, "portalGraphicsConsumers", ""));
my @colors = ("firebrick", "steelblue", "darkolivegreen ", "yellow", "gray", "white", "red", "blue", "green", "orange");
my $colorIndex = 0;
foreach my $item (@pgCDev) {
$item =~ s/^\s+|\s+$//g; #trim it, if blanks were used
#check if listed device is planned if not, set it to undef
if (ReadingsVal($name, "L3_".$item."_Planned", "no") eq "yes") {
#get start and end hour
my $start = -1;
my $end = -1;
(undef,undef,undef,$start) = ReadingsVal($name,"L3_".$item."_PlannedOpTimeBegin",'0') =~ m/(\d{4})-(\d{2})-(\d{2})\s(\d{2})/;
(undef,undef,undef,$end) = ReadingsVal($name,"L3_".$item."_PlannedOpTimeEnd",'0') =~ m/(\d{4})-(\d{2})-(\d{2})\s(\d{2})/;
#correct the hour for accurate display
if ($start < $t{0}) { #consumption seems to be tomorrow
$start = 23-$t{0}+$start;
}else{
$start -= $t{0};
}
if ($end < $t{0}) { #consumption seems to be tomorrow
$end = 23-$t{0}+$end;
}else{
$end -= $t{0};
}
my $col = $colors[$colorIndex];
$col = "black" if($colorIndex > 9); #if more than 10 device available, color them black
$item = $item.",".$start.",".$end.",".$col;
$colorIndex += 1;
}else {
$item = undef;
}
}
#create some Testdata
#$pgCDev[0] = "Trockner,15,18".",".$colors[0]; #should be 12 - 14
#$pgCDev[1] = "Waschmaschine,18,20".",".$colors[1];
#$pgCDev[2] = "Spuelmaschine,17,21".",".$colors[2];
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#/MS
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Style-Auswahl
if(AttrVal($name, "portalGraphicStyle", "default") eq "modern") {
# modern Style
$maxVal = $pv{0}; # nehmen wir mal als Startwert
foreach $i (1..23) {
$pv{$i} = ReadingsNum($name,"L4_NextHour".sprintf("%02d",$i)."_PvMeanPower",0);
$maxVal = ($pv{$i} > $maxVal) ? $pv{$i} : $maxVal;
$is{$i} = (ReadingsVal($name,"L4_NextHour".sprintf("%02d",$i)."_IsConsumptionRecommended",'no') eq 'yes') ? $icon : undef;
if(AttrVal("global","language","EN") eq "DE") {
(undef,undef,undef,$t{$i}) = ReadingsVal($name,"L4_NextHour".sprintf("%02d",$i)."_Time",'0') =~ m/(\d{2}).(\d{2}).(\d{4})\s(\d{2})/;
} else {
(undef,undef,undef,$t{$i}) = ReadingsVal($name,"L4_NextHour".sprintf("%02d",$i)."_Time",'0') =~ m/(\d{4})-(\d{2})-(\d{2})\s(\d{2})/;
}
}
$ret = "<html><table><tr>";
$ret .= "<td colspan=24 style='text-align:center; font-weight:bold;'> $header </td>";
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#MS: inject the legend to the top
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$ret .= "</tr><tr><td colspan=\"24\" style='text-align:center; font-weight:bold;'>";
foreach my $item (@pgCDev) {
if (defined $item) {
my @activeDev = split (',', $item);
$ret .= "<font color=\"".$activeDev[3]."\">".$activeDev[0]." </font> ";
}
}
$ret .= "</td>";
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#/MS
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$ret .= "</tr><tr style='height:".$height."px;'>";
foreach $i (0..23) {
$he = int(($maxVal-$pv{$i})/$maxVal*$height) + $fsize;
$space = ($pv{$i}) ? 1 : 0;
$width = ($pv{$i}) ? 24 : 6;
$pv{$i} = " " if (!$pv{$i}); # keine Anzeige bei Null
$ret .= "<td style='text-align:center; width:".$width."px; height:".($height+$fsize)."px; padding-right:".$space."px; padding-left:".$space."px'>
<table>
<tr style='height:".$he."px'><td style='vertical-align:bottom'>".$pv{$i}."</td></tr>";
if ($he < ($height+$fsize)) {
$ret .= "<tr style='height:".($height+20-$he)."px;'><td style='background-color:".$colorv."; padding-bottom:0px; padding-top:1px; vertical-align:top'>";
$ret .= $is{$i} if (defined $is{$i});
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#MS: inject the new icon if defined
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
foreach my $item (@pgCDev) {
if (defined $item) {
my @activeDev = split (',', $item);
Log3($name, 5, "MS Debug: item: ".$activeDev[0]." Start: ".$activeDev[1]." End: ".$activeDev[2]." color: ".$activeDev[3]);
$ret .= FW_makeImage('message_socket_enabled.svg@'.$activeDev[3]) if ($i >= $activeDev[1] && $i <= $activeDev[2]);
}
}
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#/MS
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$ret .= "</td></tr>";
}
$ret .= "<tr><td>".$t{$i}."</td></tr>";
$ret .= "</table></td>";
}
$ret .= "</tr></table></html>";
} else {
# default Style
my $maxValue = ReadingsNum($name,"L2_PlantPeakPower", 8020); # Konfiguration des maximal übergebenen Werts
$space += 1; # Adaption Platz zwischen den Balken
$height -= 40; # Konfiguration der Höhe der Balken
foreach $i (1..23) {
$pv{$i} = ReadingsNum($name,"L4_NextHour".sprintf("%02d",$i)."_PvMeanPower",undef);
$is{$i} = (ReadingsVal($name,"L4_NextHour".sprintf("%02d",$i)."_IsConsumptionRecommended",'no') eq 'yes') ? $icon : undef;
if(AttrVal("global","language","EN") eq "DE") {
(undef,undef,undef,$t{$i}) = ReadingsVal($name,"L4_NextHour".sprintf("%02d",$i)."_Time",'0') =~ m/(\d{2}).(\d{2}).(\d{4})\s(\d{2})/;
} else {
(undef,undef,undef,$t{$i}) = ReadingsVal($name,"L4_NextHour".sprintf("%02d",$i)."_Time",'0') =~ m/(\d{4})-(\d{2})-(\d{2})\s(\d{2})/;
}
}
#### Tabelle
$ret = "<html><table border=2 bordercolor='darkgreen' cellspacing=1><tr>";
$ret .= "<td colspan=24 style='text-align:center; font-weight:bold; width:".($width)."px'>$header</td>";
$ret .= "</tr><tr>";
foreach $i (0..23) {
$is{$i} = FW_makeImage('rc_BLANK.svg') if(!$is{$i});
$ret .= "</td>";
$ret .= "<td style='text-align:center; padding-right:".($space)."px;padding-left:".($space)."px;width:".($width)."px'>";
$ret .= "<table border=0 bordercolor='darkgreen' cellspacing=1>";
$ret .= "<tr>";
$ret .= "<td style='text-align:center; padding-right:".($space)."px;padding-left:".($space)."px;background-color:".$color1."'>".$t{$i}."</td>";
$ret .= "</tr><tr>";
$ret .= "<td style='text-align:center; padding-right:".($space)."px;padding-left:".($space)."px;background-color:".$color1.";height=".$fsize."'>".$is{$i}."</td>";
$ret .= "</tr>";
$ret .= "<tr style='height:".(($maxValue-$pv{$i})/$maxValue*$height)."px'><td style='padding-right:".($space)."px;padding-left:".($space)."px;background-color:".$color1.";height=".$fsize."'>".$pv{$i}."</td></tr>";
$ret .= "<tr style='height:".($pv{$i}/$maxValue*$height)."px'><td style='padding-right:".($space)."px;padding-left:".($space)."px;background-color:".$colorv."'></td></tr>";
$ret .= "</table>";
}
$ret .= "</td>";
$ret .= "</tr></table></html>";
}
return $ret;
}
wenn wir so weitermachen wird Heiko uns nach seinem Urlaub verfluchen .....
@Xguide , ok ich denke ich habe es kapiert. Ob die Legende auch noch oben oder unten steht bzw. farbig oder Icons ist wieder so eine reine Geschmacksfrage. Eigentlich braucht man für dein Vorhaben wieder zusätzliche Parameter(Attribute) so in der Form Readingname , Trockner:on@blue
Ich schau mir das mal genau an und bereite etwas vor, sollte aber machbar sein.
@Aladin222, Heizpatrone schalten machen hier schon einige Leute, das hat aber nichts mit diesem Modul zu tun.
Du mußt schon sauber trennen zwischen
a. Vergangenheit (die Werte hast du aus deinem WR und hat nichts mit dem Portal zu tun)
b. Zukunft ( über die Werte reden wir hier ) und
c. Gegenwart. D.h. nur bei der aktuellen Stunde könnte man Prognose und Ist zusammenführen.
Xquide hat Recht mit seiner Empfehlung für das andere Modul von Heiko : SMAEM.pm
Schaue ich mir direkt an .....Danke !
Bin etwas durcheinander gekommen 😂
Xguide , ich baue deinen Code etwas angepasst mal in meine aktuelle Version.
Sehe ich das richtig : Du legst direkt im SMA Portal eine schaltbare Steckdose an und gibst ihr z.B. den Namen Trockner.
Dieses Wort Trockner taucht dann später automatisch als Gruppe von L3_Trockner_xxx Readings wieder auf ?
Zitatwenn wir so weitermachen wird Heiko uns nach seinem Urlaub verfluchen
Ich verfluche euch jetzt schon ... :D
Lese immer mal mit wenn ich kann ... schöne grüsse von der insel arran in schottland. Der single malt hier ist äußerst lecker ... 8)
Bis denne,
Heiko
Hallo Wzut,
genau, in meinem Fall handelt es sich um die SMA Bluetooth Steckdosen. Der Name der im Portal definiert wird, taucht seit dem neuen Modul im SMAPortal auf. Zuvor sind mir die nicht aufgefallen. Somit kam die Idee die Planung mit im Weblink anzuzeugen.
Readings, gerade aber nichts geplant:
L3_Trockner_Planned no 2019-05-06 16:03:22
L3_Trockner_PlannedOpTimeBegin undefined 2019-05-06 16:03:22
L3_Trockner_PlannedOpTimeEnd undefined 2019-05-06 16:03:22
Aus L3_Trockner_PlannedOpTimeBegin & L3_Trockner_PlannedOpTimeEnd habe ich die Stunde herausgeschnitten.
Zitat von: Wzut am 06 Mai 2019, 14:35:26
Xguide , ich baue deinen Code etwas angepasst mal in meine aktuelle Version.
Sehe ich das richtig : Du legst direkt im SMA Portal eine schaltbare Steckdose an und gibst ihr z.B. den Namen Trockner.
Dieses Wort Trockner taucht dann später automatisch als Gruppe von L3_Trockner_xxx Readings wieder auf ?
Hallo Wzut,
da lasse ich mich doch gerne verfluchen wenn sich das so schön entwickelt :-) Bei seinem Single Malt, womit man mich jagen kann, kommt er bestimmt wieder runter :-)
Wo die Legende steht ist mir echt egal, unten ist bestimmt schöner. Bei den Farben habe ich es mir leicht gemacht und habe einfach 10 definiert. Jedem Device noch ein Icon und eine Farbe zu spendieren fand ich sehr aufwendig, zumal das Ganze jetzt dynamisch ist. Ich weiss auch nicht wieviele Verbraucher so i.d.R. im Portal definiert sind, bei mir sind es 3. Ggf. kommt auch noch mal eine Heizpatrone dazu...
Grüße Marcel
Zitat von: Wzut am 06 Mai 2019, 12:46:53
wenn wir so weitermachen wird Heiko uns nach seinem Urlaub verfluchen .....
@Xguide , ok ich denke ich habe es kapiert. Ob die Legende auch noch oben oder unten steht bzw. farbig oder Icons ist wieder so eine reine Geschmacksfrage. Eigentlich braucht man für dein Vorhaben wieder zusätzliche Parameter(Attribute) so in der Form Readingname , Trockner:on@blue
Ich schau mir das mal genau an und bereite etwas vor, sollte aber machbar sein.
@Aladin222, Heizpatrone schalten machen hier schon einige Leute, das hat aber nichts mit diesem Modul zu tun.
Du mußt schon sauber trennen zwischen
a. Vergangenheit (die Werte hast du aus deinem WR und hat nichts mit dem Portal zu tun)
b. Zukunft ( über die Werte reden wir hier ) und
c. Gegenwart. D.h. nur bei der aktuellen Stunde könnte man Prognose und Ist zusammenführen.
Xquide hat Recht mit seiner Empfehlung für das andere Modul von Heiko : SMAEM.pm
Zitat von: Xguide am 06 Mai 2019, 16:11:52
Jedem Device noch ein Icon und eine Farbe zu spendieren fand ich sehr aufwendig
Im Gegenteil , das geht recht einfach. Ich habe deinen Code gestrafft und auf die jetzige Struktur angepasst. Da ich keine solche Geräte habe muß ich jetzt auch mit simulierten Daten arbeiten. Eine Sache habe geändert : Ich finde es unlogisch die normale Glühbirne anzuzeigen und dann die Geräte. D.h. wenn es Geräte gibt ersetzen sie die Birne. Du gehst aber bei deiner Struktur davon aus das nur je einmal in 24 Stunden ein Start und Ende gibt. D.h Waschen von 10-12 und dann nochmal von 14-15 kann es dann nicht geben. Der Screenshot zeigt zwei Dummy Geräte, die Definition dazu sieht jetzt zum Beispiel so aus :
attr <name> consumers Trockner:scene_clothes_dryer@yellow,Waschmaschine:scene_washing_machine@lightgreen
D.h. sowohl das Icon als auch seine Farbe sind frei wählbar, der Legende habe ich auch ein Attr spendiert , aus , oben , unten
Ok, das ist elegant. Optisch finde ich, dass das Icon in der Legende arg aufträgt, aber das ist Geschmackssache.
Die normale Glühbirne könnte trotzdem noch interessant sein, da ja weiterhin IsConsumptionRecommended anstehen kann. Bspw. verbraucht die WM ja nur 500 Wh und es wäre noch was für andere Verbraucher da. Jeder Consumer kann nur einmal geplant sein! Wenn er neu geplant wird, dann verschiebt er sich in meiner Logik auch entsprechend. Wenn ich es richtig beobachtet habe, dann wird vom Portal planned beim Einschalten zurück gesetzt und dann verschwindet der Consumer eh aus der Anzeige.
Gruß Marcel
Zitat von: Xguide am 06 Mai 2019, 20:15:06
Optisch finde ich, dass das Icon in der Legende arg aufträgt, aber das ist Geschmackssache.
Kpar ist das eine Frage des Geschmacks wie soviele Dinge bei FHEM. daher bin ich der Meinung man sollte dem User so viele Freiheiten geben wie möglich.
D.h. wird etwas angezeigt und wenn ja wie und wo. Ich überleg mir noch etwas :)
Das mit dem noch Energie übrig ist ein guter Einwand, es war mir bis jetzt nicht klar das SMA das bei seinen Berechnungen berücksichtigt.
Zitat von: DS_Starter am 16 März 2019, 08:26:52
Nachteil ist die Abhängigkeit vom SMA Portal und dass die Updatezyklen
gering sein sollten (z.B. alle 5 Minuten). Dadurch ist die Genauigkeit nicht so hoch.
Grüße,
Heiko
Hi,
nutze das Modul schon ewig. SUPER Arbeit [emoji1303][emoji1303]
Hatte eine Zeitlang einen sehr niedrigen Updateintervall, so ca 20 Sekunden!
Hatte dann nach ca. 8 Monaten eine freundliche E-Mail von SMA. Das sie Verständnis haben das man die Daten
im Hausautomationssystem verarbeiten möchte ..
Aber ihre AGBs bla bla bla...
Allerdings sagte er dann das wenn ich die Abfrage auf 120 Sekunden einstelle es toleriert wird...
Bis jetzt keine Probleme mit dem Account oder weitere E-Mails von SMA.
VG
Gesendet von iPhone mit Tapatalk
Zitat von: Wzut am 07 Mai 2019, 06:24:40
Das mit dem noch Energie übrig ist ein guter Einwand, es war mir bis jetzt nicht klar das SMA das bei seinen Berechnungen berücksichtigt.
Sicher bin ich mir da nicht, ich vermute sie machen es nicht. Vermutlich müsste man dann pro Verbraucher noch einen durchschnittlichen Verbrauch pro Stunde miterfassen und abziehen. Den durchschnittlichen Verbrauch kann man im Portal sehen.
Dennoch plädiere ich dafür, die Lampe bei IsConsumptionRecom. = true anzuzeigen.
Zitat von: Kenneth am 07 Mai 2019, 08:03:19
Hatte eine Zeitlang einen sehr niedrigen Updateintervall, so ca 20 Sekunden!
Hatte dann nach ca. 8 Monaten eine freundliche E-Mail von SMA. Das sie Verständnis haben das man die Daten
im Hausautomationssystem verarbeiten möchte ..
Die E-Mail haben wir wohl alle bekommen, mit entsprechender Sperrung des Accounts >:(
Dennoch bieten sich die anderen Module deutlich besser für eine Steuerung von Drittgeräten wie Heizpatrone an.
Zitat von: Xguide am 07 Mai 2019, 11:55:06
Dennoch plädiere ich dafür, die Lampe bei IsConsumptionRecom. = true anzuzeigen.
ist dein gutes Recht wir leben ja in einem freien Land :) aber bitte behalte im Hinterkopf das am Ende Heiko über alles richtet
wie du meinst!
oh ha ... hat da jemand den Smiley übersehen ?
Marcel ich habe gerade noch ein kleines geistiges Problem mit deiner Zeitkorrektur unterhalb
#correct the hour for accurate display
weisst du wann genau die Readings für Start und Ende wieder auf undefined zurück fallen ?
Bzw. bleiben beide mit ihren Werten erhalten solange Ende nicht erreicht ist ?
Zitat von: Wzut am 07 Mai 2019, 14:19:42
oh ha ... hat da jemand den Smiley übersehen ?
Hallo Wzut, ja habe ich übersehen, war aber auf den Henker und Richter bezogen, am Ende entscheide ich was bei mir läuft ;) Müsste dann aber auf Updates verzichten :(
Zitat
Marcel ich habe gerade noch ein kleines geistiges Problem mit deiner Zeitkorrektur unterhalb
#correct the hour for accurate display
Zeitkorrektur insofern, dass die Schleife nicht die echten Stunden hochiteriert (1-24), sondern von der Startstunde bspw. 21Uhr 0=21, 1=22, 2=23, 3=0, 4=1....23=20Uhr Damit ich nun die Einschaltzeit richtig einblenden konnte, habe ich genau diese Ermittlung gemacht. Frei formuliert, in x Stunden finden das Ereignis statt und nicht um 10 Uhr.
Weiss gerade nicht wie ich es besser formulieren kann.
Zitatweisst du wann genau die Readings für Start und Ende wieder auf undefined zurück fallen ?
Bzw. bleiben beide mit ihren Werten erhalten solange Ende nicht erreicht ist ?
Ich habe versäumt es loggen. Habe aber die Vermutung, das nach dem Einschalten das planned auf no gesetzt wird und die Infos futsch sind.
Grüße Marcel
Zitat von: Xguide am 07 Mai 2019, 16:17:42
Habe aber die Vermutung, das nach dem Einschalten das planned auf no gesetzt wird
gut, no wäre so schlecht nicht da dann Start und Ende eh egal sind.
Ich denke ich kann heute Abend mal wieder eine Version raushauen, bei der Consumers Sache mußt du dann aber dranbleiben und schauen ob alles stimmt, da es vermutlich nicht so viele User gibt die das eingerichtet haben ( ich kann es ja auch nur simulieren )
Kannst mir ja Deine Version mal zur Verfügung stellen, beim letzten Mal hast Du nur einen Screenshot geteilt. Probiere ich gerne aus.
Meinst Du ich bin so ein Exot mit den Steckdosen? Habe die seinerzeit zur Eigenverbrauchsoptimierung als recht praktikabel erachtet. Gut, ich habe dafür auch nichts bezahlt, da ich sie ausgehandelt habe. Das ich dafür extra den Trockner modden musste, war mir auch nicht klar, aber es macht bei mir schon Sinn. So kann ich die Abriegelung etwas abfangen, bin allerdings vom Wetterbericht, PV-Prognose und der Einplanung der Geräte vom SMA-Algorithmus abhängig. Dafür funktionieren die Dinger out of the box.
Neben den SMA Steckdosen gibt es doch inzwischen einen ganzen Haufen EEBUS Komponenten, die müssten sich doch ähnlich verhalten. Dabei stellt sich mir wieder die Frage ob die Neuentwicklungen auch SHM I kompatibel sind, vielleicht kann das j amla jemand am Rande kommentieren. In der Doku steht meist SHM II, wobei das auch der aktuelle ist.
So wie versprochen hier meine aktuelle Version. Ich denke das ist ein Stand mit dem (fast) keine Wünsche mehr offen bleiben und sich auch mit den etwas schwierigern Styles gute Ausgaben erzeugen lassen. Das war die gute Nachricht, die Schlechte : Ihr müsst eure bisherigen Weblinks löschen und mit dieser Version neu anlegen.
Was mich bisher am meisten gestört hat war die Tatsache, das ich zwar mehr als einen Weblink anlegen konnte, aber diese nicht verschieden parametrieren, da die Parameter ja alle direkt aus dem SMAPortal Device kamen. Das ist nun anderes, alle Parameter bzw. Attribute stehen direkt im Weblink Device.
Eine mögliche Anwendung für verschiedene Ausgaben ist z.B. eine Grafik mit 24 Stunden auf der FHEM Webseite aber eine andere z.B. kleinere auf einem zentralen Tablet. Der set <name> createPortalGrafik Befehl kann bis zu 3x wiederholt werden und erzeugt jedesmal einen neuen Weblink.
Die verwendeten Attribute mit ihren neuen Namen als userattr direkt im Weblink Device :
color -> Farbauswahl der Balken (unverändert)
hours -> (4-24) Anzahl der Balken/Stunden , default 24 (unverändert)
icon -> Hier kann jetzt das Icon mit Hilfe der normalen Funktion Select Icon (links unten) ein beliebiges Icon direkt ausgewählt werden.
Weblink Devices haben dieses Attribut als default, allerdings wird bei Weblinks nie eines angezeigt. Kann wie üblich durch Zusatz von @farbe noch verändert werden falls es vom Typ svg ist.
show_header -> (1,0) default 1 , Anzeige der Kopfzeile
show_link -> (1,0) default 1 , Anzeige des Device Links links über der Weblink Ausgabe
height -> default 200 , Höhe der Balken in px und damit Bestimmung der gesammten Höhe, in Verbindung mit hour lassen sich so auch recht kleine Ausgaben erzeugen
font_size -> default 24, legt fest wieviel Platz über den Balken zur Anzeige der Werte freigehalten wird. Bei Styles die große Fonts benutzen kann dieser Wert mit 24 zu klein sein, bzw. u.U. rutscht ein großer Balken unten über die Grundlinie, in diesen Fällen den Wert bitte erhöhen
html_start & html_end -> default leer, hier können beliebige HTML Strings eingetragen werden die vor und nach dem Weblink ausgegeben werden.
Auf diese Art kann z.B. beim hausautomatiesierung_com Style die Ausgabe nach unten oder oben gerückt werden um einen Zwischenraum zu schaffen,
Bsp <br/> <br /> oder auch einkapselung in eine extra Table, div usw. Damit sollte sich eigentlich nahezu jedes Ausgabeproblem lösen lassen.
Last but not least noch drei Attribute für User wie Xguide die SMA unterstützte Zusatz Schaltgeräte haben
consumers , Komma getrennte Liste der Geräte ( Name = Reading ) in der Form name:icon@farbe, usw. Beispiel :
Trockner:scene_clothes_dryer@yellow,Waschmaschine:scene_washing_machine@lightgreen
legend_pos (top,bottom) -> wo soll die Legende Angezeigt werden
legend_style (icon, text,none) , default icon , bzw. farbiger Text oder keine Legende
Die Attribute legend_pos & legend_style werden nur berücksichtigt wenn auch consumers gesetzt ist.
Edit : letzte Version in Antwort #439
Hi Wzut,
das sieht richtig gut aus! Danke für die Berücksichtigung der Vorschläge und für die gute Integration.
Vorschlag für eine mini Änderung, als Linktitel für show_link könnte der Alias des Weblinks genutzt werden, dann könnte dieser konfiguriert werden. Was meinst du, kommt man da via ReadingsVal ran, der WL Name ist ja bekannt?
Du ignorierst nun die Stunden bei denen kein PV-Ertrag vorhergesagt wird und erstellst keinen Balken, oder? Dadurch ist der WL in der Breite sichtlich schlanker geworden - nett!
Ich habe testweise mal meine Consumer aktiviert und vom Portal planen lassen. Nach dem get data, waren dann die Glühbirnen weg und auch wurden keine consumer angezeigt. Also alles leer!
Es war ein kleiner Fehler drin. Und zwar fehlte ein split beim Abfragen der Readings. Die waren aus dem vorherigen Prozessing noch mit icon@farbe aufbereitet.
Die Symbole werden noch nicht dem richten Balken/Stunde zugeordnet, das schaue ich mir aber gerne morgen noch mal an.
Update mit neuer Erkenntnis: Die im Reading angezeigten Consumptionwerte / h beinhalten schon den geplanten Verbraucher. Also wäre es eigentlich korrekt die Differenz aus PV und Consumption anzuzeigen, das ist dann wirklich die Energie die zur Verfügung stehen sollte!?
Hallo Wzut,
hier noch mal kurz die geänderte Version.
Darin ist auch der L2_Forecast-Today-PV Bug behoben, den ich mit deiner Version plötzlich wieder hatte :)
Danke und Grüße,
Marcel
Zitat von: Xguide am 07 Mai 2019, 23:45:31
als Linktitel für show_link könnte der Alias des Weblinks genutzt werden
<--snipp -->
Du ignorierst nun die Stunden bei denen kein PV-Ertrag vorhergesagt wird und erstellst keinen Balken, oder? D
<--snipp -->
Die Symbole werden noch nicht dem richten Balken/Stunde zugeordnet, das schaue ich mir aber gerne morgen noch mal an.
<--snipp -->
Differenz aus PV und Consumption anzuzeigen, das ist dann wirklich die Energie die zur Verfügung stehen sollte!?
Klar den Alias kann man nutzen und editieren (bzw. muß man editieren wenn man mehr als ein WL nutzt) , den hatte Heiko ja schon eingeführt
Ja , keine Balken wenn kein Ertrag zu ewarten ist, da schafft Raum nach rechts bei den Monster Styles. Und genau hier liegt auch noch ein Bug, da es zu einer Divison by Zero kommen kann.
D.h. die Diskussion Icon anzeigen ja oder nein ist hinfällig , da SMA die Werte dann eh soweit runterrechnet ?
ja, bitte du hast ja echte Werte
Zitat von: Xguide am 07 Mai 2019, 23:52:59
auch der L2_Forecast-Today-PV Bug behoben, den ich mit deiner Version plötzlich wieder hatte :)
schau ich mir an , das liegt aber weiter oben im Code und hat nichts mit der HTML Grafik zu tun ?
Wenn ich mir dein png so anschaue fehlen jetzt eigentlich nur noch die Wetter Symbole über den Balken ...... :)
(mal schauen , ich habe ja fast unendlich Zeit als Renter in Lauerstellung an meinem Arbeitsplatz)
Hallo Wzut,
vielleich kannst Du kurz erklären wie du das meinst.
Klar den Alias kann man nutzen und editieren (bzw. muß man editieren wenn man mehr als ein WL nutzt) , den hatte Heiko ja schon eingeführt
Aktuell gibt es zwei Links im Weblink. Einmal den der in der Grafik im Header angezeigt wird und zum SMAPortal device führt und dann der zum Weblink führende der mit "showLink" ein/aus geschaltet werden kann. Letzteren meinte ich, der nicht mit dem Alias versorgt wird.
Zitat
D.h. die Diskussion Icon anzeigen ja oder nein ist hinfällig , da SMA die Werte dann eh soweit runterrechnet ?
Nicht so ganz, ich hatte ja gestern noch herausgefunden, dass hier nur die zu erwartende PV-Leistung angezeigt wird. Es gibt aber das korrespondierende Reading Consumption und außerdem ConsumptionRecommended. Wenn ConsumptionRecommended = true, dann Lampe an. Ggf. sollten wir mal über eine Anzeige von Erzeugung und Verbrauch nachdenken.
Und kurz zum Verständnis (bezogen auf SMA rechnet runter). Mal angenommen ich habe eine Südanlage mit 10kWP, die macht in der Mittagszeit dann so ca 10 kWh, da können schon winige Verbraucher hinzugenommen werden und es kann immer noch die Empfehlung anstehen mehr zu verbrauchen.
Kurz um, so wie es jetzt gerade ist, ist es genau wie im Portal. Siehe Screenshot.
Um die zeitliche Korrektur der Consumer Icons kümmere ich mich gleich....
Zitat
schau ich mir an , das liegt aber weiter oben im Code und hat nichts mit der HTML Grafik zu tun ?
Ist auch nicht wild, hatte das auch schon mal hier kommentiert und im Quelltext ist das markiert. Heiko weiss bescheid.
Wenn Du es auch schon ma glatt ziehen willst, dann nimm meine Version, oder öändere diesen Bereich.
#MS: Use also old data to integrate daily PV and Consumption
if ( $current_day == $fc_day ) {
$PV_sum += int($fc_obj->{'PvMeanPower'}->{'Amount'}); # integrator of daily PV
$consum_sum += int($fc_obj->{'ConsumptionForecast'}->{'Amount'}/3600); # integrator of daily Consumption forecast
}
# Don't use old data
next if $fc_diff_seconds < 0;
# Sum up for the next few hours (4 hours total, this is current hour plus the next 3 hours)
if ($obj_nr < 4) {
$nextFewHoursSum{'PV'} += $fc_obj->{'PvMeanPower'}->{'Amount'};
$nextFewHoursSum{'Consumption'} += $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600;
$nextFewHoursSum{'Total'} += $fc_obj->{'PvMeanPower'}->{'Amount'} - $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600;
$nextFewHoursSum{'ConsumpRcmd'} += $fc_obj->{'IsConsumptionRecommended'} ? 1 : 0;
}
# If data is for the rest of the current day
if ( $current_day == $fc_day ) {
$restOfDaySum{'PV'} += $fc_obj->{'PvMeanPower'}->{'Amount'};
$restOfDaySum{'Consumption'} += $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600;
$restOfDaySum{'Total'} += $fc_obj->{'PvMeanPower'}->{'Amount'} - $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600;
$restOfDaySum{'ConsumpRcmd'} += $fc_obj->{'IsConsumptionRecommended'} ? 1 : 0;
#$PV_sum += int($fc_obj->{'PvMeanPower'}->{'Amount'}); # integrator of daily PV
#$consum_sum += int($fc_obj->{'ConsumptionForecast'}->{'Amount'}/3600); # integrator of daily Consumption forecast
}
Zitat
Wenn ich mir dein png so anschaue fehlen jetzt eigentlich nur noch die Wetter Symbole über den Balken ...... :)
Genau das habe ich mir gestern auch gedacht :)
Btw: Jetzt wird die Lampe "Verbrauchsanzeige" unterhalb der Consumer angezeigt, das ist dem geschuldet, dass Du $show implementieren wolltest, richtig? Optisch fand ich die Lampen oben besser!
Zitat von: Xguide am 08 Mai 2019, 09:08:16
Aktuell gibt es zwei Links im Weblink.
<--SNIPP-->
Ggf. sollten wir mal über eine Anzeige von Erzeugung und Verbrauch nachdenken.
<--SNIPP-->
Um die zeitliche Korrektur der Consumer Icons kümmere ich mich gleich....
<--SNIPP-->
Genau das habe ich mir gestern auch gedacht
<--SNIPP-->
Optisch fand ich die Lampen oben besser!
a. wir reden vom Gleichen, ich hatte mich zuvor unglücklich ausgedrückt. Ist bereits erledigt und schaut gut aus
b. dann mal los , ich bin zu allem bereit
c. fein
d. SMAPortal gibt das aber als Studendetail nicht her ( nur 1x auf den Tag und next day ) , aber wir haben in FHEM ja diverse Wettermodule wo man sich bedienen kann.
e. oben/unten, ja/nein IMHO sollten wir das einfach aufschieben bis Heiko aus dem Urlaub zurück ist
Hallo Wzut,
alles gut!
Der Fehler mit der Anzeige der Consumer ist ein UTC Problem. Das Reading selbst zeigt schon den falschen Wert an. +2h wäre richtig.
Jetzt strauchel ich gerade bei Heikos Implementierung der UTC2Local. Gerne hätte ich gewusst ob da was falsch läuft, kannst du mal einen Blick darauf werfen?
if(%consumers && $forecast->{'ForecastTimeframes'}) {
# es sind Vorhersagen zu geplanten Verbraucherschaltzeiten vorhanden
foreach my $c (@{$forecast->{'ForecastTimeframes'}{'PlannedTimeFrames'}}) {
my $deviceOid = $c->{'DeviceOid'};
my $timeFrameStart = UTC2LocalString($hash,$c->{'TimeFrameStart'}{'DateTime'}); # wandele UTC Time zu lokaler Zeit
my $timeFrameEnd = UTC2LocalString($hash,$c->{'TimeFrameEnd'}{'DateTime'}); # wandele UTC Time zu lokaler Zeit
my $tz = $c->{'TimeFrameStart'}{'Kind'};
foreach my $k (keys(%consumers)) {
$val = $consumers{$k};
if($val eq $deviceOid) {
$k =~ /^(\d+)_.*$/;
my $lfn = $1;
# $consumer = $consumers{"${lfn}_ConsumerName"};
$consumers{"${lfn}_PlannedOpTimeStart"} = $timeFrameStart;
$consumers{"${lfn}_PlannedOpTimeEnd"} = $timeFrameEnd;
}
}
}
}
Ich habe es mal mit einem Logging versucht und egal ob ich die Funktion nutze oder nicht, der Wert bleibt gleich. Nur die Formatierung ändert sich. Ich nehme an, das reading sollte in localTime angezeigt werden, oder?
2019.05.08 09:48:43 1: sunnyPortal - MS debug - : timeFrameStart2019-05-08T12:25:00
2019.05.08 09:48:43 1: sunnyPortal - MS debug - : timeFrameStart UTC2Local2019-05-08 12:25:00
2019.05.08 09:48:43 1: sunnyPortal - MS debug - : timeFrameStart2019-05-08T11:55:00
2019.05.08 09:48:43 1: sunnyPortal - MS debug - : timeFrameStart UTC2Local2019-05-08 11:55:00
2019.05.08 09:53:49 1: sunnyPortal - MS debug - : timeFrameStart2019-05-08T12:25:00
2019.05.08 09:53:49 1: sunnyPortal - MS debug - : timeFrameStart UTC2Local2019-05-08 12:25:00
2019.05.08 09:53:49 1: sunnyPortal - MS debug - : timeFrameStart2019-05-08T11:55:00
2019.05.08 09:53:49 1: sunnyPortal - MS debug - : timeFrameStart UTC2Local2019-05-08 11:55:00
2019.05.08 09:58:43 1: sunnyPortal - MS debug - : timeFrameStart2019-05-08T12:25:00
2019.05.08 09:58:43 1: sunnyPortal - MS debug - : timeFrameStart UTC2Local2019-05-08 12:25:00
2019.05.08 09:58:43 1: sunnyPortal - MS debug - : timeFrameStart2019-05-08T11:55:00
2019.05.08 09:58:43 1: sunnyPortal - MS debug - : timeFrameStart UTC2Local2019-05-08 11:55:00
Wenn ich in der Funktion folgendes auskommentiere, dann bekomme ich das richtige Ergebnis. Aus meiner Sicht macht bei UTC to local ein -3600/-7200 auch kein Sinn, es wäre doch eher ein +3600/+7200.
Das Original-Codesnip sieht sieht auch ein wenig aus...
Kann das bitte jemand bewerten!?
sub UTC2LocalString($$) {
my ($hash,$t) = @_;
$t =~ s/T/ /;
my ($datehour, $rest) = split(/:/,$t,2);
my ($year, $month, $day, $hour) = $datehour =~ /(\d+)-(\d\d)-(\d\d)\s+(\d\d)/;
# proto: $time = timegm($sec,$min,$hour,$mday,$mon,$year);
my $utcepoch = timegm(0,0,$hour,$day,$month-1,$year);
# proto: ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
#my (undef,undef,undef,undef,undef,undef,undef,undef,$isdst) = localtime(time);
#if($isdst) {
# $utcepoch = $utcepoch - 7200;
#} else {
# $utcepoch = $utcepoch - 3600;
#}
# proto: ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
my ($lyear,$lmonth,$lday,$lhour) = (localtime($utcepoch))[5,4,3,2];
$lyear += 1900; # year is 1900 based
$lmonth++; # month number is zero based
if(AttrVal("global","language","EN") eq "DE") {
return (sprintf("%02d.%02d.%04d %02d:%s", $lday,$lmonth,$lyear,$lhour,$rest));
} else {
return (sprintf("%04d-%02d-%02d %02d:%s", $lyear,$lmonth,$lday,$lhour,$rest));
}
}
Grüße Marcel
Mit dieser Anpassung sind die Consumer Readings in local time gefüllt und entsprechen den SMA Portal Werten
Hallo Wzut,
anbei ein Update!
Das mit UTC2Local ist mir nicht ganz klar, die Änderungen haben sich aber auf das Verhalten der Darstellung ausgewirkt, somit habe ich das raus genommen.
Deswegen habe ich eine UTC2LocalMS angelegt, die nur für die ConsumerZeiten benutzt wird. So sieht es deutlich besser aus.
Zitatd. SMAPortal gibt das aber als Studendetail nicht her ( nur 1x auf den Tag und next day ) , aber wir haben in FHEM ja diverse Wettermodule wo man sich bedienen kann.
Das stimmt jetzt nicht mehr....
Ferner habe ich bim Logging herausgefunden, dass es vom Portal einen stündlichen Wert "WeatherId" gibt, den habe ich jetzt mit ausgegeben. Abhängig von der WeatherId kann nun ein Wetter-Icon gesetzt werden. Habe mich noch nicht an die Interpretation der IDs gemacht, könnte aber der Weather-Standard sein.
Generell:
Die readings:
L4_NextHourXX : zeigen PvMeanPower - Consumption
L4_NextHourXX_Consumption : geplanter Verbrauch
L4_NextHourXX_IsConsumptionRecommended : yes/no
L4_NextHourXX_PvMeanPower : Vorhersage PV Leistung
L4_NextHourXX_Time : entsprechender Stundenwert
L4_NextHourXX_WeatherId : Index für den Wetterzustand
OK, ich nehme das jetzt mal für mich als Arbeitsbasis. Diese ganzen Readings Anpassungen und Bugfixes solltest du am besten direkt mit Heiko abklären,
ich möchte eigentlich an so wenig wie möglich Stellen in seinem Code rumschreiben.
BTW: Schau dir mal deinen verwendeten Editor an, der zerstört die bestehenden Umlaute in den Kommentaren.
Zitat von: Wzut am 08 Mai 2019, 12:49:15
1: OK, ich nehme das jetzt mal für mich als Arbeitsbasis.
2:Diese ganzen Readings Anpassungen und Bugfixes solltest du am besten direkt mit Heiko abklären, ich möchte eigentlich an so wenig wie möglich Stellen in seinem Code rumschreiben.
3: BTW: Schau dir mal deinen verwendeten Editor an, der zerstört die bestehenden Umlaute in den Kommentaren.
1: Ich habe schon mal ein bisschen nach den WeatherID COdes gesucht, aber so richtig fündig bin ich nicht geworden. Also mal manuell angefangen, vielleicht hilft das ja beim Finden nach der von SMA verwendeten Nummerierung.
# 103 - starke Wolken (3 von 3)
# 130 - Regen abnehmend?
# 30 - leichter Regen
# 1 - Sonne mit Wolken
# 101 - Mond mit Wolken
# 60 - Sonne, Wolke mit leichtem Regen
# 2 - mittlere Wolken (2 von 3)
2: Kann ich verstehen, aber das mit der Tagesvorhersage war ein Fehler. Er wird es sicherlich fixen. Das mit der WeatherId ist die Erweiterung die wir für die Icons benötigen. Um nichts an Heikos UTC2Local zu ändern, habe ich diese eben dubliziert. Das muss auf jeden Fall mit Heiko abgesprochen werden. Irgendwas wird er sich dabei gedacht haben, komme nur nicht dahinter.
3: Kann ich nicht bestätigen, die sind bei mir da. Ich hatte 76_SMAPortal mit Notepad++ unter einem anderen Namen gespeichert. Kann das original auch noch mal anhängen. Ich hatte schon die Vermutung das Dein Editor die Tabs, bzw. Einrückungen zerschossen hat :)
Zitat von: Xguide am 08 Mai 2019, 13:56:10
Ich habe schon mal ein bisschen nach den WeatherID COdes gesucht,
Lass uns beide mal jeweils die SMA Weather ID mit der Vorhersage des 59_Weather.pm unter OpenWeatherMap (oder gleich direkt) vergleichen,
denn de Icons sind ja schon da unter images/default/weather
Hi Wzut,
OpenWeather passt von den IDs schon mal nicht, ist mir vorhin schon aufgefallen. Die Icons können wir natürlich nutzen, dann müssen wir nur eine CrossReference bauen - uff.
OPENWEATHER_Html($@)
{
my %fhemicons = (
0 => "sunny.png", 1 => "partly_cloudy.png", 2 => "cloudy.png", 3 => "overcast.png"
, 4 => "fog.png", 5 => "drizzle.png", 6 => "rain.png", 7 => "snow.png"
, 8 => "shower.png", 9 => "thunderstorm.png", 10 => "partly_cloudy.png", 20 => "cloudy.png"
, 30 => "overcast.png", 40 => "fog.png", 45 => "fog.png", 48 => "fog.png"
, 49 => "fog.png", 50 => "drizzle.png", 51 => "drizzle.png", 53 => "drizzle.png"
, 55 => "drizzle.png", 56 => "drizzle.png", 57 => "icy.png", 60 => "rain.png"
, 61 => "rain.png", 63 => "rain.png", 65 => "heavyrain.png", 66 => "rain.png"
, 67 => "icy.png", 68 => "sleet.png", 69 => "sleet.png", 70 => "snow.png"
, 71 => "snow.png", 73 => "snow.png", 75 => "snow.png", 80 => "scatteredshowers.png"
, 81 => "showers.png", 82 => "showers.png", 83 => "chance_of_sleet.png", 84 => "sleet.png"
, 85 => "chance_of_snow.png", 86 => "sleet.png", 90 => "thunderstorm.png", 95 => "scatteredthunderstorm.png"
, 96 => "thunderstorm.png", 999 => "na.png"
);
55_DWD_OpenData passt auch nicht :(
Ich habe die FHEM Icons mal eingebaut nur mit SMA Code 30 = rain
Die FHEM Icons sind schön , allerdings brauchen sie eine mindest Größe die weit weg ist von dem was wir brauchen, d.h. man erkennt es fast nicht.
Aber durch Zufall gesehen, jeder Code hat ein eigenes png -> https://www.sunnyportal.com/Tools/images/weather/103.png
Die SMA Icons sind schön einfach gemacht, ich werde morgen mal einen Schwung runterladen und versuchen sie als svg zu konvertieren
Hier mal ein Schnellschuss, zufrieden bin ich noch nicht.
Aber für heute ist ersteinmal Feierabend
Hey Wzut,
das geht doch schon mal in die richtige Richtung!
Die Crossreferenz auf die fhem icons wäre auch eine Arbeit für jemanden der Vater und Mutter erschlagen hat.
Finde es gut, super Arbeit!
Gruß Marcel
Ich habe die Anzeige der Wettericons fertig, es kommt ein neues userattr mit Namen weather dazu.
Da die SMA Wetter Icons mit ihrer Größe von 38x 43 Pixel vllt. eine Spur zu groß für den einen oder anderen Style sind,
kann die Anzeigegröße mit dem waether Attribut eingestellt werden.
weather = 1 -> 100% , weather = 0.5 -> 50% , weather = 1.2 -> 120%
Ich bevorzuge beim Dark Style 0.85 , aber das soll jeder für sich selbst entscheiden.
Die Icons werden z.Z. direkt vom SMA Potal geholt, wir müssen abwarten wie Heiko das in Zukunft gerne hätte.
@Marcel, bitte schau mal über den Quellcode ob ich alle deine Änderungen richtig übernommen habe
( bei der WeatherId der aktuellen Stunde hattest du auch ein L4_ Reading, ich habs auf L2_ wie die anderen geändert )
Edit : siehe Antwort #449
Zitat von: Wzut am 10 Mai 2019, 07:20:05
@Marcel, bitte schau mal über den Quellcode ob ich alle deine Änderungen richtig übernommen habe
( bei der WeatherId der aktuellen Stunde hattest du auch ein L4_ Reading, ich habs auf L2_ wie die anderen geändert )
Kopierteufel :) Danke!
Icons sehen gut aus - wie man sieht, bei mir dürfte die Portalgrafik ruhig breiter sein :)
$wllink ist doppelt definiert!
Ferner funktionieren in der Version die Consumer nicht mehr....Ich schaue gleich ma rein!
Welchen Editor nutzt du, es ist bei mir wieder alles verschoben!?
Gruß Marcel
OK, werfe ich gleich raus. Als Editor verwende ich schon seit Jahren mcedit unter Linux
So, geht wieder!
Habe die Quelltexte zusammengeführt. Ich hoffe es ist für dich so lesbar....
Der Alias im Link funktioniert noch nicht, oder?
Zitat
OK, werfe ich gleich raus. Als Editor verwende ich schon seit Jahren mcedit unter Linux
Ok, nicht meine Welt.
Doch der alais geht bei mir als Detaillink wenn er im WL Device angelegt wurde
Was ist nun noch anders an deiner Version mit Ausnahme der Birnen Posititon ?
Du hast doch mal geschrieben die Stunden für die Geräte würden nicht stimmen ?
Hallo Wzut,
die Stundenposition ist schon lange kein Thema mehr. Habe den Kommentar von Dir auch geändert, wie Du bestimmt gesehen hast.
Das die Consumer in deiner Version gar nicht angezeigt wurden, war nicht ganz so fein.
Ich habe beide Dateien im Comparer gehabt und deine neuen Sachen (Alias für Link [Aktivierung über show_link attr], Icons, Korrektur Level WeatherID).
Über die Icon Position wollten wir doch nicht mehr reden und es Heiko überlassen, oder?
Vermutlich ist der Fehler in Deiner Datei, das Du die consumer list nicht mehr splittest und somit nix mehr angezeigt wird.
Bei mir wird der Alias nicht als Anzeigename für den Link übernommen, vielleicht habe ich beim Vergleich doch was übersehen? Kann ich aber noch mal prüfen - bin heute zeitlich nur sehr knapp.
Zitat von: Xguide am 10 Mai 2019, 15:04:54
Vermutlich ist der Fehler in Deiner Datei, das Du die consumer list nicht mehr splittest und somit nix mehr angezeigt wird.
Ahh jetzt ja eine Insel .... ganz oben und ich habe immer unten gesucht
Sorry, Wlink Problem war mein Fehler .... Hatte die Änderungen im html übersehen...
Kurz festgehalten, aktuell funktionieren alle Umsetzungen und es gilt zu prüfen, ob die Weather-Icons zukünftig nicht lokal bezogen werden können.
Bei mir laufen sie bereits lokal , habe alle runtergeladen und als .svg konvertiert.
Heiko muss nur entscheiden ob und wo er sie unterbringen will.
Eine Idee habe ich noch. Heute ist ein Regentag und im SMA Portal sind meine Stundenbalken nur Bodensatz.
Dadurch das z.Z. die Berechnung der Balkenhöhe dynamisch ist ergibt das trotzdem schöne Große.
Mit einem zusätzlichen Attribut habe ich es mal anderes gemacht , der Screenshot zeigt den Unterschied.
Oben liegt der Max Wert bei 6000 während unten die größte Prognose (2037) zur Berechnung benutzt wird.
Hier nun meine letzte Version, so langsam gehen mir die Ideen aus.
Die Attribut für die kleinen Balken hat den Namen maxPV
Zusätzlich kann die Uhrzeit wie im SMA Portal mit Minuten angezeigt werden , z.B. 8:00 statt nur 8
Wer auch in den Nachtstunden Wettericons haben möchte sollte show_night auf 1 setzen.
Um bei den ganzen Attributen noch den Überblick zu behalten und da man ja keine command.ref erstellen kann habe ich eine
Zusammenstellung ins comment Attribut gepackt.
Bitte vorhandene Weblinks löschen und neu anlegen
Zitat von: Wzut am 12 Mai 2019, 13:29:55
Die Attribut für die kleinen Balken hat den Namen maxPV
Hi Wzut,
ich habe es noch nicht testen können, aber für maxPV gibt es doch ein Reading "L2_PlantPeakPower". Wäre es nicht eleganter das zu nehmen?
Ich habe auch schon hin oder her überlegt ob das sinnvoll für die Skalierung ist. Vorteil, man sieht auf einen Blick ob es ein guter Tag oder schlechter Tag wird. Nachteil bei mir, die Icons für die Verbraucher hängen dann im Nirwana. >:(
Ideen:
Anzeige der zur Verfügung stehenden Energie benutzen (PV - Consumption). Ggf. in kW, also / 1000 und mit Einheit. Frage an die Webdesigner, könnte man solcher Infos nicht auch irgendwie auf einen Hoover (Tooltip) legen?
Viele Grüße,
Marcel
Das ist eine Frage welche Darstellung per default vorgelegt werden soll.
a. maxPV = 0 und damit eine dynamische Skalierung, zum wechseln muß der User maxPV mit irgendeinem Wert belegen
und da wird jeder am Besten wissen was bei ihm sinnvoll ist.
oder
b. das Ganze rumdrehen , dann könnte maxPV = L2_PlantPeakPower sein und eine fixe Skalierung als default und der User muss maxPV auf 0 setzen wenn er das nicht möchte. Das ist das was SMA macht und da sind wohl auch aus gutem Grund die Birnen über den Balken statt drin.
Den zweiten Teil habe ich nicht verstanden , du willst PV - Consumption als Tooltipp ? ja und wann ?
Was man machen kann ist ( habe ich mir mal gemacht ) ist statt PV Consumption für alles verwenden, dann hat man halt 24 Balken mit dem erwarteten Verbrauch.
Zum zweiten Teil:
zu jedem Balken hat man ja eigentlich folgende Infos:
- PV Produktion
- Consumption
- daraus liesse sich die zur Verfügung stehende Energie berechnen (Ertrag - Verbrauch) steht auch schon im Reading zur Verfügung! (Stunde ohne Suffix)
Aktuell wird nur PV Produktion angezeigt, was aber nicht der zur Verfügung stehenden Energie entspricht.
Nun könnte man das entweder wahlweise machen, oder die zusätzliche Anzeige in einen Tooltip packen um Platz zu sparen. Ich meine im Portal ist es auch so, auch wenn ich da fast nie reingucke.
Ferner meinte ich, das man nicht zwingend Watt anzeigen muss und kW ausreichend wäre. Eine Einheit hinter dem Wert macht es dann für gelegentliche Betrachter plausibel.
Waren ja nur Ideen!
Ich selbst habe Tooltipps noch nie direkt eingesetzt , sollte aber mit css machbar sein.
Hier mal ein Zitat dazu aus https://wiki.selfhtml.org/wiki/CSS/Tutorials/Tooltips_mit_CSS
ZitatIn vielen Artikeln werden Tooltip als beste Sache seit der Erfindung von geschnittenem Brot angepriesen. Sie haben jedoch einige gravierende Nachteile:
Tooltips funktionieren nicht mit
Screenreadern
Tastaturgesteuerten Geräten
Touchscreens
Empfehlung:
Vermeiden Sie Tooltips weitgehend.
Nützliche Information sollte direkt auf dem Bildschirm erscheinen. Ist Information nicht wichtig genug um direkt angezeigt zu werden, kann sie in den häufigsten Fällen gleich ganz weggelassen werden.
Das Zitat ist gut!
Wäre wieder das Platzproblem beim Anzeigen aller Inhalte. Ich spiele morgen mal ein wenig und versuche die Infos noch in den Weblink zu bekommen. Mal sehen wie es dann ausschaut.
Danke für deine Einschätzung, macht IMHO keinen Sinn.
Gesendet von iPhone mit Tapatalk
Ich habe ein wenig weiter gebastelt und eine Grafik erstellt die Ertrag und Eigenverbrauch gemeinsam zeigt.
grau = Prognose Ertrag , schwarz = Prognose Verbrauch
Man sieht schön das ab 19:00 Uhr der Verbrauch vermutlich größer als der Ertrag wird und sich die Farbreihenfolge umkehrt,
das wiederholt sich dann in die andere Richtung morgen um 5:00 Uhr
Ich hab auch mal über eine Anzeige des echten Energieüberschuss nachgedacht. Da es hier aber auch zu negativen Werten kommen kann
ist die Darstellung noch etwas aufwendiger als in diesem Beispiel. Ich schau aber mal ob ich die Tage etwas brauchbares vorzeigen kann.
Was soll ich sagen, ich finde es super!
Hallo,
werden zwar erst in einigen Wochen eine Photovoltaik-Anlage mit Sunny Home Manager 2.0 installiert bekommen, möchte mich aber schon jetzt für Eure Ideen und vor allem die Arbeit bedanken!!!
Gruß
Blueberry63
@Wzut, sehr schöne Idee, jetzt fehlt nur noch eine anders farbige Spitzen der Säulen wenn die 70% - Regel greifen! ;-)
Zitat von: Xguide am 13 Mai 2019, 15:38:51
Ferner meinte ich, das man nicht zwingend Watt anzeigen muss und kW ausreichend wäre. Eine Einheit hinter dem Wert macht es dann für gelegentliche Betrachter plausibel.
Das ist IMHO auch so eine Glaubensfrage. Ich persönlich mag gerade zum Thema Strom Erzeugung/Verbrauch generell die Angaben in kW lieber.
So wird bei mir aus 6235 das griffige 6.2 - Hand aufs Herz die dadurch unterschlagenen 35 W spielen doch bei den Dimensionen keine Rolle mehr.
Allerdings mag ich anderseits dann wieder auch keine Zahlen die durch die Umrechnung W -> kW auf .0 enden,
d.h. wenn ich 6.0 sehe gruselt es mich, da es für mich eine glatte 6 ist. (noch schlimmer ist 0.0 )
Ich habe mir jetzt mal einen Umschalter eingebaut der diese Art von Umformatierung übernimmt.
Zitat von: saschab am 14 Mai 2019, 22:46:28
@Wzut, sehr schöne Idee, jetzt fehlt nur noch eine anders farbige Spitzen der Säulen wenn die 70% - Regel greifen! ;-)
Die Regel bezieht sich ja auf die Einspeisung und kann varieren, müsste also als Parameter herausgeführt werden. Um Diskussionen vorzubeugen, mir ist eine 60% und 70% Regel bekannt, vermutlich gibt es seit 2015 auch noch andere Konstellationen.
Also müssen die Readings L4_NextHourXX ins Verhälnis mit L2_PlantPeakPower * Regel gesetzte werden. Klingt nach einem Plan :) Leider komme ich aktuell zu nichts....
Hallo Jungs,
Ihr bzw. Wzut wart ja richtig fleissig. :D
Ich bin noch in den Highlands, aber habe schonmal einen Blick riskiert.
Nächste Woche bin ich wieder "im dienst" und kann mir alles genauer anschauen und in das modul übernehmen.
Muss es stück für stück erledigen weil ich verstehen muss was alles passiert ist um es später auch supporten zu können.
Also macht bitte erstmal ein bisschen langsamer sonst habe ich dann keinen Überblick mehr. ;)
Eine sache ist mir aber aufgefallen. Ich habe ja geplant das modul irgendwann mal offiziell ins repo zu übernehmen. Vor diesem hintergrund können wir die weathericons von sma nicht einfach ins repo übernehnen. Ich befürchte sonst copyright probleme. Also entweder auf vorhandene icons umstellen oder wir/ich müsste bei sma vorab um erlaubnis der verwendung bitten.
Ihr könnt ja schonmal drüber nachdenken.
Bis nächste woche ...
Lg,
Heiko
@Heiko,
ich habe dir für meine Verhältnisse extrem viel Kommentar/Erklärung in den Quelltext gepackt, genau aus dem Grund damit du nachvollziehen kannst warum und wozu.
U.a sind gerade zum Thema HTML Dinge erklärt die auf den ersten Blick vllt. unnöig/überflüssig erscheinen, die aber den Zweck erfüllen unter fast allen Styles das gleiche Endergebniss zu erzielen. Des weiteren ist das alles als reine Vorschläge zu sehen, d.h. du entscheidest was du drin haben möchtest und was nicht. bzw. wirst du mit Sicherheit an der ein oder anderen Stelle noch deine persönliche Duftmarken setzen wollen :)
Ja die Icons ist so ne Sache , z.Z sind die externen SMA Quellen verlinkt damit jeder sofort testen kann. Ich habe die Dinger aber auch schon von allen Metadaten befreit , nachbearbeitet und nach .svg konvertiert. Man könnte jetzt argumentieren sie sehen zwar aus wie SMA sind es aber nicht mehr :)
Vllt findet sich ja auch noch jemand mit mehr Grafik Begabung als ich (passender Forumsbereich) der was ganz FHEM eigenes basteln kann.
Klasse Wzut :D
Naja, ich sehe das Modul als unser Gemeinschaftsprojekt und werde wahrscheinlich das eine oder andere nur meinem "stil" anpassen, aber nur soweit wie es mir angebracht erscheint und sonst möglichst so lassen wie du es gemacht hast. Aber erst nächste woche.
Die icons betreffend wäre es schon schön wenn sma die verwendung begrüssen würde.
Es würde auch das erscheinungsbild sma typisch darstellen. Und vllt. Ist sma unserer szene gegeüber aufgeschlossen.
Ich kann es momentan nicht einschätzen.
Achso, ich würde die icons schon gern local haben wollen von wegen blocking gefahr wenn die dinger aus irgendwelchen gründen nicht abrufbar sind, na mal sehen ...
Lg
Ich glaube, so allergisch wie SMA damals auf den Portalabruf reagiert hat (weswegen ich das Plugin bis heute nicht nutze), werden sie kaum ihre Icons für lau rausgeben. Wenn es überhaupt SMA Eigentum ist, und sie nicht selber eine Lizenzgebühr zahlen. Warum bedient ihr Euch nicht an den Icons die in FTUI weather Widget genutzt werden? Diese sind frei.
Gesendet von iPhone mit Tapatalk
Zitat von: Waldmensch am 15 Mai 2019, 19:58:01
Warum bedient ihr Euch nicht an den Icons die in FTUI weather Widget genutzt werden? Diese sind frei.
ich schick dir gerne mal die Sammlung der knapp 50 SMA Icons und du suchst uns dann zu jedem SMA Icon das passende FTUI Icon aus ....
Bzw. verrate doch mal wo man die Dinger findet.
FTUI - neues Weather_Widget für Wettericons
https://r.tapatalk.com/shareLink?share_fid=75100&share_tid=96954&url=https%3A%2F%2Fforum%2Efhem%2Ede%2Findex%2Ephp%3Ftopic%3D96954&share_type=t
Gesendet von iPhone mit Tapatalk
https://www.amcharts.com/free-animated-svg-weather-icons/
Gesendet von iPhone mit Tapatalk
Zitat von: Waldmensch am 15 Mai 2019, 19:58:01
Ich glaube, so allergisch wie SMA damals auf den Portalabruf reagiert hat (weswegen ich das Plugin bis heute nicht nutze), werden sie kaum ihre Icons für lau rausgeben. Wenn es überhaupt SMA Eigentum ist, und sie nicht selber eine Lizenzgebühr zahlen. Warum bedient ihr Euch nicht an den Icons die in FTUI weather Widget genutzt werden? Diese sind frei.
Gesendet von iPhone mit Tapatalk
Da bin ich voll Deiner Meinung, allerdings mit der Ausnahme, dass ich das Modul auf einer sehr langen Cycletime benutze. Die Entscheidung für die SMA Icons ist im ersten Schritt durch eine fehlende Crossreferenz zwischen der WeatherID von SMA zum fhem Icon implementiert worden. Allerdings habe ich nur das Weather und DWD Modul verglichen.
Ich kann das nächste Woche aber mal angehen.
@Wzut, wieviele Icons hostet SMA?
Schönen Abend,
Marcel
Für das weather widget gibt es ja auch eine riesen Referenztabelle zwischen den mehreren Datenquellen und mehreren Icon Sets. Das ist ne Arbeit, ,,für Menschen die Vater und Mutter erschlagen haben", aber sie muss ja nur einmal gemacht werden ;)
Gesendet von iPhone mit Tapatalk
@Waldmensch , die Icons amcharts.com sehen gut aus !
Es sind zwar weniger als im SMA Portal, aber die sollten trotzdem völlig ausreichend sein.
Wir wollen hier ja kein Wettermodul ersetzen, wenn der Himmel grau ist habe ich weniger Ertrag, egal ob es nun nur nieselt oder Kuhscheisse regnet.
Bzw. es spielt auch keine Rolle ob die Nacht sternenklar mit Neumond oder bewölkt mit Vollmond ist :)
Hallo zusammen,
Bestandsaufnahme abgeschlossen. Wenn ihr mir sagt welches Iconset interessant wäre, dann würde ich die Liste vervollständigen.
Gruß Marcel
SMA icon name *.png Weather condition
01 Sonne mit Wolken
02 mittlere Wolken (2 von 3)
03 starke Wolken (3 von 3)
10 Nebel
11 Nebel mit Regen
20 Regen (viel)
21 Regen (viel) mit Schneefall
30 leichter Regen (1 Tropfen)
31 leichter Regen (2 Tropfen)
32 leichter Regen (3 Tropfen)
40 leichter Regen mit Schneefall (1 Tropfen)
41 leichter Regen mit Schneefall (3 Tropfen)
50 bewölkt mit Schneefall (1 Flocke)
51 bewölkt mit Schneefall (2 Flocken)
52 bewölkt mit Schneefall (3 Flocken)
60 Sonne, Wolke mit Regen (1 Tropfen)
61 Sonne, Wolke mit Regen (2 Tropfen)
62 Sonne, Wolke mit Regen (3 Tropfen)
70 Sonne, Wolke mit Schnee (1 Flocke)
71 Sonne, Wolke mit Schnee (3 Flocken)
80 Wolke mit Blitz
81 Wolke mit Blitz und Starkregen
90 Sonne (klar)
91 Sonne (klar) wie 90
100 Mond - Nacht
101 Mond mit Wolken - Nacht
102 Wolken mittel (2/2) - Nacht
103 Wolken stark (3/3) - Nacht
110 Nebel - Nacht
111 Nebel mit Regen (3 Tropfen) - Nacht
120 Regen (viel) - Nacht
121 Regen (viel) mit Schneefall - Nacht
130 leichter Regen (1 Tropfen) - Nacht
131 leichter Regen (2 Tropfen) - Nacht
132 leichter Regen (3 Tropfen) - Nacht
140 leichter Regen mit Schneefall (1 Tropfen) - Nacht
141 leichter Regen mit Schneefall (3 Tropfen) - Nacht
150 bewölkt mit Schneefall (1 Flocke) - Nacht
151 bewölkt mit Schneefall (2 Flocken) - Nacht
152 bewölkt mit Schneefall (3 Flocken) - Nacht
160 Mond, Wolke mit Regen (1 Tropfen) - Nacht
161 Mond, Wolke mit Regen (2 Tropfen) - Nacht
162 Mond, Wolke mit Regen (3 Tropfen) - Nacht
170 Mond, Wolke mit Schnee (1 Flocke) - Nacht
171 Mond, Wolke mit Schnee (3 Flocken) - Nacht
180 Wolke mit Blitz - Nacht
181 Wolke mit Blitz und Starkregen - Nacht
fehlt nur das für uns am wichtigsten fullysunny 00 Icon :) , ich sehe bei dem allerdings auch keinen Unterschied zu 90 & 91
Und wie oben schon geschrieben würde ich alles was Nacht ist 100 & 160-171 auch zusammenlegen
Regen & Schnee : muß man da wirklich unterscheiden zwischen Regen , Regen + Schnee und nur Schnee ?
Zitat von: Wzut am 16 Mai 2019, 13:04:51
fehlt nur das für uns am wichtigsten fullysunny 00 Icon :) , ich sehe bei dem allerdings auch keinen Unterschied zu 90 & 91
Und wie oben schon geschrieben würde ich alles was Nacht ist 100 & 160-171 auch zusammenlegen
Regen & Schnee : muß man da wirklich unterscheiden zwischen Regen , Regen + Schnee und nur Schnee ?
Bin da auch für eine Vereinfachung.
Aus PV-Sicht reicht eigentlich folgendes:
Sonne
Bewölkt (leicht)
Bewölkt (mittel)
Bewölkt (stark)
Nacht
wenn man also 5 icons hätte, bspw.
sun.png
cloud_light.png
cloud_medium.png
cloud_heavy.png
night.png
könnte die Aufteilung so aussehen:
SMA icon name *.png Weather condition pseude Zuordnung
00 Sonne (klar) sun.png
01 leichte Bewölkung (1/3) cloud_light.png
02 mittlere Bewölkung (2/3) cloud_medium.png
03 startke Bewölkung (3/3) cloud_heavy.png
10 Nebel cloud_heavy.png
11 Nebel mit Regen cloud_heavy.png
20 Regen (viel) cloud_heavy.png
21 Regen (viel) mit Schneefall cloud_heavy.png
30 leichter Regen (1 Tropfen) cloud_light.png
31 leichter Regen (2 Tropfen) cloud_medium.png
32 leichter Regen (3 Tropfen) cloud_heavy.png
40 leichter Regen mit Schneefall (1 Tropfen) cloud_light.png
41 leichter Regen mit Schneefall (3 Tropfen) cloud_heavy.png
50 bewölkt mit Schneefall (1 Flocke) cloud_light.png
51 bewölkt mit Schneefall (2 Flocken) cloud_medium.png
52 bewölkt mit Schneefall (3 Flocken) cloud_heavy.png
60 Sonne, Wolke mit Regen (1 Tropfen) cloud_light.png
61 Sonne, Wolke mit Regen (2 Tropfen) cloud_medium.png
62 Sonne, Wolke mit Regen (3 Tropfen) cloud_heavy.png
70 Sonne, Wolke mit Schnee (1 Flocke) cloud_light.png
71 Sonne, Wolke mit Schnee (3 Flocken) cloud_heavy.png
80 Wolke mit Blitz cloud_heavy.png
81 Wolke mit Blitz und Starkregen cloud_heavy.png
90 Sonne (klar) sun.png
91 Sonne (klar) wie 90 sun.png
100 Mond - Nacht night.png
101 Mond mit Wolken - Nacht night.png
102 Wolken mittel (2/2) - Nacht night.png
103 Wolken stark (3/3) - Nacht night.png
110 Nebel - Nacht night.png
111 Nebel mit Regen (3 Tropfen) - Nacht night.png
120 Regen (viel) - Nacht night.png
121 Regen (viel) mit Schneefall - Nacht night.png
130 leichter Regen (1 Tropfen) - Nacht night.png
131 leichter Regen (2 Tropfen) - Nacht night.png
132 leichter Regen (3 Tropfen) - Nacht night.png
140 leichter Regen mit Schneefall (1 Tropfen) - Nacht night.png
141 leichter Regen mit Schneefall (3 Tropfen) - Nacht night.png
150 bewölkt mit Schneefall (1 Flocke) - Nacht night.png
151 bewölkt mit Schneefall (2 Flocken) - Nacht night.png
152 bewölkt mit Schneefall (3 Flocken) - Nacht night.png
160 Mond, Wolke mit Regen (1 Tropfen) - Nacht night.png
161 Mond, Wolke mit Regen (2 Tropfen) - Nacht night.png
162 Mond, Wolke mit Regen (3 Tropfen) - Nacht night.png
170 Mond, Wolke mit Schnee (1 Flocke) - Nacht night.png
171 Mond, Wolke mit Schnee (3 Flocken) - Nacht night.png
180 Wolke mit Blitz - Nacht night.png
181 Wolke mit Blitz und Starkregen - Nacht night.png
Falls jemand etwas damit anfangen kann.....
Heiko hat zwar geschrieben wir sollen langsam machen , aber da er nächste Woche wieder da ist musste ich die offenen Baustellen wenigstens noch schliessen :)
Ich habe nun noch eine vierte Variante drin die die direkte Differenz anzeigt. ( Siehe Screenshot )
@Marcel, auf welcher Basis beruhen deine .png Namen ?
Ich habe deine Tabelle mal mit in den Quelltext aufgenommen, da hat man sie immer parat.
Die von Waldmensch vorgeschlagenen Icons habe ich auch mal getestet. Was die Jungs da ein bissel blöd gemacht haben ist das das Icon jeweils 64x64 px groß ist,
aber mit viel Rand :( Ich versteh nicht warum die den Platz nicht ausgenutzt haben, werde mal schauen was ich da machen kann.
@Wzut,
die PNGs hatten keinen Bezug, ich habe es nur auf 5 Bilder runtergebrochen.
Dachte mir, man kann nun mit Suchen und Ersetzten das finale Icon zuweisen.
Einen Switch...Case gibt es im Perl Standard nicht, soll ich noch die IF Verschachtelung zur WeatherID basteln?
Vor Sonntag wird es aber nichts bei mir.
Euch ein gutes WE,
Marcel
Es gibt doch aber key/value Listen im Pearl?
Gesendet von iPhone mit Tapatalk
Ok, das war dss Stichwort! Die kann ich ja schön sud dem Excel File generieren, wenn Wzut das nicht schon längst gemacht hat.
Dafür, dass meine Wortkorrektur ,,Pearl" geschrieben hat, bin ich was schuldig. Hier ein Link zum Umgang mit den Hashes https://caveofprogramming.com/perl-tutorial/perl-hashes-a-guide-to-associative-arrays-in-perl.html
Gesendet von iPhone mit Tapatalk
Zitat von: Xguide am 18 Mai 2019, 06:21:31
wenn Wzut das nicht schon längst gemacht hat.
Doch hatte er schon gestern Morgen :)
Ich bin euch noch die letzte Version schuldig, hatte da einen Darstellungsfehler der mich fast zur Verzweiflung gebracht hat ....
Bei den SVG bin ich auch einen Schritt weiter , einfache Icons konnte ich durch editieren des Quelltextes größer machen,
bei anderen tut Inkscape ganz gute Arbeit.
Die zusätzlichen Attribute sind type -> pv,co,pvco & dif für die nun vier möglichen Darstellungen
und das Attribut W/kW zum umschalten der Anzeigewerte
Und weil es so schön ist :) , Umbau auf die Standart FHEM Icons die mit weather_ beginnen.
Vorteil : FHEM übernimmt fast perfekt die Skalierung und passt je nach Style sogar die Ausgabefarbe an.
Falls man diese aber nicht möchte kann mit dem neuen Attribut weather_color umgefärbt werden.
(siehe Screenshot)
Kleiner Nachteil : es fehlt FHEM ein Icon für Nacht. Es gibt aber weiter oben in der Auswahl ein Icon mit Namen day_night.
Dieses habe ich mit Inkscape bearbeitet , d.h. die Sonne gelöscht und die Mondsichel vergrößert, es muß also nur dieses eine Icon der Sammlung zugefügt werden.
Ich werde mal im passenden Unterforum nachfragen ( https://forum.fhem.de/index.php/topic,100655.0.html )
und das Ding dann bei postiv Bescheid einchecken, wenn nicht kann es Heiko ja in seinen contrib Ordner packen.
Hallo Jungs,
@Wzut, mach mal in Ruhe deine Baustellen fertig.
Wenn ich ab Montag wieder aktiv bin, werde ich mich wohl erstmal um ein kleines Problem mit SMAEM kümmern.
Xguide kennt das.
Wenn ich das erledigt habe, gehe ich unser Modul wieder an.
Btw.... Top Job :D . Wäre gut wenn das eine Icon eingecheckt werden könnte. Soll ja perspektivisch nicht im contrib bleiben.
Grüße,
Heiko
Ok, dann hier meine letzte Version.
Das Nacht Icon habe ich als Übergang einfach in den Quelltext gepackt so das erst einmal jeder der testen möchte etwas sieht.
Edit : so langsam kapiere ich auch wie Inkscape bedient wird. Ich habe mal bei den drei weather_cloudy_ Icons die Sonne gelöscht und durch den Mond ersetzt.
So, heute wurden die Elektroarbeiten (neuer Verteilerschrank) abgeschlossen und meine SMA Gerätschaften in Betrieb genommen. SMAPortal läuft schon mal aber in Betrieb darf die Anlage erst nach dem Zählertausch durch den Netzbetreiber. Nun heißt es Warten bis ich endlich meine Module (seit Mitte April auf dem Dach) auch mal in mein Netz einspeisen dürfen. Bis dahin sehe ich in FHEM nur meinen aktuellen Bedarf aus dem Stromnetz.
Also habe ich ja nun noch etwas Zeit die Entwicklung hier im Thread aufzuarbeiten.
Habt ihr ein paar Tipps und Hinweise? Ist ja einiges passiert hier so wie es scheint :)
Helfen mir noch weitere Module für SMA außer dem Abgreifen des SunnyPortals?
Grüße
Dirk
Beim Testbetrieb sollte sich der Zähler rückwärts drehen. ;)
Gesendet von iPhone mit Tapatalk
Zitat von: Dersch am 20 Mai 2019, 22:48:31
Helfen mir noch weitere Module für SMA außer dem Abgreifen des SunnyPortals?
Natürlich, das Modul hier ist IMHO gut & schön um die Prognosedaten zu haben, aber für die eigenen Echtzeitdaten solltest du dir Heikos SMAEM anschauen.
Des weiteren gehe ich davon aus das dein Wechslrichter auch von SMA ist. Dann solte noch entweder SMAInverter dazu oder ModbusAttr.
Zitat von: Waldmensch am 20 Mai 2019, 23:11:01
Beim Testbetrieb sollte sich der Zähler rückwärts drehen. ;)
Gesendet von iPhone mit Tapatalk
Ich glaube das dürfen die heute nicht mehr, früher wurde das in der Tat so gemacht. Meine Anlage durfte auch erst nach dem Zählertausch in Betrieb gehen, das war 2015. Da aber meine Tochter am gleichen Tag geboren wurde, hatte ich ein paar andere Sachen um die Ohren und kenne nicht alle Details. Allerdings war der Netzbetreiber bei mir auch schneller, PV-Generator am Freitag abschliessend installiert, Montag Installation der WR und Kabel ziehen. Dienstag kamen dann die Stadtwerke mit dem neuen Zähler und ab ans Netz.
Gesendet von iPhone mit Tapatalk
Also mein Solarteur hat mir 2014 nach Fertigstellung der Anlage gesagt: ,,und das hier ist der Hauptschalter des Wechselrichters, sie dürfen den nicht reinstecken, sonst läuft der Zähler rückwärts" und später, im gehen: ,,übertreiben sies nicht" ;)
Gesendet von iPhone mit Tapatalk
Die Diskussion ist hier aber etwas OT ... Zähler ab Baujahr X haben eine Rücklaufsperre , kommt also auf einen Versuch an.
Auf jeden Fall ist es ein gutes Geschäft, denn später bekommt man nicht mehr 100 % des Kaufpreises für eine kWh ......
Dann mal wieder zu OnTopic....
Hallo Wzut,
ich habe Deine Version nun mal eingespielt - sorry eher war kein Zeit.
Nachdem ich mal alle attr gesetzt habe, gefällt es mir echt gut. Eine Sache ist etwas unübersichtlich im style pvco, vermutlich aber auch in den Anderen, und zwar wenn co > pv ist. Klar kann man das durch Farben definieren, aber eine weitere Idee wäre es die Werte zu negieren. bei -1.0 kW ist sofort klar, dass es sich um den Bezug handeln muss.
Sehe ich es richtig, dass im style ("type") pvco die consumer nicht mehr berücksichtig werden?
Darüberhinaus musste ich gerade feststellen, dass sie in den anderen Styles auch nicht funktionieren.
Hatte gerade keine Zeit zu vergleichen, habe meine Schleife zur Initialisierung des @pgCDev reinkopiert und es funzt wieder.
Solltest Du mal ersetzen....
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++
# MS: get consumer list and display it in portalGraphics
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++
#foreach (@pgCDev)
#{
# my ($itemName, undef) = split(':',$_);
# $itemName =~ s/^\s+|\s+$//g; #trim it, if blanks were used
#
# $_ =~ s/^\s+|\s+$//g; #trim it, if blanks were used
# #check if listed device is planned
# if (ReadingsVal($name, "L3_".$_."_Planned", "no") eq "yes")
# {
# #get start and end hour
# my ($start, $end); # werden auf Balken Pos 0 - 23 umgerechnet, nicht auf Stunde !!
# # Pos = 24 -> ungültige Pos = keine Anzeige
#
# if(AttrVal("global","language","EN") eq "DE")
# {
# (undef,undef,undef,$start) = ReadingsVal($name,"L3_".$itemName."_PlannedOpTimeBegin",'00.00.0000 24') =~ m/(\d{2}).(\d{2}).(\d{4})\s(\d{2})/;
# (undef,undef,undef,$end) = ReadingsVal($name,"L3_".$itemName."_PlannedOpTimeEnd",'00.00.0000 24') =~ m/(\d{2}).(\d{2}).(\d{4})\s(\d{2})/;
# }
# else
# {
# (undef,undef,undef,$start) = ReadingsVal($name,"L3_".$itemName."_PlannedOpTimeBegin",'0000-00-00 24') =~ m/(\d{4})-(\d{2})-(\d{2})\s(\d{2})/;
# (undef,undef,undef,$end) = ReadingsVal($name,"L3_".$itemName."_PlannedOpTimeEnd",'0000-00-00 24') =~ m/(\d{4})-(\d{2})-(\d{2})\s(\d{2})/;
# }
#
# $start = int($start);
# $end = int($end);
#
# #correct the hour for accurate display
# if ($start < $t{0})
# { #consumption seems to be tomorrow
# $start = 23-$t{0}+$start;
# } else { $start -= $t{0}; }
#
# if ($end < $t{0})
# { #consumption seems to be tomorrow
# $end = 23-$t{0}+$end;
# } else { $end -= $t{0}; }
#
# $_ .= ":".$start.":".$end;
#
# } else { $_ .= ":24:24"; }
#}
foreach (@pgCDev)
{
my ($itemName, undef) = split(':',$_);
$itemName =~ s/^\s+|\s+$//g; #trim it, if blanks were used
#check if listed device is planned
if (ReadingsVal($name, "L3_".$itemName."_Planned", "no") eq "yes")
{
#get start and end hour
my ($start, $end); # werden auf Balken Pos 0 - 23 umgerechnet, nicht auf Stunde !!
# Pos = 24 -> ungültige Pos = keine Anzeige
if(AttrVal("global","language","EN") eq "DE")
{
(undef,undef,undef,$start) = ReadingsVal($name,"L3_".$itemName."_PlannedOpTimeBegin",'00.00.0000 24') =~ m/(\d{2}).(\d{2}).(\d{4})\s(\d{2})/;
(undef,undef,undef,$end) = ReadingsVal($name,"L3_".$itemName."_PlannedOpTimeEnd",'00.00.0000 24') =~ m/(\d{2}).(\d{2}).(\d{4})\s(\d{2})/;
}
else
{
(undef,undef,undef,$start) = ReadingsVal($name,"L3_".$itemName."_PlannedOpTimeBegin",'0000-00-00 24') =~ m/(\d{4})-(\d{2})-(\d{2})\s(\d{2})/;
(undef,undef,undef,$end) = ReadingsVal($name,"L3_".$itemName."_PlannedOpTimeEnd",'0000-00-00 24') =~ m/(\d{4})-(\d{2})-(\d{2})\s(\d{2})/;
}
$start = int($start);
$end = int($end);
#correct the hour for accurate display
if ($start < $t{0})
{ #consumption seems to be tomorrow
$start = 23-$t{0}+$start;
} else { $start -= $t{0}; }
if ($end < $t{0})
{ #consumption seems to be tomorrow
$end = 23-$t{0}+$end;
} else { $end -= $t{0}; }
$_ .= ":".$start.":".$end;
} else { $_ .= ":24:24"; }
}
#+++++++++++++++++++++++++++++++++++++++++
#/MS
#+++++++++++++++++++++++++++++++++++++++++
Hier noch zwei Screenshots, Consumer gehen nach Modifikation in allen Styles wieder...
PM File anbei....
Zitat von: Xguide am 21 Mai 2019, 09:39:39
Eine Sache ist etwas unübersichtlich im style pvco, vermutlich aber auch in den Anderen, und zwar wenn co > pv ist. Klar kann man das durch Farben definieren, aber eine weitere Idee wäre es die Werte zu negieren. bei -1.0 kW ist sofort klar, dass es sich um den Bezug handeln muss.
<--snipp -->
Sehe ich es richtig, dass im style ("type") pvco die consumer nicht mehr berücksichtig werden?
a. Du meinst das was im Screenshot zu sehen ist ? Wenn man die Werte negiert ist das IMHO von der Logik falsch, denn mein Verbrauch bleibt positiv
Im type diff wird soetwas klar.
b. die consumers sollten nur bei pv & co gehen , ok Fehler war L3_".$itemName."_Planned" vs. L3_".$_."_Planned"
Das sie bei pvco und diff nicht gehen ist Absicht !
Hintergrund : zum einen unsere alte Diskussion wegen dem normalen Icon und dann wollte ich ein und die selbe Schleife nicht an drei Stellen verbauen.
IMHO gehört das in eine eigene Funktion und die kann man dann an drei Stellen aufrufen.
Bsp ist z.B. die neue Funktion formatVal6 - das wurde zuerst auch nur einmal gebraucht, ergo war es ok direkt in die Schleife zu schreiben.
Mit den anderen typen wurde es dann aber an sieben Stellen nötig, also ist es jetzt eine eigene Funktion.
Zitat von: Wzut am 21 Mai 2019, 10:19:41
a. Du meinst das was im Screenshot zu sehen ist ? Wenn man die Werte negiert ist das IMHO von der Logik falsch, denn mein Verbrauch bleibt positiv
Im type diff wird soetwas klar.
b. die consumers sollten nur bei pv & co gehen , ok Fehler war L3_".$itemName."_Planned" vs. L3_".$_."_Planned"
Das sie bei pvco und diff nicht gehen ist Absicht !
Hintergrund : zum einen unsere alte Diskussion wegen dem normalen Icon und dann wollte ich ein und die selbe Schleife nicht an drei Stellen verbauen.
IMHO gehört das in eine eigene Funktion und die kann man dann an drei Stellen aufrufen.
Bsp ist z.B. die neue Funktion formatVal6 - das wurde zuerst auch nur einmal gebraucht, ergo war es ok direkt in die Schleife zu schreiben.
Mit den anderen typen wurde es dann aber an sieben Stellen nötig, also ist es jetzt eine eigene Funktion.
a: Formell natürlich komplett richtig, als Stilmittel durchaus üblich, oder?
b: D.h. wir ziehen es in eine extra Funktion, auch das wäre natürlich komplett der richtige Ansatz, und werden es in Zukunft wieder in allen types zur Verfügung haben? Sonst macht die Legende in den Styles die keine consumer unterstützen auch keinen Sinn.
a. Geschmacksache , frag 5 User und du hast 6 verschiedene Meinungen :)
b. vollkommen richtig, aber es machen eh nicht alle Attribute bei jedem Typ Sinn. Ich sehe das ganze Ding als Baukasten, der User bekommt mit 4 x klicken auf createPortalGrafik , vier verschiedene Angebote. Welche er davon nutzen möchte und wie im Detail ist ganz alleine ihm selbst überlassen. Das finde ich ist eine der großen Stärken von FHEM, der User kann selbst sehr viel bestimmen wenn der Modulautor mitspielt und nicht nur seine persönlichen Vorlieben im Fokus hat.
a) Totschlagargument? Oder ein Attribut spendieren und konfigurierbar machen.
b)
Zitatb. vollkommen richtig, aber es machen eh nicht alle Attribute bei jedem Typ Sinn.
Das hat jetzt aber nicht der fhem Benutzer entschieden.... Funktion überall vorsehen und wenn nicht gewünscht, dann keine Consumer per attr definieren wäre nach Deiner Intepretation das richtige Vorgehen.
eben was sonst ?
Attribut passt nicht zum Typ bezog sich z.B. auf color2 das bei pv & co gar nicht verwendet wird oder font_size das bei pvco nicht abgefragt wird.
Zitat
b. vollkommen richtig, aber es machen eh nicht alle Attribute bei jedem Typ Sinn. Ich sehe das ganze Ding als Baukasten, der User bekommt mit 4 x klicken auf createPortalGrafik , vier verschiedene Angebote. Welche er davon nutzen möchte und wie im Detail ist ganz alleine ihm selbst überlassen. Das finde ich ist eine der großen Stärken von FHEM, der User kann selbst sehr viel bestimmen wenn der Modulautor mitspielt und nicht nur seine persönlichen Vorlieben im Fokus hat.
Dann noch einmal das ganze Zitat, mit dem Hintergrund, dass ein Consumer bei einem Weblink type != pv oder co definiert sein kann, in der Legende angezeigt wird, aber nach aktuellem Stand niemals im Balken angezeigt wird. Das kann der User nicht ändern, wenn es vom Autor nicht vorgesehen ist. Vielleicht sprechen wir auch wieder aneinander vorbei, Dein Vorschlag die Icon-Einblendung in eine Funktion auszulagern und diese drei Mal aufzurufen war ja schon die Lösung. War mir nur nicht sicher ob du den Weg mitgehst.
Gesendet von iPhone mit Tapatalk
Zitat von: Xguide am 21 Mai 2019, 18:15:50
Vielleicht sprechen wir auch wieder aneinander vorbei
IMHO ja
@Heiko , ich habe jetzt nochmal einen Versuch gestartet zum Thema neue Icons in FHEM im Icon Thread. PM an Wuppi68 hatte ich auch geschrieben aber bisher ohne Antwort. Beim Suchen habe ich deinen Dialog mit Rudi zum Thema der SSCAM Icons gefunden, falls alle Stricke reißen must du vllt. nochmal diesen Weg gehen
Ich habe ein bissel hin und her kopiert und komme so auf 9 zusätzliche Icons
1x Nacht oder Mond , 3x Wolken bei Nacht , 3 x Schneeregen und 2x Nebel (Tag/Nacht) - wobei halt die Frage ist wie malt man Nebel ? ....
Dann hätte ich noch einen kleinen Bug / Schönheitsfehler beim zuweisen der Readings. Da SMA wohl gerne mit Watt Sekunden arbeitet, rechnest du mit int(x/3600) um.
Lx_NextHourxx_Consumption = co , Lx_NextHourxx_PvMeanPower = pv & daraus die +/- Differenz nach Lx_NextHourxx = dif
D.h. deine Formel für dif ist int( co - pv /3600) , rechnet man später co und pv zusammen ergibt das nicht immer genau dif
Ist mir aufgefallen als ich ein Typ pvco und diff direkt untereinander auf einer Seite hatte. Besser wäre die Formel int(co/3600) - int(pv/3600)
Zitat von: Xguide am 21 Mai 2019, 14:29:56
a) Totschlagargument? Oder ein Attribut spendieren und konfigurierbar machen.
Ich hatte dazu heute Morgen eine Idee, man könnte in jedem Typ eine zusätzliche Zeile (oben oder unten) einsetzen die den diff Wert anzeigt.
Im Screenshot ist es unten und oben zum vergleichen und um mir ein zweites Bild zu ersparen
Hi Wzut,
das finde ich gut!
Im Übrigen ist mir noch ein alter bekannter Fehler in Deiner Version aufgefallen.
Bitte kommentiere mal folgende Zeilen aus:
# If data is for the rest of the current day
if ( $current_day == $fc_day ) {
$restOfDaySum{'PV'} += $fc_obj->{'PvMeanPower'}->{'Amount'};
$restOfDaySum{'Consumption'} += $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600;
$restOfDaySum{'Total'} += $fc_obj->{'PvMeanPower'}->{'Amount'} - $fc_obj->{'ConsumptionForecast'}->{'Amount'} / 3600;
$restOfDaySum{'ConsumpRcmd'} += $fc_obj->{'IsConsumptionRecommended'} ? 1 : 0;
#$PV_sum += int($fc_obj->{'PvMeanPower'}->{'Amount'}); # integrator of daily PV
#$consum_sum += int($fc_obj->{'ConsumptionForecast'}->{'Amount'}/3600); # integrator of daily Consumption forecast
}
Die beiden Variablen werden weiter oben im Code gefüllt.
Zitat von: Xguide am 22 Mai 2019, 15:21:10
Die beiden Variablen werden weiter oben im Code gefüllt.
OK, habe ich übernommen , liegt so in der Nähe von Zeile 960
Hallo Wzut,
du unermüdlicher ... :D
ZitatBeim Suchen habe ich deinen Dialog mit Rudi zum Thema der SSCAM Icons gefunden, falls alle Stricke reißen must du vllt. nochmal diesen Weg gehen
Ich habe ein bissel hin und her kopiert und komme so auf 9 zusätzliche Icons
1x Nacht oder Mond , 3x Wolken bei Nacht , 3 x Schneeregen und 2x Nebel (Tag/Nacht) - wobei halt die Frage ist wie malt man Nebel ? ....
Ja, kann ich im schlimmsten Fall machen. Aber eigentlich sollte es ja kein Problem sein diese Icons im Standardverzeichnis zu ergänzen.
Du kannst die ganzen Icons mal in mein contrib (https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter) reinkopieren/einchecken. Dann kann ich mich parallel auch nochmal bemühen und ggf. online stellen.
Und Nebel malt man glaube ich als waagerechte Strichelchen, z.B. -> https://icon-icons.com/de/symbol/Wetter-Nebel/90800
Mache erstmal am SMAEM weiter ...
Bis später.
LG,
Heiko
Keine Atempause , Geschichte wird gemacht , es geht vorran ( Fehlfarben 1982 ) .....
Wuppi68 hat geantwortet ( er ist z.Z. im Urlaub ) -> https://forum.fhem.de/index.php/topic,12605.msg942407.html#msg942407
Ich denke damit solte alles klar sein, Ziel fhemSVG , kein extra Unterordner und die Namen mit weather_ beginnen lassen damit sie bei den anderen weather_ Icons gelistet werden. Ich mache noch den Quellcodes der .svgs sauber (Inkscape legt da immer so viel Müll ab), packe das alles in ein .zip und lege es unterhalb contrib/DS_Starter
Hallo Wzut,
ist alles angekommen. Werde mich spätestens ab Montag mit der Übernahme befassen.
Vielleicht schon am WE.
Habe ja nur 14 Tage Zeit bis du in den Urlaub gehst falls noch Fragen sind.
Eine habe ich bereits. Womit hast du die Umwandlung in svg gemacht ?
Habe es noch nicht gemacht, aber die Gelegenheit/Notwendigkeit ergibt sich bestimmt.
Grüße
Heiko
@Heiko,
a. gut - ich habe nur gestern Abend noch gesehen das du im zip eine Version des Moduls hast wo noch eine Debug Ausgabe mit Log3 drin ist.
Ansonst sind mögliche offene Baustellen / Erweiterungen als Anregung in den Kommentaren
b. ich fahre zwar am 2.Juni in Urlaub, gehe aber davon aus das ich da die meiste Zeit Internet habe :)
c. Das Programm nennt sich Inkscape, gibt es für alle Plattformen frei und findet sich in auch als Refrenz in vielen bestehenden .svg Icons im Quelltext.
Allerdings habe ich keine Icons wirklich von Grund auf neu erstellt oder umgewandelt. Ich habe einfach Elemente aus vorhandenen Icons rauskopiert, scaliert und neu zusammengestellt. Das war mir insofern wichtig da ich zum einen ein echt beschissener Grafiker bin (aber guter Fälscher) und zum anderen sollten die neuen Icons optisch zu den bereits vorhandenen passen.
Hallo Wzut,
ohne gerade nachgucken zu können. Hast Du eine Begrenzung eingebaut, ab wann ein Consumption Balken bei "Co/PVCO" angezeigt wird?
Das Reading "L4_NextHour06_Consumption" mit dem Wert 279 erzeugt bei mir keinen Balken und entsprechend keine Wertanzeige.
Grüße und einen sonningen Tag,
Marcel
Jein, es gibt Beschränkungen wenn es in der Nacht ist ( show_night) oder die Werte sehr klein werden so das ein Balken fast die Höhe 0px hätte.
Aber 279 ist eigentlich ein Wert der vom Betrag nicht in diese Rubrik fallen dürfte
Ich werde es mal im Auge behalten und mir auch noch einmal ansehen. Vielleicht ist beim Code merge was in die Hose gegangen.
zu diesem Thema mal ein Screenshot von mir.
Man sieht das der hellgraue Balken auch mit nur einem Wert von 52 angezeigt wird. Er ist eigentlich viel zu groß im direkten Vergleich mit seinem rechten Nachbar (529),
aber das kommt durch die Ausgabe der Zahl 52 die ihn auf diese Mindesthöhe hochzieht.
@Heiko, hast du dir das Modul schon vorgenommen ?
Wenn nein, ich hatte da gestern noch eine Idee :) Bisher habe ich Wert darauf gelegt die Balken so schmal wie möglich darzustellen, d.h.
ihre Breite wird bestimmt a. durch die Zahl (darüber,darunter,drin) , b. ob ein WetterIcon ausgegeben wird.
Was aber wenn der User vllt. nur wenige Balken (hours) anzeigen möchte und dabei die Balken gerne etws breiter hätte ?
Mit einem zusätzlichen Attribut width könnte man die Mindesbreite pro Balken bestimmen, Der Screenshot zeigt ein Beispiel, oben ohne width , d.h. die Balken sind so schmal wie nur irgendwie möglich, beim der unteren Ausgabe hat width einen Wert von 100px.
K.A. ob das jemand nutzen würde, vllt. in Verbindung mit Tablet UI ?
Stichwort Tablet UI , kann man da die Ausgabe überhaupt sinnvoll nutzen ?
Ich selbst habe keine Ahnung davon und hier scheint auch noch niemand damit unterwegs gewesen zu sein.
Hi Wzut,
nein, kannst noch fummeln. ;)
LG,
Heiko
Ich habe mir mal aus dem Trac das Modul SMAPortal geladen und in den Modulordner gepackt + FHEM neu gestartet. Wenn ich ein define machen will, schmiert FHEM ab. Sind da noch prerequisiten nötig oder ist das Modul aktuell kaputt? Fehlermeldung kam glaube aus Zeile 121 des Moduls. Komplette Fehlermeldung muss ich nachreichen, wenn ich am PC bin.
Gesendet von iPhone mit Tapatalk
@Waldmensch, wenn du es aus meinem contrib gezogen hast ist es lauffähig.
Woanders her müsste Wzut was dazu sagen.
Ich übernehme das Modul ab Montag nach und nach und gebe Status.
Grüße,
Heiko
Ist aus dem Trac Link, den du ab und zu im Thread mal gepostet hast. Fürs define reicht doch ein ,,define mySMA SMAPortal", so wies im Quelltext oben steht?
Gesendet von iPhone mit Tapatalk
Ja das passt. Dann brauche ich noch ein paar Fehlerinfos ...
Man braucht diese Pakete:
eval "use FHEM::Meta;1" or my $modMetaAbsent = 1;
use Data::Dumper;
use Blocking;
use Time::HiRes qw(gettimeofday);
use Time::Local;
use LWP::UserAgent;
use HTTP::Cookies;
use JSON qw(decode_json);
use MIME::Base64;
use Encode;
Zitat von: DS_Starter am 26 Mai 2019, 17:59:08
Woanders her müsste Wzut was dazu sagen.
ich habe bei den use Anweisungen nichts dazugebaut. Bei mir läuft es auch ohne Meta.pm
Das einzige, was ich im Log zu "SMAPortal" finden kann ist dieses
Undefined subroutine &main::sortTopicNum called at ./FHEM/76_SMAPortal.pm line 1161. <- gestern Nacht
Undefined subroutine &main::sortTopicNum called at ./FHEM/76_SMAPortal.pm line 1242. <- eben nochmal versucht
Ich führe ein normales
define mySMAPortal SMAPortal
aus und FHEM macht einen Neustart
Komando "Version" gibt folgendes aus
Latest Revision: 17899
File Rev Last Change
fhem.pl 17779 2018-11-18 17:49:14Z rudolfkoenig
96_allowed.pm 17613 2018-10-24 15:37:39Z rudolfkoenig
90_at.pm 17561 2018-10-18 14:45:30Z rudolfkoenig
98_autocreate.pm 17684 2018-11-05 15:52:53Z rudolfkoenig
57_Calendar.pm 17531 2018-10-14 16:19:52Z neubert
00_CUL.pm 17559 2018-10-18 07:45:07Z rudolfkoenig
09_CUL_FHTTK.pm 17083 2018-08-03 09:11:15Z Matscher
18_CUL_HOERMANN.pm 15510 2017-11-27 16:52:44Z rudolfkoenig
14_CUL_TX.pm 17102 2018-08-08 05:34:42Z rudolfkoenig
14_CUL_WS.pm 15603 2017-12-13 20:53:47Z rudolfkoenig
95_Dashboard.pm 16920 2018-06-29 12:01:56Z DS_Starter
93_DbLog.pm 17772 2018-11-18 07:42:15Z DS_Starter
93_DbRep.pm 17862 2018-11-27 22:10:21Z DS_Starter
98_dewpoint.pm 17027 2018-07-24 11:53:15Z hotbso
98_DOIF.pm 17789 2018-11-19 21:22:40Z Damian
98_dummy.pm 16965 2018-07-09 07:59:58Z rudolfkoenig
70_ENIGMA2.pm 17859 2018-11-27 20:10:17Z loredo
34_ESPEasy.pm 17759 2018-11-16 09:30:54Z dev0
91_eventTypes.pm 14888 2017-08-13 12:07:12Z rudolfkoenig
98_expandJSON.pm 17324 2018-09-11 06:48:31Z dev0
01_FHEMWEB.pm 17889 2018-12-03 18:02:31Z rudolfkoenig
11_FHT.pm 16293 2018-02-28 21:33:57Z rudolfkoenig
00_FHZ.pm 14888 2017-08-13 12:07:12Z rudolfkoenig
92_FileLog.pm 17181 2018-08-20 17:23:26Z rudolfkoenig
10_FS20.pm 14888 2017-08-13 12:07:12Z rudolfkoenig
# $Id: 42_FUIP.pm 00099 2018-09-24 15:00:00Z Thorsten Pferdekaemper $
98_GEOFANCY.pm 17593 2018-10-22 15:35:04Z loredo
95_holiday.pm 17763 2018-11-16 12:37:47Z rudolfkoenig
98_HourCounter.pm 11307 2016-04-25 08:02:06Z rudolfkoenig
98_HTTPMOD.pm 17736 2018-11-12 19:42:35Z StefanStrobel
02_HTTPSRV.pm 16874 2018-06-15 17:18:55Z neubert
59_LuftdatenInfo.pm 17548 2018-10-16 19:33:15Z igami
00_MQTT.pm 17362 2018-09-17 12:57:29Z hexenmeister
10_MQTT_BRIDGE.pm 17362 2018-09-17 12:57:29Z hexenmeister
10_MQTT_DEVICE.pm 17362 2018-09-17 12:57:29Z hexenmeister
91_notify.pm 17225 2018-08-29 12:34:29Z rudolfkoenig
98_RandomTimer.pm 16826 2018-06-06 20:39:28Z igami
33_readingsGroup.pm 16299 2018-03-01 08:06:55Z justme1968
76_SMAInverter.pm 16934 2018-07-02 20:11:29Z DS_Starter
32_speedtest.pm 12056 2016-08-22 19:30:31Z justme1968
99_SUNRISE_EL.pm 16632 2018-04-17 19:00:21Z rudolfkoenig
98_SVG.pm 17779 2018-11-18 17:49:14Z rudolfkoenig
98_telnet.pm 17529 2018-10-14 12:57:06Z rudolfkoenig
59_Twilight.pm 16005 2018-01-27 06:05:51Z igami
99_Utils.pm 15713 2017-12-28 11:01:02Z rudolfkoenig
98_version.pm 15140 2017-09-26 09:20:09Z markusbloch
59_Weather.pm 18973 2019-03-19 20:39:44Z CoolTux
No Id found for 10_WS980.pm
AttrTemplate.pm 17782 2018-11-18 20:18:15Z rudolfkoenig
No Id found for Batteries.pm
Blocking.pm 17553 2018-10-17 15:56:35Z rudolfkoenig
No Id found for Brightness.pm
No Id found for Cell.pm
No Id found for Chart.pm
No Id found for Clock.pm
Color.pm 11159 2016-03-30 16:08:06Z justme1968
DevIo.pm 17702 2018-11-07 19:02:28Z rudolfkoenig
No Id found for Dialog.pm
No Id found for DwdWebLink.pm
GPUtils.pm 6653 2014-10-02 11:59:37Z ntruchsess
No Id found for HeatingControl.pm
No Id found for HeatingOverview.pm
No Id found for HomeButton.pm
No Id found for Html.pm
HttpUtils.pm 17831 2018-11-24 15:09:17Z rudolfkoenig
No Id found for LabelHumidity.pm
No Id found for LabelReading.pm
No Id found for LabelTemperature.pm
No Id found for MenuItem.pm
Meta.pm 19255 2019-04-24 14:59:46Z loredo
No Id found for Model.pm
myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig
No Id found for Page.pm
No Id found for Popup.pm
No Id found for Push.pm
No Id found for ReadingsGroup.pm
No Id found for ReadingsList.pm
RTypes.pm 10476 2016-01-12 21:03:33Z borisneubert
No Id found for Select.pm
SetExtensions.pm 17774 2018-11-18 08:13:48Z rudolfkoenig
No Id found for ShutterControl.pm
No Id found for ShutterOverview.pm
No Id found for ShutterTimer.pm
No Id found for SimpleSwitch.pm
No Id found for Spacer.pm
No Id found for SpinDim.pm
No Id found for STATE.pm
No Id found for Sysmon.pm
TcpServerUtils.pm 17529 2018-10-14 12:57:06Z rudolfkoenig
No Id found for Thermostat.pm
No Id found for Title.pm
UConv.pm 17589 2018-10-22 13:37:00Z loredo
No Id found for UpStopDown.pm
No Id found for View.pm
No Id found for ViewTemplate.pm
No Id found for ViewTemplInstance.pm
No Id found for WeatherDetail.pm
No Id found for WeatherOverview.pm
No Id found for Window.pm
wundergroundAPI.pm 19250 2019-04-23 19:50:40Z loredo
doif.js 15546 2017-12-03 09:57:42Z Ellert
fhemweb.js 17826 2018-11-23 10:40:33Z rudolfkoenig
fhemweb_readingsGroup.js 15189 2017-10-03 17:53:27Z justme1968
svg.js 17699 2018-11-07 11:04:58Z rudolfkoenig
sortTopicNum kommt aus 99_Utlis.pm -> update 99_Utils , reload 99_Utils als kleine Runde
oder eben update, shutdown restart als Große
BTW : schönes altes FHEM , bin mal gespannt wo es als nächstes klemmt ....
Okay, ein generelles update hat nichts gebracht. Danach noch ein update 99_Utils ging dann.
Keine Ahnung in welchem Format die credentials eingegeben werden müssen. Werde nach dem Tatort mal auf Suche nach Infos gehen. <User>:<pw > scheint es nicht zu sein
Gesendet von iPhone mit Tapatalk
ZitatWerde nach dem Tatort mal auf Suche nach Infos gehen. <User>:<pw > scheint es nicht zu sein
Nein.
Habe die Commandref schon angefangen -> "help smaportal de":
set <name> credentials <username> <password>
Zitat von: DS_Starter am 26 Mai 2019, 21:08:33
Habe die Commandref schon angefangen -> "help smaportal de":
na dann scnell noch mein letzter Stand mit width
Weil es so schön ist zitiere ich mich mal selbst
Zitat von: Wzut am 06 Mai 2019, 12:46:53
c. Gegenwart. D.h. nur bei der aktuellen Stunde könnte man Prognose und Ist zusammenführen.
Wir haben nun wunderschöne Prognosegrafiken für die nächsten 24 Stunden, aber Ketzerfrage : was sind sie wert ?
D.h. irgendwie müsste man doch mal prüfen wie gut die spätere Wahrheit zur Prognose passte.
Ich habe mir heute mal nur die aktuelle Stunde vorgenommen und siehe da die SMA Buben und Mädels machen Vorhersagen die mit einer Punktlandung enden ....
Das bekommen die so gut hin da sie während der laufenden Stunde die Prognose an die Wirklichkeit anpassen, Beispiel heute in der Zeit von 16:00 bis 17:00 Uhr
2019-05-27_16:07:34 SMAP L6_pv: 3238
2019-05-27_16:22:32 SMAP L6_pv: 3199
2019-05-27_16:37:36 SMAP L6_pv: 3205
2019-05-27_16:52:32 SMAP L6_pv: 3049
d.h. um 16:07 mit 3238 kW ins Rennen gegangen, dreimal nach unten korrigiert um kurz vor Torschluß mit 3049 kW abzutreten
Hallo Wzut,
habe deinen letzten Stand runtergeladen.
Dann beginne ich mal mit der Übernahme.
Bitte jetzt erstmal nichts weiter ändern. Alles was uns/dir n och einfällt zunächst auf eine ToDo-Liste setzen um es später umzusetzen.
Die Prognosedaten sind m.M. nach eine Entscheidunghilfe um zu entscheiden ob ein Großverbraucher eingeschaltet bleiben soll wenn die PV-Erzeugung vorübergehend einbricht oder wann das Maximum der täglichen Erzeugung erwartet wird um danach zu handeln. Einen exakten Wert würde ich nicht erwarten, aber eine Tendenz und die ist gegeben.
Zugegeben, dazu braucht man keine Grafik denn die Readings würden reichen. Aber schön ist es trotzdem. :D
Grüße,
Heiko
Zitat von: DS_Starter am 27 Mai 2019, 20:12:43
Bitte jetzt erstmal nichts weiter ändern.
Ay,ay Sir ! mögliche Punkte für die ToDo stehen im Quelltext, bzw. ich hier im Thread Stichwort Marcel, Anzeige der Verbraucher
Das mit der Prognose ist schon klar, ich selbst habe für meine Frauen einen externen HM Energiemonitor gebastelt -> https://forum.fhem.de/index.php/topic,97550.0.html
als Entscheidungshilfe ob Wasch oder Spülmaschine jetzt angeworfen werden können. Das Problem ist klar bzw. die Frage die automatisch kam war "ok wenn jetzt nicht, aber wann dann ?"
Moin Wzut,
ja, habe schon verschiedene Dinge im Quelltext gesehen. Schaue hier im Thread dann auch noch.
Selbst habe ich auch noch etwas auf der ToDo. Zum Beispiel war der Einsatz des weblink nur als Übergang geplant. Ziel ist es ein eigenes Anzeigedevice zu bauen welches auch per longpoll aktualisiert wird und in das ich auch die jetzt vielfältig vorhandenen Attribute in der Hilfe unterbringen kann. Und noch etwas mehr.
Aber eins nach dem Anderen, bin in meinem Alter nicht mehr so multitaskingfähig. ;)
Btw ... die Zeitumrechnungen habe ich angepasst übernommen. Es werden nämlich von SMA verschiedene Typen von Zeiten geliefert (gekennzeichnet durch "Kind"). Das sind "unspecified" und "Utc". Man braucht also unterschiedliche Routinen an unterschiedlichen Stellen.
LG,
Heiko
Hallo zusammen,
alsbald es was zu testen gibt, stehe ich zur Verfügung. Ich bin gespannt was in der Zusammenführung dann noch funktioniert. Bin mit der jetzigen Lösung sehr zufrieden, allerdings entspricht sie nicht 1 zu 1 der Version von Wzut.
Grüße Marcel
Gesendet von iPhone mit Tapatalk
Hi Marcel,
keine Panik ;) oder wurdest du schonmal enttäuscht ?
Ich melde mich, aber alles mit der Ruhe.
Lg,
Heiko
Also ich finde schon das aus dem SVN sehr gut und bin gespannt.
Für mich funktioniert es leider aus technischer Sicht nicht wirklich. Ich habe einen DC gekoppelten Speicher von Solarwatt. Der Homemanager wertet das natürlich so, dass für mich nachts die Sonne scheint und tagsüber fehlt mir die Leistung, die der Speicher schon vor dem WR abgreift. Diese Leistung stünde aber eigentlich zur Verfügung, da der Speicher sofort das Laden unterbricht und ggf. noch zusätzlich DC in den WR pumpt, bevor Bezug vom Grid auftritt. Eine Richtige Lösung fällt mir dazu nicht ein.
Gesendet von iPhone mit Tapatalk
Zitat von: DS_Starter am 28 Mai 2019, 10:42:21
Hi Marcel,
keine Panik ;) oder wurdest du schonmal enttäuscht ?
Ich melde mich, aber alles mit der Ruhe.
Lg,
Heiko
Nein, natürlich nicht, ich bin gespannt!
Dann gleich mal eine Frage in die Runde.
Das Reading weatherId wird doch meiner Meinung nach nur für die Steuerung der weathericons in der Grafik genutzt.
Für eine weitere Verwendung ist das doch uninteressant. Deswegen würde ich es bei der Übernahme in den internen Hash verlegen. Damit würde es aus der (mittlerweile langen) Readingliste verschwinden und Platz und auch Events sparen.
Die Funktion bleibt natürlich erhalten wie sie ist.
Gibt es Einwände ?
nein, versteck die weather_id ruhig unter dem hash, entweder mit Punkt oder unter helper
ok, hatte an helper gedacht damit man ggf. per list die Info auslesen kann um was nachzusehen.
Hallo Wzut, @all,
bin mit der Übernahme schon weit fortgeschritten. Heute werde ich zunächst die Icons einchecken damit sie für alle zentral verfügbar sind.
Aber beim Wzut-Original ist mir in der Grafik etwas aufgefallen.
Und zwar sehe ich ein Problem beim Typ WL2 (consum). Es wird ab 22:00 - 04:00 kein Wert mehr angezeigt, wobei in dieser Zeit natürlich (ausschließlich) Verbräuche stattfinden. WL4 zeigt sie auch an.
Ich vermute einen Bug in der Logik zur Grafikerstellung. Ist das bekannt ?
Ungeachtet dessen habe ich es genau so übernommen, damit wir einen guten Übernahmestand haben.
Bugfixing können wir danach betreiben.
Grüße,
Heiko
works as designed :)
da der Typ co ein Zwillingsbruder von Typ pv ist muß um Stunden ohne Ertrag anzuzeigen das Attribut show_night auf 1 gesetzt werden.
Ah ja, Erleuchtung ! :D
Hätte ich mal bloß mal schon die Commandref ergänzt ... ;)
Aber nochmal ein großes Lob an dich bzw. XGuide. Das gefällt mir richtig gut was ich bis jetzt gesehen habe. 8)
Sag nicht nochmal du seist ein schlechter webdesigner.
Du und Xguide habe ich im Modul jetzt als Co-Autoren für den Grafikteil verewigt. Wenn du den Installer hättest, würdest du es auch direkt sehen.
Die Icons sind eingecheckt.
LG,
Heiko
THX, nochmal zu dem Anzeigeproblem : Ist vllt. jetzt doch etwas inkonsequent. Die zusätzliche diff Zeile kam später und fragt show_night nicht ab,
daher ist das auch in deinem ersten Screenshot etwas komisch, keine WetterIcons , keine Verbrauchswerte aber die diff Zeile belegt doch Stunden Raum der eigentlich mit dem Attribut eingespart werden sollte.
Achso : ändere mal deine color2 , du hast schwarze Balken mit schwarzer Schrift :)
Können wir uns ja vormerken noch etwas dran zu schrauben.
Wenn ich fertig bin mit der Überahme und alles im contrib steht, schreibe ich nochmal ein Statement mit dem Status und den ToDos die ich selbst dann noch vorhabe umzusetzen.
ZitatAchso : ändere mal deine color2 , du hast schwarze Balken mit schwarzer Schrift :)
War ne gute Idee ;)
Hallo miteinander,
das Coding habe ich nun säuberlich in das Modul integriert.
Bei der Übernahme habe ich ein paar geringfügige Anpassungen eingebracht, aber sonst die Lösung 1:1 übernommen.
Der Code sieht etwas anders aus, damit es für mich lesbar ist (jeder hat da so seine Vorlieben) ;)
Anpassungen:
* Im Setter createPortalGraphic gibt es eine Dropdown mit sprechenden Namen für die zu erstellen Layouts, also Generation, Consumption, ...
* Die Namen der erstellten Grafikdevices beginnen nun mit SPGx. Hintergrund ist, dass perspektivisch ein eigenes Grafikdevice statt weblink eingesetzt werden soll
* bei der initialen Erstellung bekommen die Grafiken einen sprechenden Alias mit gesetzt, z.B. "SMA Sunny Portal Graphics - Differential". Kann man hinterher ja ändern wenn es nicht gefällt.
* bei der initialen Erstellung bekommen die Grafiken "Generation & Consumption", "Differential" als zweite Farbe erstmal rot zugewiesen. Damit sieht man sofort die Zahlenwerte, sonst nur schwarz auf schwarz. Kann man hinterher ändern wenn es nicht gefällt/passt.
* im Header erscheint nur einmal der Link zum Parent-Device, unabhängig davon ob der Header ein- oder zweizeilig ist
* alle Attribute für die Grafikdevices sind im Abschnitt "Attribute der Grafikdevices" der SMAPortal Commandref (help smaportal de) enthalten.
* es gibt keine Readings "...WeatherId" mehr. Die Infos sind im Helper vorhanden und werden mit "List" ausgegeben.
* das Attribut "show_dif" heißt nun "show_diff" , ein "f" hatte mir gefehlt ;)
* das Intervall kann nur >= 120 Sekunden eingestellt werden wegen der "SMA-Abfragetoreranz", siehe Beitrag von Kenneth -> https://forum.fhem.de/index.php/topic,27667.msg937420.html#msg937420
Die neue Vesion steht als 1.8.0 in meinem contrib zum Download bereit:
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter (Downloadbutton benutzen)
Dort befindet sich auch ein Unterordner mit den zusätzlichen Icons, die man nach fhemSVG kopieren muss.
Die Icons sind aber bereits eingecheckt, d.h. mit einem fhem-Update hat man die per default vorhanden.
Implementierung:
Wer bereits die Entwicklungsersion-Version von Wzut im Einsatz hat, kann das Modul einfach runterladen und restarten.
Es läuft erstmal normal weiter. Es empfiehlt sich trotzdem eine vorhandene Grafik zu löschen und neu anzulegen wegen den oben erläuterten
Änderungen.
Wer meine contrib-Version vor 1.8.0 im Einsatz hat, löscht bitte vor Download und Restart eine eventuell vorhandene Grafik.
Sonst gibt es nach dem Restart Fehler.
Ausblick:
Ich habe noch folgendes vor umzusetzen:
* Die Namen der Grafikattribute im Stil anpassen, also statt hour_style dann hourStyle. Dafür gibt es glaube ich eine Routine damit der User nicht manuell umstellen muss.
* Die Ausgabe von Status in der Grafik ("Awaiting data ... etc.") in einem Style ausgeben um es ansprechend zu gestalten
* die Verwendung eines eigenen Grafikdevices. Das habe ich bei SSCam so entworfen. Damit kann die Grafik per longpoll immer aktualisiert werden. Ist schön für den Tabletteinsatz und man kann außerdem die Attribute dort normal unterbringen.
...
Viel Spass beim Testen.
LG und einen schönen Feiertag,
Heiko
also die HTML sub läßt sich noch gut lesen , fast zu gut, denn meine Rechtschreibfehler in den Kommentaren hättest du gern verbessern dürfen :)
Ich bin mal auf dein extra Device gespannt, dann hat hoffentlich dieses nicht Fisch und nicht Fleisch sein des weblink bei der Seitendarstellung endlich ein Ende.
Mich würde ja wirklich intressieren wie sich das auf einer Tablet UI Seite macht.
Hallo zusammen,
habe es gerade auch mal eben eingespielt.
Auf den ersten Blick fehlen mir wieder die Consumer - liegt aber daran, dass ich den "pvco" type bevorzuge und die dort nicht implementiert sind. Habe es für mich angepasst, muss aber noch in eine Funktion ausgelagert werden. Habe ich gerade nicht hinbekommen, werde es aber die Tage mal anpassen und vorschlagen.
Sonnige Grüße,
Marcel
Zitat von: DS_Starter am 30 Mai 2019, 09:58:33
Hallo miteinander,
das Coding habe ich nun säuberlich in das Modul integriert.
Bei der Übernahme habe ich ein paar geringfügige Anpassungen eingebracht, aber sonst die Lösung 1:1 übernommen.
Der Code sieht etwas anders aus, damit es für mich lesbar ist (jeder hat da so seine Vorlieben) ;)
Anpassungen:
* Im Setter createPortalGraphic gibt es eine Dropdown mit sprechenden Namen für die zu erstellen Layouts, also Generation, Consumption, ...
* Die Namen der erstellten Grafikdevices beginnen nun mit SPGx. Hintergrund ist, dass perspektivisch ein eigenes Grafikdevice statt weblink eingesetzt werden soll
* bei der initialen Erstellung bekommen die Grafiken einen sprechenden Alias mit gesetzt, z.B. "SMA Sunny Portal Graphics - Differential". Kann man hinterher ja ändern wenn es nicht gefällt.
* bei der initialen Erstellung bekommen die Grafiken "Generation & Consumption", "Differential" als zweite Farbe erstmal rot zugewiesen. Damit sieht man sofort die Zahlenwerte, sonst nur schwarz auf schwarz. Kann man hinterher ändern wenn es nicht gefällt/passt.
* im Header erscheint nur einmal der Link zum Parent-Device, unabhängig davon ob der Header ein- oder zweizeilig ist
* alle Attribute für die Grafikdevices sind im Abschnitt "Attribute der Grafikdevices" der SMAPortal Commandref (help smaportal de) enthalten.
* es gibt keine Readings "...WeatherId" mehr. Die Infos sind im Helper vorhanden und werden mit "List" ausgegeben.
* das Attribut "show_dif" heißt nun "show_diff" , ein "f" hatte mir gefehlt ;)
* das Intervall kann nur >= 120 Sekunden eingestellt werden wegen der "SMA-Abfragetoreranz", siehe Beitrag von Kenneth -> https://forum.fhem.de/index.php/topic,27667.msg937420.html#msg937420
Die neue Vesion steht als 1.8.0 in meinem contrib zum Download bereit:
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter (Downloadbutton benutzen)
Dort befindet sich auch ein Unterordner mit den zusätzlichen Icons, die man nach fhemSVG kopieren muss.
Die Icons sind aber bereits eingecheckt, d.h. mit einem fhem-Update hat man die per default vorhanden.
Implementierung:
Wer bereits die Entwicklungsersion-Version von Wzut im Einsatz hat, kann das Modul einfach runterladen und restarten.
Es läuft erstmal normal weiter. Es empfiehlt sich trotzdem eine vorhandene Grafik zu löschen und neu anzulegen wegen den oben erläuterten
Änderungen.
Wer meine contrib-Version vor 1.8.0 im Einsatz hat, löscht bitte vor Download und Restart eine eventuell vorhandene Grafik.
Sonst gibt es nach dem Restart Fehler.
Ausblick:
Ich habe noch folgendes vor umzusetzen:
* Die Namen der Grafikattribute im Stil anpassen, also statt hour_style dann hourStyle. Dafür gibt es glaube ich eine Routine damit der User nicht manuell umstellen muss.
* Die Ausgabe von Status in der Grafik ("Awaiting data ... etc.") in einem Style ausgeben um es ansprechend zu gestalten
* die Verwendung eines eigenen Grafikdevices. Das habe ich bei SSCam so entworfen. Damit kann die Grafik per longpoll immer aktualisiert werden. Ist schön für den Tabletteinsatz und man kann außerdem die Attribute dort normal unterbringen.
...
Viel Spass beim Testen.
LG und einen schönen Feiertag,
Heiko
Hi Heiko,
ich bekomme mit dieser Version folgende Fehler:
syntax error at ./FHEM/76_SMAPortal.pm line 8, near "<"
Unknown regexp modifier "/D" at ./FHEM/76_SMAPortal.pm line 9, at end of line
Unknown regexp modifier "/S" at ./FHEM/76_SMAPortal.pm line 9, at end of line
Unknown regexp modifier "/_" at ./FHEM/76_SMAPortal.pm line 9, at end of line
Unknown regexp modifier "/S" at ./FHEM/76_SMAPortal.pm line 9, at end of line
Unknown regexp modifier "/t" at ./FHEM/76_SMAPortal.pm line 9, at end of line
Unknown regexp modifier "/r" at ./FHEM/76_SMAPortal.pm line 9, at end of line
Unknown regexp modifier "/t" at ./FHEM/76_SMAPortal.pm line 9, at end of line
Unknown regexp modifier "/e" at ./FHEM/76_SMAPortal.pm line 9, at end of line
Unknown regexp modifier "/r" at ./FHEM/76_SMAPortal.pm line 9, at end of line
./FHEM/76_SMAPortal.pm has too many errors.
Vorher hatte ich die Testing 1.8.1 von Wzut erfolgreich im Einsatz.
Grüße
Dirk
Hi Dirk,
Du hast den Download nicht richtig gemacht. Musst den Download Button auf der Seite benutzen.
Wenn du die Fehler senkrecht liest ergibt sich der Nikname DS_Starter ;).
Lg
Ja das habe ich schon gemerkt und mich gewundert ;D
Ok dann probiere ich es nun richtig.
Danke
Dirk
Hallo zusammen,
für das SMAPortal gibt es nun ein zugeschnittenes Anzeigedevice. Es ist die Datei 76_SMAPortalSPG.pm
Zusätzlich gibt es ein paar Codinganpassungen im 76_SMAPortal damit die Gesamtfunktionalität gegeben ist.
Hauptvorteil ist, dass die Portalgrafik bei jedem Update automatisch in der Raumansicht aktualisiert wird.
Als kleine Hilfe gibt es im Header die Info des letzten Updates.
Die Attribute für die Grafikdarstellung habe ich dem allgemeinen Style angepasst. Unten sieht man eine Übersicht altes Attribut -> neues Attribut.
Da ich ein neues Grafikdevice gebaut habe, konnte ich die neuen Attributnamen direkt implementieren.
Hier die wesentlichen Änderungen im Überblick:
* Portalgrafik wird im eigenen Device erstellt
* die Attribute sind in der eigenen commandref des Grafikdevices beschrieben
* das Grafikdevice kann umbenannt und kopiert werden, Anpassungen erfolgen automatisch
* Attributnamen wurden geändert
color -> beamColor
color2 -> beamColor2
hours -> hourCount
hour_style -> hourStyle
show_header -> showHeader
show_link -> showLink
show_night -> showNight
maxPV -> maxPV
icon -> suggestIcon
height -> beamHeight
font_size -> spaceSize
html_start -> htmlStart
html_end -> htmlEnd
consumers -> consumerList
legend_style -> consumerLegend
show_weather -> showWeather
type -> layoutType
weather_color -> weatherColor
show_diff -> showDiff
width -> beamWidth
* Die Ausgabe von Status in der Grafik ("Awaiting data ..., disabled etc.") werden in einem Tabellenstyle ansprechend ausgegeben
Es stehen zwei Dateien 76_SMAPortal.pm, 76_SMAPortalSPG in meinem contrib zum Download bereit:
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter (Downloadbutton benutzen)
Implementierung:
Vor der Implementierung sind eventuell vorhandene Portalgrafiken zu löschen.
Danach beide angegebenen Dateien nach FHEM herunterladen und restarten.
Danach die Grafiken wie gewohnt erzeugen und mit den neuen Attributen parametrisieren.
Grüße
Heiko
Hallo miteinander,
ich habe in das SMAPortal nun auch die Informationen über den gegewärtigen Zustand der Verbraucher (Bluetooth-Steckdosen) implementiert die durch den Sunny Home Manager gesteuert werden.
Dadurch entstehen im Level 3 ein paar neue Readings wie hier beispielhaft angegegeben:
* L3_Waschmaschine_Power 0 W # aktueller Energieverbrauch durch den Verbraucher
* L3_Waschmaschine_Switch off (automatic) # Zustand. Kann on, off oder off (automatic) wenn auf Auto-Steuerung, sein
* L3_Waschmaschine_SwitchLastTime 07.06.2019 15:25:33 # Zeitpunkt der letzten Schaltung, also von on -> off oder off -> on
Die entsprechenden Statusicons (fest vorgegeben) werden auch auch in der Grafik in der Verbraucherlegende mit dargestellt.
Es stehen zwei Dateien 76_SMAPortal.pm, 76_SMAPortalSPG in meinem contrib zum Download bereit:
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter (Downloadbutton benutzen)
Ist die Vorgängerversion von SMAPortal die Version 2.0.0 reicht es aus die Dateien zu ersetzen und zu restarten.
Grüße,
Heiko
Hallo,
habe noch etwas weitergemacht und die Werte nun auch durchgehend mit den entsprechenden Einheiten versehen.
Für die DbLog-User wird dementsprechend ebenfalls für alle Readings ein Splitting der Werte und Units vorgenommen.
Ein Bug in der Berechnung von L4_NextHourXX habe ich auch korrigiert, der sich in einem der letzten Updates eingeschlichen hatte.
Wie gewöhnlich aus meinem Contrib herunterzuladen und Restart.
Schöne Pfingsten und Grüße,
Heiko
Habe noch einen Fehler in der grafischen Darstellung gefunden und korrigiert falls die Planung der Verbraucher auf den nächsten Tag fällt. Dann kam es vor, dass der Zeitraum nicht abgebildet wurde.
Version von 76_SMAPortal im Contrib ist nun 2.1.2.
An Alle die auch mal Löten wollen!
mit Hilfe der Module 76_SMAPortal, 76_SMAInverter und 77_SMAEM habe ich wie folgt mir eine LED-Anzeige gebastelt.
Und folgende Hardware benutzt: ESP8266, LED-Bänder (WS2812) und ein A4 Bilderrahmen.
Als Firmware auf den ESP8266 kommt https://github.com/sw-home/FHEM-LEDStripe (https://github.com/sw-home/FHEM-LEDStripe) zum Einsatz. Hier ein Anleitung: https://waschto.eu/ws2812-led-stripe-mit-fhem-steuern/ (https://waschto.eu/ws2812-led-stripe-mit-fhem-steuern/).
Teil 2 folgt in kürze!
Gruß Sascha
Hallo zusammen,
@saschab, nette Idee. 8) Ich hoffe die Module werden noch vielen Usern Freude bereiten und Nutzen bringen.
Ich habe auch noch Verbrauchsdaten der gesteuerten Bluetooth-Steckdosen hinzugefügt.
Dadurch ergeben sich im Level 3 zusätzliche Readings:
2019-06-10 18:10:08 L3_Geschirrspueler_EnergyRelativeMonthGrid 17 % # Anteil Netzbezug vom Verbrauchswert im Monat
2019-06-10 18:10:08 L3_Geschirrspueler_EnergyRelativeMonthPV 83 % # Anteil PV-Nutzung vom Verbrauchswert im Monat
2019-06-10 18:10:08 L3_Geschirrspueler_EnergyRelativeYearGrid 43 % # Anteil Netzbezug vom Verbrauchswert im Jahr
2019-06-10 18:10:08 L3_Geschirrspueler_EnergyRelativeYearPV 57 % # Anteil PV-Nutzung vom Verbrauchswert im Jahr
2019-06-10 18:10:08 L3_Geschirrspueler_EnergyTotalDay 2 Wh
2019-06-10 18:10:08 L3_Geschirrspueler_EnergyTotalMonth 4423 Wh # Gesamtverbrauch im Monat
2019-06-10 18:10:08 L3_Geschirrspueler_EnergyTotalMonthGrid 748 Wh # Anteil Netzbezug vom Verbrauchswert im Monat absolut
2019-06-10 18:10:08 L3_Geschirrspueler_EnergyTotalMonthPV 3675 Wh # Anteil PV-Nutzung vom Verbrauchswert im Monat absolut
2019-06-10 18:10:08 L3_Geschirrspueler_EnergyTotalYear 40434 Wh # Gesamtverbrauch im Jahr
2019-06-10 18:10:08 L3_Geschirrspueler_EnergyTotalYearGrid 17447 Wh # Netzbezug am Gesamtverbrauch im Jahr
2019-06-10 18:10:08 L3_Geschirrspueler_EnergyTotalYearPV 22987 Wh # Anteil PV-Nutzung am Gesamtverbrauch im Jahr
2019-06-10 18:10:08 L3_Geschirrspueler_Planned no
2019-06-10 18:10:08 L3_Geschirrspueler_PlannedOpTimeBegin undefined
2019-06-10 18:10:08 L3_Geschirrspueler_PlannedOpTimeEnd undefined
2019-06-10 18:10:08 L3_Geschirrspueler_Power 0 W
2019-06-10 18:10:08 L3_Geschirrspueler_Switch on
2019-06-10 18:10:08 L3_Geschirrspueler_SwitchLastTime 09.06.2019 12:42:04
Die Readings für RestOfDay und Tomorrow habe ich von Level 3 in das Level 2 verschoben. Das passt nun besser in des Gesamtkonzept.
Es gibt ein neues Attribut "verbose5Data" um den Logausstoß mit verbose 5 steuern zu können und die Supportfähigkeit zu verbessern.
Nach der Implementierung einfach kurz disable=1 und danach disable=0 setzen um die alte Readingstruktur durch die Neue zu ersetzen.
Wie immer aus meinem contrib zu laden wie oben angegeben. Version ist jetzt die 2.2.0.
Grüße,
Heiko
Teil 2 von mit ein paar Code Beispielen:
Zitat von: saschab am 10 Juni 2019, 14:13:14
An Alle die auch mal Löten wollen!
mit Hilfe der Module 76_SMAPortal, 76_SMAInverter und 77_SMAEM habe ich wie folgt mir eine LED-Anzeige gebastelt.
Und folgende Hardware benutzt: ESP8266, LED-Bänder (WS2812) und ein A4 Bilderrahmen.
Als Firmware auf den ESP8266 kommt https://github.com/sw-home/FHEM-LEDStripe (https://github.com/sw-home/FHEM-LEDStripe) zum Einsatz. Hier ein Anleitung: https://waschto.eu/ws2812-led-stripe-mit-fhem-steuern/ (https://waschto.eu/ws2812-led-stripe-mit-fhem-steuern/).
# LEDStripe
define StatusOG_LED LEDStripe 192.168.xxx.xxx
attr StatusOG_LED DbLogExclude .*
attr StatusOG_LED group StatusOG
# Config und Daten Dummy
define StatusOG_conf dummy
attr StatusOG_conf group StatusOG
attr StatusOG_conf webCmd state
setreading StatusOG_conf NAME StatusOG_LED
setreading StatusOG_conf NIGHT 23:00
setreading StatusOG_conf DAY 06:00
# LED aus
setreading StatusOG_conf COLOR00 0 0 0
# LED halbe Stufe
setreading StatusOG_conf COLOR05 32 128 32
#LED ganze Stufe
setreading StatusOG_conf COLOR10 0 255 0
# LED 70% Stufe
setreading StatusOG_conf COLOR15 128 255 0
# LED Fehler
setreading StatusOG_conf COLOR20 0 0 32
# LED Verbrauch halbe Stufe
setreading StatusOG_conf COLOR25 128 32 32
# LED Verbrauch ganze Stufe
setreading StatusOG_conf COLOR30 255 0 0
setreading StatusOG_conf LED00 00
setreading StatusOG_conf LED01 01
setreading StatusOG_conf LED02 02
setreading StatusOG_conf LED03 03
setreading StatusOG_conf LED04 04
setreading StatusOG_conf LED05 05
setreading StatusOG_conf LED06 06
setreading StatusOG_conf LED07 07
setreading StatusOG_conf LED08 08
setreading StatusOG_conf LED09 09
setreading StatusOG_conf LED10 10
setreading StatusOG_conf LED11 11
setreading StatusOG_conf LED12 12
setreading StatusOG_conf LED13 13
setreading StatusOG_conf LED14 14
setreading StatusOG_conf LED15 15
setreading StatusOG_conf LED16 16
setreading StatusOG_conf LED17 17
setreading StatusOG_conf LED18 18
setreading StatusOG_conf LED19 19
setreading StatusOG_conf LED20 20
setreading StatusOG_conf LED21 21
setreading StatusOG_conf LED22 22
setreading StatusOG_conf LED23 23
setreading StatusOG_conf LED24 24
setreading StatusOG_conf LED25 25
setreading StatusOG_conf LED26 26
setreading StatusOG_conf LED27 27
setreading StatusOG_conf LED28 28
setreading StatusOG_conf LED29 29
setreading StatusOG_conf LED30 30
setreading StatusOG_conf LED31 31
setreading StatusOG_conf LED32 32
setreading StatusOG_conf LED33 33
setreading StatusOG_conf LED34 34
setreading StatusOG_conf LED35 35
setreading StatusOG_conf LED36 36
setreading StatusOG_conf LED37 37
setreading StatusOG_conf LED38 38
setreading StatusOG_conf LED39 39
# setreadings Daten in StatusOG_conf
define N.GridConsumption.StatusOG_conf notify SMAEM:Bezug_Wirkleistung:.* { fhem "setreading StatusOG_conf GridConsumption "."$EVTPART1"}
attr N.GridConsumption.StatusOG_conf group StatusOG
define N.GridFeedIn.StatusOG_conf notify SMAEM:Einspeisung_Wirkleistung:.* { fhem "setreading StatusOG_conf GridFeedIn "."$EVTPART1"}
attr N.GridFeedIn.StatusOG_conf group StatusOG
define N.PV.TotalConsumption.StatusOG_conf notify SMAInverter:modulstate.* {\
# Energieverbrauch\
fhem "setreading StatusOG_conf PV ".sprintf("%.1f",(ReadingsVal("SMAInverter","total_pac",0)*1000));;\
my $tc = sprintf("%.1f",ReadingsVal("StatusOG_conf","PV",0)+ReadingsVal("StatusOG_conf","GridConsumption",0)-ReadingsVal("StatusOG_conf","GridFeedIn",0));; \
if($tc >= 0) { \
fhem ("setreading StatusOG_conf TotalConsumption ".sprintf("%.1f",$tc));;\
}\
\
# Autarkiegrad\
my $valA = (ReadingsVal("SMAInverter", "total_pac",0)*1000)-ReadingsVal("SMAEM", "Einspeisung_Wirkleistung",0);;\
my $calcVal = $valA / ($valA + ReadingsVal("SMAEM", "Bezug_Wirkleistung",0))*100;;\
fhem ("setreading StatusOG_conf AutarkyQuote ".($calcVal?sprintf("%.0f",$calcVal):"0"));;\
\
# Eigenverbrauchsquote\
my $totalpac = ReadingsVal("SMAInverter", "total_pac",0)*1000;;\
if($totalpac > 0) {\
my $valSelf = $totalpac - ReadingsVal("SMAEM", "Einspeisung_Wirkleistung",0);;\
my $calSelf = $valSelf / $totalpac * 100;;\
fhem ("setreading StatusOG_conf SelfConsumptionQuote ".sprintf("%.0f",$calSelf));;\
} else {\
fhem ("setreading StatusOG_conf SelfConsumptionQuote -");;\
}\
}
attr N.PV.TotalConsumption.StatusOG_conf group StatusOG
# jetzt LED
define StatusOG_Spalte00_0 DOIF ([[StatusOG_conf:NIGHT]-[StatusOG_conf:DAY]])\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED39] [StatusOG_conf:COLOR00])\
DOELSEIF ([StatusOG_conf:TotalConsumption] < 10.0 and [StatusOG_conf:PV] < 10.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED39] [StatusOG_conf:COLOR00])\
DOELSEIF ([StatusOG_conf:TotalConsumption] <= 800.0 and [StatusOG_conf:TotalConsumption] > 10.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED39] [StatusOG_conf:COLOR25])\
DOELSEIF ([StatusOG_conf:TotalConsumption] > 800.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED39] [StatusOG_conf:COLOR30])\
DOELSEIF ([StatusOG_conf:TotalConsumption] <= 400.0 and [StatusOG_conf:PV] <= 800.0 and [StatusOG_conf:PV] > 10.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED39] [StatusOG_conf:COLOR05]) \
DOELSEIF ([StatusOG_conf:TotalConsumption] <= 800.0 and [StatusOG_conf:PV] > 800.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED39] [StatusOG_conf:COLOR10])\
DOELSE\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED30] [StatusOG_conf:COLOR00])
attr StatusOG_Spalte00_0 DbLogExclude .*
attr StatusOG_Spalte00_0 checkall event
attr StatusOG_Spalte00_0 event-min-interval .*:60
attr StatusOG_Spalte00_0 event-on-update-reading StatusOG_conf:PV,StatusOG_conf:TotalConsumption
attr StatusOG_Spalte00_0 group StatusOG
define StatusOG_Spalte00_1 DOIF ([[StatusOG_conf:NIGHT]-[StatusOG_conf:DAY]])\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED38] [StatusOG_conf:COLOR00])\
DOELSEIF ([StatusOG_conf:TotalConsumption] < 1600.0 and [StatusOG_conf:PV] < 1600.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED38] [StatusOG_conf:COLOR00])\
DOELSEIF ([StatusOG_conf:TotalConsumption] <= 2400.0 and [StatusOG_conf:TotalConsumption] > 1600.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED38] [StatusOG_conf:COLOR25])\
DOELSEIF ([StatusOG_conf:TotalConsumption] > 2400.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED38] [StatusOG_conf:COLOR30])\
DOELSEIF ([StatusOG_conf:TotalConsumption] <= 1200.0 and [StatusOG_conf:PV] <= 2400.0 and [StatusOG_conf:PV] > 1600.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED38] [StatusOG_conf:COLOR05]) \
DOELSEIF ([StatusOG_conf:TotalConsumption] <= 2400.0 and [StatusOG_conf:PV] > 2400.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED38] [StatusOG_conf:COLOR10])\
DOELSEStatusOG_conf
attr StatusOG_Spalte00_1 DbLogExclude .*
attr StatusOG_Spalte00_1 checkall event
attr StatusOG_Spalte00_1 event-min-interval .*:60
attr StatusOG_Spalte00_1 event-on-update-reading StatusOG_conf:PV,StatusOG_conf:TotalConsumption
attr StatusOG_Spalte00_1 group StatusOG
define StatusOG_Spalte00_2 DOIF ([[StatusOG_conf:NIGHT]-[StatusOG_conf:DAY]])\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED37] [StatusOG_conf:COLOR00])\
DOELSEIF ([StatusOG_conf:TotalConsumption] < 3200.0 and [StatusOG_conf:PV] < 3200.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED37] [StatusOG_conf:COLOR00])\
DOELSEIF ([StatusOG_conf:TotalConsumption] <= 4000.0 and [StatusOG_conf:TotalConsumption] > 3200.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED37] [StatusOG_conf:COLOR25])\
DOELSEIF ([StatusOG_conf:TotalConsumption] > 4000.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED37] [StatusOG_conf:COLOR30])\
DOELSEIF ([StatusOG_conf:TotalConsumption] <= 3600.0 and [StatusOG_conf:PV] <= 4000.0 and [StatusOG_conf:PV] > 3200.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED37] [StatusOG_conf:COLOR05]) \
DOELSEIF ([StatusOG_conf:TotalConsumption] <= 4000.0 and [StatusOG_conf:PV] > 4000.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED37] [StatusOG_conf:COLOR10])\
DOELSE\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED37] [StatusOG_conf:COLOR00])
attr StatusOG_Spalte00_2 DbLogExclude .*
attr StatusOG_Spalte00_2 checkall event
attr StatusOG_Spalte00_2 event-min-interval .*:60
attr StatusOG_Spalte00_2 event-on-update-reading StatusOG_conf:PV,StatusOG_conf:TotalConsumption
attr StatusOG_Spalte00_2 group StatusOG
define StatusOG_Spalte00_3 DOIF ([[StatusOG_conf:NIGHT]-[StatusOG_conf:DAY]])\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED36] [StatusOG_conf:COLOR00])\
DOELSEIF ([StatusOG_conf:TotalConsumption] < 4800.0 and [StatusOG_conf:PV] < 4800.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED36] [StatusOG_conf:COLOR00])\
DOELSEIF ([StatusOG_conf:TotalConsumption] <= 5610.0 and [StatusOG_conf:TotalConsumption] > 4800.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED36] [StatusOG_conf:COLOR25])\
DOELSEIF ([StatusOG_conf:TotalConsumption] > 5610.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED36] [StatusOG_conf:COLOR30])\
DOELSEIF ([StatusOG_conf:TotalConsumption] <= 5200.0 and [StatusOG_conf:PV] <= 5610.0 and [StatusOG_conf:PV] > 4800.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED36] [StatusOG_conf:COLOR05]) \
DOELSEIF ([StatusOG_conf:TotalConsumption] <= 5610.0 and [StatusOG_conf:PV] > 5610.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED36] [StatusOG_conf:COLOR15])\
DOELSE\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED36] [StatusOG_conf:COLOR00])
attr StatusOG_Spalte00_3 DbLogExclude .*
attr StatusOG_Spalte00_3 checkall event
attr StatusOG_Spalte00_3 event-min-interval .*:60
attr StatusOG_Spalte00_3 event-on-update-reading StatusOG_conf:PV,StatusOG_conf:TotalConsumption
attr StatusOG_Spalte00_3 group StatusOG
define StatusOG_Spalte00_4 DOIF ([[StatusOG_conf:NIGHT]-[StatusOG_conf:DAY]])\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED35] [StatusOG_conf:COLOR00])\
DOELSEIF ([StatusOG_conf:TotalConsumption] < 6400.0 and [StatusOG_conf:PV] < 6400.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED35] [StatusOG_conf:COLOR00])\
DOELSEIF ([StatusOG_conf:TotalConsumption] <= 6800.0 and [StatusOG_conf:TotalConsumption] > 6400.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED35] [StatusOG_conf:COLOR25])\
DOELSEIF ([StatusOG_conf:TotalConsumption] > 7200.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED35] [StatusOG_conf:COLOR30])\
DOELSEIF ([StatusOG_conf:TotalConsumption] <= 6800.0 and [StatusOG_conf:PV] <= 7200.0 and [StatusOG_conf:PV] > 6400.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED35] [StatusOG_conf:COLOR05]) \
DOELSEIF ([StatusOG_conf:TotalConsumption] <= 7200.0 and [StatusOG_conf:PV] > 7200.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED35] [StatusOG_conf:COLOR15])\
DOELSE\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED35] [StatusOG_conf:COLOR00])
attr StatusOG_Spalte00_4 DbLogExclude .*
attr StatusOG_Spalte00_4 checkall event
attr StatusOG_Spalte00_4 event-min-interval .*:60
attr StatusOG_Spalte00_4 event-on-update-reading StatusOG_conf:PV,StatusOG_conf:TotalConsumption
attr StatusOG_Spalte00_4 group StatusOG
# Beispiel für Spalte 01 "in 1h" ohne Verbrauch Prognose - (Spalte 02 - 05 "in 2h, in 4h, in 6h und in 8h")
define StatusOG_Spalte01 DOIF ([[StatusOG_conf:NIGHT]-[StatusOG_conf:DAY]])\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED30] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED31] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED32] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED33] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED34] [StatusOG_conf:COLOR00])\
DOELSEIF ([SMAPortal:L4_NextHour01_PvMeanPower] < 10.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED30] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED31] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED32] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED33] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED34] [StatusOG_conf:COLOR00])\
DOELSEIF ([SMAPortal:L4_NextHour01_PvMeanPower] < 800.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED30] [StatusOG_conf:COLOR05],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED31] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED32] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED33] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED34] [StatusOG_conf:COLOR00])\
DOELSEIF ([SMAPortal:L4_NextHour01_PvMeanPower] < 1600.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED30] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED31] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED32] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED33] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED34] [StatusOG_conf:COLOR00])\
DOELSEIF ([SMAPortal:L4_NextHour01_PvMeanPower] < 2400.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED30] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED31] [StatusOG_conf:COLOR05],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED32] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED33] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED34] [StatusOG_conf:COLOR00])\
DOELSEIF ([SMAPortal:L4_NextHour01_PvMeanPower] < 3200.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED30] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED31] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED32] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED33] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED34] [StatusOG_conf:COLOR00])\
DOELSEIF ([SMAPortal:L4_NextHour01_PvMeanPower] < 4000.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED30] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED31] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED32] [StatusOG_conf:COLOR05],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED33] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED34] [StatusOG_conf:COLOR00])\
DOELSEIF ([SMAPortal:L4_NextHour01_PvMeanPower] < 4800.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED30] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED31] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED32] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED33] [StatusOG_conf:COLOR00],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED34] [StatusOG_conf:COLOR00])\
DOELSEIF ([SMAPortal:L4_NextHour01_PvMeanPower] < 5610.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED30] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED31] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED32] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED33] [StatusOG_conf:COLOR05],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED34] [StatusOG_conf:COLOR00])\
DOELSEIF ([SMAPortal:L4_NextHour01_PvMeanPower] < 6400.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED30] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED31] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED32] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED33] [StatusOG_conf:COLOR15],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED34] [StatusOG_conf:COLOR00])\
DOELSEIF ([SMAPortal:L4_NextHour01_PvMeanPower] < 7200.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED30] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED31] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED32] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED33] [StatusOG_conf:COLOR15],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED34] [StatusOG_conf:COLOR05])\
DOELSEIF ([SMAPortal:L4_NextHour01_PvMeanPower] < 8000.0)\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED30] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED31] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED32] [StatusOG_conf:COLOR10],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED33] [StatusOG_conf:COLOR15],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED34] [StatusOG_conf:COLOR15])\
DOELSE\
(set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED30] [StatusOG_conf:COLOR20],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED31] [StatusOG_conf:COLOR20],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED32] [StatusOG_conf:COLOR20],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED33] [StatusOG_conf:COLOR20],set [StatusOG_conf:NAME] pixel [StatusOG_conf:LED34] [StatusOG_conf:COLOR20])
attr StatusOG_Spalte01 DbLogExclude .*
attr StatusOG_Spalte01 checkall event
attr StatusOG_Spalte01 event-min-interval .*:300
attr StatusOG_Spalte01 event-on-update-reading SMAPortal:L4_NextHour01_PvMeanPower
attr StatusOG_Spalte01 group StatusOG
Teil 3 folgt in kürze!
Gruß Sascha
Hallo,
ich versuche mich gerade an der Installation von SMAPortal und bekomme beim laden des Moduls folgende Fehlermeldungen:
Zitat
syntax error at ./FHEM/76_SMAPortal.pm line 323, near "}{"
Global symbol "$color" requires explicit package name at ./FHEM/76_SMAPortal.pm line 324.
Global symbol "$htmldev" requires explicit package name at ./FHEM/76_SMAPortal.pm line 325.
Global symbol "$color" requires explicit package name at ./FHEM/76_SMAPortal.pm line 325.
Global symbol "$htmldev" requires explicit package name at ./FHEM/76_SMAPortal.pm line 329.
Global symbol "$color2" requires explicit package name at ./FHEM/76_SMAPortal.pm line 329.
Global symbol "$htmldev" requires explicit package name at ./FHEM/76_SMAPortal.pm line 332.
Global symbol "$htmldev" requires explicit package name at ./FHEM/76_SMAPortal.pm line 335.
syntax error at ./FHEM/76_SMAPortal.pm line 337, near "} else"
Can't use global @_ in "my" at ./FHEM/76_SMAPortal.pm line 348, near "= @_"
Woran kann das liegen?
Gruß
Blueberry63
Hi,
Zitatich versuche mich gerade an der Installation von SMAPortal und bekomme beim laden des Moduls folgende Fehlermeldungen:
Vermutlich nicht richt runtergeladen. Siehe weiter oben die Beiträge #543 bzw. #542.
Ansonsten meldst dich einfach nochmal, dann übertrage ich die Datei neu.
Grüße,
Heiko
Hallo Heiko,
ich bin mir ziemlich sicher, dass ich die Dateien richtig erstellt habe. Kann es an fehlenden Perl-Modulen liegen? FHEM läuft bei mir noch auf Debian Wheezy...
Blueberry63
Ah ja, guter Einwand. Allerdings nicht ein fehlendes Perl-Modul.
Es könnte ein zu altes FHEM bzw. zu alte fhem.pl sein. Die Stelle an der der Fehler kommt nutzt eine Funktion json2nameValue. Bin mir nicht sicher, aber ich denke die Funktion ist noch nicht sher alt dort drin.
ZitatEs könnte ein zu altes FHEM bzw. zu alte fhem.pl sein.
Mein FHEM ist vorgestern erst aktualisiert worden...
Welche Perl-Version hast du ? Vllt. ist die verwendete Syntax nicht gut für ältere Perl-Versionen.
Hallo zusammen,
bisher konnten nur Daten des SMA Portals abgefragt werden.
Nun gibt es auch die Möglichkeit, die vorhanden vom Home Manager verwalteten Bluetooth Steckdosen
zu schalten.
Dazu gibt es entspechende Set-Befehle sofern man mindestens detailLevel 3 eingestellt hat.
Das Modul muss die angeschlossenen Steckdosen und deren Parameter abgefragt haben.
In der Portalgrafik kann der Verbraucher direkt mit einem Mausklick auf den Statuskreis rechts neben
dem Symbol in der Legende umgeschaltet werden.
Das funktioniert auffallend schnell, obwohl das Signal erst im Portal verarbeitet werden muss bevor es zum Sunny Home Manager
gelangt.
Die Version ist 2.3.0 im Contrib
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter (Downloadbutton benutzen)
@blueberry63, lade dir diese Version auch runter und probiere es erneut. Kann mir momentan keinen wirklichen Reim machen, die Synteax der Funktion ist nicht sehr speziell.
EDIT: Ich habe die besagte Stelle etwas umgeschrieben. Vielleicht reicht das nun schon.
Grüße,
Heiko
In dem Anzeigedevice gab es das Attribut "W/kW" zur Umschaltung der Einheiten in W/h bzw. kW/h.
Es wird aber die Einheit Wh bzw. kWh (umgerechnet) vom Portal geliefert.
Ich habe es korrigiert, d.h. das Attribut heißt nun "Wh/kWh" und stellt die Einheiten in der Grafik korrekt dar.
Ist in meinem Contrib zum Download bereitgestellt.
Grüße,
Heiko
Jetzt funktioniert es :) :) :)
Danke! Dann mache ich mal weiter...
Blueberry63
ZitatJetzt funktioniert es :) :) :)
Login is erfolgreich, aber ich sehe folgende Fehlermeldung in L1ErrorMessages:
Zitat
The current data cannot be retrieved from the PV system. Check the cabling and configuration of the following energy meters:<div class="liveModeErrorSub"><ul><li class="faultingCounter"><span>Feed-in meter</span></il><li class="faultingCounter"><span>External consumption meter</span></il></ul></div>
Muss man die Abfrage vielleicht bei SMA freischalten lassen?
Blueberry63
Na dann war es doch der Code. Der war offensichtlich nur für neuere Perl-Versionen passend.
Prima :D
ZitatMuss man die Abfrage vielleicht bei SMA freischalten lassen?
Nein, keinesfalls.
Stimmt der User/Passwort für das Portal ? Wenn du dich mit dem verwendeten User direkt im Portal anmeldest bekommst du dann die Daten ?
Ansonsten mal verbose 4 einschalten und einen Logauszug posten.
EDIT: Normal wäre jetzt allerdings:
L1_WarningMessages The current PV generation could not be fully determined. An inverter did not respond in time.
-> jetzt wird ja nichts generiert.
LG,
Heiko
Ich nehme (fast) alles zurück: es funktioniert jetzt doch, es werden Daten gezogen. Allerdings bleibt die Fehlermeldung:
Zitat
state = Data can't be retrieved from SMA-Portal. Reread at next scheduled cycle.
L1_WarningMessages = The current PV generation could not be fully determined. An inverter did not respond in time.
L1_ErrorMessages = The current data cannot be retrieved from the PV system. Check the cabling and configuration of the following energy meters:<div class="liveModeErrorSub"><ul><li class="faultingCounter"><span>Feed-in meter</span></il><li class="faultingCounter"><span>External consumption meter</span></il></ul></div>
Blueberry63
Die Warnung ist zu dieser Tageszeit normal -> keine PV Leistung
Das Portal liefert manchmal keine Daten. Man kann das Attribut "getDataRetries" erhöhen um die Abfrageversuche zu optimieren. Bei mir läuft es mit dem Wert 4 sehr gut. Probieren !
Weiterhin würde ich empfehlen im normalen Betrieb verbose 2 einzustellen.
Alles klar! An dieser Stelle ein großes DANKESCHÖN und vollen Respekt an alle, die hier mitentwickwlt haben!!!
Blueberry63
Hallo zusammen,
ich brauche mal etwas Testunterstützung von Usern mit einer Batterie an der PV-Anlage.
Ich habe die Version 2.3.2 in das contrib geladen. Dort gibt es nun auch Readings die anzeigen wieviel Energieanteile die Verbraucher im Monat/Jahr von der Batterie befriedigen und welche Energie pro Tag/Monat/Jahr insgesamt in die Batterie gepumpt bzw. entzogen wird.
D.h. da ich selbst keine Batterie habe kann ich nur hoffen es richtig gemacht zu haben.
Deswegen die Bitte zu schauen, ob es im Level 3 Readings gibt die etwa so heißen:
L3_BatteryDischargingMonth
L3_BatteryDischargingYear
L3_BatteryChargingDay
L3_BatteryChargingMonth
L3_BatteryChargingYear
L3_.*_EnergyRelativeMonthBatt
L3_.*_EnergyTotalMonthBatt
L3_.*_EnergyRelativeYearBatt
L3_.*_EnergyTotalYearBatt
Ja und wenn das klappen sollte bitte mal das Ergebnis posten damit ich weiß ob die Einheiten dafür stimmen.
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter (Downloadbutton benutzen)
LG,
Heiko
Ich habe mal eine allgemeine grundsätzliche Frage: besteht nicht die Gefahr, dass durch die große Menge der erfassten Daten die Log-Datei bzw. die Datenbank vollläuft? Und "Event-on-change-reading" macht hier ja wohl keinen Sinn.
Gruß
Blueberry63
ZitatFrage: besteht nicht die Gefahr, dass durch die große Menge der erfassten Daten die Log-Datei bzw. die Datenbank vollläuft? Und "Event-on-change-reading" macht hier ja wohl keinen Sinn.
Man kann "Event-on-.*-reading" durchaus einsetzen um nur die Events zu erzeugen die man für weitergehende Verarbeitung braucht.
Darüber hinaus kann man ja auch durch entsprechend Regex-Filterung nur die Events loggen die man möchte.
DbLog in Verbindung mit DbRep macht einem auch leicht die DB regelmäßig zu bereinigen oder auszudünnen, alte Daten zu löschen etc.
Es gibt sehr viele Möglichkeiten. Und eine DB läuft auch so schnell nicht "voll". Meine produktive MySQL enthält PV-Daten (und andere) seit 2014 und ist jetzt 3,7 GB groß. Auf einem NAS ist auch genug Platz.
Also keine Angst, da passiert nichts.
Und ganz nebenbei kann man Logfiles auch regelmäßig löschen lassen über die Versionierung in Filelog.
Grüße,
Heiko
Moin DS_StarterZitatich brauche mal etwas Testunterstützung von Usern mit einer Batterie an der PV-Anlage. ...
Ich denke da geht was nicht wie gewollt.
Beim detailLevel 3 wird nicht zusätzlich Angezeigt und
bei detailLevel 4 wird 3 ausgelassen.
s.h. Anhang
Hi Michael,
Hmm komisch. Schaue ich mir morgen an, bin grad unterwegs.
Aber das Bild allein hilft mir noch nicht. Mach mal bitte noch einen verbose 4 Auszug.
Grüsse,
Heiko
Hi Heiko
Bitte sehr.
Zitat2019.06.15 15:35:08 4: mySMAPortal -> ################################################################
2019.06.15 15:35:08 4: mySMAPortal -> ### start of set/get data from SMA Sunny Portal ###
2019.06.15 15:35:08 4: mySMAPortal -> ################################################################
2019.06.15 15:35:08 4: mySMAPortal - Login to SMA-Portal succesful
2019.06.15 15:35:08 4: mySMAPortal - Getting live data
2019.06.15 15:35:08 4: mySMAPortal - Getting weather data
2019.06.15 15:35:08 4: mySMAPortal - Getting forecast data
2019.06.15 15:35:09 4: mySMAPortal - Getting consumer live data
2019.06.15 15:35:09 4: mySMAPortal - Livedata content "ErrorMessages": ARRAY(0x56f3500)
2019.06.15 15:35:09 4: mySMAPortal - Livedata content "InfoMessages": ARRAY(0x56f2ff0)
2019.06.15 15:35:09 4: mySMAPortal - Livedata content "WarningMessages": ARRAY(0x5a54fa8)
2019.06.15 15:35:09 4: mySMAPortal -> TotalConsumption - 427 W
2019.06.15 15:35:09 4: mySMAPortal -> BatteryChargeStatus - 97
2019.06.15 15:35:09 4: mySMAPortal -> SelfSupply - 427 W
2019.06.15 15:35:09 4: mySMAPortal - Livedata content "Info": HASH(0x58fc378)
2019.06.15 15:35:09 4: mySMAPortal -> AutarkyQuote - 100 %
2019.06.15 15:35:09 4: mySMAPortal -> BatteryIn - 20 W
2019.06.15 15:35:09 4: mySMAPortal -> DirectConsumptionQuote - 14
2019.06.15 15:35:09 4: mySMAPortal -> DirectConsumption - 427
2019.06.15 15:35:09 4: mySMAPortal -> SelfConsumptionQuote - 15 %
2019.06.15 15:35:09 4: mySMAPortal -> FeedIn - 2534 W
2019.06.15 15:35:09 4: mySMAPortal -> PV - 2981 W
2019.06.15 15:35:09 4: mySMAPortal - Livedata content "Timestamp": HASH(0x58f7bc8)
2019.06.15 15:35:09 4: mySMAPortal -> SelfConsumption - 447 W
2019.06.15 15:35:09 4: mySMAPortal - Plantdata "PlantPeakPower Amount": 5640
2019.06.15 15:35:09 4: mySMAPortal - Plantdata "PlantPeakPower Symbol": W
2019.06.15 15:35:09 4: mySMAPortal - Refresh - caller: SPG4.mySMAPortal, callerroom: "n.a.", detail: SPG4.mySMAPortal, pload: 0, forcePageRefresh: 0, event_Spgdev: 1
Danke, ein list bitte auch noch, ich vergaß. ;)
ZitatInternals:
CFGFN /opt/fhem/cfg/PV.cfg
CREDENTIALS Set
FUUID 5c82a5f3-f33f-ac33-c375-a9402ab732fbe3f3
FVERSION 76_SMAPortal.pm:v2.3.2-s00000/2019-03-14 TESTING
MODE Automatic - next polltime: 16:03:08
NAME mySMAPortal
NR 628
STATE ok
TYPE SMAPortal
HELPER:
CREDENTIALS eW:xg ................................
GETTER all
L2_ThisHour_WeatherId 0
L4_NextHour01_WeatherId 0
L4_NextHour02_WeatherId 0
L4_NextHour03_WeatherId 0
L4_NextHour04_WeatherId 0
L4_NextHour05_WeatherId 0
L4_NextHour06_WeatherId 0
L4_NextHour07_WeatherId 0
L4_NextHour08_WeatherId 0
L4_NextHour09_WeatherId 0
L4_NextHour10_WeatherId 0
L4_NextHour11_WeatherId 0
L4_NextHour12_WeatherId 0
L4_NextHour13_WeatherId 0
L4_NextHour14_WeatherId 0
L4_NextHour15_WeatherId 0
L4_NextHour16_WeatherId 0
L4_NextHour17_WeatherId 0
L4_NextHour18_WeatherId 0
L4_NextHour19_WeatherId 0
L4_NextHour20_WeatherId 0
L4_NextHour21_WeatherId 0
L4_NextHour22_WeatherId 0
L4_NextHour23_WeatherId 0
PACKAGE FHEM::SMAPortal
PLANTOID
RETRIES 4
SETTER none
SPGDETAIL SPG4.mySMAPortal
SPGDEV SPG4.mySMAPortal
SPGROOM
VERSION 2.3.2
oldlogintime 1560605306.4718
OLDREADINGS:
READINGS:
2019-06-15 16:01:09 L1_AutarkyQuote 100 %
2019-06-15 16:01:09 L1_BatteryChargeStatus 97
2019-06-15 16:01:09 L1_BatteryIn 20 W
2019-06-15 16:01:09 L1_BatteryOut 0 W
2019-06-15 16:01:09 L1_DirectConsumption 437
2019-06-15 16:01:09 L1_DirectConsumptionQuote 12
2019-06-15 16:01:09 L1_FeedIn 3232 W
2019-06-15 16:01:09 L1_GridConsumption 0 W
2019-06-15 15:28:26 L1_Login-Status successful
2019-06-15 16:01:09 L1_PV 3689 W
2019-06-15 16:01:09 L1_SelfConsumption 457 W
2019-06-15 16:01:09 L1_SelfConsumptionQuote 12 %
2019-06-15 16:01:09 L1_SelfSupply 437 W
2019-06-15 16:01:09 L1_TotalConsumption 437 W
2019-06-14 23:59:54 L1_today_Temperature 20.2 °C
2019-06-14 23:59:54 L1_today_WeatherDescription Light rain shower
2019-06-15 16:01:09 L1_today_WeatherDescription_DE Leichter Regenschauer
2019-06-15 01:59:55 L1_tomorrow_Temperature 27.9 °C
2019-06-15 01:59:55 L1_tomorrow_WeatherDescription Slightly cloudy
2019-06-15 16:01:09 L2_Forecast-Today-Consumption 11784 Wh
2019-06-15 16:01:09 L2_Forecast-Today-PV 25522 Wh
2019-06-15 16:01:09 L2_Next04Hours-Consumption 2071 Wh
2019-06-15 16:01:09 L2_Next04Hours-IsConsumptionRecommended 1 h
2019-06-15 16:01:09 L2_Next04Hours-PV 5250 Wh
2019-06-15 16:01:09 L2_Next04Hours-Total 3179 Wh
2019-06-15 16:01:09 L2_PlantPeakPower 5640 W
2019-06-15 16:01:09 L2_RestOfDay-Consumption 3362 Wh
2019-06-15 16:01:09 L2_RestOfDay-IsConsumptionRecommended 1 h
2019-06-15 16:01:09 L2_RestOfDay-PV 5414 Wh
2019-06-15 16:01:09 L2_RestOfDay-Total 2052 Wh
2019-06-15 16:01:09 L2_ThisHour 1726 Wh
2019-06-15 16:01:09 L2_ThisHour_Consumption 500 Wh
2019-06-15 16:01:09 L2_ThisHour_IsConsumptionRecommended yes
2019-06-15 16:01:09 L2_ThisHour_PvMeanPower 2226 Wh
2019-06-15 16:01:09 L2_ThisHour_Time 15.06.2019 16:00:00
2019-06-15 16:01:09 L2_Tomorrow-Consumption 11418 Wh
2019-06-15 16:01:09 L2_Tomorrow-IsConsumptionRecommended 8 h
2019-06-15 16:01:09 L2_Tomorrow-PV 25105 Wh
2019-06-15 16:01:09 L2_Tomorrow-Total 15246 Wh
2019-06-15 16:01:09 next04hours_state 5250 Wh
2019-06-15 16:01:09 state ok
2019-06-15 16:01:09 summary 3232 W
Attributes:
detailLevel 3
getDataRetries 4
group PV Anlage
interval 120
room Umwelt
Moin Michael,
also ich kann bei mir dein Problem nicht nachvollziehen. Klappt alles sauber in mit den diversen detailLevel Einstellungen.
Aber es gibt zwei Dinge die mir bei dir aufgefallen sind.
1. bei dir wird keine PLANTOID gesetzt (sieht man im List). Diese PLANTOID sollte spätestens nach dem zweiten Datenabrufzyklus gesetzt sein
2. Die Cosumer Livedata, also Readings wie L3_Geschirrspueler_Planned, L3_Geschirrspueler_PlannedOpTimeBegin, L3_Geschirrspueler_Power, L3_Geschirrspueler_Switch usw. müssten auf jeden Fall im DL 3 kommen da im Code dafür keinerlei Abhängigkeit von der PlantOid besteht.
Weitergehende Consumer data wie Tages-, Monats- , Jahreswerte oder Batterienutzungsdaten der einzelnen Verbraucher werden wegen der fehlenden PlantOid nicht abgerufen. Das ist zumindest dadurch erklärbar.
Mach mal folgendes nacheinander:
1. setze bitte verbose 5 und verbose5Data=consumerLiveData. Dann Daten abrufen lassen und die Logausgabe posten
2. setze bitte verbose 5 und verbose5Data=forecastData. Dann Daten abrufen lassen und die Logausgabe ebenfalls posten
Die Daten werden in 2.) sehr umfangreich sein. Möglicherweise besser in ein File packen und hier anhängen.
Ich hoffe wir sehen dann mehr.
Grüße,
Heiko
Bitte nochmal die Version aus meinem contrib ziehen. Ich habe die verbose 4 Ausgaben etwas angepasst und eine Warnung beseitigt falls Wetterdaten nicht geliefert wurden.
Hi Heiko
Im Anhang sind die beiden Dateien.
Hi Michael,
also was deine Consumer betrifft, wird vom SMA Portal nur eine leere Hülle geliefert, d.h.
zu 1.)
2019.06.16 10:35:54 5: mySMAPortal - Consumer live data received:
$VAR1 = {
'Message' => undef,
'MeasurementData' => [],
'Error' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
'__type' => 'HoManConsumerLiveData',
'ParameterData' => [],
'Status' => 0
};
Da ist einfach nichts drin. Deshalb wird nichts mit "L3_" generiert. Steht die Frage ob du Consumer am Sunny Home Manager angeschlossen hast und die auch im Portal zu sehen/definiert sind ?
Melde dich mal ganz normal an und schaue ob deine Bluetooth-Steckdosen, sofern du welche am Home Manager connected hast, dort angezeigt werden.
Ähnliches gilt für 2.)
'ForecastTimeframes' => undef,
Normalerweise ist der Zweig 'ForecastTimeframes' reichlich gefüllt mit Planungsdaten und Statistikdaten der Consumer.
Hier würde dann auch die PlantOid stehen, was bei dir ebenfalls nicht geliefert wird.
Nach meiner Analyse sind in deinem SMA Portal keine Consumer am Sunny Home Manager definiert oder können mit dem verwendeten User nicht angezeigt werden.
Check das bitte mal durch.
LG,
Heiko
Hi Heiko
Ich glaube, das wir aneinander vorbei Reden? :)
Eigendlich ging es hierum :
Zitat
Antw:SMA Sunny Home Manager abfragen.
« Antwort #566 am: 14 Juni 2019, 14:58:31 »
Hallo zusammen,
ich brauche mal etwas Testunterstützung von Usern mit einer Batterie an der PV-Anlage.
Ich habe die Version 2.3.2 in das contrib geladen. Dort gibt es nun auch Readings die anzeigen wieviel Energieanteile die Verbraucher im Monat/Jahr von der Batterie befriedigen und welche Energie pro Tag/Monat/Jahr insgesamt in die Batterie gepumpt bzw. entzogen wird.
D.h. da ich selbst keine Batterie habe kann ich nur hoffen es richtig gemacht zu haben.
Deswegen die Bitte zu schauen, ob es im Level 3 Readings gibt die etwa so heißen:
L3_BatteryDischargingMonth
L3_BatteryDischargingYear
L3_BatteryChargingDay
L3_BatteryChargingMonth
L3_BatteryChargingYear
L3_.*_EnergyRelativeMonthBatt
L3_.*_EnergyTotalMonthBatt
L3_.*_EnergyRelativeYearBatt
L3_.*_EnergyTotalYearBatt
Ja und wenn das klappen sollte bitte mal das Ergebnis posten damit ich weiß ob die Einheiten dafür stimmen.
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter (Downloadbutton benutzen)
LG,
Heiko
ZitatAutor: Michael
« am: Gestern um 14:47:09 » Zitat einfügen
Moin DS_Starter
Zitat
ich brauche mal etwas Testunterstützung von Usern mit einer Batterie an der PV-Anlage. ...
Ich denke da geht was nicht wie gewollt.
Beim detailLevel 3 wird nicht zusätzlich Angezeigt und
bei detailLevel 4 wird 3 ausgelassen.
s.h. Anhang
Hi Michael,
ZitatEigendlich ging es hierum :
Ja, das ist mir schon bewußt :)
Nur können diese zusätzlichen Informationen nicht kommen, wenn _überhaupt_ nichts vom SMA Portal geliefert wird wie oben beschrieben.
Deswege die Bitte mal nach den Verbrauchern im SMA Portal zu schauen ...
LG,
Heiko
@Michael, ich habe dir nochmal die 76_SMAPortal_V2.3.1.pm in das contrib gelegt. Damit kannst du einen Vergleich durchführen. In dieser Vorgängerversion fehlen lediglich die zusätzliche Batteriereadings der Verbraucher.
Grüße,
Heiko
Bitte bzw. Frage:
Könnte man vom SunnyPortal auch die Werte () von Tag vorher (GESTERN) abfragen und hier zur Verfügung stellen (nur als Readings)?
(s. Grafik)
TodayTotalConsumption
TodayTotalReceivedExtern
TodayTotalSelfProvision
TodayTotalPV
TodayTotalFeedingNet
YesterdayTotalConsumption
YesterdayTotalReceivedExtern
YesterdayTotalSelfProvision
YesterdayTotalPV
YesterdayTotalFeedingNet
Oder könnte ich mir diese Werte heute schon in einem UserReading selbst errechnen?
Gruß
Blueberry63
ZitatKönnte man vom SunnyPortal auch die Werte () von Tag vorher (GESTERN) abfragen und hier zur Verfügung stellen (nur als Readings)?
Wahrscheinlich geht das. Man muss nur den richtigen Seitenaufruf herausfinden der als Antwort ein JSON liefert, was wir dann auswerte und als Reading darstellen können.
Muss ich mal schauen. Vielleicht wird es schon in den bereits genutzten Aufrufen mitgeliefert (habe ich nicht alle im Kopf). Dann wäre es recht einfach und recht schnell gemacht.
LG,
Heiko
Hallo zusammen,
ich denke morgen komme ich auch zum Testen der neuen Version. Habe eine Batterie und Verbraucher.
Was anderes, liefert bei euch das Portal auch gerade keine Wetterinformationen?
Grüße Marcel
Gesendet von iPhone mit Tapatalk
Hi Marcel,
ja Wetterdaten kamen gestern zuletzt.
Grüße,
Heiko
Danke für die Bestätigung.
Das ist echt Käse, die ganzen Verbrauchsoptimierungen funktionieren nicht. Hoffentlich wird da schnell nachgebessert.
Beste Grüße Marcel
Gesendet von iPhone mit Tapatalk
Naja die PVMeanpower Vorhersage funktioniert, bringt zumindest Werte.
Ja, alles gut. Meinte die Speicherladung und Consumer Schaltung vom Portal.
Habe gerade den SMA Support informiert!
Gesendet von iPhone mit Tapatalk
Hallo zusammen,
leider ist es mir bis jetzt nicht gelungen, die von Blueberry63 in #581 angeregten Readings zu erzeugen.
Ich konnte bisher das Portal nicht dazu bewegen diese Daten auswertbar an FHEM zu liefern und habe das erstmal aufgegeben.
Falls jemand eine Idee diesbezüglich hat, versuche ich es gerne nochmal.
@Marcel und @Michael, gibt es eurerseits weitere Erkenntnisse mit der aktuellen Version ? Die 2.3.3 läuft bei astrein wie gehabt.
Grüße,
Heiko
Moin Heiko,
leider habe ich es vorher nicht geschafft.
Ich gehe die Posts jetzt sukzessive durch und versuche Deine Fragen zu beantworten.
Anbei ein Auszug der L3 Readings.
L3_BatteryDischargingMonth
L3_BatteryDischargingYear
L3_BatteryChargingDay
L3_BatteryChargingMonth
L3_BatteryChargingYearsind bei mir nicht zu fnden.
L3_Spuelmaschine_EnergyRelativeMonthBatt 6% 19.06.2019 09:18
L3_Spuelmaschine_EnergyRelativeMonthGrid 2% 19.06.2019 09:18
L3_Spuelmaschine_EnergyRelativeMonthPV 92% 19.06.2019 09:18
L3_Spuelmaschine_EnergyRelativeYearBatt 12% 19.06.2019 09:18
L3_Spuelmaschine_EnergyRelativeYearGrid 23% 19.06.2019 09:18
L3_Spuelmaschine_EnergyRelativeYearPV 66% 19.06.2019 09:18
L3_Spuelmaschine_EnergyTotalDay 1 Wh 19.06.2019 09:18
L3_Spuelmaschine_EnergyTotalMonth 14912 Wh 19.06.2019 09:18
L3_Spuelmaschine_EnergyTotalMonthBatt 848 Wh 19.06.2019 09:18
L3_Spuelmaschine_EnergyTotalMonthGrid 288 Wh 19.06.2019 09:18
L3_Spuelmaschine_EnergyTotalMonthPV 13776 Wh 19.06.2019 09:18
L3_Spuelmaschine_EnergyTotalYear 149543 Wh 19.06.2019 09:18
L3_Spuelmaschine_EnergyTotalYearBatt 17258 Wh 19.06.2019 09:18
L3_Spuelmaschine_EnergyTotalYearGrid 34312 Wh 19.06.2019 09:18
L3_Spuelmaschine_EnergyTotalYearPV 97973 Wh 19.06.2019 09:18
L3_Spuelmaschine_Planned yes 19.06.2019 09:18
L3_Spuelmaschine_PlannedOpTimeBegin 19.06.2019 14:15 19.06.2019 09:18
L3_Spuelmaschine_PlannedOpTimeEnd 19.06.2019 17:15 19.06.2019 09:18
L3_Spuelmaschine_Power 0 W 19.06.2019 09:18
L3_Spuelmaschine_Switch off (automatic) 19.06.2019 09:18
L3_Spuelmaschine_SwitchLastTime 19.06.2019 06:44 19.06.2019 09:18
L3_Trockner_EnergyRelativeMonthBatt 10% 19.06.2019 09:18
L3_Trockner_EnergyRelativeMonthGrid 0% 19.06.2019 09:18
L3_Trockner_EnergyRelativeMonthPV 89% 19.06.2019 09:18
L3_Trockner_EnergyRelativeYearBatt 14% 19.06.2019 09:18
L3_Trockner_EnergyRelativeYearGrid 30% 19.06.2019 09:18
L3_Trockner_EnergyRelativeYearPV 56% 19.06.2019 09:18
L3_Trockner_EnergyTotalDay 0 Wh 19.06.2019 09:18
L3_Trockner_EnergyTotalMonth 2786 Wh 19.06.2019 09:18
L3_Trockner_EnergyTotalMonthBatt 289 Wh 19.06.2019 09:18
L3_Trockner_EnergyTotalMonthGrid 10 Wh 19.06.2019 09:18
L3_Trockner_EnergyTotalMonthPV 2487 Wh 19.06.2019 09:18
L3_Trockner_EnergyTotalYear 98108 Wh 19.06.2019 09:18
L3_Trockner_EnergyTotalYearBatt 13462 Wh 19.06.2019 09:18
L3_Trockner_EnergyTotalYearGrid 29604 Wh 19.06.2019 09:18
L3_Trockner_EnergyTotalYearPV 55042 Wh 19.06.2019 09:18
L3_Trockner_Planned no 19.06.2019 09:18
L3_Trockner_PlannedOpTimeBegin undefined 19.06.2019 09:18
L3_Trockner_PlannedOpTimeEnd undefined 19.06.2019 09:18
L3_Trockner_Power 0 W 19.06.2019 09:18
L3_Trockner_Switch on 19.06.2019 09:18
L3_Trockner_SwitchLastTime 11.06.2019 12:48 19.06.2019 09:18
L3_Waschmaschine_EnergyRelativeMonthBatt 2% 19.06.2019 09:18
L3_Waschmaschine_EnergyRelativeMonthGrid 3% 19.06.2019 09:18
L3_Waschmaschine_EnergyRelativeMonthPV 95% 19.06.2019 09:18
L3_Waschmaschine_EnergyRelativeYearBatt 8% 19.06.2019 09:18
L3_Waschmaschine_EnergyRelativeYearGrid 24% 19.06.2019 09:18
L3_Waschmaschine_EnergyRelativeYearPV 68% 19.06.2019 09:18
L3_Waschmaschine_EnergyTotalDay 1 Wh 19.06.2019 09:18
L3_Waschmaschine_EnergyTotalMonth 9026 Wh 19.06.2019 09:18
L3_Waschmaschine_EnergyTotalMonthBatt 220 Wh 19.06.2019 09:18
L3_Waschmaschine_EnergyTotalMonthGrid 257 Wh 19.06.2019 09:18
L3_Waschmaschine_EnergyTotalMonthPV 8548 Wh 19.06.2019 09:18
L3_Waschmaschine_EnergyTotalYear 127542 Wh 19.06.2019 09:18
L3_Waschmaschine_EnergyTotalYearBatt 9779 Wh 19.06.2019 09:18
L3_Waschmaschine_EnergyTotalYearGrid 30452 Wh 19.06.2019 09:18
L3_Waschmaschine_EnergyTotalYearPV 87312 Wh 19.06.2019 09:18
L3_Waschmaschine_Planned no 19.06.2019 09:18
L3_Waschmaschine_PlannedOpTimeBegin undefined 19.06.2019 09:18
L3_Waschmaschine_PlannedOpTimeEnd undefined 19.06.2019 09:18
L3_Waschmaschine_Power 0 W 19.06.2019 09:18
L3_Waschmaschine_Switch on 19.06.2019 09:18
L3_Waschmaschine_SwitchLastTime 16.06.2019 12:45 19.06.2019 09:18
Zitat von: DS_Starter am 14 Juni 2019, 14:58:31
Hallo zusammen,
ich brauche mal etwas Testunterstützung von Usern mit einer Batterie an der PV-Anlage.
Ich habe die Version 2.3.2 in das contrib geladen. Dort gibt es nun auch Readings die anzeigen wieviel Energieanteile die Verbraucher im Monat/Jahr von der Batterie befriedigen und welche Energie pro Tag/Monat/Jahr insgesamt in die Batterie gepumpt bzw. entzogen wird.
D.h. da ich selbst keine Batterie habe kann ich nur hoffen es richtig gemacht zu haben.
Deswegen die Bitte zu schauen, ob es im Level 3 Readings gibt die etwa so heißen:
L3_BatteryDischargingMonth
L3_BatteryDischargingYear
L3_BatteryChargingDay
L3_BatteryChargingMonth
L3_BatteryChargingYear
L3_.*_EnergyRelativeMonthBatt
L3_.*_EnergyTotalMonthBatt
L3_.*_EnergyRelativeYearBatt
L3_.*_EnergyTotalYearBatt
Ja und wenn das klappen sollte bitte mal das Ergebnis posten damit ich weiß ob die Einheiten dafür stimmen.
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter (Downloadbutton benutzen)
LG,
Heiko
Zitat von: DS_Starter am 12 Juni 2019, 23:34:19
Hallo zusammen,
bisher konnten nur Daten des SMA Portals abgefragt werden.
Nun gibt es auch die Möglichkeit, die vorhanden vom Home Manager verwalteten Bluetooth Steckdosen
zu schalten.
Dazu gibt es entspechende Set-Befehle sofern man mindestens detailLevel 3 eingestellt hat.
Das Modul muss die angeschlossenen Steckdosen und deren Parameter abgefragt haben.
Hallo Heiko,
wirklich sehr geil. Das habe ich gar nicht für möglich gehalten, dass auch das Schalten funktioniert. Super schnell, viel besser als die langsame SMA app. Perfekt.
Getestet mit den Set-Befehlen --> Funktioniert!
Getestet mit den Icons in der Legende --> Funktioniert!
1000 Dank und beste Grüße,
Marcel
Hallo,
anbei noch ein Screenshot von dem zuvor schon berichteten Grafikbug im Typ pvco.
Unwillkürlich wird keine Consumption angezeigt, siehe hier 9 und 12 Uhr.
Anbei Readings für 12:00 Uhr!
L4_NextHour03 4714 Wh 19.06.2019 09:39
L4_NextHour03_Consumption 271 Wh 19.06.2019 09:32
L4_NextHour03_IsConsumptionRecommended yes 19.06.2019 09:32
L4_NextHour03_PvMeanPower 4985 Wh 19.06.2019 09:39
L4_NextHour03_Time 19.06.2019 12:00 19.06.2019 09:32
Hallo Heiko,
ich habe hier auch noch einen ganzen Haufen Fehler die bei einer Division auftauchen, augenscheinlich hatte der Wert vorher keine Einheit.
Die Angabe "Zeile 2" ist natürlich voll daneben....
2019.06.19 10:54:08 1: PERL WARNING: Argument "6883 W" isn't numeric in division (/) at (eval 10280) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "239 W" isn't numeric in division (/) at (eval 10280) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "0 W" isn't numeric in division (/) at (eval 10280) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6644 W" isn't numeric in division (/) at (eval 10280) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "56200 Wh" isn't numeric in division (/) at (eval 10280) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "13144 Wh" isn't numeric in division (/) at (eval 10280) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "36626 Wh" isn't numeric in division (/) at (eval 10280) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "10724 Wh" isn't numeric in division (/) at (eval 10280) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6883 W" isn't numeric in division (/) at (eval 10281) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "239 W" isn't numeric in division (/) at (eval 10281) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "0 W" isn't numeric in division (/) at (eval 10281) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6644 W" isn't numeric in division (/) at (eval 10281) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "57465 Wh" isn't numeric in division (/) at (eval 10281) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "13135 Wh" isn't numeric in division (/) at (eval 10281) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "36626 Wh" isn't numeric in division (/) at (eval 10281) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "10724 Wh" isn't numeric in division (/) at (eval 10281) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6883 W" isn't numeric in division (/) at (eval 10282) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "239 W" isn't numeric in division (/) at (eval 10282) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "0 W" isn't numeric in division (/) at (eval 10282) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6644 W" isn't numeric in division (/) at (eval 10282) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "57465 Wh" isn't numeric in division (/) at (eval 10282) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "13135 Wh" isn't numeric in division (/) at (eval 10282) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "36626 Wh" isn't numeric in division (/) at (eval 10282) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "10724 Wh" isn't numeric in division (/) at (eval 10282) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6883 W" isn't numeric in division (/) at (eval 10283) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "239 W" isn't numeric in division (/) at (eval 10283) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "0 W" isn't numeric in division (/) at (eval 10283) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6644 W" isn't numeric in division (/) at (eval 10283) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "57465 Wh" isn't numeric in division (/) at (eval 10283) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "13135 Wh" isn't numeric in division (/) at (eval 10283) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "36626 Wh" isn't numeric in division (/) at (eval 10283) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "10724 Wh" isn't numeric in division (/) at (eval 10283) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6883 W" isn't numeric in division (/) at (eval 10284) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "239 W" isn't numeric in division (/) at (eval 10284) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "0 W" isn't numeric in division (/) at (eval 10284) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6644 W" isn't numeric in division (/) at (eval 10284) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "57465 Wh" isn't numeric in division (/) at (eval 10284) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "13135 Wh" isn't numeric in division (/) at (eval 10284) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "36626 Wh" isn't numeric in division (/) at (eval 10284) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "10724 Wh" isn't numeric in division (/) at (eval 10284) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6883 W" isn't numeric in division (/) at (eval 10285) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "239 W" isn't numeric in division (/) at (eval 10285) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "0 W" isn't numeric in division (/) at (eval 10285) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6644 W" isn't numeric in division (/) at (eval 10285) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "57465 Wh" isn't numeric in division (/) at (eval 10285) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "13135 Wh" isn't numeric in division (/) at (eval 10285) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "36626 Wh" isn't numeric in division (/) at (eval 10285) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "10724 Wh" isn't numeric in division (/) at (eval 10285) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6883 W" isn't numeric in division (/) at (eval 10286) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "239 W" isn't numeric in division (/) at (eval 10286) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "0 W" isn't numeric in division (/) at (eval 10286) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6644 W" isn't numeric in division (/) at (eval 10286) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "57465 Wh" isn't numeric in division (/) at (eval 10286) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "13135 Wh" isn't numeric in division (/) at (eval 10286) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "36626 Wh" isn't numeric in division (/) at (eval 10286) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "10724 Wh" isn't numeric in division (/) at (eval 10286) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6883 W" isn't numeric in division (/) at (eval 10287) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "239 W" isn't numeric in division (/) at (eval 10287) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "0 W" isn't numeric in division (/) at (eval 10287) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6644 W" isn't numeric in division (/) at (eval 10287) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "57465 Wh" isn't numeric in division (/) at (eval 10287) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "13135 Wh" isn't numeric in division (/) at (eval 10287) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "36626 Wh" isn't numeric in division (/) at (eval 10287) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "10724 Wh" isn't numeric in division (/) at (eval 10287) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6883 W" isn't numeric in division (/) at (eval 10288) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "239 W" isn't numeric in division (/) at (eval 10288) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "0 W" isn't numeric in division (/) at (eval 10288) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6644 W" isn't numeric in division (/) at (eval 10288) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "57465 Wh" isn't numeric in division (/) at (eval 10288) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "13135 Wh" isn't numeric in division (/) at (eval 10288) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "36626 Wh" isn't numeric in division (/) at (eval 10288) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "10724 Wh" isn't numeric in division (/) at (eval 10288) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6883 W" isn't numeric in division (/) at (eval 10289) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "239 W" isn't numeric in division (/) at (eval 10289) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "0 W" isn't numeric in division (/) at (eval 10289) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "6644 W" isn't numeric in division (/) at (eval 10289) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "57465 Wh" isn't numeric in division (/) at (eval 10289) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "13135 Wh" isn't numeric in division (/) at (eval 10289) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "36626 Wh" isn't numeric in division (/) at (eval 10289) line 2.
2019.06.19 10:54:08 1: PERL WARNING: Argument "10724 Wh" isn't numeric in division (/) at (eval 10289) line 2.
Hi Marcel,
hast du die aktuellste v aus dem Contrib 2.3.3 ?
Diese Divisionsfehler habe ich nicht. Blöderweise sieht man die Readings nicht. Da ist vllt. irgendwo noch ein ReadingsVal statt ReadingsNum verwendet.
Heute Abend schaue ich nach ...
Grüße,
Heiko
@Marcel, was mir gerade eingefallen ist. Kann es sein dass du eigene Berechnungen anstellst und dabei Werte per ReadingsVal aus dem Modul ziehst ?
Die massiven Warnungen irritieren mich da es bei mir absolut keine gibt. Wenn ja, bitte auf ReadingsNum umstellen.
Grüße,
Heiko
Zitat von: DS_Starter am 19 Juni 2019, 13:00:49
@Marcel, was mir gerade eingefallen ist. Kann es sein dass du eigene Berechnungen anstellst und dabei Werte per ReadingsVal aus dem Modul ziehst ?
Die massiven Warnungen irritieren mich da es bei mir absolut keine gibt. Wenn ja, bitte auf ReadingsNum umstellen.
Grüße,
Heiko
Hi Heiko,
na klar - wie blöd man manchmal sein kann. Das mit den Fehlermeldungen hat sich mit ReadingsNum erledigt.
Ja, ich habe aktuelle Version heute runtergeladen....
Zitat von: Xguide am 19 Juni 2019, 09:45:32
Hallo,
anbei noch ein Screenshot von dem zuvor schon berichteten Grafikbug im Typ pvco.
Unwillkürlich wird keine Consumption angezeigt, siehe hier 9 und 12 Uhr.
Diesbezüglich vermute ich den Fehler in dieser Überprüfung. Wenn ich die Zeile wie dargestellt auskommentiere, dann habe ich auch Verbrauchswerte!
Vielleicht kann Wzut ja mal kurz was zum Hintergrund sagen....
if ($z3 < int($fsize/2)) { # dünnen Strichbalken vermeiden / ca. halbe Zeichenhöhe
#$z2 += $z3; $z3 = 0;
}
Hi Marcel,
bezüglich der Batteriedaten haben wir ja schon einen Teilerfolg. Die
L3_.*_EnergyRelativeMonthBatt
L3_.*_EnergyTotalMonthBatt
L3_.*_EnergyRelativeYearBatt
L3_.*_EnergyTotalYearBatt
werden generiert. Bezüglich der anderen Readings brauche ich eine verbose 5 Auszug.
Bitte verbose 5 und verbose5Data = consumerDayData. Dann Datenabruf und die Logdaten posten.
LG,
Heiko
Bezüglich deinem Anzeigeproblem bzw. Grafikbug im Typ pvco:
Wahrscheinlich ist das Attribut spaceSize im Anzeigedevice zu groß gesetzt. Setze es mal auf einen kleineren Wert.
Bei mir habe ich dieses Verhalten durch Vergrößern dieses Parameters auf z.B. 60 provozieren können.
Zitat von: Xguide am 19 Juni 2019, 14:36:55
Vielleicht kann Wzut ja mal kurz was zum Hintergrund sagen....
Der Hintergrund stehtt im Kommentar, ggf. ist fsize bei dir zu klein gewählt, spiel etwas damit.
Ansonsten bin ich ab Freitag wieder zu Hause und kann dann endlich mal die aktuelle Version von Heiko testen.
Hallo zusammen,
habe die Schreibweise der Readings etwas vereinheitlicht. Das betrifft die Verwendung von "-" und "_".
Außerdem ist "L4_plantOid" und "next04hours_state" gelöscht. PlantOid wird inzwischen ja im Helper gesetzt und verwendet.
"next04hours_state" ist obsolet, da identisch mit "L2_Next04Hours_PV".
Die geänderten Readings sind hier zusammengestellt:
L2_ThisHour L2_ThisHour_Total
L4_NextHourXX L4_NextHourXX_Total
L2_Next04Hours-Consumption L2_Next04Hours_Consumption
L2_Next04Hours-PV L2_Next04Hours_PV
L2_Next04Hours-Total L2_Next04Hours_Total
L2_Next04Hours-IsConsumptionRecommended L2_Next04Hours_IsConsumptionRecommended
L2_Forecast-Today-Consumption L2_ForecastToday_Consumption
L2_Forecast-Today-PV L2_ForecastToday_PV
L2_RestOfDay-Consumption L2_RestOfDay_Consumption
L2_RestOfDay-PV L2_RestOfDay_PV
L2_RestOfDay-Total L2_RestOfDay_Total
L2_RestOfDay-IsConsumptionRecommended L2_RestOfDay_IsConsumptionRecommended
L2_Tomorrow-Consumption L2_Tomorrow_Consumption
L2_Tomorrow-PV L2_Tomorrow_PV
L2_Tomorrow-Total L2_Tomorrow_Total
L2_Tomorrow-IsConsumptionRecommended L2_Tomorrow_IsConsumptionRecommended
Kurz disable=1 und wieder disable=0 setzen um die neuen Readings zu aktivieren.
Version ist 2.3.4.
Grüße,
Heiko
Zitat von: DS_Starter am 19 Juni 2019, 18:25:55
Bezüglich deinem Anzeigeproblem bzw. Grafikbug im Typ pvco:
Wahrscheinlich ist das Attribut spaceSize im Anzeigedevice zu groß gesetzt. Setze es mal auf einen kleineren Wert.
Bei mir habe ich dieses Verhalten durch Vergrößern dieses Parameters auf z.B. 60 provozieren können.
spaceSize steht auf 24, ist meines Wissens nach default, oder?
Im vorigen Beispiel gab es ja auch genug Erzeugung (ca. 5kW) und einen Verbrauch mit ca. 0,3kW. Werde das noch mal beobachten, aktuell habe ich die Zeile auskommentiert und es sieht optisch für mich besser aus.
ZitatspaceSize steht auf 24, ist meines Wissens nach default, oder?
Ja, ist der default. Spiele mal damit. Ich konnte es wie geschrieben provozieren.
Denkst du bitte noch an das verbose 5 Log wegen der Batterie-Readings ? ;)
Zitat von: DS_Starter am 19 Juni 2019, 18:08:34
Hi Marcel,
bezüglich der Batteriedaten haben wir ja schon einen Teilerfolg. Die
L3_.*_EnergyRelativeMonthBatt
L3_.*_EnergyTotalMonthBatt
L3_.*_EnergyRelativeYearBatt
L3_.*_EnergyTotalYearBatt
werden generiert. Bezüglich der anderen Readings brauche ich eine verbose 5 Auszug.
Bitte verbose 5 und verbose5Data = consumerDayData. Dann Datenabruf und die Logdaten posten.
LG,
Heiko
Hallo Heiko,
hier mal Auszüge aus dem verbose5 log, man was ein Haufen Daten. Ich denke BatteryCharging und BatteryDischarging sind die für dich interessanten Stellen, oder?
Update: wird abgeschnitten, Auszug anbei!
BatteryCharging
'BatteryCharging' => [
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T00:15:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T00:30:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T00:45:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T01:00:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T01:15:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T01:30:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T01:45:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T02:00:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T02:15:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T02:30:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T02:45:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T03:00:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T03:15:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T03:30:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T03:45:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T04:00:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T04:15:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T04:30:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T04:45:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T05:00:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T05:15:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T05:30:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T05:45:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T06:00:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T06:15:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T06:30:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T06:45:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T07:00:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 171,
'Time' => {
'DateTime' => '2019-06-19T07:15:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => '455.67',
'Time' => {
'DateTime' => '2019-06-19T07:30:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => '891.5',
'Time' => {
'DateTime' => '2019-06-19T07:45:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => '1208.33',
'Time' => {
'DateTime' => '2019-06-19T08:00:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => '1693.67',
'Time' => {
'DateTime' => '2019-06-19T08:15:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 2205,
'Time' => {
'DateTime' => '2019-06-19T08:30:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 2287,
'Time' => {
'DateTime' => '2019-06-19T08:45:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => '2285.67',
'Time' => {
'DateTime' => '2019-06-19T09:00:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => '2290.5',
'Time' => {
'DateTime' => '2019-06-19T09:15:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => '2286.67',
'Time' => {
'DateTime' => '2019-06-19T09:30:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => '2032.33',
'Time' => {
'DateTime' => '2019-06-19T09:45:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => '559.33',
'Time' => {
'DateTime' => '2019-06-19T10:00:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
ZitatIch denke BatteryCharging und BatteryDischarging sind die für dich interessanten Stellen, oder?
Ja, genau. Aber ich habe noch keine Summary oder etwas sinnvoll verwertbares gefunden.
Mach doch das nochmal und packe das gesamte Log vom DAtenabruf in ein File. Ich muss mir das dann in Ruhe zu Gemüte führen.
hattest du das angehängte file durchsucht?
Ja. Die bringen für jede 15 Minuten einen Messwert. Das lässt sich schlecht verarbeiten. Ich hatte gehofft dass es eine Zusammenfassung für den Tag gibt o.ä.
Vielleicht mit verbose4Data=consumerMonthData besser ? Mal probieren.
Hilf mir kurz, wie geht verbose4data?
Sorry , Schreibfehler -> verbose5Data ;)
Sieht irgendwie leer aus
2019.06.19 23:10:37 5: sunnyPortal - Consumer energy data of current month received:
{
2019.06.19 23:10:37 5: sunnyPortal - Consumer energy data of current month received:
{
'BasicLoad' => undef,
'BatteryCharging' => undef,
'BatteryDischarging' => undef,
'Consumers' => [
{
'ActivationOrder' => undef,
'Configuration' => {
'AutoComFailStatus' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
'AutoSwitchOn' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
'ConsumerColor' => {
Ja, stimmt.
Sieht bei mir auch so aus:
2019.06.19 23:21:22.365 5: Sonnenstrom - Consumer energy data of current month received:
{
'BatteryCharging' => undef,
'BasicLoad' => undef,
'Consumers' => [
{
'ActivationOrder' => undef,
'ConsumerRun' => undef,
'ConsumerColor' => {
'G' => 214,
'IsSystemColor' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
'IsNamedColor' => $VAR1->{'Consumers'}[0]{'ConsumerColor'}{'IsSystemColor'},
'Name' => '12ad62a',
'A' => 1,
'__type' => 'Color',
'B' => 42,
'IsKnownColor' => $VAR1->{'Consumers'}[0]{'ConsumerColor'}{'IsSystemColor'},
'IsEmpty' => $VAR1->{'Consumers'}[0]{'ConsumerColor'}{'IsSystemColor'},
'R' => 42
},
'__type' => 'ConsumerBalanceDeviceInfo',
'IsSempConsumer' => $VAR1->{'Consumers'}[0]{'ConsumerColor'}{'IsSystemColor'},
'TimeFramesOfDay' => undef,
'Consume' => [
{
'__type' => 'ConsumerBalanceMeasurand',
'Measurement' => '530.96',
'Time' => {
'Kind' => 'Unspecified',
'DateTime' => '2019-06-01T00:00:00',
'__type' => 'DateTime'
},
'ConsumerOid' => '1bfc4372-b696-4546-ad46-734a3cd43342',
'IntervalId' => 4
},
{
'IntervalId' => 4,
'ConsumerOid' => '1bfc4372-b696-4546-ad46-734a3cd43342',
'Time' => {
'Kind' => 'Unspecified',
'__type' => 'DateTime',
'DateTime' => '2019-06-02T00:00:00'
},
'Measurement' => '1141.906',
'__type' => 'ConsumerBalanceMeasurand'
},
{
'__type' => 'ConsumerBalanceMeasurand',
'Measurement' => 13,
'ConsumerOid' => '1bfc4372-b696-4546-ad46-734a3cd43342',
'IntervalId' => 4,
'Time' => {
'DateTime' => '2019-06-03T00:00:00',
'__type' => 'DateTime',
'Kind' => 'Unspecified'
}
},
{
'Time' => {
'Kind' => 'Unspecified',
'DateTime' => '2019-06-04T00:00:00',
'__type' => 'DateTime'
},
'ConsumerOid' => '1bfc4372-b696-4546-ad46-734a3cd43342',
'IntervalId' => 4,
'Measurement' => '12.994',
'__type' => 'ConsumerBalanceMeasurand'
},
{
'IntervalId' => 4,
'ConsumerOid' => '1bfc4372-b696-4546-ad46-734a3cd43342',
'Time' => {
'Kind' => 'Unspecified',
'__type' => 'DateTime',
'DateTime' => '2019-06-05T00:00:00'
Nur habe ich halt keine Batterie und da schien mir es normal zu sein.
Naja, schauen wir morgen nochmal. Gute Nacht erstmal. :)
Lg,
Heiko
Jo, ich muss auch mal Schluss machen.
Die Jahreswerte zeigen allerdings kein undef, mehr aber auch nicht, oder?
2019.06.19 23:23:31 5: sunnyPortal - Consumer energy data of current year received:
{
'BasicLoad' => [],
'BatteryCharging' => [],
'BatteryDischarging' => [],
Nö, ist auch nichts gescheites :'(
Schlaf gut !
Du auch, bis morgen!
Habe gerade noch mal im Portal geschaut, auf der Seite https://www.sunnyportal.com/Homan/ConsumerBalance gibt es auch keine reinen Batteriedaten für Monat/Jahr. Nur für den aktuellen Tag.
Die Informationen wären besser aufbereitet auf https://www.sunnyportal.com/FixedPages/HoManEnergyRedesign.aspx zu finden!
Guten Morgen,
Zitat
Die Informationen wären besser aufbereitet auf https://www.sunnyportal.com/FixedPages/HoManEnergyRedesign.aspx zu finden!
Ja, die Seite kenne ich. Allerdings war ich mit dem Bezug der Daten von dieser Seite gescheitert. Das ist eine ASPX mit einer POST-Anfrage (ähnlich dem Set zum Schalten der Dosen). Ich habe es versucht nachzubauen, aber als Antwort kam mmer nur ein HTML Framework des Seitenaufbaus. Die JSON-Daten fehlen in der Antwort. Konnte bisher nicht rausfinden, wie man an die Daten kommen könnte, falls das überhaupt ohne Javascript Unterstützung geht.
Vielleicht hat Wzut später eine Idee dazu. Zum jetzigen Zeitpunkt müssen wir diese Batteriereadings erstmal auf Eis legen denke ich.
Meiner Meinung nach hat das Modul schon einen recht hohen Reifegrad. Ich würde mich langsam mal daran setzen und die englische ComRef aufbauen für einen baldigen Check-In.
LG,
Heiko
Guten Morgen Heiko,
habe mir schon gedacht das die aspx Seiten anders funktionieren. Da wir ja alle der Ansicht waren, dass das Interessanteste der Portalfunktionen der Forecast war, muss man sagen das noch einige coole Features hinzu gekommen sind.
Das Schalten der Verbraucher ist der Hammer!
Die Batterie-Statistiken habe ich in meinem Fall über den Sunny Island realisiert mit dem Modul SMAInverter. Wenn sie hier hinein sollten, dann geht es nur auf Tagesbasis und dafür müssen die zyklischen Daten (15min) aufsummiert werden.
Ich stimme Dir zu, dass dieses Modul sehr ausgereift ist. Auf damit ins offizielle repo. Allerdings muss ich mir dann noch was einfallen lassen, da ich den Code immer dahingehend anpasse, dass die geplanten Verbraucher (zeitlich auf dem entsprechenden Balken) auch im typ pvco angezeigt werden.
Grüße Marcel
Gesendet von iPhone mit Tapatalk
ZitatWenn sie hier hinein sollten, dann geht es nur auf Tagesbasis und dafür müssen die zyklischen Daten (15min) aufsummiert werden.
Ich probiere mal ob sich diese Aufsummierung realisieren lässt. Wenn das klappt, können wir es noch mit reinnehmen.
ZitatAllerdings muss ich mir dann noch was einfallen lassen, da ich den Code immer dahingehend anpasse, dass die geplanten Verbraucher (zeitlich auf dem entsprechenden Balken) auch im typ pvco angezeigt werden.
Diese Ergänzung sollte doch noch machbar sein im Standard unterzubringen. Schau mal ob du einen Vorschlag hast, dann nehmen wir den rein.
Grüße,
Heiko
Zitat von: DS_Starter am 20 Juni 2019, 09:33:55
Diese Ergänzung sollte doch noch machbar sein im Standard unterzubringen. Schau mal ob du einen Vorschlag hast, dann nehmen wir den rein.
Das bedarf einer grundlegenden Entscheidung, wobei Wzut und ich uns nicht einigen konnten.
Consumption required = Lampe (ja/nein) --> ich präferiere ja, denn es steht noch Überschuss Strom zur Verfügung, auch wenn ein Consumer geplant ist.
Position Lampe (über Verbraucher, unterhalb Verbraucher) --> ich präferiere oberhalb, quasi da wo alle anderen auch sind.
Die Funktion zur Anzeige der Consumer Icons müsste in eine Funktion ausgelagert werden, wenn es dir leichter fällt als mir, dann würde ich mich freuen, wenn du
################################
# show consumer icon if planned
################################
foreach (@pgCDev) {
if ($_) {
my ($cons,$im,$start,$end) = split (':', $_);
Log3($name, 4, "$name - Consumer to show -> $cons, relative to current time -> start: $start, end: $end") if($i<1);
if ($im && ($i >= $start) && ($i <= $end)) {
$ret .= FW_makeImage($im);
}
}
}
################################
das in eine Funktion auslagern könntest und mir einen exemplarischen Aufruf zur Verfügung stellen könntest.
Dieser müsste dann imho an drei Stellen aufgerufen werden.
Bsp. pvco => das ist die Grafik die ich ausschliesslich benutze:
$ret .= "<tr class='odd' style='height:".$z2."px'>";
$ret .= "<td align='center' class='smaportal' ".$style1.">$val";
#consumption recommended (icon lamp)
$ret .= $is{$i} if (defined $is{$i});
################################
# show consumer icon if planned
################################
foreach (@pgCDev) {
if ($_) {
my ($cons,$im,$start,$end) = split (':', $_);
Log3($name, 4, "$name - Consumer to show -> $cons, relative to current time -> start: $start, end: $end") if($i<1);
if ($im && ($i >= $start) && ($i <= $end)) {
$ret .= FW_makeImage($im);
}
}
}
################################
$ret .= "</td></tr>";
Viele Grüße
Marcel
Ich habe die 2.3.5 bereitgestellt und kurz getestet. Probiers mal.
Alles weitere heute Abend ...
LG
Zitat von: DS_Starter am 20 Juni 2019, 08:46:18
Vielleicht hat Wzut später eine Idee dazu. Zum jetzigen Zeitpunkt müssen wir diese Batteriereadings erstmal auf Eis legen denke ich.
Sorry, auch nicht wirklich - ich habe keinen Speicher und habe daher die Daten noch nie im SMA Portal gesehen.
Stichwort SMA Portal : Ich habe festgestellt das der Punkt Anlagenübersicht auch sehr verschieden sein kann, so gibt es auf diversen Seiten der SMA Doku da auch eine Kachel mit einem Geldsäckchen als Icon das anzeigt was man eingenommen / gespart hat ? k.A. bei mir kommt das einfach nicht zum Vorschein, warum auch immer.
Ich habe mir jetzt mal das aktuelle contrib gezogen, das eigene Device bringt echt Vorteile bei diversen Styles gegenüber dem blöden Weblink, aber perfekt ist das IMHO so noch nicht :) Mich stört ein bissel die doppelte Table Border Darstellung gerade in meinem Lieblings Style dark, ich denke da gehe ich nächste Woche nochmal ran.
Der Quelltext liest sich ja noch recht gut, da hast wirklich verdammt wenig geändert (noch nicht mal die Rechtschreibfehler :) )
Da steht u.A. auch noch ein ToDo drin - auch mal schauen ob mir dazu nächste Woche noch was einfällt.
Zitat von: Xguide am 20 Juni 2019, 10:09:13
Das bedarf einer grundlegenden Entscheidung, wobei Wzut und ich uns nicht einigen konnten.
Das ist nicht ganz richtig, wir sind da lediglich gegensätzlicher Meinung :) D.h. persönlich ist es mir wurscht da ich keine Dosen habe die direkt vom Portal geschaltet werden können. Allerdings habe ich in einem PV Forum ein WEB Framework gefunden das es erlaubt dem Portal eigene Geräte unterzujubeln.
Man könnte also seine ESP oder was auch immer Dose dort unterbringen und den HomeManager via URL Aufruf sie schalten lassen. Mir persönlich war das zu viel Aufwand, wozu habe ich schlieslich FHEM .... IMHO ist das alles gedacht für Leute die eben keine solche gute Software am Laufen haben. Wenn allerdings Interesse besteht kann ich mich da nochmal tiefer reinhängen.
Was aber an dem ganzen Fred hier wundert ist das es offensichtlich keinen User gibt der die Forcast Grafiken auf einer TabletUI Seite nutzt.
Hallo,
habe die V 2.3.6 nach contrib geladen.
@Marcel, jetzt könnte die Aufsummierung funktionieren und die Readings L3_BatteryDischargingDay, L3_BatteryChargingDay erstellen.
@Wzut, Urlaub schon vorbei oder hat's dich einfach mal gejuckt ? :)
Zitatdas eigene Device bringt echt Vorteile bei diversen Styles gegenüber dem blöden Weblink, aber perfekt ist das IMHO so noch nicht :) Mich stört ein bissel die doppelte Table Border Darstellung
Stört mich jetzt nicht so, aber kannst gerne mal schauen ob du es hinbekommst. Der wesentliche Punkt ist eben die automatische Aktualisierung in der Raumansicht.
BTW... bei Nutzung von Dashboard hat man diese doppelten Table Border nicht.
ZitatWas aber an dem ganzen Fred hier wundert ist das es offensichtlich keinen User gibt der die Forcast Grafiken auf einer TabletUI Seite nutzt.
Nutze ich auch nicht, sondern Dashboard. Für TabletUI müsste man IMHO ein Widget erstellen um die Grafik vernünftig darstellen zu können. Soviel ich weiß kann man nicht einfach ein Device einbinden wie man es bei Dashboard oder Floorplan machen kann.
Grüße,
Heiko
Zitat von: DS_Starter am 20 Juni 2019, 20:02:09
Hallo,
habe die V 2.3.6 nach contrib geladen.
@Marcel, jetzt könnte die Aufsummierung funktionieren und die Readings L3_BatteryDischargingDay, L3_BatteryChargingDay erstellen.
Hallo Heiko,
die Readings sind da, zeigen aber nicht nachvollziehbare Werte an.
L3_BatteryChargingDay 23925 Wh 2019-06-20 20:39:04
L3_BatteryDischargingDay 8453 Wh 2019-06-20 20:39:04
Charging real = 6,3 kWh
Discharging real = 2,3 kWh
Ist die Summierung auf den aktuellen Tag bezogen, also von 00:00 - 23:59:59 gemacht worden?
Die Consumer Icons sind da! Das wirkt sehr rund für mich. Anbei mal ein Screenshot.
Danke Heiko!
Sieht gut aus .. die Grafik ! :)
ZitatIst die Summierung auf den aktuellen Tag bezogen, also von 00:00 - 23:59:59 gemacht worden?
Ja, aber ich muss vielleicht den gemessenen Wert vor der Summierung /4 teilen weil es ja ein viertelstunden-Wert ist und sich nicht auf eine Stunde = Watt * h bezieht.
Ich ändere das mal und melde mich ...
So, jetzt bitte nochmal ziehen und testen ...
Habe gerade nochmal etwas nachkorrigiert ...
Zitat von: DS_Starter am 20 Juni 2019, 20:02:09
@Wzut, Urlaub schon vorbei oder hat's dich einfach mal gejuckt ? :)
ja ist zu Ende und da die Rückfahrt besser lief als gedacht konnte ich gestern Abend noch testen statt erst heute.
Dashbord habe ich noch nie benutzt , werde mir das aber auch mal anschauen, Floorplan hatte ich zu Begin meiner FHEM Zeit mal probiert fand es aber verwirrend.
Wenn Tablet UI ein eigenes Widget brauch kann ich da vllt. auch mal ran wenn jemals mein Tablet Projekt wahr wird.
Guten Morgen,
ZitatWenn Tablet UI ein eigenes Widget brauch kann ich da vllt. auch mal ran wenn jemals mein Tablet Projekt wahr wird.
Das wäre natürlich eine tolle Sache für User die TabletUI benutzen.
Für mich war damals Dashboard die beste Variante um schnell eine übersichtliche Darstellung zu bekommen. In black eine schöne Sache wie ich finde.
Ich habe neben der Modulentwicklung und dem entsprechenden Support im Forum einfach zu wenig Zeit um auch dort noch viel Kraft rein zu stecken.
Allerdings wird Dashboard nicht mehr weiterentwickelt und ich habe es vor einiger Zeit als Maintainer übernommen mit dem ehrgeizigen Ziel mich in Javascript
einzuarbeiten. Davon habe ich nämlich wenig bis keine Ahnung, aber Dashboard basiert darauf und es kann insgesamt nicht schaden weil man damit ja auch in FHEM bei der Modulentwicklung davon partizipieren kann. Aber weit bin ich damit noch nicht gekommen ... :'(
Grüße,
Heiko
Zitat von: DS_Starter am 20 Juni 2019, 21:20:01
Habe gerade nochmal etwas nachkorrigiert ...
Guten Morgen zusammen,
die Korrektur geht in die richtige Richtung.
Kannst du mal kurz zusammenfassen wie das JSON aufgebaut ist. Wenn ich es richtig verstanden habe, dann befinden sich darin 15-minütige Aktualwerte - richtig? D.h. damit kann man nur eine grobe Indikation hinbekommen. Die Einspeicherung in die Batterie variert sehr stark, vergleichbar zur Produktion. Wenn Wolken, dann kein PV und somit keine Einspeicherung. Genau würde es nur über einen Zähler werden, oder? Der wiederum liegt zeitverzögert in der zuvor genannten Seite des Portals die sich aber nicht abfragen lässt :-(
L3_BatteryChargingDay 641 Wh 2019-06-21 08:33:13
L3_BatteryDischargingDay 2004 Wh 2019-06-21 08:33:13
Portal (wobei das Portal nicht Echtzeit ist):
Batterieentladung 2100 Wh
Batterieladung 600 Wh
Ich werde mir die Werte am Abend noch einmal gegenüberstellen, dann ist das Laden für den Tag abgeschlossen und wir bekommen die Differenz raus.
Bzgl. TabletUi, diesbezüglich stehe ich als Tester zur Verfügung. Ich habe vor langer Zeit eine Instanz für ein in der Wand verbautes Tablet erstellt. Der WAF ist extrem hoch. Wenn jetzt auch noch die dämlichen BT-Steckdosen von SMA darüber gesteuert werden können - noch viel besser.
@WZUT, ich bin da bei Dir mit den BT-Steckdosen, die sind völlig überteuert und man könnte das genau so gut / besser in fhem realisieren. Allerdings sind die Dinger erst einmal da und der Homemanager der sich um die Batterieladung kümmert (wüsste nicht wie ich das in fhem integrieren könnte) plant alles, um möglichst nicht/wenig in die Abriegelung zu fallen. Insofern ist da schon eine Daseinsberechtigung. Denke auch über einen SHM kompatiblen Heizstab für Brauchwasser nach. Im Idealfall aber erst in einem Jahr, wenn ich aus der Unternehmerregelung in die Kleinunternehmerregelung wechsel kann und keine USt mehr auf den selbst verbrauchten Strom bezahlen muss.
Beste Grüße
Marcel
Hi Marcel,
ZitatKannst du mal kurz zusammenfassen wie das JSON aufgebaut ist.
Naja, wie üblich kann man erstmal nur mutmaßen.
'BatteryCharging' => [
{
'ConsumerOid' => '304890a6-7ff3-4866-98f7-224dcfe38882',
'IntervalId' => 2,
'Measurement' => 0,
'Time' => {
'DateTime' => '2019-06-19T00:15:00',
'Kind' => 'Unspecified',
'__type' => 'DateTime'
},
'__type' => 'ConsumerBalanceMeasurand'
},
Grundsätzlich steht der Messwert in 'Measurement' und und der Timestamp in 'DateTime'. Ich vermute dass 'Measurement' wie bisher bei allen Werten aus dem Portal Wh sind. Da es aber ein Viertelstunden-Wert ist, muss man den /4 teilen damit es mathematisch stimmt. So ist zumindest meine Ansatz. Die Praxis muss diese Theorie bestätigen. Falls das so nicht zu Ziel führt, habe ich aber auch noch keinen Plan B.
Habe gerade gesehen, dass in deiner Grafik noch ein kleicher Fehler drin ist kWh/h muss nur kWh heißen. Ich korrigiere das.
Hallo,
falls hilfreich, hier mal ein Screenshot vom (Ent)ladevorgang der Batterie über den gestrigen Tag.
Schön für mich das ich mir die Werte mal angesehen habe, augenscheinlich habe ich für Batterie In/Out ein Event-On-Change drin, somit gibt es immer den Sprung wenn es von 0 auf irgendwas geht....
Zitat von: DS_Starter am 21 Juni 2019, 09:00:28
Grundsätzlich steht der Messwert in 'Measurement' und und der Timestamp in 'DateTime'. Ich vermute dass 'Measurement' wie bisher bei allen Werten aus dem Portal Wh sind. Da es aber ein Viertelstunden-Wert ist, muss man den /4 teilen damit es mathematisch stimmt. So ist zumindest meine Ansatz. Die Praxis muss diese Theorie bestätigen. Falls das so nicht zu Ziel führt, habe ich aber auch noch keinen Plan B.
Ich habe mir das JSON nun auch noch mal angeschaut. Nun gilt herauszufinden ob es Momentanwerte sind, Mittelwerte oder Zählerwerte über die Zykluszeit. Bei Letzterem hätten wir eine Chance das es genau wird. Leider habe ich auch beim SMA_Inverter keinen Zähler für die Ein-/Auspufferung zur Kontrolle und das Portal ist nicht Echtzeit :( Ich könnte über den SMA_Inverter selber integrieren, aber da ist auch die Ungenauigkeit der schwankenden Einpufferung zwischen den einzelnen Zyklen drin. Teufelskreis :)
kurze Frage: Ist dein Plot Grafana ?
Zitat von: DS_Starter am 21 Juni 2019, 09:15:26
kurze Frage: Ist dein Plot Grafana ?
Jepp - Saugeil :-)
Stimmt :)
Zitat von: DS_Starter am 19 Juni 2019, 18:25:55
Bezüglich deinem Anzeigeproblem bzw. Grafikbug im Typ pvco:
Wahrscheinlich ist das Attribut spaceSize im Anzeigedevice zu groß gesetzt. Setze es mal auf einen kleineren Wert.
Bei mir habe ich dieses Verhalten durch Vergrößern dieses Parameters auf z.B. 60 provozieren können.
Ihr hattet recht mit SpaceSize. Ich bin beim Default Wert nicht davon ausgegangen, dass er zu groß sein könnte.
Hier mal ein Bsp. mit SpaceSize = 24 und SpaceSize = 12
@Heiko, kWh/h habe ich kurz lokal korrigiert.
Zitat@Heiko, kWh/h habe ich kurz lokal korrigiert.
Ist jetzt auch im contrib
Ich habe mir nochmal die Seite https://www.sunnyportal.com/Homan/ConsumerBalance#/day/1561075200000 zu Gemüte geführt.
Dort sieht man deutlich die 15-Minuten Sprünge. Also es steht zu befürchten, dass die gelieferten Messwerte Momentaufnahmen oder bestenfalls Durchschnittswerte in dem 15-Minutenzyklus sind. Dann wird es wohl immer ein mehr oder weniger genauer Schätzwert sein den man dort in den Readings abbilden kann.
Zitat von: DS_Starter am 21 Juni 2019, 09:48:52
Ich habe mir nochmal die Seite https://www.sunnyportal.com/Homan/ConsumerBalance#/day/1561075200000 zu Gemüte geführt.
Dort sieht man deutlich die 15-Minuten Sprünge. Also es steht zu befürchten, dass die gelieferten Messwerte Momentaufnahmen oder bestenfalls Durchschnittswerte in dem 15-Minutenzyklus sind. Dann wird es wohl immer ein mehr oder weniger genauer Schätzwert sein den man dort in den Readings abbilden kann.
Meine Befürchtung!
Zitat von: DS_Starter am 20 Juni 2019, 20:02:09
Nutze ich auch nicht, sondern Dashboard. Für TabletUI müsste man IMHO ein Widget erstellen um die Grafik vernünftig darstellen zu können. Soviel ich weiß kann man nicht einfach ein Device einbinden wie man es bei Dashboard oder Floorplan machen kann.
Ohne Widget kommen wir da sicher nicht weiter, oder wäre es ein Ansatz die Portalgrafik in einem iFrame anzuzeigen? Dafür gäbe es ein Widget.
Ich habe mir mal grob das ReadingsGroup widget angeschaut, dass ist sehr überschaubar und ruft im fhem readingsGroup Modul eine Funktion auf, die die RG als html liefert. Zumindest wenn ich es richtig verstanden habe. Wäre das evtl ein Ansatz? Fkt: readingsGroup_2html($;$)
ZitatIch habe mir mal grob das ReadingsGroup widget angeschaut, dass ist sehr überschaubar und ruft im fhem readingsGroup Modul eine Funktion auf, die die RG als html liefert. Zumindest wenn ich es richtig verstanden habe. Wäre das evtl ein Ansatz? Fkt: readingsGroup_2html($;$)
Das wäre ein sehr gut brauchbarer Ansatz denke ich. Nur habe ich den Aufruf von readingsGroup_2html in widget_readingsgroup.js nicht gefunden ?
Bin gerade unterwegs und weiss nicht mehr wie ich darauf kam. Ist im widget nicht ein get instancename html oder ähnlich zu sehen? Vielleicht habe ich mich auch verrannt.
Gesendet von iPhone mit Tapatalk
ZitatIst im widget nicht ein get instancename html oder ähnlich zu sehen?
Ja, so ähnlich. :) Habs gefunden. Ein get-Aufruf in das readingsgroup device hinein.
Damit kann man etwas zusammenbasteln denke ich.
Hi,
ich habe eine neue Version der Grafikdevices 76_SMAPortalSPG ins contrib geladen.
Damit kann man die Grafik einfach mit dem readingsgroup-Widget in FTUI einbinden. siehe Anhang.
Die Definition wäre z.B.:
<li data-row="1" data-col="1" data-sizey="3" data-sizex="4">
<header>SMA Grafik</header>
<div class="cell">
<div data-type="readingsgroup" data-device="SPG1.Sonnenstrom"></div>
</div>
</li>
Dabei ist SPG1.Sonnenstrom das SMAPortal-Grafikdevice.
Ich habe auch mal versucht das widget_readingsgroup.js nach widget_smaportalspg.js zu kopieren und intern anzupassen. Aber die Darstellung ist dann immer riesengroß, obwohl außer dem Namen intern nichts geändert wird. Ich mag Javascript nicht, muss mich aber mal zwingen ::). Irgendwas muss noch gemacht werden, aber das weiß ich momentan noch nicht.
Grüße,
Heiko
Hallo Heiko,
nur so eine Vermutung, dass CSS "fhem-tablet-ui.css" findet dein neu generiertes widget nicht.
Aber schon mal super der Versuch! Werde es auch gleich mal testen....Muss aber jetzt erstmal was im Garten machen.
Für readingsGroup gibt es:
....snip....
[data-type="readingsgroup"] svg {
height: 2em;
width: 2em;
}
....snip....
Genau das wars :)
Habe in die fhem-tablet-ui.css ergänzt:
...
[data-type="readingsgroup"] svg {
height: 2em;
width: 2em;
}
[data-type="smaportalspg"] svg {
height: 2em;
width: 2em;
}
....
Nun klappt die Definition so:
<li data-row="1" data-col="1" data-sizey="3" data-sizex="4">
<header>SMA Grafik</header>
<div class="cell">
<div data-type="smaportalspg" data-device="SPG1.Sonnenstrom"></div>
</div>
</li>
Die widget_smaportalspg.js lade ich noch in das contrib. Dann kann damit gespielt werden.
Was auch noch nicht funktioniert ist das Schalten der Verbraucher. Dann gibt es einen Fehler im Widget.
Das ist auch bei Verwendung von readingsgroup so. Da muss man noch etwas Hirnschmalz in das Widget fließen lassen.
Aber das ist wieder eine separate Baustelle ... FTUI.
EDIT: Die automatische Aktualisierung des Widgets funktioniert ebenfalls :)
Hallo Heiko,
ich bastel es auch gerade rein, show_header = 0 sollte doch eigentlich den oberen Text verschwinden lassen, oder?
Grüße Marcel
Heißt jetzt showHeader. Die Attribute hatte ich dem allgeinen (meinem) Style angepasst. Im Grafikdevice funktioniert die Hilfe bereits.
Mist, hätte man drauf kommen können. Ich habe eine Kopie eines alten devices gemacht :-)
Es geht in die richtige Richtung. Ich muss da mal in Ruhe reinsehen. Prinzipiell funktioniert es aber, mit den bereits beschriebenen Einschränkungen!
Top!
Super :D
Kannst dich da voll austoben. Bei FTUI halte ich mich erstmal zurück. Wenn Wzut auch Lust hat, könnt ihr beide das Ding ja gestalten. Ich weiß auch nicht wer solche zentralen Komponenten wie die "fhem-tablet-ui.css" pflegt wenn da etwas mit rein soll.
Ich konzentriere mich nun wieder auf die ComRef wegen des Check-In ins Repo.
Das Modul SMAPortalSPG ist ja nun für ein Widget vorbereitet. 8)
LG,
Heiko
Achso noch die alte Frage ... Kannst du schon etwas zu diesen Batteriereadings sagen, d.h. wie da heute die Aussagekraft ist ?
Super Arbeit!
SMAPortalSPG "icon" fehlt noch in der cmdref. Ist mir gerade aufgefallen, da ich gucken wollte, ob das Einfärben geht :-)
geht so: attr name icon light_light_dim_100@orange
Zitat von: DS_Starter am 21 Juni 2019, 16:22:56
Achso noch die alte Frage ... Kannst du schon etwas zu diesen Batteriereadings sagen, d.h. wie da heute die Aussagekraft ist ?
L3_BatteryChargingDay 5134 Wh 2019-06-21 16:24:42
L3_BatteryDischargingDay 2087 Wh 2019-06-21 16:24:42
Batterieentladung 2,30 kWh
Batterieladung 5,40 kWh
knapp :-)
ZitatSMAPortalSPG "icon" fehlt noch in der cmdref. Ist mir gerade aufgefallen, da ich gucken wollte, ob das Einfärben geht :-)
Fast. Das Ding heißt "suggestIcon" (Icon für Vorschlag einschalten). ;)
Der normale attr icon wird intern in "suggestIcon" umgesetzt weil es ansonsten im Device tatsächlich als Device-Icon gesetzt würde. Das ist eine Konsequenz aus dem speziellen Anzeige-Devicelayout.
ZitatBatterieentladung 2,30 kWh
Batterieladung 5,40 kWh
knapp :-)
Hmmm, Frage ... wollen wir das drinlassen ? Ist das unter diesen Umständen hilfreich ?
Zitat von: DS_Starter am 21 Juni 2019, 16:35:43
Fast. Das Ding heißt "suggestIcon" (Icon für Vorschlag einschalten). ;)
Der normale attr icon wird intern in "suggestIcon" umgesetzt weil es ansonsten im Device tatsächlich als Device-Icon gesetzt würde. Das ist eine Konsequenz aus dem speziellen Anzeige-Devicelayout.
Verwirrende Namensgebung [emoji85]
Gesendet von iPhone mit Tapatalk
Zitat von: DS_Starter am 21 Juni 2019, 16:37:06
Hmmm, Frage ... wollen wir das drinlassen ? Ist das unter diesen Umständen hilfreich ?
Ich finde das macht keinen Sinn. Die Werte wären schon interessant, aber dann sollten sie auch passen. Ggf. müssten wir das SMAInverter Modul aufpeppen, denn dort müsste der Wert auch vom Batterie-WR gelesen werden können. Wird aber aktuell noch nicht abgefragt.
Alternativ aus einer anderen Quelle des Portals lesen, wenn machbar.
Schönen Abend, bin für heute raus ,
Marcel
#Pappihatausgang
Gesendet von iPhone mit Tapatalk
Ich habe die Readingerstellung für L3_BatteryChargingDay und L3_BatteryDischargingDay entfernt, die englische ComRef erstellt und das Release auf "stable" gesetzt.
Liegt im contrib und wäre nun prinzipiell bereit zum Check-In.
ZitatVerwirrende Namensgebung
Wenn du einen besseren Vorschlag hast, gerne. Nur icon darf es halt nicht heißen.
Grüße,
Heiko
Zitat von: DS_Starter am 21 Juni 2019, 23:29:34
Wenn du einen besseren Vorschlag hast, gerne. Nur icon darf es halt nicht heißen.
Nichts kurzes und pregnantes. Gedanklich habe ich suggestIcon so interpretiert, dass ein Icon vorgeschlagen/automatisch gesetzt wird.
Hier geht es ja um die Empfehlung Verbraucher einzuschalten, also eher recommendation vom Wording her. conRecommendationIcon ist aber arg lang. conAdviceIcon?
Für mich ist es aber jetzt klar, könnte also auch so bleiben.
PS: Die neue Version schmeisse ich später mal in mein fhem, gerade ist die Zeit etwas knapp.
Viele Grüße,
Marcel
Hi Marcel,
fand eine deiner Ideen treffender als meine und habe leicht verändert übernommen:
suggestIcon -> consumerAdviceIcon
Die Version 1.3.0 von 76_SMAPortalSPG ist im contrib.
LG,
Heiko
Jetzt hat natürlich noch die passende Version von 76_SMAPortal gefehlt -> ist als 2.3.7 im contrib
Moin Heiko,
Läuft wie erwartet. Battery Readings sind raus und consumptionAdviceIcon drin. Gibt es noch mehr zu testen?
Einen Wunsch hätte ich noch. Wäre es möglich den Header bei kleinen Anzeigen (bspw. tabui) mit hourCount < 15 abzukürzen. Wenn ich weniger als 15h anzeige, dann bekomme ich einen Umbruch, der dann wiederrum den Rahmen in tabui sprengt.
Ich habe da ein wenig rumgespielt, bin aber nicht wirklich zufrieden.
if ($header) {
my ($h1,$h2);
if(AttrVal("global","language","EN") eq "DE") {
my ($year, $month, $day, $hour, $min, $sec) = $lup =~ /(\d+)-(\d\d)-(\d\d)\s+(.*)/;
$lup = "$3.$2.$1 $4";
$lupt = "letzte Aktualisierung:";
}
if($maxhours > 15) {
if(AttrVal("global","language","EN") eq "DE") {
$h1 = "Prognose [pv] - nächste 4 Stunden: $pv4h / Rest des Tages: $pvRe / Morgen: $pvTo";
$h2 = "Prognose [co] - nächste 4 Stunden: $co4h / Rest des Tages: $coRe / Morgen: $coTo";
} else {
$h1 = "forecast data [pv] - next 4 hours: $pv4h / rest of day: $pvRe / tomorrow: $pvTo";
$h2 = "forecast data [co] - next 4 hours: $co4h / rest of day: $coRe / tomorrow: $coTo";
}
} else { #MS: für kleine Darstellungen, Bsp. HourCount = 13 für die Anzeige im tabui
if(AttrVal("global","language","EN") eq "DE") {
#MS: Ansatz durch Abkürzungen
#$h1 = "Prognose[pv]: nächste 4h:$pv4h / Rest Heute:$pvRe / Morgen:$pvTo";
#$h2 = "Prognose[co]: nächste 4h:$co4h / Rest Heute:$coRe / Morgen:$coTo";
#MS: Ansatz durch Tabelle
$h1 = '<table align="center">';
$h1 .= "<tr><td><b>[pv]</b> nächste 4h:</td><td align=right>$pv4h</td><td>Rest Heute:</td><td align=right>$pvRe</td><td>Morgen:</td><td align=right>$pvTo</td></tr>";
$h2 = "<tr><td><b>[co]</b> nächste 4h:</td><td align=right>$co4h</td><td>Rest Heute:</td><td align=right>$coRe</td><td>Morgen:</td><td align=right>$coTo</td></tr>";
$h2 .= "</table>";
} else {
#MS: Ansatz durch Abkürzungen
#$h1 = '<div align="left">';
#$h1 .= "<b>[pv]</b> next 4h:$pv4h / rest today:$pvRe / tomorrow:$pvTo";
#$h2 = "<b>[co]</b> next 4h:$co4h / rest today:$coRe / tomorrow:$coTo</div>";
#MS: Ansatz durch Tabelle
$h1 = '<table align="center">';
$h1 .= "<tr><td><b>[pv]</b> next 4h:</td><td align=right>$pv4h</td><td>rest today:</td><td align=right>$pvRe</td><td>tomorrow:</td><td align=right>$pvTo</td></tr>";
$h2 = "<tr><td><b>[co]</b> next 4h:</td><td align=right>$co4h</td><td>rest today:</td><td align=right>$coRe</td><td>tomorrow:</td><td align=right>$coTo</td></tr>";
$h2 .= "</table>";
}
}
$lup = " ($lupt $lup)";
if ($type eq 'pv') {
$header = $dlink.' '.$lup.' <br/>'.$h1;
} elsif ($type eq 'co') {
$header = $dlink.' '.$lup.' <br/>'.$h2;
} else {
#MS: auskommentiert wg Tabelle
#$header = $dlink.' '.$lup.' <br/>'.$h1.'<br/>'.$h2;
$header = $dlink.$lup.$h1.$h2;
}
}
Kannst du den Link zu deinem contrib nicht in die Signatur packen?
Beste Grüße
Marcel
Zitat von: Xguide am 25 Juni 2019, 11:34:06
Wenn ich weniger als 15h anzeige, dann bekomme ich einen Umbruch, der dann wiederrum den Rahmen in tabui sprengt.
Das war von mir sogar gewollt, da sonst der Header die Tabelle unnötig in Breite zieht. (steht auch so in im Kommentar)
Am Besten schaut es noch aus wenn man in solchen Fällen auf den Header komplett verzichtet.
Zitat von: Wzut am 25 Juni 2019, 12:39:40
A) Das war von mir sogar gewollt, da sonst der Header die Tabelle unnötig in Breite zieht. (steht auch so in im Kommentar)
B) Am Besten schaut es noch aus wenn man in solchen Fällen auf den Header komplett verzichtet.
Hallo Wzut,
A) Den Kommentar auf erlaubte Stellen für den Umbruch habe ich wohl gesehen, deswegen ja der Ansatz mit weniger Zeichen ins Rennen zu gehen. Die Tabelle bringt den Vorteil, dass man die Werte schön in einer Reihe untereinander hat.
B) Das war auch mein erster Vesuch, doch leider habe ich mein ftui so aufgesetzt, dass ich relativ große cols habe. Somit war viel Platz da, der tendenziell die Verwendung des Headers (ohne zusätzliche Umbrüche) erlauben würde....
Hallo Marcel,
ZitatLäuft wie erwartet. Battery Readings sind raus und consumptionAdviceIcon drin. Gibt es noch mehr zu testen?
Sehr schön und wäre auch nichts weiter zu testen.
Also ich persönlich finde die tabellarische Darstellung schön aufgeräumt und knackig. Meiner Meinung nach wäre es sogar zu überlegen dieses Layout generell anzuwenden, also auch bei $maxhours > 15.
Aber ich überlasse es euch, Wzut hat die Grafik designed. Ich würde das Ergebnis dann wieder übernehmen.
Aber wie gesagt, ich wäre dafür .... gefällt mir. :)
Grüße,
Heiko
Achso ..
ZitatKannst du den Link zu deinem contrib nicht in die Signatur packen?
Mal schauen. Bin mit meiner Anzahl Zeichen in der Signatur schon ziemlich am Ende.
Zitat von: DS_Starter am 25 Juni 2019, 13:38:59
Meiner Meinung nach wäre es sogar zu überlegen dieses Layout generell anzuwenden, also auch bei $maxhours > 15.
ganz klar auch dafür, der heutige Header ist mir zu Bandwurmartig und daher immer aus :)
@Wzut, könntest du da Hand anlegen? Ich habe da leider nicht so das Händchen für.
Grüße Marcel
ja, np. Ich denke das ich ab morgen Vormittag wieder etwas Luft habe und dann schau ich mir das mal an.
Hatte Heiko ja auch zugesagt mich noch um die anderen offenen Punkte zu kümmern.
Super! :)
Hallo miteinander,
konnte es nicht lassen und habe es nun hinbekommen, dass man mit dem FTUI-Widget auch die Verbraucher schalten kann.
Dazu gibt es neue Versionen von 76_SMAPortal, 76_SMAPortalSPG und widget_smaportalspg im contrib.
Restart ist nötig.
LG,
Heiko
Hallo Heiko,
ganz große Klasse. Getestet und für sehr gut befunden.
PS: für FTUI habe ich den Link im Header noch weggelassen.
Gruß Marcel
PS: Leider musste ich gerade feststellen, dass mein Batterie WR nicht mehr erreichbar ist. Dummerweise bin ich 300km von zu Hause entfernt :-( Hoffe ich kann es heute Abend lösen. Falls jemand einen Tipp hat, das sagt das Portal (gerne als PN, da total offtopic):
Fehler 27.06.2019 01:42:35 SMA-Sunny Island 3.0 Kommunikation gestört
Fehler 26.06.2019 23:40:05 SMA-Sunny Island 3.0 Kommunikation gestört
Fehler 26.06.2019 23:30:00 SMA-Sunny Island 3.0 Zustand: Fehler / Meldung von Prozessschnittstelle: Batterieüberspannung / keine
Fehler 20.06.2019 22:06:00 SMA-Sunny Island 3.0 Zustand: Fehler / Meldung von Prozessschnittstelle: Zellungleichgewicht / keine
Fehler 20.06.2019 21:59:00 SMA-Sunny Island 3.0 Zustand: Fehler / Meldung von Prozessschnittstelle: Batterieüberspannung / keine
Fehler 20.06.2019 21:58:30 SMA-Sunny Island 3.0 Zustand: Fehler / Meldung von Prozessschnittstelle: Zellungleichgewicht / keine
Hallo,
beim Neustart von FHEM kommt im LOG bei mir "seitenweise" Text und so geht es los:
2019.06.27 12:08:22 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/76_SMAPortal.pm line 1159.
2019.06.27 12:08:22 3: eval: {FHEM::SMAPortal::ParseData('PV_Anlage|1|0|0|all|none|b2s=|eyJfX3R5cGUiOiJMaXZlRGF0YVVJIiwiVGltZXN0YW1wIjp7Il9fdHlwZSI6IkRhdGVUaW1lIiwiRGF0ZVRpbWUiOiIyMDE5LTA2LTI3VDEyOjA4OjExIiwiS2luZCI6IlVuc3BlY2lmaWVkIn0sIlBWIjoyODY3LCJGZWVkSW4iOjI1NDMsIkdya.......
......
Vorher im LOG finde ich noch folgendes:
Zitat
2019.06.27 12:07:43 1: PERL WARNING: Prototype mismatch: sub main::SMAPortalSPG_AsHtml ($;$$) vs ($;$) at ./FHEM/76_SMAPortalSPG.pm line 328, <$fh> line 3265.
2019.06.27 12:07:43 3: SPG3.PV_Anlage: unknown attribute suggestIcon. Type 'attr SPG3.PV_Anlage ?' for a detailed list.
Es funktioniert alles, soweit ich es bis jetzt sehe, aber vielleicht gibt es ja doch ein Problem...
Gruß
Blueberry63
Ah ja, danke für den Hinweis. Habe eine Kleinigkeit korrigiert und neu ins contrib geladen.
Das Attribut suggestIcon gibt es nicht mehr, heißt jetzt consumerAdviceIcon. Ist ein besserer Name ;)
Grüße,
Heiko
DAS nenne ich einen Service :)
Zitat
Ah ja, danke für den Hinweis. Habe eine Kleinigkeit korrigiert und neu ins contrib geladen.
Das Attribut suggestIcon gibt es nicht mehr, heißt jetzt consumerAdviceIcon. Ist ein besserer Name
Ich habe leider noch etwas im LOG nach Neustart gefunden:
2019.06.27 14:32:39 1: PERL WARNING: Use of uninitialized value $im in split at ./FHEM/76_SMAPortal.pm line 1906.
2019.06.27 14:32:39 3: eval: {FHEM::SMAPortal::PortalAsHtml ('PV_Anlage','SPG3.PV_Anlage')}
2019.06.27 14:32:39 1: PERL WARNING: Use of uninitialized value $end in concatenation (.) or string at ./FHEM/76_SMAPortal.pm line 2411.
2019.06.27 14:32:39 3: eval: {FHEM::SMAPortal::PortalAsHtml ('PV_Anlage','SPG3.PV_Anlage')}
2019.06.27 14:33:32 1: PERL WARNING: Use of uninitialized value in string ne at fhem.pl line 4828.
Macht ja nix, dafür sind wir ja in der Testphase ;)
Sag mal, hast du in dem graphischen Device das Attribut consumerList gesetzt ? Und wenn ja , wie ?
Grüße,
Heiko
Zitathast du in dem graphischen Device das Attribut consumerList gesetzt ?
Wenn es daran liegen sollte, dann kannst Du das ignorieren: ich habe das Setzen von "consumerList" ausprobiert, allerdings nur den Gerätenamen, ohne weitere Parameter. Eventuell habe ich auch mit den Namen etwas falsch gemacht.
Blueberry63
Dann ignoriere ich das mal ;)
Lg,
Heiko
Zitat von: blueberry63 am 27 Juni 2019, 15:38:17
ich habe das Setzen von "consumerList" ausprobiert, allerdings nur den Gerätenamen, ohne weitere Parameter. Eventuell habe ich auch mit den Namen etwas falsch gemacht.
Hi Blueberry, ist aber ganz einfach. Namen wie im Portal und dann mit Doppelpunkt getrennt das Icon und mit @ die Farbe angeben. Mehrere Consumer dann kommagetrennt!
Trockner:scene_clothes_dryer@firebrick,Waschmaschine:scene_washing_machine@darkolivegreen
Gruß Marcel
ZitatHi Blueberry, ist aber ganz einfach. Namen wie im Portal und dann mit Doppelpunkt getrennt das Icon und mit @ die Farbe angeben. Mehrere Consumer dann kommagetrennt!
Funktioniert es auch, wenn Leerzeichen im Namen sind?
Blueberry63
Ups, noch nich probiert! Vielleicht %20 anstelle des Leerzeichens?
Gesendet von iPhone mit Tapatalk
Das mit den Leerzeichen ist ein guter Hinweis. Die müssen eliminiert werden. Schon weil sie als Readingnamen nicht taugen.
Da schaue ich morgen mal genauer, bin auf dem Weg zum Fhem Stammtisch und bin für heute raus.
Lg,
Heiko
Könnte mir jemand beim Einbinden der Grafik in FTUI helfen? Ich habe es mal so probiert:
<html>
<title>FHEM PV Anlage</title>
<head>
</head>
<body>
<div class="gridster">
<ul>
<li data-row="1" data-col="1" data-sizex="1" data-sizey="8" data-template="menu.html"></li>
<li data-row="1" data-col="2" data-sizey="3" data-sizex="4">
<header>SMA Grafik</header>
<div class="cell">
<div data-type="readingsgroup" data-device="SPG3.PV_Anlage"></div>
</div>
</li>
</ul>
</div>
</body>
</html>
Anm.: links in meinem FTUI ist ein Menü
Aber iregndwie sieht das vermurkst aus (s. Anhang)
Blueberry63
Ich bin auch unterwegs, aber es sieht so aus, als dass es nicht in den definierten Bereich passt. Gib dem widget doch mal die maximalen cols und rows. Könnten in ftui auch x und y heissen!
Gesendet von iPhone mit Tapatalk
@Heiko, in meiner Version (2.3.6 - 21.06.2019 ) bekomme ich immer beim FHEM Neutart einges ins Log gschrieben weil $hash->{HELPER}{PLANTOID} bzw. $plantOid undef ist.
2019.06.28 21:05:02 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/76_SMAPortal.pm line 1157.
2019.06.28 21:05:02 3: eval: {FHEM::SMAPortal::ParseData('SMA|1|0|0|all|none|b2s=|eyJfX3R5cGUiOiJMaXZlRGF0YVVJIiwiVGltZXN0YW1wIjp7Il9fdHlwZSI6IkRhdGVUaW1lIiwiRGF0ZVRpbWUiOiIyM
--- snipp ---
JhbWV0ZXJEYXRhIjpbXSwiTWVzc2FnZSI6bnVsbCwiU3RhdHVzIjowLCJFcnJvciI6ZmFsc2V9|||')}
2019.06.28 21:05:02 1: stacktrace:
2019.06.28 21:05:02 1: main::__ANON__ called by ./FHEM/76_SMAPortal.pm (1157)
2019.06.28 21:05:02 1: FHEM::SMAPortal::extractForecastData called by ./FHEM/76_SMAPortal.pm (1014)
2019.06.28 21:05:02 1: FHEM::SMAPortal::ParseData called by (eval 35) (1)
2019.06.28 21:05:02 1: (eval) called by fhem.pl (1135)
2019.06.28 21:05:02 1: main::AnalyzePerlCommand called by fhem.pl (1160)
2019.06.28 21:05:02 1: main::AnalyzeCommand called by fhem.pl (1089)
2019.06.28 21:05:02 1: main::AnalyzeCommandChain called by ./FHEM/98_telnet.pm (255)
2019.06.28 21:05:02 1: main::telnet_Read called by fhem.pl (3754)
2019.06.28 21:05:02 1: main::CallFn called by fhem.pl (748)
Hi Wzut,
ja weiß ich. Habe ich bereits mit der aktuellsten im contrib 2.4.0 beseitigt.
Heiko
Hallo zusammen,
in meinem contrib liegen jetzt eine aktualisierte widget_smaportalspg.js und nun auch eine ftui_smaportalspg.css.
Dadurch kann man das Widget nun in jedem FTUI einsetzen ohne die ausgelieferte fhem-tablet-ui.css editieren zu müssen.
Da kann man bestimmt noch mehr gestalten über die css. Aber das überlasse ich lieber den FTUI-Experten. Bin da selbst (noch) nicht so zu Hause.
LG
Falls wieder ein bißchen Luft für andere Sachen ist, würde ich gerne nochmal auf meine Anfrage bezgl. der aktuellen Tageswerte zurückkommen (#581). Ich habe den Ausschnitt vom SMA Portal wieder hier angehängt.
Hat keiner eine Idee, wie man diese Daten abgreifen kann?
Gruß
Blueberry63
Hallo blueberry,
hatte ich schon versucht, aber nicht hinbekommen. Siehe #588.
SMA nutzt hier wahrscheinlich nachgeladene Funktionen. Falls jemand eine Idee hat wie man da rankommt ... gerne.
Grüße,
Heiko
Kein Problem. Wenn es nicht geht, dann geht es nicht ;)
In der Zwischenzeit probiere ich mit SMAInverter und SMAEM weiterzukommen. Allerdings wehrt sich mein STP 5.0 gegen SMAInverter :-(
Gruß
Blueberry63
Zitat von: DS_Starter am 28 Juni 2019, 22:36:05
Dadurch kann man das Widget nun in jedem FTUI einsetzen ohne die ausgelieferte fhem-tablet-ui.css editieren zu müssen.
Moin Heiko,
ich habe heute mal die Updates gezogen, aber das mit dem css funktioniert nicht. ich habe ftui_smaportalspg.css in www/table/css abgelegt und den Eintrag aus fhem-tablet-ui.css entfernt. Danach wurde alles riesig, ergo kein css gefunden. Was mache ich falsch?
Andere Änderungen haben ich jetzt erstmal nicht auf dem Schirm, gibt es was zu Testen?
Ich habe es nun leider schwarz auf weiß, mein Speicher hat einen Schaden und macht seit Samstag gar nichts mehr. Heute konnte ich dann endlich mit dem Solarteuer und dem Hersteller sprechen. Ein bekanntes Problem - toll - und nun heißt es hoffen, dass ein Service Techniker noch vor dem Urlaub bei uns vorbei kommt.
Gruß Marcel
Hi Marcel,
du musst den Browsercache auf jeden Fall leeren, weil die js Datei geändert ist.
Die hast du hoffentlich auch aus dem contrib gezogen und ersetzt.
Bei mir funktionirt es astrein.
Na das ist ja blöd mit dem Speicher :( Hoffentlich noch Garantie !?
Grüße,
Heiko
Hi Heiko,
ja alles aus dem contrib liegt auch bei mir drin. Woher weiss denn ftui, dass er die ftui_smaportalspg.css verwenden muss?
Browsercache geleert und auch in einem anderen Browser getestet, den ich sonst nie nutze.
Zum Speicher, augenscheinlich habe ich Glück was die Garantie angeht.
kann es sein, dass du das widget nicht im contrib aktualisiert hast?
Das steht in der ftui_smaportalspg.js drin. Das erkennst du leicht wenn du reinschaust. Habe ich auch nur abgeschaut wie es andere third party Module machen. Kann ja nicht sein dass man die ausgelieferten FTUI Dateien ändern muss.
Na ich hoffe es ist im contrib. Aber ich schaue nachher nochmal wenn ich zu Hause bin.
Dann bin ich mir jetzt sicher, dass du widget_smaportalspg.js im contrib nicht aktualisiert hast!
Die ist vom 26.06 und die CSS vom 28.06.0219
:o Melde mich nachher ...
Hallo Alex,
denkst Du noch an die möglichen Leerzeichen bei den Readings? ::)
Zitat
Das mit den Leerzeichen ist ein guter Hinweis. Die müssen eliminiert werden. Schon weil sie als Readingnamen nicht taugen.
Da schaue ich morgen mal genauer, bin auf dem Weg zum Fhem Stammtisch und bin für heute raus.
Blueberry63
Ich sage Alex nachher Bescheid ;) .... ja, setze mich nachher ran.
LG,
Heiko
Zitat von: blueberry63 am 01 Juli 2019, 14:40:12
Allerdings wehrt sich mein STP 5.0 gegen SMAInverter :-(
ggf. versuch mal statt SMAInverter ModbusAttr, damit bin ich glücklich geworden :)
Kannst Du mir sagen, wo ich die Register-Beschreibung für den STP 5.0 finde. Und wenn Du mir eine Beispiel-Definition von Deinem WR schicken könntest... :-[
Gruß
Blueberry63
Habe die Register-Liste schon gefunden. Aber die Implementierung scheint mir ja nicht ganz trivial zu sein. Ein Beispiel wäre da nicht schlecht...
ist hier OT aber ganz easy wenn man die SMA Register Liste hat
So, hatte tatsächlich noch die alte widget_smaportalspg.js im contrib. Ist jetzt aktualisiert.
Die neue Version SMAPortal 2.4.1 befindet sich im contrib.
Diese Version ersetzt Leerzeichen in den Verbrauchernamen wie erforderlich für den Readingnamen (und die DRop-Down-Liste).
Guten Morgen Heiko,
habe sowohl das fhem Modul als auch das ftui Widget aktualisiert.
Alles auf dem neuesten Stand, alles scheint wie zuvor zu laufen, zumindest in meiner Konfiguration.
Bzgl. widget_smaportalspg.js und dem Nachladen der CSS Informationen. Mir fällt auf, das ich bei einem Page-Refresh des tabui erst einmal die Icons in MEGA groß angezeigt bekomme, dann augenscheinlich das css gefunden wird und noch einmal neu gerendert wird. Kann das jemand bestätigen? Das Endergebnis ist gut, aber das Verhalten beim Laden ist eher unschön.
Habe in 76_SMAPortal.pm immer noch meine händischen Anpassungen drin, bzw. wieder eingepflegt, die den Header bei kleinen Ausgaben verkleinert und in einer Tabelle anzeigt. Ferner habe ich für tabui den Link und Last Update rausgenommen. Damit fügt es sich optisch gut in mein bestehendes tabui Layout.
Hier sollten wir aber versuchen einen generischen Ansatz zu finden und es nicht so stümperhaft implementieren wie ich es momentan tue :-)
if ($header) {
my ($h1,$h2);
if(AttrVal("global","language","EN") eq "DE") {
my ($year, $month, $day, $hour, $min, $sec) = $lup =~ /(\d+)-(\d\d)-(\d\d)\s+(.*)/;
$lup = "$3.$2.$1 $4";
$lupt = "letzte Aktualisierung:";
}
if($maxhours > 15) {
if(AttrVal("global","language","EN") eq "DE") {
$h1 = "Prognose [pv] - nächste 4 Stunden: $pv4h / Rest des Tages: $pvRe / Morgen: $pvTo";
$h2 = "Prognose [co] - nächste 4 Stunden: $co4h / Rest des Tages: $coRe / Morgen: $coTo";
} else {
$h1 = "forecast data [pv] - next 4 hours: $pv4h / rest of day: $pvRe / tomorrow: $pvTo";
$h2 = "forecast data [co] - next 4 hours: $co4h / rest of day: $coRe / tomorrow: $coTo";
}
} else { #MS: für kleine Darstellungen, Bsp. HourCount = 13 für die Anzeige im tabui
if(AttrVal("global","language","EN") eq "DE") {
#MS: Ansatz durch Abkürzungen
#$h1 = "Prognose[pv]: nächste 4h:$pv4h / Rest Heute:$pvRe / Morgen:$pvTo";
#$h2 = "Prognose[co]: nächste 4h:$co4h / Rest Heute:$coRe / Morgen:$coTo";
#MS: Ansatz durch Tabelle
$h1 = '<table align="center">';
$h1 .= "<tr><td><b>[pv]</b> nächste 4h:</td><td align=right>$pv4h</td><td>Rest Heute:</td><td align=right>$pvRe</td><td>Morgen:</td><td align=right>$pvTo</td></tr>";
$h2 = "<tr><td><b>[co]</b> nächste 4h:</td><td align=right>$co4h</td><td>Rest Heute:</td><td align=right>$coRe</td><td>Morgen:</td><td align=right>$coTo</td></tr>";
$h2 .= "</table>";
} else {
#MS: Ansatz durch Abkürzungen
#$h1 = '<div align="left">';
#$h1 .= "<b>[pv]</b> next 4h:$pv4h / rest today:$pvRe / tomorrow:$pvTo";
#$h2 = "<b>[co]</b> next 4h:$co4h / rest today:$coRe / tomorrow:$coTo</div>";
#MS: Ansatz durch Tabelle
$h1 = '<table align="center">';
$h1 .= "<tr><td><b>[pv]</b> next 4h:</td><td align=right>$pv4h</td><td>rest today:</td><td align=right>$pvRe</td><td>tomorrow:</td><td align=right>$pvTo</td></tr>";
$h2 = "<tr><td><b>[co]</b> next 4h:</td><td align=right>$co4h</td><td>rest today:</td><td align=right>$coRe</td><td>tomorrow:</td><td align=right>$coTo</td></tr>";
$h2 .= "</table>";
}
}
$lup = " ($lupt $lup)";
if ($type eq 'pv') {
$header = $dlink.' '.$lup.' <br/>'.$h1;
} elsif ($type eq 'co') {
$header = $dlink.' '.$lup.' <br/>'.$h2;
} elsif ($type eq 'pvco') {
$header = $dlink.' '.$lup.' <br/>'.$h1.'<br/>'.$h2;
if ($maxhours < 15) {
$header = $h1.$h2;
}
} else {
$header = $dlink.' '.$lup.' <br/>'.$h1.'<br/>'.$h2;
}
}
Moin Marcel,
ZitatBzgl. widget_smaportalspg.js und dem Nachladen der CSS Informationen. Mir fällt auf, das ich bei einem Page-Refresh des tabui erst einmal die Icons in MEGA groß angezeigt bekomme, dann augenscheinlich das css gefunden wird und noch einmal neu gerendert wird. Kann das jemand bestätigen? Das Endergebnis ist gut, aber das Verhalten beim Laden ist eher unschön.
Ja, ist bei mir auch so und ist bedingt durch die Verankerung des css im js. Ich bin da jetzt nicht der Spezi. Wenn jemand weiß wie es besser geht dann bitte nicht hinter dem Berg halten. ;)
Deine Erweiterung sehe ich mir heute Abend an und baue es konform in das Modul ein.
LG,
Heiko
Zitat von: Xguide am 02 Juli 2019, 09:58:48
Habe in 76_SMAPortal.pm immer noch meine händischen Anpassungen drin
ja mir ist klar das ich hier noch eine Bringschuld habe ... aber zum einen verläuft es z.Z. mit der freien Zeit nicht ganz so wie ursprünglich erwartet und dann sollte man das auch nicht an einer fixen Grenze ( wie z.B. 13 ,das mag für dich optimal passen) festmachen sondern hier müssen IMHO Zeichen gezählt werden und auf Grund der zu erwartenden Ausgabebreite die Entscheidung in die eine oder andere Richtung gelenkt werden.
@Wzut, wollten wir die Tabelle im Header und eine Kürzung nicht generell implementieren, also unabhängig vom den anzuzeigenden Stunden /Spalten ?
Bin grad etwas verwirrt ... ???
Zitat von: DS_Starter am 02 Juli 2019, 11:40:21
@Wzut, wollten wir die Tabelle im Header und eine Kürzung nicht generell implementieren
das wäre mein Favorit, mir war aber unklar wie du dazu stehst
Zitat von: Wzut am 02 Juli 2019, 11:32:09
....dann sollte man das auch nicht an einer fixen Grenze ( wie z.B. 13 ,das mag für dich optimal passen) festmachen sondern hier müssen IMHO Zeichen gezählt werden und auf Grund der zu erwartenden Ausgabebreite die Entscheidung in die eine oder andere Richtung gelenkt werden.
Da bin ich voll uns ganz bei dir, ich habe da nur keine Aktivitäten reingesteckt weil du dich der Sache annehmen wolltest. Ich habe meine Implementation extra als stümperhaft tituliert und gesagt, dass es so bei mir passt. Den Wunsch nach einem generischem Ansatz und damit meinte ich genau das "hours < 15", wurde geäussert...
Vorschlag: Vielleicht kann man ja zusätzlich ein Attribut spendieren, in dem der maximale header rowcount angegeben wird?
Also ich würde gerne generell den Header als Tabelle darstellen und entsprechend einkürzen.
Wzut sieht das auch so.
Bin der Meinung das macht Sinn und warum sollte man es komplizierter als nötig machen.
Zitat von: DS_Starter am 02 Juli 2019, 12:33:46
Also ich würde gerne generell den Header als Tabelle darstellen und entsprechend einkürzen.
Wzut sieht das auch so.
Bin der Meinung das macht Sinn und warum sollte man es komplizierter als nötig machen.
Habe ich so verstanden und könne im ersten groben Entwurf so aussehen...
if ($header) {
#modify link and update timestamp row for DE localization
if(AttrVal("global","language","EN") eq "DE") {
my ($year, $month, $day, $hour, $min, $sec) = $lup =~ /(\d+)-(\d\d)-(\d\d)\s+(.*)/;
$lup = "$3.$2.$1 $4";
$lupt = "letzte Aktualisierung:";
}
$header = '<table align="center">';
$header .= '<tr><td colspan="2" align="left"><b>['.$dlink.']</b></td><td colspan="4" align="right">'.$lupt." ".$lup.'</td></tr>';
if(AttrVal("global","language","EN") eq "DE") {
$header .= "<tr><td><b>[pv]</b> nächste 4h:</td><td align=right>$pv4h</td><td>Rest Heute:</td><td align=right>$pvRe</td><td>Morgen:</td><td align=right>$pvTo</td></tr>";
$header = "<tr><td><b>[co]</b> nächste 4h:</td><td align=right>$co4h</td><td>Rest Heute:</td><td align=right>$coRe</td><td>Morgen:</td><td align=right>$coTo</td></tr>";
}else {
$header .= "<tr><td><b>[pv]</b> next 4h:</td><td align=right>$pv4h</td><td>rest today:</td><td align=right>$pvRe</td><td>tomorrow:</td><td align=right>$pvTo</td></tr>";
$header .= "<tr><td><b>[co]</b> next 4h:</td><td align=right>$co4h</td><td>rest today:</td><td align=right>$coRe</td><td>tomorrow:</td><td align=right>$coTo</td></tr>";
}
$header .= "</table>";
}
Hallo zusammen,
habe den Headervorshlag von Marcel leicht verändert übernommen eingebaut.
Liegt als Version 2.4.2 im contrib.
Auch die Datei widget_smaportalspg.js habe ich etwas abgeändert. Zumindest mit Chrome habe ich das etwas störende Refreshverhalten nicht mehr. Ist ebenfalls im contrib neu vorhanden.
Grüße,
Heiko
Zitat von: DS_Starter am 02 Juli 2019, 23:48:46
A) habe den Headervorshlag von Marcel leicht verändert übernommen eingebaut.
B) Auch die Datei widget_smaportalspg.js habe ich etwas abgeändert. Zumindest mit Chrome habe ich das etwas störende Refreshverhalten nicht mehr. Ist ebenfalls im contrib neu vorhanden.
A) Sieht gut aus, passt nun auch dreizeilig wunderbar in mein ftui. Generell könnten wir aber noch attr wie headerOrientation [left, center, right], headerDetails [pv,co,pvco,status] implementieren, oder was meint ihr? Siehe Screenshots.... Der ftui screen ist nur mal exemplarisch angefügt. Gefällt mir echt gut und das die Steckdosen von da geschaltet werden können ist mega. Meine Frau wird es lieben, noch läuft es aber nur auf dem Testsystem.
B) In der Tat stellen sich Chrome und Safari besser an als Mozilla. Zum Glück läuft mein ftui auf einem Android Tablet, das sollte also klappen :-) Mit Mozilla sieht es imho immer noch dämlich aus.
Beste Grüße
Marcel
Hi Marcel,
an die Headergestaltung muss ich eh nochmal ran.
Habe vorhin gemerkt dass auf meinem Dashboard das nicht so schön ist. D.h. vermutlich werde ich solche Attribute wie von dir geschrieben einführen.
Kann ich aber erst morgen oder Freitag machen, momentan wenig Zeit.
Vielleicht kommt Wzut ja dazu ...
Ganz allgemeine Frage. FTUI setze ich momentan nur für Test/Entwicklung ein. Ich bemerke Unterschiede in der Darstellung ob man einen PC Browser benutzt oder ein Android Tablet. D.h. was auf dem PC in eine Kachel hinein passt, kann auf einem Tablet über die Grenzen hinausgehen und man müsste die Implementierung in der index.html abändern.
Wie sind denn da deine Erfahrungen, du benutzt es ja produktiv ?
LG,
Heiko
Zitat von: DS_Starter am 03 Juli 2019, 09:30:06
Ganz allgemeine Frage. FTUI setze ich momentan nur für Test/Entwicklung ein. Ich bemerke Unterschiede in der Darstellung ob man einen PC Browser benutzt oder ein Android Tablet. D.h. was auf dem PC in eine Kachel hinein passt, kann auf einem Tablet über die Grenzen hinausgehen und man müsste die Implementierung in der index.html abändern.
Wie sind denn da deine Erfahrungen, du benutzt es ja produktiv ?
Hallo Heiko,
etwas OT, aber für die jenigen die SPG in ftui implementieren wollen aber vielleicht interessant.
Ich hatte deine beschriebenen Probleme damals auch. War eine ehlendige Fummelei das hinzubekommen. Auch wenn ich meine damaligen Schritte nicht mehr alle im Kopf habe, so weiss ich, dass ich die Kachelstruktur von ftui in Richtung Auflösung des Tablet gebracht habe.
Was bei mir gerade gut passt ist das hier:
<!-- Samsung Galaxy Tab E == 1.280 x 800 (WXGA)-->
<meta name="widget_base_width" content="150">
<meta name="widget_base_height" content="125">
Somit stehen mir 6 Zeilen und 8 Spalten zur Verfügung.
Hier mein ein Beispiel!
<div class="gridster">
<ul>
<!-- ========= Linkes-Hauptmenü =========== -->
<!-- ====================================== -->
<li data-row="1" data-col="1" data-sizex="1" data-sizey="6" data-template="nav_leftMain.html"></li>
<!-- ======== Rechtes-Statusmenü ========== -->
<!-- ====================================== -->
<li data-row="1" data-col="8" data-sizex="1" data-sizey="6" data-template="nav_rightMain.html"></li>
<!-- ========= Oberes-Hauptmenü =========== -->
<!-- ====================================== -->
<!-- ============= Uhrzeit ================ -->
<li data-row="1" data-col="2" data-sizex="1" data-sizey="1" data-template="inc_uhr.html"></li>
<!-- ============== Tankstelle ============ -->
<li data-row="1" data-col="2" data-sizex="2" data-sizey="1" data-template="inc_tankstelle.html"></li>
<!-- ======= Wetterstation und PV ========= -->
<li data-row="1" data-col="5" data-sizex="3" data-sizey="1" data-template="inc_klima_pv.html"></li>
<!-- ============================================================================================== -->
<!-- ====================== Hier beginnt der CONTENT-Bereich der SEITE index.html ===================== -->
<!-- ============================================================================================== -->
<!-- =========== SMA Portal ============= -->
<!-- ===================================== -->
<li data-row="2" data-col="4" data-sizey="3" data-sizex="3">
<header>SMA Portal Information</header>
<div class="cell">
<div data-type="smaportalspg" data-device="ftui.sunnyPortal" data-get="parentState"></div>
</div>
</li>
<!-- =========== ENDE INHALT ============== -->
<!-- ====================================== -->
</ul>
</div>
Vielleicht hilft es ja bei deinen Anzeigeproblemen mit der Kachelgröße zu spielen. Es müssen alle definierten Kacheln auf die Anzeige passen, sonst kommt es zu Verschiebungen.
VG Marcel
Thx , jetzt wieder zurück zum Thema :)
Hallo Heiko,
ich habe die angekündigten Attribute in 76_SMAPortalSPG implementiert und in 76_SMAPortal integriert.
"headerAlignment:left,center,right ".
"headerDetail:all,co,pv,pvco,statusLink "
Ferner habe ich den Headeraufbau vereinfacht und die Erstellung strukturiert. Soll heißen, sie ist jetzt für deutsch und englisch gleich.
if ($header) {
# Headerzeile generieren
my $lang = AttrVal("global","language","EN");
my $alias = AttrVal($name, "alias", "SMA Sunny Portal"); # Linktext als Aliasname oder "SMA Sunny Portal"
my $dlink = "<a href=\"/fhem?detail=$name\">$alias</a>";
my $lup = ReadingsTimestamp($name, "state", "0000-00-00 00:00:00"); # letzte Updatezeit
my $lupt = "last update:";
my $lblPv4h = "4h:";
my $lblPvRe = "day:";
my $lblPvTo = "tomorrow:";
#Header auf Deutsch übersetzen, wenn das globale Sprachschema auf Deutsch steht
if(AttrVal("global","language","EN") eq "DE") {
$lupt = "letzte Aktualisierung:";
$lblPv4h = "4h:";
$lblPvRe = "Tag:";
$lblPvTo = "Morgen:";
}
$header = "<table align=\"$hdrAlign\">";
#header link + status
if($hdrDetail eq "all" || $hdrDetail eq "statusLink") {
my ($year, $month, $day, $hour, $min, $sec) = $lup =~ /(\d+)-(\d\d)-(\d\d)\s+(.*)/;
$lup = "$3.$2.$1 $4";
$header .= "<tr><td colspan=\"3\" align=\"left\"><b>".$dlink."</b></td><td colspan=\"4\" align=\"right\">(".$lupt." ".$lup.")</td></tr>";
}
#header information pv
if($hdrDetail eq "all" || $hdrDetail eq "pv" || $hdrDetail eq "pvco") {
$header .= "<tr> <td width=\"45\"><b>PV =></b></td> <td width=\"20\"><b>$lblPv4h</b></td> <td align=right width=\"45\">$pv4h</td> <td width=\"30\"><b>$lblPvRe</b></td> <td align=right width=\"45\">$pvRe</td> <td width=\"60\"><b>$lblPvTo</b></td> <td align=right width=\"45\">$pvTo</td> </tr>";
}
#header information co
if($hdrDetail eq "all" || $hdrDetail eq "co" || $hdrDetail eq "pvco") {
$header .= "<tr> <td width=\"45\"><b>CO =></b></td> <td width=\"20\"><b>$lblPv4h</b></td> <td align=right width=\"45\">$co4h</td> <td width=\"30\"><b>$lblPvRe</b></td> <td align=right width=\"45\">$coRe</td> <td width=\"60\"><b>$lblPvTo</b></td> <td align=right width=\"45\">$coTo</td> </tr>";
}
$header .= "</table>";
}
Ich habe auch noch einmal mit der Tabelle gespielt, aber irgendwie ist mir kein Durchbruch gelungen. Aktuell habe ich feste <td width> Angaben drin, kann mir aber vorstellen, dass ein HTML-Künstler wie Wzut das deutlich eleganter lösen wird.
Hilfe zu den beiden Attributen ist in Deutsch und Englisch ergänzt worden.
Der Einfachheit halber hänge ich die files an, da an unterschiedlichen Stellen editiert wurde.
Besten Gruß
Marcel
Hallo Marcel, @all,
ich habe ein Github-Repo für die Verteilung der Widgets angelegt und eine Wiki-Seite dafür aufgebaut.
Man kann nun die Widgets automatisch updaten.
-> https://wiki.fhem.de/wiki/FTUI_Widget_SMAPortalSPG
In der Hilfe zu den Modulen sind entsprechende Hinweise und Links enthalten. Sie liegen im Contrib.
Jetzt bzw. morgen schaue ich mir deine Implentierung an. Danke dafür :)
LG,
Heiko
Hallo Heiko,
das klingt gut, werde ich am Wochenende mal testen. So funktioniert das bei ftui ja auch, man added das Repository zur Updateroutine von fhem und damit wird dann der letzte Stand abgeholt und in die Verzeichnisse kopiert. Ich denke das ist das was mich erwartet, oder?
Bin gespannt ob dir mein Ansatz gefällt. In der englischen Hilfe fehlt ein ,,only" bei pv oder co. Ist mir erst später aufgefallen.
Gruß Marcel
Gesendet von iPhone mit Tapatalk
ZitatSo funktioniert das bei ftui ja auch, man added das Repository zur Updateroutine von fhem und damit wird dann der letzte Stand abgeholt und in die Verzeichnisse kopiert. Ich denke das ist das was mich erwartet, oder?
Ja, genau. Steht im Wiki beschrieben.
Mal sehen ob ich morgen die Versionen finalisieren kann. Bin am WE etwas ausgelastet. ;)
LG
Zitat von: Xguide am 04 Juli 2019, 11:22:56
kann mir aber vorstellen, dass ein HTML-Künstler wie Wzut das deutlich eleganter lösen wird.
oh danke für die Blumen :) aber bitte hilf mir jetzt kurz auf die Sprünge :
warum denkst du muß man den einzelen TD Elementen überhaupt eine fixe Breite verpassen ?
Ich habe deine Version runtergeladen und alle width= entfernt, die Tabelle schaut auch dann IMHO immer noch ok aus...
Hallo miteinander,
bin leider nicht dazu gekommen mir Marcel's Ansatz genauer anzuschauen. Muss auch bald weg.
Geht bei mir frühestens Sonntag Abend weiter.
Wünche euch schon mal ein schönes WE !
Grüße,
Heiko
Hallo miteinander,
habe die Vorschläge von Marcel leicht verändert übernommen (danke Marcel ! :) ).
Unter anderem sind die "width" entfernt, wie Wzut schon schrieb hatten sie auch bei mir keinen sichtbaren Einfluss.
Der String mit der Updatezeit ist jetzt auch noch kürzer und passt besser.
Ansonsten ist es so geblieben wie von Marcel vorgeschlagen.
Die Files liegen im contrib.
Grüße,
Heiko
Zitat von: Wzut am 05 Juli 2019, 07:26:00
warum denkst du muß man den einzelen TD Elementen überhaupt eine fixe Breite verpassen ?
Moin zusammen,
ich habe keine Ahnung mehr. Funktioniert ganz gut ohne. Ich hatte anfangs noch Umbrüche bei kleinem Layout (hourCount ~10) und die wollte ich mit den festen Breiten verhindern. Danach habe ich aber auch noch einmal die Texte eingekürzt und jetzt passiert es nicht mehr.
Anyway, ich hatte meinen Entwurf nur als temporär gesehen, da ich dachte hier kommt noch der große Wurf mit dem Auszählen der Zeichen usw. Muss aber imho auch nicht mehr sein. Nun haben wir prägnante Infos im Header und er ist nicht umgebrochen und zertsört das ftui look and feel (Test im ftui mit hourCount = 7). Bin sehr zufrieden!
Auto-Update ftui widgets:
Git-Repo hingezügefügt:
update add https://raw.githubusercontent.com/nasseeder1/fhem-ftui_smaportalspg_widget/master/controls_smaportalspg_widget.txt
Funktioniert! Super und Danke dafür.
2019.07.08 08:56:25 1 : smaportalspg_widget
2019.07.08 08:56:26 1 : UPD www/tablet/js/widget_smaportalspg.js
2019.07.08 08:56:26 1 : UPD www/tablet/css/ftui_smaportalspg.css
2019.07.08 08:56:26 1 :
2019.07.08 08:56:26 1 : New entries in the CHANGED file:
2019.07.08 08:56:26 1 : - change: widget_smaportalspg: initial check in
Denke damit alles Neue getestet zu haben! Den Thread zum neuen Modul hast Du ja schon angelegt Heiko, wann geht es online?
Beste Grüße
Marcel
Moin,
also wenn das Entwicklungs- und Designteam :) keine weiteren Änderungen einbringen will / muss, würde ich die Module heute Abend einchecken.
Der Standard Forumsbereich wäre dieser hier, wobei ich diesen Thread gerne für die Weiterentwicklung nutzen würde und nicht für generelle Fehlermeldungen.
Bin mir aber nicht sicher, weil dieser Thread an sich von Brun eröffnet wurde. Es hat sich halt thematisch so entwickelt.
Vielleicht sollte ich einen neuen für diese Anwendung erstellen, was meint ihr ?
Grüße,
Heiko
ja mach einen neuen Fred auf und setze hier nur einen Link wo es weitergeht.
Kleiner Vorschlag zum Quelltext :
1990 $lblPv4h = "4h:";
1992 $lblPvTo = "Morgen:";
Zeile 1990 kann entfallen da englisch/deutsch sich nicht unterscheiden, und Zeile 1992 würde ich Morgen in morgen ändern.
Habe irgendwie im Hinterkopf : heute Morgen stand ich früh auf, aber morgen habe ich frei :)
Wobei dann Tag auch komisch ausschaut , vllt. heute ? und englisch today ?
so machen wir das :)
LG,
Heiko
Hallo miteinander,
es ist vollbracht, die Module sind eingecheckt und morgen früh im Update enthalten.
@Wzut, ich habe dich als Co-Maintainer in der Maintainer.txt angegeben. Ich hoffe es ist dir recht, ansonsten gib Bescheid wenn du es nicht möchtest.
Der weiterführende Thread ist nun hier: https://forum.fhem.de/index.php/topic,102112.0.html
Nochmal ein Dankeschön an alle die mitgewirkt haben und noch mitwirken wollen :D und natürlich an all diejenigen, die mit ihren Ideen und diversen Vorarbeiten quasi die Geburtshelfer des Moduls sind.
Grüße,
Heiko
Guten Morgen Gemeinde,
ich habe seid ein paar Tagen auch mein Energy Meter gegen einen Home Manager getauscht.
Leider habe ich es noch nicht geschafft den Home Manager im Sunny Portal komplett einzubinden - aktuell stellt der sich noch als separate Anlage dar. Die Überführung meines Wechselrichters "unter" den Home Manager in einer neuen Anlage habe ich noch nicht hinbekommen. Also kennt der Home Manager aktuell auch den Wechselrichter noch nicht obwohl beide im gleichen LAN sind.
--> hat jemand eine Ahnung wie ich das "Erkennen" erzwingen kann?
Meine (naive) Annahme war, dass ich im Home Manager eine lokale Web-Oberfläche finde.
--> Mach ich was falsch oder gibt es die nicht? ((zumindest Port 80 ist offen)
Der HM-20 liefert auch schon Daten an FHEM.
Aber auch hier stellt sich mir die Frage warum das die gleichen Daten sind wie beim Energy Meter.
--> Oder gibt es mehr Daten (bspw. den Forecast) und ich nutze mit dem SMAEM Modul nur das falsche Modul.
Das Modul hier scheint ja - wenn das richtig verstanden habe - die Daten auch aus dem Portal abzurufen und nicht lokal abzuholen.
Vielleicht kann mir jemand die Fragen beantworten.
Vielen Dank vorab und beste Grüße aus Leipzig!
Erik
Guten Morgen Erik,
wenn ich es richtig im Hinterkopf habe, dann hat SMA im SHM 2.0 Energymeter und Homemanger verheiratet. Zum Anlernen im Portal kann ich nichts sagen, da ich noch auf dem alten Stand bin.
Wenn du das SMAEM Modul benutzt, dann solltest Du auch nicht mehr als die Werte vom Energymeter erwarten. Mehr werden nicht abgefragt und zur Anzeige vorbereitet.
Wenn Du zusätzlich SMAPortal benutzt, dann hast du die Möglichkeit die im Portal abgelegten Daten anzuzeigen. Zusätzlich kommt der Wetterbericht und der Forecast. Ferner lassen sich Verbraucher schalten.
Viel Erfolg und viele Grüße,
Marcel
Hallo Erik,
da du in Leipzig bist, kannst du gern auch mal zu unserem FHEM Stammtisch hinzukommen.
https://forum.fhem.de/index.php/topic,52727.msg967281.html#msg967281
Dort können wir solche Sachen auch mal gemeinsam thematisieren und online ausprobieren.
Grüße,
Heiko
Hallo zusammen.
Ich hätte einen Sunny Home Manager abzugeben. Unbenutzt, da ich auf Kostal umgestiegen bin.
Anfragen/Angebote per privat Nachricht.
Gruß Christian
Gesendet von meinem SM-G930F mit Tapatalk
Hallo Christian,
SHM 1.0 oder 2.0?
Grüße Marcel
Gesendet von iPhone mit Tapatalk
Nen Energy Meter hätte ich auch abzugeben :P
Zitat von: Xguide am 16 August 2019, 20:34:06
Hallo Christian,
SHM 1.0 oder 2.0?
Grüße Marcel
Gesendet von iPhone mit Tapatalk
Es ist ein 2.0.
Christian
Gesendet von meinem SM-G930F mit Tapatalk
Zitat von: ritter_runkel am 16 August 2019, 22:09:16
Nen Energy Meter hätte ich auch abzugeben :P
Dass lässt sich auch gut für die Zählung von Teilverbräuchen einsetzen.
Ich verwende es z.B. für den Heizungsstromverauch der Luft Wärme Pumpe und der KWL.
Gruß
Christian
Keine schlechte Idee - mal sehen ob ich noch den Platz im Schrank finde ;-)
Ich habe mich die Tage mal mit der Software Smart Appliance Enabler (SAE) beschäftigt und bin etwas überrascht das man hier im Forum mit der Suche keinen Treffer erhält. Kurz gesagt : Damit kann eigentlich fast jedes FHEM Device dem SMA Portal entweder als zu schaltendes Gerät und/oder Stromverbraucher untergeschoben werden. D.h. man ist nicht mehr nur auf die Edimax Schaltsteckdosen oder die Bluetooth Dinger angewiesen.
Aber back to Topic : Geräte die man dem SMA Portal so beigebracht hat werden problemlos wieder vom SMAPortal Modul erkannt und finden ebenso einfach ihren Weg ins SMAPortalSPG als Icon mit dem Attribut consumerList.
Ich habe auch schon 2 Gosund-Steckdosen über SAE eingebunden, aber wie sollte das mit "fast jedem FHEM Device" funktionieren???
Gruß
Blueberry63
on off schalten via FHEM http wenn das Device kein eigenes Webinterface hat, ebenso lassen sich Verbrauchsdaten von irgendwelchen Geräten via get ReadingsVal
einpflegen, so habe ich jetzt als reine "immer an" Verbraucher den Gefrierschrank drin der nur eine Revolt Messdose hat.
Hallo,
erstmal ein großen DANKE an die ganzen Entwickler hier.
Ich bin garede dabei meine ersten Schritte mit FHEM zu machen und wollte als erstes meine PV Anlage auslesen und später auf nem Tablet anzeigen.
Wichtig: Ich teste das ganze gerade auf Windows.
Hab auch schon den halben Thread hier durch gelesen, bis ich gemerkt habe, dass das initiale Module gar nicht mehr aktuell ist :'(
Also habe ich mir das SMAPortal angeschaut.
Doch leider habe ich direkt ein Problem damit.
Sobald ich das Module definiert und meine Zugangsdaten eingetragen habe läuft der Anmeldeprozess in einer Enlosschleife.
Der Event monitor zeigt folgendes:
2019-10-22 22:44:58 SMAPortal MySMAPortal L1_Login-Status: successful
2019-10-22 22:44:59 SMAPortal MySMAPortal L1_Login-Status: successful
2019-10-22 22:44:59 SMAPortal MySMAPortal L1_Login-Status: successful
2019-10-22 22:44:59 SMAPortal MySMAPortal L1_Login-Status: successful
2019-10-22 22:44:59 SMAPortal MySMAPortal L1_Login-Status: successful
2019-10-22 22:44:59 SMAPortal MySMAPortal L1_Login-Status: successful
2019-10-22 22:45:00 SMAPortal MySMAPortal L1_Login-Status: successful
Und das Log (Mit Verbose 5)
2019.10.22 22:39:11 3: MySMAPortal - login to SMA-Portal successful ...
2019.10.22 22:39:11 5: MySMAPortal - 500
2019.10.22 22:39:11 3: MySMAPortal - get data again
2019.10.22 22:39:11 5: MySMAPortal - Start operation with CookieLocation: ./log/mycookies.txt and UserAgent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
2019.10.22 22:39:11 5: MySMAPortal - data get: all, data set: none
2019.10.22 22:39:11 3: MySMAPortal - not logged in. Try again ...
2019.10.22 22:39:11 4: MySMAPortal - Credentials read from RAM: max.mustermann@email.de *******
2019.10.22 22:39:11 4: MySMAPortal - 500
2019.10.22 22:39:11 5: MySMAPortal - Login-Page return: Can't locate object method "new" via package "LWP::Protocol::https::Socket" at c:/FHEM/perl/vendor/lib/LWP/Protocol/http.pm line 34.
Der letzte Eintrag sagt mir, dass es was mit Perl ist, aber da bin ich absoluter Neuling.
Hat einer von euch einen Tipp wonach ich Suchen muss?
Vielen Dank
Gruß
Benjamin
Hallo Benjamin,
versuch mal LWP upzudaten.
Entweder mit "cpanm LWP" oder vielleicht einfacher mit dem FHEM Installer -> siehe: http://fhem.de/commandref.html#Installer
Ist der Installer definiert, einfach "set ... installPerl LWP" eingeben.
Grüße,
Heiko
Hallo Heiko,
Vielen Dank für die schnelle Hilfe.
Da ich leider weitere Probleme mit FHME unter Windows hatte, habe ich es unter Linux aufgesetzt.
FHEM soll später eh auf einem Pi laufen, also noch besser.
Und siehe da unter Lunix klappt alles wie erwartet.
Also Problem nicht gelöst, aber umgangen.
Nun bin ich gespannt auf das Modul...
Vielen Dank nochmal dafür.
Gruß
Benjamin
Hallo,
ich bin ein komplettes Greenhorn FHEM-technisch, habe aber alles nach Anleitung gemacht und bekomme jetzt nur ein "Login Failed". Ich hatte vorher auch ioBroker ausprobiert und die haben da aktuell auch Probleme mit dem Sunny Portal. Hat sich da eventuell was geändert, oder geht das bei euch noch alles problemlos und ich bin das Problem? :o
Danke und Grüße
Tobias
Hallo Tobias,
ein ,,Login failed" bekomme ich zwar nicht, aber der Datenabruf klappt in letzter Zeit eher schlecht. Es gibt etwas neues: SMAPortal, habe es aber selber noch nicht versucht und finde gerade nicht die Quelle, wo ich das aufgeschnappt hatte.
Mit den Anmeldedaten kannst du dich aber ohne Probleme auf der Website mit einem Browser anmelden?
Viele Grüße
Bernd
Hallo Bernd, Tobias,
das Modul SMAPortal ist offiziell eingecheckt und sofort verfügbar sofern FHEM aktuell ist.
Support-Thread: https://forum.fhem.de/index.php/topic,102112.0.html
Edit: in letzter Zeit war/ist der Datenabruf tatsächlich etwas unzuverlässig. Mit diesen Attributen klappt es bei mir aber wieder recht gut (Attribute gelten für das Modul SMAPortal):
attr Sonnenstrom cookielifetime 1800
attr Sonnenstrom getDataRetries 4
attr Sonnenstrom interval 300
attr Sonnenstrom timeout 300
attr Sonnenstrom userAgent Mozilla/5.0 (Windows NT 10.0;; Win64;; x64;; rv:75.0) Gecko/20100101 Firefox/75.0
Grüße,
Heiko
Huhu,
Danke für die schnellen Antworten :)
Ja auf der Website kann ich mich problemlos einloggen, habe neben meinem Admin-User auch einen Standard-User neu angelegt für diesen Zweck hier. Mein Ziel ist es übrigens, die Wärmepumpe an meinem Pool mit meiner PV zu koppeln, damit ich keinen Atomstrom in meinem Pool hab, der kitzelt so :P
Heiko kanns sein, dass ich nicht die aktuellste Version von der Erweiterung habe? Ich habe die Datei aus dem ersten Post heruntergeladen und alles weitere so gemacht wie in dieser Anleitung:
https://wiki.fhem.de/wiki/SunnyHomeManager
Wenn ich jetzt versuche, dein Attribut zu setzen kommt das hier.
MySHM: unknown attribute cookielifetime. Type 'attr MySHM ?' for a detailed list.
Ansonsten versuche ichs mit dem SMAPortal-Modul.
Die von mir oben angegebenen Attribute gelten für das SMAPortal Modul. Sorry, hatte ich vorhin erst ergänzt.
Coole Sache, das mit dem SMAPortal hat einwandfrei geklappt.
Folgende Befehle habe ich ingesamt "abgefeuert" (Kein Plan, ob die alle nötig waren, bin wie gesagt Greenhorn):
define Sonnenstrom SMAPortal <user> <password> (60)
attr Sonnenstrom room Sonnenroom
Auf "Sonnenroom -> Sonnenstrom" klicken und bei Credentials "user@domain.com passwort" eingeben
define FileLog_Sonnenstrom FileLog ./log/Sonnenstrom-%Y-%m.log Sonnenstrom
attr FileLog_Sonnenstrom room Sonnenstrom
attr Sonnenstrom cookielifetime 1800
attr Sonnenstrom getDataRetries 4
attr Sonnenstrom interval 300
attr Sonnenstrom timeout 300
attr Sonnenstrom userAgent Mozilla/5.0 (Windows NT 10.0;; Win64;; x64;; rv:75.0) Gecko/20100101 Firefox/75.0
Danke Heiko und Bernd für die super Unterstützung :) Jetzt kann ich schauen, wie ich eine Steckdose getriggert bekomme ab 1KW "übrigem" Sonnenstrom. Erstmal so eine Steckdose beschaffen.
Hi Tofi,
was hast du denn für SMA Komponenten?
Zufällig auch ein Energymeter? Wenn ja, würde ich das entsprechende fhem Modul nehmen und dort das Reading ,,Einspeisung_Wirkleistung" auswerten. Wenn Einspeisung >1K dann schalte Steckdose.
Ist etwas direkter und geht nicht erst über das Portal. Dafür nimmst du dann ein doif oder notify.
Just my 2 Cent,
Marcel
Zitat von: tofi am 21 Mai 2020, 16:04:29
Danke Heiko und Bernd für die super Unterstützung :) Jetzt kann ich schauen, wie ich eine Steckdose getriggert bekomme ab 1KW "übrigem" Sonnenstrom. Erstmal so eine Steckdose beschaffen.
Hallo Tofi,
gern geschehen :-) Die Diskussion können wir gerne im neuen Thread https://forum.fhem.de/index.php/topic,102112.0.html weiterführen, denn dort geht es um das Modul 76_SMAPortal. Hier in diesem Thread wird das alte Modul behandelt.
Ich habe DOIFs erstellt, um die Waschmaschine und die Spülmaschine zu steuern. Gerade bei der Spülmaschine ist es interessant. Wenn sie abends eingeräumt ist, schalte ich sie ein und trenne dann den Strom (Homematic-Schaltsteckdose). Im DOIF stelle ich dann ein, ob sie am nächsten Tag laufen soll / nur laufen soll, wenn ausreichend Strom da ist / erst laufen soll, sobald die Batterie voll ist.
Das DOIF ist noch ausgebaut, so dass ich über Pushover ne Meldung aufs Handy bekomme, sobald die Spülmaschine fertig ist. Das hätte ich aber besser aufteilen sollen. Alles in einem DOIF ist schon sehr unübersichtlich.
Einen Teil vom DOIF hänge ich hier mal mit rein. Das ist noch mit dem alten Modul. Ich muss das DOIF erst anpassen, damit es für das neue Modul 76_SMAPortal passend getriggert wird.
DOELSEIF ( [$SELF:Automatik] eq "NaechsteGelegenheit" and
[MySHMForecastRelative:Next04Hours-Total] > 1000 and
[MySHMForecastRelative:Next04Hours-IsConsumptionRecommended] >= 2 and
[MySHMForecastRelative:ThisHour_IsConsumptionRecommended] eq "yes" and
[10:09-15:00] and
[SpuelmaschineSteckdose_Sw] eq "off" )
## 6
((set Pushover msg 'Sauber' 'Jetzt wird mal die Spuelmaschine eingeschalten.' 'Bernd-iPhone' 0 ''))
(set SpuelmaschineSteckdose_Sw on,set $SELF Automatik Aus)
DOELSEIF ( ["$SELF:Automatik: Pflicht"] and [11:00-13:00] and
[SpuelmaschineSteckdose_Sw] eq "off" )
## 7
((set Pushover msg 'Sauber' 'Jetzt wird mal die Spuelmaschine eingeschalten.' 'Bernd-iPhone' 0 ''))
(set SpuelmaschineSteckdose_Sw on,set $SELF Automatik Aus)
DOELSEIF ( [$SELF:Automatik] eq "WennBatterieVoll" and
[?10:00-16:00] and
[MySHM:BatteryChargeStatus] > 94 and
[SpuelmaschineSteckdose_Sw] eq "off" )
## 8
((set Pushover msg 'Sauber' 'Batterie ist voll. Jetzt wird mal die Spuelmaschine eingeschalten.' 'Bernd-iPhone' 0 ''))
(set SpuelmaschineSteckdose_Sw on,set $SELF Automatik Aus)
Viele Grüße
Bernd
Danke Bernd und Marcel.
Der Abruf über das Sunny Portal hat sich in den letzten Tagen leider bei mir als nicht sehr stabil erwiesen. Es kommt immer die Fehlermeldung
The current data cannot be retrieved from the PV system. Check the cabling and configuration of the following energy meters:
Aber im Portal und in der App ist alles da. Die Technik, sich per Script auf einer Webseite einzuloggen und nicht dafür vorgesehene Ajax-Calls zu verwenden missfällt mir eh.
Ich werde daher Marcels Vorschlag folgen und es direkt über den Energymeter / Home Manager versuchen.
Huhu,
der Vollständigkeit halber: ich habe es hinbekommen. Wahnsinn, was mit FHEM alles möglich ist, so viel Freiheitsgrade ergeben natürlich auch eine "gewisse" Komplexität :)
Mein DOIF sieht so aus (DP11_SMAEM ist mein Energy-Meter, MQTT2_Blitzwolf_1 ist die Schaltsteckdose):
defmod di_Poolheizung DOIF ([MQTT2_Blitzwolf_1] eq "on" and [DP11_SMAEM] < 100) (set MQTT2_Blitzwolf_1 off) DOELSEIF ([MQTT2_Blitzwolf_1] eq "off" and [DP11_SMAEM] > 1100) (set MQTT2_Blitzwolf_1 on)
Nochmals Danke an alle Beteiligten :)
Hallo,
bei mir werden folgend Daten nicht mehr gelesen
L1_BatteryChargeStatus
L1_DirectConsumption
L1_DirectConsumptionQuote
Hat noch jemand das Problem?
Grüße
Hallo Holger,
bist du vllt. im falschen Thread und meinst das hier https://forum.fhem.de/index.php/topic,102112.msg1063375.html#msg1063375
Moin zusammen,
ich kann seit 28.06, 17:11h keine neuen Werte mehr auslesen.
Habe bereits einen neuen User angelegt, Login-State ist ok.
Geht's anderen auch so oder habe nur ich hier ein Problem? SMA ist ja leider sehr daran interessiert, dass ich meine eigenen Daten nicht auslesen und verarbeiten kann.
Habe einen 8000er mit nem SHM.
Grüße!
Zitat von: assi05 am 24 Juli 2020, 08:23:00
ich kann seit 28.06, 17:11h keine neuen Werte mehr auslesen.
Moin,
das ist ja schade, dass es nicht klappt. Bei mir läuft alles ohne Probleme. Habe in den letzten Tagen keine Unterbrechungen feststellen können...
Deine Fhem-Module sind aktuell?
Viele Grüße
Bernd
Moin zusammen,
@Bernd, @assi05 ... ich bin mir unsicher ob ihr beide vom selben Modul sprecht. Bernd meint mit ziemlicher Sicherheit das Modul SMAPortal (was auch bei mir in der aktuellen Version absolut zufriedenstellend läuft). Für dieses Modul existiert aber ein anderer Supportthread (siehe weiter oben).
Frage ist welches Modul assi05 im Einsatz hat bzw. meint ?
Grüße,
Heiko
Moin,
sorry, Antwort hat etwas gedauert, ich konnte vom Handy keine Bilder anhängen :(
Das Modul ist das 76_SMAPortal.pm. Aufgrund anhaltender Probleme hab ich es komplett gelöscht, Raspi und FHEM nochmal upgedated, neu gebooted und neu installiert.
Alle (bisher im Juni eingefrorenen) Leistungswerte sind jetzt nicht mehr sichtbar, sondern es werden lediglich die Werte laut Screenshot angezeigt. Login geht also, L00_PlantPeakPower kommt aus dem Portal, ich gehe also weiter davon aus, dass SMA die Datenabfrage aktiv unterdrückt?
Bei früheren Versionen konnte ich die CookieLifetime anpassen - das gibt's offenbar nicht mehr, korrekt? (hat vor 2-3 Jahren ein ähnliches Problem gelöst)
Moin,
das ist der initiale Zustand des Moduls. Du must dir die gewünschten Dataprovider mit dem Attribut providerLevel auswählen.
Wegen der Problematik des Datenabrufs wurde in den letzten Wochen das Modul komplett umgebaut. Du musst dir die ComRef mal zu Gemüte führen.
Gut ist auch die letzten Beiträge im Supportthread des Moduls (weiter oben angegeben) mal durchzulesen.
Wenn weitere Fragen auftreten bitte auch im obigen Thread melden. Dieser Thread hier ist für SMAPortal falsch.
Grüße,
Heiko
Hi Heiko,
wow...manchmal kann es so einfach sein! Ich hatte das Modul lange ohne Fehler am laufen und bin nicht darauf gekommen, in der Ecke zu kramen - habe den Fehler an anderer Stelle gesucht. Ich habe vor einiger Zeit sogar einen neuen User angelegt, da ich dachte, mein SP-User wäre blockiert.
Lass mich raten: mit 28.06. kamen die Änderungen (oder ich habe ein "update restart" gemacht und mir die neue Version draufgebügelt)
Im Moment läuft alles wieder - Poolpumpe, Wärmepumpensteuerung und auch die Markise fahren wieder automatisch, juhuuu :)
DANKE für den Hinweis!
Naja, die ganzen Umnbauten waren ein längerer Prozess bis wir ein gutes Ergebnis erzielt haben. Hat ca. von Ende Mai bis Anfang Juli gedauert.
Tipp: lege dir mehrere Portal Devices an wie ich es hier (https://forum.fhem.de/index.php/topic,102112.msg1070367.html#msg1070367) beschrieben habe. Das macht sich gut auch im Hinblick darauf dass ich in absehbarer Zeit noch mehr Statistikdaten zur Verfügung stellen werde wenn es meine Zeit erlaubt.
Grüße,Heiko
hallo zusammen,
habe ganz offensichtlich probleme mit dem modul ... mich durch die ersten paar seiten versucht durch zu lesen ... musste aber leider feststellen das ich scheinbar doch um einiges weniger von dem ganzen verstehe wie ich dachte :-[
bevor ich mir jetzt durch irgendwelche aktionen von mir hier evtl das ganze system zerschieße wollte ich mal ganz nett um hilfe fragen !
was ich bisher gemacht hab
- die module (98_SHM.pm & 98_SHMForecast.pm) ins verzeichnis /opt/fhem/FHEM kopiert und auf beide die rechte vergeben und reload bei beiden
- das modul per define eingerichtet mit 80er interval (mit dem passwort das ich bei sunny portal benutze)
hier bekomme ich dann auch die meldung das der login failed ist.
hab wie gesagt schon bissl probiert (die andere shm.pm zb.) aber hilfe wär echt super bevor was schief läuft.
danke und gruß
*edit*
im log steht jetzt z.b. MySHM -> 200
Hallo teggi,
erstmal willkommmen im Forum !
Seit über einem Jahr gibt es das offizielle Modul SMAPortal. in dieses Modul sind die ganzen Vorarbeiten und Funktionalitäten von 98_SHM.pm & 98_SHMForecast.pm eingeflossen und weiterentwickelt worden.
Falls du möchtest, kannst du SMAPortal anstatt verwenden. In der Commandref (https://fhem.de/commandref_DE.html#SMAPortal) ist alles genau beschrieben.
Dieses Modul wird hier (https://forum.fhem.de/index.php/topic,102112.0.html) supportet.
Grüße,
Heiko
hy DS_Starter,
vielen dank für die begrüßung und deine hilfe !
meine google suche hat mich dann wohl leider etwas fehl geleitet.
das smaportal hab ich auch soeben schon eingerichtet ... läuft :-D
also nochmals danke ;-)
gruß
- Update: Hat sich erledigt wird schon hier thematisiert: https://forum.fhem.de/index.php/topic,51569.855.html ist wohl die bessere Stelle :)
Moin zusammen,
gestern gab es ein Update vom HomeManager 2 auf Version 2.08.5.R und irgendwie werden bei mir die Werte zu Bezug-Wirkleistung nicht richtig übergeben. Kann jemand der mehr Erfahrung hat einmal nachsehen ob sich etwas geändert hat im Multi-Cast Protokoll oder sind das Probleme die ich nur hab?
:)
Viele Grüße
Henning