Witam. Nie wiem gdzie ten temat umieścić więc tutaj go dam :). napisałem sobie program w arduino do mierzenia temperatur pod esp wemos d1 mini. Programik działa tylko chciałbym go przerobić pod Homa i za bardzo nie wiem jak to zrobić. jak ktoś ma jakieś pomysły to proszę o pomoc.
Program z arduino
include <Wire.h>
include <LiquidCrystal_I2C.h>
include <OneWire.h>
include <DallasTemperature.h>
#define ONE_WIRE_BUS 5
#define SENSORS_NUM 8OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
const byte address[SENSORS_NUM][8] PROGMEM = {
0x28, 0xDE, 0x9E, 0X79, 0xA2, 0x1, 0x3, 0x78,
0x28, 0xE, 0xDF, 0x17, 0x1, 0x0, 0x0, 0x29};
//LiquidCrystal_I2C lcd(0x27, 20, 2); // W zależności od użytej biblioteki…
LiquidCrystal_I2C lcd(0x4E / 2, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);byte skull_1[8] = { B00000, B00001, B00011, B00011, B00011, B00010, B01011, B11001 };
byte skull_2[8] = { B11111, B11111, B11111, B11111, B01110, B00100, B01110, B11011 };
byte skull_3[8] = { B00000, B10000, B11000, B11000, B11000, B01000, B11010, B10011 };
byte skull_4[8] = { B00100, B00000, B00000, B00001, B00001, B00100, B11000, B01000 };
byte skull_5[8] = { B11111, B10101, B00000, B01010, B11111, B11111, B00000, B00000 };
byte skull_6[8] = { B00100, B00000, B00000, B10000, B10000, B00100, B00011, B00010 };// set the LCD address to 0x27 for a 16 chars and 2 line displayvoid setup()
{// Prepare LCD lcd.begin(20, 2); lcd.createChar(1, skull_1); lcd.createChar(2, skull_2); lcd.createChar(3, skull_3); lcd.createChar(4, skull_4); lcd.createChar(5, skull_5); lcd.createChar(6, skull_6); lcd.clear(); // Start up screen { lcd.setCursor(1, 0); lcd.write(1); lcd.write(2); lcd.write(3); lcd.setCursor(1, 1); lcd.write(4); lcd.write(5); lcd.write(6); lcd.setCursor(20 - 4, 0); lcd.write(1); lcd.write(2); lcd.write(3); lcd.setCursor(20 - 4, 1); lcd.write(4); lcd.write(5); lcd.write(6);
lcd.backlight(); //Turns backlight on
sensors.begin();
lcd.setCursor(0,0);lcd.setCursor(5, 0); lcd.print("Basenmierz"); delay(3000); lcd.setCursor(6, 1); lcd.print(" :) "); delay(3000); }
}
void loop()
{
sensors.requestTemperatures();//Read first sensor
float temp = sensors.getTempCByIndex(0);//Print first sensor results
lcd.setCursor (0, 0 );
lcd.print("Temp solara “);
lcd.print(temp);
lcd.print(” ");//Read second sensor
temp = sensors.getTempCByIndex(1);//Print second sensor result
lcd.setCursor (0, 1 );
lcd.print("Temp wody “);
lcd.print(temp);
lcd.print(” ");//Wait 0.1 sec
delay(100);
}
Coś kombinowałem, ma problem z wyświetlaczem (esp powinno wyświetlać temperatury na wyświetlaczu i wysyłać do homa) . Wyświetlacz to oled taki :WEH002002ARPP5N00001 | WINSTAR Wyświetlacz OLED alfanumeryczny| 161193
code z homa do tego programu moje wypociny hehe
esphome:
name: basen
platform: ESP8266
board: d1_mini
wifi:
networks:
- ssid: "Bokhkjhkbi"
password: "pufocekkhjk182"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Basen Fallback Hotspot"
password: "LIP4UmoU9Azs"
captive_portal:
# Enable logging
logger:
# Enable Home Assistant API
api:
password: "1234567890"
ota:
password: "1234567890"
i2c:
sda: D2
scl: D1
dallas:
- pin: D7
sensor:
- platform: dallas
address: 0xFA02189245736F25
id: tempdallas
name: "Temperatura Dallas"
on_value_range:
- above: 68 # Włączenie alarmu gdy osiągnie zadaną temeraturę
then:
- switch.turn_off: buzer
- switch.turn_on: czerwona
- below: 67 # Wyączenie alarmu gdy osiągnie zadaną temeraturę
then:
- switch.turn_on: buzer
- switch.turn_on: czerwona
# internal: true
display:
- platform: lcd_pcf8574
dimensions: 20x2
address: 0x4E
lambda: |-
it.printf(0, 0, "Temperatura:%.1f", id(tempdallas).state);
it.printf(0, 1, "Alarm = >60.0:%.2f", id(tempdallas).state);
# DIOAD LED CZEROWNA OD ALARMU
##output:
# - platform: esp8266_pwm
# id: led_alarm
# pin: D4
switch:
- platform: gpio
pin: D3
name: "Alarm"
id: buzer
- platform: gpio
pin: D0
name: "czerwona"
id: czerwona
binary_sensor:
- platform: gpio
pin: 16
name: "Przycisk LED Alarm"
on_press:
then:
- switch.toggle: buzer
# Example configuration entry
status_led:
pin: GPIO2