Sida 2 av 2

Re: Avläsning av S0 på elmätare via ESP8266

Postat: 12 februari 2017, 20:22:51
av Drivmedel
Trevligt projekt!

Försöker lära mig lite inom det här området men har kanske åldern och min dåliga Engelska mot mig.
Har kollat lite på Youtub och försöker få fart på en ESP8266 NodeMcu enhet köpt på kjell.com men lyckas inte få den att logga in i mitt nätverk som är ett 2,4GHz nät.
Kör Arduino 1.8.1.
Har inkluderat det här i Inställningar http://arduino.esp8266.com/stable/packa ... index.json.
I Boards manager har jag valt NodeMcu 1.0.
Har laddat ned koden från denna sida
http://www.instructables.com/id/Quick-S ... /?ALLSTEPS.
Har laddat ned biblioteken för alla #include.
Ändrat SSID och password till det som gäller min gateway.
Koden för blink får jag att funka, hämtad från länken ovan.
Koden för ESP8266 WiFi får jag inte att funka, enheten loggar inte in i mitt nät.
Vid kompileringen får jag inga felmeddelanden (vid första försöket av kompilering blir det några varningar men de kommer inte vid ett nytt försök).

Med seriell monitor ser man att den väntar på inloggning.
Kollar i PC-n scanna av i nätverksinställningar så finns det en enhet som heter ESP_014 som är den enheten som skall logga in.

Finns det någon vänlig själ som kan hjälpa mig??

Re: Avläsning av S0 på elmätare via ESP8266

Postat: 13 februari 2017, 07:00:59
av pstrand
Hej!

Har du möjlighet att ladda upp ditt projekt kan jag titta på om jag ser nått fel.

Re: Avläsning av S0 på elmätare via ESP8266

Postat: 13 februari 2017, 08:06:39
av Drivmedel
Här är en annan källkod jag testat med och ger samma resultat. Har hittat den på ett forum.
Har även kollat i min gateway under LAN IP där dyker en inte heller upp.
Har även kollat att det går att pinga den IP adress som kommer upp då jag scannar med PC-n mitt nät och hittar enheten där.

Kod: Markera allt

--------------------------------------------------------------------------------------------------------------------------------
/*
*  IVT 490 serial to MQTT

*/
 
#include <ESP8266WiFi.h>
#include <SoftwareSerial.h>
#include <ArduinoJson.h>
#include <PubSubClient.h>

const char* ssid = "Mittnät"; // WIFI-network
const char* password = "Mittpassord"; // WIFI-password
IPAddress MQTTserver(192, 168, 2, 191); // IP to MQTT-server
 
String inputString;
boolean stringComplete = false;
char inChar;
int counter;
int commaPosition;
float ivt[50];
 
WiFiClient wclient;
PubSubClient client(MQTTserver, 1883, wclient);
 
SoftwareSerial swSer(14, 12, false, 128);
 
float stringToFloat(String input){
  String stringTemp = input;
  char stfarray[stringTemp.length() + 1];
  stringTemp.toCharArray(stfarray, sizeof(stfarray));
  float stf = atof(stfarray);
  stringTemp = "";
  memset(stfarray, 0, sizeof stfarray);
  return stf; 
}
 
void setup_wifi() {
 
  delay(10);
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
 
  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());
}
 
 
void setup() {
    Serial.begin(115200);
    swSer.begin(9600);
    delay(10);
    
    setup_wifi();
}
 
void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect("ESP8266Client")) {
      Serial.println("connected");
      // Once connected, publish an announcement...
      client.publish("outTopic", "hello world");
      // ... and resubscribe
      client.subscribe("inTopic");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}
 
 
void mqttCommand(char* payload) {
  Serial.println("Publishing command");
  Serial.println(payload);
  client.publish("/ivt/output", payload); //MQTT-topic
  }
 
void fetchSerial ()
{
  while(swSer.available() > 0)
  {
    inChar = swSer.read();
    if(inChar != 32){
      inputString += inChar;
    }
    
    delay(2);
  }
  inChar = '0';
  Serial.println(inputString);
  stringComplete = true;
}
 
void splitString ()
{ 
  commaPosition = inputString.indexOf(';');
  while(commaPosition >= 0)
  {
    commaPosition = inputString.indexOf(';');
    if(commaPosition != -1)
    {
      ivt[counter] = stringToFloat(inputString.substring(0,commaPosition));
      inputString = inputString.substring(commaPosition+1, inputString.length());    
    }
    else
    {
      if(inputString.length() > 0){
        ivt[counter] = stringToFloat(inputString.substring(0,commaPosition));
      }
    }
    counter++;
  }
  counter = 0;
  inputString = "";
  commaPosition = 0;
 
  StaticJsonBuffer<800> jsonBuffer;
  JsonObject& root = jsonBuffer.createObject();
  root["framledn"] = ivt[1];
  root["ute"] = ivt[2];
  root["tappvarmv"] = ivt[3];
  root["varmev1"] = ivt[4];
  root["varmev2"] = ivt[5];
  root["inne"] = ivt[6];
  root["hetgas"] = ivt[7];
  root["egtemp"] = ivt[8];
  root["tryckvakt"] = ivt[9];
  root["hogtryck"] = ivt[10];
  root["lagtryck"] = ivt[11];
  root["egsemester"] = ivt[12];
  root["kompressor"] = ivt[13];
  root["schuntoppen"] = ivt[14];
  root["schuntstangd"] = ivt[15];
  root["cirkpump"] = ivt[16];
  //root["18"] = ivt[17];
  root["larm"] = ivt[18];
  //root["20"] = ivt[19];
  //root["21"] = ivt[20];
  //root["22"] = ivt[21];
  root["bvframledning"] = ivt[22];
  //root["24"] = ivt[23];
  //root["25"] = ivt[24];
  //root["26"] = ivt[25];
  //root["27"] = ivt[26];
  //root["28"] = ivt[27];
  //root["29"] = ivt[28];
  root["extravv1"] = ivt[29];
  root["extravv2"] = ivt[30];
  root["extravv3"] = ivt[31];
  //root["33"] = ivt[32];  
  root["elpatron"] = ivt[33];
  //root["35"] = ivt[34];
  root["extravv4"] = ivt[35];
  //root["37"] = ivt[36];
  //root.prettyPrintTo(Serial);
 
  char buffer[800];
  root.printTo(buffer, sizeof(buffer));
 
  memset(ivt, 0, sizeof ivt);
  stringComplete = false;
 
  Serial.println(buffer);
  mqttCommand(buffer);
}
 
 
void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();
  if(swSer.available() > 0)
  {
    fetchSerial();
  }
 
  if(stringComplete == true){
    delay(10);
    splitString();
    delay(50);
  }
}
---------------------------------------------------------------------------------------------------------------------------------------
Edit: lade till "code"-taggar - hcb

Re: Avläsning av S0 på elmätare via ESP8266

Postat: 13 februari 2017, 09:14:40
av pstrand
Jag får upp detta:

Connecting to SPACOMPUTING2
......
WiFi connected
IP address:
192.168.0.41
Attempting MQTT connection...failed, rc=-2 try again in 5 seconds
Attempting MQTT connection...failed, rc=-2 try again in 5 seconds
Attempting MQTT connection...failed, rc=-2 try again in 5 seconds
Attempting MQTT connection...failed, rc=-2 try again in 5 seconds
Attempting MQTT connection...failed, rc=-2 try again in 5 seconds
Attempting MQTT connection...failed, rc=-2 try again in 5 seconds

Re: Avläsning av S0 på elmätare via ESP8266

Postat: 13 februari 2017, 10:21:13
av Drivmedel
Mycket Tack!!
Detta bevisar ju att det måste vara något med mitt nätverk troligtvis något i inställningarna, har provat med att disable Security options i Routern utan bättre resultat.
Så nu har jag ingen ide om vad mer jag kan göra.
Lars

Re: Avläsning av S0 på elmätare via ESP8266

Postat: 13 februari 2017, 11:52:47
av pstrand
SSID, lösenord: "konstiga" tecken?
Kryptering: WEP, WPA etc. Prövat med att byta?
Trasig modul?

Re: Avläsning av S0 på elmätare via ESP8266

Postat: 13 februari 2017, 12:03:31
av bruka
Det kanske ligger kvar av NodeMCUs firmware i botten som ställer till det?
Har haft problem med det nån gång och fått lägga in en "blank.bin" för att tömma den helt, men det ska även gå att göra det om man kopplar ihop rx och tx och tryck reset (gpio 03 och 01) Sitter bredvid 3,3 volt och gnd. Kolla i serialmonitor när den gått klart


Jag använder Esp Easy som visserligen är Arduinokod från början men finns som färdigkompilerade bin filer på http://www.letscontrolit.com/wiki/index.php/ESPEasy

Edit, glömde en mening.

Re: Avläsning av S0 på elmätare via ESP8266

Postat: 13 februari 2017, 17:25:44
av Drivmedel
Har testat med tre olika enheter "NodeMcu"!
SSID och password innehåller bara a-f, A-F, 0-9!
Provat med reset-knappen då TX o RX är byglade!
Utan inloggning!

Security Options
Detta är Enable "WPA2-PSK(Wi-Fi Protected Access 2 Pre-Shared Key)"
Om jag ändrar Security Options är det väl risk att jag tappar kontakten med alla andra enheter i mitt nätverk?

Fler idéer?
Lars

Re: Avläsning av S0 på elmätare via ESP8266

Postat: 13 februari 2017, 17:33:15
av danielr112
Lite osäker på vad som skedde ovan men fick du IP? isåfall är du kopplad mot nätet.


kör en enkel sketch och connecta till wifi samt vänta tills det är gjort och printa sedan ut ipt. Om det går prova pinga från annan enhet.

/D

Re: Avläsning av S0 på elmätare via ESP8266

Postat: 13 februari 2017, 17:47:44
av Drivmedel
Nej!
Jag får ingen connect alltså ingen IP-adress.

Re: Avläsning av S0 på elmätare via ESP8266

Postat: 13 februari 2017, 17:50:30
av danielr112
Då borde den alltså stå still och printa ut detta:

Kod: Markera allt

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Gör den det?

Re: Avläsning av S0 på elmätare via ESP8266

Postat: 13 februari 2017, 18:11:28
av Drivmedel
Ja precis så beter den dig!
Lars

Re: Avläsning av S0 på elmätare via ESP8266

Postat: 13 februari 2017, 18:45:58
av Drivmedel
Tack för all hjälp!
Nu har jag lokaliserat problemet till min router från Comhem, åkte till min grabb för att prova mot deras nätverk och den loggade in direkt. Får kontakta Comhem.

Är ju nybörjare och har väl dåligt självförtroende och tror att problemet är jag själv.

Lars

Re: Avläsning av S0 på elmätare via ESP8266

Postat: 14 februari 2017, 00:07:21
av Hedis
Se om du kan välja mellan WPA, wpa2 eller WPA+WPA2 i accesspunkten/routern.
Prova isf att byta.

Re: Avläsning av S0 på elmätare via ESP8266

Postat: 15 februari 2017, 13:14:25
av Drivmedel
Ny Router från Comhem löste problemet.
Så nu gäller att komma vidare.
Lars