- Kormányok / autós szimulátorok topicja
- AMD Radeon™ RX 470 / 480 és RX 570 / 580 / 590
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- AMD Navi Radeon™ RX 7xxx sorozat
- Milyen egeret válasszak?
- Plazma TV topic
- NVIDIA GeForce RTX 4060 / 4070 S/Ti/TiS (AD104/103)
- HTPC (házimozi PC) topik
- Milyen billentyűzetet vegyek?
- Azonnali processzoros kérdések órája
Hirdetés
-
Premier előzetesen a Demon Slayer -Kimetsu no Yaiba- Sweep the Board!
gp Elérhető lett Switch-re a játék, amely leginkább a Mario Party-hoz hasonlítható.
-
Olcsó 5G-s ajánlatot nyújt a Realme Indiának
ma Megérkezett a Realme C65 5G, az első készülék a MediaTek Dimensity 6300-zal.
-
Lenovo Essential Wireless Combo
lo Lehet-e egy billentyűzet karcsú, elegáns és különleges? A Lenovo bebizonyította, hogy igen, de bosszantó is :)
-
PROHARDVER!
Okos Otthon összefoglaló
Új hozzászólás Aktív témák
-
félisten
Köszönöm mindenkinek!
Ez volt a megoldás, a hiányzó elem telepítése.
Ez már a CharlieR által jelzett oldalon is szerepelt, de az ott leírt metódus 404-es hibába ütközött, a rákeresésre pedig azt találtam, amit Layerke is jogosan feltételezett: hogy a novemberi frissítéssel ezt a hibát már javították.
Hát, nem igazán...Úgyhogy most van öröm meg boldogság, egy I2C-n csatlakozó BME 280-as értékeiben gyönyörködöm.
A következő feladat ugyanez lesz NodeMCU-n keresztül, aztán jöhetnek a relék.Sok kérdésem lesz...
Köszönöm a segítséget: MaCS
[ Szerkesztve ]
Fán nem lehet motorozni, motoron viszont lehet fázni!
-
Norby-007
tag
Szia,
Korábban belinkeltem egy youtube videót, ahol Paul Hibbert elmondja részletesen mi a baj. A 3-ik generációssal van gond, de csak az RM proval, az RM minivel nincs és fogalmam sincs, hogy a szögletessel van-e gond, de szerintem azzal sincs, mert Paul azt nem említi. Csak a legújabbakkal van gond, ami a az RMpro3-as változat, azt nem lehet összehozni Alexával.
De Homa Assistant alatt lehet vezérelni, legalábbis nekem sikerült. -
layerke
aktív tag
Nézd meg az ogimet oldalon, hogy egyáltalán a synop állomás szolgáltat-e okta értéket. Ha igen, akkor megkeressük a megoldást együtt. Ha nem, akkor Access biztos segít abban, hogy megkapd ezt az értéket is, Ő megoldotta ötletesen egy másik szkripttel.
@itanczos: ebben soha nem fogunk egyetérteni, de természetesen ezek ellenére és ezzel együtt is
[ Szerkesztve ]
-
itanczos
senior tag
Szerintem pont ebben a témában, itt a topic-ban ugyanez már megtörtént, 1 héten belül...
Ugye-ugye, aki nem olvas vissza...Használd a keresőt! | iPhone 13 Pro 256GB | 3D: Tevo Tarantula | NAS: HP MicroServer Gen8 - Proxmox/XPenology | Okos otthon: HomesAssistant - HomeKit - Hirdetéseim: https://hardverapro.hu/aprok/hirdeto/itanczos/index.html
-
Vodike
tag
Bánatomban töröltem a domoticzban az Eventekből az octa lua scriptet és létrehoztam manuálisan a file-t itt a leírtak szerint: ~/domoticz/scripts/lua/script_time_SolarSensor.lua
terminalban, nanoval bemásoltam a scriptet, látszólag ¶m van, de a domoticz logban még mindig Error opening url: http://127.0.0.1:9999/json.htm?type=command¶m=udevice&idx=24&nvalue=0&svalue=100
pedig az adatokat szépen olvassa, minden tök jó, de ezt valamiért nem akarja. Hova ragadhatott be? Hogyan gyomláljam ki?
exTiga
-
AcCEsS
senior tag
Bocs, csak most volt időm átolvasgatni az új fórumbejegyzéseket (influenza meg ablakcsere van nálunk), de úgy néz ki tényleg működik a Dark Sky időjárás-szolgáltató felhősödési (Octa) infója és a hozzáigazított szkript.
A szkript egyébként tartalmazza az eredeti Ogimet-féle működési elvet is, a Dark Sky használati lehetőségét csak kiegészítésként adtam hozzá, és a WeatherStation nevű változó O vagy D értékével állítható be, hogy O = Ogimet vagy D = Dark Sky legyen az Octa adat szolgáltatója.
A működéshez kell egy Dark Sky API kulcsot igényelned a következő módon: A darksky.net oldalon felül válaszd ki a "Developers" módot, alul meg a Try Now gomra nyomva egy gyors regisztráció után megkapod az API kulcsodat, amit be kell másolnod a szkript dsAPIkey változójának aposztrófjai közé. A lekérdezésre az API elég sok infót ad vissza: pl. UV Index, min/max hőmérséklet, nyomás, időjárás előrejelzés stb., a DEBUG módban meg lehet nézni. A szkript jelenleg 10 percenkénti ütemezéssel fut.
Egyébként a beírásokban a command utáni hülye karakter "json.htm?type=command¶m=udevice&idx=" egy html dekódolási sajátosság, ami lecseréli a "&" utáni "param" nevű tag elejét, én az ilyen hivatkozások paramétertagjainak sorrendjét megfordítottam, és így már jó: "json.htm?param=udevice&type=command&idx="
Egy ideig még tuti tart nálunk az őrület, ha valaki elakadna segíteni fogok, csak kicsit több lesz a válaszidőm...
És a szkript:
--[[
~/domoticz/scripts/lua/script_time_SolarSensor.lua
-- Autors ----------------------------------------------------------------
V1.0 - Sébastien Joly - Great original work
V1.1 - Neutrino - Adaptation to Domoticz
V1.2 - Jmleglise - An acceptable approximation of the lux below 1° altitude for Dawn and dusk + translation + several changes to be more userfriendly.
V1.3 - Jmleglise - No update of the Lux data when <=0 to get the sunset and sunrise with lastUpdate
V1.4 - use the API instead of updateDevice to update the data of the virtual sensor to be able of using devicechanged['Lux'] in our scripts. (Due to a bug in Domoticz that doesn't catch the devicechanged event of the virtual sensor)
]]--
-- Beállítások---------------------------------------------------------------
-----------------------------------------------------------------------------
local localhost = '127.0.0.1:8080' -- IP és port
local city = "VÁROSOD" -- Wunderground API-val használt lakhelyed
local countryCode = "HU" -- Országkód Wunderground API-hoz
local idxLux ='szám' -- Lux ID
local idxSolarAzimuth ='szám' -- Azimut ID
local idxSolarAltitude ='szám' -- Nap magasság ID
local idxCloud = 'szám' -- Felhőkitakarás ID
local idxUserVarOcta='szám' -- Az octa változó ID-je
local wuAPIkey = "API" -- Weather Underground API kulcsod
local latitude = LAT -- Otthonod szélességi foka
local longitude = LON -- Otthonod hosszúsági foka
local altitude = szám -- Otthonod tengerszint feletti magassága (ha a debug 1-en van, akkor az első lekérdezésnél meg fog jelenni ez a naplóban és beírhatod ide
local DEBUG = 0 -- 0 nincs, 1 domoticz napló, 2 fájlba írás
local WeatherStation = 'D' -- octa (felhőkitakarás) információk szolgáltatója: O = Ogimet, D = Dark Sky
if ( WeatherStation == "O" ) then
-- Ogimet (https://www.ogimet.com/resynops.phtml.en)
WMOID = 'szám' -- A hozzád legközelebbi SYNOP állomás kódja
else
-- Dark Sky (https://darksky.net)
dsAPIkey='API' -- Dark Sky API kulcsod
coordinates=latitude..','..longitude
end
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
function leapYear(year)
return year%4==0 and (year%100~=0 or year%400==0)
end
function split(s, delimiter)
result = {};
for match in (s..delimiter):gmatch("(.-)"..delimiter) do
table.insert(result, match);
end
return result;
end
function round(num, dec)
if (num == 0 ) then
return 0
else
local mult = 10^(dec or 0)
return math.floor(num * mult + 0.5) / mult
end
end
function os.capture(cmd, raw)
local f = assert(io.popen(cmd, 'r'))
local s = assert(f:read('*a'))
f:close()
if raw then return s end
s = string.gsub(s, '^%s+', '')
s = string.gsub(s, '%s+$', '')
s = string.gsub(s, '[\n\r]+', ' ')
return s
end
-----------------------------------------------------------------------------
commandArray = {}
time = os.date("*t")
if ( (time.min % 10) == 0 ) then -- Run every 10 minutes. Check the wundergroud API limitation before changing this
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")() -- For Linux
--json = (loadfile "D:\\Domoticz\\scripts\\lua\\json.lua")() -- For Windows
local arbitraryTwilightLux=6.32 -- W/m² egal 800 Lux (the theoritical value is 4.74 but I have more accurate result with 6.32...)
local constantSolarRadiation = 1361 -- Solar Constant W/m²
if ( uservariables['octa'] == nil ) then
print("Error : Did you create the Uservariable octa ?")
end
-- API Wunderground
local config=assert(io.popen('curl http://api.wunderground.com/api/'..wuAPIkey..'/conditions/q/'..countryCode..'/'..city..'.json'))
local location = config:read('*all')
config:close()
local jsonLocation = json:decode(location)
if ( DEBUG == 1) then
local latitude = jsonLocation.current_observation.display_location.latitude
local longitude = jsonLocation.current_observation.display_location.longitude
local altitude = jsonLocation.current_observation.display_location.elevation
print('Lat: '..latitude..'Long: '..longitude..'Alt: '..altitude)
end
relativePressure = jsonLocation.current_observation.pressure_mb -- if you have an another way to get the Pressure, (local barometer ...) then you may optimize the script and avoid the call to api.wunderground)
-----------------------------------------------------------------------------
local year = os.date("%Y")
local numOfDay = os.date("%j")
if ( leapYear(year) == true ) then
nbDaysInYear = 366 -- How many days in the year ?
else
nbDaysInYear = 365
end
angularSpeed = 360/365.25
local Declinaison = math.deg(math.asin(0.3978 * math.sin(math.rad(angularSpeed) *(numOfDay - (81 - 2 * math.sin((math.rad(angularSpeed) * (numOfDay - 2))))))))
timeDecimal = (os.date("!%H") + os.date("!%M") / 60) -- coordinatesinated Universal Time (UTC)
solarHour = timeDecimal + (4 * longitude / 60 ) -- The solar Hour
hourlyAngle = 15 * ( 12 - solarHour ) -- hourly Angle of the sun
sunAltitude = math.deg(math.asin(math.sin(math.rad(latitude))* math.sin(math.rad(Declinaison)) + math.cos(math.rad(latitude)) * math.cos(math.rad(Declinaison)) * math.cos(math.rad(hourlyAngle)))) -- the height of the sun in degree, compared with the horizon
local azimuth = math.acos((math.sin(math.rad(Declinaison)) - math.sin(math.rad(latitude)) * math.sin(math.rad(sunAltitude))) / (math.cos(math.rad(latitude)) * math.cos(math.rad(sunAltitude) ))) * 180 / math.pi -- deviation of the sun from the North, in degree
local sinAzimuth = (math.cos(math.rad(Declinaison)) * math.sin(math.rad(hourlyAngle))) / math.cos(math.rad(sunAltitude))
if (sinAzimuth<0) then
azimuth=360-azimuth
end
sunstrokeDuration = math.deg(2/15 * math.acos(- math.tan(math.rad(latitude)) * math.tan(math.rad(Declinaison)))) -- duration of sunstroke in the day . Not used in this calculation.
RadiationAtm = constantSolarRadiation * (1 +0.034 * math.cos( math.rad( 360 * numOfDay / nbDaysInYear ))) -- Sun radiation (in W/m²) in the entrance of atmosphere.
-- Coefficient of mitigation M
absolutePressure = relativePressure - round((altitude/ 8.3),1) -- hPa
sinusSunAltitude = math.sin(math.rad(sunAltitude))
M0 = math.sqrt(1229 + math.pow(614 * sinusSunAltitude,2)) - 614 * sinusSunAltitude
M = M0 * relativePressure/absolutePressure
if (DEBUG == 1) then
print('<b style="color:Blue"============== SUN LOG ==================</b>')
print(os.date("%Y-%m-%d %H:%M:%S", os.time()))
print(city .. ", latitude:" .. latitude .. ", longitude:" .. longitude)
print("Home altitude = " .. tostring(altitude) .. " m")
print("number Of Day = " .. numOfDay)
if ( nbDaysInYear == 366 ) then
print(year .." is a leap year !")
else
print(year.." is not a leap year")
end
print("Angular Speed = " .. angularSpeed .. " per day")
print("Declinaison = " .. Declinaison .. "°")
print("Universel coordinatesinated Time (UTC)".. timeDecimal .." H.dd")
print("Solar Hour ".. solarHour .." H.dd")
print("Altitude of the sun = " .. sunAltitude .. "°")
print("Angular hourly = ".. hourlyAngle .. "°")
print("Azimuth of the sun = " .. azimuth .. "°")
print("Duration of the sunstroke of the day = " .. round(sunstrokeDuration,2) .." H.dd") -- not used
print("Radiation max in atmosphere = " .. round(RadiationAtm,2) .. " W/m²")
print("Local relative pressure = " .. relativePressure .. " hPa")
print("Absolute pressure in atmosphere = " .. absolutePressure .. " hPa")
print("Coefficient of mitigation M = " .. M .." M0:"..M0)
end
-----------------------------------------------------------------------------
if ( WeatherStation == "O" ) then
-------- Ogimet --------
-- Get SYNOP message from Ogimet web site
hourUTCminus1 = os.date("!%H")-1
if ( string.len(hourUTCminus1) == 1 ) then
hourUTCminus1 = "0" .. hourUTCminus1
end
UTC = os.date("%Y%m%d").. hourUTCminus1.."00" -- os.date("!%M")
if ( DEBUG == 1 ) then
local WMOID = jsonLocation.current_observation.display_location.wmo
end
cmd='curl "http://www.ogimet.com/cgi-bin/getsynop?block='..WMOID..'&begin='..UTC..'"'
if ( DEBUG == 1) then
print(cmd)
end
local ogimet=assert(io.popen(cmd))
local synop = ogimet:read('*all')
ogimet:close()
if ( DEBUG == 1) then
print('ogimet:'..synop)
end
if ( string.find(synop,"Status: 500") == nil ) then
rslt = split(synop,",")
CodeStation = rslt[1]
rslt = split(synop, " "..CodeStation.. " ")
Trame = string.gsub(rslt[2], "=", "")
Trame = CodeStation .." ".. Trame
rslt = split(Trame, " ")
Octa = string.sub(rslt[3], 1, 1) -- 3rd char is the cloud layer. 0=no cloud, 1-8=cloudy from 1 to 8 max, 9=Fog, /=no data
if ( Octa == "/" ) then -- not defined ? take the previous value
Octa = uservariables['octa']
elseif ( Octa == "9" ) then
Octa = 8
end
else
Octa = uservariables['octa']
end
else
-------- Dark Sky --------
-- Get weather information from Dark Sky web site
cmd='curl -s "https://api.darksky.net/forecast/'..dsAPIkey..'/'..coordinates..'?lang=hu&units=ca&exclude=hourly,flags"'
if ( DEBUG == 1) then
print(cmd)
end
result=os.capture(cmd)
-- Reading values from json
local jsonValeur = json:decode(result)
Octa = jsonValeur.currently.cloudCover*100
if ( Octa < 0 or Octa > 100 ) then -- Ha valami hibás infó jönne, az előző tárolt adattal számol
Octa = uservariables['octa']
end
if ( DEBUG == 1) then
val_Patm = jsonValeur.currently.pressure
val_UV = jsonValeur.currently.uvIndex
-- val_Vis = jsonValeur.currently.visibility -- Ezt az infót jelenleg nem adja vissza a json kérés
val_Cloud = jsonValeur.currently.cloudCover*100
val_Tmin = round(jsonValeur.daily.data[1].temperatureLow,1)
val_Tmax = round(jsonValeur.daily.data[1].temperatureHigh,1)
icon = jsonValeur.daily.data[1].icon
summary = jsonValeur.daily.data[1].summary
-- Converting Dark Sky icon into domoticz forecast code
if icon=="clear-day" or icon=="clear-night" then prev=1 --Sunny
elseif icon=="rain" or icon=="snow" or rain=="sleet" then prev=6 --Cloudy/Rain
elseif icon=="wind" or icon=="fog" then prev=0 --Stable
elseif icon=="cloudy" then prev=2 --Cloudy
elseif icon=="partly-cloudy-day" or icon=="partly-cloudy-night" then prev=3 --Unstable
else prev=5 --Unknown
end
forecast=summary.." Min : "..val_Tmin.."°C Max : "..val_Tmax.."°C"
print("Pressure : "..val_Patm)
print("UV Index : "..val_UV)
-- print("Visibility : "..val_Vis) -- Ezt az infót jelenleg nem adja vissza a json kérés
print("Temperature min J+1 : "..val_Tmin)
print("Temperature max J+1 : "..val_Tmax)
print("Icon : "..icon.." "..prev)
print("Summary : "..summary)
print("Previsions : "..forecast)
end
end
-----------------------------------------------------------------------------
commandArray[#commandArray + 1] = {['Variable:octa'] = tostring(Octa)}
if ( WeatherStation == "O" ) then -- Factor of mitigation for the cloud layer
-------- Ogimet --------
Kc=1-0.75*math.pow(Octa/8,3.4)
else
-------- Dark Sky --------
Kc=1-0.75*math.pow(Octa/100,3.4) -- Remélem ez így jó
end
if ( sunAltitude > 1 ) then -- Below 1° of Altitude , the formulae reach their limit of precision.
directRadiation = RadiationAtm * math.pow(0.6,M) * sinusSunAltitude
scatteredRadiation = RadiationAtm * (0.271 - 0.294 * math.pow(0.6,M)) * sinusSunAltitude
totalRadiation = scatteredRadiation + directRadiation
Lux = totalRadiation / 0.0079 -- Radiation in Lux. 1 Lux = 0,0079 W/m²
weightedLux = Lux * Kc -- radiation of the Sun with the cloud layer
elseif ( sunAltitude <= 1 and sunAltitude >= -7 ) then -- apply theoretical Lux of twilight
directRadiation = 0
scatteredRadiation = 0
arbitraryTwilightLux=arbitraryTwilightLux-(1-sunAltitude)/8*arbitraryTwilightLux
totalRadiation = scatteredRadiation + directRadiation + arbitraryTwilightLux
Lux = totalRadiation / 0.0079 -- Radiation in Lux. 1 Lux = 0,0079 W/m²
weightedLux = Lux * Kc -- radiation of the Sun with the cloud layer
elseif ( sunAltitude < -7 ) then -- no management of nautical and astronomical twilight...
directRadiation = 0
scatteredRadiation = 0
totalRadiation = 0
Lux = 0
weightedLux = 0 -- should be around 3,2 Lux for the nautic twilight. Nevertheless.
end
if ( DEBUG == 1 ) then
if ( WeatherStation == "O" ) then
-------- Ogimet --------
print("Ogimet")
print("Station SYNOP = " .. WMOID)
else
print("Dark Sky")
end
print( Octa .. " Octa")
print("Kc = " .. Kc)
print("Direct Radiation = ".. round(directRadiation,2) .." W/m²")
print("Scattered Radiation = ".. round(scatteredRadiation,2) .." W/m²")
print("Total radiation = " .. round(totalRadiation,2) .." W/m²")
print("Total Radiation in lux = ".. round(Lux,2).." Lux")
print("and at last, Total weighted lux = ".. round(weightedLux,2).." Lux")
end
-----------------------------------------------------------------------------
if ( tonumber(otherdevices_svalues['Lux'])+round(weightedLux,0) > 0 ) then -- No update if Lux is already 0. So lastUpdate of the Lux sensor will keep the time when Lux has reached 0. (Kind of timeofday['SunsetInMinutes'])
commandArray[#commandArray + 1]={['OpenURL']="http://"..localhost.."/json.htm?param=udevice&type=command&idx="..idxLux.."&nvalue=0&svalue="..tostring(round(weightedLux,0)) }
end
commandArray[#commandArray + 1]={['OpenURL']="http://"..localhost.."/json.htm?param=udevice&type=command&idx="..idxSolarAzimuth.."&nvalue=0&svalue="..tostring(round(azimuth,0)) }
commandArray[#commandArray + 1]={['OpenURL']="http://"..localhost.."/json.htm?param=udevice&type=command&idx="..idxSolarAltitude.."&nvalue=0&svalue="..tostring(round(sunAltitude,0)) }
if ( WeatherStation == "O" ) then
-------- Ogimet --------
commandArray[#commandArray + 1]={['OpenURL']="http://"..localhost.."/json.htm?param=udevice&type=command&idx="..idxCloud.."&nvalue=0&svalue="..tostring(round(Octa*100/8,0)) }
else
-------- Dark Sky --------
commandArray[#commandArray + 1]={['OpenURL']="http://"..localhost.."/json.htm?param=udevice&type=command&idx="..idxCloud.."&nvalue=0&svalue="..tostring(round(Octa,0)) }
end
-----------------------------------------------------------------------------
if ( DEBUG == 2 ) then
logDEBUG=os.date("%Y-%m-%d %H:%M:%S",os.time())
logDEBUG=logDEBUG.." Azimuth:" .. azimuth .. " Height:" .. sunAltitude
logDEBUG=logDEBUG.." Octa:" .. Octa.." KC:".. Kc
logDEBUG=logDEBUG.." Direct:"..directRadiation.." inDirect:"..scatteredRadiation.." TotalRadiation:"..totalRadiation.." LuxCloud:".. round(weightedLux,2)
os.execute('echo '..logDEBUG..' >>logSun.txt') -- compatible Linux & Windows
end
end
return commandArrayAcCEsS (https://www.metalenciklopedia.hu)
-
AcCEsS
senior tag
Szívat a Dark Sky féle felhőkitakarás infó. Tegnap is volt egy olyan időszak, amikor kék, tiszta ég volt egy rövid ideig, de a lekért octa 82% felhősödési értéket adott vissza (a jó infó csak késve érkezett meg). Ma reggel meg a Domoticz nem kapcsolta le az állólámpánkat, pedig belőttem, hogyha már kellően világos van, (kb. 3000 lux külső fényerő) akkor kapcsoljon má' le, ne fogyassza azt a kőkemény 18 wattot feleslegesen, höh! Meglepődve láttam, hogy reggel fél nyolckor kb. 1600 lux fényerőről van infóm, pedig már elég világos volt. Ja, és a webes felület teljesen más, jónak tűnő értéket mutatott! Most volt egy kis időm foglalkozni a dologgal, és szerintem megvan a hiba oka. A Dark Sky a megadott koordináták alapján kiszámolt időzónát hiába adja vissza válaszként jól (Europe/Budapest), a küldött adat unix timestampje UTC szerinti. Azaz 1 órával korábbi infókat küld vissza, azaz reggel 8-kor még csak a 7 órás infók érkeztek meg. Legalábbis szerintem. Megnéztem az API leírását és lehet olyan módon is kérést küldeni, hogy a kért időpontra vonatkozó értékeket fogja visszaadni. Ezért a szkriptben lévő sort módosítottam, így az aktu idő is belekerült a kérésbe.
Ezt a sort:
cmd='curl -s "https://api.darksky.net/forecast/'..dsAPIkey..'/'..coordinates..'?lang=hu&units=ca&exclude=hourly,flags"'
módosítottam erre:
cmd='curl -s "https://api.darksky.net/forecast/'..dsAPIkey..'/'..coordinates..','..("%04d-%02d-%02dT%02d:%02d:%02dZ"):format(time.year, time.month, time.day, time.hour, time.min, time.sec)..'?lang=hu&units=ca&exclude=hourly,flags"'
Most jónak tűnik minden, de azért még tesztelem.
[ Szerkesztve ]
AcCEsS (https://www.metalenciklopedia.hu)
-
layerke
aktív tag
Nem feltétlenül kell a fizikai kapcsoló, csak annyi a nehézség ebben az esetben, hogy kényelmetlenebb hozzáadni a csomópontot a hálózathoz. Van egy bind gomb a redőnyvezérlőn és van egy tanulás gomb a gateway-en is (nekem beépített akksis gatewayem van, így viszem ahova akarom).
Én így tanítom be:
gatewayt kiveszem a domoticzot futtató gépből
elviszem az új csomóponthoz
gatewayen tanulás gombot megnyomom, ekkor villogni kezd a led
megnyomom a csomóponton is a bind gombot
összebarátkoznak
kész.Redőnyvezérlőnél annyiból lesz nehezebb ha nincs kapcsolód hozzá, hogy nyitott doboznál kell megnyomnod feszültség alatt a bind gombot és az nem biztonságos annyira. A bind gomb ki van vezetve a FEL irány kapcsolójára, ezért azzal is fel lehet tanítani (egyszerűbb és biztonságosabb).
ui: ezeket aeotec gateway és fibaro node-ok esetén írom, a többit nem ismerem, de nagyon hasonló mind
-
Flashy
veterán
az is rendben volt, az 5G másik SSID-n megy de ki is kapcsoltam arra az időre.
viszont további tesztek alapján az derült ki hogy egyszerűen ilyen szar a wifije. ha odaviszem a routerrel egy szobába, akkor jó, de egy emelettel lejjebb (családi ház) szinte pontosan a router alatt már nem jó, nem is látja. na mindegy, majd jelerősítővel megoldom. -
layerke
aktív tag
Megfagyott nálam is többször, úgyhogy otthagytam a domoticzot egyelőre. Migráltam egy hét alatt a teljes rendszeremet egy másik kontrollerre, ami egyelőre megoldotta a gondjaimat. Meg vettem egy robotfűnyírót, amit a domoticzba nem tudok integrálni, az új rendszer pedig simán viszi.
Meg van az előnye, ha az embernek van 5 számítógépe és 4 raspberryje[ Szerkesztve ]
-
layerke
aktív tag
iobroker a jelenlegi befutó. Őrült mennyiségű adatot képes kezelni, nem túl lightweigth (node packagebe van minden, szóval eszi a memóriát), de nem érdekel, van erő ha kell. Kissé nehézkes rendszer a kezdetekben, mert nincs gui készen, magadnak kell összerakni. Örvendetes, hogy van hozzá kész szerkesztő mindenre kiterjedően, gondolok itt css-re akár. Minden további nélkül meg lehet szerkeszteni külön megjelenítőkre a képeket, pl telefonra kisebb dolgokat, fontosakat, tabletre vagy ipadre meg nagyobb felbontást, mozgó dolgokkal, gesztusvezérléssel.
Nekem csak zwave és mysensors eszközeim vannak, plusz ami előfordul a házban, lg tv, denon erősítő, robotfűnyíró, kodi, stb. Minden megy szépen, egy kattintásra beállítható, hogy mi és hogyan jusson át influxdb-be, jelenleg ~1900 adat kerül mentésre adatbázisba néhány másodpercenként vagy érték változásakor.
[ Szerkesztve ]
-
vampire17
addikt
Szóval a szükséges hardverek:
Serial Port RS485 to WiFi Device Server Module Elfin-EW11
Peacefair AC Power Meter Energy Meter
Összesen kb 7600 Ft. (amúgy biztosan olcsóbb összetevőkből is kijönne, de sztm így sokkal egyszerűbb, kevesebb a barkácsolás)
A bekötés:
A Peacefair bal oldalán található 4 csatlakozási lehetőség a fázis, a nulla és a lakatfogó csatlakozója. Ezt a rajz alapján kell bekötni, értelemszerűen. Az áramot lehet fixen is bekötni, én egy villásdugóra kötöttem.
A jobb oldalon van az RS485 és az 5V+GND kivezetés. Ide kell kötni az Elfin-EW11-et. Ezt kétféleképp tehetjük meg. Ugye az Elfin-EW11-en csak egy RJ-45 aljzat van, ezért vagy veszünk hozzá egy átalakítót (ami csavaros formára alakítja) vagy szimplán levágunk egy Patch kábel egyik végét és azt kötjük a Peacefair-be. (én ezt az utóbbit tettem)
Itt figyelni kell a színekre:
"B" szerinti kötésű Patch kábel esetén:
Kékfehér + zöld: RS485 + és -
Barnafehér + barna: 5V + GNDEzzel a bekötés kész is.
Lássuk a konfigot!
Az Elfin-EW11 ha áramot kap, egyből indul, és AP módban van, tehát egy mobillal tudunk hozzá csatlakozni.
A default IP-je 10.10.100.254, default acc/pass: adminÁllítsuk át STA módba, illetve csatlakozzunk a saját Wifi hálónkhoz. A MAC alapján megtaláljuk a routerünk DHCP leases között, ha DHCP-t használunk.
Ezután már elérjük local hálón is a cuccot.
Most állítsuk be a serial oldalt.
A Peacefair leírásában megtalálható a helyes beállítás:
Baud Rate 9600
Data Bit 8
Stop Bit 1
Parity noneA protocolt állítsuk "Modbus"-ra!
Ezzel kész is vagyunk.
Én domoticzot használok megjelenítésre, szóval a továbbiak erre vonatkoznak!
Először a Domoticz Modpus pluginnal próbálkoztam, de nem tudtam életet lehelni belé, szóval végül Node-Red lett a befutó.
A Node Red-hez telepíteni kell a Modbus Node-okat. Ha ez megvan, akkor az alábbi konfigra lesz szükség:
Kell egy Inject, ami majd a lekéréseket kéri (erre lehet pl tenni repeat-et, így automatán frissül. Nálam az interval 10 sec), kell egy function node, aminek megmondod, honnan olvasson és mit. Ezt az alábbi kóddal kell feltölteni:
msg.payload = {
'fc': 4,
'unitid': 1,
'address': 0x0000 ,
'quantity': 10,
} ;
return msg;Az fc megmondja, melyik registereket olvassa (Input Registers), az unitid, hogy melyik eszközt, az address, hogy honnan kezdjen olvasni, a quantity pedig, hogy hány regisztert. Ugye a Peacefair leírásában benne van, hogy 0x0000-0x0009-ig vannak az adatok, tehát én így állítottam be.
Ezt hozzá kell kapcsolni egy "Modbus Flex Getter" Node-hoz, ahol fel kell venni szervernek az Elfin-EW11-et. IP egyértelmű, port pedig alapból a 8899, de ezt az Elfin-ben bármire átírhatod. Minden egyéb maradhat defaulton.
Ezután következik az, hogy a kapott adatokat emészhetővé kell tenni a Domoticz számára. Én minden érték számára saját funktion-t csináltam, de lehet egyben is, ízlés kérdése.
Lássunk egyet, mondjuk a feszültséget:
var voltage=msg.payload[0];
voltage = voltage/10;
voltage = voltage.toString();
msg.payload = {"idx": 109, "nvalue": 0, "svalue": voltage}
return msg;A msg.payload[0] az első regiszter. a kapcsos zárójelbe megy majd a többi, ugye értelemszerűen 1,2,3...stb. Ugye először osztom 10-el, hogy jó legyen a formátum (más értéknél más lehet az osztó, vagy nem is kell), majd pedig a változót string-é alakítom, mert a Domoticz csak így eszi meg. A kimenetemhez hozzáteszem a Domoticzban létrehozott MQTT Dummy kapcsolóm IDX-ét, az "svalue"-ba pedig beteszem a föntebb mókolt változót.
Itt egy kép a teljes Node-Red ről:
Ez után ezt belevezetem egy MQTT output node-ba, ahol a topicom "Domoticz/in"
Domoticz oldalon jönnek az adatok. Ennyi igazaból
Ha valami nem kerek, kérdezz(etek) bátran!
[ Szerkesztve ]
-
LógaGéza
addikt
Köszönöm, a Shelly tetszik, lehet rendelek is egy csomaggal
Fogyasztásmérős aljazból a Blitzwolf BW-SHP6-t nézegessem? Mennyire lehet vele pontosan monitorozni?
"Go to work, get married, have some kids, pay your taxes, pay your bills, watch your tv, follow fashion, act normal, obey the law, and repeat after me: I AM FREE"
Új hozzászólás Aktív témák
- Kormányok / autós szimulátorok topicja
- Autós topik
- Politika
- Otthoni hálózat és internet megosztás
- Késik a következő S24 Ultra kamerafrissítés?
- Google Pixel 8 Pro - mestersége(s) az intelligencia
- Redmi Note 12 Pro - nem tolták túl
- Battlefield 2042
- Windows 11
- Milyen okostelefont vegyek?
- További aktív témák...