nodeMCU Program vom Event

Hallo hab das Programm von gestern ein bisschen abgeändert (hab aber keine Ahnung davon :wink: )funktioniert soweit auch aber bin mir nicht sicher ob das so bast bzw. wie kann ich das senden der Werte zb auf 60sec ändern?

#include <Arduino.h>
#include <DHT.h>
#include <ESP8266WiFi.h>
#include <MQTT.h>


//nur hier Einstellungen ändern
#define MQTT_SERVER      "xyz"     //MQTT Server Adresse
#define MQTT_USERNAME    ""                   //MQTT Benutzer für Server (muss nur gesetzt werden wenn am Server vorhanden)
#define MQTT_KEY         ""                   //MQTT Password für Server (muss nur gesetzt werden wenn am Server vorhanden)
#define EINBAUORT        "xyz"      //Ort wo Sensor eingebaut ist
const char* ssid     =   "xyz";      //WiFi Namen
const char* password =   "xyz";        //WiFi Password
//nur hier Einstellungen ändern



DHT dht_sensor(D1, DHT22);

WiFiClient wifi_client;
MQTTClient mqtt_client;

void setup() {
  
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(D1, INPUT);


  Serial.begin(2000);

  dht_sensor.begin();

  WiFi.begin(ssid, password);

  mqtt_client.begin(MQTT_SERVER, wifi_client);


}

void loop() {

  delay(1000);   

  if(WiFi.status() != WL_CONNECTED) {
    Serial.println("Connecting to Wifi...");
    while(WiFi.status() != WL_CONNECTED) {
      Serial.print(".");
      delay(500);
    }
    Serial.println(" OK!");
  }

  if(!mqtt_client.connected()) {
    Serial.println("Connecting to MQTT...");
    while( !mqtt_client.connect(EINBAUORT, MQTT_USERNAME, MQTT_KEY)) {
      Serial.println(".");
      delay(500);
    }
    Serial.println(" OK!");

  }
 

digitalWrite(LED_BUILTIN, HIGH);
Serial.println("LED is on");

float temp = dht_sensor.readTemperature();
Serial.println(temp);

mqtt_client.publish(EINBAUORT"/Temperatur", String(temp));

delay(1000); 

digitalWrite(LED_BUILTIN, LOW);
Serial.println("LED is off");

float hum = dht_sensor.readHumidity();
Serial.println(hum);

mqtt_client.publish(EINBAUORT"/Luftfeuchtigkeit", String(hum));

delay(1000);  
}

Danke
gruß Stefan

Das delay(1000); in der letzten Zeile entsprechend größer machen.
Wenn es genau 60sec sein soll: delay(58000);
bb

danke werde ich gleich testen

Kann man die LED auch über Symcon ein- und ausschalten? Wenn ja, wie?

Ich habe für den MCU ESPHome verwendet. Die Erst-Einrichtung ist etwas umständlich. Zuerst muss Home Assistent auf einen Raspberry installiert werden. Anschließend kann das Addon ESPHome hinzugefügt werden.
In ESPHome kann dann ein neues Projekt angelegt werden (Name nur Kleinbuchstaben!). Dadurch wird eine Konfigurationsdatei angelegt. Dort können dann sehr einfach verschiedene Sensoren/Aktionen ergänzt werden.
In IP-Symcon kann im vorliegenden Beispiel mit folgenden Befehl die interne LED des MCU geschaltet werden:

RequestAction(99999, "OFF"); // "ON"

Die Konfigurationsdatei sieht wie folgt aus. Enthalten ist schon eine optionale feste IP für den MCU, Web-Server, MQTT, OTA-Update und natürlich der DHT22. Der Raspi mit ESPHome wird nur für das Aufspielen der Software auf den MCU benötigt. Danach kommuniziert der MCU nur noch über MQTT mit IP-Symcon.

esphome:
  name: event
  platform: ESP8266
  board: nodemcuv2

wifi:
  ssid: "XXXX"
  password: "XXXX"
  
  # Optional manual IP
  manual_ip: 
    static_ip: 192.168.99.99
    gateway: 192.168.99.88
    subnet:  255.255.255.0

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Event Fallback Hotspot"
    password: "Kk7xJ8dYQ8KB"

captive_portal:

# Enable logging
logger:

ota:

web_server:
  port: 80
  
mqtt:
  broker: 192.168.99.77
  port: 1883
  username: XXXX
  password: XXXX
  log_topic: NONE    # Log-Level: NONE, ERROR, WARN, INFO, DEBUG, VERBOSE (wie DEBUG aber mehr Meldungen)
  topic_prefix: MQTT/Event
  
  birth_message:     # optional: birth message
    topic: MQTT/Event/Start
    payload: online
 
  # LED an gpio_d4 über MQTT schalten
  on_message:
    - topic: MQTT/Event/switch/gpio_d4/state
      payload: 'ON'
      qos: 0
      then:
      - switch.turn_on: gpio_d4
    - topic: MQTT/Event/switch/gpio_d4/state
      payload: 'OFF'
      qos: 0
      then:
      - switch.turn_off: gpio_d4
 
sensor:
  - platform: dht
    pin: GPIO4 # D2
    temperature:
      name: "Temperature"
    humidity:
      name: "Humidity"
    update_interval: 30s  
    model: DHT22_TYPE2
    
# Digitaler Ausgang LED 
switch:
  - platform: gpio
    pin: D4
    name: "gpio_d4"
    id: gpio_d4   
    inverted: yes

Ich habe erst vor 3 oder 4 Wochen das erste Mal von ESPHome in diesem Form gehört und bin begeistert…