- gban: Ingyen kellene, de tegnapra
- Luck Dragon: Asszociációs játék. :)
- Geri Bátyó: Agglegénykonyha 6 – Néhány egyszerű tésztaétel
- urandom0: Új kedvenc asztali környezetem, az LXQt
- sellerbuyer: Nem veszélytelen a RAM duplázás de vajon megéri?
- Geri Bátyó: Agglegénykonyha 5 – Edények és konyhai eszközök
- aquark: A ló túloldalán (Intel-AMD szivatás)
- sziku69: Fűzzük össze a szavakat :)
- sellerbuyer: Milyen laptopot vegyek? Segítek: semmilyet!
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
Új hozzászólás Aktív témák
-
saja
csendes tag
Változtattam a kódon. Nincs benne órás várakozás, és a gomb figyelést egy másik szálon végzem, a kapcsolati ellenőrzés pedig "szinkron" működik. Előtte pedig még le is kérem a shelly kapcsoló relé státuszát (tehát nem kell mondjuk kétszer nyomni a gombot, hogy lekapcsolja a lámpát ha már fel van kapcsolva).
import netman
import urequests as requests
import uasyncio as asyncio
import dht11
from machine import Pin
print(asyncio.__version__)
led = Pin("LED", Pin.OUT)
button = Pin(14, Pin.IN, Pin.PULL_DOWN)
shellyIP = '192.168.0.140'
async def blinking():
while True:
led.on()
asyncio.sleep(0.3)
led.off()
asyncio.sleep(0.3)
def toggleLamp(lamp_state):
print("button clicked to turn " + lamp_state + " lamp")
switch_lamp = 'http://' + shellyIP + '/relay/0?turn=' + lamp_state
blink_task = asyncio.create_task(blinking())
try:
resp = requests.get(switch_lamp)
resp.close()
blink_task.cancel()
except:
blink_task.cancel()
led.on()
country = 'HU'
ssid = '<SSID>'
password = '*****'
wlan = netman.connectWifi(ssid,password,country)
async def listenButton(defaultLampState):
button_state = button.value()
switch_lamp = ''
lamp_state = defaultLampState
count = 0
while True:
if button_state == 1 and lamp_state == 'on':
lamp_state = 'off'
toggleLamp(lamp_state)
await asyncio.sleep_ms(200)
button_state = button.value()
if button_state == 1 and lamp_state == 'off':
lamp_state = 'on'
toggleLamp(lamp_state)
await asyncio.sleep_ms(200)
button_state = button.value()
await asyncio.sleep_ms(200)
async def listenButtonAndCheckConnection():
wlan_next = netman.checkConnection(wlan,ssid,password,country)
defaultLampState = 'off'
try:
resp = requests.get('http://' + shellyIP + '/relay/0')
print(resp.text)
parsedResp = resp.json()
print(parsedResp["ison"])
if parsedResp["ison"] == True:
defaultLampState = 'on'
resp.close()
except:
print("couldn't fetch shelly relay status")
asyncio.create_task(listenButton(defaultLampState))
while True:
await asyncio.sleep(1)
wlan_next = netman.checkConnection(wlan_next,ssid,password,country)
temp_humidity = dht11.getTemp()
json = """{temp: %s, humidity: %s}"""
async def serve(reader, writer):
print("create temperature data to serve")
data = """none"""
try:
temp_humidity = dht11.getTemp()
data = json % temp_humidity
except:
data = """undefined"""
resp = b"HTTP/1.0 200 OK\r\nContent-type: application/json\r\n\r\n" + "{JSON}\r\n".format(JSON=data)
l = await reader.read(256)
print(l)
led.on()
await writer.awrite(resp)
await asyncio.sleep_ms(200)
await writer.wait_closed()
led.off()
print("start event loop")
loop = asyncio.get_event_loop()
loop.create_task(asyncio.start_server(serve, "0.0.0.0", 80))
loop.create_task(listenButtonAndCheckConnection())
try:
loop.run_forever()
except KeyboardInterrupt:
print("closing")
loop.close()A netman.py kódját is kicsit alakítottam. Az ellenőrző függvény máshogy néz ki:
def checkConnection(wlan,ssid,password,country):
status = wlan.status()
print(status)
if status != 3:
print("connection lost")
wlan = tryToConnect(ssid,password,country)
return wlan
else:
print("connection ok")
time.sleep(0.2)
return wlan -
saja
csendes tag
Az egyik előző projektet amúgy is Erlang-ban tervezem átírni
. (Vagy c++ nyelven, pico sdk-val)
-
DEJVID
őstag
Hú de nem szeretek pythont olvasni
-
BigBlackDog
veterán
Ötletes!
Ha amiatt dobálja el a Wifit, mert régóta már fel van csatlakozva, akkor esetleg én annyival módosítanám, hogy óránként nem csak szükség esetén csatlakoznék fel a wifire, hanem mindenképpen bontanám és kiépíteném újra a kapcsolatot. Így mindig viszonylag "friss" a Wifi kapcsolat. Egyéb esetben, hiába van óránként ellenőrzés, megeshet, hogy szélsőséges esetben akár egy órát is offline az eszköz és csak ezután fog az ütemezett újracsatlakozás futni.
Új hozzászólás Aktív témák
Hirdetés
- Kormányok / autós szimulátorok topikja
- Milyen légkondit a lakásba?
- Nintendo Switch 2
- Apple iPhone Air - almacsutka
- Fényeskedjék: ROG Strix OLED XG32UCWMG monitor tesztje
- exHWSW - Értünk mindenhez IS
- gban: Ingyen kellene, de tegnapra
- Parkside szerszám kibeszélő
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- The Division 2 (PC, XO, PS4)
- További aktív témák...
- Hibátlan Apple iPad 10.9 2022 64GB + Apple iPad Smart Cover eladó! Garancia!
- Asus TUF Gaming A15 FA507 - 15,6"FHD 144Hz - Ryzen 7 7435HS - 16GB - 512GB SSD - RTX 4050 -2+ év gar
- T15p Gen2i 15.6" FHD IPS i7-11800H GTX 1650 32GB 1TB NVMe magyar vbill ujjlolv IR kam gar
- SAMSUNG AI Smart VA monitor 32" M7, 3840x2160, 16:9,
- TRUST GXT 498 Forta vezetékes fejhallgató mikrofonnal, PC, PS4, PS5, 3,5mm jack, fehér
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7500F 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- Apple Pad 5.generácio / 32GB / Wi-fi / 12Hó garancia
- LG 34GN850P-B - 34" Ívelt Nano IPS - 3440x1440 - 160Hz 1ms - G-Sync - FreeSync - HDR 400
- GYÖNYÖRŰ iPhone 13 128GB Starlight- 1 ÉV GARANCIA, Kártyafüggetlen,MS3435
- Telefon felvásárlás!! iPhone 14/iPhone 14 Plus/iPhone 14 Pro/iPhone 14 Pro Max
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest