SUPLA wywóz śmieci

arekrgw
Posts: 44
Joined: Wed Aug 15, 2018 6:42 pm

Post

Witam,
popełniłem ostatnio taki mały skrypt który aktualizuje virtualny kanał z supla-virtual-device o najbliższą datę wywozu śmieci.
W aplikacji wygląda to następująco:
Image

Repozytorium
https://github.com/arekrgw/supla-rubbish

Do działania, od wersji skryptu 3.0.0, można uruchomić generatory plików konfiguracyjnych komendami:

Code: Select all

npm run gen:supla
npm run gen:icons
npm run gen:notif // opcjonalne
Skrypt sam będzie pytał o dane i odpowiednio generował strukturę.

Od wersji 2.0.0 zmienił się plik konfiguracyjny supla.config.json, od teraz można dodać kilka regionów do jednego skryptu i nie trzeba robić kilku skryptów żeby obsłużyć wiele regionów.

Od wersji 3.0.0 również zmieniły się lekko pliki konfiguracyjne ale nie tak drastycznie, natomiast zmieniły swoją lokalizację na "config/", powstał opcjonalny plik konfiguracyjny do powiadomień push o których więcej niżej.

Opis: supla.config.json

Code: Select all

{
  "kiedySmieciURL": "https://kiedysmieciv2.herokuapp.com",
  "regions": [
    {
      "bearer": "MzNkNjRiYTc1ZGUxYzgwZThiYmE0OGIzNTViNzQ2ZTBkZjJiMWQxYmE3NzQ0MzU2ZTExMDFjMzAyNTg3NzVhYQ.aHR0cHM6Ly9zdnIxNi5zdXBsYS5vcmc=",
      "suplaBaseServerURL": "https://svr16.supla.org/api/v2.3.0",
      "region": "5f245dd64d732d001768a9c5",
      "channel": "32568",
      "prefix": "Rogów",
      "printTypes": true,
      "notifications": {
        "devices": [
          {
            "name": "Arek",
            "when": "18:00",
            "days": 1
          },
          {
            "name": "Arek",
            "when": "06:00",
            "days": 0
          }
        ]
      }
    }
  ]
}
  • bearer - bierzemy z chmury z zakładki integracje i osobiste tokeny dostępowe (koniecznie musi być zaznaczona możliwość modyfikacji kanałów)
  • kiedySmieciURL - tego nie ruszamy jest to mój serwer który podaje daty wywozów śmieci
Tak wygląda u mnie konfiguracja tego kanału w supla-virtual-device.cfg

Code: Select all

[CHANNEL_12]
function=WINDOWSENSOR
file=/home/pi/virtual/smieci/default
  • suplaBaseServerURL - tu tylko zmieniamy liczbę przy "svrXX"
  • region - id regionu z serwera KiedySmieci o tym później dalej...
  • channel - id kanału który będzie nam służył jako informacja o wywozie, patrz zrzut ekranu...
Image
  • prefix - przed datą można dodać sobie jakiś napis np. nazwę regionu
  • printTypes - przyjmuje true lub false, wypisuje za datą jakie typy śmieci będą wywożone
  • notifications - opcjonalne - konfiguracja powiadomień dla danego regionu, podajemy nazwę urządzenia z notification.config.json, o której godzinie mają być wysłane, oraz ile dni przed wywozem (0 oznacza tego dnia co wywóz)
Opis icons.config.json

Code: Select all

[
  {
    "icon": 884,
    "types": ["tworzywa sztuczne"]
  },
  {
    "icon": 883,
    "types": ["szkło"]
  },
  {
    "icon": 882,
    "types": ["zmieszane"]
  },
  {
    "icon": 881,
    "types": ["bio", "tworzywa sztuczne"]
  },
  {
    "icon": 880,
    "types": ["bio", "papier"]
  }

]
  • icon - id ikony która ma być ustawiona, aby uzyskać to id to patrz zrzut ekranu... Jeżeli ktoś zna łatwiejszy sposób to proszę o podzielenie się nim :D
Image
  • types - lista typów śmieci które są wywożone danego dnia też jest to ściśle powiązane z serwerem KiedyŚmieci
Opis notification.config.json

Code: Select all

{
  "Arek": {
    "provider": "Expo",
    "tokenExpo": "ExponentPushToken[q...gObO0EeE]"
  },
  "Arek2": {
     "provider": "Pushover",
     "tokenPushover": "xxxxx",
     "user": "xxxxx",
     "device": "xxxxx"
   }
}
Arek - jest to nazwa urządzenia którą używamy w supla.config.json
reszta to dane do powiadomień

Utworzyłem prostą aplikację KiedyŚmieciApp do powiadomień push która jest do pobrania tu: https://drive.google.com/drive/folders/ ... sp=sharing, z której bierzemy tokenExpo dla providera "Expo".

Dodatkowo aby wasza malinka bądź inny sprzęt wysyłał powiadomienia potrzebujecie zainstalowane 2 rzeczy: "at", "curl". Możecie je zainstalować tymi komendami:

Code: Select all

sudo apt install at
sudo apt install curl
Moje przykładowe ikony:
https://drive.google.com/drive/folders/ ... sp=sharing

Aby skrypt np. uruchamiał się codziennie, należy ustawić zadanie w Cronie np

Code: Select all


1 0 * * * /usr/local/bin/node /home/pi/supla-rubbish/index.js

będzie uruchamiany codziennie o 0:01

Teraz trochę o serwerze KiedyŚmieci
Niestety aby wasze daty się tam znalazły musicie mi przygotować plik z takimi datami i ja je samodzielnie dodam
Jak powinien ten plik wyglądać...

Code: Select all

{
  "city": {
    "cityName": "Rogów",
    "province": "łódzkie"
  },
  "region": {
    "regionName": "Rogów",
    "postalCode": "95-063",
    "hours": "6-15"
  },
  "dates": [
    {
      "date": "2020-08-03",
      "type": "bio"
    },
    {
      "date": "2020-08-03",
      "type": "papier"
    },
    {
      "date": "2020-08-03",
      "type": "zmieszane"
    },
    {
      "date": "2020-08-17",
      "type": "bio"
    }
  ]
}
Jeżeli danego dnia są wywożone wg przykładu bio i papier to trzeba to zrobić tak jak w przykładzie. Zachowajcie ten sam format daty. Wysyłajcie mi te pliki w wiadomości prywatnej lub w tym wątku. Generalnie w przyszłości pojawi się automatyczna możliwość dodawania, ale jeszcze nie mam pomysłu jak to rozwiązać.

Jeżeli ktoś chce sprawdzić czy może jego region już jest to zapraszam pod link: https://kiedysmieciv2.herokuapp.com/regions. Użyjcie sobie jakiegoś formattera JSONa np. https://jsonformatter.curiousconcept.com/

WAŻNA INFORMAJCA: od wersji 3.0.0 potrzeba node.js w wersji przynajmniej 12
gdyby na waszą maszynę nie było oficjalnego buildu node.js to można sciągnąć nieoficjalną stądhttps://unofficial-builds.nodejs.org/download/release/. Sam na raspberry pi zero zainstalowałem wersję 14 i wszystko ładnie działa.

Bugfixy:
  • po zmianie lokalizacji kanału po aktualizacji kanału przez skrypt wracał do poprzedniej pierwotnej
  • gdy prefix był wyłączony to pozostawał ":" przed datą w aplikacji
EDIT #1: Update do wersji 2.0.0
EDIT #2: Update do wersji 3.0.0
Last edited by arekrgw on Fri Aug 28, 2020 8:08 am, edited 4 times in total.
User avatar
Goral64
Posts: 3258
Joined: Fri Dec 27, 2019 6:22 pm
Location: Żerniki Wrocławskie
Has thanked: 2 times
Been thanked: 1 time

Post

Fajne. Trochę pracy kosztowało.
Jednak zostanę przy apce "Kiedy wywóz".
Widzimy się na Supla Offline Party Season 2026 :D

Image
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Cool
SUPLA.... Nareszcie w domu.
hanuer
Posts: 79
Joined: Tue Jan 07, 2020 1:10 am

Post

Mojej gminy brak :( Fajny projekt. Gratulacje.
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

Gratuluję wykonania "kanału ogólnego przeznacznia" :). Pomysł z podmianą nazwy kanału jest interesujący.
Najlepsze suple dla Twojego domu :mrgreen:
arekrgw
Posts: 44
Joined: Wed Aug 15, 2018 6:42 pm

Post

Dzięki panowie za pozytywny odzew :D
arekrgw
Posts: 44
Joined: Wed Aug 15, 2018 6:42 pm

Post

Update do wersji 2.0.0
User avatar
o_rany
Posts: 275
Joined: Wed Nov 14, 2018 5:32 pm
Location: Sosnowiec

Post

Genialny pomysl! Zawsze wieczorem patrze czy sasiedzi wystawili bo to latwiej niz znalezc kartke od Remondisa:)
arekrgw
Posts: 44
Joined: Wed Aug 15, 2018 6:42 pm

Post

Update do wersji 3.0.0 a w niej powiadomienia push!
kris.gie
Posts: 472
Joined: Thu Apr 28, 2016 4:24 pm
Location: Katowice
Has thanked: 1 time

Post

A tymczasem w Katowicach:
You do not have the required permissions to view the files attached to this post.

Return to “Projekty użytkowników”