Reku on/off

  • carbon_compound
  • carbon_compounds Avatar
  • Autor
  • Platinum Boarder
  • Platinum Boarder
  • Beiträge: 2931
  • Dank erhalten: 1301
15 Jan 2019 08:19 #165658 von carbon_compound
Reku on/off
Mädls, ich steh da so daneben, auf dem Schlauch und im Wald - ihr habt ja keine Vorstellung. :D

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • AlexDL
  • AlexDLs Avatar
  • Pro Boarder
  • Pro Boarder
  • Beiträge: 685
  • Dank erhalten: 273
15 Jan 2019 08:29 #165660 von AlexDL
Reku on/off
Ich könnte auch genauso gut einen Groschenroman in chinesischer Handschrift lesen. Aber lass die Jungs mal machen. Vielleicht kommt dabei ja was raus, was solche IT-Goofies wie wir am Ende einfach nur in unser Twizzels einstöpseln können.

Grüße


Alex

May the energy be with you!
Folgende Benutzer bedankten sich: TwizyChrisy

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • carbon_compound
  • carbon_compounds Avatar
  • Autor
  • Platinum Boarder
  • Platinum Boarder
  • Beiträge: 2931
  • Dank erhalten: 1301
15 Jan 2019 08:52 #165661 von carbon_compound
Reku on/off
Daher auch mein Ansatz mit Bier und Bargeld. ^^

Eine unauffällige Kotflügelverbreiterung auf 145/165 als Kompensationsgeschäft oder diverse Kunststoffschweißnähte könnte ich auch noch auf den Markt werfen.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • mitpro
  • mitpros Avatar
  • Junior Boarder
  • Junior Boarder
  • Beiträge: 71
  • Dank erhalten: 33
15 Jan 2019 09:55 - 15 Jan 2019 09:57 #165662 von mitpro
Reku on/off
Bei der Controller-Konfiguration bin ich auch raus :dry:
IT und Protokolle ok, aber das habe ich noch nie gesehen.

Wie viele würden sowas gerne haben bzw. bauen, wissen aber nicht wo sie anfangen sollen?
Wenn Interesse besteht baue ich ein WLAN-Button-Modul und dokumentiere die Schritte. Den Knopf kann ich dann an einen Bedürftigen weitergeben ;). Wie schwierig es ist, wenn man so etwas zum ersten mal macht, kann ich nicht einschätzen.

Bauteile sind ein ESP wie Wemos D1 Mini (z.B. www.exp-tech.de/plattformen/esp8266/entwicklungsboards/8898/wemos-d1-mini ), 1 Knopf, 2 LEDs, 2 Vorwiderstände (220 Ohm), ein beliebiges Gehäuse und ein USB-Kabel mit 12V-Adapter. Erfahrungen mit dem Umgang von Lötkolben und Arduino IDE schaden sicher nicht.
An Pin D3 ist die Status-LED worüber die Konfiguration ersichtlich ist.
An Pin D4 eine Operation-LED, die bei Verarbeitung leutet.
Pin D5 wird über einen internen Pullup hochgezogen, sodass daran der Button die Masse schaltet.

Mein reduzierter Spagetti-Code für motivierte:
Habe das LCD und den zweiten Knopf entfernt. Das reicht so zum Anzeigen und Umschalten einer Einstellung. Dies kann auch eine andere Einstellung sein. Wenn Notwendig auch erweiterbar zum wechseln zwischen mehreren Profilen z.B. (1-2-3-1-2-3), dafür muss aber die Status-Anzeige erweitert werden. Der Vorteil ist, dass auf komplizierte Libraries verzichtet werden kann.
#include <ESP8266WiFi.h>
#include <string.h>
#include <Wire.h> // Wire Bibliothek einbinden

//--- Konfiguration Anfang
const char* ssid     = "WLANSSID";
const char* password = "WLANPW";
const char* host = "192.168.4.1";
const char* apikey = "MODULPW";

const char* recu1 = "xrt+cfg+recup+33+43";
const char* recu2 = "xrt+cfg+recup+1+5";
String RecuValues = "RECUP 1 5";

int ledbrightness = 30;
//--- Konfiguration Ende

//IOs
int led1pin = 0; //0 = D3
int led2pin = 2; //2 = D4
int button1pin = 14; //14 = D5
int button1state = 0;

//Variablen
int recusetting = 0;
int value = 0;

void setup() {

  pinMode(led1pin, OUTPUT);
  pinMode(led2pin, OUTPUT);

  pinMode(button1pin, INPUT_PULLUP);

  digitalWrite(led2pin, LOW);

  Serial.begin(115200);
  delay(10);
  // We start by connecting to a WiFi network

  Serial.print("Connecting to ");
  Serial.println(ssid);

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

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  delay(1000);

  //initial
  analogWrite(led2pin, ledbrightness);
  ChangeSetting("xrt+cfg+info");
  delay(200);
  analogWrite(led2pin, ledbrightness * 0);
}



void loop() {

  button1state = digitalRead(button1pin);
  
  analogWrite(led1pin, recusetting * ledbrightness);

  if (button1state == LOW) {
    //LED blinken um Detektion kenntlich zu machen
    analogWrite(led1pin, !recusetting * ledbrightness * 2);   
    delay(100);                       // wait
    digitalWrite(led1pin, recusetting* ledbrightness * 2); 


    if (recusetting == 0) {
      ChangeSetting(recu1);
	  recusetting = 1;
    } else {
      ChangeSetting(recu2);
	  recusetting = 0;
    }

    digitalWrite(led1pin, recusetting * ledbrightness);
    ChangeSetting("xrt+cfg+info");
  }


  delay(200);
  ++value;
  Serial.print("value: ");
  Serial.println(value);

  if (value % 500 == 0) {
    //Auslesen aktueller Werte nach Intervall
	//LED2 während des Vorgangs AN
    analogWrite(led2pin, ledbrightness);

    ChangeSetting("xrt+cfg+info");

    analogWrite(led2pin, ledbrightness * 0);
  }



}

void ChangeSetting(String sett) {
  lcd.setCursor(0, 1);
  lcd.print("         ");

  Serial.print("Button Pressed! Change Setting!");
  Serial.println(sett);
  Serial.print("connecting to ");
  Serial.println(host);

  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }

  String url = "/api/";
  url += "execute?apikey=";
  url += apikey;
  url += "&command=";
  url += sett;

  Serial.print("Requesting URL: ");
  Serial.println(url);

  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "Connection: close\r\n\r\n");
  unsigned long timeout = millis();
  while (client.available() == 0) {
    if (millis() - timeout > 5000) {
      Serial.println(">>> Client Timeout !");
      client.stop();
      return;
    }
  }

  while (client.available()) {
    String line = client.readStringUntil('\r');
    line.trim();
    if (line.startsWith("RECUP")) {
      if (line.startsWith(RecuValues) ) {
        recusetting = 1;
      } else {
        recusetting = 0;
      }
    }

  }
}
Letzte Änderung: 15 Jan 2019 09:57 von mitpro.
Folgende Benutzer bedankten sich: dexter, sunneraindler, AndiEcker, carbon_compound

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Normag
  • Normags Avatar
  • Pro Boarder
  • Pro Boarder
  • Beiträge: 594
  • Dank erhalten: 340
16 Jan 2019 20:25 #165760 von Normag
Reku on/off
Ich bin heut Abend auch extra nochmals zu meinem Kleinen raus und hab versucht an der Akkubox zu schnüffeln,
ein paar Ionen zu kiffen, wirkt bei mir nicht :(

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • carbon_compound
  • carbon_compounds Avatar
  • Autor
  • Platinum Boarder
  • Platinum Boarder
  • Beiträge: 2931
  • Dank erhalten: 1301
16 Jan 2019 20:38 #165764 von carbon_compound
Reku on/off
Ionenkiffer

DAS wär doch mal ein Aufkleber. :D

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Normag
  • Normags Avatar
  • Pro Boarder
  • Pro Boarder
  • Beiträge: 594
  • Dank erhalten: 340
16 Jan 2019 21:15 #165773 von Normag
Reku on/off
:P :P :P

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • mitpro
  • mitpros Avatar
  • Junior Boarder
  • Junior Boarder
  • Beiträge: 71
  • Dank erhalten: 33
17 Jan 2019 21:24 - 17 Jan 2019 21:24 #165822 von mitpro
Reku on/off
Ob das hilft.. Ich weiß ja nicht :P

Der Websocket läuft jetzt auch, wenn auch voll auf Ionen. Habe mich ein wenig an den Twizplay-Infos orientiert und schon ein paar Sachen errechnet.
Batteriespannung, Temperaturen, SOC + Veränderung, Fahrstrecke, Verbrauch/km. Und das in Quasi-Echtzeit. Genial!
Leider bin ich auf 4 Informationen beschränkt, da das Display nicht mehr her gibt. Probiere mal alle aus um zu gucken wie hilfreich die sind.
Der Interrupt geht nur indirekt, aber doch recht schnell mit ca. 2 Sekunden.

Für die "Nur-Knopf-Lösung" habe ich mal ein paar ESP-01 bestellt. Die haben 3 IOs und würden völlig ausreichen bei kleinerer Baugröße.
Ein anderes Display ist auch versendet. Die Funktionen des Twizplay sind eigentlich alle möglich zu implementieren.
Letzte Änderung: 17 Jan 2019 21:24 von mitpro.
Folgende Benutzer bedankten sich: dexter

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • dexter
  • dexters Avatar
  • Moderator
  • Moderator
  • Beiträge: 6037
  • Dank erhalten: 4222
18 Jan 2019 16:12 #165859 von dexter
Reku on/off
Wirf doch Deine Baupläne und Quelltexte auch auf Github, entweder in ein eigenes Projekt oder als Client-Ergänzung für das OVMS. Ich bin sicher andere User finden das auch spannend.

Michael

Twike 3 (2001) … Emco Novum (2011) … Twizy 80 (2012) … Mii electric+ (2020)

dexters-web.de

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • mitpro
  • mitpros Avatar
  • Junior Boarder
  • Junior Boarder
  • Beiträge: 71
  • Dank erhalten: 33
18 Jan 2019 16:39 #165861 von mitpro
Reku on/off
Wenn ich mit dem Ergebnis zufrieden bin, werde ich die Sachen hochladen.
Das Gehäuse ist an manchen Stellen zu knapp bemessen und die Halterung ist noch nicht perfekt.
Es sollen 4 Knöpfe zur Verfügung stehen mit Beispielen, mit und ohne Display + Minimal-Lösung mit 1 Knopf und 2 LEDs und alles mit Schaltplänen.
Momentan habe ich das Problem, dass der ESP nach einiger Zeit nicht mehr aktualisiert bzw. sich bei der HTTP-Abfrage zur Reku-Änderung aufhängt, was total nervig ist.
Nach einem Neustart des ESP funktioniert dann alles wieder. Woran das liegt weiß ich noch nicht. Ein größerer Puffer hat Fehler beim parsen behoben, die Fehlenden aktualisierungen treten aber weiterhin auf. Bei der Fahrt zu debuggen ist etwas schwierig und im Stand mit PC funktioniert natürlich alles. Ist die Größe des JSON limitiert? Habe 2000 Byte gewählt, was zu funktionieren scheint. Puffergröße = Chunkgröße hat zu Problemen geführt. Bei start des Clients muss ich teilweise auch ein paar Meter fahren, bis er alle Werte bekommen hat. Das initiale JSON ist meistens ein normales 1-Sekunden-Event.
Das Display ist OK und reicht für viele Anwendungen aus, ist mir aber noch zu wenig. Der Code funktioniert, bis auf die genannten Probleme, ganz ok. Kommentierung und Variablennutzung lassen zu wünschen übrig. Artefakte von mehreren Versuchen machen ihn noch unübersichtlicher.
Da ich nicht alle Teile Zuhause habe und die Lieferung mit den Boot nicht besonders schnell ist, wird es noch etwas dauern.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • dexter
  • dexters Avatar
  • Moderator
  • Moderator
  • Beiträge: 6037
  • Dank erhalten: 4222
18 Jan 2019 19:36 #165873 von dexter
Reku on/off
Jetzt wo Du's sagst… ja, der Chunk kann jetzt größer werden, und zwar durch die Arrays. Die müssen am Stück übertragen werden und können größer sein. 2000 Byte sollten reichen.

Dass Du nach dem Start nicht direkt alle Metrics bekommst liegt wahrscheinlich an dem 0-Byte-Bug – Du bekommst die schon, aber sie sind kaputt.

Michael

Twike 3 (2001) … Emco Novum (2011) … Twizy 80 (2012) … Mii electric+ (2020)

dexters-web.de

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • mitpro
  • mitpros Avatar
  • Junior Boarder
  • Junior Boarder
  • Beiträge: 71
  • Dank erhalten: 33
19 Jan 2019 16:28 - 19 Jan 2019 16:32 #165925 von mitpro
Reku on/off
Die initialen Daten sehen bei mir genauso aus wie alle anderen. Leider nicht mehr Informationen drin.
Wie wird ermittelt, ob der Client "neu" ist?

Teilweise fehlen Anfang und Ende, wodruch das parsen fehlschlägt. Irgendwann funktioniert es (manchmal) dann doch. Konnte keine Erklärung dafür auf Client-Seite finden. Hast du eine Idee?
Received data: t":"ticker.1"}�5{"metrics":{"m.monotonic":51173,"v.e.parktime":2900}}�{"event":"ticker.1"}�5{"metrics":{"m.mo
Received data: tonic":51174,"v.e.parktime":2901}}�{"event":"ticker.1"}�5{"metrics":{"m.monotonic":51175,"v.e.parktime":2902}}
Received data: {"event":"ticker.1"}
Received data: {"metrics":{"m.monotonic":51176,"v.e.parktime":2903}}

Das Aufhängen scheint mit der verlieren der Verbindung zu tun zu haben. Setzte das ganze Modul jetzt mithilfe eines Fehlercouters zurück.
Habe einmal gesehen, dass das OVMS zu dem Zeitpunkt auch einen Neustart gemacht hat.
Letzte Änderung: 19 Jan 2019 16:32 von mitpro.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • dexter
  • dexters Avatar
  • Moderator
  • Moderator
  • Beiträge: 6037
  • Dank erhalten: 4222
19 Jan 2019 21:40 #165936 von dexter
Reku on/off
"Client neu" ergibt sich aus dem Aufbau der Websocket-Verbindung.

Tipp: mit dem Web-Debugger und einer Anzahl Browser-Extensions kannst Du WebSocket-Verbindungen testen und die Nachrichten verfolgen. Ente mal "websocket debugging".

Wenn Anfang/Ende fehlen würde ich vermuten dass die 0-Bytes den Client verwirren. Evtl. missversteht der die als Stringende.

Michael

Twike 3 (2001) … Emco Novum (2011) … Twizy 80 (2012) … Mii electric+ (2020)

dexters-web.de

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • mitpro
  • mitpros Avatar
  • Junior Boarder
  • Junior Boarder
  • Beiträge: 71
  • Dank erhalten: 33
20 Jan 2019 21:44 #165989 von mitpro
Reku on/off
Seltsam. Meine ersten Daten sind meistens nur irgendein Timer wo nur wenig Daten vorhanden sind. Naja mal gucken.

Der Client scheint das Ende des JSON nicht korrekt erkennen zu können. Dadurch wird das ein Teil der nächsten Nachricht am Ender der vorhergehenden angehangen.
Aber es ist ja immer das gleiche. Kaum drohnt man, funktioniert es besser. Bin heute mal mit Notebook gefahren und siehe da: Keine Aussetzer. Also keine neuen Erkenntnisse.
Wenn er irgendwo 0-Byte bekommt, könnte das die ganzen Größen natürlich durcheinander bringen. Websocket jetzt auch nicht so das 0-8-15-Protokoll. Man muss mal gucken wo der Fehler auftritt. Da bereits die Daten der Clients kaputt sind würde ich fast auf TCP tippen. Viel anderes bleibt ja auch nicht :D. Da könnte der Payload verschoben sein.. Es sind ja alle Daten da.
Habe bei fehlgeschlagenem Parsen und dadurch zerstörte Daten mal einen Hinweis auf dem Display eingefügt.
Seltsamerweise funktioniert die Änderung der Fahr-Werte auch nicht, wenn die Daten nicht aktualisiert werden WLAN und Client sind aber noch verfügbar, soweit ich das ohne großen Debuggen beurteilen kann. Zumindest wird kein Reset durchgeführt.
Ich werde einfach mal weiter probieren und gucken was dabei raus kommt. Vielleicht kommen auch die Teile demnächst.
Heute beim Twizy-Treffen wurde von mehreren Personen das Interesse an einem Reku-Umschalter geäußert. Na dann wollen wir mal!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • dexter
  • dexters Avatar
  • Moderator
  • Moderator
  • Beiträge: 6037
  • Dank erhalten: 4222
21 Jan 2019 23:30 #166040 von dexter
Reku on/off
Ich habe glaube ich einen Workaround für den 0-Byte-Bug gefunden, bitte schau mal ob die neue Version 3.2.001-10 die Metrics störungsfrei überträgt.

Michael

Twike 3 (2001) … Emco Novum (2011) … Twizy 80 (2012) … Mii electric+ (2020)

dexters-web.de

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

   Become a Patron