Hallo zusammen,
ich nähere mich gerade dem Thema Tasmota Script und bin mal wieder am verzweifeln. Im Netz gibt es ja einige Beispiele, wie man Google Charts nutzt. Die gehen dann auch. Jetzt versuche ich die ein wenig zu modifizieren und dann wird gar nichts mehr angezeigt.
Wenn ich folgendes Skript aktiviere, dann werden mir das 4h Chart und das Monatschart (mit Testwerten) wunderbar im Hauptmenu angezeigt (rechtes Bild unten)
>D 48
IP=192.168.178.61
tmp=0
cstr2="cnth0/120"
M:p:men=0 12
M:s4h=0 480
; ----------------------------------------------------------------------------------
; -- BOOT --
; ----------------------------------------------------------------------------------
>B
is(0 "Jan|Feb|Mär|Apr|Mai|Jun|Jul|Aug|Sep|Okt|Nov|Dez|")
men = {1 2 3 4 5 6 7 8 9 10 11 12}
; ====================================
; monthly energy year table
; ====================================
#monthsub
wcs <div id="month" style="text-align:center;width:335px"></div>
wcs <script language="JavaScript">function drawChart(){
wcs var cssc={'headerRow':'hRow','rowNumberCell':'hCol','tableCell':'tCell'};
wcs var data=google.visualization.arrayToDataTable([['Monat','Energie [kWh]',{role: 'style'}],
for tmp 1 12 1
wcs ['%is[tmp]%',%men[tmp]%,'green'],
next
wcs ]);
wcs var options={chartArea:{left:7,width:'96%%'},legend:'none',title:'Monatsverbrauch Jahresansicht [kWh]',vAxis:{format:'#',textPosition:'in'}};
wcs var chart=new google.visualization.ColumnChart(document.getElementById('month'));
wcs chart.draw(data,options);}google.charts.setOnLoadCallback(drawChart);</script>
>S
; every 30s
if (secs%30==0) {
; 4h chart values
s4h=mins
cstr2="cnth"+s(1.0((((hours+20)*120)+(mins*2)+(int(secs/30)))%2880+1))+"/120"
}
; ----------------------------------------------------------------------------------
; WEB INTERFACE
; ----------------------------------------------------------------------------------
>W
Datum:{m}%s(2.0day)%.%s(2.0month)%.%s(2.0year)%
Zeit:{m}%s(2.0hours)%:%s(2.0mins)%:%s(2.0secs)%
$<div style="margin-left:-22px">
; 4h power chart - new value every 30s
$<div id="chart1" style="text-align:center;width:335px"></div>
$gc(lt s4h "wr" "Leistung [W]" cstr2)
$var options = {
$chartArea:{left:7,width:'96%%'},
$legend:'none',
$vAxis:{format:'#',textPosition:'in'},
$explorer:{actions:['dragToZoom', 'rightClickToReset']},
$series: {0: {type: 'area'}},
$title:'Leistung 4 Stunden [Watt]'
$};
$gc(e)
; monthly energy consumption year chart
%=#monthsub
</div>
; -- END SCRIPT --
#
Alles anzeigen
Sobald ich aber das 4h Chart rausnehme, wird auch das Monatschart (aus der Subroutine nicht mehr angezeigt). Skript sieht dann so aus (also einfach in der >W Sektion nur die subroutine #monthsub aufrufen). Ich hätte erwartet, dass dann auch nur das Monatschart angezeigt wird, aber stattdessen wird gar kein Chart angezeigt (linkes Bild unten)
>D 48
IP=192.168.178.61
tmp=0
cstr2="cnth0/120"
M:p:men=0 12
M:s4h=0 480
; ----------------------------------------------------------------------------------
; -- BOOT --
; ----------------------------------------------------------------------------------
>B
is(0 "Jan|Feb|Mär|Apr|Mai|Jun|Jul|Aug|Sep|Okt|Nov|Dez|")
men = {1 2 3 4 5 6 7 8 9 10 11 12}
; ====================================
; monthly energy year table
; ====================================
#monthsub
wcs <div id="month" style="text-align:center;width:335px"></div>
wcs <script language="JavaScript">function drawChart(){
wcs var cssc={'headerRow':'hRow','rowNumberCell':'hCol','tableCell':'tCell'};
wcs var data=google.visualization.arrayToDataTable([['Monat','Energie [kWh]',{role: 'style'}],
for tmp 1 12 1
wcs ['%is[tmp]%',%men[tmp]%,'green'],
next
wcs ]);
wcs var options={chartArea:{left:7,width:'96%%'},legend:'none',title:'Monatsverbrauch Jahresansicht [kWh]',vAxis:{format:'#',textPosition:'in'}};
wcs var chart=new google.visualization.ColumnChart(document.getElementById('month'));
wcs chart.draw(data,options);}google.charts.setOnLoadCallback(drawChart);</script>
>S
; every 30s
if (secs%30==0) {
; 4h chart values
s4h=mins
cstr2="cnth"+s(1.0((((hours+20)*120)+(mins*2)+(int(secs/30)))%2880+1))+"/120"
}
; ----------------------------------------------------------------------------------
; WEB INTERFACE
; ----------------------------------------------------------------------------------
>W
Datum:{m}%s(2.0day)%.%s(2.0month)%.%s(2.0year)%
Zeit:{m}%s(2.0hours)%:%s(2.0mins)%:%s(2.0secs)%
$<div style="margin-left:-22px">
; monthly energy consumption year chart
%=#monthsub
</div>
; -- END SCRIPT --
#
Alles anzeigen
Hier die Bilder dazu:
Was muß ich machen, um nur das Monatschart anzeigen zu können (also den Teil in der #monthsub).
Vielen Dank!
Rainer