Jump to content

Welcome to Smart Home Forum by FIBARO

Dear Guest,

 

as you can notice parts of Smart Home Forum by FIBARO is not available for you. You have to register in order to view all content and post in our community. Don't worry! Registration is a simple free process that requires minimal information for you to sign up. Become a part of of Smart Home Forum by FIBARO by creating an account.

 

As a member you can:

  •     Start new topics and reply to others
  •     Follow topics and users to get email updates
  •     Get your own profile page and make new friends
  •     Send personal messages
  •     ... and learn a lot about our system!

 

Regards,

Smart Home Forum by FIBARO Team


  • 0

Odczyt pomiaru energii elektrycznej z Efergy Engage API


ostry

Question

Próbuję utworzyć urządzenie wirtualne, które będzie cyklicznie odczytywało pobór mocy elektrycznej z serwera Efergy Engage. Na serwerze dostępne jest API, dzięki któremu możemy otrzymać odczyt w formacie json:

Please login or register to see this link.

 

{"age":3,"last_reading_time":1471694520000,"reading":232.185}

 

Niestety nie mogę sobie poradzić. Uruchomienie debugu daje mi następującą informację:
 

[DEBUG] 15:07:51:
[ERROR] 15:07:51: line 7: Expected value but found T_END at character 1

 

Wygląda to tak, jakby zapytanie nie zostało wykonane.

Please login or register to see this code.

Dla ciekawskich, poniżej lista dostępnych poleceń API:

Please login or register to see this link.

oraz komentarz:

Please login or register to see this link.

Please login or register to see this link.

 

Zważywszy, że można przez API zaciągnąć również historię zużycia energii za ostatni rok, jest to całkiem przyjemny system pomiarowy dla całego domu. Myślę, że miałoby przyszłość dodanie gotowego pluginu do Fibaro...

 

Kod udostępniam razem z moim tokenem do testów. Gdy uda się to uruchomić, to unieważnię ten token.

 

Będę wdzięczny za wskazówki, jak to poprawić.

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Z tego co pamietam to "https" działało tylko w scenach. W Virtualce ( virtual device ) było niedostępne. Musisz spróbować napisać program w LUA ( scena ) oparty o funkcje:

Please login or register to see this code.

Link to comment
Share on other sites

  • 0
  • Inquirer
  • Zmajstrowałem coś takiego:

    Please login or register to see this code.

    Niestety dostaję następujący błąd:

    [DEBUG] 20:31:43: line 27: unexpected symbol near ')'
     

    Będę wdzięczny za sugestie, co poszło nie tak...

    Link to comment
    Share on other sites

    • 0

    Błąd - nie w tym miejscu jest ")" . Powinien być za "end" jak niżej i jeszcze obsługa błędu.

    Please login or register to see this code.

    Link to comment
    Share on other sites

    • 0
  • Inquirer
  • Oczywiście teraz działa. Tak się kończy siedzenie w nocy

    Please login or register to see this image.

    /emoticons/default_smile.png" alt=":)" srcset="https://forum.fibaro.com/uploads/emoticons/[email protected] 2x" width="20" height="20" />

    Dorzuciłem jeszcze dwie zmienne globalne i urządzenie wirtualne do ich wyświetlania i generalnie wszystko jest ok.

    Gdybym jeszcze mógł prosić o podpowiedź, jak sprawić, żeby ta scena startowała co 6 sekund w celu odświeżenia odczytów, było by naprawdę super.

    Please login or register to see this code.

    Link to comment
    Share on other sites

    • 0

    Uruchamiając scenę co 6 sekund "zamulisz" centralkę i możesz mieć kłopoty z czasami reakcji.

     

    Jeżeli się upierasz jednak uruchamiać co 6 sek to

    W virtualce w polu "Główna Pętla" wpisz:

     

    local sek = tonumber(os.date("*t").sec);

    if sek % 6 < 3 then

      fibaro:startScene(id_sceny);

      fibaro:sleep(1800);

    end

     

    ...ale jak widzę w części "triggers" wpisałeś zmienne, które ustawiasz w tej scenie. To też może powodować błędne jej działanie. Każdy zapis zmiennej wyzwala scenę. Skreślone poniżej usuń.

     

    --[[
    %% properties
    %% events
    %% globals
    efergyAge
    efergyReading

    --]]

    Link to comment
    Share on other sites

    • 0
  • Inquirer
  • Dzięki za dotychczasową pomoc!

    Na razie nie zauważyłem jakichś problemów z wydajnością, chociaż liczba scen na razie nie jest jeszcze zbyt duża.

    Jeszcze jest jedna rzecz, którą muszę rozgryźć. Kiedy w mierniku wysiada bateria (zgodnie z prawem Murphy'ego wysiadła w czasie testowania skryptów, przez co straciłem trochę czasu i nerwów), albo pojawi się inny błąd, dostaję następującą wiadomość z serwera:

    {"error":{"desc":"Service Error","more":"Unable to get channel data for hid","id":500}}

     

    Jak odczytać zagnieżdżoną wiadomość?

     

    if decodedEfergy.error ~= nil then

    co dalej?

     

    I jeszcze jedno - czy urządzenie wirtualne może raportować zużycie energii do raportu energii w HC2?

    Mam taki pomysł, aby od pomiaru z Efergy odjąć pomiar z pozostałych urządzeń, które raportują zużycie energii (dimmery itp.). HC2 doda to na powrót i wyświetliłby całkowite zużycie, a w panelu Zużycie miałbym całą resztę domu jako całość.

    Link to comment
    Share on other sites

    • 0
    On 29.09.2016 at 11:46 AM, marecki_0luk1 said:

    Mam gotowe urządzenie wirtualne do tego, więc jak coś to prv.

     

    Witam,

     

    Jeśli posiadasz działające rozwiązanie, których chcesz się podzielić, możesz to zrobić tutaj:

    Please login or register to see this link.

     

    Zachęcam do dzielenia się rozwiązaniami z innymi użytkownikami!

    Link to comment
    Share on other sites

    Join the conversation

    You can post now and register later. If you have an account, sign in now to post with your account.

    Guest
    Answer this question...

    ×   Pasted as rich text.   Paste as plain text instead

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.

    ×
    ×
    • Create New...