Autor Thema: Playbox nachrüchsten mit Taster für Lautstärke  (Gelesen 1065 mal)

Offline Keule_09

  • Jr. Member
  • **
  • Beiträge: 56
Playbox nachrüchsten mit Taster für Lautstärke
« am: 30 Juli 2019, 18:59:15 »
Hallo Zusammen,

hab für meinen Sohn die Playbox von folgender Homepage nachgebaut:
https://haus-automatisierung.com/projekt/2018/12/16/projekt-playbox-mqtt-fhem-spotify.html

Nun würde ich gerne noch 2 Taster nachrüsten für die Lautstärke zu regeln.
Hab versucht die Taster im Script einzubauen leider ohne Erfolg.

Kann mir jemand weiterhelfen bzw. sagen wo mein Denkfehler steckt:

#include <Arduino.h>
#include <SPI.h>
#include <MFRC522.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <PubSubClient.h>

#define SS_PIN D8
#define RST_PIN D1
#define VolU_Pin D2
#define VolD_Pin D4



MFRC522 mfrc522(SS_PIN, RST_PIN);
unsigned long cardId = 0;

WiFiClient net;
PubSubClient client(net);

const char* mqtt_server = "******";
const char* ssid = "*****";
const char* password = "****";

void setup() {
  Serial.begin(9600);
  SPI.begin();
  mfrc522.PCD_Init();

  WiFi.mode(WIFI_AP_STA);
  WiFi.begin(ssid, password);

  client.setServer(mqtt_server, 1883);

  //Pinmode Volume
  pinMode(VolU_Pin, INPUT);
  pinMode(VolD_Pin, INPUT);
}

void reconnect() {
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    WiFi.begin(ssid, password);
  }

  while (!client.connected()) {
    String clientId = "NodeMCUClient-";
    clientId += String(random(0xffff), HEX);

    if (!client.connect(clientId.c_str(), "****", "*****")) {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");

      delay(5000);
    }
  }
}

void loop() {
  reconnect();

  if (!mfrc522.PICC_IsNewCardPresent()) {
    return;
  }

  if (!mfrc522.PICC_ReadCardSerial()) {
    return;
  }

  cardId = getCardId();

  Serial.print("New ");
  Serial.println(cardId);

  char buffer[10];
  sprintf(buffer, "%lu", cardId);
  client.publish("/opt/fhem/PlayBox/Play", buffer);

  uint8_t control = 0x00;

  do {
    control = 0;
    for (int i = 0; i < 3; i++) {
      if (!mfrc522.PICC_IsNewCardPresent()) {
        if (mfrc522.PICC_ReadCardSerial()) {
          control |= 0x16;
        }

        if (mfrc522.PICC_ReadCardSerial()) {
          control |= 0x16;
        }

        control += 0x1;
      }

      control += 0x4;
    }

    delay(0);
  } while (control == 13 || control == 14);

  reconnect();

  Serial.println("Removed");
  client.publish("/opt/fhem/PlayBox/Stop", "1");
  delay(500);

  mfrc522.PICC_HaltA();
  mfrc522.PCD_StopCrypto1();

  if (digitalRead(VolU_Pin) == HIGH) {
    Serial.println("VolUP");
    client.publish("/opt/fhem/PlayBox/VolUP", "1");
    delay(500);
  }
  else
  { Serial.println('aus');
    client.publish("/opt/fhem/PlayBox/VolUP", "0");
    delay(1000);
  };
  if (digitalRead(VolD_Pin) == HIGH) {
    Serial.println("VolDOWN");
    client.publish("/opt/fhem/PlayBox/VolDOWN", "1");
    delay(500);
  }
  else
  { Serial.println('0');
    client.publish("/opt/fhem/PlayBox/VolDOWN", "0");
    delay(500);
  };
}


unsigned long getCardId() {
  byte readCard[4];
  for (int i = 0; i < 4; i++) {
    readCard[i] = mfrc522.uid.uidByte[i];
  }

  return (unsigned long)readCard[0] << 24
         | (unsigned long)readCard[1] << 16
         | (unsigned long)readCard[2] << 8
         | (unsigned long)readCard[3];
}

Gruß Marco
« Letzte Änderung: 30 Juli 2019, 19:00:47 von Keule_09 »

Offline Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1247
Antw:Playbox nachrüchsten mit Taster für Lautstärke
« Antwort #1 am: 30 Juli 2019, 19:03:09 »
Und hast du schon dort gefragt? Oder möchtest du, dass wir Support für Matthias' kommerzielles Projekt machen?

Offline Keule_09

  • Jr. Member
  • **
  • Beiträge: 56
Antw:Playbox nachrüchsten mit Taster für Lautstärke
« Antwort #2 am: 30 Juli 2019, 19:08:55 »
Nöö weil ich dort nicht registriert bin bzw keine Kommentare hinterlassen kann .

Offline MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 8471
  • NIVEAu ist keine Creme...
Antw:Playbox nachrüchsten mit Taster für Lautstärke
« Antwort #3 am: 30 Juli 2019, 19:15:43 »
Ich hab ja nicht alles im Detail durchgepflügt...
...aber es sieht so aus, als wäre es wie folgt:

Es wird immer wieder geprüft, ob Karte steckt...

Steckt die Karte wird irgendwie in der Do while Schleife rumgehampelt...
...bis die Karte gezogen wurde...

Erst dann (bzw. eben nur wenn keine Karte steckt!?) wird dein Code bzgl. Lautstärke durchlaufen...
...einfach mal Karte raus und drücken, dann sollte/könnte ja entsprechend lauter/leiser "kommen"...

Also der Laut-/Leise-Code muss irgendwie in die Schleife ohne sie zu "stören"...

Zumindest denke ich das...

Gruß, Joachim
FHEM PI3B+ Buster: HM-CFG-USB, 40x HM, ZWave-USB, 6x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, KODI, alexa-fhem, ...
FHEM PI2 Stretch: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, KODI, ha-bridge, ...
FHEM PI3 Buster (Test)
FHEM PI3 Stretch (Test)

Offline Keule_09

  • Jr. Member
  • **
  • Beiträge: 56
Antw:Playbox nachrüchsten mit Taster für Lautstärke
« Antwort #4 am: 30 Juli 2019, 22:59:07 »
Hallo Joachim,

ja genau der Titel wird so lang abgespielt bis die Karte wieder abgenommen wird.

puh wird dann doch nicht so einfach wie ich mir das gedacht habe.

Offline MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 8471
  • NIVEAu ist keine Creme...
Antw:Playbox nachrüchsten mit Taster für Lautstärke
« Antwort #5 am: 30 Juli 2019, 23:26:56 »
Tja, nicht ganz so einfach, weil du vermutlich keine delays innerhalb der do-while haben darfst?
Bzw. ist wohl/evtl. dann nur die Erkennung dass Karte raus ist "verzögert"!?

Hast du deinen Code für Lautstärke schon mal "einfach" innerhalb der do-while probiert?
Z.B. nach dem delay(0) am Ende vor dem while...

Ansonsten musst du halt statt delay einen Zähler nehmen und mitzählen, wie oft (Durchläufe von do-while)  schon High etc. war...

Gruß, Joachim
« Letzte Änderung: 30 Juli 2019, 23:28:31 von MadMax-FHEM »
FHEM PI3B+ Buster: HM-CFG-USB, 40x HM, ZWave-USB, 6x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, KODI, alexa-fhem, ...
FHEM PI2 Stretch: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, KODI, ha-bridge, ...
FHEM PI3 Buster (Test)
FHEM PI3 Stretch (Test)

Offline Keule_09

  • Jr. Member
  • **
  • Beiträge: 56
Antw:Playbox nachrüchsten mit Taster für Lautstärke
« Antwort #6 am: 31 Juli 2019, 20:24:26 »
ja hab mal nach deinem Beitrag ausprobiert.

leider ohne Erfolg.

hab mir mal den Sketch umgebaut ohne RFID Reader da mir der gedrückte Taster nicht erkannt wird.

#include <Arduino.h>
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <PubSubClient.h>

int VolU_Pin=D5;
int VolD_Pin=D6;
int tasterstatus1=0;
int tasterstatus2=0;

WiFiClient net;
PubSubClient client(net);

const char* mqtt_server = "192.168.178.***";
const char* ssid = "****";
const char* password = "*******";

void setup() {
  Serial.begin(9600);
  SPI.begin();

  WiFi.mode(WIFI_AP_STA);
  WiFi.begin(ssid, password);

  client.setServer(mqtt_server, 1883);

  //Pinmode Volume
  pinMode(VolU_Pin, INPUT);
  pinMode(VolD_Pin, INPUT);
}

void reconnect() {
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    WiFi.begin(ssid, password);
  }

  while (!client.connected()) {
    String clientId = "NodeMCUClient-";
    clientId += String(random(0xffff), HEX);

    if (!client.connect(clientId.c_str(), "****", "******")) {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");

      delay(5000);
    }
  }
}

void loop() {
tasterstatus1=digitalRead(VolU_Pin);
  if (VolU_Pin == HIGH) {
    Serial.println("VolUP");
    client.publish("/opt/fhem/PlayBox/VolUP", "VolUP");
    delay(500);
  }
  else
  { Serial.println('aus');
    client.publish("/opt/fhem/PlayBox/VolUP", "0");
    delay(1000);
  };
tasterstatus2=digitalRead(VolD_Pin);
  if (VolD_Pin == HIGH) {
    Serial.println("VolDOWN");
    client.publish("/opt/fhem/PlayBox/VolDOWN", "VolDOWN");
    delay(500);
  }
  else
  { Serial.println('aus');
    client.publish("/opt/fhem/PlayBox/VolDOWN", "0");
    delay(500);
  };
}

hier wird mir leider auch kein drücken des Tasters erkannt.
Hab auch mal MQTT.fx installiert um zu schauen ob die Befehle ankommen im Broker leider auch dort keine Rückmeldung über das drücken des Tasters.
Könnte mal bitte jemand darüber schauen ob ich alles so richtig habe.
hab den Taster folgndermaßen angeschlossen:
D4 = Ausgang des Tasters
Vin = Eingang des Tasters
zwischen Vin und GND noch ein Pullup-Widerstand von 10KOhm.
Den Taster hab ich auch schon mit einem Multimeter durchgemessen ob er funktioniert.
Hab keine Ahnung wo ich noch suchen bzw schaune soll.

Vielen Dank im vorraus für Eure Hilfe

Gruß Marco


Offline RappaSan

  • Sr. Member
  • ****
  • Beiträge: 555
Antw:Playbox nachrüchsten mit Taster für Lautstärke
« Antwort #7 am: 01 August 2019, 09:18:03 »
 Oh, :(
da hab ich wohl falsch gelesen.
Ist gar kein "Playboy nachrüsten"
 ;D

Offline Gisbert

  • Hero Member
  • *****
  • Beiträge: 1927
  • Das Ziel ist das Ziel !
Antw:Playbox nachrüchsten mit Taster für Lautstärke
« Antwort #8 am: 01 August 2019, 09:40:25 »
Oh, :(
da hab ich wohl falsch gelesen.
Ist gar kein "Playboy nachrüsten"
 ;D
Hattest wohl einen guten Start in den Tag und einen Clown gefrühstückt ... ;D
Aktuelles Fhem auf HP ThinClient T610 | Debian10 | UniFi-Controller | Homematic, VCCU, HMUART | ESP8266, Platinen von Papa Romeo | Sonoff | 1-Wire-Temperatursensoren | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21RF

Offline Cybers

  • Full Member
  • ***
  • Beiträge: 384
Antw:Playbox nachrüchsten mit Taster für Lautstärke
« Antwort #9 am: 01 August 2019, 10:53:07 »
Schau mal hier: es gibt schon Projekte in dieser Hinsicht: https://forum.fhem.de/index.php/topic,95552.0.html
Vielleicht findest du hier was passendes.
Gruß, Sascha
FHEM 5.8 auf Raspberry PI 3 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
diverse 1-Wire Temperatursensoren
aus alter Zeit:
diverse Homematic Jalousie- & Schaltaktoren

Offline Keule_09

  • Jr. Member
  • **
  • Beiträge: 56
Antw:Playbox nachrüchsten mit Taster für Lautstärke
« Antwort #10 am: 01 August 2019, 22:14:23 »
Oh, :(
da hab ich wohl falsch gelesen.
Ist gar kein "Playboy nachrüsten"
 ;D

musste ich öfters korrigieren wegen der automatischen Texterkennung sonst würde da tatsächlich Playboy stehen  :D

@ Sascha
Danke werd ich mir die Tage mal anschauen

 

decade-submarginal