Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
So sollte es aussehen, die "Lampe" geht erst wieder an wenn der rote Streifen weg ist.
*Debounce spielt bei dieser Variante keine große Rolle ( außer Du schaffst es das sich die scheibe wirklich "extremst" schnell dreht ) , hatte es mal Test weise auf 250 gestellt, da ich mal die Vermutung hatte das meine scheibe nicht ganz rund läuft. Lag aber dann an Staub vor dem Glas -.-
Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
Folgende Bauteile werden benötigt:
SW-420
Nodemcu
5V Netzteil ( Oder andere 5V Quelle in der nähe )
Jumper-Kabel ( female-female)
Kleinen Schraubendreher zum Einstellen
Holzschrauben
In meinem Fall habe ich IoBroker mit eingebunden um den Status meines Lichtschalters abzufragen, Script weiter unten!
Folgender Arduino-Code:
Diese Bibliotheken werden benötigt:
ESP8266WiFi.h ( Verbindungen ins Netzwerk )
PubSubClient.h ( MQTT )
Bitte Bibliotheken installieren!
C
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
int vibr_Pin =D1;
int zaehle = 0;
int stat = 1;
int interval=4000;
unsigned long previousMillis=0;
char tmp[100];
char ssid[] = "NETZWERKNAME"; // Deine SSID (name)
char pass[] = "PASSWORT"; // Dein WLAN PASSWORT
const char* mqtt_server = "192.168.178.62"; //Broker IP Address
const char* mqttUser = "iobroker"; //ANMELDENAME IOBROKER
const char* mqttPassword = "PASSWORT"; //IOBROKER PASSWORT
WiFiClient espClient;
PubSubClient client(espClient);
void connect_to_MQTT() {
client.setServer(mqtt_server, 1886);//MQTT SERVER + PORT
client.setCallback(callback);
if (client.connect("Esstisch" , mqttUser, mqttPassword)) {
Serial.println("Verbinde zum MQTT Server");
client.subscribe("tisch/sensor"); // TROPIC
} else {
Serial.println("zu MQTT Server nicht verbunden ");
}
}
void setup(){
Serial.begin(9600); //init serial 9600
connect_to_MQTT();
// Verbinden
Serial.print("Verbinde zu ");
Serial.println(ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
pinMode(vibr_Pin, INPUT); //SENSOR AUF INPUT
}
void loop(){
unsigned long currentMillis = millis();
client.loop();
if (!client.connected()) {
Serial.println("Keine Verbindung zum MQTT Server....");
connect_to_MQTT();
}
// Setze Variablen auf 0 wenn 4 Sekunden nichts passiert ist
if ((unsigned long)(currentMillis - previousMillis) >= interval){
zaehle = 0;
previousMillis = currentMillis;
//Serial.println("Zaehle ist nun 0"); // teste
}
long measurement =TP_init();
delay(10);
// Serial.print("measurment = ");
if (measurement > 300) {
zaehle++;
}
if(zaehle == 2 ){
//Sende MQTT Tropic zum IoBroker
client.publish("tisch/sensor/status",dtostrf(stat, 1, 2, tmp));
// Setze Variable auf 0
zaehle = 0;
// Zähle die Variable hoch
stat++;
delay(4000);
// Serial.println("Status gesendet und auf 0 gesetzt"); // teste
}
//Serial.println(measurement); // Testausgabe
}
long TP_init(){
delay(10);
long measurement=pulseIn (vibr_Pin, HIGH); //wait for the pin to get HIGH and returns measurement
return measurement;
}
void callback(char* topic, byte* payload, unsigned intlength)
{
Serial.print("Messageved in topic: ");
Serial.println(topic);
}
Alles anzeigen
Bitte passt das Arduino-Script an!
Jetzt das ganze auf euer [definition='27','0'][definition='27','0']NodeMCU[/definition][/definition] Flashen, mittel Arduino-IDE. Somit wäre der erste Teil geschafft.
Jetzt müssen wir alles zusammen bauen, hier mal ein Bild von meiner Installation.
Hab es bewusst ohne Gehäuse verbaut, so dämpft es nicht die Vibration! Ich habe mehrere Steckdosen unter meinem Esstisch, so habe ich eine direkte Stromquelle für meinen Controller!
Der Tisch ist selbst gebaut, daher ist es unter dem Tisch ein „wenig wüsst“
Du brauchst einen Token, diesen musst Du beim Telegram Adapter in den Einstellungen hinterlegen!
Nun musst Du nur noch in den Text2.Command gehen und folgendes Auswählen:
"Fragen über irgendwas"
Dein Trigger Wort hinterlegen:
Test zum beispiel.
Rechts steht: "Gerät- oder Variablen- ID"
Dort musst Du folgendes Script auswählen:
Code
var chat_id = getState("telegram.0.communicate.requestChatId").val;
sendTo('telegram.0', {
text: 'Ok, hier die Übersicht',
reply_markup: {
keyboard: [
['Licht', 'Zählerstand'],
['Temperatur', 'Fenster'],
['Internet'],
],
resize_keyboard: true,
one_time_keyboard: true
},
chatId: chat_id,
});
Alles anzeigen
Code
telegram.0.communicate.requestChatId = Deine Adapter Instanz!
Text: Dein Anzeigetext
keyboard: Deine Triggerwörter ( Diese musst Du im text2.command hinterlegen ( test siehe oben zum Beispiel)
Im Text2Command bei dem Trigger Wort ganz recht steht:
Antwort (%s wird mit Wert ersetzt)
Dort kannst Du einen Antwortsatz hinterlegen mit Variable:
"Gerade ist es %s°C warm" -> Wobei die Variable %s für den Wert steht.
Ist jetzt alles ein wenig die Kurzfassung, aber reicht zum einrichten, musst Du Dich mal langsam rantasten!