Blog

  • 결선

    유투브보다가 저렇게 해도 된다는 것을 알게 되었다.

  • gps.update

    • 피코에 NEO-M8N을 연결해서 GPS 수신하고 있다.
    • micropyGPS를 이용해서 자료를 처리했다.
    • while True 를 이용한 순환문을 이용했다.
    • 아주 간혹 데이터 수신이 종료되었다.
    • NEO-M8N 모듈이 비정상적인 NMEA 문장을 출력하는 경우가 있는데, 이를 처리하지 못해서 발생한 일이었다.
    • 수신 데이터 처리하는 부분도 try ~ except 로 처리해야 하는 것이었다.
    • micropyGPS 는 수신 데이터를 한 글자씩 읽어서 모은 후 자료를 처리하는 구조다.
    sentence = uart.read().decode('utf-8')
    for char in sentence:
        gps.update(char)	

    이것을 try ~ except로 하면

    try:
        sentence = uart.read().decode('utf-8')
        for char in sentence:
            gps.update(char)
    except:
        pass
    • 한 번에 여러 문장이 수신되는데 한 문장만 오류가 나도 나머지 자료를 버리는 구조다.
    • 이렇게 해도 큰 문제 없지만 처리할 수 있는 데이터는 처리하고 싶었다.
    • 데이터를 문장 구조에 맞추어 분리한 후 한 문장씩 처리하되 오류가 생길 때만 데이터를 버리도록 했다.
    data = uart.read().decode('utf-8')
    for line in data.strip().splitlines():
        for char in line:
      	try:
                gps.update(char)
    	except:
    	    pass
    • 첫 번째 방법보다 아주 조금 더 처리 시간이 빨라졌다. 오류가 있는 데이터를 처리했을 때 약 10ms 정도 빠르다.
  • 비번 초기화

    • 2.5년 전에 설정해 둔 InfluxDB의 id/pw를 까먹었다.
    • 데이터 입출력 가능한 token은 있어 단기간에 문제는 안 생길 줄 알았다.
    • Grafana 업그레이드 실패할 뻔 했다. Grafana 설정을 복원하지 못하면 InfluxDB를 시각화 할 수 없다.
    • InfluxDB id/pw를 찾지 못하면 기존에 등록한 장비에서 token을 모조리 업그레이드 해야 했다.
    • 여러 방법을 시도해 보았다. 그런데 실패했다.
    • InfluxDB는 사용자 정보를 influxd.bolt 파일에 저장한다고 한다.
    • 그런데 influxd.bolt가 하나가 아닌 것을 알게 되었다.

    그래서 찾아봤다.

    sudo find  -name "influxd.bolt"
    
    ./root/.influxdbv2/influxd.bolt
    ./var/lib/influxdb2/influxd.bolt
    ./var/lib/influxdb/influxd.bolt

    3개가 있었다.

    /etc/influxdb/config.toml 파일을 보면 다음과 같았다.

    bolt-path = "/var/lib/influxdb/influxd.bolt"
    engine-path = "/var/lib/influxdb/engine"

    처음에 어떻게 설치했는냐, 그 이후에 다른 프로그램을 설치했는지에 따라 여러 bolt 파일이 존재한 것 같다.

    현재 사용중인 bolt 파일을 지정해서 작업하면 된다. 비밀번호는 8자리 이상으로 설정해야 한다.

    influxd recovery --bolt-path /var/lib/influxdb/influxd.bolt user update --username new-id --password new-password

    정말 반가운 로그인 화면

  • grafana 12.3.2

    그동안 컨테이너에서 deb을 설치해서 운영했다. 오류 메세지가 있어도 잘 동작했는데 이번부터는 안된다. 업무용 grafana 설정을 이렇게 날려먹은 이후에 제대로 시작하기 위하여 정석대로 해보았다.

    Grafana 설정 파일은 /var/lib/grafana 폴더에 있다. 이것을 컨테이너 밖으로 복사한다.

    Grafana에서 알려준 방법을 참고했다.

    docker run -d -p 3000:3000 --name=grafana \
      --user "$(id -u)" \
      --volume "/home/byun1114/grafana_data:/var/lib/grafana" \
      --network work \
      grafana/grafana-enterprise