maybe fixed
Sfrjoshpro opened this issue · 3 comments
using auth app and two way maybe im not catching thing right
woke up to this error
Traceback (most recent call last):
File "main.py", line 124, in <module>
onoffH(wyzeclient,"Heat")
File "main.py", line 80, in onoffH
toggleh(false,wyzeclient,type)
File "main.py", line 36, in toggleh
plug = client.plugs.info(device_mac='7C78B272C3F0-0002')
File "/home/josh/.local/lib/python3.8/site-packages/wyze_sdk/api/devices/plugs.py", line 31, in info
plugs = [_plug for _plug in self._list_plugs() if _plug['mac']
File "/home/josh/.local/lib/python3.8/site-packages/wyze_sdk/api/devices/plugs.py", line 14, in _list_plugs
return [device for device in super()._list_devices(
File "/home/josh/.local/lib/python3.8/site-packages/wyze_sdk/api/base.py", line 73, in _list_devices
return self._api_client().get_object_list()["data"]["device_list"]
TypeError: 'NoneType' object is not subscriptable
had this error yesterday
Traceback (most recent call last): File "main.py", line 124, in <module> onoffH(wyzeclient,"Heat") File "main.py", line 77, in onoffH toggleh(true,wyzeclient,type) File "main.py", line 36, in toggleh plug = client.plugs.info(device_mac='7C78B272C3F0-0002') File "/home/josh/.local/lib/python3.8/site-packages/wyze_sdk/api/devices/plugs.py", line 45, in info if "data" in switch_state_timer.data and switch_state_timer.data['data'] is not None: AttributeError: 'NoneType' object has no attribute 'data'
`from ctypes.wintypes import HMODULE
from datetime import datetime, timedelta
from time import sleep, time
from datetime import datetime
from influxdb_client import InfluxDBClient, Point, WritePrecision
from influxdb_client.client.write_api import SYNCHRONOUS
import os
from sympy import false, round_two, true
from wyze_sdk import Client
from wyze_sdk.errors import WyzeApiError
=======
on = 1
token = "-=="
org = ""
bucket = ""
rh = ""
wyzeclient = Client(email='', password='')
initDate = datetime.now().day
You can generate an API token from the "API Tokens Tab" in the UI
def toggleh(T,wyzeclient,type):
client = wyzeclient
if(type == "Heat"):
try:
plug = client.plugs.info(device_mac='')
s = plug.is_on
plug2 = client.plugs.info(device_mac='')
s2 = plug2.is_on
print("testttt" + str(s2))
if (T == False) and ( s == True):
client.plugs.turn_off(device_mac=plug.mac, device_model=plug.product.model, after=timedelta(milliseconds=0))
print("heater off")
elif(T == True) and ( s == False):
client.plugs.turn_on(device_mac=plug.mac, device_model=plug.product.model)
plug = client.plugs.info(device_mac=plug.mac)
print("heater on")
except WyzeApiError as e:
# You will get a WyzeApiError if the request failed
print(f"Got an error: {e}")
elif(type == "Rh"):
try:
plug = client.plugs.info(device_mac='')
s = plug.is_on
plug2 = client.plugs.info(device_mac='')
s2 = plug2.is_on
print("testttt" + str(s2))
if (T == False) and ( s == True):
client.plugs.turn_off(device_mac=plug.mac, device_model=plug.product.model, after=timedelta(milliseconds=0))
print("Rh off")
elif(T == True) and ( s == False):
client.plugs.turn_on(device_mac=plug.mac, device_model=plug.product.model)
plug = client.plugs.info(device_mac=plug.mac)
print("Rh on")
except WyzeApiError as e:
# You will get a WyzeApiError if the request failed
print(f"Got an error: {e}")
## print("All Set")
def onoffH(wyzeclient,type):
print(rh)
if(type =="Heat" and rh <= 76.5):
toggleh(true,wyzeclient,type)
elif(type =="Heat" and rh >= 77.0):
toggleh(false,wyzeclient,type)
elif(type =="Rh" and rh <= 73.5):
toggleh(true,wyzeclient,type)
elif(type =="Rh" and rh >= 74.0):
toggleh(false,wyzeclient,type)
def checkWyze():
client = Client(email='', password='')
try:
response = client.devices_list()
for device in client.devices_list():
print(f"mac: {device.mac}")
print(f"nickname: {device.nickname}")
print(f"is_online: {device.is_online}")
print(f"product model: {device.product.model}")
except WyzeApiError as e:
# You will get a WyzeApiError if the request failed
print(f"Got an error: {e}")
while on !=0:
with InfluxDBClient(url="http://127.0.0.1:", token=token, org=org) as infclient:
query_api = infclient.query_api()
query = ''
result = query_api.query(org=org, query=query)
results = []
for table in result:
for record in table.records:
results.append((record.get_field(), record.get_value()))
rh = record.get_value()
rh = float(rh)
# rh = rh*100
rh = round(rh,1)
print("Temp is.... " + str(rh))
onoffH(wyzeclient,"Heat")
infclient.close()
with InfluxDBClient(url="http://127.0.0.1:", token=token, org=org) as infclient:
query_api = infclient.query_api()
query = ''
result = query_api.query(org=org, query=query)
results = []
for table in result:
for record in table.records:
results.append((record.get_field(), record.get_value()))
rh = record.get_value()
rh = float(rh)
rh = rh*100
rh = round(rh,1)
print("humidy is.... " + str(rh))
onoffH(wyzeclient,"Rh")
test = datetime.now().day
if(initDate < datetime.now().day):
wyzeclient.refresh_token()
initDate = datetime.now().day
print("Refreshed")
else:
print("Refresh Not Needed")
sleep(30)
`
remove any sensitive info
I updated my code. I was plugging 2 plug status and think that errored it out. It ran just fine last night. Will keep posted.
But maybe need to add non type error checking 🤷♂️ idk