Syngeos w Supli

User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

Koledzy i koleżanki , jak pisałem w innym poście w mojej wiosce powiesili czujnik stanu powietrza od Syngeos.
Powstał pomysł aby to dodać do Supli . Z tego co zauważyłem dane można pobrać z pomocą API , w moim przypadku to :

Code: Select all

//api.syngeos.pl/api/public/data/device/10085 
Jako że nie jestem specem od linux'a, poszperałem w necie i już wiem jak to zapisać na dysku.
W tym celu na moim terminalu wyse stworzyłem sobie skrypt

Code: Select all


#!/bin/bash
curl https://api.syngeos.pl/api/public/data/device/10085 -o /home/Syngeos/data.json
I już na początku problem . Niestety przy próbie wykonania w takiej wersji skutkuje błędem

Code: Select all

wyse@wyse:~/Syngeos$ ./syngeos_write
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0Warning: Failed to open the file /home/Syngeos/data.json: Nie ma takiego pliku
Warning: ani katalogu
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (23) Failure writing output to destination
wyse@wyse:~/Syngeos$


ale jeśli zmienię ścieżkę do :

Code: Select all

#!/bin/bash
curl https://api.syngeos.pl/api/public/data/device/10085 -o data.json
to wówczas zapisuje poprawnie, no ale ja chciałbym to mieć w /home/Syngeos :)
nie pomaga również zmiana uprawnień do forlderów

Code: Select all

drwxrwxrwx 2 wyse wyse 4096 03-14 23:02 Sainlogic
drwxr-xr-x     7 wyse wyse 4096 03-16 22:49 supla-device
drwxrwxrwx 2 wyse wyse 4096 04-17 11:01 Syngeos

W czym problem ?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Nieprawidłowa ścieżka?
/home/wyse/Syngeos

Poleceniem pwd można sprawdzić aktualną ścieżkę
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

Japie...dziu :oops: , dzięki

EDIT: OK, jedziemy dalej ;)
klew wrote: Wed Apr 17, 2024 9:55 am
Sformatowany json od Syngeos wygląda tak :

Code: Select all

{
  "coordinates": [50.08125, 18.831793],
  "id": 10085,
  "source": 1,
  "city": "Orzesze ",
  "address": "Kobiórska 1",
  "sensors": [
    {
      "unit": "°C",
      "name": "temperature",
      "data": [
        {
          "read_at": "2024-04-18T07:02:55+00:00",
          "value": 6.17
        }
      ],
      "display_type": "percent"
    },
    {
      "unit": "%",
      "name": "humidity",
      "data": [
        {
          "read_at": "2024-04-18T07:02:55+00:00",
          "value": 78.8
        }
      ],
      "display_type": "percent"
    },
    {
      "unit": "hPa",
      "name": "air_pressure",
      "data": [
        {
          "read_at": "2024-04-18T07:02:55+00:00",
          "value": 979.94
        }
      ],
      "display_type": "percent"
    },
    {
      "unit": "µg/m³",
      "name": "pm1",
      "data": [
        {
          "read_at": "2024-04-18T07:04:55+00:00",
          "value": 15.94
        }
      ],
      "display_type": "percent"
    },
    {
      "unit": "µg/m³",
      "name": "pm2_5",
      "norm": {
        "threshold": 25,
        "grade_a": {
          "gte": 0,
          "lt": 13
        },
        "grade_b": {
          "gte": 13,
          "lt": 35
        },
        "grade_c": {
          "gte": 35,
          "lt": 55
        },
        "grade_d": {
          "gte": 55,
          "lt": 75
        },
        "grade_e": {
          "gte": 75,
          "lt": 110
        },
        "grade_f": {
          "gte": 110
        }
      },
      "data": [
        {
          "read_at": "2024-04-18T07:04:55+00:00",
          "value": 36.56,
          "current_norm": "grade-c",
          "threshold_level": 146
        }
      ],
      "display_type": "percent"
    },
    {
      "unit": "µg/m³",
      "name": "pm10",
      "norm": {
        "threshold": 50,
        "grade_a": {
          "gte": 0,
          "lt": 20
        },
        "grade_b": {
          "gte": 20,
          "lt": 50
        },
        "grade_c": {
          "gte": 50,
          "lt": 80
        },
        "grade_d": {
          "gte": 80,
          "lt": 110
        },
        "grade_e": {
          "gte": 110,
          "lt": 150
        },
        "grade_f": {
          "gte": 150
        }
      },
      "data": [
        {
          "read_at": "2024-04-18T06:58:54+00:00",
          "value": 48.7,
          "current_norm": "grade-b",
          "threshold_level": 97
        }
      ],
      "display_type": "percent"
    }
  ],
  "first_logo": {
    "filename": "42f0c52a6703101c6026521e65c09b2a.png",
    "url": "https://s3.eu-central-1.amazonaws.com/cdn.syngeos.pl/42f0c52a6703101c6026521e65c09b2a.png"
  },
  "send_reports": false
}
Ja tworząc plik ymal na wzór tego z airly zrobiłem tak :

Code: Select all

...
channels:
  - type: ThermHygroMeterParsed
    name: syngeos_temp_and_humi
    source:
      type: File
      file: "/home/wyse/Syngeos/data.json"
      expiration_time_sec: 1200
    parser:
      type: Json
      name: p1
    temperature: "/sensors/0/data/1/value"
    humidity:    "/sensors/1/data/1/value"

  - type: PressureParsed
    name: syngeos_pressure
    parser:
      use: p1
    pressure: "/sensors//2/data/1/value"


Niestety pojawia się :

Code: Select all

kwi 18 09:51:51 wyse supla-device-linux[9255]: ERR[1713426711.606551] JSON key "/sensors/1/data/1/value" not found
kwi 18 09:51:51 wyse supla-device-linux[9255]: ERR[1713426711.606648] JSON key "/sensors/0/data/1/value" not found
kwi 18 09:51:51 wyse supla-device-linux[9255]: ERR[1713426711.616939] JSON exception during getValue for key "/sensors//2/data/1/value"
kwi 18 09:51:56 wyse supla-device-linux[9255]: VERBOSE[1713426716.894260] Send: [53 55 50 4C 41 16 1F 00 00 00 28 00 00 00 10 00 00 00 1C D1 20 66 00 00 00 >
kwi 18 09:51:56 wyse supla-device-linux[9255]: VERBOSE[1713426716.894469] Send: [53 55 50 4C 41 ]
kwi 18 09:51:57 wyse supla-device-linux[9255]: VERBOSE[1713426717.5887] Recv: [53 55 50 4C 41 16 1E 00 00 00 32 00 00 00 10 00 00 00 1C D1 20 66 00 00 00 00>
kwi 18 09:52:01 wyse supla-device-linux[9255]: VERBOSE[1713426721.606093] Source: {"coordinates":[50.08125,18.831793],"id":10085,"source":1,"city":"Orzesze >
kwi 18 09:52:01 wyse supla-device-linux[9255]: ERR[1713426721.608158] JSON key "/sensors/1/data/1/value" not found
kwi 18 09:52:01 wyse supla-device-linux[9255]: ERR[1713426721.608258] JSON key "/sensors/0/data/1/value" not found
kwi 18 09:52:01 wyse supla-device-linux[9255]: ERR[1713426721.618555] JSON exception during getValue for key "/sensors//2/data/1/value"

No i w supli pusto ;)
Gdzie tu jest błąd ?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

shimano73 wrote: Wed Apr 17, 2024 10:04 am EDIT: OK, jedziemy dalej ;)
No i w supli pusto ;)
Gdzie tu jest błąd ?
Masz:

Code: Select all

  temperature: "/sensors/0/data/1/value"
  humidity:    "/sensors/1/data/1/value"
...
  pressure: "/sensors//2/data/1/value"
W "data" jest tylko jeden element w tablicy, więc on ma indeks 0, a nie 1.
Przy pressure dodatkowo masz dwa //
Spróbuj:

Code: Select all

  temperature: "/sensors/0/data/0/value"
  humidity:    "/sensors/1/data/0/value"
...
  pressure: "/sensors/2/data/0/value"
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

Wielkie dzięki, już prawie wszystko działa ale jest jedno "ale" , chociaż nie jedno
Tak teraz wygląda część plik yaml odpowiadająca za kanały ogólnego przeznaczenia w moim przypadku czujników powietrza :

Code: Select all

  - type: GeneralPurposeMeasurementParsed #
    name: PM1
    initial_caption: PM1
    default_value_precision: 2
    default_unit_after_value: "µg/m³"
    parser:
      use: p1
    value: "/sensors/3/data/0/value"

  - type: GeneralPurposeMeasurementParsed #
    name: PM2_5
    initial_caption: PM2_5
    default_value_precision: 2
    default_unit_after_value: "µg/m³"
    parser:
      use: p1
    value: "/sensors/4/data/0/value"

  - type: GeneralPurposeMeasurementParsed #
    name: PM10
    initial_caption: PM10
    default_value_precision: 2
    default_unit_after_value: "µg/m³"
    parser:
      use: p1
    value: "/sensors/5/data/0/value"

Działa, ale tylko ten ostatni kanał pokazuje jednostki i część ułamkową wartości , te twa pierwsze nie. Dlaczego ?
You do not have the required permissions to view the files attached to this post.
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

W yaml podaje się domyślne wartości tych parametrów.
Sprawdź co masz w cloud ustawione.
Możliwe że w trakcie testów dodałeś najpierw te kanały bez ustawionej precyzji, czyli ustawiło się 0. Jak to później przedstawiłeś w yaml to nie wpływa to na już istniejącą konfigurację. Trzeba by usunąć urządzenie z cloud i dodać od nowa. Ale łatwiej to po prostu przestawić w cloud
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

Jak zwykle masz rację , najpierw były dwa kanały które się zarejestrowały , później dodałem trzeci z jednostkami które dodałem również do poprzednich . Ale w momencie gdy zauważyłem brak jednostek przy pierwszych dwóch kanałach , wielokrotnie usuwałem urządzenie które po chwili rejestrowało się ponownie . A może , rejestrowało się z tym samym kluczem GUID bo pliku nie usunąłem i cloud przywracał to samo urządzenie ?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Urządzenie też zapamiętuje ustawioną konfigurację i nie wie o tym, że było usuwane w Cloud. Także jak serwer wysyła mu po rejestracji "pusty" config, to urządzenie dosyła mu to co miało zapamiętane.
Dlatego samo usuwanie w Cloudzie nie wystarcza :)
Najlepsze suple dla Twojego domu :mrgreen:

Return to “Pomoc”