Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion SolarGeneralProc.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,13 @@ function getSettings(){
}else{
enphase2=false
}

//must be a seperate try because this parameter was added later
try {
solarpanelSettingsJson = JSON.parse(solarpanelSettingsFile.read())
if (solarpanelSettingsJson['showProduction'] == "Yes") {showProduction = true} else {showProduction = false}
} catch(e) {
}
}
///////////////////////////////////////// SAVE ALL TO SETTINGS /////////////////////////////////////////////////////////////////////////////////////////////////

Expand Down Expand Up @@ -92,7 +99,8 @@ function getSettings(){
"onlinePluginFileName2" : onlinePluginFileName2,
"enableSleep" : tmpenableSleep,
"enablePolling" : tmpenablePolling,
"DebugOn": tmpDebugOn
"DebugOn": tmpDebugOn,
"showProduction": (showProduction ? "Yes" : "No")
}
solarpanelSettingsFile.write(JSON.stringify(setJson))
solarpanelSettingsJson = JSON.parse(solarpanelSettingsFile.read())
Expand Down
72 changes: 46 additions & 26 deletions SolarPanelApp.qml
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ App {
property bool enableSleep : false

property bool enablePolling : true
property bool showProduction : false
property string configMsgUuid : ""
property string popupString : "SolarPanel instellen en herstarten als nodig" + "..."
property string pluginWarning : "Selecteer Inverter"
Expand Down Expand Up @@ -585,63 +586,82 @@ App {
}
}

// Delay timers — one per independent call chain so they can overlap.
//
// Each timer stores its callback as a property instead of using
// Signal.connect(). The connect() approach accumulates connections on
// every call because Qt never removes a slot automatically; after N calls
// the signal fires N callbacks and N closures are kept alive forever.
// Storing the callback as a property and clearing it in onTriggered avoids
// both the accumulation and the dangling closure references.

Timer {
id: solarDelaytimer1
property var callback: null
onTriggered: { var fn = callback; callback = null; if (fn) fn() }
}

//delaytimer

function solarDelay(delayTime, cb) {
solarDelaytimer1.interval = delayTime
solarDelaytimer1.repeat = false
solarDelaytimer1.triggered.connect(cb)
solarDelaytimer1.stop() // cancel any pending fire before restarting
solarDelaytimer1.interval = delayTime
solarDelaytimer1.repeat = false
solarDelaytimer1.callback = cb
solarDelaytimer1.start()
}


Timer {
id: zonneplanDelayTimer
property var callback: null
onTriggered: { var fn = callback; callback = null; if (fn) fn() }
}

//delaytimer

function zonneplanDelay(delayTime, cb) {
zonneplanDelayTimer.interval = delayTime
zonneplanDelayTimer.repeat = false
zonneplanDelayTimer.triggered.connect(cb)
zonneplanDelayTimer.stop()
zonneplanDelayTimer.interval = delayTime
zonneplanDelayTimer.repeat = false
zonneplanDelayTimer.callback = cb
zonneplanDelayTimer.start()
}

function zonneplanDelayStop() {
zonneplanDelayTimer.stop()
zonneplanDelayTimer.callback = null
}

Timer {
id: zonneplanRegisterDelayTimer
property var callback: null
onTriggered: { var fn = callback; callback = null; if (fn) fn() }
}

//delaytimer

function zonneplanRegisterDelay(delayTime, cb) {
zonneplanRegisterDelayTimer.interval = delayTime
zonneplanRegisterDelayTimer.repeat = false
zonneplanRegisterDelayTimer.triggered.connect(cb)
zonneplanRegisterDelayTimer.stop()
zonneplanRegisterDelayTimer.interval = delayTime
zonneplanRegisterDelayTimer.repeat = false
zonneplanRegisterDelayTimer.callback = cb
zonneplanRegisterDelayTimer.start()
}


Timer {
id: solarEnphase
property var callback: null
onTriggered: { var fn = callback; callback = null; if (fn) fn() }
}

//delaytimer

function solarEnphaseDelay(delayTime, cb) {
if (debugOutput) console.log("*********SolarPanel Starting timer solarEnphaseDelay")
solarEnphase.interval = delayTime
solarEnphase.repeat = false
solarEnphase.triggered.connect(cb)
if (debugOutput) console.log("*********SolarPanel Starting timer solarEnphaseDelay")
solarEnphase.stop()
solarEnphase.interval = delayTime
solarEnphase.repeat = false
solarEnphase.callback = cb
solarEnphase.start()
}

function solarEnphaseDelayStop() {
solarEnphase.stop()
solarEnphase.stop()
solarEnphase.callback = null
}


Expand Down
50 changes: 19 additions & 31 deletions SolarPanelScreen.qml
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ Screen {
isStacked : true
specialBarColor2 :"green"
specialBarIndex2 : 0
showSpecialBar2 : false
showSpecialBar2: app.showProduction
barColor2 : "green"
dataValues2: app.fiveminuteValuesProd
visible: (app.pluginWarning.length <1)
Expand All @@ -138,41 +138,29 @@ Screen {
sunsetPerc : app.sunsetPerc
}

Rectangle{
id: rect1
SolarPowerCheckbox {
id: productionCheckbox
anchors {
bottom: parent.bottom
bottomMargin: isNxt? 10:8
left : parent.left
leftMargin : isNxt? 100:80
}
height: isNxt? 20: 16
width: isNxt? 40 : 32
color : "green"
visible: (app.pluginWarning.length <1)
}

Text{
id: txt1
bottom: parent.bottom
bottomMargin: isNxt ? 10 : 8
left: parent.left
leftMargin: isNxt ? 10 : 8
}
text: "Teruglevering"
font.pixelSize: isNxt? 15:12
font.family: qfont.regular.name
anchors {
verticalCenter: rect1.verticalCenter
left : rect1.right
leftMargin : isNxt? 10:8
}
color : "black"
visible: (app.pluginWarning.length <1)
selected: app.showProduction
onSelectedChangedByUser: {
app.showProduction = selected
app.saveSettings()
}
visible: app.pluginWarning.length < 1
}



Rectangle{
id: rect2
anchors {
verticalCenter: rect1.verticalCenter
left : txt1.right
leftMargin : 100
verticalCenter: productionCheckbox.verticalCenter
left: productionCheckbox.right
leftMargin: isNxt ? 20 : 16
}
height: isNxt? 20: 16
width: isNxt? 40 : 32
Expand All @@ -187,7 +175,7 @@ Screen {
font.pixelSize: isNxt? 15:12
font.family: qfont.regular.name
anchors {
verticalCenter: rect1.verticalCenter
verticalCenter: productionCheckbox.verticalCenter
left : rect2.right
leftMargin : isNxt? 10:8
}
Expand Down