final deployed version

This commit is contained in:
00asdf 2025-05-18 21:13:39 +02:00
parent e1ddbde0da
commit 0e3afbd433
4 changed files with 32 additions and 13 deletions

View File

@ -4,9 +4,9 @@ import java.util.*
object GlobalDataStore {
@Volatile var targetTemp: Double = 22.5
@Volatile var reduction: Double = 2.0
@Volatile var reduction: Double = 2.5
@Volatile var pval: Double = 0.1
@Volatile var ival: Double = 1.0 / 60
@Volatile var ival: Double = 0.02
@Volatile var dval: Double = 0.0
@Volatile var isSunny = false

View File

@ -6,15 +6,11 @@ import java.lang.Math.clamp
import java.util.*
class PidController(vararg val controlUnits: Controller) {
init {
if (controlUnits.size < 1)
throw IllegalArgumentException("PID-Controller needs motor control units to act")
}
private var errorInt = 0.0
private var errorLast = 0.0
private fun step(actual: Double, desired: Double): Double {
fun step(actual: Double, desired: Double): Double {
val error = desired - actual
errorInt = clamp(errorInt + error, 0.0 / GlobalDataStore.ival, 1.0 / GlobalDataStore.ival)
val rv = GlobalDataStore.pval * error +

View File

@ -1,16 +1,13 @@
package dev.asdf00.visionfive.hc.server
import com.sun.net.httpserver.HttpExchange
import dev.asdf00.visionfive.hc.GlobalDataStore
import dev.asdf00.visionfive.hc.control.PidController
import dev.asdf00.visionfive.hc.gpio.Controller
import dev.asdf00.visionfive.hc.gpio.usingPins
import org.json.JSONArray
import org.json.JSONException
import org.json.JSONObject
import java.math.BigDecimal
import java.net.URI
import java.net.http.HttpClient
@ -20,12 +17,10 @@ import java.nio.charset.StandardCharsets
import java.nio.file.Files
import java.time.Duration
import java.util.*
import kotlin.collections.HashMap
import kotlin.io.path.Path
import kotlin.math.max
const val DEBUG = true
const val DEBUG = false
const val SENSOR_ID = "sensorId.txt"

View File

@ -0,0 +1,28 @@
import dev.asdf00.visionfive.hc.GlobalDataStore
import dev.asdf00.visionfive.hc.control.PidController
import java.util.*
fun main() {
val pid = PidController()
var myTime = 0
while (true) {
print("provide current temp (at ${
Calendar.getInstance().also {
it.set(Calendar.HOUR_OF_DAY, 0)
it.set(Calendar.MINUTE, 0)
it.set(Calendar.SECOND, 0)
it.add(Calendar.MINUTE, myTime)
}.time
}): ")
val t = readln()
if (t.isEmpty()) {
break
}
val nu = pid.step(t.toDouble(), GlobalDataStore.targetTemp)
println("setting the valves to ${(nu * 10_000).toInt().toDouble() / 100}%")
myTime += 2
}
println("bye ...")
}