Hallo,
vorneweg möchte ich sagen, ich bin totaler Anfänger und nicht seht tief in der Materie.
ich möchte die Klimaanlge per IR Steuern. Das Auslesen der Fernbedienung klappt aber die Klima schaltet sich beim senden der Befehle nicht ein. Ein test mit einem LG Fernseher hat wunderbar geklappt (irsender.sendnec -siehe unten).
Ich nutze das ESP8266 Board.
Über die Beispiel app Simple Receiver bekomme ich diese Werte der FB:
Protocol=Samsung Address=0xB24D Command=0x21B2 Raw-Data=0x21DEB24D 48 bits LSB first
Send with: IrSender.sendSamsung(0xB24D, 0x21B2, <numberOfRepeats>);
und (beim 2. mal Drücken des Ein/Aus Knopfes der FB)
IrSender.sendSamsung(0xB24D, 0x6B2, <numberOfRepeats>);
Es wechselt dann immer hin und her mit den obigen 2 Ausgaben.
Ich habe versucht die beiden Codes einzeln, nacheinander, in umgekehrter Reihenfolge zu senden und in diversen anderen Versionen: kein Erfolg.
Ich habe die ir DumpDemo geteset, welche mir dieses h ier ausgibt(kein Ahnung ob oder wie man das benutzen könnte)
08:29:13.577 -> +12,-10 +12,-31 +12,-10 +11,-10
08:29:13.609 -> +12,-31 +12,-32 +11,-10 +12,-31
08:29:13.609 -> +12,-10 +12,-31 +12,-31 +12,-31
08:29:13.609 -> +12,-31 +12,-10 +12,-31 +12,-31
08:29:13.609 -> +12,-31 +12,-10 +12,-10 +11,-10
08:29:13.609 -> +12,-10 +12,-31 +12,-10 +11,-10
08:29:13.609 -> +12,-31 +13,-30 +12,-31 +12,-10
08:29:13.609 -> +12,-10 +12,- 9 +12,-10 +12,- 9
08:29:13.609 -> +12,-10 +13,- 9 +12,- 9 +13,-30
08:29:13.609 -> +12,-32 +12,-31 +11,-32 +12,-31
08:29:13.609 -> +12
08:29:13.609 -> Sum: 1741
08:29:13.609 -> Raw result in microseconds - with leading gap
08:29:13.609 -> rawData[100]:
08:29:13.641 -> -3276750
08:29:13.641 -> +4450,-4350
08:29:13.641 -> + 550,-1550 + 600,- 500 + 600,-1550 + 600,-1550
08:29:13.641 -> + 600,- 500 + 600,- 500 + 600,-1500 + 600,- 500
08:29:13.641 -> + 600,- 500 + 600,-1550 + 600,- 500 + 550,- 500
08:29:13.641 -> + 600,-1550 + 600,-1600 + 550,- 500 + 600,-1550
08:29:13.641 -> + 600,- 500 + 600,-1550 + 600,-1550 + 600,-1550
08:29:13.641 -> + 600,-1550 + 600,- 500 + 600,-1550 + 600,-1550
08:29:13.641 -> + 600,-1550 + 600,- 500 + 600,- 500 + 550,- 500
08:29:13.673 -> + 600,- 500 + 600,-1550 + 600,- 500 + 550,- 500
08:29:13.673 -> + 600,-1550 + 650,-1500 + 600,-1550 + 600,- 500
08:29:13.673 -> + 600,- 500 + 600,- 450 + 600,- 500 + 600,- 450
08:29:13.673 -> + 600,- 500 + 650,- 450 + 600,- 450 + 650,-1500
08:29:13.673 -> + 600,-1600 + 600,-1550 + 550,-1600 + 600,-1550
08:29:13.673 -> + 600
08:29:13.673 -> Sum: 87050
08:29:13.673 ->
08:29:13.673 -> Result as internal ticks (50 us) array - compensated with MARK_EXCESS_MICROS=20
08:29:13.673 -> uint8_t rawTicks[99] = {89,87, 11,31, 12,10, 12,31, 12,31, 12,10, 12,10, 12,30, 12,10, 12,10, 12,31, 12,10, 11,10, 12,31, 12,32, 11,10, 12,31, 12,10, 12,31, 12,31, 12,31, 12,31, 12,10, 12,31, 12,31, 12,31, 12,10, 12,10, 11,10, 12,10, 12,31, 12,10, 11,10, 12,31, 13,30, 12,31, 12,10, 12,10, 12,9, 12,10, 12,9, 12,10, 13,9, 12,9, 13,30, 12,32, 12,31, 11,32, 12,31, 12}; // Protocol=Samsung Address=0xB24D Command=0x21B2 Raw-Data=0x21DEB24D 48 bits LSB first
08:29:13.737 ->
08:29:13.737 -> Result as microseconds array - compensated with MARK_EXCESS_MICROS=20
08:29:13.737 -> uint16_t rawData[99] = {4430,4370, 530,1570, 580,520, 580,1570, 580,1570, 580,520, 580,520, 580,1520, 580,520, 580,520, 580,1570, 580,520, 530,520, 580,1570, 580,1620, 530,520, 580,1570, 580,520, 580,1570, 580,1570, 580,1570, 580,1570, 580,520, 580,1570, 580,1570, 580,1570, 580,520, 580,520, 530,520, 580,520, 580,1570, 580,520, 530,520, 580,1570, 630,1520, 580,1570, 580,520, 580,520, 580,470, 580,520, 580,470, 580,520, 630,470, 580,470, 630,1520, 580,1620, 580,1570, 530,1620, 580,1570, 580}; // Protocol=Samsung Address=0xB24D Command=0x21B2 Raw-Data=0x21DEB24D 48 bits LSB first
08:29:13.800 ->
08:29:13.800 -> uint16_t address = 0xB24D;
08:29:13.800 -> uint16_t command = 0x21B2;
08:29:13.800 -> uint32_t data = 0x21DEB24D;
08:29:13.800 ->
08:29:13.800 -> Pronto Hex as string
08:29:13.800 -> char prontoData[] = "0000 006D 0032 0000 00AC 00A7 0016 003B 0018 0012 0018 003B 0018 003B 0018 0012 0018 0012 0018 0039 0018 0012 0018 0012 0018 003B 0018 0012 0016 0012 0018 003B 0018 003D 0016 0012 0018 003B 0018 0012 0018 003B 0018 003B 0018 003B 0018 003B 0018 0012 0018 003B 0018 003B 0018 003B 0018 0012 0018 0012 0016 0012 0018 0012 0018 003B 0018 0012 0016 0012 0018 003B 001A 0039 0018 003B 0018 0012 0018 0012 0018 0011 0018 0012 0018 0011 0018 0012 001A 0011 0018 0011 001A 0039 0018 003D 0018 003B 0016 003D 0018 003B 0018 06C3 ";
Mein Programmcode sieht so aus:
#include <ESP8266WiFi.h>
#include <Arduino.h>
#include "PinDefinitionsAndMore.h"
#include <IRremote.h>
const char* ssid = "rpc";
const char* password = "[mein pw]";
int ledPin = D4;
WiFiServer server(80);
void setup() {
Serial.begin(115200);
delay(10);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
// Mit Wifi verbinden
Serial.print("Verbinden mit: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print("#");
}
Serial.println("");
Serial.println("WiFi verbunden");
// Start des Servers
server.begin();
Serial.println("Server gestartet");
// Print the IP address
Serial.print("Diese URL zum Verbinden aufrufen: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
IrSender.begin();
Serial.print(F("Ready to send IR signals at pin "));
Serial.println(IR_SEND_PIN);
}
void loop() {
Serial.flush();
// Prüfen, ob sich ein Client verbunden hat
WiFiClient client = server.available();
if (!client) {
return;
}
// Warten auf Daten vom Client
// Serial.println("new client");
while(!client.available()){
delay(1);
}
// Erste Zeile des Requests lesen
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// Match the request
int value = LOW;
if (request.indexOf("/LED=OFF") != -1) {
digitalWrite(ledPin, HIGH);
value = HIGH;
}
if (request.indexOf("/LED=ON") != -1) {
digitalWrite(ledPin, LOW);
value = LOW;
}
if (request.indexOf("/IR=1") != -1) {
IrSender.sendNEC(0x4, 0x8, 0);
}
if (request.indexOf("/IR=2") != -1) {
IrSender.sendSamsung(0xB24D, 0x6B2, 0);
}
if (request.indexOf("/IR=3") != -1) {
IrSender.sendSamsung(0xB24D, 0x21B2,0);
}
if (request.indexOf("/IR=4") != -1) {
IrSender.sendSamsung(0xB24D, 0x21B2, 0);
IrSender.sendSamsung(0xB24D, 0x6B2, 0);
}
if (request.indexOf("/IR=5") != -1) {
IrSender.sendSamsung(0xB24D, 0x6B2, 0);
IrSender.sendSamsung(0xB24D, 0x21B2, 0);
}
// Anfrage zurücksenden
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("Die LED ist: ");
if(value == HIGH) {
client.print("Aus");
} else {
client.print("An");
}
client.println("<br><br>");
client.println("<a href=\"/LED=ON\"\"><button>An </button></a>");
client.println("<a href=\"/LED=OFF\"\"><button>Aus </button></a><br />");
client.println("<br>");
client.println("<a href=\"/IR=1\"\"><button>Fernseher</button></a><br />");
client.println("<br>");
client.println("<a href=\"/IR=2\"\"><button>J 1</button></a><br />");
client.println("<br>");
client.println("<a href=\"/IR=3\"\"><button>J 2</button></a><br />");
client.println("<br>");
client.println("<a href=\"/IR=4\"\"><button>J 1+2</button></a><br />");
client.println("<br>");
client.println("<a href=\"/IR=5\"\"><button>J 2+1</button></a><br />");
client.println("<br>");
client.println("</html>");
delay(1);
}
Ich hoffe, jemand kann mir helfen
Jan