Giter Club home page Giter Club logo

ronny-the-station-chef's Introduction

Gonny the station chef

a rewrite of ronny the station chef but in go

TODO

  • Move all log.fatals to proper err handling
  • Implement Error recovery
  • Add health endpoint

What is what?

  • Collector: Retrieves all packages retrieved on the bluetooth interface, filters out the garbage and stores the baton packets as a detection in the postgresql DB
  • Spreader: An HTTP webser powered by fiber with an websocket endpoint where the detections will be sent over.
  • Emulator: This will emulate the Collector for testing purposes

Setup

  • Install go

  • Run what you want with go run cmds/PROGRAM/main.go and in the case of the Collector do not forget to run the program with higher privileges

Production

There is an all in one Ansible script that sets a linux machine up to run ronny. You need to have Ansible and ansible-galaxy installed.

Steps:

  1. cd ansible
  2. make init
  3. enter the stations in the hosts.ini file
  4. ansible-playbook playbook.yml

ronny-the-station-chef's People

Contributors

mcbloch avatar fkd13 avatar nuttyshrimp avatar redfast00 avatar reavershark avatar tibo-ulens avatar

Watchers

Kenneth Van den Driessche avatar  avatar  avatar

Forkers

fbegyn

ronny-the-station-chef's Issues

Maybe PyPy?

We had some concerns speed wise about the FastAPI app. Scaling to multiple workers already helped a lot. Might be worh looking into PyPy to see if this gives us any significant speedup.

Log User-Agent header

At the moment, it's not clear what programs are calling endpoints (and how frequently). It would be nice to log the User-Agent header and log how frequently what User-Agent calls what endpoint.

Some concerns:

  • just logging every request to a file would lead to more wear on the SD-card of the Pi (maybe logging to tmpfs could be possible)?
  • having a global object and storing the stats in there might not work well, since there are multitple workers (but we can use https://docs.python.org/3/library/multiprocessing.html#managers)
  • some scripts might not have a User-Agent header, or the header might be the same for two programs running on another machine, so it probably makes sense to also log the IP address

Invalid gonny reponse structure

the json response fields are camelcase but should be snake case

For reference, the Telraam java class that parses a Ronny detection

   5   │ public class RonnyDetection {
   6   │     public int id;
   7   │     public String mac;
   8   │     public int rssi;
   9   │     public float battery;
  10   │     @JsonProperty("uptime_ms")
  11   │     public long uptimeMs;
  12   │     @JsonProperty("detection_timestamp")
  13   │     public double detectionTimestamp;
  14   │ }

Add node-exporter to ansible

This was adhoc installed from apt during the event last time.

Better would be to install from the git releases as the apt version is 2 years old at the moment. The organisation has official ansible playbooks for this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.