Tech sterowniki

Jacco
Posty: 8
Rejestracja: śr lis 17, 2021 9:13 am

Dzień dobry. Od dłuższego czasu przyglądam się projektom dostępnym na forum i wygląda to imponująco. Nasuwa mi się pytanie: czy jest możliwa integracja Supli z API firmy Tech sterowniki do sterowania podłogówką ? Widziałem już taką implementację z HA na githubie, Obecnie dopiero zaczynam przygodę z suplą, proszę wybaczyć jeśli pytanie jest idiotyczne ;)
Awatar użytkownika
MadOnion78
Posty: 1060
Rejestracja: ndz lis 24, 2019 3:53 pm
Lokalizacja: Głubczyce

Kiedyś o cośpodobnego pytałem.
viewtopic.php?p=78332#p78332

jeśli coś ruszy, będę zainteresowany w miarę moich możliwości IT :D
3x SRW-01, 1x mSRW-01, 7x ROW-02, 2x SBW-02, 2x LIW-01, 1x SLW-02, 1x SLW-02, 1x MEW-01, 1x DIW-01, RNW-01 ;)
Wojtek1
Posty: 13
Rejestracja: śr mar 17, 2021 5:58 pm

Ja wykorzystuje API TECH ale tylko do odczytu temperatury w pokojach. Mam w każdym pokoju sterownik od ogrzewania podłogowego więc na Raspberry poprzez API TECH odczytuje co jakoś czas temperaturę i informacje czy ogrzewanie w tej strefie jest włączone a później wysyłam do Supli przez SuplaVirtulaDevice.
Nie chciałem dawać dodatkowych termometrów więc tak to załatwiłem. Ale niestety nie da się sterować temperaturą. Tylko odczyt.
Wykorzystałem kanał temperatury i wilgotności. Z tym że zamiast wilgotności pokazuję informację czy dane pomieszczenie jest w danej chwili ogrzewane. Jeśli "wilgotność" jest 0 to ogrzewanie nie działa. Jeśli jest 10% to ogrzewanie jest włączone. Taki sposób prezentacji najbardziej mi odpowiadał.

Ale bardzo brakuje możliwości sterowania więc jeśli coś się pojawi to bardzo by mnie to ucieszyło.
U mnie wygląda to tak:
Załączniki
IMG_20211117_162053.jpg
IMG_20211117_162053.jpg (205.66 KiB) Przejrzano 2214 razy
IMG_20211117_162111.jpg
IMG_20211117_162111.jpg (159.42 KiB) Przejrzano 2214 razy
crazymario
Posty: 1
Rejestracja: pn wrz 26, 2022 6:23 pm

Byłbyś w stanie przerzucić jakieś info o API z sterowników TECH ?
Posiadam Tech I3+ - i chciałbym z niego tylko odczytywać info o temperaturach lub informację, czy cos jest włączone czy nie.
Pozdrawiam.
Wojtek1
Posty: 13
Rejestracja: śr mar 17, 2021 5:58 pm

Tutaj jest link do opisu API z którego korzystałem.

https://emodul.eu/docs/api-v1.txt

Jeśli używasz aplikacji eModul to powinno działać ale musisz sam sprawdzić bo nie znam tego sterownika.
lukasz06
Posty: 771
Rejestracja: ndz lip 17, 2022 6:53 pm

A z tech st281c też da radę odczytać temperaturę?
Awatar użytkownika
uchnast.michal
Posty: 1074
Rejestracja: wt cze 04, 2019 11:37 am

Zaloguj się do swojego emodul.pl i wpisz sobie https://emodul.pl/module_data
Wklej jsona tutaj. Obecnie zrobiłem to w php ale może uda mi się przepisać do Pythona. W połączeniu z supla virtual device będziesz miał dane do wyświetlenia.
Chyba, że @wojtek1 udostępni kod to pozostanie kwestia dostosowania pod Twój sterownik.
e-talking............
Byłem tam - Supla Offline Party 2023
Wojtek1
Posty: 13
Rejestracja: śr mar 17, 2021 5:58 pm

Cały projekt oparłem na SUPLA virtual device i zrobiłem to podobnie do odczytu temperatury z czujników Xiaomi.

Najpierw trzeba postępować zgodnie z dokumentacją od TECH żeby aktywować API i odczytać dane do autoryzacji zapytań.
Jak go będziesz miał to możesz edytować mój plik

OdczytTemperaturyOrzewania.py

Mam go w folderze /home/pi/TECHeMODUL musisz też tam stworzyć pliki .txt z odpowiednimi nazwami stref. U mnie to np. salon.txt itp

Kod: Zaznacz cały


#!/usr/bin/python

import requests
import time

while True:
    req = requests.get('https://emodul.eu/api/v1/users/xxxxxxxxx/modules/xxxxxxxxxx', headers={'Authorization': 'Bearer xxxxxxxxxx'})
# powyżej w miejsce xxxxx wpisz odpowiednie dane odczytane wg dokumentacji API
    if req.status_code == 200:
      result = req.json()['zones']['elements']

      if result[0]['zone']['flags']['relayState'] == "on":
          file = open("/home/pi/TECHeMODUL/salon.txt", "w")
          file.write(f"{result[0]['zone']['currentTemperature']/10}\n{10}\n{result[0]['zone']['batteryLevel']}")
          file.close()

      elif result[0]['zone']['flags']['relayState'] == "off":
          file = open("/home/pi/TECHeMODUL/salon.txt", "w")
          file.write(f"{result[0]['zone']['currentTemperature']/10}\n{0}\n{result[0]['zone']['batteryLevel']}")
          file.close()
          

      if result[1]['zone']['flags']['relayState'] == "on":
          file = open("/home/pi/TECHeMODUL/WC.txt", "w")
          file.write(f"{result[1]['zone']['currentTemperature']/10}\n{10}\n{result[1]['zone']['batteryLevel']}")
          file.close()

      elif result[1]['zone']['flags']['relayState'] == "off":
          file = open("/home/pi/TECHeMODUL/WC.txt", "w")
          file.write(f"{result[1]['zone']['currentTemperature']/10}\n{0}\n{result[1]['zone']['batteryLevel']}")
          file.close()      


      if result[2]['zone']['flags']['relayState'] == "on":
          file = open("/home/pi/TECHeMODUL/kotlownia.txt", "w")
          file.write(f"{result[2]['zone']['currentTemperature']/10}\n{10}\n{result[2]['zone']['batteryLevel']}")
          file.close()

      elif result[2]['zone']['flags']['relayState'] == "off":
          file = open("/home/pi/TECHeMODUL/kotlownia.txt", "w")
          file.write(f"{result[2]['zone']['currentTemperature']/10}\n{0}\n{result[2]['zone']['batteryLevel']}")
          file.close()        
          
# kolejne strefy wpisz analogicznie     

      
    elif req.status_code == 404:
      print("Bledne zapytanie")
    elif req.status_code == 401:
      print("Please provide API key within a link")


  
    time.sleep(120)


done


Dodatkowo mam plik konfiguracyjny w /etc/supervisor/conf.d/TECHeMODUL.conf

Kod: Zaznacz cały

[program:TechOdczyt]
command=python3 ./OdczytTemperaturyOrzewania.py
directory=/home/pi/TECHeMODUL
autostart=true
autorestart=true
user=pi
Musisz też dodać odczytane wartości do SUPLA virtual device
U mnie wygląda to tak:

Kod: Zaznacz cały


[CHANNEL_3]
function=TEMPERATURE_AND_HUMIDITY
file=/home/pi/TECHeMODUL/salon.txt
min_interval_sec=30
file_write_check_sec=600
battery_powered=1


[CHANNEL_4]
function=TEMPERATURE_AND_HUMIDITY
file=/home/pi/TECHeMODUL/WC.txt
min_interval_sec=30
file_write_check_sec=600
battery_powered=1
Kanał wilgotności daje nam tutaj tylko wartości 0 lub 10. 10 ma oznaczać że ogrzewanie jest włączone natomiast 0 że w danej chwili strefa nie grzeje.

Jest to mój pierwszy taki skrypt więc idealny nie jest ale działał u mnie całkiem dobrze.
Awatar użytkownika
uchnast.michal
Posty: 1074
Rejestracja: wt cze 04, 2019 11:37 am

Wojtek1 pisze: śr lis 17, 2021 3:26 pm Ale bardzo brakuje możliwości sterowania więc jeśli coś się pojawi to bardzo by mnie to ucieszyło.
A próbowałeś tak?:

Kod: Zaznacz cały

8. Update parameter

POST https://emodul.eu/api/v1/users/{user_id}/modules/{module_udid}/menu/{menu_type}/ido/{ido}/value/{value}

    Parameter       Type    Required    Description
    menu_type       String  yes         Options: 'MU', 'MI', 'MS', 'MP'
    ido             Number  yes         Parameter ido
    value           Number  yes         New value
e-talking............
Byłem tam - Supla Offline Party 2023
Wojtek1
Posty: 13
Rejestracja: śr mar 17, 2021 5:58 pm

Tak jest taka możliwość. Nawet czasami zdarzało mi się z tego korzystać. Mam zrobiony gotowy szablon w aplikacji "skróty http" który włącza ogrzewanie na 2h. Ale niestety poprzez aplikację Supli chyba nie da się tego zrobić.
ODPOWIEDZ

Wróć do „Pomoc”