Initial magic
This commit is contained in:
commit
d491fa5def
9
go.mod
Normal file
9
go.mod
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
module gitea.ligthert.net/golang/cartracker
|
||||||
|
|
||||||
|
go 1.24.0
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/rzetterberg/elmobd v0.0.0-20240426091703-01e7bbc11e6c // indirect
|
||||||
|
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07 // indirect
|
||||||
|
golang.org/x/sys v0.30.0 // indirect
|
||||||
|
)
|
6
go.sum
Normal file
6
go.sum
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
github.com/rzetterberg/elmobd v0.0.0-20240426091703-01e7bbc11e6c h1:+KTTRRXwNEZaby+mTA5o8vbeLFtffJ8rDCw/E4zEE0A=
|
||||||
|
github.com/rzetterberg/elmobd v0.0.0-20240426091703-01e7bbc11e6c/go.mod h1:pjUsxTi7MfZhog8b0rwIxtddeBI35SxEi8mNOQgzSO8=
|
||||||
|
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07 h1:UyzmZLoiDWMRywV4DUYb9Fbt8uiOSooupjTq10vpvnU=
|
||||||
|
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA=
|
||||||
|
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
|
||||||
|
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
103
main.go
Normal file
103
main.go
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/rzetterberg/elmobd"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
addr := flag.String(
|
||||||
|
"addr",
|
||||||
|
"test:///dev/ttyUSB0",
|
||||||
|
"Address of the ELM327 device to use (use either test://, tcp://ip:port or serial:///dev/ttyS0)",
|
||||||
|
)
|
||||||
|
debug := flag.Bool(
|
||||||
|
"debug",
|
||||||
|
false,
|
||||||
|
"Enable debug outputs",
|
||||||
|
)
|
||||||
|
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
dev, err := elmobd.NewDevice(*addr, *debug)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Failed to create new device", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
supported, err := dev.CheckSupportedCommands()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Failed to check supported commands", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
allCommands := elmobd.GetSensorCommands()
|
||||||
|
carCommands := supported.FilterSupported(allCommands)
|
||||||
|
|
||||||
|
version, err := dev.GetVersion()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error fetching version")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Println("Working with version", version)
|
||||||
|
|
||||||
|
voltage, err := dev.GetVoltage()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error getting voltage")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Printf("Voltage: %fv\n", voltage)
|
||||||
|
|
||||||
|
ignition, err := dev.GetIgnitionState()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Failed getting ignation state")
|
||||||
|
}
|
||||||
|
|
||||||
|
if ignition {
|
||||||
|
fmt.Println("ignition is turned on")
|
||||||
|
} else {
|
||||||
|
fmt.Println("ignition is turned off")
|
||||||
|
}
|
||||||
|
|
||||||
|
// fmt.Println("All commands:")
|
||||||
|
// fmt.Println(allCommands)
|
||||||
|
// fmt.Println("Car commands")
|
||||||
|
// fmt.Println(carCommands)
|
||||||
|
|
||||||
|
var commands []elmobd.OBDCommand
|
||||||
|
|
||||||
|
fmt.Printf("%d of %d commands supported:\n", len(carCommands), len(allCommands))
|
||||||
|
|
||||||
|
for _, cmd := range carCommands {
|
||||||
|
fmt.Printf("- %s supported\n", cmd.Key())
|
||||||
|
|
||||||
|
if cmd.Key() == "coolant_temperature" {
|
||||||
|
commands = append(commands, elmobd.NewCoolantTemperature())
|
||||||
|
}
|
||||||
|
|
||||||
|
if cmd.Key() == "short_term_fuel_trim_bank1" {
|
||||||
|
commands = append(commands, elmobd.NewShortFuelTrim1())
|
||||||
|
}
|
||||||
|
|
||||||
|
if cmd.Key() == "engine_rpm" {
|
||||||
|
commands = append(commands, elmobd.NewEngineRPM())
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
outputs, err := dev.RunManyOBDCommands(commands)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Something went very wrong! ", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, value := range outputs {
|
||||||
|
fmt.Printf("%s => %s\n", value.Key(), value.ValueAsLit())
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user