Wlan Klingel TR064 mit ESP32 und Fritzbox

Hallo

Ein bekannter hat mir einen ESP8266 Code mit TR064 als Türklingel und einem ESP 32 Code für einen Kameraserver zusammengefügt für einen ESP32.

Kompilieren hat geklappt nur leider startet das ding immer wieder neu. Vieleicht kann ja mal jemand drüber schauen wo der Fehler sitz.

//Ergänzung Anfang *******************************************************************
// Möglicherweise sind die WiFi-Modi "WiFi" und "WiFiMulti" nicht voll kompatibel
//    und der "startCameraServer()" startet nicht  -> ausprobieren
//
//*************************************************************************** Ergänzung Ende

#include "esp_camera.h"
#include <WiFi.h>


//Ergänzung Anfang *******************************
#include <Arduino.h>
//#include <ESP8266WiFi.h>
//#include <ESP8266WiFiMulti.h>
//#include <ESP8266HTTPClient.h>
#include <tr064.h>
//******************************* Ergänzung Ende

// WARNING!!! Make sure that you have either selected ESP32 Wrover Module,
//            or another board which has PSRAM enabled

// Select camera model
//#define CAMERA_MODEL_WROVER_KIT
//#define CAMERA_MODEL_ESP_EYE
//#define CAMERA_MODEL_M5STACK_PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE
//#define CAMERA_MODEL_AI_THINKER

#define CAMERA_MODEL_T_JOURNAL
#include "camera_pins.h"
//Ergänzung Anfang *******************************************************************
// #define USE_SERIAL Serial             // entspricht "Serial.begin(115200);"
#define TASTER 22                        // !!!!!!!!!!!!!!!!!!!!!!!!!!! prüfen
// Flash Taster - you can connect a seperate button to D3 or an opto-coupler
// for example: use a resistor and an opto-coupler to connect to a doorbell

//ESP8266WiFiMulti WiFiMulti;

//Put your router settings here

//Wifi network name (SSID) and WLAN-Password
// const char* wifi_ssid = "WLANSID";                     // ??? doppelt
// const char* wifi_password = "12345678901234567890";    // ??? doppelt

//The username and password you created for login (Anmeldung aus dem Heimnetz mit Benutzername und Passwort)
const char* fuser = "p*****";
const char* fpass = "*******";

//IP address of your router. This should be "192.168.178.1" for most FRITZ!Boxes
const char* IP = "192.168.0.1";

//Port of the API of your router. This should be 49000 for all TR-064 devices.
const int PORT = 49000;

//Do not mess with these :)
//TR-064 connection
TR064 connection(PORT, IP, fuser, fpass);
//*************************************************************************** Ergänzung Ende

const char* ssid = "xxxxxxx";
const char* password = "xxxxxx";

void startCameraServer();

void setup() {
  Serial.begin(115200);
  Serial.setDebugOutput(true);
  Serial.println();

  camera_config_t config;
  config.ledc_channel = LEDC_CHANNEL_0;
  config.ledc_timer = LEDC_TIMER_0;
  config.pin_d0 = Y2_GPIO_NUM;
  config.pin_d1 = Y3_GPIO_NUM;
  config.pin_d2 = Y4_GPIO_NUM;
  config.pin_d3 = Y5_GPIO_NUM;
  config.pin_d4 = Y6_GPIO_NUM;
  config.pin_d5 = Y7_GPIO_NUM;
  config.pin_d6 = Y8_GPIO_NUM;
  config.pin_d7 = Y9_GPIO_NUM;
  config.pin_xclk = XCLK_GPIO_NUM;
  config.pin_pclk = PCLK_GPIO_NUM;
  config.pin_vsync = VSYNC_GPIO_NUM;
  config.pin_href = HREF_GPIO_NUM;
  config.pin_sscb_sda = SIOD_GPIO_NUM;
  config.pin_sscb_scl = SIOC_GPIO_NUM;
  config.pin_pwdn = PWDN_GPIO_NUM;
  config.pin_reset = RESET_GPIO_NUM;
  config.xclk_freq_hz = 20000000;
  config.pixel_format = PIXFORMAT_JPEG;
  //init with high specs to pre-allocate larger buffers
  if(psramFound()){
    config.frame_size = FRAMESIZE_UXGA;
    config.jpeg_quality = 10;
    config.fb_count = 2;
  } else {
    config.frame_size = FRAMESIZE_SVGA;
    config.jpeg_quality = 12;
    config.fb_count = 1;
  }

#if defined(CAMERA_MODEL_ESP_EYE)
  pinMode(13, INPUT_PULLUP);
  pinMode(14, INPUT_PULLUP);
#endif

  // camera init
  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK) {
    Serial.printf("Camera init failed with error 0x%x", err);
    return;
  }

  sensor_t * s = esp_camera_sensor_get();
  //initial sensors are flipped vertically and colors are a bit saturated
  if (s->id.PID == OV3660_PID) {
    s->set_vflip(s, 1);//flip it back
    s->set_brightness(s, 1);//up the blightness just a bit
    s->set_saturation(s, -2);//lower the saturation
  }
  //drop down frame size for higher initial frame rate
  s->set_framesize(s, FRAMESIZE_QVGA);

#if defined(CAMERA_MODEL_M5STACK_WIDE)
  s->set_vflip(s, 1);
  s->set_hmirror(s, 1);
#endif


//Ergänzung Anfang *******************************************************************

  WiFi.begin(ssid, password);
//  WiFiMulti.addAP(wifi_ssid, wifi_password);  // ersetzt
     // wifiMulti.addAP("wifi_ssid2","wifi_password2");  // zweites Netzwerk mit "wifiMulti" möglich


 while (WiFi.status() != WL_CONNECTED) {
 //    while ((WiFiMulti.run() != WL_CONNECTED)) {  // ersetzt
//*************************************************************************** Ergänzung Ende
   
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  startCameraServer();

  Serial.print("Camera Ready! Use 'http://");
  Serial.print(WiFi.localIP());
  Serial.println("' to connect");


//Ergänzung Anfang *******************************************************************
  pinMode(TASTER, INPUT); // Port as input
//*************************************************************************** Ergänzung Ende

 
}

void loop() {
  // put your main code here, to run repeatedly:

 
  //Ergänzung Anfang *******************************************************************
int taste = digitalRead(TASTER);
if (digitalRead(TASTER)== LOW)
{
//  USE_SERIAL.println();
  Serial.println("");
 
//  USE_SERIAL.printf("Taste gedrückt");
  Serial.println("Taste gedrückt");
 
  callWahlhilfe();
  delay(20000);
}
else
{
//  USE_SERIAL.println();
   Serial.println("");

  //USE_SERIAL.printf("Taste nicht gedrückt");
   Serial.println("Taste nicht gedrückt");
  delay(50);   
  }
//delay(100);   
 
//*************************************************************************** Ergänzung Ende



//  delay(10000);   // = bis zu 10s klingeln !!!
    delay(100);     // verkürzt

}  // Loop Ende **********************************************************************

  //Ergänzung Anfang *******************************************************************
int callWahlhilfe() {
 // Maybe the WLAN connection is lost, so testing an reconnect if needed
 //  if ((WiFiMulti.run() != WL_CONNECTED)) {
 if  (WiFi.status() != WL_CONNECTED) {
//      WiFiMulti.addAP(wifi_ssid, wifi_password); //
WiFi.begin(ssid, password);
 //     while ((WiFiMulti.run() != WL_CONNECTED)) {
  while (WiFi.status() != WL_CONNECTED) {
        delay(100);
      }
     }
  // (Re-) Initialize the TR-064 library - it is done every time, as maybe the connection has lost before
     connection.init();

  String params[][2] = {{"NewX_AVM-DE_PhoneNumber", "**799"}};
  String req[][2] = {{}};

  connection.action("urn:dslforum-org:service:X_VoIP:1", "X_AVM-DE_DialNumber", params, 1, req, 0);}
 
//*************************************************************************** Ergänzung Ende

in der seriellen Konsole steht das hier als letztes…

Got the initial nonce: 9301471FAA142FBB and the realm: F!Box SOAP-Auth
Your secret is is: pi:F!Box SOAP-Auth:passat92
Your secret is hashed: abd719b908faddc52361776d991c101c
action_3
action_1
The auth token is 17763c33a096533db86c9210eadd617a
[HTTP] begin: 192.168.0.1:49000/upnp/control/x_voip



<?xml version="1.0"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Header><h:ClientAuth xmlns:h="http://soap-authentication.org/digest/2001/10/" s:mustUnderstand="1"><Nonce>9301471FAA142FBB</Nonce><Auth>17763c33a096533db86c9210eadd617a</Auth><UserID>pi</UserID><Realm>F!Box SOAP-Auth</Realm></h:ClientAuth></s:Header><s:Body><u:X_AVM-DE_DialNumber xmlns:u='urn:dslforum-org:service:X_VoIP:1'><NewX_AVM-DE_PhoneNumber>**9</NewX_AVM-DE_PhoneNumber></u:X_AVM-DE_DialNumber></s:Body></s:Envelope>



[HTTP] POST... SOAPACTION: urn:dslforum-org:service:X_VoIP:1#X_AVM-DE_DialNumber
[HTTP] POST... code: 200



<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Header>
<h:NextChallenge xmlns:h="http://soap-authentication.org/digest/2001/10/" s:mustUnderstand="1">
<Status>Authenticated</Status>
<Nonce>6873D3165DB9760C</Nonce>
<Realm>F!Box SOAP-Auth</Realm>
</h:NextChallenge>
</s:Header>
<s:Body>
<u:X_AVM-DE_DialNumberResponse xmlns:u="urn:dslforum-org:service:X_VoIP:1"></u:X_AVM-DE_DialNumberResponse>
</s:Body>
</s:Envelope>

Und du solltest den vorherigen Thread hier verlinken.

Baue doch mal ein paar serielle Ausgaben auf den seriellen Monitor ein, damit du sehen kannst, wo er stoppt.

Hallo,

verlinken hatte ich nicht "gefordert" :wink: , aber kann ich nachholen, ist doch besser. Ursprung des Themas

Zum Thema. Was mich jetzt wirklich wundert an dem aktuellen Sketch für den ESP32.
Warum ist TR064 enthalten? Ohne konkreten Grund wird das schon länger nicht mehr benötigt.