Odczyt danych z kot...
 
Powiadomienia
Wyczyść wszystko

openHAB Odczyt danych z kotła CO lub integracja ST-505

33 Wpisów
4 Użytkownicy
1 Reactions
5,820 Wyświetleń
(@szpila86)
Wpisów: 367
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 
[#4888]

Witam,

czy ktoś ma może zintegrowany odczyt danych z kotła CO opartego na sterowniku Tech st-480 i modułu Tech st-505?

Temat ruszony na elektrodzie ( https://www.elektroda.pl/rtvforum/topic2689981.html) może jest ktoś kto wytłumaczy jak to zrobić dla OH3?


 
Dodane : 18/12/2022 1:22 pm
(@edass)
Wpisów: 225
Weteran
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Cześć. 

Jedną z ostatnich wiadomoaci na elektrodzie jest moja wypowiedź. Niestety nikt się nie odezwał. Aktualnie już nie używam sterownika TECH ale "obszedłem" te odczyty ze sterownika Techa. Na bazie ESP 8266 z Tasmotą oraz kilkoma czujnikami temperatury zrobiłem dodatkowy układ za pomocą którego niezależnie monitoruje piec. Dodatkowo dołożyłem czujnik odległości do zasobnika i dzięki temu mam pomiar napełnienia zasobnika.



 


 
Dodane : 18/12/2022 10:26 pm
(@coalega)
Wpisów: 1
Świeżak
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Witam, Mam sterownik tech i2, czy ktoś umie zrobić połączenie z domoticzem,  albo przez esp8266 albo Ethernet. Pozdrawiam. P.s. na elektrodzie użytkownikowi Fantom się  udało, ale nie ma z nim kontaktu.


 
Dodane : 22/12/2022 5:00 pm
(@szpila86)
Wpisów: 367
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Czyli na tym forum tego nie ruszymy 😶 


 
Dodane : 29/12/2022 10:10 pm
(@szpila86)
Wpisów: 367
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Znalazłem podobny temat u Supli może komuś coś przyjdzie do głowy...

https://forum.supla.org/viewtopic.php?t=9603

 

Co myślicie o czymś takim?

 

import requests
import json

# Dane dostępowe do konta emodul.pl
username = "your_username"
password = "your_password"

# Zaloguj się do konta emodul.pl
login_url = "https://emodul.pl/api/login"
login_data = {"username": username, "password": password}
login_response = requests.post(login_url, json=login_data)
login_response_json = json.loads(login_response.text)

# Pobierz token dostępu
access_token = login_response_json["access_token"]

# Pobierz dane z emodul.pl
data_url = "https://emodul.pl/api/data"
headers = {"Authorization": "Bearer " + access_token}
data_response = requests.get(data_url, headers=headers)
data = json.loads(data_response.text)

# Publikuj dane w openHAB3
openhab_url = "http://your_openhab_ip:8080/rest/items/your_item_name"
for key, value in data.items():
    requests.post(openhab_url, json={"state": value})

 

lub może tak?

rule "Emodul data"
when
    Time cron "0 0/5 * * * ?" // co 5 minut
then
    // Dane dostępowe do konta emodul.pl
    var String username = "your_username"
    var String password = "your_password"
    var String access_token
    var String data

    // Zaloguj się do konta emodul.pl
    var String login_url = "https://emodul.pl/api/login"
    var String login_data = '{"username":"'+username+'","password":"'+password+'"}'
    var HttpResponse login_response = sendHttpPostRequest(login_url, "application/json", login_data)
    if (login_response.responseCode != 200) {
        logError("Error while logging in to emodul.pl. Response code: " + login_response.responseCode)
    } else {
        // Pobierz token dostępu
        access_token = login_response.headers.get("access_token")
        // Pobierz dane z emodul.pl
        var String data_url = "https://emodul.pl/api/data"
        var HttpResponse data_response = sendHttpGetRequest(data_url, "application/json", null, [new HttpHeader("Authorization", "Bearer " + access_token)])
        if (data_response.responseCode != 200) {
            logError("Error while fetching data from emodul.pl. Response code: " + data_response.responseCode)
        } else {
            data = data_response.response
            // Publikuj dane w openHAB3
            parseJson(data).getMembers().forEach[key, value |
                val String itemName = key
                val item = getItem(itemName)
                if (item != null) {
                    postUpdate(itemName, value)
                } else {
                    logError("Item "+itemName+" not found.")
                }
            ]
        }
    }
end

 


 
Dodane : 15/01/2023 10:22 pm
(@kamikac)
Wpisów: 225
Pomocny
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Bardzo ładnie, ale:

  • na elektrodzie skupili sie na rozkminieniu protokołu idącego magistralą szeregową, powyższy kod ściaga dane z chury producenta
  • w powyższym kodzie dostajemy dane (w jsonie), które sa rozszyte na poszczególne itemy (ale nazwy itemów musza się pokrywać z nazwami kluczy json).
  • w kodzie widzę tylko odczyt danych, tylko to jest potrzebne?

Pozdrawiam


 
Dodane : 16/01/2023 1:57 am
(@szpila86)
Wpisów: 367
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@kamikac 

Wolałbym bez chmury ale nie wiem jak 🫤 więc szukam innego sposobu.

Idąc tropem z  Suppli loguje się na emodul.pl i po zalogowaniu w adresie dopisuje module _data   https://emodul.pl/module_data  i wyświetla mi json'a z nazwami, id, i wartościami tego co mam wyświetlane na stronie głównej więc myślę jak to zautomatyzować i wyświetlić w OH

fragment tego co mam z module_data

{"zones":{},"tiles":[{"id":2000,"parentId":0,"type":50,"menuId":0,"orderId":null,"visibility":true, "params":{"description":"Wersja oprogramowania kontrolera","wersja":"1.3.0","txtId":873,"iconId":50,"companyId":30,"controllerName":"ST- 480","mainControllerId":169709}},{"id":2011,"parentId":0,"type":40,"menuId":0,"orderId":2,"visibility":true,"parametry ":{"description":"Informacje tekstowe","statusId":1067,"headerId":1039,"iconId":50,"options":[]}},{"id":2050,"parentId": 0,"type":6,"menuId":2060,"orderId":5,"visibility":true,"params":{"description":"Uniwersalny status z widżetami","statusId":1,"iconId":106,"widget1":{"txtId":760, "value":0,"unit":6,"type":0,"params":[0,0,0,0,0]},"widget2":{"txtId":774,"value": 286,"unit":7,"type":9,"params":[0,0,0,0,0]}}},{"id":2051,"parentId":0,"type": 6,"menuId":2061,"orderId":8,"visibility":true,"params":{"description":"Uniwersalny status z widżetami","statusId":1,"iconId":105,"widget1 ":{"txtId":760,"value":0,"unit":6,"type":0,"parametry":[0,0,0,0,0]},"widget2":{"txtId":1041,"value":782,"unit":7,"type":9,"params":[0,0,0,0,0]}}},{"id ":2053,"parentId":0,"type":1,"menuId":0,"orderId":3,"visibility":true,"params":{"description":"Czujnik temperatury","WorkStatus" ":true,"txtId":795,"value":17,"batteryLevel":null,"signalStrength":null}},{"id":2054,"parentId":0,"type":1," menuId":0,"orderId":4,"visibility":true,"params":{"description":"Czujnik temperatury","workingStatus":true,"txtId":1043,"value":197," poziom baterii":null,"Siła sygnału":null}},{"id":2055,"parentId":0,"type":1,"menuId":0,"orderId":12,"visibility":false,"params":{"description":"Czujnik temperatury","workingStatus":false," txtId":196,"value":-2030,"batteryLevel":null,"signalStrength":null}},{"id":2056,"parentId":0,"type":1,"menuId":0 ","orderId":9,"visibility":true,"params":{"description":"Czujnik temperatury","workingStatus":true,"txtId":1040,"value":229,"batteryLevel":null ","signalStrength":null}},{"id":4050,"parentId":0,"type":21,"menuId":0,"orderId":15,"visibility":false,"params": {"opis":"Dodatkowa pompa","workingStatus":false,"pumpNumber":1,"txtId":922}},{"id":4051,"parentId":0,"type":21,"menuId":0, "orderId":17,"visibility":false,"params":{"description":"Dodatkowa pompa","workingStatus":false,"pumpNumber":2,"txtId":922}},{"id" :4052,"parentId":0,"type":40,"menuId":2006,"orderId":18,"visibility":false,"params":{"description":"Informacje tekstowe","statusId" :473,"headerId":814,"iconId":3,"opcje":[]}},{"id":4056,"parentId":0,"type":11,"menuId":0," orderId":10,"visibility":true,"params":{"description":"Przekaźnik","workingStatus":false,"txtId":571,"iconId":17}},{"id":4057,"parentId":0,"type":11 ","menuId":0,"orderId":14,"visibility":false,"params":

 
Dodane : 16/01/2023 7:22 am
(@edass)
Wpisów: 225
Weteran
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Spójrz na wątek o Airly - @Adrian opisał dokładnie jak dodać takie dane do OH. Tutaj może być problem z zalogowaniem się do chmury ale warto sprawdzić.  Potrzebny będzie Http binding i Json. Reszta to stworzenie odpowiednich items (number/test). 

 


 
Dodane : 16/01/2023 8:33 am
(@kamikac)
Wpisów: 225
Pomocny
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@szpila86 JSON musi być kompletny, żeby go sparsować. Wrzuć całą odpowiedź serwera tutaj i kliknij process.

Jak nie będzie błędów wklej tutaj jako kod. Wtedy będzie można JSONPath'em wydobyć parametry.

Można by jeszcze "podsłuchiwać" transmisję sterownika ze stroną na jakimś sprytnym routerze i odczytywać przesyłane parametry (też jest to w tym wątku na elektrodzie), ale to trzeba by napisac coś więcej niż rule do openHABa.


 
Dodane : 18/01/2023 11:43 pm
(@szpila86)
Wpisów: 367
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@kamikac 

nie zmieniałem nic z ustawień strony.

{
   "zones":{
      
   },
   "tiles":[
      {
         "id":2000,
         "parentId":0,
         "type":50,
         "menuId":0,
         "orderId":null,
         "visibility":true,
         "params":{
            "description":"Controller software version",
            "version":"1.3.0",
            "txtId":873,
            "iconId":50,
            "companyId":30,
            "controllerName":"ST-480",
            "mainControllerId":169709
         }
      },
      {
         "id":2011,
         "parentId":0,
         "type":40,
         "menuId":0,
         "orderId":2,
         "visibility":true,
         "params":{
            "description":"Text information",
            "statusId":1067,
            "headerId":1039,
            "iconId":50,
            "options":[
               
            ]
         }
      },
      {
         "id":2050,
         "parentId":0,
         "type":6,
         "menuId":2060,
         "orderId":5,
         "visibility":true,
         "params":{
            "description":"Universal status with widgets",
            "statusId":1,
            "iconId":106,
            "widget1":{
               "txtId":760,
               "value":0,
               "unit":6,
               "type":0,
               "params":[
                  0,
                  0,
                  0,
                  0,
                  0
               ]
            },
            "widget2":{
               "txtId":774,
               "value":331,
               "unit":7,
               "type":9,
               "params":[
                  0,
                  0,
                  0,
                  0,
                  0
               ]
            }
         }
      },
      {
         "id":2051,
         "parentId":0,
         "type":6,
         "menuId":2061,
         "orderId":8,
         "visibility":true,
         "params":{
            "description":"Universal status with widgets",
            "statusId":1,
            "iconId":105,
            "widget1":{
               "txtId":760,
               "value":0,
               "unit":6,
               "type":0,
               "params":[
                  0,
                  0,
                  0,
                  0,
                  0
               ]
            },
            "widget2":{
               "txtId":1041,
               "value":288,
               "unit":7,
               "type":9,
               "params":[
                  0,
                  0,
                  0,
                  0,
                  0
               ]
            }
         }
      },
      {
         "id":2053,
         "parentId":0,
         "type":1,
         "menuId":0,
         "orderId":3,
         "visibility":true,
         "params":{
            "description":"Temperature sensor",
            "workingStatus":true,
            "txtId":795,
            "value":6,
            "batteryLevel":null,
            "signalStrength":null
         }
      },
      {
         "id":2054,
         "parentId":0,
         "type":1,
         "menuId":0,
         "orderId":4,
         "visibility":true,
         "params":{
            "description":"Temperature sensor",
            "workingStatus":true,
            "txtId":1043,
            "value":182,
            "batteryLevel":null,
            "signalStrength":null
         }
      },
      {
         "id":2055,
         "parentId":0,
         "type":1,
         "menuId":0,
         "orderId":12,
         "visibility":false,
         "params":{
            "description":"Temperature sensor",
            "workingStatus":false,
            "txtId":196,
            "value":-2030,
            "batteryLevel":null,
            "signalStrength":null
         }
      },
      {
         "id":2056,
         "parentId":0,
         "type":1,
         "menuId":0,
         "orderId":9,
         "visibility":true,
         "params":{
            "description":"Temperature sensor",
            "workingStatus":true,
            "txtId":1040,
            "value":228,
            "batteryLevel":null,
            "signalStrength":null
         }
      },
      {
         "id":4050,
         "parentId":0,
         "type":21,
         "menuId":0,
         "orderId":15,
         "visibility":false,
         "params":{
            "description":"Additional pump",
            "workingStatus":false,
            "pumpNumber":1,
            "txtId":922
         }
      },
      {
         "id":4051,
         "parentId":0,
         "type":21,
         "menuId":0,
         "orderId":17,
         "visibility":false,
         "params":{
            "description":"Additional pump",
            "workingStatus":false,
            "pumpNumber":2,
            "txtId":922
         }
      },
      {
         "id":4052,
         "parentId":0,
         "type":40,
         "menuId":2006,
         "orderId":18,
         "visibility":false,
         "params":{
            "description":"Text information",
            "statusId":473,
            "headerId":814,
            "iconId":3,
            "options":[
               
            ]
         }
      },
      {
         "id":4056,
         "parentId":0,
         "type":11,
         "menuId":0,
         "orderId":10,
         "visibility":true,
         "params":{
            "description":"Relay",
            "workingStatus":false,
            "txtId":571,
            "iconId":17
         }
      },
      {
         "id":4057,
         "parentId":0,
         "type":11,
         "menuId":0,
         "orderId":14,
         "visibility":false,
         "params":{
            "description":"Relay",
            "workingStatus":false,
            "txtId":573,
            "iconId":17
         }
      },
      {
         "id":4059,
         "parentId":0,
         "type":32,
         "menuId":0,
         "orderId":16,
         "visibility":false,
         "params":{
            "description":"Disinfection",
            "txtId":922,
            "percentage":0
         }
      },
      {
         "id":4060,
         "parentId":0,
         "type":31,
         "menuId":0,
         "orderId":1,
         "visibility":true,
         "params":{
            "description":"Fuel supply",
            "percentage":0,
            "hours":0
         }
      },
      {
         "id":4061,
         "parentId":0,
         "type":22,
         "menuId":0,
         "orderId":13,
         "visibility":true,
         "params":{
            "description":"Fan",
            "workingStatus":false,
            "fanNumber":0,
            "gear":0,
            "txtId":null
         }
      },
      {
         "id":4062,
         "parentId":0,
         "type":23,
         "menuId":2220,
         "orderId":6,
         "visibility":true,
         "params":{
            "description":"Built-in valve",
            "workingStatus":true,
            "valveNumber":0,
            "currentTemp":240,
            "returnTemp":230,
            "setTempCorrection":0,
            "openingPercentage":15,
            "valvePump":0,
            "boilerProtection":0,
            "returnProtection":1,
            "setTemp":42,
            "txtId":-1
         }
      },
      {
         "id":4063,
         "parentId":0,
         "type":24,
         "menuId":2270,
         "orderId":7,
         "visibility":true,
         "params":{
            "description":"Built-in valve",
            "workingStatus":true,
            "valveNumber":1,
            "currentTemp":240,
            "returnTemp":230,
            "setTempCorrection":0,
            "openingPercentage":100,
            "valvePump":0,
            "boilerProtection":0,
            "returnProtection":0,
            "setTemp":38,
            "txtId":-1
         }
      },
      {
         "id":4065,
         "parentId":0,
         "type":11,
         "menuId":0,
         "orderId":11,
         "visibility":true,
         "params":{
            "description":"Relay",
            "workingStatus":false,
            "txtId":550,
            "iconId":101
         }
      }
   ],
   "lastUpdate":"2023-01-19 15:05:00.845762+01"
}

 
Dodane : 19/01/2023 4:06 pm
(@kamikac)
Wpisów: 225
Pomocny
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

I wszystko pięknie widać. Teraz wrzucasz tego jsona do lewego pola tekstowego:

https://jsonpath.com/

U góry podajesz np ponizszy JSONPath i otrzymujesz % otwarcia wewnętrznego zaworu:

$.tiles[?(@.id=='4062')].params.openingPercentage

No i teraz nasz skrypt wygląda tak:

rule "Emodul data"
when
    Time cron "0 0/5 * * * ?" // co 5 minut
then
    // Dane dostępowe do konta emodul.pl
    var String username = "your_username"
    var String password = "your_password"
    var String access_token
    var String data

    // Zaloguj się do konta emodul.pl
    var String login_url = "https://emodul.pl/api/login"
    var String login_data = '{"username":"'+username+'","password":"'+password+'"}'
    var HttpResponse login_response = sendHttpPostRequest(login_url, "application/json", login_data)
    if (login_response.responseCode != 200) {
        logError("Error while logging in to emodul.pl. Response code: " + login_response.responseCode)
    } else {
        // Pobierz token dostępu
        access_token = login_response.headers.get("access_token")
        // Pobierz dane z emodul.pl
        var String data_url = "https://emodul.pl/api/data"
        var HttpResponse data_response = sendHttpGetRequest(data_url, "application/json", null, [new HttpHeader("Authorization", "Bearer " + access_token)])
        if (data_response.responseCode != 200) {
            logError("Error while fetching data from emodul.pl. Response code: " + data_response.responseCode)
        } else {
            data = data_response.response
            // Publikuj dane w openHAB3
			ProcOtwZawItem.postUpdate(transform("JSONPATH", "$.tiles[?(@.id=='4062')].params.openingPercentage", data))
			//Następne itemy
			
		}
    }
end

Proponuję każdy JSONPath przetestować na stronie przed wrzuceniem do rule.


 
Dodane : 20/01/2023 12:00 am
(@szpila86)
Wpisów: 367
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@kamikac 

A ja się na piechotę męczyłem z JSONem 😭 

Mimo instalacji Http nie rozpoznaje mi poleceń

Script execution of rule with UID 'eModul-1' failed: 'responseCode' is not a member of 'HttpResponse'; line 15, column 9, length 27 in eModul

może tak to powinno być?

Integer responseCode = request.getResponseCode();
        if (responseCode != 200) {
            httpResponse = responseCode.toString();
        }

 
Dodane : 20/01/2023 6:58 am
(@kamikac)
Wpisów: 225
Pomocny
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

A dołożyłeś

import requests
import json

na początku pliku rules?


 
Dodane : 20/01/2023 8:52 am
adrian zareagował
(@szpila86)
Wpisów: 367
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@kamikac 

tak mam wpisane przed "rules"

nawet stronę z emodul.eu zmieniłem na emodul.pl bo obie niby wyświetlają to samo.

Strone logowania też zmieniłem na

var String login_url = "https://emodul.pl/login"
Bo w zasadzie po wylogowaniu z konta to się wyświetla bez api
 

 
Dodane : 20/01/2023 2:26 pm
(@kamikac)
Wpisów: 225
Pomocny
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@szpila86 Skąd wziąłęs ten skrypt? Teraz widze, że tam jest błąd: sendHttpPostRequest zwraca tylko String z odpowiedzią serwera, nie zwraca żadnego obiektu, który miałby właściwość responseCode, więc ten if nie ma co sprawdzić ( https://www.openhab.org/docs/configuration/actions.html#http-actions ).

Trzeba to przerobić, żeby skrypt szedł dalej, jeśli odpowiedź serwera nas zadowala.


 
Dodane : 21/01/2023 11:38 pm
(@szpila86)
Wpisów: 367
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@kamikac 

Błądzę po forach próbując czegoś się nauczyć i samemu zrobić 😵‍💫


 
Dodane : 21/01/2023 11:58 pm
(@kamikac)
Wpisów: 225
Pomocny
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Cześć

Wymodziłem taki rule. Nieststy nie posiadam zarejestrowanego żadnego modułu, więc mam odpowiedzw postaci pustej tablicy. Endpoint, który podałeś ( https://emodul.pl/api/data) zawsze zwraca 404 Not Found.

Wg mnie należy znaleźć id modulu z odpowiedzi Data response  i udczytać dane z endpointa

GET  https://emodul.eu/api/v1/users/{user_id}/modules/{module_udid} 

rule:

rule "Emodul data"
when
    Time cron "0 0/1 * * * ?" // co 5 minut
then
    // Dane dostępowe do konta emodul.pl
    var String username = "username"
    var String password = "pass"
    var String access_token
    //var String data
	var String user_id

    // Zaloguj się do konta emodul.pl
    var String login_url = "https://emodul.eu/api/v1/authentication"
    var String login_data = '{"username": "' + username + '" ,"password": "' + password + '"}'
    var String login_response = sendHttpPostRequest(login_url, "application/json", login_data)
	logInfo("Emodul", "Response: {}", login_response)
	if (login_response === null) {
		logWarn("Emodul","Empty HTTP response!")
		return;
	}
	access_token = transform("JSONPATH", "$.token", login_response)
	logInfo("Emodul","Access token: {}", access_token)
	user_id = transform("JSONPATH", "$.user_id", login_response)
	logInfo("Emodul","User ID: {}", user_id)
	
    // Pobierz dane z emodul.pl GET  https://emodul.eu/api/v1/users/{user_id}/modules 
    var String data_url = "https://emodul.eu/api/v1/users/" + user_id + "/modules"
	//var String data_url = "https://emodul.pl/api/data"
    var String data_response = sendHttpGetRequest(data_url, newHashMap("Authorization" -> "Bearer " + access_token), 5000)
	logInfo("Emodul","Data response: {}", data_response)
end

 


 
Dodane : 23/01/2023 9:49 am
(@szpila86)
Wpisów: 367
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@kamikac 

Hej

teraz widać że coś się dzieje 😀

reguła się loguje i uzyskuje token tyle widzę na szybko.

Wieczorem połączę się z domem i spróbuję przeanalizować co się dzieje i gdzie się zatrzymuje.

 

próbuję podejrzeć np

"https://emodul.eu/api/v1/users/" + user_id + "/modules/8277712ce8de8ec19d15b457d54/zones" i dostaje w wyniu 404 Not Found 
 

 
Dodane : 23/01/2023 5:22 pm
(@kamikac)
Wpisów: 225
Pomocny
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Bardzo roztropnie zrobiłeś, że token nie znalazł się na forum 🙂

Przyznam sie, że użyłem go do przetestowania dalszej części skryptu (nie zrobiłem nic poza odczytem danych) i oto uzyskany w OH wynik:

{
   "zones":{
      "transaction_time":null,
      "elements":[
         
      ],
      "globalSchedules":{
         "time":null,
         "duringChange":null,
         "elements":[
            
         ]
      },
      "controllerParameters":null
   },
   "tiles":[
      {
         "id":2000,
         "parentId":0,
         "type":50,
         "menuId":0,
         "orderId":null,
         "visibility":true,
         "params":{
            "description":"Controller software version",
            "version":"1.3.0",
            "txtId":873,
            "iconId":50,
            "companyId":30,
            "controllerName":"ST-480",
            "mainControllerId":169709
         }
      },
      {
         "id":2011,
         "parentId":0,
         "type":40,
         "menuId":0,
         "orderId":2,
         "visibility":true,
         "params":{
            "description":"Text information",
            "statusId":563,
            "headerId":1039,
            "iconId":50,
            "options":[
               
            ]
         }
      },
      {
         "id":2050,
         "parentId":0,
         "type":6,
         "menuId":2060,
         "orderId":5,
         "visibility":true,
         "params":{
            "description":"Universal status with widgets",
            "statusId":1,
            "iconId":106,
            "widget1":{
               "txtId":760,
               "value":0,
               "unit":6,
               "type":0,
               "params":[
                  0,
                  0,
                  0,
                  0,
                  0
               ]
            },
            "widget2":{
               "txtId":774,
               "value":508,
               "unit":7,
               "type":9,
               "params":[
                  0,
                  0,
                  0,
                  0,
                  0
               ]
            }
         }
      },
      {
         "id":2051,
         "parentId":0,
         "type":6,
         "menuId":2061,
         "orderId":8,
         "visibility":true,
         "params":{
            "description":"Universal status with widgets",
            "statusId":1,
            "iconId":105,
            "widget1":{
               "txtId":760,
               "value":0,
               "unit":6,
               "type":0,
               "params":[
                  0,
                  0,
                  0,
                  0,
                  0
               ]
            },
            "widget2":{
               "txtId":1041,
               "value":614,
               "unit":7,
               "type":9,
               "params":[
                  0,
                  0,
                  0,
                  0,
                  0
               ]
            }
         }
      },
      {
         "id":2053,
         "parentId":0,
         "type":1,
         "menuId":0,
         "orderId":3,
         "visibility":true,
         "params":{
            "description":"Temperature sensor",
            "workingStatus":true,
            "txtId":795,
            "value":12,
            "batteryLevel":null,
            "signalStrength":null
         }
      },
      {
         "id":2054,
         "parentId":0,
         "type":1,
         "menuId":0,
         "orderId":4,
         "visibility":true,
         "params":{
            "description":"Temperature sensor",
            "workingStatus":true,
            "txtId":1043,
            "value":200,
            "batteryLevel":null,
            "signalStrength":null
         }
      },
      {
         "id":2055,
         "parentId":0,
         "type":1,
         "menuId":0,
         "orderId":12,
         "visibility":false,
         "params":{
            "description":"Temperature sensor",
            "workingStatus":false,
            "txtId":196,
            "value":-2030,
            "batteryLevel":null,
            "signalStrength":null
         }
      },
      {
         "id":2056,
         "parentId":0,
         "type":1,
         "menuId":0,
         "orderId":9,
         "visibility":true,
         "params":{
            "description":"Temperature sensor",
            "workingStatus":true,
            "txtId":1040,
            "value":375,
            "batteryLevel":null,
            "signalStrength":null
         }
      },
      {
         "id":4050,
         "parentId":0,
         "type":21,
         "menuId":0,
         "orderId":15,
         "visibility":false,
         "params":{
            "description":"Additional pump",
            "workingStatus":false,
            "pumpNumber":1,
            "txtId":922
         }
      },
      {
         "id":4051,
         "parentId":0,
         "type":21,
         "menuId":0,
         "orderId":17,
         "visibility":false,
         "params":{
            "description":"Additional pump",
            "workingStatus":false,
            "pumpNumber":2,
            "txtId":922
         }
      },
      {
         "id":4052,
         "parentId":0,
         "type":40,
         "menuId":2006,
         "orderId":18,
         "visibility":false,
         "params":{
            "description":"Text information",
            "statusId":473,
            "headerId":814,
            "iconId":3,
            "options":[
               
            ]
         }
      },
      {
         "id":4056,
         "parentId":0,
         "type":11,
         "menuId":0,
         "orderId":10,
         "visibility":true,
         "params":{
            "description":"Relay",
            "workingStatus":true,
            "txtId":571,
            "iconId":17
         }
      },
      {
         "id":4057,
         "parentId":0,
         "type":11,
         "menuId":0,
         "orderId":14,
         "visibility":false,
         "params":{
            "description":"Relay",
            "workingStatus":false,
            "txtId":573,
            "iconId":17
         }
      },
      {
         "id":4059,
         "parentId":0,
         "type":32,
         "menuId":0,
         "orderId":16,
         "visibility":false,
         "params":{
            "description":"Disinfection",
            "txtId":922,
            "percentage":0
         }
      },
      {
         "id":4060,
         "parentId":0,
         "type":31,
         "menuId":0,
         "orderId":1,
         "visibility":true,
         "params":{
            "description":"Fuel supply",
            "percentage":0,
            "hours":0
         }
      },
      {
         "id":4061,
         "parentId":0,
         "type":22,
         "menuId":0,
         "orderId":13,
         "visibility":true,
         "params":{
            "description":"Fan",
            "workingStatus":false,
            "fanNumber":0,
            "gear":0,
            "txtId":null
         }
      },
      {
         "id":4062,
         "parentId":0,
         "type":23,
         "menuId":2220,
         "orderId":6,
         "visibility":true,
         "params":{
            "description":"Built-in valve",
            "workingStatus":true,
            "valveNumber":0,
            "currentTemp":380,
            "returnTemp":370,
            "setTempCorrection":0,
            "openingPercentage":86,
            "valvePump":0,
            "boilerProtection":0,
            "returnProtection":1,
            "setTemp":41,
            "txtId":-1
         }
      },
      {
         "id":4063,
         "parentId":0,
         "type":24,
         "menuId":2270,
         "orderId":7,
         "visibility":true,
         "params":{
            "description":"Built-in valve",
            "workingStatus":true,
            "valveNumber":1,
            "currentTemp":390,
            "returnTemp":370,
            "setTempCorrection":0,
            "openingPercentage":78,
            "valvePump":0,
            "boilerProtection":0,
            "returnProtection":0,
            "setTemp":37,
            "txtId":-1
         }
      },
      {
         "id":4065,
         "parentId":0,
         "type":11,
         "menuId":0,
         "orderId":11,
         "visibility":true,
         "params":{
            "description":"Relay",
            "workingStatus":false,
            "txtId":550,
            "iconId":101
         }
      }
   ]
}

 


 
Dodane : 23/01/2023 10:07 pm
(@szpila86)
Wpisów: 367
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@kamikac 

😫 🤯 Jjjjjajaaajaaakk 

omg schock

 
Dodane : 23/01/2023 10:14 pm
Strona 1 / 2
Udostępnij: