SUPLA wywóz śmieci

arekrgw
Posty: 44
Rejestracja: śr sie 15, 2018 6:42 pm

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:
Obrazek

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

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

Kod: Zaznacz cały

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

Kod: Zaznacz cały

{
  "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

Kod: Zaznacz cały

[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...
Obrazek
  • 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

Kod: Zaznacz cały

[
  {
    "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
Obrazek
  • 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

Kod: Zaznacz cały

{
  "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:

Kod: Zaznacz cały

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

Kod: Zaznacz cały


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ć...

Kod: Zaznacz cały

{
  "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
Ostatnio zmieniony pt sie 28, 2020 8:08 am przez arekrgw, łącznie zmieniany 4 razy.
Awatar użytkownika
Goral64
Posty: 3132
Rejestracja: pt gru 27, 2019 6:22 pm
Lokalizacja: Żerniki Wrocławskie
Kontakt:

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

Obrazek
Awatar użytkownika
pzygmunt
Posty: 18326
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

Cool
hanuer
Posty: 79
Rejestracja: wt sty 07, 2020 1:10 am

Mojej gminy brak :( Fajny projekt. Gratulacje.
Awatar użytkownika
klew
Posty: 8268
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

Gratuluję wykonania "kanału ogólnego przeznacznia" :). Pomysł z podmianą nazwy kanału jest interesujący.
Widzimy się na Supla Offline Party vol. 2 :!:
arekrgw
Posty: 44
Rejestracja: śr sie 15, 2018 6:42 pm

Dzięki panowie za pozytywny odzew :D
arekrgw
Posty: 44
Rejestracja: śr sie 15, 2018 6:42 pm

Update do wersji 2.0.0
Awatar użytkownika
o_rany
Posty: 275
Rejestracja: śr lis 14, 2018 5:32 pm
Lokalizacja: Sosnowiec
Kontakt:

Genialny pomysl! Zawsze wieczorem patrze czy sasiedzi wystawili bo to latwiej niz znalezc kartke od Remondisa:)
arekrgw
Posty: 44
Rejestracja: śr sie 15, 2018 6:42 pm

Update do wersji 3.0.0 a w niej powiadomienia push!
kris.gie
Posty: 362
Rejestracja: czw kwie 28, 2016 4:24 pm
Lokalizacja: Katowice

A tymczasem w Katowicach:
Załączniki
Adnotacja 2020-08-27 224422.jpg
Adnotacja 2020-08-27 224422.jpg (113.97 KiB) Przejrzano 3309 razy
ODPOWIEDZ

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