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


Recommended Posts

Posted

Aby rozszerzyć funkcjonalność integracji KNX, dodaliśmy możliwość wysyłania niestandardowych komend do sieci KNX oraz rejestrowania własnych nasłuchiwaczy do obsługi raportów z urządzeń. Pozwala to sterować urządzeniami, które mogą nie być w pełni obsługiwane przez domyślną integrację KNX, lub wdrażać specyficzne zachowania unikalne dla Twojej instalacji. Najłatwiejszym sposobem obsługi tego mechanizmu jest użycie QuickApp. Pamiętaj, że ta funkcjonalność znajduje się na etapie testowym. Może nie być jeszcze w pełni stabilna, a API może ulec zmianie w przyszłości.

 

Wysyłanie niestandardowych komend

Możesz wysyłać niestandardowe komendy do sieci KNX, wywołując akcję sendCommand na urządzeniu integracji KNX (ID 9). Akcja ta przyjmuje trzy parametry:

  • Adres grupowy, do którego chcesz wysłać komendę (np. „0/2/0”).

  • DPT wartości, którą chcesz wysłać (np. „5.001” dla DPT_Scaling).

  • Wartość, którą chcesz wysłać. Kodowanie zależy od używanego DPT.

 

Poniżej kilka prostych przykładów wysyłania różnych DPT:

 

-- DPT 1.001 (DPT_Switch):
function QuickApp:turnOn()
    hub.call(9, "sendCommand", "0/2/0", "\"1.001\"", true)
    self:debug("binary switch turned on")
    self:updateProperty("value", true)
end
 
function QuickApp:turnOff()
    hub.call(9, "sendCommand", "0/2/0", "\"1.001\"", false)
    self:debug("binary switch turned off")
    self:updateProperty("value", false)
end
-- DPT 5.001 (DPT_Scaling):
-- Representation of open/close mapping to percentage may differ based on the device you're integrating.
 
function QuickApp:open()
    hub.call(9, "sendCommand", "0/2/0", "\"5.001\"", 0)
    self:debug("roller shutter opened")
    self:updateProperty("value", 99)
end
 
function QuickApp:close()
    hub.call(9, "sendCommand", "0/2/0", "\"5.001\"", 100)
    self:debug("roller shutter closed")
    self:updateProperty("value", 0)
end
-- 232.600 (Colour_RGB)
 
function QuickApp:setPresetColor()
    local r = 0
    local g = 74
    local b = 147
     
    local payload = {r, g, b}
    hub.call(9, "sendCommand", "2/0/16", "232.600", payload)
     
    self:updateProperty("colorComponents", {red=r, green=g, blue=b})   
end

Ponieważ używamy akcji urządzenia do wysyłania komend KNX, możesz wysyłać je w dowolny sposób. Możesz korzystać z QuickApps, ale także ze scen lub bezpośrednich wywołań REST API  
(POST /api/devices/9/action/sendCommand).

Listener registration

Możesz odbierać aktualizacje z adresów grupowych i obsługiwać je w swoim QuickApp. Jest to przydatne do monitorowania stanów urządzeń lub reagowania na konkretne zdarzenia.

Na ten moment nie ma możliwości rejestracji dla konkretnego adresu grupowego, więc będziesz otrzymywać wszystkie aktualizacje z sieci KNX.
Możesz je następnie filtrować w swoim kodzie, aby reagować tylko na te istotne.

 

Callback rejestruje się poprzez wywołanie akcji registerListener na urządzeniu integracji KNX (ID 9). Akcja ta przyjmuje jeden argument:

  • URL callbacku (akcja w Twoim QuickApp), który zostanie wywołany przy każdej aktualizacji z sieci KNX. URL powinien mieć format:/api/devices/<quick app id>/action/{callback name} e.g. /api/devices/123/action/myCallback.

Przekazany callback zostanie wywołany z adresem grupowym oraz wartością aktualizacji za każdym razem, gdy pojawi się nowy komunikat w sieci KNX.

Poniżej przykład obsługi tego w QuickApp:

 

function QuickApp:onInit()
    -- Register a listener for KNX updates.
    -- ID 9 is a device that represents the KNX integration. Don't change it.
    -- "registerListener" is the action to register a listener. Don't change it.
    -- 3rd parameter is the callback URL (an action), that will be called when there is an update from the KNX network. You can choose any action you want, just make sure to handle it in your QuickApp. In this example we will call "myCallback" action.
    local callbackURL= "/api/devices/" .. tostring(self.id) .. "/action/myCallback"
    self:debug("Register KNX callback:",  callbackURL)
    hub.call(9, "registerListener", callbackURL)
 
    self:debug("KNX QA started")
end
 
-- Callback function to handle KNX updates. The address and value parameters will contain the group address and the value of the update.
function QuickApp:myCallback(address, value)
    self:debug("address:", address, "value:", json.encode(value))
end

Debugging

Możesz zmienić poziom logowania integracji KNX na „debug” lub „trace”, aby zobaczyć więcej informacji dotyczących samej komunikacji KNX oraz komunikacji wymienianej między integracją KNX a Twoim QuickApp. Aby to zrobić, przejdź do ustawień KNX w interfejsie webowym i zmień poziom logów systemowych w sekcji dotyczącej komunikacji sieciowej.

Guest
This topic is now closed to further replies.
×
×
  • Create New...