The as-is architecture looks like this:
aquire -> persist -> visualize
Each compontent is implemented separately with persist and visualize sharing a github repository.
| module bmw | |
| go 1.25.1 | |
| require ( | |
| github.com/eclipse/paho.mqtt.golang v1.5.0 | |
| github.com/evcc-io/evcc v0.0.0-20250918141728-7759622260dc | |
| github.com/joho/godotenv v1.5.1 | |
| golang.org/x/oauth2 v0.31.0 | |
| ) |
| if fi, _ := os.Stdin.Stat(); fi.Mode()&os.ModeNamedPipe != 0 || fi.Mode()&os.ModeCharDevice == 0 { | |
| data, err := io.ReadAll(os.Stdin) | |
| if err != nil { | |
| log.Fatal(err) | |
| } | |
| ... | |
| } |
| package fly | |
| import ( | |
| "net/http" | |
| "os" | |
| "time" | |
| ) | |
| const ( | |
| flyMachineId = "fly-machine-id" |
| package main | |
| import ( | |
| "context" | |
| "fmt" | |
| "log" | |
| "net" | |
| "net/http" | |
| "net/url" | |
| "time" |
| // hexDump | |
| func hexDump(file io.Reader) { | |
| dumpLimit := &io.LimitedReader{ | |
| R: file, | |
| N: 512, | |
| } | |
| b, _ := ioutil.ReadAll(dumpLimit) |
| <?php | |
| /* | |
| * PHP-only solution for obtaining external IP from Fritz!Box | |
| * | |
| * Based on https://stackoverflow.com/questions/5647461/how-do-i-send-a-post-request-with-php#6609181 | |
| * brought to you by [email protected] | |
| */ | |
| // curl -s "http://fritz.box:49000/igdupnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" -d "@external_ip.xml" | grep -Eo "\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>" |