Supla virtual device MQTT

maxio2011
Posty: 116
Rejestracja: pt sty 22, 2021 1:08 pm

Pobierane wartości:
- Temperatura i wilgotność
- Ciśnienie
- Wartość PM1
- Wartość PM2,5 oraz procent normy
- Wartość PM10 oraz procent normy
-------

Help kto pomoże to odpalić na pi zero

zainstalowane requests
plik -,airly_get.py, samemu stworzyć z danymi z wątku ?
Awatar użytkownika
uchnast.michal
Posty: 1073
Rejestracja: wt cze 04, 2019 11:37 am

Mój plik airly.py po małych korektach. Z temp. i wilgotnością ostatnio jest problem.

Kod: Zaznacz cały

#!/usr/bin/python

import requests
import argparse

parser = argparse.ArgumentParser()

parser.add_argument("--url", help="Airly API url with API_KEY")
parser.add_argument("--th", help="File destination for temperature and humidity")
parser.add_argument("--pre", help="File destination for air pressure")
parser.add_argument("--pm1", help="pm1")
parser.add_argument("--pm10", help="pm10")
parser.add_argument("--pm25", help="pm25")
parser.add_argument("--caqi", help="caqi")

args = parser.parse_args()

if args.url:
  try:
    req = requests.get(args.url)
    if req.status_code == 200:
      result = req.json()['current']['values']
      indexes = req.json()['current']['indexes']

      if args.th:
        file = open(args.th, "w")
        file.write(f"{result[5]['value']}\n{result[4]['value']}")
        file.close()

      if args.pre:
        file = open(args.pre, "w")
        file.write(f"{result[3]['value']}")
        file.close()

      if args.pm1:
        file = open(args.pm1, "w")
        file.write(f"{result[0]['value']}")
        file.close()

      if args.pm10: #norm 50
        file = open(args.pm10, "w")
        file.write(f"{result[2]['value']}\n{(result[2]['value']*100)/50}")
        file.close()

      if args.pm25: #norm 25
        file = open(args.pm25, "w")
        file.write(f"{result[1]['value']}\n{(result[1]['value']*100)/25}")
        file.close()


      if args.caqi: #norm 25
        file = open(args.caqi, "w")
        file.write(f"{indexes[0]['value']}")
        file.close()

    elif req.status_code == 429:
      print("API rate limit was exceeded")
    elif req.status_code == 401:
      print("Please provide API key within a link")


  except requests.RequestException:
    print("URL error, please correct your URL")
  except:
    print("Unexpected error ocurred")


else:
  print("Error, you must provide an URL")
Crontab co godzinę - uzupełnij szerokość, długość geograficzną i klucz api

Kod: Zaznacz cały

0 * * * * python3 /home/pi/airly/airly.py --url "https://airapi.airly.eu/v2/measurements/nearest?lat=50.xxxx&lng=19.xxxxx&maxDistanceKM=10&apikey=xxxx" --pm1 "/home/pi/airly-pm1.txt" --pm10 "/home/pi/airly-pm10.txt" --pm25 "/home/pi/airly-pm25.txt" --caqi "/home/pi/airly-caqi.txt" --pre "/home/pi/airly-pre.txt"
SVD

Kod: Zaznacz cały

[CHANNEL_0]
function=TEMPERATURE
file=/home/pi/airly-pm1.txt

[CHANNEL_1]
function=TEMPERATURE_AND_HUMIDITY
file=/home/pi/airly-pm10.txt

[CHANNEL_2]
function=TEMPERATURE_AND_HUMIDITY
file=/home/pi/airly-pm25.txt

[CHANNEL_3]
function=TEMPERATURE
file=/home/pi/airly-pre.txt

[CHANNEL_5]
function=TEMPERATURE
file=/home/pi/airly-caqi.txt
e-talking............
Byłem tam - Supla Offline Party 2023
maxio2011
Posty: 116
Rejestracja: pt sty 22, 2021 1:08 pm

coś albo pominąłem albo zjadłem po drodze bo wszędzie 0 wyświetla:(
maxio2011
Posty: 116
Rejestracja: pt sty 22, 2021 1:08 pm

ok już poszło...podziękował
maxio2011
Posty: 116
Rejestracja: pt sty 22, 2021 1:08 pm

jednak jest problem wyniki po uruchomieniu:

./airly.py --url "https://airapi.airly.eu .......
wyświetlają się poprawnie lecz nie odświerzają

w crontab -e
0 * * * * python3 /home/pi/airly/airly.py --url "https:// ......

zmieniając czas z godziny na minuty to samo

jedynie wył/włączenie pi pomaga ale dalej nie odświerza

również na tym samym zainstalowane termometry xiaomi potrafią w różnych odstępach czasu zgubić wyniki i wyświetlić "--" pomaga fizyczne wył/właczenie pi

jakieś sugestie
Awatar użytkownika
uchnast.michal
Posty: 1073
Rejestracja: wt cze 04, 2019 11:37 am

W pliku tekstowym wartości się zmieniają? Jaką masz datę ostatniej modyfikacji?
Wygląda, że do SVD źle działa a nie skrypt.
SVD uruchamiasz poprzez supervisior?
wykonaj:

Kod: Zaznacz cały

sudo supervisorctl restart supla-virtual-device
e-talking............
Byłem tam - Supla Offline Party 2023
maxio2011
Posty: 116
Rejestracja: pt sty 22, 2021 1:08 pm

ustawiłem reset airly co 30minut -od godziny termometry poprawni wyświetlają i airly też odpowiednio aktualizuje testujemy dalej
maxio2011
Posty: 116
Rejestracja: pt sty 22, 2021 1:08 pm

czy jest szansa odczytać z airly

np.siła wiatru
Awatar użytkownika
uchnast.michal
Posty: 1073
Rejestracja: wt cze 04, 2019 11:37 am

Jeśli dobrze kojarzę w zwracanym jonie brak informacji o sile wiatru. Polecam api https://burze.dzis.net/?page=mapa. Masz tam ostrzeżenia o burzach, silnym wietrze, opadach, mrozie upale itd. Siła wiatru (wartość) jest dostępna w https://openweathermap.org/api.
Edit
Jeśli czujesz się na siłach możesz przerobić dostępne na githabie skrypty, np. https://github.com/srinjay/Open-weather ... .list.json
Odkąd używam integracji z HomeAssiatntem odstawiłem PI, może w ramach chwili wolnego czasu przygotuję takie skrypty i udostępnię na forum.
e-talking............
Byłem tam - Supla Offline Party 2023
maxio2011
Posty: 116
Rejestracja: pt sty 22, 2021 1:08 pm

Chętnie skorzystałbym na HA przesiadka pewno w przyszłym roku
ODPOWIEDZ

Wróć do „Projekty użytkowników”