ESP266 Alexa ohne Skill :-)

Begonnen von rr725, 02 April 2017, 12:18:29

Vorheriges Thema - Nächstes Thema

rr725

Geiles Teil ESP8266 - ESP1  WLAN, frisst kaum Strom. Sketch draufbrezeln und Alexa Suchlauf starten. Schon kann Alexa ohne Skill über HTTP Requests alles schalten was in FHEM- Homematic- Broadlink exisiert.

Lohnt sich- kann ich nur empfehlen.


tklein

Hi,

welchen Sketch genau?

Gruß
Thomas
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

rr725

Zitat von: tklein am 02 April 2017, 12:21:29
welchen Sketch genau?

hier mein bei"spiel" sketch .....

#include <ESP8266WiFi.h>

#include "WemoSwitch.h"
#include "WemoManager.h"
#include "CallbackFunction.h"
#include "ESP8266HTTPClient.h"
boolean connectWifi();

//on/off callbacks
void kinoOn();
void kinoOff();
void secondOn();
void secondOff();

char ssid[] = "SSID";     
char password[] = "Passwort"; 
WemoManager wemoManager;
WemoSwitch *kino = NULL;
WemoSwitch *second = NULL;

const int ledPin = BUILTIN_LED;

void setup()
{
  Serial.begin(115200);

  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);

    Serial.print("Connecting Wifi: ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  IPAddress ip = WiFi.localIP();
  Serial.println(ip);

  wemoManager.begin();
  kino= new WemoSwitch("kino", 80, kinoOn, kinoOff);
  second = new WemoSwitch("second kinos", 81, secondOn, secondOff);
  wemoManager.addDevice(*kino);
  wemoManager.addDevice(*second);

  pinMode(ledPin, OUTPUT);
  delay(10);
  digitalWrite(ledPin, HIGH);
}

void loop()
{
  wemoManager.serverLoop();
}

void kinoOn() {
    Serial.print("Switch 1 turn on ...");
  HTTPClient http; 

    http.begin("http://192.168.22.88:7474/?cmd=%7B%22api_id%22:1004,%22command%22:%22send_code%22,%22mac%22:%2234:ea:34:f4:37:3b%22,%22data%22:%22b20038010b29290e0e2b2a0d0e282a100e282a0d0e292c0d0e290e290e282c0d0e29290e0e2b2a0d0e280e291128290e0e292c0d0e0001ad0e282c0d0e29290e0e292c0d0e29290d0e2b2a0d0e290e291029290d0e292c0e0e282a0d0e290e2b0e29290d0e2c290d0e0001ad0e2b290e0e29290d1128290e0e292c0d0e29290d0e2910290e29290d0e292c0e0e282a0d11280e290e292c0d0e29290d0e0001b00d292a0d0e2b2a0d0e29290d0e292c0d0e29290d0e2c0e280e292c0e0d29290e0e282c0e0e280e290e292b0e0e29290d0f0001ae0f28290e0e2b290e0e282a100e282a0d0e2c290d0e290e280e292c0e0d292a0d0e2b290e0e290d2c0e282a0d0e292c0d0e0001ad0e282c0e0e29290d0e292c0d0e29290d0e2c290d0e290e2b0e29290e0e282c0d0e29290e0e280e2c0e282a0d0e2c290d0e0005dc%22%7D");

   int httpCode = http.GET();                                                                 


    if (httpCode > 0) { //Check the returning code

      String payload = http.getString();   
      Serial.println(payload);                   

    }
    http.end();   //Close connection
{
   Serial.println("Error in HTTP request");
}
http.end();
}

void kinoOff() {
    Serial.print("Switch 1 turn off ...");
     HTTPClient http; 

    http.begin("http://192.168.22.88:7474/?cmd=%7B%22api_id%22:1004,%22command%22:%22send_code%22,%22mac%22:%2234:ea:34:f4:37:3b%22,%22data%22:%22b20038010b29290e1029290e0e282a100e282a0d0e292c0d0e290e280e2c290d0e29290e0e2b290e0e280e2911280e290e280e2c0e0001ac0e292c0e0e28290e0e2b290e0e282a100e29290d0e290e281129290d0e292c0d0e29290e0e2b0e280e290e2911290d290e0001af0e29290d0e29290e11282a0d0e292c0d0e29290d0e2b0e290e29290d1129290d0e29290e0d2c0e290e280e2c0e280e290e0001af0e29290e0e2b290e0e28290e11282a0d0e282a0d11280e290e2929100e29290e0d292c0e0e280e290e2b0e290e280e290e0001b00d2929110e28290d0e292a100e282a0d0e282c0e0e290e280e2b2a0d0e29290d1129290d0e290e2b0e290e290e290e2b0e0001ac0e292c0e0d29290e0e2b290e0d292a100e282a0d0e290e2b0e29290d0e292c0e0d292a0c0e2c0e280e290e2c0e290e280e0005dc%22%7D");  //Specify request destination
    int httpCode = http.GET();                                                                 
 
    if (httpCode > 0) {

      String payload = http.getString();   
      Serial.println(payload);                   

    }
    http.end();   
{
   Serial.println("Error in HTTP request");
}
http.end();
}

void secondOn() {
    Serial.print("Schalter 2 an ...");
    digitalWrite(ledPin, LOW);
}

void secondOff() {
    Serial.print("Schalter 2 aus ...");
    digitalWrite(ledPin, HIGH);
}

Pythonf

Mehr als on/off lässt sich damit aber doch auch nicht schalten, oder? Gibt es irgendeinen Vorteil gegenüber der HA-Bridge?

rr725

Zitat von: Pythonf am 03 April 2017, 11:04:05
Mehr als on/off lässt sich damit aber doch auch nicht schalten, oder? Gibt es irgendeinen Vorteil gegenüber der HA-Bridge?
vorteil...ich brauche keinen rechner mehr auf dem ha bridge läuft.
da dieses kleine teil auch zwei gpio´s hat ist es also auch ein wlan sensor/schalter/taster. welche als input/output zu definieren sind.
da auf meinem raspberry, auf welchem fhem installiert ist, ebenfalls ein apache server läuft, kann ich die php scripte welche dort abgelegt sind
via url aufruf mit dem teil die scripte starten. damit ist quasi alles machbar was programmierbar ist.
hab gerade noch ein wenig an dem sketch geschraubt... es läßt sich grundsätzlich alles damit machen was ich in fhem/homematic definiert habe, da- wie mit einem http client halt http requests abgeschickt werden können.
hab gerade mit so einem chip meinen briefkasten beglückt, welcher mir nun eine nachricht auf´s handy schickt wenn jemand die klappe geöffnet hat.

Pythonf

Zitat von: rr725 am 03 April 2017, 13:59:28
vorteil...ich brauche keinen rechner mehr auf dem ha bridge läuft.
Läuft nicht sowieso die ganze Zeit ein Rechner für FHEM? Versteh mich nicht falsch ich habe etliche ESP8266 im Einsatz mit unter anderem ESPEasy und RGBWWCW-Controller aber ich seh die Vorteile immernoch nicht. Eine Frage hab ich aber noch. Hast du in deinem Briefkasten einen Stromanschluss? Oder betreibst du den ESP im deep-sleep mit Akkus?

Gruß
Fabian

rr725

Zitat von: Pythonf am 03 April 2017, 14:26:22
deep-sleep mit Akkus?

yes....mal sehen wie lange das teil reibungslos mit einer ladung auskommt.

Frank_Huber

Zitat von: rr725 am 03 April 2017, 13:59:28
da dieses kleine teil auch zwei gpio´s hat ist es also auch ein wlan sensor/schalter/taster. welche als input/output zu definieren sindpe geöffnet hat.
wenn du den Wemos wählst hatt er sogar 11 GPIOs. :-)

rr725

Zitat von: Frank_Huber am 03 April 2017, 14:57:11
wenn du den Wemos wählst hatt er sogar 11 GPIOs. :-)

wird wohl kommen..... den kleinen hatte ich im zehner pack beim günstigen chinamann bestellt, um mich langsam ran zu tasten.  schöne neue welt. :-)

sbiermann

Zitat von: rr725 am 03 April 2017, 14:54:53
yes....mal sehen wie lange das teil reibungslos mit einer ladung auskommt.
Laut dem Beispielcode wird der ESP vermutlich nur wenige Tage durch halten... Denn da ist nichts mit Deep Sleep. Ansonsten ist der ESP auch nicht für Akku Betrieb gedacht, ich hab das jetzt fast ein Jahr lang getestet in verschiedenen Szenarien.

rr725

Zitat von: sbiermann am 03 April 2017, 15:31:44
Laut dem Beispielcode wird der ESP vermutlich nur wenige Tage durch halten... Denn da ist nichts mit Deep Sleep. Ansonsten ist der ESP auch nicht für Akku Betrieb gedacht, ich hab das jetzt fast ein Jahr lang getestet in verschiedenen Szenarien.

sorry...o. g. sketch war mein erstversuch.   für meinen briefkasten hab ich was anderes "gebaut"
> Ansonsten ist der ESP auch nicht für Akku Betrieb gedacht
hm... im netz hab ich dazu div. andere gelesen. ebenso die brücke, welche gelötet werden muss für "Deep Sleep"
ob das teil nun für akkubetrieb gedacht ist, oder nicht..mir egal, wenn die rein rechnerische betriebsdauer erreicht wird bin ich zufrieden.

Rince

Mal unabhängig von dieser Variante, mit on/off lässt sich schon einiges schalten.
Ein Dummy, der ein DOIF triggert, welches z.B. ein Hörbuch resumed und pausiert über den LMS. Hab ich zwar noch nicht probiert, aber steht auf meiner ToDo Liste.
Für so ein 10 Stunden Teil sicherlich nicht unspannend.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

rr725

da ja hier auch geballtes wissen in sachen ccu vorhanden ist...

mal eine frage:
es gibt ja dieses projekt esp8266 mit alexa, funktioniert auch tagellos.
es ist eine wahnsinnig günstige alternative auf 433mhz basis.
nun würde ich gerne direkt vom esp einen http request an die ccu schicken.
hat da schon jemand was "gebaut" ?!
vielen dank im voraus......

rr725

Hab mich noch einmal intensiv damit befasst und nutze nun wemos d1 Minis. Hab meine Sketch dahingehend erstellt, dass die damit erstellten devices in Alexa erkannt und gesteuert werden können. (Auch 2 te generation)
Auch http requests werden damit via Alexa verschickt. Im Prinzip nun eine eierlegende wollmilchsau. 433mhz und jegliches über http steuerbaren Gerät ist damit nun ansprechbar. Also eine Bridge für 5€.  Und bisher hatte ich nicht das Problem, welches ich öfters mit na Bridge hatte ( das Gerät befindet sich nicht in ihrem Profil.)

pc1246

Moin
Magst Du Deinen Sketch noch einmal posten? Ich finde das sehr interessant! Steige aber noch nicht so ganz dahinter!
Danke und Gruss
Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly