import network
import time
import urequests
import dht
import ssd1306
import usocket
from machine import Pin, I2C
# Configuração da rede Wi-Fi (substitua com suas configurações)
ssid = "Wokwi-GUEST"
password = ""
# Conectar-se à rede Wi-Fi
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(ssid, password)
print("Conectando ao Wi-Fi", end="")
while not wifi.isconnected():
print(".", end="")
time.sleep(1)
if wifi.isconnected():
print("\nConectado ao Wi-Fi")
# Obter informações do endereço IP
ip_info = wifi.ifconfig()
ip_address = ip_info[0]
subnet_mask = ip_info[1]
gateway = ip_info[2]
dns_server = ip_info[3]
# Exibir informações do endereço IP
print("Endereço IP:", ip_address)
print("Máscara de Sub-rede:", subnet_mask)
print("Gateway:", gateway)
print("Servidor DNS:", dns_server)
else:
print("Falha ao conectar ao Wi-Fi. Verifique as credenciais.")
# Configuração do servidor Zabbix
ZABBIX_URL = "http://45.180.33.254:8080/zabbix/api_jsonrpc.php" # Substitua pela URL do seu Zabbix
ZABBIX_USER = "Admin"
ZABBIX_PASSWORD = "zabbix"
# OIDs específicos do seu servidor Zabbix
TEMPERATURE_OID = "1.3.6.1.2.1.2.2.1.7.1"
HUMIDITY_OID = "1.3.6.1.2.1.2.2.1.7.2"
# Configuração do display OLED
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
# Configuração do sensor DHT22
dht_pin = Pin(12, Pin.IN)
dht_sensor = dht.DHT22(dht_pin)
# Função para enviar dados fictícios para o Zabbix via HTTP
def send_fake_data(temperature, humidity):
headers = {'Content-Type': 'application/json'}
# Substitua os dados e a estrutura JSON conforme necessário
data_temperature = {
"jsonrpc": "2.0",
"method": "item.update",
"params": {
"itemid": TEMPERATURE_OID,
"value": temperature,
},
"auth": None,
"id": 1,
}
data_humidity = {
"jsonrpc": "2.0",
"method": "item.update",
"params": {
"itemid": HUMIDITY_OID,
"value": humidity,
},
"auth": None,
"id": 1,
}
try:
response_temp = urequests.post(ZABBIX_URL, headers=headers, json=data_temperature, auth=(ZABBIX_USER, ZABBIX_PASSWORD))
response_hum = urequests.post(ZABBIX_URL, headers=headers, json=data_humidity, auth=(ZABBIX_USER, ZABBIX_PASSWORD))
if response_temp.status_code == 200 and response_hum.status_code == 200:
print("Dados fictícios de temperatura e umidade enviados com sucesso para o Zabbix")
else:
print("Erro ao enviar dados fictícios para o Zabbix")
except Exception as e:
print("Erro ao enviar dados fictícios para o Zabbix:", e)
## esse trecho de codigo o esp32 não estar lendo
def check_internet():
try:
# Tentar realizar um ping para o Google DNS (8.8.8.8)
addr = usocket.getaddrinfo("8.8.8.8", 80)[0][-1]
s = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM)
s.settimeout(1) # Defina um tempo limite curto para o ping
s.connect(addr)
return True
except Exception as e:
return False
# Loop principal
while True:
# Medir temperatura e umidade
dht_sensor.measure()
temperature = dht_sensor.temperature()
humidity = dht_sensor.humidity()
# Limpar o display OLED
oled.fill(0)
# Exibir se o ESP32 está conectado ao Wi-Fi no OLED
if wifi.isconnected():
oled.text('Conectado', 10, 05)
else:
oled.text('Desconectado', 10, 10)
# Exibir temperatura e umidade no OLED
oled.text('Temp: {:.2f}C'.format(temperature), 10, 20)
oled.text('Umidade: {:.2f}%'.format(humidity), 10, 35)
#Exibe o ip
oled.text('IP: {}'.format(ip_address), 10, 50)
# Atualizar o display OLED
oled.show()
# Exibir dados fictícios
print("Temperatura:", temperature)
print("Umidade:", humidity)
# Enviar dados fictícios para o Zabbix
send_fake_data(temperature, humidity)
# Aguardar um intervalo antes de realizar a próxima leitura
time.sleep(5)