2nd Salinity module w/Cloud Wifi Hub

Expansion modules and attachments
User avatar
Loose
Posts: 88
Joined: Fri Sep 01, 2017 8:15 am
Location: Severna Park, MD

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by Loose »

Once I uploaded the code to it the hub produced that output via the serial monitor and then went dark. As in, the light wasn't on at all, I had to upload the previous code that you posted to get it to respond again.

Side note, now the UAPP doesn't work for me now. I get 'Cloud server: Connecting...' with no information. I can see info using the portal once I login.
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by rimai »

When you load the original code, does it produce the same log?
Roberto.
User avatar
Loose
Posts: 88
Joined: Fri Sep 01, 2017 8:15 am
Location: Severna Park, MD

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by Loose »

This is the monitor uploading the original code:

Code: Select all


SDK:3.0.0-dev(c0f7b44)/Core:2.5.0=20500000/lwIP:STABLE-2_1_2_RELEASE/glue:1.1/BearSSL:6778687

Current version: 1.0.1
0 temperature probe(s) found
failed to mount FS
*WM: Adding parameter
*WM: Cloud Username
*WM: Adding parameter
*WM: Cloud Password
*WM: 
*WM: AutoConnect
*WM: Connecting as wifi client...
*WM: Using last saved values, should be faster
scandone
scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 1
cnt 

connected with K2GVR, channel 6
dhcp client start...
ip:192.168.1.16,mask:255.255.255.0,gw:192.168.1.1
*WM: Connection result: 
*WM: 3
*WM: IP Address:
*WM: 192.168.1.16
username: 
Start
IP address: 192.168.1.16
Connecting to cloud server...
Failed, rc=5 try again in 30 seconds
bcn_timout,ap_probe_send_start
pm open,type:2 0
bcn_timout,ap_probe_send_start
bcn_timout,ap_probe_send_start
Connecting to cloud server...
Failed, rc=5 try again in 30 seconds

And this is what I get once I manually reset the Hub:

Code: Select all

add 1
aid 1
station: 74:c6:3b:ff:00:e3 join, AID = 1
*WM: Request redirected to captive portal
*WM: Handle root
*WM: Request redirected to captive portal
*WM: Request redirected to captive portal
*WM: Request redirected to captive portal
*WM: Handle root
*WM: Request redirected to captive portal
*WM: Request redirected to captive portal
*WM: Handle root
*WM: Handle root
scandone
*WM: Scan done
*WM: K2GVR
*WM: -44
*WM: spookynet
*WM: -82
*WM: NETGEAR51
*WM: -84
*WM: HP-Print-98-ENVY 120 series
*WM: -87
*WM: Fios-HYDFT
*WM: -88
*WM: DIRECT-90-HP ENVY Photo 7800
*WM: -90
*WM: Sent config page
*WM: Request redirected to captive portal
*WM: Request redirected to captive portal
*WM: Handle root
*WM: Request redirected to captive portal
*WM: WiFi save
*WM: Parameter
*WM: Cloud Username
*WM: Loose
*WM: Parameter
*WM: Cloud Password
*WM: ####### <--- modified
*WM: Sent wifi save page
*WM: Connecting to new AP
station: 74:c6:3b:ff:00:e3 leave, AID = 1
rm 1
bcn 0
del if1
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
bcn 0
del if1
mode : sta(5c:cf:7f:ff:6d:17)
Checking Wifi Credentials
*WM: Connecting as wifi client...
scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 1
cnt 

connected with K2GVR, channel 6
dhcp client start...
ip:192.168.1.16,mask:255.255.255.0,gw:192.168.1.1
*WM: Connection result: 
*WM: 3
Should save config
username: Loose
Start
saving config
failed to open config file for writing
{"mqtt_username":"Loose","mqtt_password":"####### <--- modified"}
IP address: 192.168.1.16
Connecting to cloud server...
Connected
Subscribing to Loose/out/#
Loose/in: all:0
Loose/in: io:255
Loose/in: cexp:0::-1
cloud:ATOLOW:0
cloud:ATOHIGH:0
cloud:EM:137
cloud:EM1:22
cloud:REM:7
cloud:BID:4
cloud:AF:0
cloud:SF:0
cloud:PWMD:95
cloud:PWMA:100
cloud:PWMDO:255
cloud:PWMAO:255
cloud:R1:227
R1:227
cloud:ROFF1:255
ROFF1:255
cloud:RON1:0
RON1:0
cloud:R2:131
R2:131
cloud:ROFF2:255
ROFF2:255
cloud:RON2:0
RON2:0
cloud:R3:0
R3:0
cloud:ROFF3:255
ROFF3:255
cloud:RON3:0
RON3:0
cloud:R4:0
R4:0
cloud:ROFF4:255
ROFF4:255
cloud:RON4:0
RON4:0
cloud:R5:0
R5:0
cloud:ROFF5:255

rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by rimai »

Ok, let's try this again.
Load this code and send the log:

Code: Select all

#include <FS.h>   //Include File System Headers
 
const char* filename = "/samplefile.txt";
 
  
void setup() {
  delay(1000);
  Serial.begin(57600);
  Serial.println();
 
  //Initialize File System
  if(SPIFFS.begin())
  {
    Serial.println("SPIFFS Initialize....ok");
  }
  else
  {
    Serial.println("SPIFFS Initialization...failed");
  }
 
  //Format File System
  if(SPIFFS.format())
  {
    Serial.println("File System Formated");
  }
  else
  {
    Serial.println("File System Formatting Error");
  }
 
  //Create New File And Write Data to It
  //w=Write Open file for writing
  File f = SPIFFS.open(filename, "w");
  
  if (!f) {
    Serial.println("file open failed");
  }
  else
  {
      //Write data to file
      Serial.println("Writing Data to File");
      f.print("This is sample data which is written in file\n");
      f.close();  //Close file
  }
 
}
 
void loop() {
  int i;
  
  //Read File data
  File f = SPIFFS.open(filename, "r");
  
  if (!f) {
    Serial.println("file open failed");
  }
  else
  {
      Serial.println("Reading Data from File:");
      //Data from file
      for(i=0;i<f.size();i++) //Read upto complete file size
      {
        Serial.print((char)f.read());
      }
      f.close();  //Close file
      Serial.println("File Closed");
  }
  delay(5000);
}
Roberto.
User avatar
Loose
Posts: 88
Joined: Fri Sep 01, 2017 8:15 am
Location: Severna Park, MD

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by Loose »

Uploaded and log:

Code: Select all

SDK:3.0.0-dev(c0f7b44)/Core:2.5.0=20500000/lwIP:STABLE-2_1_2_RELEASE/glue:1.1/BearSSL:6778687

SPIFFS Initialization...failed
File System Formatting Error
file open failed
file open failed
ip:192.168.1.16,mask:255.255.255.0,gw:192.168.1.1
file open failed
pm open,type:2 0
file open failed
file open failed
file open failed
file open failed
file open failed
file open failed
file open failed

Hub has no lights and no other log entries except repeating "file open failed"
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by rimai »

Just to be sure, you are using Adafruit HUZZAH ESP8266 and you have flash size as 4M (3M SPIFFS), correct?
Your log does not match to mine.
Also, You are using Arduino (Reef Angel compilation) v.1.6.8, right?
Roberto.
User avatar
Loose
Posts: 88
Joined: Fri Sep 01, 2017 8:15 am
Location: Severna Park, MD

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by Loose »

I started from scrath with uninstalling and reinstalling Arduino.

Hub connects automatically again and from your latest code I get.

Code: Select all

GDÚQ…@@HdI•÷LÑ»ëCP@æïTWZµ•FÄTÖ…é`\‰dHŠ`H…Öj¡VpJ…ØõëdJÄÚã…ÌTQÕ÷ß…HµZÄfû`\‹AíIµBHÉT^¥…
SPIFFS Initialize....ok

rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by rimai »

Good. Making progress.
Now I have to figure out the calibration still. Hang tight.
Roberto.
User avatar
Loose
Posts: 88
Joined: Fri Sep 01, 2017 8:15 am
Location: Severna Park, MD

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by Loose »

Roberto,

Any updates?
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by rimai »

Ok, I got it working now.
Upload your RA* code through the webwizard to use the latest libraries changes I have made.
Then, upload this to your cloud wifi hub and calibrate.

Code: Select all

#include <FS.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <ESP8266httpUpdate.h>
#include <WiFiManager.h>
#include <ArduinoJson.h>
#include <EEPROM.h>
#include <Ticker.h>
#include <Wire.h>
#include <OneWire.h>
#include <CloudGlobals.h>

// ***********************************************************************
// Change fallback ports below
// Fallback ports will be turned on when cloud connection is lost
// Add each port separated by a |
// For example, if you would like for port 1 and port 5 of Relay Box 1 to be turned on when cloud connection is lost,
// you should add Port1Bit | Port5Bit
// It would look like this:
// #define Relay1FallBack Port1Bit | Port5Bit

#define Relay1FallBack 0
#define Relay2FallBack 0
#define Relay3FallBack 0
#define Relay4FallBack 0
#define Relay5FallBack 0
#define Relay6FallBack 0
#define Relay7FallBack 0
#define Relay8FallBack 0

// Redirect expansion modules to another custom expansion field.
// This is only required if you have multiple modules of the same parameter.
// For example, if you have one Cloud module with an existing salinity module already and wants to add another Cloud module
// with anoter salinity module and report those readings as a Custom Expansion Module 1
// In this case you have to change the CloudCustomModule1 to CUSTOM_SALINITY.
// The values that can be entered are:
// CUSTOM_NONE  0
// CUSTOM_SALINITY  1
// CUSTOM_ORP 2
// CUSTOM_PHEXP 3
// CUSTOM_WL  4
// CUSTOM_MULTI_WL1 5
// CUSTOM_MULTI_WL2 6
// CUSTOM_MULTI_WL3 7
// CUSTOM_MULTI_WL4 8

#define CloudCustomModule1  CUSTOM_NONE
#define CloudCustomModule2  CUSTOM_NONE
#define CloudCustomModule3  CUSTOM_NONE
#define CloudCustomModule4  CUSTOM_NONE
#define CloudCustomModule5  CUSTOM_NONE
#define CloudCustomModule6  CUSTOM_NONE
#define CloudCustomModule7  CUSTOM_NONE
#define CloudCustomModule8  CUSTOM_NONE

// Assign Temperature probes ID
// Only assign temperature probes IDs that you currently are not using in the head unit.
// If you have a total of more than 3 probes, make sure to add the following line on the setup section of the head unit code:
// ReefAngel.AddExtraTempProbes();
// For example, if you only have 1 probe connected to the head unit, assign IDs 2 and 3.
// If you have 2 probes in the head unit and 2 probes in the Cloud Wifi Hub, you must add the above line and you would assign
// IDs 3 and 4.
// Assign ID 0 to unused probes in the Hub.

byte TempProbeIDs[] = {4, 5};

// Do not change anything below
// ***********************************************************************
// solid green - factory reset
// blink green - connecting wifi
// blink blue - configuration required (SoftAP)
// blink magenta - connecting to cloud server
// solid cyan - connected to cloud server
// blinking cyan - transmitting/receiving data
// solid yellow - firmware update

#define LED_GREEN 2
#define LED_BLUE 0
#define LED_RED 16
#define RESET_ALL A0
#define INPUT1  12
#define INPUT2  13
#define TEMP_PIN  14

#define version "1.0.1"

#define MQTTServer "cloud.reefangel.com"

#define MQTTPORT 1883 // MQTT server port

WiFiManager wifiManager;
WiFiClient espClient;
PubSubClient CloudClient(espClient);
Ticker ticker;
OneWire ds(TEMP_PIN);

byte data[2];
byte addr[8];
byte addr1[8];
byte addr2[8];

boolean first_connection = true;
boolean shouldSaveConfig = false;
boolean updating = false;

unsigned long cloudmillis = millis();
unsigned long client_timeout = millis();
unsigned long serial_timeout = millis();

String currentLine = "";                // make a String to hold incoming data from the client

char mqtt_username[32];
char mqtt_password[32];

void APtick()
{
  //toggle state
  int state = digitalRead(LED_BLUE);  // get the current state of GPIO1 pin
  digitalWrite(LED_BLUE, !state);     // set pin to the opposite state
}

void Wifitick()
{
  //toggle state
  int state = digitalRead(LED_GREEN);  // get the current state of GPIO1 pin
  digitalWrite(LED_GREEN, !state);     // set pin to the opposite state
}

void Cloudtick()
{
  //toggle state
  int state = digitalRead(LED_BLUE);  // get the current state of GPIO1 pin
  digitalWrite(LED_RED, !state);     // set pin to the opposite state
  digitalWrite(LED_BLUE, !state);     // set pin to the opposite state
}

void Datatick()
{
  //toggle state
  int state = digitalRead(LED_BLUE);  // get the current state of GPIO1 pin
  digitalWrite(LED_GREEN, !state);     // set pin to the opposite state
  digitalWrite(LED_BLUE, !state);     // set pin to the opposite state
}

void LED_Color(int Red, int Green, int Blue)
{
  analogWrite(LED_RED, 1023 - Red);
  analogWrite(LED_GREEN, 1023 - Green);
  analogWrite(LED_BLUE, 1023 - Blue);
}

int memory_read_int(int address)
{
  int temp=0;
  temp=EEPROM.read(address)<<8;
  temp+=EEPROM.read(address+1);
  return temp;
}

void memory_write_int(int address, const int data)
{
  if (memory_read_int(address) != data)
  {
    EEPROM.write(address,data>>8);
    EEPROM.write(address+1,data&0xff);
    EEPROM.commit();
  }
}

unsigned int crc16(int *ptr, byte len)
{
  unsigned int crc = 0xFFFF;
  byte i;
  byte temp = 0;
  int test;
  while (len--)
  {
    crc ^= *ptr++;
    for (i = 0; i < 8; i++)
    {
      if (crc & 0x01)
      {
        crc >>= 1;
        crc ^= 0xA001;
      }
      else
      {
        crc >>= 1;
      }
    }
  }
  return crc;
}

void blink_data_led(byte timer)
{
  digitalWrite(LED_RED, LOW);
  delay(timer);
  digitalWrite(LED_RED, HIGH);
}

void Publish(char* pub_buffer, char* buffer)
{
  CloudClient.publish(pub_buffer, buffer);
  Serial.print(pub_buffer);
  Serial.print(": ");
  Serial.println(buffer);
  blink_data_led(50);
}

void reconnect() {
  // Loop until we're reconnected
  if (!CloudClient.connected()) {
    cloudmillis = millis();
    //    Serial.print(F("Username: "));
    //    Serial.println(CLOUD_USERNAME);
    Serial.println("Connecting to cloud server...");
    // Attempt to connect
    //Serial.println(sub_buffer);
    if (CloudClient.connect(clientid, mqtt_username, mqtt_password)) {
      Serial.println("Connected");
      // Once connected, publish an announcement...
      Serial.print("Subscribing to ");
      Serial.println(sub_buffer);
      CloudClient.subscribe(sub_buffer);
      Publish(pub_buffer, "all:0");
      ticker.detach();
      LED_Color(0, 1023, 1023);

      //Serial.swap();
    } else {
      Serial.print("Failed, rc=");
      Serial.print(CloudClient.state());
      Serial.println(" try again in 30 seconds");
    }
  }
}

void ApplyCalibration(byte module, byte type)
{
  CustomExpansion[module - 1] = type;
  switch (type)
  {
    case CUSTOM_SALINITY:
      sprintf(pub_salinity, "cexp:%d:", module - 1);
      break;
    case CUSTOM_ORP:
      sprintf(pub_orp, "cexp:%d:", module - 1);
      break;
    case CUSTOM_PHEXP:
      sprintf(pub_phexp, "cexp:%d:", module - 1);
      break;
    case CUSTOM_WL:
      sprintf(pub_wl, "cexp:%d:", module - 1);
      sprintf(pub_custom_wl, "cexpc:%d:", module - 1);
      break;
    case CUSTOM_MULTI_WL1:
    case CUSTOM_MULTI_WL2:
    case CUSTOM_MULTI_WL3:
    case CUSTOM_MULTI_WL4:
      sprintf(pub_multiwl, "cexp:%d:", module - 1);
      sprintf(pub_custom_multiwl, "cexpc:%d:", module - 1);
      break;
    case CUSTOM_NONE:
      break;
  }
}

void saveConfigCallback () {
  Serial.println("Should save config");
  shouldSaveConfig = true;
}

void configModeCallback (WiFiManager *myWiFiManager) {
  LED_Color(0, 0, 0);
  ticker.detach();
  Serial.println("Entered config mode");
  WiFi.softAPIP();
  ticker.attach(0.5, APtick);
}

void WifiCheckCallback () {
  WiFi.softAPdisconnect(true);
  LED_Color(0, 0, 0);
  ticker.detach();
  Serial.println("Checking Wifi Credentials");
  ticker.attach(0.5, Wifitick);
}

void callback(char* topic, byte* payload, unsigned int length) {

  boolean data_found = false;
  int payload_data = 0;
  byte data_index = 0;

  Serial.print("cloud:");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();
  if (payload[0] == 'R' && payload[1] == 'O' && payload[2] == 'F' && payload[3] == 'F' && payload[5] == ':')
  {
    data_found = true;
    data_index = payload[4] - '0' - 1;
    for (byte a = 6; a < length; a++)
    {
      if (payload[a] != 10 && payload[a] != 13)
      {
        payload_data *= 10;
        payload_data += payload[a] - '0';
      }
    }
    RelayMaskOffE[data_index] = payload_data;
  }
  else if (payload[0] == 'R' && payload[1] == 'O' && payload[2] == 'N' && payload[4] == ':')
  {
    data_found = true;
    data_index = payload[3] - '0' - 1;
    for (byte a = 5; a < length; a++)
    {
      if (payload[a] != 10 && payload[a] != 13)
      {
        payload_data *= 10;
        payload_data += payload[a] - '0';
      }
    }
    RelayMaskOnE[data_index] = payload_data;
  }
  else if (payload[0] == 'R' && payload[2] == ':')
  {
    data_found = true;
    data_index = payload[1] - '0' - 1;
    for (byte a = 3; a < length; a++)
    {
      if (payload[a] != 10 && payload[a] != 13)
      {
        payload_data *= 10;
        payload_data += payload[a] - '0';
      }
    }
    RelayDataE[data_index] = payload_data;
  }
  else if (payload[0] == 'P' && payload[1] == 'W' && payload[2] == 'M' && payload[3] == 'E' && payload[5] == ':')
  {
    data_found = true;
    data_index = payload[4] - '0';
    for (byte a = 6; a < length; a++)
    {
      if (payload[a] != 10 && payload[a] != 13)
      {
        payload_data *= 10;
        payload_data += payload[a] - '0';
      }
    }
    ExpansionChannel[data_index] = payload_data;
  }
  else if (payload[0] == 'P' && payload[1] == 'W' && payload[2] == 'M' && payload[3] == 'E' && payload[5] == 'O' && payload[6] == ':')
  {
    data_found = true;
    data_index = payload[4] - '0';
    for (byte a = 7; a < length; a++)
    {
      if (payload[a] != 10 && payload[a] != 13)
      {
        payload_data *= 10;
        payload_data += payload[a] - '0';
      }
    }
    ExpansionChannelOverride[data_index] = payload_data;
  }
  else if (payload[0] == 'P' && payload[1] == 'W' && payload[2] == 'M' && payload[3] == '1' && payload[4] == '6' && payload[5] == 'E' && payload[8] == ':')
  {
    data_found = true;
    data_index = (payload[6] - '0') * 10;
    data_index += (payload[7] - '0');
    for (byte a = 9; a < length; a++)
    {
      if (payload[a] != 10 && payload[a] != 13)
      {
        payload_data *= 10;
        payload_data += payload[a] - '0';
      }
    }
    Expansion16Channel[data_index] = payload_data;
  }
  else if (payload[0] == 'P' && payload[1] == 'W' && payload[2] == 'M' && payload[3] == '1' && payload[4] == '6' && payload[5] == 'E' && payload[6] == 'O' && payload[9] == ':')
  {
    data_found = true;
    data_index = (payload[7] - '0') * 10;
    data_index += (payload[8] - '0');
    for (byte a = 10; a < length; a++)
    {
      if (payload[a] != 10 && payload[a] != 13)
      {
        payload_data *= 10;
        payload_data += payload[a] - '0';
      }
    }
    Expansion16ChannelOverride[data_index] = payload_data;
  }
  else if (payload[0] == 'O' && payload[1] == 'R' && payload[2] == 'P' && payload[3] == 'C' && payload[4] == ':' && ORPFound)
  {
    Serial.println(F("ORP calibration"));
    data_found = true;
    if (payload[5] == '0')
      ORPCal = false;
    else if (payload[5] == '1')
      ORPCal = true;
    else if (payload[5] == '2')
    {
      for (byte a = 7; a < length; a++)
      {
        if (payload[a] != 10 && payload[a] != 13)
        {
          payload_data *= 10;
          payload_data += payload[a] - '0';
        }
      }
      CalVal1 = payload_data;
    }
    else if (payload[5] == '3')
    {
      for (byte a = 7; a < length; a++)
      {
        if (payload[a] != 10 && payload[a] != 13)
        {
          payload_data *= 10;
          payload_data += payload[a] - '0';
        }
      }
      memory_write_int(Mem_I_ORPMin, CalVal1);
      memory_write_int(Mem_I_ORPMax, payload_data);
      ORPMin = CalVal1;
      ORPMax = payload_data;
      ORPCal = false;
    }
  }
  else if (payload[0] == 'S' && payload[1] == 'A' && payload[2] == 'L' && payload[3] == 'C' && payload[4] == ':' && SalinityFound)
  {
    Serial.println(F("Sal calibration"));
    data_found = true;
    if (payload[5] == '0')
      SalCal = false;
    else if (payload[5] == '1')
      SalCal = true;
    else if (payload[5] == '2')
    {
      for (byte a = 7; a < length; a++)
      {
        if (payload[a] != 10 && payload[a] != 13)
        {
          payload_data *= 10;
          payload_data += payload[a] - '0';
        }
      }
      memory_write_int(Mem_I_SalMax, payload_data);
      SalMax = payload_data;
      SalCal = false;
    }
  }
  else if (payload[0] == 'P' && payload[1] == 'H' && payload[2] == 'E' && payload[3] == 'C' && payload[4] == ':' && PHExpFound)
  {
    Serial.println(F("PH Exp calibration"));
    data_found = true;
    if (payload[5] == '0')
      PHExpCal = false;
    else if (payload[5] == '1')
      PHExpCal = true;
    else if (payload[5] == '2')
    {
      for (byte a = 7; a < length; a++)
      {
        if (payload[a] != 10 && payload[a] != 13)
        {
          payload_data *= 10;
          payload_data += payload[a] - '0';
        }
      }
      CalVal1 = payload_data;
    }
    else if (payload[5] == '3')
    {
      for (byte a = 7; a < length; a++)
      {
        if (payload[a] != 10 && payload[a] != 13)
        {
          payload_data *= 10;
          payload_data += payload[a] - '0';
        }
      }
      memory_write_int(Mem_I_PHExpMin, CalVal1);
      memory_write_int(Mem_I_PHExpMax, payload_data);
      PHExpMin = CalVal1;
      PHExpMax = payload_data;
      PHExpCal = false;
    }
  }
  else if (payload[0] == 'W' && payload[1] == 'L' && payload[3] == 'C' && payload[4] == ':' && (WLFound || MultiWLFound))
  {
    Serial.println(F("WL calibration"));
    data_found = true;
    data_index = payload[2] - '0';
    if (payload[5] == '0')
      WLCal[data_index] = false;
    else if (payload[5] == '1')
    {
      if (data_index == 0 && WLFound)
        WLCal[data_index] = true;
      if (data_index > 0 && MultiWLFound)
        WLCal[data_index] = true;
    }
    else if (payload[5] == '2')
    {
      for (byte a = 7; a < length; a++)
      {
        if (payload[a] != 10 && payload[a] != 13)
        {
          payload_data *= 10;
          payload_data += payload[a] - '0';
        }
      }
      CalVal1 = payload_data;
    }
    else if (payload[5] == '3')
    {
      for (byte a = 7; a < length; a++)
      {
        if (payload[a] != 10 && payload[a] != 13)
        {
          payload_data *= 10;
          payload_data += payload[a] - '0';
        }
      }
      if (data_index == 0)
      {
        memory_write_int(Mem_I_WaterLevelMin, CalVal1);
        memory_write_int(Mem_I_WaterLevelMax, payload_data);
      }
      if (data_index > 0 && data_index < 5)
      {
        memory_write_int(Mem_I_WaterLevel1Min + (data_index * 2) - 2, CalVal1);
        memory_write_int(Mem_I_WaterLevel1Max + (data_index * 2) - 2, payload_data);
      }
      WLMin[data_index] = CalVal1;
      WLMax[data_index] = payload_data;
      WLCal[data_index] = false;
    }
  }
  else if (payload[0] == 'C' && payload[1] == 'E' && payload[2] == 'X' && payload[3] == 'P' && payload[5] == 'C' && payload[6] == ':')
  {
    Serial.println(F("Custom Exp calibration"));
    data_found = true;
    data_index = payload[4] - '0';
    if (payload[7] == '0')
    {
      if (pub_salinity[0] == 'c' && CustomExpansion[data_index] == CUSTOM_SALINITY) SalCal = false;
      if (pub_orp[0] == 'c' && CustomExpansion[data_index] == CUSTOM_ORP) ORPCal = false;
      if (pub_phexp[0] == 'c' && CustomExpansion[data_index] == CUSTOM_PHEXP) PHExpCal = false;
      if (pub_wl[0] == 'c' && CustomExpansion[data_index] == CUSTOM_WL) WLCal[0] = false;
      for (int a = 1; a < WL_CHANNELS; a++)
        if (pub_multiwl[0] == 'c' && CustomExpansion[data_index] >= CUSTOM_MULTI_WL1 && CustomExpansion[data_index] <= CUSTOM_MULTI_WL4) WLCal[a] = false;
    }
    else if (payload[7] == '1')
    {
      if (pub_salinity[0] == 'c' && CustomExpansion[data_index] == CUSTOM_SALINITY) SalCal = true;
      if (pub_orp[0] == 'c' && CustomExpansion[data_index] == CUSTOM_ORP) ORPCal = true;
      if (pub_phexp[0] == 'c' && CustomExpansion[data_index] == CUSTOM_PHEXP) PHExpCal = true;
      if (pub_wl[0] == 'c' && CustomExpansion[data_index] == CUSTOM_WL) WLCal[0] = true;
      if (pub_multiwl[0] == 'c' && CustomExpansion[data_index] == CUSTOM_MULTI_WL1) WLCal[1] = true;
      if (pub_multiwl[0] == 'c' && CustomExpansion[data_index] == CUSTOM_MULTI_WL2) WLCal[2] = true;
      if (pub_multiwl[0] == 'c' && CustomExpansion[data_index] == CUSTOM_MULTI_WL3) WLCal[3] = true;
      if (pub_multiwl[0] == 'c' && CustomExpansion[data_index] == CUSTOM_MULTI_WL4) WLCal[4] = true;
    }
    else if (payload[7] == '2')
    {
      for (byte a = 9; a < length; a++)
      {
        payload_data *= 10;
        payload_data += payload[a] - '0';
      }
      CalVal1 = payload_data;
    }
    else if (payload[7] == '3')
    {
      for (byte a = 9; a < length; a++)
      {
        payload_data *= 10;
        payload_data += payload[a] - '0';
      }
      if (pub_salinity[0] == 'c')
      {
        memory_write_int(Mem_I_SalMax, payload_data);
        SalMax = payload_data;
        SalCal = false;
      }
      if (pub_orp[0] == 'c')
      {
        memory_write_int(Mem_I_ORPMin, CalVal1);
        memory_write_int(Mem_I_ORPMax, payload_data);
        ORPMin = CalVal1;
        ORPMax = payload_data;
        ORPCal = false;
      }
      if (pub_phexp[0] == 'c')
      {
        memory_write_int(Mem_I_PHExpMin, CalVal1);
        memory_write_int(Mem_I_PHExpMax, payload_data);
        PHExpMin = CalVal1;
        PHExpMax = payload_data;
        PHExpCal = false;
      }
      if (pub_wl[0] == 'c')
      {
        memory_write_int(Mem_I_WaterLevelMin, CalVal1);
        memory_write_int(Mem_I_WaterLevelMax, payload_data);
        WLMin[0] = CalVal1;
        WLMax[0] = payload_data;
        WLCal[0] = false;
      }
      for (int a = 1; a < WL_CHANNELS; a++)
        if (pub_multiwl[0] == 'c' && WLCal[a] == true)
        {
          memory_write_int(Mem_I_WaterLevel1Min + (a * 2) - 2, CalVal1);
          memory_write_int(Mem_I_WaterLevel1Max + (a * 2) - 2, payload_data);
          WLMin[a] = CalVal1;
          WLMax[a] = payload_data;
          WLCal[a] = false;
        }
    }
  }
  if (data_found)
  {
    blink_data_led(30);
    for (int a = 0; a < length; a++)
      Serial.write(payload[a]);
    Serial.println();
  }
}

void setup() {
  pinMode(LED_GREEN, OUTPUT);
  pinMode(LED_BLUE, OUTPUT);
  pinMode(LED_RED, OUTPUT);
  pinMode(INPUT1, INPUT_PULLUP);
  pinMode(INPUT2, INPUT_PULLUP);
  digitalWrite(LED_GREEN, LOW);
  digitalWrite(LED_BLUE, HIGH);
  digitalWrite(LED_RED, HIGH);
  randomSeed(analogRead(0));
  wifi_station_set_hostname( "ReefAngelCloudHub" );
  Serial.begin(57600);
  Serial.setRxBufferSize(2048);
  EEPROM.begin(512);
  Wire.begin();

  wifiManager.setDebugOutput(true);

  Serial.println("");
  Serial.print("Current version: ");
  Serial.println(version);

  SalinityFound = false;
  ORPFound = false;
  PHExpFound = false;
  WLFound = false;
  MultiWLFound = false;
  HumidityFound = false;

  sprintf(pub_salinity, "sal");
  sprintf(pub_orp, "orp");
  sprintf(pub_phexp, "phe");
  sprintf(pub_wl, "wl");
  sprintf(pub_multiwl, "wl");
  sprintf(pub_humidity, "hum");

  // Temperature
  byte count = 0;
  while (ds.search(addr))
  {
    if (addr[0] == 0x28)
    {
      count++;
      if (count == 1) memcpy(addr1, addr, 8);
      if (count == 2) memcpy(addr2, addr, 8);
    }
  }
  ds.reset_search();
  Serial.print(count);
  Serial.println(" temperature probe(s) found");

  // Relay
  for ( byte EID = 0; EID < MAX_RELAY_EXPANSION_MODULES; EID++ )
  {
    RelayDataE[EID] = 0;
    RelayMaskOnE[EID] = 0;
    RelayMaskOffE[EID] = 0xff;
  }
  RelayFallBackE[0] = Relay1FallBack;
  RelayFallBackE[1] = Relay2FallBack;
  RelayFallBackE[2] = Relay3FallBack;
  RelayFallBackE[3] = Relay4FallBack;
  RelayFallBackE[4] = Relay5FallBack;
  RelayFallBackE[5] = Relay6FallBack;
  RelayFallBackE[6] = Relay7FallBack;
  RelayFallBackE[7] = Relay8FallBack;

  // Dimming
  lastcrc = -1;
  for ( byte a = 0; a < PWM_EXPANSION_CHANNELS; a++ )
  {
    ExpansionChannel[a] = 0;
    ExpansionChannelOverride[a] = 255;
  }

  // 16 Channel Dimming
  lastcrc16 = -1;
  for ( byte a = 0; a < PWM16_EXPANSION_CHANNELS; a++ )
  {
    Expansion16Channel[a] = 0;
    Expansion16ChannelOverride[a] = 255;
  }

  // IO
  Params.IO = 63;
  OldParams.IO = 63;

  // Leak
  Params.Leak = 0;
  OldParams.Leak = 0;

  // ORP
  Params.ORP = 0;
  OldParams.ORP = 0;
  ORPCal = false;
  ORPMin = memory_read_int(Mem_I_ORPMin);
  if (ORPMin == 65535) ORPMin = 0;
  ORPMax = memory_read_int(Mem_I_ORPMax);

  // Salinity
  Params.Salinity = 0;
  OldParams.Salinity = 0;
  SalCal = false;
  SalMax = memory_read_int(Mem_I_SalMax);

  // pH Exp
  Params.PHExp = 0;
  OldParams.PHExp = 0;
  PHExpCal = false;
  PHExpMin = memory_read_int(Mem_I_PHExpMin);
  if (PHExpMin == 65535) PHExpMin = 0;
  PHExpMax = memory_read_int(Mem_I_PHExpMax);

  // Humidity
  Params.Humidity = 0;
  OldParams.Humidity = 0;

  // Water Level
  for (int a = 0; a < WL_CHANNELS; a++)
  {
    Params.WL[a] = 0;
    OldParams.WL[a] = 0;
    WLCal[a] = false;
  }
  WLMin[0] = memory_read_int(Mem_I_WaterLevelMin);
  WLMax[0] = memory_read_int(Mem_I_WaterLevelMax);
  WLMin[1] = memory_read_int(Mem_I_WaterLevel1Min);
  WLMax[1] = memory_read_int(Mem_I_WaterLevel1Max);
  WLMin[2] = memory_read_int(Mem_I_WaterLevel2Min);
  WLMax[2] = memory_read_int(Mem_I_WaterLevel2Max);
  WLMin[3] = memory_read_int(Mem_I_WaterLevel3Min);
  WLMax[3] = memory_read_int(Mem_I_WaterLevel3Max);
  WLMin[4] = memory_read_int(Mem_I_WaterLevel4Min);
  WLMax[4] = memory_read_int(Mem_I_WaterLevel4Max);

  for (int a = 0; a < 5; a++)
  {
    if (WLMin[a] == 65535) WLMin[a] = 0;
  }
  ApplyCalibration(1, CloudCustomModule1);
  ApplyCalibration(2, CloudCustomModule2);
  ApplyCalibration(3, CloudCustomModule3);
  ApplyCalibration(4, CloudCustomModule4);
  ApplyCalibration(5, CloudCustomModule5);
  ApplyCalibration(6, CloudCustomModule6);
  ApplyCalibration(7, CloudCustomModule7);
  ApplyCalibration(8, CloudCustomModule8);

  if (analogRead(RESET_ALL) < 50)
  {
    //    updating=true;
    Serial.println("Resetting");
    EEPROM.write(128, 0);
    EEPROM.commit();
    ESP.reset();
    while (1);
  }

  wifiManager.setVersion(version);
  if (EEPROM.read(128) != 1)
  {
    wifiManager.resetSettings();
    SPIFFS.format();
    EEPROM.write(128, 1);
    EEPROM.commit();
  }

  if (SPIFFS.begin()) {
    Serial.println("mounted file system");
    if (SPIFFS.exists("/config.json")) {
      //file exists, reading and loading
      Serial.println("reading config file");
      File configFile = SPIFFS.open("/config.json", "r");
      if (configFile) {
        Serial.println("opened config file");
        size_t size = configFile.size();
        // Allocate a buffer to store contents of the file.
        std::unique_ptr<char[]> buf(new char[size]);

        configFile.readBytes(buf.get(), size);
        DynamicJsonBuffer jsonBuffer;
        JsonObject& json = jsonBuffer.parseObject(buf.get());
        json.printTo(Serial);
        if (json.success()) {
          Serial.println("\nparsed json");

          strcpy(mqtt_username, json["mqtt_username"]);
          strcpy(mqtt_password, json["mqtt_password"]);

        } else {
          Serial.println("failed to load json config");
        }
      }
    }
  } else {
    Serial.println("failed to mount FS");
  }

  WiFiManagerParameter custom_mqtt_username("Cloud Username", "Cloud Username", mqtt_username, 40);
  WiFiManagerParameter custom_mqtt_password("Cloud Password", "Cloud Password", mqtt_password, 40);
  wifiManager.addParameter(&custom_mqtt_username);
  wifiManager.addParameter(&custom_mqtt_password);
  wifiManager.setSaveConfigCallback(saveConfigCallback);
  wifiManager.setAPCallback(configModeCallback);
  wifiManager.setCheckWifiCallback(WifiCheckCallback);

  LED_Color(0, 0, 0);
  ticker.attach(0.5, Wifitick);
  wifiManager.autoConnect("ReefAngelCloudHub");
  ticker.detach();
  LED_Color(900, 0, 1023);

  CloudClient.setServer(MQTTServer, MQTTPORT);
  CloudClient.setCallback(callback);

  strcpy(mqtt_username, custom_mqtt_username.getValue());
  strcpy(mqtt_password, custom_mqtt_password.getValue());
  Serial.print("username: ");
  Serial.println(mqtt_username);
  //  Serial.print("password: ");
  //  Serial.println(mqtt_password);
  sprintf(clientid, "%s%02d", mqtt_username, random(10000));
  sprintf(pub_buffer, "%s/in", mqtt_username);
  sprintf(sub_buffer, "%s/out/#", mqtt_username);
  Serial.println("Start");

  if (shouldSaveConfig) {
    Serial.println("saving config");
    DynamicJsonBuffer jsonBuffer;
    JsonObject& json = jsonBuffer.createObject();
    json["mqtt_username"] = mqtt_username;
    json["mqtt_password"] = mqtt_password;

    File configFile = SPIFFS.open("/config.json", "w");
    if (!configFile) {
      Serial.println("failed to open config file for writing");
    }

    json.printTo(Serial);
    Serial.println("");
    json.printTo(configFile);
    configFile.close();
    //end save
  }

  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

}

void loop() {
  if ((analogRead(RESET_ALL) < 50) && !updating)
  {
    if (WiFi.status() == WL_CONNECTED)
    {
      updating = true;
      ticker.detach();
      LED_Color(1023, 900, 0);
      Serial.println("Updating...");
      ESPhttpUpdate.update("forum.reefangel.com", 80, "/firmware/CloudWifiESP8266Hub.ino.bin");
    }
    else
    {
      Serial.println("Resetting");
      EEPROM.write(128, 0);
      EEPROM.commit();
      ESP.reset();
      while (1);
    }
  }
  if (!CloudClient.connected() && (((millis() - cloudmillis) > 30000) || first_connection)) {
    first_connection = false;
    LED_Color(0, 0, 0);
    ticker.detach();
    ticker.attach(0.5, Cloudtick);
    reconnect();
  }
  CloudClient.loop();

  // Relay
  for ( byte EID = 0; EID < MAX_RELAY_EXPANSION_MODULES; EID++ )
  {
    byte TempRelay = RelayDataE[EID];
    TempRelay &= RelayMaskOffE[EID];
    TempRelay |= RelayMaskOnE[EID];
    if (!CloudClient.connected())
      TempRelay = RelayFallBackE[EID];
    Wire.beginTransmission(I2CExpModule + EID);
    Wire.write(~TempRelay);  // MSB
    Wire.endTransmission();
  }

  // Dimming
  byte thiscrc = 0;
  for ( byte a = 0; a < PWM_EXPANSION_CHANNELS; a++ )
  {
    thiscrc += ExpansionChannel[a] * (a + 1);
    thiscrc += ExpansionChannelOverride[a] * (a + 1);
  }
  if (millis() % 60000 < 200) lastcrc = -1;
  if (lastcrc != thiscrc || millis() < 5000)
  {
    lastcrc = thiscrc;
    // setup PCA9685 for data receive
    // we need this to make sure it will work if connected ofter controller is booted, so we need to send it all the time.
    Wire.beginTransmission(I2CPWM_PCA9685);
    Wire.write((uint8_t)0);
    Wire.write(0xa1);
    Wire.endTransmission();
    for ( byte a = 0; a < PWM_EXPANSION_CHANNELS; a++ )
    {
      int data;
      if (ExpansionChannelOverride[a] <= 100)
        data = ExpansionChannelOverride[a] * 40.96;
      else
        data = ExpansionChannel[a] * 40.96;
      Wire.beginTransmission(I2CPWM_PCA9685);
      Wire.write(0x8 + (4 * a));
      Wire.write(data & 0xff);
      Wire.write(data >> 8);
      Wire.endTransmission();
    }
  }

  // 16 Channel Dimming
  int thiscrc16 = 0;
  for ( byte a = 0; a < PWM16_EXPANSION_CHANNELS; a++ )
  {
    thiscrc16 += Expansion16Channel[a] * (a + 1);
    thiscrc16 += Expansion16ChannelOverride[a] * (a + 1);
  }
  if (millis() % 60000 < 200) lastcrc16 = -1;
  if (lastcrc16 != thiscrc16 || millis() < 5000)
  {
    lastcrc16 = thiscrc16;
    // setup PCA9685 for data receive
    // we need this to make sure it will work if connected ofter controller is booted, so we need to send it all the time.
    Wire.beginTransmission(I2CPWM_16CH_PCA9685);
    Wire.write((uint8_t)0);
    Wire.write(0xa1);
    Wire.endTransmission();
    for ( byte a = 0; a < PWM16_EXPANSION_CHANNELS; a++ )
    {
      int data;
      if (Expansion16ChannelOverride[a] <= 100)
        data = Expansion16ChannelOverride[a];
      else
        data = Expansion16Channel[a];
      Wire.beginTransmission(I2CPWM_16CH_PCA9685);
      Wire.write(0x8 + (4 * a));
      Wire.write(data & 0xff);
      Wire.write(data >> 8);
      Wire.endTransmission();
    }
  }

  if (CloudClient.connected())
  {
    // IO
    Params.IO = 63;
    Wire.requestFrom(I2CIO_PCF8574, 1);
    if (Wire.available())
      Params.IO = Wire.read();
    if (digitalRead(INPUT1) == HIGH) Params.IO += 64;
    if (digitalRead(INPUT2) == HIGH) Params.IO += 128;
    if (Params.IO != OldParams.IO)
    {
      OldParams.IO = Params.IO;
      sprintf(buffer, "io:%d", Params.IO);
      Publish(pub_buffer, buffer);
    }

    // Leak
    int iLeak = 0;
    Wire.requestFrom(I2CLeak, 2);
    if (Wire.available())
    {
      iLeak = Wire.read();
      iLeak = iLeak << 8;
      iLeak += Wire.read();
      Params.Leak = iLeak > 2000;
    }
    if (Params.Leak != OldParams.Leak)
    {
      OldParams.Leak = Params.Leak;
      sprintf(buffer, "leak:%d", Params.Leak);
      Publish(pub_buffer, buffer);
    }

    if (millis() - Paramsmillis > 1000)
    {
      Paramsmillis = millis();

      // Temperature
      if (addr1[0] != 0)
      {
        ds.reset();
        ds.select(addr1);
        ds.write(0xBE);         // Read Scratchpad
        for (byte i = 0; i < 2; i++)
        {
          data[i] = ds.read();
        }
        Params.Temp[1] = (data[1] << 8) + data[0]; //take the two bytes from the response relating to temperature
        Params.Temp[1] = Params.Temp[1] / 1.6;
        if (Params.Temp[1] == 0) Params.Temp[1] = 0;
        if (Params.Temp[1] > 850) Params.Temp[1] = 0;
        Params.Temp[1] = Params.Temp[1] * 1.8 + 320;
        if (Params.Temp[1] != OldParams.Temp[1])
        {
          OldParams.Temp[1] = Params.Temp[1];
          sprintf(buffer, "t:%d:%d", TempProbeIDs[0], Params.Temp[1]);
          if (TempProbeIDs[0] != 0) Publish(pub_buffer, buffer);
        }
      }
      if (addr2[0] != 0)
      {
        ds.reset();
        ds.select(addr2);
        ds.write(0xBE);         // Read Scratchpad
        for (byte i = 0; i < 2; i++)
        {
          data[i] = ds.read();
        }
        Params.Temp[2] = (data[1] << 8) + data[0]; //take the two bytes from the response relating to temperature
        Params.Temp[2] = Params.Temp[2] / 1.6;
        if (Params.Temp[2] == 0) Params.Temp[2] = 0;
        if (Params.Temp[2] > 850) Params.Temp[2] = 0;
        Params.Temp[2] = Params.Temp[2] * 1.8 + 320;
        if (Params.Temp[2] != OldParams.Temp[2])
        {
          OldParams.Temp[2] = Params.Temp[2];
          sprintf(buffer, "t:%d:%d", TempProbeIDs[1], Params.Temp[2]);
          if (TempProbeIDs[1] != 0) Publish(pub_buffer, buffer);
        }
      }

      // ORP
      unsigned long temporp = 0;
      int iORP = 0;
      for (int a = 0; a < 20; a++)
      {
        Wire.requestFrom(I2CORP, 2);
        if (Wire.available())
        {
          iORP = Wire.read();
          iORP = iORP << 8;
          iORP += Wire.read();
        }
        temporp += iORP;
      }
      temporp = temporp / 20;
      if (temporp != 0)
      {
        Params.ORP = map(temporp, ORPMin, ORPMax, 0, 470); // apply the calibration to the sensor reading
        Params.ORP = constrain(Params.ORP, 0, 550);
        if (pub_orp[0] == 'o') ORPFound = true;
      }
      if (ORPCal)
      {
        if (pub_orp[0] == 'o') sprintf(buffer, "%sc:%d", pub_orp, temporp);
        if (pub_orp[0] == 'c')
        {
          sprintf(buffer, "cexpc:%c:%d", pub_orp[5], temporp);
        }
        Publish(pub_buffer, buffer);
      }
      else
      {
        if (Params.ORP != OldParams.ORP)
        {
          OldParams.ORP = Params.ORP;
          sprintf(buffer, "%s:%d", pub_orp, Params.ORP);
          Publish(pub_buffer, buffer);
        }
      }

      // Salinity
      unsigned long tempsal = 0;
      int iSAL = 0;
      for (int a = 0; a < 20; a++)
      {
        Wire.requestFrom(I2CSalinity, 2);
        if (Wire.available())
        {
          iSAL = Wire.read();
          iSAL = iSAL << 8;
          iSAL += Wire.read();
        }
        tempsal += iSAL;
      }
      tempsal = tempsal / 20;
      if (tempsal != 0)
      {
        Params.Salinity = map(tempsal, 0, SalMax, 60, 350); // apply the calibration to the sensor reading
        if (pub_salinity[0] == 's') SalinityFound = true;
      }
      if (SalCal)
      {
        if (pub_salinity[0] == 's') sprintf(buffer, "%sc:%d", pub_salinity, tempsal);
        if (pub_salinity[0] == 'c')
        {
          sprintf(buffer, "cexpc:%c:%d", pub_salinity[5], tempsal);
        }
        Publish(pub_buffer, buffer);
      }
      else
      {
        if (Params.Salinity != OldParams.Salinity)
        {
          OldParams.Salinity = Params.Salinity;
          sprintf(buffer, "%s:%d", pub_salinity, Params.Salinity);
          Publish(pub_buffer, buffer);
        }
      }

      // pH Exp
      unsigned long tempphexp = 0;
      int iPHExp = 0;
      for (int a = 0; a < 20; a++)
      {
        Wire.requestFrom(I2CPH, 2);
        if (Wire.available())
        {
          iPHExp = Wire.read();
          iPHExp = iPHExp << 8;
          iPHExp += Wire.read();
        }
        tempphexp += iPHExp;
      }
      tempphexp = tempphexp / 20;
      if (tempphexp != 0)
      {
        Params.PHExp = map(tempphexp, PHExpMin, PHExpMax, 700, 1000); // apply the calibration to the sensor reading
        Params.PHExp = constrain(Params.PHExp, 100, 1400);
        if (pub_phexp[0] == 'p') PHExpFound = true;
      }
      if (PHExpCal)
      {
        if (pub_orp[0] == 'p') sprintf(buffer, "%sc:%d", pub_phexp, tempphexp);
        if (pub_orp[0] == 'c')
        {
          sprintf(buffer, "cexpc:%c:%d", pub_phexp[5], tempphexp);
        }
        Publish(pub_buffer, buffer);
      }
      else
      {
        if (Params.PHExp != OldParams.PHExp)
        {
          OldParams.PHExp = Params.PHExp;
          sprintf(buffer, "%s:%d", pub_phexp, Params.PHExp);
          Publish(pub_buffer, buffer);
        }
      }

      // PAR
      unsigned long temppar = 0;
      int iPAR = 0;
      for (int a = 0; a < 20; a++)
      {
        Wire.requestFrom(I2CPAR, 2);
        if (Wire.available())
        {
          iPAR = Wire.read();
          iPAR = iPAR << 8;
          iPAR += Wire.read();
        }
        temppar += iPAR;
      }
      temppar = temppar / 20;
      if (temppar != 0)
      {
        temppar *= 5000; // apply the calibration to the sensor reading
        temppar /= 8192;
        Params.PAR = temppar;
      }
      if (Params.PAR != OldParams.PAR)
      {
        OldParams.PAR = Params.PAR;
        sprintf(buffer, "par:%d", Params.PAR);
        Publish(pub_buffer, buffer);
      }

      // Humidity
      int iHumidity = 0;
      int reply[10];

      Wire.beginTransmission(I2CHumidity);
      Wire.endTransmission();  // For some reason, it needs this to work??? Bug with sensor??
      Wire.beginTransmission(I2CHumidity);
      Wire.write(0x3); // 0x3 for read 0x10 for write to registers
      Wire.write((byte)0x0);  // start at address 0x0 for humidity
      Wire.write(2);  // request 2 bytes data for humidity or 4 bytes for temperature+humidity
      Wire.endTransmission();

      Wire.requestFrom(I2CHumidity, 6); // Request 6 bytes
      for (int i = 0; i < 6; i++)
        if (Wire.available()) reply[i] = Wire.read();
      if (reply[0] == 0x3 && reply[1] == 0x2) // The response need to contain function (0x3) and length of data (0x2)
      {
        int crc = reply[5];
        crc <<= 8;
        crc += reply[4];
        if (crc == crc16(reply, 4))
        {
          iHumidity = reply[2];
          iHumidity <<= 8;
          iHumidity += reply[3];
        }
      }
      Params.Humidity = iHumidity;
      if (Params.Humidity != OldParams.Humidity)
      {
        OldParams.Humidity = Params.Humidity;
        sprintf(buffer, "hum:%d", Params.Humidity);
        Publish(pub_buffer, buffer);
      }

      // Water Level
      for (int i = 0; i < WL_CHANNELS; i++)
      {
        unsigned long tempwl = 0;
        int iWL = 0;
        for (int a = 0; a < 20; a++)
        {
          if (i == 0)
          {
            Wire.requestFrom(I2CWaterLevel, 2);
            if (Wire.available())
            {
              iWL = Wire.read();
              iWL = iWL << 8;
              iWL += Wire.read();
            }
            tempwl += iWL;
            if (tempwl != 0 && pub_wl[0] == 'w') WLFound = true;
          }
          else
          {
            Wire.beginTransmission(I2CMultiWaterLevel);
            Wire.write(1); // Config Pointer
            byte addr = (0xb + i) << 4; // Select which channel to read
            addr += 0x03; // Programmable Gain
            Wire.write(addr);
            Wire.write(0x83);
            Wire.endTransmission();
            delay(10); // It takes 10ms for conversion to be completed
            Wire.beginTransmission(I2CMultiWaterLevel);
            Wire.write((uint8_t)0); // Convert Pointer
            Wire.endTransmission();
            Wire.requestFrom(I2CMultiWaterLevel, 2); // Request converted value
            if (Wire.available())
            {
              iWL = Wire.read();
              iWL = iWL << 8;
              iWL += Wire.read();
            }
            tempwl += iWL >> 4;
            if (tempwl != 0 && pub_multiwl[0] == 'w') MultiWLFound = true;
          }
        }
        tempwl = tempwl / 20;
        if (tempwl != 0)
        {
          Params.WL[i] = map(tempwl, WLMin[i], WLMax[i], 0, 100); // apply the calibration to the sensor reading
          Params.WL[i] = constrain(Params.WL[i], 0, 255);
        }
        if (WLCal[i])
        {
          if (i == 0)
          {
            if (pub_wl[0] == 'c')
              sprintf(buffer, "%s%d", pub_custom_wl, tempwl);
            else
              sprintf(buffer, "%sc:%d", pub_wl, tempwl);
          }
          else
          {
            if (pub_multiwl[0] == 'c')
              sprintf(buffer, "%s%d", pub_custom_multiwl, tempwl);
            else
              sprintf(buffer, "%sc:%d", pub_multiwl, tempwl);
          }
          Publish(pub_buffer, buffer);
        }
        else
        {
          if (Params.WL[i] != OldParams.WL[i])
          {
            OldParams.WL[i] = Params.WL[i];
            if (i == 0)
            {
              if (pub_wl[0] == 'c')
                sprintf(buffer, "%s%d", pub_wl, Params.WL[i]);
              else
                sprintf(buffer, "%s:%d:%d", pub_wl, i, Params.WL[i]);
            }
            else
            {
              if (pub_multiwl[0] == 'c')
                sprintf(buffer, "%s%d", pub_multiwl, Params.WL[i]);
              else
                sprintf(buffer, "%s:%d:%d", pub_multiwl, i, Params.WL[i]);
            }
            Publish(pub_buffer, buffer);
          }
        }
      }
      ds.reset();
      ds.select(addr1);
      ds.write(0x44, 0);
      ds.reset();
      ds.select(addr2);
      ds.write(0x44, 0);
    }
  }
}
Roberto.
User avatar
Loose
Posts: 88
Joined: Fri Sep 01, 2017 8:15 am
Location: Severna Park, MD

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by Loose »

I uploaded my code via the wizard and and uploaded your code to the cloud Wifi Hub and tried calibrating it.

Something(s) didn't go quite right though.

Once I uploaded to the RA* via the wizard my lights began shutting off every couple/few minutes or so; it is shutting the power off on each outlet at the relay box. It is not happening as often now, maybe once every half hour now.

In the mornings, the lights that are controlled by this part of my code, the 16 channel expansion, now are on early in the morning at a very low percentage when they shouldn't be on at all. It took me a minute to post this as I did all this a few days ago... life happened. :-)

Code: Select all

    for (int z=0;z<6;z++)
    {
        ReefAngel.PWM.Set16ChannelRaw( z , PWMSlopeHighRes(12,27,21,27,3,LEDgroupslvl,30,0) );
    }

  if (millis() - last16channelcheck > 1000 && ReefAngel.Network.IsMQTTConnected())

  {
    last16channelcheck = millis();
    for (byte a = 0; a < 6; a++) // a < 16 has been Modified for 6ch Dimming module
    {
      if (ReefAngel.PWM.SIXTEENChExpansionChannel[a] != OldPercentage16[a])
      {
        if (a<10)
          sprintf(buffer, "%s0%d:%d", "PWM16E", a, ReefAngel.PWM.SIXTEENChExpansionChannel[a]);
        else
          sprintf(buffer, "%s%d:%d", "PWM16E", a, ReefAngel.PWM.SIXTEENChExpansionChannel[a]);
        Serial.println(buffer);
        ReefAngel.Network.CloudPublish(buffer);
        OldPercentage16[a] = ReefAngel.PWM.SIXTEENChExpansionChannel[a];
      }
      if (ReefAngel.PWM.SIXTEENChExpansionChannelOverride[a] != OldPercentage16Override[a])
      {
        if (a<10)
          sprintf(buffer, "%s0%d:%d", "PWM16EO", a, ReefAngel.PWM.SIXTEENChExpansionChannelOverride[a]);
        else
          sprintf(buffer, "%s%d:%d", "PWM16EO", a, ReefAngel.PWM.SIXTEENChExpansionChannelOverride[a]);
        Serial.println(buffer);
        ReefAngel.Network.CloudPublish(buffer);
        OldPercentage16Override[a] = ReefAngel.PWM.SIXTEENChExpansionChannelOverride[a];
      }
    }
  }
I continued on and tried calibration. When I did the calibration, it appeared as though expansion slots 1 through 5 (I think) were all mirroring the salinity probe output; somewhere about 2800 on each channel via the serial monitor. I'm sorry but the serial monitor output got erased before I could save it and post here. More than willing to do it again if need be.

For the RA* custom expansion screen, where the values used to show 0.0 now only show 0 for all of the custom expansion values. As in, there is no longer a decimal point and zero after it and there is not a reading of the salinity.
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by rimai »

Can you grab the log for the PWM16 when it is in the morning to see what values they are showing?
The 0 vs 0.00 is intended. The decimal point was screwing up things. That was the only change I have made to the RA* libraries.
Roberto.
User avatar
Loose
Posts: 88
Joined: Fri Sep 01, 2017 8:15 am
Location: Severna Park, MD

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by Loose »

Good Afternoon Roberto,

The lights were on dim this morning, unfortunately I didn't have the Cloud hub connected to a computer. The 16ch lights didn't come back on with the power off/on.

That said, I think there's progress with the Salinity probe.

A note here: I found have to make sure I do a certain sequence. If I do anything that resets the Cloud Hub, I have to power cycle the RA* for things to connect and show correctly.

Once I connected the Cloud Hub to the laptop, the values for the Salinity probe connected to it began showing up on the RA* screen and the UAPP. The value replaced the Salinity probe in the DT though; both displayed ~208.0 under 'Sal.'

I couldn't quite follow your code so didn't know if that's what you wanted it to do but I thought that since it was displaying I'd try to calibrate it so I tried calibrating Custom Expansion 1 and that did nothing (probably not supposed to).

I then tried the normal Salinity calibration and that worked as it was supposed to.

To get my DT Salinity re-displayed, I removed power from the Hub's connected Salinity module, power cycled the RA*, and re-calibrated to the DT's Salinity probe.

Serial log for the above (I put a series of dashes in the text file to highlight the Calibration events):

Code: Select all

Connecting to cloud server...
Connected
Subscribing to Loose/out/#
Loose/in: all:0
Loose/in: io:255
Loose/in: t:4:717
Loose/in: t:5:849
Loose/in: sal:2080
cloud:ATOLOW:0
Loose/in: sal:2082
cloud:ATOHIGH:0
cloud:EM:137
cloud:EM1:22
cloud:REM:7
cloud:BID:4
cloud:AF:0
cloud:SF:0
cloud:PWMD:98
cloud:PWMA:0
cloud:PWMDO:255
cloud:PWMAO:255
cloud:R1:194
R1:194
cloud:ROFF1:255
ROFF1:255
Loose/in: t:5:847
cloud:RON1:0
RON1:0
cloud:R2:131
R2:131
cloud:ROFF2:255
ROFF2:255
Loose/in: t:5:849
cloud:RON2:0
RON2:0
cloud:R3:0
R3:0
cloud:ROFF3:255
ROFF3:255
cloud:RON3:0
RON3:0
cloud:R4:0
R4:0
cloud:ROFF4:255
ROFF4:255
cloud:RON4:0
RON4:0
Loose/in: t:5:847
Loose/in: sal:2080
cloud:R5:0
R5:0
Loose/in: t:5:849
cloud:ROFF5:255
ROFF5:255
cloud:RON5:0
RON5:0
cloud:R6:0
R6:0
cloud:ROFF6:255
ROFF6:255
cloud:RON6:0
RON6:0
cloud:R7:0
R7:0
cloud:ROFF7:255
ROFF7:255
Loose/in: sal:2082
cloud:RON7:0
RON7:0
cloud:R8:0
R8:0
cloud:ROFF8:255
ROFF8:255
cloud:RON8:0
RON8:0
cloud:ALARM:0
cloud:PWMD2:46
cloud:PWMA2:100
cloud:PWMD2O:255
cloud:PWMA2O:255
cloud:WL:0
cloud:WL1:98
cloud:WL2:80
cloud:WL3:3
cloud:WL4:1
cloud:HUM:0
cloud:DCM:13
cloud:DCS:99
cloud:DCD:63
cloud:DCT:45
cloud:PWME0:60
PWME0:60
cloud:PWME1:0
PWME1:0
Loose/in: sal:2071
cloud:PWME2:58
PWME2:58
cloud:PWME3:58
PWME3:58
cloud:PWME4:0
PWME4:0
cloud:PWME5:0
PWME5:0
cloud:PWME0O:255
PWME0O:255
cloud:PWME1O:255
PWME1O:255
Loose/in: sal:2080
cloud:PWME2O:255
PWME2O:255
cloud:PWME3O:255
PWME3O:255
cloud:PWME4O:255
PWME4O:255
Loose/in: sal:2069
cloud:PWME5O:255
PWME5O:255
cloud:AIW:0
cloud:AIB:0
cloud:AIRB:0
cloud:RFM:0
cloud:RFS:0
cloud:RFD:0
cloud:RFW:0
cloud:RFRB:0
cloud:RFR:0
cloud:RFG:0
cloud:RFB:0
cloud:RFI:0
cloud:RFWO:0
cloud:RFRBO:0
cloud:RFRO:0
cloud:RFGO:0
cloud:RFBO:0
cloud:RFIO:0
cloud:IO:0
cloud:LEAK:0
cloud:C0:0
cloud:C1:0
Loose/in: sal:2079
cloud:C2:0
cloud:C3:0
cloud:C4:0
cloud:C5:0
cloud:C6:0
cloud:C7:0
cloud:R:0
cloud:ROFF:255
cloud:RON:0
cloud:T1:753
cloud:T2:770
cloud:T3:699
cloud:PH:802
cloud:T4:717
cloud:T5:849
cloud:T6:0
cloud:ORP:0
cloud:PHE:0
cloud:PAR:0
cloud:CEXP0:0
cloud:CEXP1:0
cloud:CEXP2:0
cloud:CEXP3:0
cloud:CEXP4:0
cloud:CEXP5:0
cloud:CEXP6:0
cloud:CEXP7:0
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL1:97
cloud:PH:804
cloud:SAL:2082
cloud:PWMD:94
cloud:PWMD2:50
cloud:WL1:96
cloud:PH:802
cloud:T5:847
cloud:PWMD:92
cloud:PWMD2:52
cloud:WL1:95
cloud:PH:803
cloud:PWMD:90
cloud:PWMD2:54
cloud:PWMD:88
cloud:PWMD2:56
cloud:WL1:96
cloud:PWMD:86
cloud:PWMD2:58
cloud:PWMD:84
cloud:PWMD2:60
cloud:PWMD:81
cloud:PWMD2:63
cloud:PWMD:79
cloud:PWMD2:65
cloud:WL1:95
cloud:PWMD:76
cloud:PWMD2:68
cloud:PWMD:73
cloud:PWMA:100
cloud:PWMD2:71
cloud:PWMA2:0
cloud:WL1:96
cloud:PWMD:71
cloud:PWMD2:73
cloud:WL1:95
cloud:PWMD:68
cloud:PWMD2:76
cloud:WL1:96
cloud:PWMD:65
cloud:PWMD2:79
cloud:WL1:95
Loose/in: sal:2078
cloud:PWMD:60
cloud:PWMD2:84
cloud:WL1:96
cloud:T5:849
cloud:SAL:2080
cloud:PWMD:58
cloud:PWMD2:86
cloud:WL1:95
cloud:SAL:2078
Loose/in: sal:2079
cloud:PWMD:56
cloud:PWMD2:88
cloud:PH:802
cloud:SAL:2079
cloud:PWMD:54
cloud:PWMD2:90
cloud:WL1:96
cloud:PH:803
cloud:PWMD:52
cloud:PWMD2:92
cloud:WL1:95
Loose/in: sal:2078
cloud:PWMD:50
cloud:PWMD2:94
cloud:SAL:2078
Loose/in: sal:2079
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL1:96
cloud:PH:804
cloud:SAL:2079
cloud:PWMD:47
cloud:PWMD2:97
cloud:WL1:95
cloud:PWMD:46
cloud:PWMD2:98
cloud:WL1:96
cloud:PH:803
Loose/in: sal:2080
Loose/in: t:4:719
Loose/in: sal:2079
Loose/in: sal:2070
Loose/in: sal:2080
Loose/in: sal:2079
Loose/in: sal:2080
cloud:EM:137
cloud:EM1:22
cloud:REM:7
cloud:BID:4
cloud:PWMD:67
cloud:PWMDO:255
cloud:PWMAO:255
cloud:R1:194
R1:194
cloud:ROFF1:255
ROFF1:255
cloud:R2:131
R2:131
cloud:ROFF2:255
ROFF2:255
Loose/in: sal:2079
cloud:ROFF3:255
ROFF3:255
cloud:ROFF4:255
ROFF4:255
cloud:ROFF5:255
ROFF5:255
cloud:ROFF6:255
ROFF6:255
cloud:ROFF7:255
ROFF7:255
cloud:ROFF8:255
ROFF8:255
cloud:PWMD2:77
cloud:PWMD2O:255
cloud:PWMA2O:255
cloud:WL1:96
cloud:WL2:81
cloud:WL3:3
cloud:WL4:1
cloud:DCM:13
cloud:DCS:99
cloud:DCD:63
cloud:DCT:45
cloud:PWME0:60
PWME0:60
Loose/in: sal:2080
cloud:PWME2:59
PWME2:59
cloud:PWME3:59
PWME3:59
cloud:PWME0O:255
PWME0O:255
cloud:PWME1O:255
PWME1O:255
cloud:PWME2O:255
PWME2O:255
cloud:PWME3O:255
PWME3O:255
Loose/in: sal:2079
cloud:PWME4O:255
PWME4O:255
cloud:PWME5O:255
PWME5O:255
cloud:ROFF:255
cloud:T1:752
cloud:T2:770
cloud:T3:699
cloud:PH:803
cloud:SAL:333
cloud:PWM16EO00:255
PWM16EO00:255
cloud:PWM16EO01:255
PWM16EO01:255
cloud:PWM16EO02:255
PWM16EO02:255
cloud:PWM16EO03:255
PWM16EO03:255
Loose/in: sal:2070
cloud:PWM16EO04:255
PWM16EO04:255
cloud:PWM16EO05:255
PWM16EO05:255
cloud:PWMD:72
cloud:PWMD2:72
cloud:PWME0:61
PWME0:61
Loose/in: t:4:721
Loose/in: sal:2080
cloud:SAL:2079
cloud:PWMD:75
cloud:PWMD2:69
cloud:PWMD:77
cloud:PWMD2:67
cloud:SAL:2080
cloud:PWMD:80
cloud:PWMD2:64
cloud:WL2:80
cloud:PWMD:82
cloud:PWMD2:62
Loose/in: t:4:719
cloud:PWMD:85
cloud:PWMD2:59
cloud:WL2:81
cloud:PWMD:87
cloud:PWMD2:57
cloud:WL1:95
cloud:PWMD:89
cloud:PWMD2:55
cloud:WL2:80
cloud:T4:721
cloud:PWMD:91
cloud:PWMD2:53
cloud:PH:802
cloud:T4:719
cloud:PWMD:95
Loose/in: sal:2079
cloud:PWMD2:49
cloud:WL1:96
cloud:WL2:81
cloud:T1:753
cloud:PH:803
cloud:PWMD:96
cloud:PWMD2:48
cloud:WL1:95
cloud:WL2:80
cloud:T1:752
cloud:SAL:2079
cloud:PWMD:97
cloud:PWMD2:47
cloud:WL1:96
cloud:T1:753
Loose/in: t:4:721
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL1:95
cloud:T1:752
cloud:T4:721
cloud:PWMD:99
cloud:PWMD2:45
cloud:T1:753
cloud:WL1:97
cloud:WL1:96
cloud:WL2:81
cloud:WL2:80
Loose/in: t:5:851
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL1:95
cloud:T5:851
Loose/in: t:5:849
Loose/in: sal:2080
cloud:T5:849
cloud:SAL:2080
Loose/in: sal:2079
cloud:PWMD:97
cloud:PWMD2:47
cloud:PH:802
cloud:SAL:2079
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL1:97
cloud:PH:803
cloud:PWMD:94
cloud:PWMD2:50
cloud:PWMD:92
cloud:PWMD2:52
cloud:WL1:96
cloud:PWMD:90
cloud:PWMD2:54
cloud:WL1:95
cloud:PWMD:88
cloud:PWMD2:56
cloud:WL1:96
cloud:PWMD:86
cloud:PWMD2:58
cloud:PWMD:84
cloud:PWMD2:60
cloud:ATOLOW:0
cloud:ATOHIGH:0
cloud:EM:137
cloud:EM1:22
cloud:REM:7
cloud:BID:4
cloud:AF:0
cloud:SF:0
cloud:PWMD:81
cloud:PWMA:0
cloud:PWMDO:255
cloud:PWMAO:255
cloud:R1:194
R1:194
cloud:ROFF1:255
ROFF1:255
cloud:RON1:0
RON1:0
cloud:R2:131
R2:131
cloud:ROFF2:255
ROFF2:255
cloud:RON2:0
RON2:0
Loose/in: sal:2080
cloud:R3:0
R3:0
cloud:ROFF3:255
ROFF3:255
cloud:RON3:0
RON3:0
cloud:R4:0
R4:0
cloud:ROFF4:255
ROFF4:255
cloud:RON4:0
RON4:0
cloud:R5:0
R5:0
Loose/in: sal:2079
cloud:ROFF5:255
ROFF5:255
cloud:RON5:0
RON5:0
cloud:R6:0
R6:0
Loose/in: sal:2070
cloud:ROFF6:255
ROFF6:255
cloud:RON6:0
RON6:0
cloud:R7:0
R7:0
Loose/in: sal:2071
cloud:ROFF7:255
ROFF7:255
cloud:RON7:0
RON7:0
cloud:R8:0
R8:0
cloud:ROFF8:255
ROFF8:255
cloud:RON8:0
RON8:0
cloud:ALARM:0
cloud:PWMD2:63
cloud:PWMA2:0
cloud:PWMD2O:255
cloud:PWMA2O:255
cloud:WL:0
cloud:WL1:96
cloud:WL2:80
cloud:WL3:3
cloud:WL4:1
cloud:HUM:0
cloud:DCM:13
cloud:DCS:99
cloud:DCD:63
cloud:DCT:45
cloud:PWME0:61
PWME0:61
cloud:PWME1:0
PWME1:0
Loose/in: sal:2080
cloud:PWME2:59
PWME2:59
cloud:PWME3:59
PWME3:59
cloud:PWME4:0
PWME4:0
Loose/in: sal:2071
cloud:PWME5:0
PWME5:0
cloud:PWME0O:255
PWME0O:255
cloud:PWME1O:255
PWME1O:255
Loose/in: sal:2080
cloud:PWME2O:255
PWME2O:255
cloud:PWME3O:255
PWME3O:255
cloud:PWME4O:255
PWME4O:255
Loose/in: sal:2079
cloud:PWME5O:255
PWME5O:255
cloud:AIW:0
cloud:AIB:0
cloud:AIRB:0
cloud:RFM:0
cloud:RFS:0
cloud:RFD:0
cloud:RFW:0
cloud:RFRB:0
cloud:RFR:0
cloud:RFG:0
cloud:RFB:0
cloud:RFI:0
cloud:RFWO:0
cloud:RFRBO:0
cloud:RFRO:0
cloud:RFGO:0
cloud:RFBO:0
cloud:RFIO:0
cloud:IO:0
cloud:LEAK:0
cloud:C0:0
cloud:C1:0
cloud:C2:0
cloud:C3:0
Loose/in: sal:2080
cloud:C4:0
cloud:C5:0
cloud:C6:0
cloud:C7:0
cloud:R:0
cloud:ROFF:255
cloud:RON:0
cloud:T1:753
cloud:T2:770
cloud:T3:699
cloud:PH:802
cloud:T4:721
cloud:T5:849
cloud:T6:0
cloud:ORP:0
cloud:SAL:2079
cloud:PHE:0
cloud:PAR:0
cloud:CEXP0:0
cloud:CEXP1:0
cloud:CEXP2:0
cloud:CEXP3:0
cloud:CEXP4:0
cloud:CEXP5:0
cloud:CEXP6:0
cloud:CEXP7:0
cloud:PWMD:76
cloud:PWMD2:68
cloud:WL1:95
cloud:PH:803
cloud:SAL:2080
cloud:PWMD:73
Loose/in: sal:2079
Loose/in: sal:2080
Loose/in: sal:2079
Loose/in: t:5:851
Loose/in: t:5:849
cloud:PWMD2:71
cloud:WL1:96
cloud:T1:752
cloud:PWMD:71
cloud:PWMD2:73
cloud:T1:753
cloud:SAL:2079
cloud:PWMD:68
cloud:PWMD2:76
cloud:PWMD:65
cloud:PWMD2:79
cloud:WL2:81
cloud:PH:802
cloud:PWMD:63
cloud:PWMD2:81
cloud:WL1:95
cloud:WL2:80
cloud:PWMD:60
cloud:PWMD2:84
cloud:WL1:96
cloud:T1:752
cloud:PH:803
cloud:PWMD:58
cloud:PWMD2:86
cloud:WL2:81
cloud:PH:802
cloud:PWMD:56
cloud:PWMD2:88
cloud:WL2:80
cloud:PH:803
cloud:PWMD:54
cloud:PWMD2:90
cloud:WL2:81
cloud:PWMD:52
cloud:PWMD2:92
cloud:WL2:80
cloud:T1:753
cloud:PWMD:50
cloud:PWMD2:94
cloud:WL1:95
cloud:WL2:81
cloud:T1:752
cloud:SAL:2080
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL1:97
cloud:WL2:80
cloud:PWMD:47
cloud:PWMD2:97
cloud:WL1:96
cloud:T1:753
cloud:SAL:2079
cloud:PWMD:46
cloud:PWMD2:98
cloud:WL2:81
cloud:T1:752
Loose/in: sal:2080
cloud:PWMD:45
cloud:PWMD2:99
cloud:T5:851
cloud:T5:849
cloud:WL2:80
cloud:PH:802
cloud:PWMD:46
cloud:PWMD2:98
cloud:WL1:98
cloud:WL2:81
cloud:PH:803
cloud:PWMD:47
cloud:PWMD2:97
cloud:WL1:96
cloud:PWMD:48
cloud:PWMD2:96
cloud:SAL:2080
Loose/in: sal:2079
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL2:80
cloud:PH:802
cloud:SAL:2079
cloud:PWMD:51
cloud:PWMD2:93
cloud:PWMA2:100
cloud:WL1:97
cloud:PWMD:53
cloud:PWMD2:91
cloud:WL1:96
cloud:PH:803
cloud:PWMD:55
cloud:PWMD2:89
cloud:PWMD:57
cloud:PWMD2:87
Loose/in: t:4:723
cloud:PWMD:59
cloud:PWMD2:85
cloud:WL1:95
cloud:T4:723
cloud:PWMD:62
cloud:PWMD2:82
cloud:WL1:96
cloud:WL2:81
cloud:PH:802
cloud:PWMD:64
cloud:PWMD2:80
cloud:WL1:95
cloud:WL2:80
cloud:PH:803
cloud:PWMD:67
cloud:PWMD2:77
cloud:WL1:96
Loose/in: sal:2080
cloud:PWMD:69
cloud:PWMD2:75
cloud:WL1:95
cloud:PH:802
cloud:SAL:2080
Loose/in: t:4:721
Loose/in: t:5:851
Loose/in: sal:2079
cloud:PWMD:72
Loose/in: t:4:723
Loose/in: t:5:849
cloud:PWMD2:72
cloud:WL1:96
cloud:PH:803
cloud:T4:721
cloud:T5:851
cloud:SAL:2079
cloud:PWMD:77
cloud:PWMD2:67
cloud:T4:723
cloud:T5:849
Loose/in: sal:2080
cloud:SAL:2080
Loose/in: t:5:851
cloud:PWMD:82
cloud:PWMD2:62
cloud:WL1:98
cloud:PH:802
cloud:T5:851
Loose/in: t:4:721
Loose/in: t:5:849
cloud:PWMD:85
cloud:PWMD2:59
cloud:WL1:95
cloud:T4:721
cloud:T5:849
Loose/in: t:4:723
Loose/in: t:5:851
cloud:PWMD:87
cloud:PWMD2:57
cloud:WL1:96
cloud:PH:803
cloud:T4:723
cloud:T5:851
Loose/in: t:5:849
Loose/in: sal:2079
cloud:PWMD:89
Loose/in: sal:2082
cloud:PWMD2:55
cloud:WL1:95
cloud:PH:802
cloud:T5:849
cloud:SAL:2079
Loose/in: sal:2080
cloud:PWMD:91
cloud:PWMD2:53
cloud:PH:803
cloud:SAL:2082
Loose/in: t:5:851
cloud:PWMD:93
cloud:PWMD2:51
cloud:WL1:96
cloud:T5:851
cloud:SAL:2080
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL1:95
Loose/in: t:5:849
cloud:PWMD:96
cloud:PWMD2:48
cloud:WL1:97
cloud:T5:849
cloud:PWMD:97
cloud:PWMD2:47
cloud:WL1:96
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL1:95
cloud:PH:802
cloud:PWMD:99
cloud:PWMD2:45
cloud:PH:803
cloud:WL1:96
cloud:WL1:95
cloud:PWMD:98
cloud:PWMD2:46
cloud:PH:802
cloud:WL1:96
cloud:PH:804
cloud:PWMD:95
cloud:PWMD2:49
cloud:PH:803
cloud:PWMD:94
cloud:PWMD2:50
cloud:WL1:95
cloud:PWMD:92
cloud:PWMD2:52
Loose/in: sal:2079
cloud:PWMD:90
cloud:PWMD2:54
cloud:PH:804
cloud:SAL:2079
Loose/in: sal:2080
cloud:PWMD:88
cloud:PWMD2:56
cloud:PH:803
cloud:SAL:2080
cloud:PWMD:86
cloud:PWMD2:58
cloud:WL1:96
cloud:PWMD:84
cloud:PWMD2:60
cloud:PWMD:81
cloud:PWMD2:63
cloud:PWMD:79
cloud:PWMD2:65
Loose/in: t:4:725
cloud:PWMD:76
cloud:PWMD2:68
cloud:T4:725
Loose/in: t:4:723
cloud:PWMD:73
cloud:PWMD2:71
cloud:T4:723
cloud:PWMD:71
cloud:PWMD2:73
cloud:WL1:97
cloud:PWMD:68
cloud:PWMD2:76
cloud:WL1:96
cloud:WL2:81
cloud:PWMD:65
cloud:PWMD2:79
cloud:WL2:80
cloud:PWMD:63
cloud:PWMD2:81
cloud:PWMD:60
cloud:PWMD2:84
cloud:WL1:95
cloud:WL2:81
cloud:PH:802
cloud:PWMD:56
cloud:PWMD2:88
cloud:WL1:96
cloud:PH:803
Loose/in: t:4:725
cloud:WL2:80
cloud:PH:804
cloud:T4:725
cloud:PWMD:52
cloud:PWMD2:92
cloud:WL1:95
cloud:PWMD:50
cloud:PWMD2:94
cloud:PH:803
Loose/in: t:4:723
Loose/in: sal:2083
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL1:96
cloud:T4:723
cloud:SAL:2083
Loose/in: t:4:725
Loose/in: sal:2080
cloud:PWMD:47
cloud:PWMD2:97
cloud:WL2:81
cloud:T4:725
cloud:SAL:2080
Loose/in: t:4:723
cloud:PWMD:46
Loose/in: t:4:725
cloud:PWMD2:98
cloud:WL1:95
cloud:WL2:80
cloud:T1:753
cloud:PH:802
cloud:T4:723
cloud:PH:803
cloud:T4:725
cloud:PWMD:45
cloud:PWMD2:99
cloud:WL2:81
cloud:WL1:96
cloud:WL2:80
Loose/in: t:4:723
cloud:WL1:97
cloud:T4:723
Loose/in: t:4:725
cloud:WL1:96
cloud:T4:725
cloud:PWMD:46
cloud:PWMA:100
cloud:PWMD2:98
cloud:PWMA2:0
cloud:WL2:81
cloud:PWMD:47
cloud:PWMD2:97
cloud:WL1:95
cloud:WL2:80
cloud:PWMD:48
cloud:PWMD2:96
Loose/in: sal:2079
cloud:PWMD:49
cloud:PWMD2:95
cloud:T1:752
cloud:PH:802
cloud:SAL:2079
Loose/in: sal:2078
cloud:PWMD:53
cloud:PWMD2:91
cloud:T1:753
cloud:SAL:2078
Loose/in: sal:2077
cloud:PWMD:55
cloud:PWMD2:89
cloud:WL1:96
cloud:PH:803
cloud:SAL:2077
cloud:PWMD:57
cloud:PWMD2:87
Loose/in: t:5:851
cloud:PWMD:59
cloud:PWMD2:85
cloud:T5:851
Loose/in: t:5:849
Loose/in: sal:2079
cloud:PWMD:62
cloud:PWMD2:82
cloud:T5:849
cloud:SAL:2079
Loose/in: sal:2077
cloud:PWMD:64
cloud:PWMD2:80
cloud:SAL:2077
Loose/in: sal:2078
cloud:PWMD:67
cloud:PWMD2:77
cloud:WL1:95
cloud:SAL:2078
cloud:PWMD:69
cloud:PWMD2:75
cloud:PWMD:72
Loose/in: sal:2077
cloud:PWMD2:72
Loose/in: sal:2079
cloud:PWMD:75
cloud:PWMD2:69
cloud:PH:804
cloud:SAL:2079
Loose/in: sal:2077
cloud:PWMD:77
cloud:PWMD2:67
cloud:PH:803
cloud:SAL:2077
cloud:PWMD:80
cloud:PWMD2:64
cloud:WL1:96
cloud:PH:802
Loose/in: sal:2078
cloud:PWMD:82
cloud:PWMD2:62
cloud:WL1:95
cloud:PH:803
cloud:SAL:2078
cloud:PWMD:85
cloud:PWMD2:59
cloud:PWMD:87
cloud:PWMD2:57
cloud:WL1:96
cloud:PWMD:89
cloud:PWMD2:55
cloud:PWMD:91
cloud:PWMD2:53
cloud:PWMD:93
cloud:PWMD2:51
cloud:WL1:94
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL1:95
cloud:WL3:2
cloud:PWMD:96
cloud:PWMD2:48
cloud:WL1:96
cloud:WL3:3
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL1:95
Loose/in: t:5:851
cloud:PWMD:99
cloud:PWMD2:45
cloud:WL1:93
cloud:T5:851
Loose/in: t:5:849
cloud:WL1:95
cloud:T5:849
cloud:WL3:2
cloud:WL1:97
cloud:WL3:3
cloud:PH:804
cloud:PWMD:98
Loose/in: sal:1121
cloud:PWMD2:46
cloud:WL1:95
cloud:PH:803
cloud:PH:802
Loose/in: sal:550
cloud:SAL:1121
Loose/in: sal:290
cloud:PWMD:97
cloud:PWMD2:47
cloud:WL1:94
cloud:PH:803
cloud:SAL:290
Loose/in: sal:171
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL1:95
cloud:SAL:171
Loose/in: sal:115
cloud:PWMD:94
cloud:PWMD2:50
cloud:SAL:115
Loose/in: sal:89
cloud:PWMD:92
cloud:PWMD2:52
cloud:SAL:89
Loose/in: sal:77
cloud:PWMD:90
cloud:PWMD2:54
cloud:SAL:77
Loose/in: sal:70
cloud:PWMD:88
cloud:PWMD2:56
cloud:SAL:70
Loose/in: sal:66
cloud:PWMD:86
cloud:PWMD2:58
cloud:SAL:66
Loose/in: sal:64
cloud:PWMD:81
cloud:PWMD2:63
cloud:WL1:96
cloud:SAL:64
Loose/in: sal:63
cloud:WL1:95
cloud:PH:804
cloud:SAL:63
Loose/in: sal:62
cloud:PWMD:76
cloud:PWMD2:68
cloud:PH:803
cloud:SAL:62
Loose/in: t:5:851
cloud:PWMD:73
cloud:PWMD2:71
cloud:T5:851
Loose/in: t:5:849
cloud:PWMD:71
cloud:PWMD2:73
cloud:WL1:96
cloud:T5:849
cloud:PWMD:68
cloud:PWMD2:76
cloud:WL1:94
cloud:PH:802
Loose/in: sal:61
cloud:PWMD:65
cloud:PWMD2:79
cloud:WL1:95
cloud:PH:803
cloud:SAL:61
cloud:PWMD:63
cloud:PWMD2:81
cloud:WL1:96
cloud:PWMD:60
cloud:PWMD2:84
cloud:WL1:95
cloud:PWMD:58
cloud:PWMD2:86
cloud:WL1:96
Loose/in: t:5:851
cloud:PWMD:56
cloud:PWMD2:88
cloud:PH:804
cloud:T5:851
Loose/in: t:5:849
cloud:PWMD:54
cloud:PWMD2:90
cloud:PH:803
cloud:T5:849
Loose/in: t:5:851
cloud:PWMD:52
cloud:PWMD2:92
cloud:WL1:95
cloud:T5:851
Loose/in: t:5:849
cloud:PWMD:50
cloud:PWMD2:94
cloud:T5:849
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL1:96
cloud:PWMD:47
cloud:PWMD2:97
cloud:WL1:95
cloud:PWMD:46
cloud:PWMD2:98
cloud:WL1:96
cloud:PH:804
cloud:PH:803
cloud:PWMD:45
cloud:PWMD2:99
cloud:PH:802
cloud:PWMA:0
cloud:PWMA2:100
cloud:WL2:81
cloud:WL1:95
cloud:PH:803
cloud:R1:226
R1:226
cloud:WL1:96
cloud:WL2:80
cloud:PWMD:47
cloud:PWMD2:97
cloud:WL1:95
cloud:PWMD:48
cloud:PWMD2:96
cloud:WL1:96
cloud:T1:755
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL1:97
cloud:WL2:79
cloud:T1:753
cloud:PWMD:51
cloud:PWMD2:93
cloud:WL1:94
cloud:WL2:78
cloud:T1:755
cloud:PH:802
cloud:PWMD:53
cloud:PWMD2:91
cloud:WL1:97
cloud:WL2:79
cloud:PH:803
cloud:PWMD:55
cloud:PWMD2:89
cloud:WL1:96
cloud:WL2:78
cloud:PH:802
cloud:PWMD:57
cloud:PWMD2:87
cloud:T1:753
cloud:PH:803
Loose/in: t:5:851
cloud:PWMD:59
cloud:PWMD2:85
cloud:WL1:95
cloud:T5:851
Loose/in: t:5:849
cloud:PWMD:62
cloud:PWMD2:82
cloud:WL1:96
cloud:T1:755
cloud:T5:849
cloud:PWMD:64
cloud:PWMD2:80
cloud:T1:753
cloud:PWMD:67
cloud:PWMD2:77
cloud:WL2:77
cloud:T1:755
cloud:PH:802
cloud:PWMD:69
cloud:PWMD2:75
cloud:PH:803
cloud:PWMD:72
cloud:PWMD2:72
cloud:WL1:95
cloud:T1:753
cloud:PH:802
cloud:PWMD:75
cloud:PWMD2:69
cloud:WL1:96
cloud:T3:701
cloud:PH:803
cloud:PWMD:77
cloud:PWMD2:67
cloud:WL1:95
cloud:T1:755
cloud:PWMD:82
cloud:PWMD2:62
cloud:WL1:97
cloud:T1:753
cloud:T3:699
cloud:PWMD:85
cloud:PWMD2:59
cloud:T1:755
cloud:T3:701
cloud:WL1:96
cloud:PH:802
cloud:PWMD:89
cloud:PWMD2:55
cloud:WL1:95
cloud:PH:803
cloud:PWMD:91
cloud:PWMD2:53
cloud:PWMD:93
cloud:PWMD2:51
cloud:WL1:97
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL1:96
cloud:PH:804
cloud:PWMD:96
cloud:PWMD2:48
cloud:WL2:76
cloud:T3:699
cloud:PH:803
cloud:PWMD:97
cloud:PWMD2:47
cloud:T3:701
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL1:97
cloud:WL2:77
cloud:T3:699
cloud:PH:802
cloud:PWMD:99
cloud:PWMD2:45
cloud:WL1:95
cloud:WL2:76
cloud:PH:804
Loose/in: t:5:851
cloud:PH:803
cloud:T5:851
Loose/in: t:5:849
cloud:WL1:96
cloud:T5:849
Loose/in: t:5:851
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL1:95
cloud:PH:802
cloud:T5:851
cloud:PH:803
Loose/in: t:5:849
cloud:PWMD:97
cloud:PWMD2:47
cloud:WL1:96
cloud:T3:701
cloud:T5:849
cloud:PWMD:94
cloud:PWMD2:50
cloud:WL1:95
cloud:PWMD:92
cloud:PWMD2:52
cloud:T3:699
Loose/in: t:4:726
cloud:PWMD:90
cloud:PWMD2:54
cloud:WL1:96
cloud:T4:726
cloud:WL1:95
cloud:PH:804
Loose/in: t:4:725
Loose/in: t:4:726
Loose/in: t:4:725
Loose/in: t:4:726
Loose/in: t:4:725
Loose/in: t:4:726
Loose/in: t:4:725
Loose/in: t:4:726
Loose/in: t:5:851
Loose/in: t:4:725
Loose/in: t:5:849
cloud:EM:137
cloud:EM1:22
cloud:REM:7
cloud:BID:4
cloud:PWMD:56
cloud:PWMDO:255
cloud:PWMAO:255
cloud:R1:194
R1:194
cloud:ROFF1:255
ROFF1:255
cloud:R2:131
R2:131
cloud:ROFF2:255
ROFF2:255
cloud:ROFF3:255
ROFF3:255
cloud:ROFF4:255
ROFF4:255
cloud:ROFF5:255
ROFF5:255
cloud:ROFF6:255
ROFF6:255
cloud:ROFF7:255
ROFF7:255
cloud:ROFF8:255
ROFF8:255
cloud:PWMD2:88
cloud:PWMD2O:255
cloud:PWMA2O:255
cloud:WL1:97
cloud:WL2:78
cloud:WL3:3
cloud:WL4:1
cloud:DCM:13
cloud:DCS:99
cloud:DCD:63
cloud:DCT:45
cloud:PWME0:61
PWME0:61
cloud:PWME2:59
PWME2:59
cloud:PWME3:59
PWME3:59
cloud:PWME0O:255
PWME0O:255
Loose/in: t:5:851
cloud:PWME1O:255
PWME1O:255
cloud:PWME2O:255
PWME2O:255
cloud:PWME3O:255
PWME3O:255
cloud:PWME4O:255
PWME4O:255
cloud:PWME5O:255
PWME5O:255
cloud:ROFF:255
cloud:T1:753
cloud:T2:770
cloud:T3:699
cloud:PH:803
cloud:SAL:334
cloud:PWM16EO00:255
PWM16EO00:255
cloud:PWM16EO01:255
PWM16EO01:255
cloud:PWM16EO02:255
PWM16EO02:255
cloud:PWM16EO03:255
PWM16EO03:255
cloud:PWM16EO04:255
PWM16EO04:255
cloud:PWM16EO05:255
PWM16EO05:255
cloud:PWMD:52
cloud:PWMD2:92
cloud:WL1:96
cloud:SAL:336
cloud:PWMD:50
cloud:PWMD2:94
cloud:WL1:95
cloud:WL2:79
cloud:PWMD:49
cloud:PWMD2:95
cloud:PWMD:47
cloud:PWMD2:97
cloud:WL1:96
cloud:T5:851
cloud:PWMD:46
cloud:PWMD2:98
cloud:WL1:95
cloud:T1:755
cloud:PH:802
cloud:PWMD:45
Loose/in: t:5:849
cloud:PWMD2:99
cloud:WL1:98
cloud:PH:803
cloud:SAL:337
cloud:WL1:95
cloud:T5:849
Loose/in: t:5:851
cloud:WL2:80
cloud:T5:851
cloud:SAL:239
Loose/in: t:5:849
cloud:T5:849
cloud:SAL:163
Loose/in: t:5:851
cloud:PWMD:46
cloud:PWMD2:98
cloud:PH:804
cloud:T5:851
cloud:SAL:95
Loose/in: t:5:849
cloud:PWMD:47
cloud:PWMD2:97
cloud:WL1:96
cloud:PH:803
cloud:T5:849
cloud:SAL:81
Loose/in: t:5:851
cloud:PWMD:48
cloud:PWMD2:96
cloud:WL1:95
cloud:T5:851
cloud:SAL:68
Loose/in: t:5:849
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL1:96
cloud:T5:849
cloud:SAL:65
cloud:PWMD:51
cloud:PWMD2:93
cloud:WL1:95
cloud:PH:804
cloud:SAL:62
cloud:PWMD:55
cloud:PWMD2:89
cloud:WL1:96
cloud:PH:803
cloud:SAL:61
cloud:PWMD:57
cloud:PWMD2:87
cloud:SAL:60
Loose/in: t:5:851
cloud:PWMD:59
cloud:PWMD2:85
Loose/in: t:5:849
cloud:PWMD:62
cloud:PWMD2:82
cloud:WL1:95
Loose/in: t:5:851
cloud:PWMD:64
cloud:PWMD2:80
cloud:WL1:96
cloud:T5:851
Loose/in: t:5:849
cloud:PWMD:67
cloud:PWMD2:77
cloud:WL1:95
cloud:T5:849
cloud:SAL:134
cloud:PWMD:69
cloud:PWMD2:75
cloud:T3:701
cloud:SAL:227
cloud:PWMD:72
cloud:PWMD2:72
cloud:T3:699
cloud:SAL:310
Loose/in: t:5:851
cloud:PWMD:75
cloud:PWMD2:69
cloud:T3:701
cloud:PH:802
cloud:T5:851
cloud:SAL:327
cloud:PWMD:77
cloud:PWMD2:67
cloud:WL1:96
cloud:PH:803
cloud:SAL:341
cloud:PWMD:80
cloud:PWMD2:64
cloud:WL1:95
cloud:SAL:345
cloud:PWMD:82
cloud:PWMD2:62
cloud:WL3:2
cloud:SAL:347
cloud:PWMD:85
cloud:PWMD2:59
cloud:WL1:96
cloud:WL2:79
cloud:SAL:348
Loose/in: t:5:849
cloud:PWMD:87
cloud:PWMD2:57
cloud:WL1:95
cloud:T5:849
cloud:SAL:349
cloud:PWMD:89
cloud:PWMD2:55
cloud:WL1:96
cloud:WL2:80
cloud:T1:757
cloud:SAL:350
cloud:PWMD:91
cloud:PWMD2:53
cloud:WL2:79
cloud:SAL:349
cloud:PWMD:93
Loose/in: t:5:851
cloud:PWMD2:51
cloud:T1:755
cloud:PWMD:95
cloud:PWMD2:49
cloud:T1:757
cloud:T5:851
cloud:SAL:350
Loose/in: t:5:849
cloud:PWMD:97
cloud:PWMD2:47
cloud:WL1:95
cloud:WL2:80
cloud:T5:849
cloud:WL2:79
cloud:T1:755
cloud:SAL:349
Loose/in: t:5:851
cloud:PWMD:99
Loose/in: t:5:849
cloud:PWMD2:45
cloud:WL2:80
cloud:T1:757
cloud:T5:851
cloud:SAL:350
cloud:WL1:96
cloud:T1:755
cloud:T5:849
cloud:WL2:79
Loose/in: t:5:851
cloud:WL1:95
cloud:T1:757
cloud:T5:851
Loose/in: t:5:849
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL1:94
cloud:WL2:80
cloud:T1:755
cloud:T5:849
Loose/in: t:5:851
cloud:WL1:95
cloud:T1:757
cloud:T5:851
Loose/in: t:5:849
cloud:PWMD:97
cloud:PWMD2:47
cloud:T5:849
Loose/in: t:5:851
cloud:PWMD:95
cloud:PWMD2:49
cloud:T5:851
cloud:PWMD:94
cloud:PWMD2:50
cloud:WL2:79
cloud:T1:755
cloud:PWMD:92
cloud:PWMD2:52
cloud:T1:757
cloud:SAL:349
cloud:PWMD:90
cloud:PWMD2:54
cloud:WL2:80
cloud:WL3:3
cloud:T1:755
cloud:SAL:350
Loose/in: t:5:849
cloud:PWMD:88
cloud:PWMD2:56
cloud:T5:849
Loose/in: t:5:851
cloud:PWMD:86
cloud:PWMD2:58
cloud:WL1:96
cloud:T5:851
cloud:PWMD:84
cloud:PWMD2:60
cloud:WL1:95
cloud:WL3:2
cloud:T1:757
cloud:PWMD:81
cloud:PWMD2:63
cloud:WL1:94
cloud:WL3:3
cloud:SAL:349
Loose/in: t:4:723
Loose/in: t:5:849
cloud:PWMD:79
cloud:PWMD2:65
cloud:WL1:96
cloud:T4:723
cloud:T5:849
Loose/in: t:4:725
cloud:PWMD:76
cloud:PWMD2:68
cloud:PWMA2:100
cloud:WL1:95
cloud:T1:755
cloud:T4:725
Loose/in: t:4:723
Loose/in: t:5:851
cloud:PWMD:73
cloud:PWMD2:71
cloud:T1:757
cloud:PH:804
cloud:T4:723
cloud:T5:851
cloud:SAL:350
Loose/in: t:4:725
cloud:PWMD:68
Loose/in: t:4:723
cloud:PWMD2:76
cloud:WL2:79
cloud:WL3:2
cloud:PH:803
cloud:T4:725
cloud:WL1:94
cloud:WL3:3
cloud:PH:804
cloud:T4:723
cloud:PWMD:63
Loose/in: sal:995
cloud:PWMD2:81
cloud:WL1:96
Loose/in: t:5:849
Loose/in: sal:1600
cloud:PWMD:60
cloud:PWMD2:84
cloud:WL2:80
cloud:T1:755
cloud:PH:803
cloud:T5:849
cloud:SAL:995
Loose/in: sal:1844
cloud:PWMD:58
cloud:PWMD2:86
cloud:WL3:2
cloud:T1:757
cloud:SAL:1844
Loose/in: t:5:851
Loose/in: sal:1969
cloud:PWMD:56
cloud:PWMD2:88
cloud:WL3:3
cloud:PH:804
cloud:T5:851
Loose/in: sal:2022
cloud:PWMD:54
cloud:PWMD2:90
cloud:WL1:95
cloud:PH:803
cloud:SAL:2022
Loose/in: sal:2047
cloud:PWMD:52
cloud:PWMD2:92
cloud:WL3:2
cloud:SAL:2047
Loose/in: sal:2061
cloud:PWMD:50
cloud:PWMD2:94
cloud:WL3:3
cloud:PH:804
cloud:SAL:2061
Loose/in: sal:2068
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL1:96
cloud:PH:803
cloud:SAL:2068
Loose/in: sal:2070
cloud:PWMD:47
cloud:PWMD2:97
cloud:T1:755
cloud:SAL:2070
Loose/in: sal:2071
cloud:PWMD:46
cloud:PWMD2:98
cloud:T1:757
cloud:SAL:2071
Loose/in: sal:2072
cloud:PH:804
cloud:SAL:2072
Loose/in: sal:2074
cloud:PWMD:45
cloud:PWMD2:99
cloud:WL1:95
cloud:PH:803
cloud:SAL:2074
Loose/in: sal:2075
cloud:WL1:96
cloud:PH:802
cloud:SAL:2075
Loose/in: t:5:849
cloud:WL1:95
cloud:PH:804
cloud:T5:849
Loose/in: t:5:851
cloud:PWMD:46
cloud:PWMD2:98
cloud:PH:802
cloud:T5:851
Loose/in: t:4:721
Loose/in: t:5:849
Loose/in: sal:2076
cloud:PWMD:47
cloud:PWMD2:97
cloud:T3:703
cloud:PH:803
cloud:T4:721
cloud:T5:849
cloud:SAL:2076
cloud:PWMD:48
cloud:PWMD2:96
cloud:WL3:2
cloud:T3:701
Loose/in: t:5:851
cloud:PWMD:51
cloud:PWMD2:93
cloud:WL3:3
cloud:PH:802
cloud:T5:851
Loose/in: t:4:723
Loose/in: sal:2077
cloud:PH:803
cloud:T4:723
cloud:SAL:2077
Loose/in: t:4:721
Loose/in: sal:2076
cloud:PWMD:55
cloud:PWMD2:89
cloud:WL1:96
cloud:WL3:2
cloud:T4:721
cloud:SAL:2076
Loose/in: sal:2077
cloud:PWMD:57
cloud:PWMD2:87
cloud:WL1:97
cloud:WL2:79
cloud:WL3:3
cloud:T3:703
cloud:SAL:2077
cloud:PWMD:59
cloud:PWMD2:85
cloud:WL1:95
cloud:WL2:80
cloud:T3:701
Loose/in: sal:2078
cloud:PWMD:62
cloud:PWMD2:82
cloud:PH:804
cloud:SAL:2078
cloud:PWMD:64
cloud:PWMD2:80
cloud:WL3:2
cloud:PH:803
Loose/in: sal:2077
cloud:PWMD:67
cloud:PWMD2:77
cloud:PH:804
cloud:SAL:2077
Loose/in: sal:2078
cloud:PWMD:69
cloud:PWMD2:75
cloud:WL3:3
cloud:PH:803
cloud:SAL:2078
cloud:PWMD:72
cloud:PWMD2:72
cloud:WL1:96
cloud:WL3:2
cloud:PWMD:75
cloud:PWMD2:69
cloud:WL1:95
cloud:WL3:3
cloud:PWMD:77
cloud:PWMD2:67
cloud:WL3:2
cloud:PWMD:80
cloud:PWMD2:64
cloud:WL3:3
cloud:PWMD:82
cloud:PWMD2:62
cloud:T3:703
cloud:PWMD:85
cloud:PWMD2:59
Loose/in: t:5:849
cloud:PWMD:87
cloud:PWMD2:57
cloud:WL2:79
cloud:WL3:2
cloud:T3:701
cloud:T5:849
Loose/in: t:5:851
Loose/in: sal:2079
cloud:PWMD:89
cloud:PWMD2:55
cloud:WL2:80
cloud:T5:851
cloud:SAL:2079
Loose/in: sal:2078
cloud:PWMD:91
cloud:PWMD2:53
cloud:WL2:79
cloud:WL3:3
cloud:T3:703
cloud:SAL:2078
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL2:80
cloud:WL3:2
cloud:T3:701
cloud:PWMD:96
cloud:PWMD2:48
cloud:WL3:3
Loose/in: sal:2079
cloud:PWMD:97
cloud:PWMD2:47
cloud:WL2:79
cloud:WL3:2
cloud:T3:703
cloud:SAL:2079
Loose/in: sal:2078
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL1:96
cloud:WL2:80
cloud:T3:701
Loose/in: sal:2079
cloud:PWMD:99
cloud:PWMD2:45
cloud:WL1:95
cloud:WL3:3
cloud:WL2:79
cloud:WL3:2
Loose/in: sal:2080
cloud:WL2:80
cloud:SAL:2080
Loose/in: sal:2079
cloud:PWME2:60
PWME2:60
cloud:PWME3:60
PWME3:60
cloud:T3:703
cloud:SAL:2079
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL3:3
cloud:T3:701
Loose/in: sal:2080
cloud:SAL:2080
Loose/in: t:4:719
cloud:PWMD:97
cloud:PWMD2:47
cloud:WL3:2
cloud:T4:719
cloud:PWMD:95
cloud:PWMD2:49
cloud:PH:804
cloud:PWMD:94
cloud:PWMD2:50
cloud:T3:703
cloud:PH:803
Loose/in: t:5:849
Loose/in: sal:2079
cloud:PWMD:92
cloud:PWMD2:52
cloud:T3:701
cloud:T5:849
cloud:SAL:2079
Loose/in: t:5:851
Loose/in: sal:2080
cloud:PWMD:90
cloud:PWMD2:54
cloud:WL3:3
cloud:T3:703
cloud:T5:851
cloud:SAL:2080
cloud:PWMD:88
cloud:PWMD2:56
cloud:WL1:96
Loose/in: t:5:849
cloud:PWMD:84
cloud:PWMD2:60
cloud:WL1:95
cloud:T5:849
Loose/in: t:5:851
Loose/in: sal:2082
cloud:PWMA:100
cloud:PWMA2:0
cloud:WL2:79
cloud:WL3:2
cloud:T5:851
cloud:SAL:2082
Loose/in: sal:2080
cloud:PWMD:79
Loose/in: sal:2085
cloud:PWMD2:65
cloud:PH:804
cloud:SAL:2080
cloud:PWMD:76
Loose/in: sal:2080
cloud:PWMD2:68
cloud:WL1:94
cloud:PH:803
cloud:SAL:2085
cloud:PWMD:73
cloud:PWMD2:71
cloud:WL1:96
cloud:T3:701
cloud:SAL:2080
Loose/in: t:4:717
Loose/in: sal:2082
cloud:PWMD:71
cloud:PWMD2:73
cloud:WL1:94
cloud:T3:703
cloud:PH:802
cloud:T4:717
Loose/in: t:4:719
Loose/in: sal:2080
cloud:PWMD:68
cloud:R1:192
R1:192
cloud:PWMD2:76
cloud:WL1:0
cloud:WL2:0
cloud:WL3:0
cloud:WL4:0
cloud:PH:803
cloud:T4:719
cloud:SAL:2082
cloud:PWMD:65
cloud:R1:194
R1:194
cloud:PWMD2:79
cloud:WL1:96
cloud:WL2:79
cloud:WL3:2
cloud:WL4:1
cloud:SAL:2080
cloud:PWMD:63
cloud:PWMD2:81
cloud:WL1:95
Loose/in: t:4:717
cloud:PWMD:60
cloud:PWMD2:84
cloud:WL1:94
cloud:PH:802
cloud:T4:717
-----------------------------------------------------------------------------------------
cloud:CEXP0C:1
Custom Exp calibration
CEXP0C:1
cloud:PWMD:58
cloud:PWMD2:86
cloud:WL1:95
cloud:PH:803
Loose/in: t:5:849
cloud:PWMD:54
cloud:PWMD2:90
cloud:WL1:94
cloud:PH:802
cloud:T5:849
Loose/in: t:4:719
Loose/in: t:5:851
cloud:PWMD:52
cloud:PWMD2:92
cloud:WL1:95
cloud:PH:803
cloud:T4:719
cloud:T5:851
Loose/in: t:4:717
Loose/in: sal:2079
cloud:PWMD:50
cloud:PWMD2:94
cloud:WL1:96
cloud:PWME0:62
PWME0:62
Loose/in: t:5:849
Loose/in: sal:2080
cloud:T4:717
cloud:SAL:2079
cloud:PWMD:49
cloud:PWMD2:95
cloud:T5:849
cloud:SAL:2080
Loose/in: t:5:851
cloud:PWMD:47
cloud:R1:192
R1:192
cloud:PWMD2:97
cloud:WL1:0
cloud:WL2:0
cloud:WL3:0
cloud:WL4:0
cloud:T5:851
Loose/in: sal:2079
cloud:PWMD:46
cloud:PWMD2:98
cloud:SAL:2079
Loose/in: sal:2080
cloud:SAL:2080
cloud:PWMD:45
cloud:PWMD2:99
cloud:PH:804
Loose/in: sal:2079
cloud:SAL:2079
Loose/in: sal:2080
cloud:R1:194
R1:194
cloud:WL1:95
cloud:WL2:80
cloud:WL3:2
cloud:WL4:1
cloud:PH:802
cloud:PWMD:46
cloud:PWMD2:98
cloud:WL2:79
cloud:SAL:2080
cloud:PWMD:47
cloud:PWMD2:97
cloud:WL1:96
cloud:WL2:80
cloud:PH:803
cloud:PWMD:48
cloud:PWMD2:96
cloud:PH:802
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL2:79
cloud:PH:803
Loose/in: sal:1453
cloud:PWMD:51
cloud:PWMD2:93
cloud:WL1:95
Loose/in: sal:699
cloud:PWMD:53
cloud:PWMD2:91
cloud:PH:802
cloud:SAL:1453
Loose/in: sal:357
cloud:PWMD:55
cloud:PWMD2:89
cloud:PH:804
cloud:SAL:699
Loose/in: sal:202
cloud:PWMD:57
cloud:PWMD2:87
cloud:PH:803
cloud:SAL:202
Loose/in: sal:130
cloud:PWMD:59
cloud:PWMD2:85
cloud:WL2:80
cloud:PH:802
cloud:SAL:130
Loose/in: sal:96
cloud:PWMD:62
cloud:PWMD2:82
cloud:PH:803
cloud:SAL:96
Loose/in: sal:79
cloud:PWMD:64
cloud:PWMD2:80
cloud:WL1:94
cloud:WL2:79
cloud:PH:802
cloud:SAL:79
Loose/in: sal:71
cloud:PWMD:67
cloud:PWMD2:77
cloud:PH:803
cloud:SAL:71
Loose/in: sal:66
cloud:PWMD:69
cloud:PWMD2:75
cloud:WL2:80
cloud:SAL:66
Loose/in: sal:64
cloud:PWMD:72
cloud:PWMD2:72
cloud:WL1:95
cloud:WL2:79
cloud:SAL:64
Loose/in: sal:63
cloud:PWMD:75
cloud:PWMD2:69
cloud:PH:802
cloud:SAL:63
Loose/in: sal:62
cloud:PWMD:77
cloud:PWMD2:67
cloud:WL1:94
cloud:PH:803
cloud:SAL:62
cloud:PWMD:80
cloud:PWMD2:64
cloud:WL2:80
cloud:PH:802
cloud:PWMD:82
cloud:PWMD2:62
cloud:WL1:96
cloud:WL2:79
cloud:PH:803
Loose/in: sal:61
cloud:PWMD:85
cloud:PWMD2:59
cloud:WL1:95
cloud:PH:802
cloud:SAL:61
Loose/in: t:4:716
cloud:PWMD:87
cloud:PWMD2:57
cloud:WL2:80
cloud:T4:716
Loose/in: t:4:717
cloud:PWMD:89
cloud:PWMD2:55
cloud:WL2:79
cloud:PH:803
cloud:T4:717
cloud:PWMD:91
cloud:PWMD2:53
cloud:WL1:94
Loose/in: t:4:716
cloud:PWMD:93
cloud:PWMD2:51
cloud:T4:716
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL1:95
cloud:PWMD:96
cloud:PWMD2:48
cloud:PWMD:97
cloud:PWMD2:47
cloud:WL1:94
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL1:95
cloud:PWMD:99
cloud:PWMD2:45
cloud:PH:802
cloud:WL1:94
cloud:PH:803
cloud:WL1:95
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL1:96
cloud:PWMD:97
cloud:PWMD2:47
cloud:WL1:95
Loose/in: sal:727
cloud:PWMD:95
cloud:PWMD2:49
cloud:SAL:727
Loose/in: sal:1441
cloud:PWMD:94
cloud:PWMD2:50
cloud:SAL:1441
Loose/in: sal:1764
cloud:PWMD:92
cloud:PWMD2:52
cloud:PH:802
cloud:SAL:1764
Loose/in: sal:1914
cloud:PWMD:90
cloud:PWMD2:54
cloud:PH:803
cloud:SAL:1914
Loose/in: sal:1984
cloud:PWMD:88
cloud:PWMA:0
cloud:PWMD2:56
cloud:PWMA2:100
cloud:WL2:80
cloud:WL3:3
cloud:SAL:1984
Loose/in: sal:2018
cloud:PWMD:86
cloud:PWMD2:58
cloud:WL1:96
cloud:SAL:2018
Loose/in: sal:2036
cloud:PWMD:84
cloud:R1:226
R1:226
cloud:PWMD2:60
cloud:WL1:97
cloud:SAL:2036
Loose/in: sal:2045
cloud:PWMD:81
cloud:PWMD2:63
cloud:WL1:96
cloud:WL2:79
cloud:WL3:2
cloud:SAL:2045
Loose/in: sal:2051
cloud:PWMD:79
cloud:PWMD2:65
cloud:WL3:3
cloud:SAL:2051
Loose/in: sal:2054
cloud:PWMD:76
Loose/in: sal:2058
cloud:PWMD2:68
cloud:WL2:78
cloud:PH:802
cloud:SAL:2054
cloud:PWMD:73
Loose/in: sal:2060
cloud:PWMD2:71
cloud:SAL:2058
cloud:PWMD:71
Loose/in: sal:2061
cloud:PWMD2:73
cloud:PH:803
cloud:SAL:2060
Loose/in: sal:2062
cloud:PWMD:68
cloud:PWMD2:76
cloud:WL1:94
cloud:SAL:2061
Loose/in: sal:2064
cloud:PWMD:65
cloud:PWMD2:79
cloud:WL1:95
cloud:WL2:77
cloud:SAL:2062
Loose/in: sal:2066
cloud:PWMD:63
cloud:PWMD2:81
cloud:WL1:94
cloud:WL3:2
cloud:PH:802
cloud:SAL:2066
Loose/in: sal:2067
cloud:PWMD:60
cloud:PWMD2:84
cloud:WL1:95
cloud:WL3:3
cloud:PH:803
cloud:SAL:2067
Loose/in: sal:2069
cloud:PWMD:58
cloud:PWMD2:86
cloud:WL1:97
cloud:SAL:2069
cloud:PWMD:56
cloud:PWMD2:88
cloud:WL1:96
Loose/in: sal:2070
cloud:PWMD:54
cloud:PWMD2:90
cloud:WL1:95
cloud:PH:802
cloud:SAL:2070
cloud:PWMD:52
cloud:PWMD2:92
cloud:WL1:96
cloud:WL2:76
cloud:PH:803
cloud:PWMD:50
cloud:PWMD2:94
cloud:WL1:95
cloud:WL2:77
Loose/in: sal:2071
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL1:96
cloud:SAL:2071
cloud:PWMD:47
cloud:PWMD2:97
cloud:WL1:95
cloud:WL2:76
cloud:PH:802
cloud:PWMD:46
cloud:PWMD2:98
Loose/in: sal:2072
cloud:SAL:2072
Loose/in: sal:2074
cloud:PWMD:45
cloud:PWMD2:99
cloud:PH:803
cloud:SAL:2074
Loose/in: sal:2072
cloud:WL1:96
cloud:SAL:2072
cloud:WL1:95
cloud:PH:802
cloud:WL1:96
cloud:PH:803
Loose/in: t:4:714
Loose/in: sal:2074
cloud:PWMD:46
cloud:PWMD2:98
cloud:T4:714
cloud:SAL:2074
Loose/in: sal:2075
cloud:PWMD:47
cloud:PWMD2:97
cloud:SAL:2075
Loose/in: sal:2074
cloud:PWMD:48
cloud:PWMD2:96
cloud:WL1:95
cloud:SAL:2074
cloud:CEXP0C:2:0
Custom Exp calibration
CEXP0C:2:0
cloud:CEXP0C:3:0
Custom Exp calibration
CEXP0C:3:0
----------------------------------------------------------------
Loose/in: t:4:716
Loose/in: sal:2075
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL1:96
cloud:PH:802
cloud:T4:716
cloud:SAL:2075
Loose/in: t:4:714
Loose/in: sal:2076
cloud:PWMD:53
cloud:PWMD2:91
cloud:WL1:95
cloud:PH:803
cloud:T4:714
cloud:SAL:2076
cloud:PH:802
Loose/in: sal:2075
cloud:PWMD:57
cloud:PWMD2:87
cloud:WL1:97
cloud:SAL:2075
Loose/in: sal:2076
cloud:PWMD:59
cloud:PWMD2:85
cloud:WL1:95
cloud:PH:803
cloud:SAL:2076
Loose/in: sal:2080
cloud:PWMD:62
cloud:PWMD2:82
cloud:PH:802
cloud:SAL:2080
Loose/in: sal:2076
cloud:PWMD:64
cloud:PWMD2:80
cloud:WL1:94
cloud:PH:803
cloud:SAL:2076
Loose/in: sal:2077
cloud:WL1:95
cloud:SAL:2077
Loose/in: sal:2076
cloud:PWMD:69
cloud:PWMD2:75
cloud:WL1:94
cloud:SAL:2076
Loose/in: sal:2077
cloud:PWMD:72
cloud:PWMD2:72
cloud:WL1:95
cloud:SAL:2077
Loose/in: sal:2078
cloud:PWMD:75
cloud:PWMD2:69
cloud:WL3:2
cloud:SAL:2078
Loose/in: sal:2077
cloud:PWMD:77
cloud:PWMD2:67
cloud:WL3:3
cloud:SAL:2077
cloud:PWMD:80
cloud:PWMD2:64
cloud:WL3:2
cloud:PH:804
cloud:PWMD:82
cloud:PWMD2:62
cloud:WL3:3
cloud:PH:803
Loose/in: sal:2078
cloud:PWMD:87
cloud:PWMD2:57
cloud:WL1:96
cloud:WL3:2
cloud:SAL:2078
cloud:PWMD:89
cloud:PWMD2:55
cloud:WL1:95
cloud:WL3:3
cloud:PH:804
cloud:WL1:96
Loose/in: t:4:712
cloud:PWMD:93
cloud:PWMD2:51
cloud:WL1:94
cloud:WL3:2
cloud:PH:803
cloud:T4:712
Loose/in: t:4:714
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL1:93
cloud:WL3:3
cloud:T4:714
cloud:PWMD:96
cloud:PWMD2:48
cloud:WL1:96
cloud:PH:802
Loose/in: t:4:712
cloud:PWMD:97
cloud:PWMD2:47
cloud:WL1:95
cloud:PH:803
cloud:T4:712
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL1:96
cloud:WL3:2
cloud:PWMD:99
cloud:PWMD2:45
cloud:WL1:95
cloud:PH:804
cloud:WL1:94
Loose/in: sal:2077
cloud:WL3:3
cloud:PH:803
cloud:SAL:2077
Loose/in: sal:2078
cloud:WL1:97
cloud:SAL:2078
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL1:96
cloud:WL3:2
cloud:PH:802
cloud:PWMD:97
cloud:PWMD2:47
cloud:WL1:95
cloud:PH:803
cloud:PWMD:95
cloud:PWMD2:49
cloud:PWMD:94
cloud:PWMD2:50
cloud:WL1:96
cloud:PH:804
cloud:PWMD:92
cloud:PWMD2:52
cloud:WL1:94
cloud:WL3:3
cloud:PH:803
cloud:PWMD:90
cloud:PWMD2:54
cloud:WL1:95
cloud:PWMD:88
cloud:PWMD2:56
cloud:WL1:94
cloud:PH:804
cloud:PWMD:84
cloud:PWMD2:60
cloud:WL1:95
cloud:WL3:2
cloud:PH:803
cloud:PWMD:81
cloud:PWMD2:63
cloud:WL3:3
Loose/in: sal:2079
cloud:PWMD:79
cloud:PWMD2:65
cloud:WL1:97
cloud:PH:802
cloud:SAL:2079
Loose/in: sal:2078
cloud:PWMD:76
cloud:PWMD2:68
cloud:WL1:96
cloud:SAL:2078
cloud:PWMD:73
cloud:PWMD2:71
cloud:WL1:94
cloud:PH:803
Loose/in: sal:2079
--------------------------------------------------
cloud:SALC:1
Sal calibration
SALC:1
Loose/in: salc:1775
cloud:PWMD:71
cloud:PWMD2:73
cloud:WL1:95
cloud:T1:759
cloud:PH:802
cloud:SAL:2079
cloud:PWMD:68
Loose/in: salc:1775
cloud:PWMD2:76
cloud:WL1:96
cloud:T1:757
cloud:PWMD:65
Loose/in: salc:1776
cloud:PWMD2:79
cloud:WL1:95
cloud:PH:803
cloud:PWMD:63
Loose/in: salc:1775
cloud:PWMD2:81
cloud:T1:759
cloud:PH:802
cloud:PWMD:60
cloud:PWMD2:84
cloud:T1:757
cloud:PH:803
Loose/in: salc:1776
cloud:PWMD:58
Loose/in: salc:1776
cloud:PWMD2:86
cloud:PH:802
cloud:PWMD:56
Loose/in: salc:1776
cloud:PWMD2:88
cloud:WL1:94
cloud:PH:803
cloud:PWMD:54
Loose/in: t:4:710
Loose/in: salc:1775
cloud:PWMD2:90
cloud:WL1:95
cloud:PH:802
cloud:PWMD:52
Loose/in: salc:1776
cloud:PWMD2:92
cloud:WL1:96
cloud:T4:710
Loose/in: salc:1775
cloud:PWMD:50
cloud:PWMD2:94
Loose/in: salc:1775
cloud:PWMD:49
cloud:PWMD2:95
cloud:T1:759
Loose/in: t:4:712
Loose/in: salc:1776
cloud:PWMD:47
cloud:PWMD2:97
cloud:T1:757
Loose/in: t:4:710
Loose/in: salc:1776
cloud:PWMD:46
cloud:PWMD2:98
Loose/in: salc:1776
cloud:WL1:95
cloud:T1:759
cloud:PH:803
Loose/in: salc:1776
cloud:PWMD:45
cloud:PWMD2:99
cloud:WL1:96
cloud:PH:802
Loose/in: salc:1778
cloud:WL1:94
cloud:PH:804
Loose/in: salc:1776
cloud:PH:802
Loose/in: salc:1776
cloud:WL1:96
Loose/in: salc:1776
cloud:PWMD:46
cloud:PWMD2:98
cloud:WL1:95
cloud:PH:803
Loose/in: salc:1777
cloud:PWMD:47
cloud:PWMD2:97
cloud:PH:802
Loose/in: salc:1777
cloud:PWMD:48
cloud:PWMD2:96
cloud:WL1:96
cloud:PH:803
Loose/in: salc:1776
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL1:95
cloud:PH:802
Loose/in: salc:1777
cloud:PWMD:51
cloud:PWMD2:93
cloud:T1:757
Loose/in: salc:1776
cloud:SALC:2:1776
Sal calibration
SALC:2:1776
Loose/in: sal:350
cloud:PWMD:53
cloud:PWMD2:91
cloud:T1:759
cloud:PH:803
cloud:PWMD:55
cloud:PWMD2:89
cloud:SAL:350
cloud:PWMD:57
cloud:PWMD2:87
cloud:WL1:96
Loose/in: t:4:708
cloud:PWMD:59
cloud:PWMD2:85
cloud:T4:708
Loose/in: t:4:710
cloud:PWMD:62
cloud:PWMD2:82
cloud:WL1:95
cloud:T4:710
cloud:PWMD:67
cloud:PWMD2:77
cloud:WL1:96
Loose/in: t:4:708
cloud:PWMD:72
cloud:PWMD2:72
cloud:WL1:95
cloud:T4:708
cloud:PWMD:75
cloud:PWMD2:69
cloud:PH:802
Loose/in: t:4:710
cloud:PWMD:77
cloud:PWMD2:67
cloud:WL1:93
cloud:PH:803
cloud:T4:710
cloud:PWMD:80
cloud:PWMD2:64
cloud:WL1:94
cloud:WL2:75
cloud:WL3:2
Loose/in: t:4:708
cloud:PWMD:82
cloud:PWMD2:62
cloud:WL1:95
cloud:WL2:76
cloud:WL3:3
cloud:PH:802
cloud:T4:708
cloud:PWMD:85
cloud:PWMD2:59
cloud:WL1:96
cloud:WL2:75
cloud:PWMD:87
cloud:PWMD2:57
cloud:WL1:95
cloud:PH:803
cloud:PWMD:89
cloud:PWMD2:55
cloud:WL2:76
cloud:PWMD:91
cloud:PWMD2:53
cloud:PWMD:93
cloud:PWMD2:51
cloud:PWMD:95
cloud:PWMD2:49
cloud:PWMD:96
cloud:PWMD2:48
cloud:WL2:75
cloud:WL3:2
cloud:PWMD:97
cloud:PWMD2:47
cloud:WL2:76
cloud:PH:804
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL2:75
cloud:WL3:3
cloud:PH:803
cloud:PWMD:99
cloud:PWMD2:45
cloud:WL2:76
cloud:WL3:2
cloud:WL1:96
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL1:95
cloud:WL3:3
cloud:PWMD:97
cloud:PWMD2:47
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL1:94
cloud:WL3:2
cloud:PWME2:61
PWME2:61
cloud:PWME3:61
PWME3:61
cloud:PWMD:94
cloud:PWMD2:50
cloud:WL1:95
cloud:WL2:75
cloud:WL3:3
cloud:PWME2:60
PWME2:60
cloud:PWME3:60
PWME3:60
cloud:PWMD:92
cloud:PWMD2:52
cloud:WL1:97
Loose/in: sal:349
cloud:PWMD:90
cloud:PWMD2:54
cloud:WL1:95
cloud:WL3:2
cloud:SAL:349
cloud:PWMD:88
cloud:PWMD2:56
cloud:WL1:97
cloud:WL2:76
cloud:WL3:3
cloud:PH:802
cloud:PWMD:86
cloud:PWMD2:58
cloud:WL1:95
cloud:PH:803
cloud:PWMD:84
cloud:PWMD2:60
cloud:WL1:96
cloud:WL2:75
cloud:PWMD:81
cloud:PWMD2:63
cloud:WL1:95
cloud:WL2:76
cloud:PWMD:79
cloud:PWMD2:65
cloud:WL1:96
cloud:PWMD:76
cloud:PWMD2:68
cloud:PH:804
cloud:PWMD:71
cloud:PWMD2:73
cloud:WL1:94
cloud:PH:803
cloud:PWMD:68
cloud:PWMD2:76
cloud:PWMD:65
cloud:PWMD2:79
cloud:WL1:95
cloud:WL2:75
cloud:PWMD:63
cloud:PWMD2:81
cloud:WL1:93
cloud:WL2:76
cloud:PWMD:60
cloud:PWMD2:84
cloud:WL1:96
cloud:WL2:75
cloud:WL3:2
cloud:PH:802
Loose/in: sal:319
cloud:PWMD:58
cloud:PWMD2:86
cloud:WL2:76
cloud:WL3:3
cloud:PH:803
cloud:SAL:319
Loose/in: sal:178
cloud:PWMD:56
cloud:PWMD2:88
cloud:SAL:178
Loose/in: sal:115
cloud:PWMD:54
cloud:PWMD2:90
cloud:SAL:115
Loose/in: sal:86
cloud:PWMD:52
cloud:PWMD2:92
cloud:SAL:86
Loose/in: sal:72
cloud:PWMD:50
Loose/in: sal:66
cloud:PWMD2:94
cloud:WL1:95
cloud:SAL:72
Loose/in: sal:63
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL1:94
cloud:SAL:66
Loose/in: sal:61
cloud:PWMD:47
cloud:PWMD2:97
cloud:WL1:95
cloud:SAL:61
cloud:PWMD:46
cloud:PWMD2:98
Loose/in: sal:60
cloud:WL3:2
cloud:SAL:60
cloud:PWMD:45
cloud:PWMD2:99
cloud:WL1:96
cloud:WL3:3
cloud:WL1:95
cloud:PH:804
cloud:PH:803
cloud:PWMD:47
cloud:PWMD2:97
cloud:PWMD:48
cloud:PWMD2:96
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL1:96
cloud:PWMD:51
cloud:PWMD2:93
cloud:WL1:95
cloud:PH:802
cloud:PWMD:53
cloud:PWMD2:91
cloud:PH:803
Loose/in: t:4:707
cloud:PWMD:55
cloud:PWMD2:89
cloud:WL1:96
cloud:T1:761
cloud:T4:707
cloud:PWMD:57
cloud:PWMD2:87
cloud:WL1:94
cloud:T1:759
cloud:PWMD:59
cloud:PWMD2:85
cloud:WL1:96
cloud:PWMD:62
cloud:PWMD2:82
cloud:PWMD:64
cloud:PWMD2:80
cloud:WL1:94
cloud:PWMD:67
Loose/in: t:4:708
cloud:PWMD2:77
cloud:WL1:95
cloud:PWMD:69
cloud:PWMD2:75
cloud:WL1:94
cloud:T4:708
Loose/in: t:4:707
cloud:PWMD:72
cloud:PWMD2:72
cloud:WL1:96
cloud:T4:707
Loose/in: t:4:708
Loose/in: t:4:707
cloud:PWMD:75
cloud:PWMD2:69
cloud:WL1:95
cloud:WL3:2
cloud:PWMD:77
cloud:PWMD2:67
cloud:WL1:96
cloud:WL3:3
cloud:PH:804
cloud:PWMD:80
cloud:PWMD2:64
cloud:T1:761
cloud:PH:803
cloud:PWMD:82
cloud:PWMD2:62
cloud:WL1:95
cloud:T1:759
cloud:PH:802
cloud:PWMD:85
cloud:PWMD2:59
cloud:WL1:96
cloud:T1:761
cloud:PH:803
cloud:PWMD:89
cloud:PWMD2:55
cloud:WL1:95
cloud:T1:759
cloud:WL1:94
cloud:WL3:2
cloud:PWMD:93
cloud:PWMD2:51
cloud:WL1:96
cloud:WL3:3
cloud:T1:761
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL1:95
cloud:T1:759
cloud:PWMD:96
cloud:PWMD2:48
cloud:WL1:96
cloud:T1:761
cloud:PH:802
cloud:SALC:1
Sal calibration
SALC:1
cloud:PWMD:97
cloud:PWMD2:47
cloud:WL1:95
cloud:WL3:2
cloud:PH:803
Loose/in: salc:0
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL2:75
cloud:T1:759
Loose/in: salc:0
cloud:PWMD:99
cloud:PWMD2:45
cloud:WL3:3
Loose/in: salc:0
cloud:WL1:96
cloud:WL2:76
cloud:WL3:2
cloud:T1:761
Loose/in: salc:0
cloud:WL1:95
cloud:WL3:3
cloud:T1:759
cloud:PH:802
Loose/in: salc:0
cloud:WL1:94
cloud:WL3:2
cloud:PH:803
Loose/in: salc:0
cloud:PWMD:98
Loose/in: salc:0
cloud:PWMD2:46
cloud:WL1:96
cloud:WL3:3
cloud:T1:761
cloud:WL1:95
Loose/in: salc:0
cloud:PWMD:97
Loose/in: salc:0
cloud:PWMD2:47
cloud:WL2:75
cloud:T1:759
cloud:PH:802
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL1:94
cloud:WL2:76
cloud:PH:803
Loose/in: salc:0
Loose/in: salc:0
cloud:PWMD:94
cloud:PWMD2:50
cloud:WL1:97
cloud:PH:802
Loose/in: salc:0
cloud:PWMD:92
cloud:PWMD2:52
cloud:WL1:96
cloud:T1:761
cloud:PH:803
Loose/in: salc:0
cloud:PWMD:90
cloud:PWMD2:54
cloud:PH:802
cloud:SALC:2:0
Sal calibration
SALC:2:0
cloud:PWMD:88
cloud:R1:224
R1:224
cloud:PWMD2:56
cloud:WL1:0
cloud:WL2:0
cloud:WL3:0
cloud:WL4:0
cloud:PH:803
cloud:PWMD:86
cloud:PWMD2:58
cloud:PH:804
cloud:PWMD:84
cloud:PWMD2:60
cloud:T1:759
cloud:PH:803
cloud:PWMD:81
cloud:R1:226
R1:226
cloud:PWMD2:63
cloud:WL1:96
cloud:WL2:85
cloud:WL3:3
cloud:WL4:1
cloud:T1:761
cloud:ATOHIGH:1
cloud:PWMD:79
cloud:R1:194
R1:194
cloud:PWMD2:65
cloud:WL1:95
cloud:WL2:84
cloud:T1:759
cloud:PWMD:76
cloud:PWMD2:68
cloud:WL2:88
cloud:T1:761
cloud:PWMD:71
cloud:PWMD2:73
cloud:WL1:96
cloud:WL2:87
cloud:WL1:92
cloud:WL2:88
cloud:T1:759
cloud:PWMD:65
cloud:PWMD2:79
cloud:WL1:95
cloud:WL3:2
cloud:T1:761
cloud:PWMD:63
cloud:PWMD2:81
cloud:WL1:96
cloud:WL3:3
cloud:T1:759
cloud:PH:802
cloud:PWMD:60
cloud:PWMD2:84
cloud:WL1:94
cloud:WL3:2
cloud:T1:761
cloud:PH:803
cloud:PWMD:58
cloud:PWMD2:86
cloud:WL1:95
cloud:WL3:3
cloud:T1:759
cloud:PWMD:56
cloud:PWMD2:88
cloud:WL1:94
cloud:WL2:87
cloud:T1:761
cloud:PH:802
cloud:PWMD:54
cloud:PWMD2:90
cloud:WL1:95
cloud:T1:759
cloud:PH:803
cloud:PWMD:52
cloud:PWMD2:92
cloud:WL1:92
cloud:WL2:86
cloud:PWMD:50
cloud:PWMD2:94
cloud:WL1:94
cloud:WL2:85
cloud:T1:761
cloud:PWMD:49
cloud:PWMD2:95
cloud:PWMD:47
cloud:PWMD2:97
cloud:WL1:95
cloud:WL2:84
cloud:T1:759
cloud:PH:802
cloud:PWMD:46
cloud:PWMD2:98
cloud:PH:803
cloud:PWMD:45
cloud:PWMD2:99
cloud:WL2:83
Loose/in: t:4:705
Loose/in: t:4:707
cloud:EM:137
cloud:EM1:22
cloud:REM:7
cloud:BID:4
cloud:PWMD:62
cloud:PWMDO:255
cloud:PWMAO:255
cloud:R1:194
R1:194
cloud:ROFF1:255
ROFF1:255
cloud:R2:131
R2:131
cloud:ROFF2:255
ROFF2:255
Loose/in: t:4:705
cloud:ROFF3:255
ROFF3:255
cloud:ROFF4:255
ROFF4:255
cloud:ROFF5:255
ROFF5:255
Loose/in: t:4:707
cloud:ROFF6:255
ROFF6:255
cloud:ROFF7:255
ROFF7:255
cloud:ROFF8:255
ROFF8:255
Loose/in: t:4:705
cloud:PWMD2:82
cloud:PWMD2O:255
cloud:PWMA2O:255
cloud:WL1:97
cloud:WL2:81
cloud:WL3:3
cloud:WL4:1
cloud:DCM:13
cloud:DCS:99
cloud:DCD:63
cloud:DCT:45
cloud:PWME0:62
PWME0:62
cloud:PWME2:60
PWME2:60
Loose/in: t:4:707
cloud:PWME3:60
PWME3:60
cloud:PWME0O:255
PWME0O:255
cloud:PWME1O:255
PWME1O:255
Loose/in: t:4:705
cloud:PWME2O:255
PWME2O:255
cloud:PWME3O:255
PWME3O:255
cloud:PWME4O:255
PWME4O:255
cloud:PWME5O:255
PWME5O:255
cloud:ROFF:255
cloud:T1:759
cloud:T2:768
cloud:T3:703
cloud:PH:803
cloud:SAL:59
cloud:PWM16EO00:255
PWM16EO00:255
cloud:PWM16EO01:255
PWM16EO01:255
cloud:PWM16EO02:255
PWM16EO02:255
cloud:PWM16EO03:255
PWM16EO03:255
cloud:PWM16EO04:255
PWM16EO04:255
cloud:PWM16EO05:255
PWM16EO05:255
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL1:96
cloud:T1:757
cloud:T2:766
cloud:T3:701
cloud:T4:705
cloud:PWMD:97
cloud:PWMD2:47
cloud:WL1:95
cloud:WL2:80
cloud:T1:759
cloud:T2:768
cloud:T3:703
cloud:PH:802
cloud:T4:707
cloud:PWMD:98
cloud:PWMD2:46
cloud:T1:757
cloud:PWMD:99
cloud:PWMD2:45
cloud:WL1:96
cloud:T1:759
cloud:PH:803
cloud:WL1:95
cloud:PH:802
cloud:WL1:96
cloud:T2:770
cloud:PH:803
cloud:T4:705
cloud:PWMD:98
cloud:PWMD2:46
cloud:T2:768
cloud:PH:802
cloud:T2:770
cloud:PWMD:97
cloud:PWMD2:47
cloud:PWMD:95
cloud:R1:192
R1:192
cloud:PWMD2:49
cloud:WL1:0
cloud:WL2:0
cloud:WL3:0
cloud:WL4:0
cloud:T2:768
cloud:PH:803
cloud:PWMD:94
cloud:PWMD2:50
cloud:T2:770
cloud:ATOHIGH:1
cloud:PWMD:92
cloud:PWMD2:52
cloud:PWMD:90
cloud:PWMD2:54
cloud:PWMD:88
cloud:PWMD2:56
cloud:PWMD:86
cloud:PWMD2:58
cloud:PWMD:84
cloud:PWMD2:60
cloud:PWMD:81
cloud:PWMD2:63
cloud:PWMD:79
cloud:PWMD2:65
cloud:T1:761
cloud:PWMD:76
cloud:PWMD2:68
cloud:T1:759
cloud:PWMD:73
cloud:R1:194
R1:194
cloud:PWMD2:71
cloud:WL1:103
cloud:WL2:98
cloud:WL3:3
cloud:WL4:1
cloud:PWMD:71
cloud:PWMD2:73
cloud:WL1:105
cloud:PH:802
cloud:PWMD:68
cloud:PWMD2:76
cloud:WL2:99
cloud:T1:761
cloud:PWMD:63
cloud:PWMD2:81
cloud:WL1:107
cloud:WL2:98
cloud:T1:759
cloud:PWMD:60
cloud:PWMD2:84
cloud:WL2:99
cloud:WL1:104
cloud:PH:803
cloud:PWMD:56
cloud:PWMD2:88
cloud:WL2:97
cloud:PH:802
Loose/in: t:4:703
cloud:PWMD:47
cloud:PWMD2:97
cloud:WL1:100
cloud:WL2:94
cloud:T2:768
cloud:PH:803
cloud:T4:703
Loose/in: t:4:705
cloud:PWMD:46
cloud:PWMD2:98
cloud:WL1:99
cloud:WL2:93
cloud:PH:802
cloud:T4:705
cloud:WL2:92
Loose/in: t:4:703
cloud:PWMD:45
cloud:PWMD2:99
cloud:WL1:97
cloud:WL2:91
cloud:T4:703
cloud:R1:192
R1:192
cloud:WL1:0
cloud:WL2:0
cloud:WL3:0
cloud:WL4:0
cloud:T2:770
cloud:PH:803
cloud:PH:802
cloud:PWMD:46
cloud:PWMD2:98
cloud:T1:761
cloud:PH:803
cloud:PWMD:47
cloud:R1:194
R1:194
cloud:PWMD2:97
cloud:WL1:92
cloud:WL2:87
cloud:WL3:3
cloud:WL4:1
cloud:PWMD:48
cloud:PWMD2:96
cloud:PWMA2:100
cloud:WL1:94
cloud:T1:759
cloud:PH:802
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL1:93
cloud:WL2:86
cloud:T1:761
cloud:PWMD:51
cloud:PWMD2:93
cloud:WL1:95
cloud:PWME2:61
PWME2:61
cloud:PWME3:61
PWME3:61
cloud:SAL:349
cloud:PWMD:53
cloud:PWMD2:91
cloud:WL1:94
cloud:WL2:85
cloud:PH:803
cloud:PWMD:55
cloud:PWMD2:89
cloud:T1:759
cloud:T2:768
cloud:PH:802
cloud:PWMD:57
cloud:PWMD2:87
cloud:WL1:95
cloud:WL2:84
cloud:T1:761
cloud:T2:770
cloud:PWMD:59
cloud:PWMD2:85
cloud:PWMD:62
cloud:PWMD2:82
cloud:WL1:96
cloud:PH:803
cloud:PWMD:64
cloud:PWMD2:80
cloud:WL1:95
cloud:PH:802
cloud:SAL:350
cloud:PWMD:67
cloud:PWMD2:77
cloud:WL1:96
cloud:PH:803
cloud:SAL:349
cloud:PWMD:69
cloud:PWMD2:75
cloud:WL2:83
cloud:PH:802
cloud:PWMD:72
cloud:R1:192
R1:192
cloud:PWMD2:72
cloud:WL1:0
cloud:WL2:0
cloud:WL3:0
cloud:WL4:0
cloud:SAL:60
cloud:PWMD:75
cloud:PWMD2:69
cloud:PH:803
cloud:PWMD:77
cloud:PWMD2:67
cloud:PWMD:80
cloud:PWMD2:64
cloud:T2:768
cloud:PWMD:82
cloud:PWMD2:62
cloud:T2:770
cloud:PWMD:85
cloud:PWMD2:59
cloud:PWMD:87
cloud:PWMD2:57
cloud:PWMD:89
cloud:PWMD2:55
cloud:PWMD:93
cloud:R1:194
R1:194
cloud:PWMD2:51
cloud:WL1:97
cloud:WL2:87
cloud:WL3:3
cloud:WL4:1
cloud:T2:768
cloud:SAL:350
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL1:96
cloud:WL2:92
cloud:PWMD:96
cloud:PWMD2:48
cloud:WL1:97
cloud:WL2:90
cloud:T2:770
cloud:PWMD:97
cloud:PWMD2:47
cloud:T2:768
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL1:93
cloud:T2:770
cloud:PWMD:99
cloud:PWMD2:45
cloud:WL1:95
cloud:T2:768
cloud:PH:802
cloud:WL1:94
cloud:WL2:89
cloud:WL1:95
cloud:T2:770
cloud:PH:803
cloud:SAL:289
cloud:WL1:98
cloud:WL2:88
cloud:SAL:135
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL1:94
cloud:T2:768
cloud:SAL:103
cloud:WL1:97
cloud:WL2:87
cloud:T2:770
cloud:SAL:75
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL1:96
cloud:SAL:69
cloud:PWMD:94
cloud:PWMD2:50
cloud:WL1:95
cloud:WL2:86
cloud:SAL:64
cloud:PWMD:92
cloud:PWMD2:52
cloud:WL1:96
cloud:T2:768
cloud:SAL:85
cloud:PWMD:90
cloud:PWMD2:54
cloud:WL1:97
cloud:WL2:85
cloud:T2:770
cloud:SAL:255
cloud:PWMD:88
cloud:PWMD2:56
cloud:WL1:96
cloud:PH:802
cloud:SAL:289
cloud:PWMD:86
cloud:PWMD2:58
cloud:WL1:95
cloud:SAL:321
cloud:PWMD:84
cloud:PWMD2:60
cloud:WL1:94
cloud:WL2:84
cloud:PWME0:63
PWME0:63
cloud:PH:803
cloud:SAL:327
cloud:PWMD:81
cloud:PWMD2:63
cloud:WL1:96
cloud:T2:768
cloud:SAL:333
cloud:PWMD:79
cloud:PWMD2:65
cloud:WL1:95
cloud:T2:770
cloud:PH:802
cloud:SAL:335
cloud:PWMD:76
cloud:PWMD2:68
cloud:WL1:96
cloud:WL2:83
cloud:PH:803
cloud:SAL:336
cloud:PWMD:73
cloud:PWMD2:71
cloud:WL2:84
cloud:PH:804
cloud:PWMD:71
cloud:PWMD2:73
cloud:WL2:83
cloud:PH:802
cloud:PWMD:68
cloud:PWMD2:76
cloud:WL1:95
cloud:T2:768
cloud:PH:803
cloud:SAL:337
cloud:PWMD:65
cloud:PWMD2:79
cloud:WL1:94
cloud:T2:770
cloud:PH:802
cloud:SAL:336
cloud:PWMD:63
cloud:PWMD2:81
cloud:WL1:93
cloud:PH:803
cloud:PWMD:60
cloud:PWMD2:84
cloud:WL1:94
cloud:WL2:82
cloud:T2:768
cloud:PH:802
cloud:SAL:337
cloud:PWMD:58
cloud:PWMD2:86
cloud:WL1:98
cloud:SAL:336
cloud:PWMD:56
cloud:PWMD2:88
cloud:WL1:97
cloud:T2:770
cloud:PH:803
cloud:PWMD:52
cloud:PWMD2:92
cloud:WL1:96
cloud:WL1:97
cloud:T2:768
cloud:PWMD:49
cloud:PWMD2:95
cloud:ATOHIGH:0
cloud:WL1:96
cloud:WL2:81
cloud:T2:770
cloud:T3:701
cloud:PH:802
cloud:PWMD:46
cloud:PWMD2:98
cloud:T2:768
cloud:PH:803
cloud:SAL:337
cloud:SAL:336

rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by rimai »

Sorry.
I forgot to change the custom expansion...
Change this:

Code: Select all

#define CloudCustomModule1  CUSTOM_NONE
To this:

Code: Select all

#define CloudCustomModule1  CUSTOM_SALINITY
Roberto.
User avatar
Loose
Posts: 88
Joined: Fri Sep 01, 2017 8:15 am
Location: Severna Park, MD

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by Loose »

Thanks Roberto.
20190414_105414_resize_28.jpg
20190414_105414_resize_28.jpg (317.06 KiB) Viewed 8304 times
User avatar
Loose
Posts: 88
Joined: Fri Sep 01, 2017 8:15 am
Location: Severna Park, MD

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by Loose »

Roberto,

I isolated two things with regards to the lights using the PWM16E coding.

The cycling of power occurs when the lights are changing states.

Whether coming on or going off ramping up is below:

Code: Select all

cloud:PWM16E05:2745
PWM16E05:2745
cloud:WL1:98
cloud:PWME4:67
PWME4:67
cloud:PWME5:67
PWME5:67
cloud:SAL:364
cloud:PWM16E00:2747
PWM16E00:2747
cloud:PWM16E01:2747
PWM16E01:2747
cloud:PWM16E02:2747
PWM16E02:2747
cloud:PWM16E03:2747
PWM16E03:2747
cloud:PWM16E04:2747
PWM16E04:2747
cloud:PWM16E05:2747
PWM16E05:2747
cloud:PWMD:46
cloud:PWMD2:98
Loose/in: cexp:0::264
cloud:PH:797
cloud:SAL:363
cloud:PWM16E00:2749
PWM16E00:2749
Connecting to cloud server...
Connected
Subscribing to Loose/out/#
Loose/in: all:0
cloud:PWM16E00:3003
PWM16E00:3003
cloud:PWM16E01:3003
PWM16E01:3003
cloud:PWM16E02:3003
PWM16E02:3003
cloud:PWM16E03:3003
PWM16E03:3003
Loose/in: cexp:0::263
cloud:PWM16E04:3003
PWM16E04:3003
cloud:PWM16E05:3003
PWM16E05:3003
Loose/in: t:4:717
Loose/in: cexp:0::264
cloud:ATOLOW:0
cloud:ATOHIGH:0
cloud:EM:137
cloud:EM1:22
cloud:REM:7
cloud:BID:4
cloud:AF:0
cloud:SF:0
cloud:PWMD:50
cloud:PWMA:0
cloud:PWMDO:255
cloud:PWMAO:255
Loose/in: t:4:719
cloud:R1:226
R1:226
cloud:ROFF1:255
ROFF1:255
cloud:RON1:0
RON1:0
cloud:R2:131
R2:131
cloud:ROFF2:255
ROFF2:255
cloud:RON2:0
RON2:0
cloud:R3:0
R3:0
cloud:ROFF3:255
ROFF3:255
cloud:RON3:0
RON3:0
cloud:R4:0
R4:0
cloud:ROFF4:255
ROFF4:255
cloud:RON4:0
RON4:0
cloud:R5:0
R5:0
cloud:ROFF5:255
ROFF5:255
cloud:RON5:0
RON5:0
Loose/in: cexp:0::263
cloud:R6:0
R6:0
cloud:ROFF6:255
ROFF6:255
cloud:RON6:0
RON6:0
Loose/in: cexp:0::264
cloud:R7:0
R7:0
cloud:ROFF7:255
ROFF7:255
cloud:RON7:0
RON7:0
Loose/in: t:4:717
Loose/in: cexp:0::263
cloud:R8:0
R8:0
Loose/in: t:4:719
Loose/in: cexp:0::264
cloud:ROFF8:255
ROFF8:255
Loose/in: t:4:717
cloud:RON8:0
RON8:0
cloud:ALARM:0
cloud:PWMD2:94
cloud:PWMA2:100
cloud:PWMD2O:255
cloud:PWMA2O:255
cloud:WL:0
cloud:WL1:97
cloud:WL2:38
cloud:WL3:3
cloud:WL4:2
cloud:HUM:0
cloud:DCM:13
cloud:DCS:99
cloud:DCD:63
cloud:DCT:45
cloud:PWME0:73
PWME0:73
cloud:PWME1:0
PWME1:0
cloud:PWME2:72
PWME2:72
cloud:PWME3:72
PWME3:72
cloud:PWME4:73
PWME4:73
Loose/in: t:4:719
Loose/in: cexp:0::263
cloud:PWME5:73
PWME5:73
cloud:PWME0O:255
PWME0O:255
cloud:PWME1O:255
PWME1O:255
cloud:PWME2O:255
PWME2O:255
cloud:PWME3O:255
PWME3O:255
Loose/in: cexp:0::264
cloud:PWME4O:255
PWME4O:255
cloud:PWME5O:255
PWME5O:255
cloud:AIW:0
cloud:AIB:0
cloud:AIRB:0
cloud:RFM:0
cloud:RFS:0
cloud:RFD:0
cloud:RFW:0
cloud:RFRB:0
cloud:RFR:0
cloud:RFG:0
cloud:RFB:0
cloud:RFI:0
cloud:RFWO:0
cloud:RFRBO:0
cloud:RFRO:0
cloud:RFGO:0
cloud:RFBO:0
cloud:RFIO:0
cloud:IO:0
cloud:LEAK:0
cloud:C0:7
cloud:C1:0
cloud:C2:0
cloud:C3:0
cloud:C4:0
cloud:C5:0
cloud:C6:0
cloud:C7:0
cloud:R:0
cloud:ROFF:255
cloud:RON:0
cloud:T1:750
cloud:T2:761
cloud:T3:687
cloud:T4:719
cloud:T5:730
cloud:T6:0
cloud:ORP:0
cloud:SAL:343
cloud:PHE:0
cloud:PAR:0
cloud:CEXP0:263
cloud:CEXP1:0
cloud:CEXP2:0
cloud:CEXP3:0
cloud:CEXP4:0
cloud:CEXP5:0
cloud:CEXP6:0
cloud:CEXP7:0
cloud:PWM16E00:3005
PWM16E00:3005
cloud:PWM16E01:3005
PWM16E01:3005
cloud:PWM16E02:3005
PWM16E02:3005
cloud:PWM16E03:3005
PWM16E03:3005
cloud:PWM16E04:3005
PWM16E04:3005
cloud:PWM16E05:3005
PWM16E05:3005
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL1:98
cloud:SAL:347
cloud:PWM16E00:3007
PWM16E00:3007
Loose/in: t:4:717
Loose/in: t:4:719
cloud:PWM16E01:3007
PWM16E01:3007
cloud:PWM16E02:3007
PWM16E02:3007
cloud:PWM16E03:3007
PWM16E03:3007
cloud:PWM16E04:3007
PWM16E04:3007
cloud:PWM16E05:3007
PWM16E05:3007
cloud:PWMD:47
cloud:PWMD2:97
cloud:C0:8
cloud:T4:717
cloud:CEXP0:264
cloud:PWM16E00:3009
PWM16E00:3009
cloud:PWM16E01:3009
PWM16E01:3009
Loose/in: cexp:0::263
cloud:PWM16E02:3009
PWM16E02:3009
cloud:PWM16E03:3009
PWM16E03:3009
cloud:PWM16E04:3009
PWM16E04:3009
cloud:PWM16E05:3009
PWM16E05:3009
cloud:PWMD:46
cloud:PWMD2:98
cloud:WL1:99
cloud:T4:719
cloud:SAL:348
cloud:PWM16E00:3012
PWM16E00:3012
cloud:PWM16E01:3012
PWM16E01:3012
cloud:PWM16E02:3012
PWM16E02:3012
cloud:PWM16E03:3012
PWM16E03:3012
cloud:PWM16E04:3012
PWM16E04:3012
Loose/in: cexp:0::264
cloud:PWM16E05:3012
PWM16E05:3012
cloud:SAL:347
cloud:PWM16E00:3014
PWM16E00:3014
cloud:PWM16E01:3014
PWM16E01:3014
cloud:PWM16E02:3014
PWM16E02:3014
cloud:PWM16E03:3014
PWM16E03:3014
cloud:PWM16E04:3014
PWM16E04:3014
cloud:PWM16E05:3014
PWM16E05:3014
cloud:PWMD:45
cloud:PWMD2:99
cloud:WL1:97
cloud:PH:796
cloud:PWM16E00:3016
PWM16E00:3016
cloud:PWM16E01:3016
PWM16E01:3016
cloud:PWM16E02:3016
PWM16E02:3016
cloud:PWM16E03:3016
PWM16E03:3016
cloud:PWM16E04:3016
PWM16E04:3016
cloud:PWM16E05:3016
PWM16E05:3016
Loose/in: cexp:0::263
cloud:WL1:98
cloud:PH:797
cloud:PWM16E00:3018
PWM16E00:3018
cloud:PWM16E01:3018
PWM16E01:3018
Loose/in: cexp:0::264
cloud:PWM16E02:3018
PWM16E02:3018
cloud:PWM16E03:3018
PWM16E03:3018
cloud:PWM16E04:3018
PWM16E04:3018
cloud:PWM16E05:3018
PWM16E05:3018
cloud:WL1:97
cloud:SAL:345
cloud:PWM16E00:3020
PWM16E00:3020
Loose/in: cexp:0::263
cloud:PWM16E01:3020
PWM16E01:3020
cloud:PWM16E02:3020
PWM16E02:3020
Loose/in: cexp:0::264
cloud:PWM16E03:3020
PWM16E03:3020
cloud:PWM16E04:3020
PWM16E04:3020
Loose/in: t:4:717
cloud:PWM16E05:3020
PWM16E05:3020
cloud:WL2:37
cloud:PWM16E00:3022
PWM16E00:3022
Loose/in: cexp:0::263
cloud:PWM16E01:3022
PWM16E01:3022
cloud:PWM16E02:3022
PWM16E02:3022
Loose/in: t:4:719
cloud:PWM16E03:3022
PWM16E03:3022
cloud:PWM16E04:3022
PWM16E04:3022
Loose/in: cexp:0::264
cloud:PWM16E05:3022
PWM16E05:3022
cloud:PWMD:46
cloud:PWMD2:98
cloud:WL2:38
cloud:SAL:343
cloud:PWM16E00:3025
PWM16E00:3025
cloud:PWM16E01:3025
PWM16E01:3025
cloud:PWM16E02:3025
PWM16E02:3025
cloud:PWM16E03:3025
PWM16E03:3025
cloud:PWM16E04:3025
PWM16E04:3025
cloud:PWM16E05:3025
PWM16E05:3025
cloud:PWMD:47
cloud:PWMD2:97
cloud:WL1:98
cloud:WL2:37
cloud:PH:796
cloud:SAL:344
cloud:PWM16E00:3027
PWM16E00:3027
cloud:PWM16E01:3027
PWM16E01:3027
cloud:PWM16E02:3027
PWM16E02:3027
cloud:PWM16E03:3027
PWM16E03:3027
cloud:PWM16E04:3027
PWM16E04:3027
cloud:PWM16E05:3027
PWM16E05:3027
Loose/in: t:4:717
cloud:PWMD:48
cloud:PWMD2:96
cloud:PH:797
cloud:SAL:342
cloud:PWM16E00:3029
PWM16E00:3029
cloud:PWM16E01:3029
PWM16E01:3029
Loose/in: t:4:719
cloud:PWM16E02:3029
PWM16E02:3029
cloud:PWM16E03:3029
PWM16E03:3029
cloud:PWM16E04:3029
PWM16E04:3029
cloud:PWM16E05:3029
PWM16E05:3029
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL2:38
cloud:PH:796
cloud:SAL:343
cloud:PWM16E00:3031
PWM16E00:3031
Loose/in: cexp:0::263
cloud:PWM16E01:3031
PWM16E01:3031
cloud:PWM16E02:3031
PWM16E02:3031
Loose/in: t:4:717
Loose/in: cexp:0::264
cloud:PWM16E03:3031
PWM16E03:3031
Loose/in: t:4:719
cloud:PWM16E04:3031
PWM16E04:3031
cloud:PWM16E05:3031
PWM16E05:3031
cloud:PWMD:51
cloud:PWMD2:93
cloud:WL2:37
cloud:PWME4:74
PWME4:74
cloud:PWME5:74
PWME5:74
cloud:PH:797
cloud:PWM16E00:3033
PWM16E00:3033
cloud:PWM16E01:3033
PWM16E01:3033
Loose/in: cexp:0::263
cloud:PWM16E02:3033
PWM16E02:3033
cloud:PWM16E03:3033
PWM16E03:3033
Loose/in: t:4:717
Loose/in: cexp:0::264
cloud:PWM16E04:3033
PWM16E04:3033
Loose/in: t:4:719
cloud:PWM16E05:3033
PWM16E05:3033
cloud:PWMD:53
cloud:PWMD2:91
cloud:WL1:97
cloud:SAL:344
cloud:PWM16E00:3036
PWM16E00:3036
Loose/in: t:4:717
Loose/in: cexp:0::263
cloud:PWM16E01:3036
PWM16E01:3036
Loose/in: t:4:719
Loose/in: cexp:0::264
cloud:PWM16E02:3036
PWM16E02:3036
Loose/in: t:4:717
cloud:PWM16E03:3036
PWM16E03:3036
cloud:PWM16E04:3036
PWM16E04:3036
Loose/in: t:4:719
cloud:PWM16E05:3036
PWM16E05:3036
cloud:PWMD:55
cloud:PWMD2:89
cloud:WL2:38
cloud:PH:796
cloud:SAL:343
cloud:PWM16E00:3038
PWM16E00:3038
cloud:PWM16E01:3038
PWM16E01:3038
cloud:PWM16E02:3038
PWM16E02:3038
cloud:PWM16E03:3038
PWM16E03:3038
cloud:PWM16E04:3038
PWM16E04:3038
cloud:PWM16E05:3038
PWM16E05:3038
cloud:PWMD:57
cloud:PWMD2:87
cloud:WL2:37
cloud:PH:797
cloud:SAL:345
cloud:PWM16E00:3040
PWM16E00:3040
Loose/in: cexp:0::263
cloud:PWM16E01:3040
PWM16E01:3040
cloud:PWM16E02:3040
PWM16E02:3040
cloud:PWM16E03:3040
PWM16E03:3040
cloud:PWM16E04:3040
PWM16E04:3040
cloud:PWM16E05:3040
PWM16E05:3040
cloud:PWMD:59
cloud:PWMD2:85
cloud:WL1:98
cloud:WL2:38
cloud:SAL:344
cloud:PWM16E00:3042
PWM16E00:3042
cloud:PWM16E01:3042
PWM16E01:3042
cloud:PWM16E02:3042
PWM16E02:3042
Loose/in: cexp:0::264
cloud:PWM16E03:3042
PWM16E03:3042
cloud:PWM16E04:3042
PWM16E04:3042
cloud:PWM16E05:3042
PWM16E05:3042
cloud:PWMD:62
cloud:PWMD2:82
cloud:WL1:97
cloud:PWM16E00:3044
PWM16E00:3044
cloud:PWM16E01:3044
PWM16E01:3044
cloud:PWM16E02:3044
PWM16E02:3044
cloud:PWM16E03:3044
PWM16E03:3044
cloud:PWM16E04:3044
PWM16E04:3044
cloud:PWM16E05:3044
PWM16E05:3044
Loose/in: t:4:717
cloud:PWMD:64
cloud:PWMD2:80
cloud:WL1:98
cloud:PH:796
cloud:SAL:342
cloud:PWM16E00:3046
PWM16E00:3046
cloud:PWM16E01:3046
PWM16E01:3046
Loose/in: t:4:719
cloud:PWM16E02:3046
PWM16E02:3046
cloud:PWM16E03:3046
PWM16E03:3046
cloud:PWM16E04:3046
PWM16E04:3046
cloud:PWM16E05:3046
PWM16E05:3046
cloud:PWMD:67
cloud:PWMD2:77
cloud:PH:797
cloud:SAL:343
cloud:PWM16E00:3049
PWM16E00:3049
cloud:PWM16E01:3049
PWM16E01:3049
cloud:PWM16E02:3049
PWM16E02:3049
cloud:PWM16E03:3049
PWM16E03:3049
cloud:PWM16E04:3049
PWM16E04:3049
cloud:PWM16E05:3049
PWM16E05:3049
cloud:PWMD:69
cloud:PWMD2:75
cloud:WL1:99
cloud:SAL:341
cloud:PWM16E00:3051
PWM16E00:3051
cloud:PWM16E01:3051
PWM16E01:3051
cloud:PWM16E02:3051
PWM16E02:3051
cloud:PWM16E03:3051
PWM16E03:3051
cloud:PWM16E04:3051
PWM16E04:3051
cloud:PWM16E05:3051
PWM16E05:3051
cloud:PWMD:72
cloud:PWMD2:72
cloud:WL1:97
cloud:WL2:37
cloud:PWM16E00:3053
PWM16E00:3053
cloud:PWM16E01:3053
PWM16E01:3053
cloud:PWM16E02:3053
PWM16E02:3053
Loose/in: cexp:0::263
cloud:PWM16E03:3053
PWM16E03:3053
cloud:PWM16E04:3053
PWM16E04:3053
cloud:PWM16E05:3053
PWM16E05:3053
cloud:PWMD:75
cloud:PWMD2:69
cloud:WL1:96
cloud:SAL:347
cloud:CEXP0:263
cloud:PWM16E00:3055
PWM16E00:3055
cloud:PWM16E01:3055
PWM16E01:3055
Loose/in: cexp:0::264
cloud:PWM16E02:3055
PWM16E02:3055
cloud:PWM16E03:3055
PWM16E03:3055
cloud:PWM16E04:3055
PWM16E04:3055
cloud:PWM16E05:3055
PWM16E05:3055
cloud:PWMD:77
cloud:PWMD2:67
cloud:WL1:97
cloud:SAL:349
cloud:PWM16E00:3057
PWM16E00:3057
Loose/in: cexp:0::263
cloud:PWM16E01:3057
PWM16E01:3057
cloud:PWM16E02:3057
PWM16E02:3057
cloud:PWM16E03:3057
PWM16E03:3057
cloud:PWM16E04:3057
PWM16E04:3057
cloud:PWM16E05:3057
PWM16E05:3057
cloud:PWMD:80
cloud:PWMD2:64
cloud:WL1:98
cloud:C0:7
cloud:PH:796
cloud:PWM16E00:3060
PWM16E00:3060
cloud:PWM16E01:3060
PWM16E01:3060
cloud:PWM16E02:3060
PWM16E02:3060
Loose/in: cexp:0::264
cloud:PWM16E03:3060
PWM16E03:3060
cloud:PWM16E04:3060
PWM16E04:3060
cloud:PWM16E05:3060
PWM16E05:3060
cloud:PWMD:82
cloud:PWMD2:62
cloud:WL2:38
cloud:PWM16E00:3062
PWM16E00:3062
cloud:PWM16E01:3062
PWM16E01:3062
Loose/in: t:5:734
cloud:PWM16E02:3062
PWM16E02:3062
cloud:PWM16E03:3062
PWM16E03:3062
cloud:PWM16E04:3062
PWM16E04:3062
cloud:PWM16E05:3062
PWM16E05:3062
cloud:PWMD:85
cloud:PWMD2:59
cloud:WL1:97
cloud:WL2:37
cloud:PH:797
cloud:SAL:351
cloud:CEXP0:264
cloud:PWM16E00:3064
PWM16E00:3064
Loose/in: t:5:732
cloud:PWM16E01:3064
PWM16E01:3064
cloud:PWM16E02:3064
PWM16E02:3064
Loose/in: t:5:734
cloud:PWM16E03:3064
PWM16E03:3064
cloud:PWM16E04:3064
PWM16E04:3064
Loose/in: cexp:0::263
cloud:PWM16E05:3064
PWM16E05:3064
cloud:PWMD:87
cloud:PWMD2:57
cloud:WL1:96
cloud:WL2:38
cloud:C0:8
cloud:SAL:355
cloud:PWM16E00:3066
PWM16E00:3066
Loose/in: cexp:0::264
cloud:PWM16E01:3066
PWM16E01:3066
cloud:PWM16E02:3066
PWM16E02:3066
cloud:PWM16E03:3066
PWM16E03:3066
cloud:PWM16E04:3066
PWM16E04:3066
cloud:PWM16E05:3066
PWM16E05:3066
cloud:PWMD:89
cloud:PWMD2:55
cloud:WL1:98
cloud:WL2:37
cloud:PH:796
cloud:PWM16E00:3068
PWM16E00:3068
cloud:PWM16E01:3068
PWM16E01:3068
cloud:PWM16E02:3068
PWM16E02:3068
Loose/in: cexp:0::263
cloud:PWM16E03:3068
PWM16E03:3068
cloud:PWM16E04:3068
PWM16E04:3068
cloud:PWM16E05:3068
PWM16E05:3068
cloud:PWMD:91
cloud:PWMD2:53
cloud:SAL:351
cloud:PWM16E00:3071
PWM16E00:3071
cloud:PWM16E01:3071
PWM16E01:3071
cloud:PWM16E02:3071
PWM16E02:3071
cloud:PWM16E03:3071
PWM16E03:3071
cloud:PWM16E04:3071
PWM16E04:3071
cloud:PWM16E05:3071
PWM16E05:3071
Loose/in: cexp:0::264
cloud:PWMD:93
cloud:PWMD2:51
cloud:WL1:97
cloud:PH:797
cloud:SAL:353
cloud:PWM16E00:3073
PWM16E00:3073
cloud:PWM16E01:3073
PWM16E01:3073
Loose/in: cexp:0::263
cloud:PWM16E02:3073
PWM16E02:3073
cloud:PWM16E03:3073
PWM16E03:3073
Loose/in: cexp:0::264
cloud:PWM16E04:3073
PWM16E04:3073
cloud:PWM16E05:3073
PWM16E05:3073
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL1:96
cloud:PWME4:75
PWME4:75
cloud:PWME5:75
PWME5:75
cloud:C0:7
cloud:SAL:357
cloud:CEXP0:263
cloud:PWM16E00:3075
PWM16E00:3075
cloud:PWM16E01:3075
PWM16E01:3075
Loose/in: cexp:0::263
cloud:PWM16E02:3075
PWM16E02:3075
cloud:PWM16E03:3075
PWM16E03:3075
Loose/in: cexp:0::264
cloud:PWM16E04:3075
PWM16E04:3075
cloud:PWM16E05:3075
PWM16E05:3075
cloud:PWMD:96
cloud:PWMD2:48
cloud:WL1:98
cloud:SAL:342
cloud:PWM16E00:3079
PWM16E00:3079
cloud:PWM16E01:3079
PWM16E01:3079
cloud:PWM16E02:3079
PWM16E02:3079
cloud:PWM16E03:3079
PWM16E03:3079
cloud:PWM16E04:3079
PWM16E04:3079
cloud:PWM16E05:3079
PWM16E05:3079
cloud:PWMD:97
cloud:PWMD2:47
Loose/in: cexp:0::263
cloud:WL1:96
cloud:PH:798
cloud:SAL:347
cloud:PWM16E00:3081
PWM16E00:3081
cloud:PWM16E01:3081
PWM16E01:3081
cloud:PWM16E02:3081
PWM16E02:3081
cloud:PWM16E03:3081
PWM16E03:3081
cloud:PWM16E04:3081
PWM16E04:3081
cloud:PWM16E05:3081
PWM16E05:3081
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL1:97
cloud:WL2:38
cloud:PH:797
cloud:SAL:352
cloud:PWM16E00:3084
PWM16E00:3084
cloud:PWM16E01:3084
PWM16E01:3084
cloud:PWM16E02:3084
PWM16E02:3084
Loose/in: cexp:0::264
cloud:PWM16E03:3084
PWM16E03:3084
cloud:PWM16E04:3084
PWM16E04:3084
Loose/in: cexp:0::263
cloud:PWM16E05:3084
PWM16E05:3084
cloud:PWMD:99
cloud:PWMD2:45
cloud:SAL:348
cloud:PWM16E00:3086
PWM16E00:3086
cloud:PWM16E01:3086
PWM16E01:3086
Loose/in: cexp:0::264
cloud:PWM16E02:3086
PWM16E02:3086
cloud:PWM16E03:3086
PWM16E03:3086
cloud:PWM16E04:3086
PWM16E04:3086
cloud:PWM16E05:3086
PWM16E05:3086
cloud:WL1:96
cloud:T1:752
cloud:SAL:354
cloud:PWM16E00:3088
PWM16E00:3088
cloud:PWM16E01:3088
PWM16E01:3088
cloud:PWM16E02:3088
PWM16E02:3088
Loose/in: cexp:0::263
cloud:PWM16E03:3088
PWM16E03:3088
cloud:PWM16E04:3088
PWM16E04:3088
Loose/in: cexp:0::264
cloud:PWM16E05:3088
PWM16E05:3088
cloud:WL1:97
cloud:T1:750
cloud:SAL:347
cloud:PWM16E00:3090
PWM16E00:3090
cloud:PWM16E01:3090
PWM16E01:3090
cloud:PWM16E02:3090
PWM16E02:3090
cloud:PWM16E03:3090
PWM16E03:3090
cloud:PWM16E04:3090
PWM16E04:3090
cloud:PWM16E05:3090
PWM16E05:3090
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL1:99
cloud:SAL:338
cloud:PWM16E00:3092
PWM16E00:3092
cloud:PWM16E01:3092
PWM16E01:3092
cloud:PWM16E02:3092
PWM16E02:3092
cloud:PWM16E03:3092
PWM16E03:3092
cloud:PWM16E04:3092
PWM16E04:3092
cloud:PWM16E05:3092
PWM16E05:3092
cloud:WL1:98
cloud:SAL:332
cloud:PWM16E00:3095
PWM16E00:3095
cloud:PWM16E01:3095
PWM16E01:3095
cloud:PWM16E02:3095
PWM16E02:3095
cloud:PWM16E03:3095
PWM16E03:3095
cloud:PWM16E04:3095
PWM16E04:3095
cloud:PWM16E05:3095
PWM16E05:3095
cloud:PWMD:97
cloud:PWMD2:47
cloud:WL1:97
cloud:SAL:325
cloud:PWM16E00:3097
PWM16E00:3097
cloud:PWM16E01:3097
PWM16E01:3097
cloud:PWM16E02:3097
PWM16E02:3097
cloud:PWM16E03:3097
PWM16E03:3097
cloud:PWM16E04:3097
PWM16E04:3097
cloud:PWM16E05:3097
PWM16E05:3097
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL2:37
cloud:PWM16E00:3099
PWM16E00:3099
cloud:PWM16E01:3099
PWM16E01:3099
cloud:PWM16E02:3099
PWM16E02:3099
cloud:PWM16E03:3099
PWM16E03:3099
cloud:PWM16E04:3099
PWM16E04:3099
cloud:PWM16E05:3099
PWM16E05:3099
cloud:PWMD:94
cloud:PWMD2:50
cloud:WL1:98
cloud:C0:8
cloud:SAL:331
cloud:PWM16E00:3101
PWM16E00:3101
cloud:PWM16E01:3101
PWM16E01:3101
cloud:PWM16E02:3101
PWM16E02:3101
cloud:PWM16E03:3101
PWM16E03:3101
cloud:PWM16E04:3101
PWM16E04:3101
cloud:PWM16E05:3101
PWM16E05:3101
cloud:PWMD:92
cloud:PWMD2:52
cloud:WL1:96
Loose/in: cexp:0::263
cloud:CEXP0:264
cloud:PWM16E00:3103
PWM16E00:3103
cloud:PWM16E01:3103
PWM16E01:3103
cloud:PWM16E02:3103
PWM16E02:3103
cloud:PWM16E03:3103
PWM16E03:3103
cloud:PWM16E04:3103
PWM16E04:3103
cloud:PWM16E05:3103
PWM16E05:3103
cloud:PWMD:90
cloud:PWMD2:54
cloud:WL1:97
cloud:WL2:38
cloud:SAL:337
cloud:PWM16E00:3105
PWM16E00:3105
cloud:PWM16E01:3105
PWM16E01:3105
cloud:PWM16E02:3105
PWM16E02:3105
Loose/in: cexp:0::264
cloud:PWM16E03:3105
PWM16E03:3105
cloud:PWM16E04:3105
PWM16E04:3105
cloud:PWM16E05:3105
PWM16E05:3105
cloud:PWMD:88
cloud:PWMD2:56
cloud:C0:7
cloud:PH:796
cloud:SAL:338
cloud:CEXP0:263
cloud:PWM16E00:3108
PWM16E00:3108
cloud:PWM16E01:3108
PWM16E01:3108
cloud:PWM16E02:3108
PWM16E02:3108
cloud:PWM16E03:3108
PWM16E03:3108
cloud:PWM16E04:3108
PWM16E04:3108
cloud:PWM16E05:3108
PWM16E05:3108
cloud:PWMD:86
cloud:PWMD2:58
cloud:PH:797
cloud:T4:717
cloud:SAL:337
cloud:CEXP0:264
cloud:PWM16E00:3110
PWM16E00:3110
cloud:PWM16E01:3110
PWM16E01:3110
cloud:PWM16E02:3110
PWM16E02:3110
cloud:PWM16E03:3110
PWM16E03:3110
cloud:PWM16E04:3110
PWM16E04:3110
cloud:PWM16E05:3110
PWM16E05:3110
cloud:PWMD:84
cloud:PWMD2:60
cloud:C0:8
Loose/in: t:4:717
Loose/in: cexp:0::263
cloud:PH:798
cloud:T4:719
cloud:SAL:340
cloud:PWM16E00:3112
PWM16E00:3112
Loose/in: t:4:719
Loose/in: cexp:0::264
cloud:PWM16E01:3112
PWM16E01:3112
Loose/in: cexp:0::263
cloud:PWM16E02:3112
PWM16E02:3112
cloud:PWM16E03:3112
PWM16E03:3112
Loose/in: t:4:717
cloud:PWM16E04:3112
PWM16E04:3112
cloud:PWM16E05:3112
PWM16E05:3112
Loose/in: t:4:719
Loose/in: cexp:0::264
cloud:PWMD:81
cloud:PWMD2:63
cloud:WL1:98
cloud:PH:797
cloud:SAL:334
cloud:PWM16E00:3114
PWM16E00:3114
cloud:PWM16E01:3114
PWM16E01:3114
cloud:PWM16E02:3114
PWM16E02:3114
cloud:PWM16E03:3114
PWM16E03:3114
cloud:PWM16E04:3114
PWM16E04:3114
cloud:PWM16E05:3114
PWM16E05:3114
cloud:PWMD:79
cloud:PWMD2:65
cloud:WL1:96
cloud:PWME4:76
PWME4:76
cloud:PWME5:76
PWME5:76
cloud:C0:7
cloud:PH:796
cloud:CEXP0:263
cloud:PWM16E00:3116
PWM16E00:3116
cloud:PWM16E01:3116
PWM16E01:3116
cloud:PWM16E02:3116
PWM16E02:3116
cloud:PWM16E03:3116
PWM16E03:3116
cloud:PWM16E04:3116
PWM16E04:3116
cloud:PWM16E05:3116
PWM16E05:3116
cloud:PWMD:76
cloud:PWMD2:68
cloud:WL1:99
cloud:WL2:37
cloud:PH:797
cloud:T4:717
cloud:PWM16E00:3119
PWM16E00:3119
cloud:PWM16E01:3119
PWM16E01:3119
cloud:PWM16E02:3119
PWM16E02:3119
cloud:PWM16E03:3119
PWM16E03:3119
cloud:PWM16E04:3119
PWM16E04:3119
cloud:PWM16E05:3119
PWM16E05:3119
cloud:PWMD:73
cloud:PWMD2:71
cloud:WL1:98
cloud:WL2:38
cloud:T1:752
cloud:SAL:332
cloud:PWM16E00:3121
PWM16E00:3121
cloud:PWM16E01:3121
PWM16E01:3121
cloud:PWM16E02:3121
PWM16E02:3121
Loose/in: cexp:0::263
cloud:PWM16E03:3121
PWM16E03:3121
cloud:PWM16E04:3121
PWM16E04:3121
cloud:PWM16E05:3121
PWM16E05:3121
cloud:PWMD:71
cloud:PWMD2:73
cloud:WL1:97
cloud:T1:750
cloud:SAL:335
cloud:PWM16E00:3123
PWM16E00:3123
cloud:PWM16E01:3123
PWM16E01:3123
Loose/in: cexp:0::264
cloud:PWM16E02:3123
PWM16E02:3123
cloud:PWM16E03:3123
PWM16E03:3123
Loose/in: cexp:0::263
cloud:PWM16E04:3123
PWM16E04:3123
cloud:PWM16E05:3123
PWM16E05:3123
Loose/in: cexp:0::264
cloud:PWMD:68
cloud:PWMD2:76
cloud:WL1:98
cloud:PH:798
cloud:SAL:330
cloud:PWM16E00:3125
PWM16E00:3125
cloud:PWM16E01:3125
PWM16E01:3125
cloud:PWM16E02:3125
PWM16E02:3125
cloud:PWM16E03:3125
PWM16E03:3125
cloud:PWM16E04:3125
PWM16E04:3125
cloud:PWM16E05:3125
PWM16E05:3125
Loose/in: cexp:0::263
cloud:PWMD:65
cloud:PWMD2:79
cloud:C0:8
cloud:PH:797
cloud:SAL:362
cloud:CEXP0:264
cloud:PWM16E00:3127
PWM16E00:3127
cloud:PWM16E01:3127
PWM16E01:3127
cloud:PWM16E02:3127
PWM16E02:3127
cloud:PWM16E03:3127
PWM16E03:3127
cloud:PWM16E04:3127
PWM16E04:3127
cloud:PWM16E05:3127
PWM16E05:3127
cloud:PWMD:63
cloud:PWMD2:81
cloud:PWME0:74
PWME0:74
cloud:T4:719
cloud:SAL:385
cloud:PWM16E00:3129
PWM16E00:3129
cloud:PWM16E01:3129
PWM16E01:3129
cloud:PWM16E02:3129
PWM16E02:3129
Loose/in: cexp:0::264
cloud:PWM16E03:3129
PWM16E03:3129
cloud:PWM16E04:3129
PWM16E04:3129
Loose/in: cexp:0::263
cloud:PWM16E05:3129
PWM16E05:3129
cloud:PWMD:60
cloud:PWMD2:84
cloud:WL2:37
cloud:PH:796
cloud:SAL:404
cloud:PWM16E00:3132
PWM16E00:3132
Loose/in: cexp:0::264
cloud:PWM16E01:3132
PWM16E01:3132
cloud:PWM16E02:3132
PWM16E02:3132
cloud:PWM16E03:3132
PWM16E03:3132
cloud:PWM16E04:3132
PWM16E04:3132
cloud:PWM16E05:3132
PWM16E05:3132
cloud:PWMD:58
cloud:PWMD2:86
cloud:WL1:99
cloud:WL2:38
cloud:SAL:408
cloud:PWM16E00:3134
PWM16E00:3134
cloud:PWM16E01:3134
PWM16E01:3134
cloud:PWM16E02:3134
PWM16E02:3134
cloud:PWM16E03:3134
PWM16E03:3134
cloud:PWM16E04:3134
PWM16E04:3134
cloud:PWM16E05:3134
PWM16E05:3134
cloud:PWMD:56
cloud:PWMD2:88
cloud:WL1:97
cloud:C0:7
cloud:T1:752
cloud:PH:797
cloud:SAL:412
cloud:CEXP0:263
cloud:PWM16E00:3136
PWM16E00:3136
cloud:PWM16E01:3136
PWM16E01:3136
cloud:PWM16E02:3136
PWM16E02:3136
Loose/in: cexp:0::263
cloud:PWM16E03:3136
PWM16E03:3136
cloud:PWM16E04:3136
PWM16E04:3136
cloud:PWM16E05:3136
PWM16E05:3136
cloud:PWMD:54
cloud:PWMD2:90
cloud:T1:750
cloud:SAL:296
cloud:PWM16E00:3138
PWM16E00:3138
cloud:PWM16E01:3138
PWM16E01:3138
Loose/in: cexp:0::264
cloud:PWM16E02:3138
PWM16E02:3138
cloud:PWM16E03:3138
PWM16E03:3138
cloud:PWM16E04:3138
PWM16E04:3138
cloud:PWM16E05:3138
PWM16E05:3138
cloud:PWMD:52
cloud:PWMD2:92
cloud:SAL:369
cloud:PWM16E00:3140
PWM16E00:3140
Loose/in: cexp:0::263
cloud:PWM16E01:3140
PWM16E01:3140
cloud:PWM16E02:3140
PWM16E02:3140
cloud:PWM16E03:3140
PWM16E03:3140
cloud:PWM16E04:3140
PWM16E04:3140
cloud:PWM16E05:3140
PWM16E05:3140
cloud:PWMD:50
cloud:PWMD2:94
Loose/in: t:4:721
cloud:WL1:98
cloud:C0:8
cloud:PH:796
cloud:SAL:390
cloud:CEXP0:264
cloud:PWM16E00:3143
PWM16E00:3143
cloud:PWM16E01:3143
PWM16E01:3143
Loose/in: t:4:719
cloud:PWM16E02:3143
PWM16E02:3143
cloud:PWM16E03:3143
PWM16E03:3143
Loose/in: cexp:0::264
cloud:PWM16E04:3143
PWM16E04:3143
cloud:PWM16E05:3143
PWM16E05:3143
cloud:PWMD:49
cloud:PWMD2:95
cloud:PH:797
cloud:SAL:284
cloud:PWM16E00:3145
PWM16E00:3145
cloud:PWM16E01:3145
PWM16E01:3145
cloud:PWM16E02:3145
PWM16E02:3145
Loose/in: cexp:0::263
cloud:PWM16E03:3145
PWM16E03:3145
cloud:PWM16E04:3145
PWM16E04:3145
cloud:PWM16E05:3145
PWM16E05:3145
cloud:PWMD:47
cloud:PWMD2:97
cloud:WL1:97
cloud:WL3:4
cloud:PH:796
cloud:SAL:190
cloud:PWM16E00:3147
PWM16E00:3147
cloud:PWM16E01:3147
PWM16E01:3147
Loose/in: t:4:721
Loose/in: cexp:0::264
cloud:PWM16E02:3147
PWM16E02:3147
Loose/in: t:4:719
cloud:PWM16E03:3147
PWM16E03:3147
cloud:PWM16E04:3147
PWM16E04:3147
Loose/in: t:4:721
Loose/in: cexp:0::263
cloud:PWM16E05:3147
PWM16E05:3147
Loose/in: t:4:719
Loose/in: cexp:0::264
cloud:PWMD:46
cloud:PWMD2:98
cloud:WL3:3
cloud:PH:797
cloud:T4:717
cloud:SAL:105
cloud:PWM16E00:3149
PWM16E00:3149
Loose/in: t:4:721
Loose/in: cexp:0::263
cloud:PWM16E01:3149
PWM16E01:3149
Loose/in: t:4:719
cloud:PWM16E02:3149
PWM16E02:3149
cloud:PWM16E03:3149
PWM16E03:3149
Loose/in: cexp:0::264
cloud:PWM16E04:3149
PWM16E04:3149
cloud:PWM16E05:3149
PWM16E05:3149
cloud:T4:719
cloud:SAL:87
cloud:PWM16E00:3151
PWM16E00:3151
cloud:PWM16E01:3151
PWM16E01:3151
cloud:PWM16E02:3151
PWM16E02:3151
cloud:PWM16E03:3151
PWM16E03:3151
cloud:PWM16E04:3151
PWM16E04:3151
cloud:PWM16E05:3151
PWM16E05:3151
cloud:PWMD:45
cloud:PWMD2:99
Loose/in: cexp:0::263
cloud:WL1:98
cloud:PH:798
cloud:SAL:70
cloud:PWM16E00:3154
PWM16E00:3154
cloud:PWM16E01:3154
PWM16E01:3154
Loose/in: t:4:721
Loose/in: cexp:0::264
cloud:PWM16E02:3154
PWM16E02:3154
cloud:PWM16E03:3154
PWM16E03:3154
cloud:PWM16E04:3154
PWM16E04:3154
cloud:PWM16E05:3154
PWM16E05:3154
cloud:WL3:4
cloud:PWME4:77
PWME4:77
cloud:PWME5:77
PWME5:77
cloud:PH:796
cloud:SAL:66
cloud:PWM16E00:3156
PWM16E00:3156
cloud:PWM16E01:3156
PWM16E01:3156
cloud:PWM16E02:3156
PWM16E02:3156
Loose/in: t:4:719
Loose/in: cexp:0::263
cloud:PWM16E03:3156
PWM16E03:3156
Loose/in: t:4:721
Loose/in: cexp:0::264
cloud:PWM16E04:3156
PWM16E04:3156
Loose/in: t:4:719
Loose/in: cexp:0::263
cloud:PWM16E05:3156
PWM16E05:3156
Loose/in: t:4:721
cloud:WL3:3
cloud:SAL:63
cloud:PWM16E00:3158
PWM16E00:3158
cloud:PWM16E01:3158
PWM16E01:3158
cloud:PWM16E02:3158
PWM16E02:3158
cloud:PWM16E03:3158
PWM16E03:3158
cloud:PWM16E04:3158
PWM16E04:3158
cloud:PWM16E05:3158
PWM16E05:3158
Loose/in: cexp:0::264
cloud:WL1:97
cloud:PH:797
cloud:SAL:62
cloud:PWM16E00:3162
PWM16E00:3162
cloud:PWM16E01:3162
PWM16E01:3162
Loose/in: cexp:0::263
cloud:PWM16E02:3162
PWM16E02:3162
cloud:PWM16E03:3162
PWM16E03:3162
Loose/in: t:4:719
Loose/in: cexp:0::264
cloud:PWM16E04:3162
PWM16E04:3162
cloud:PWM16E05:3162
PWM16E05:3162
cloud:PWMD:46
cloud:PWMD2:98
cloud:WL1:98
cloud:WL2:37
cloud:SAL:61
cloud:PWM16E00:3164
PWM16E00:3164
cloud:PWM16E01:3164
PWM16E01:3164
Loose/in: t:4:721
Loose/in: cexp:0::263
cloud:PWM16E02:3164
PWM16E02:3164
Loose/in: cexp:0::264
cloud:PWM16E03:3164
PWM16E03:3164
cloud:PWM16E04:3164
PWM16E04:3164
cloud:PWM16E05:3164
PWM16E05:3164
cloud:PWMD:47
cloud:PWMD2:97
cloud:C0:7
cloud:SAL:60
cloud:CEXP0:263
cloud:PWM16E00:3167
PWM16E00:3167
cloud:PWM16E01:3167
PWM16E01:3167
cloud:PWM16E02:3167
PWM16E02:3167
cloud:PWM16E03:3167
PWM16E03:3167
cloud:PWM16E04:3167
PWM16E04:3167
cloud:PWM16E05:3167
PWM16E05:3167
cloud:PWMD:48
cloud:PWMD2:96
cloud:WL1:99
cloud:PWM16E00:3169
PWM16E00:3169
cloud:PWM16E01:3169
PWM16E01:3169
cloud:PWM16E02:3169
PWM16E02:3169
Loose/in: cexp:0::263
cloud:PWM16E03:3169
PWM16E03:3169
cloud:PWM16E04:3169
PWM16E04:3169
cloud:PWM16E05:3169
PWM16E05:3169
cloud:PWMD:51
cloud:PWMD2:93
cloud:WL1:98
cloud:WL3:4
cloud:C0:8
cloud:PH:796
cloud:CEXP0:264
cloud:PWM16E00:3171
PWM16E00:3171
cloud:PWM16E01:3171
PWM16E01:3171
Loose/in: cexp:0::264
cloud:PWM16E02:3171
PWM16E02:3171
cloud:PWM16E03:3171
PWM16E03:3171
Loose/in: cexp:0::263
cloud:PWM16E04:3171
PWM16E04:3171
cloud:PWM16E05:3171
PWM16E05:3171
Loose/in: cexp:0::264
cloud:WL3:3
cloud:PH:797
cloud:PWM16E00:3173
PWM16E00:3173
cloud:PWM16E01:3173
PWM16E01:3173
cloud:PWM16E02:3173
PWM16E02:3173
cloud:PWM16E03:3173
PWM16E03:3173
cloud:PWM16E04:3173
PWM16E04:3173
cloud:PWM16E05:3173
PWM16E05:3173
cloud:PWMD:55
cloud:PWMD2:89
cloud:WL1:97
cloud:WL2:38
cloud:C0:7
cloud:PH:796
cloud:CEXP0:263
cloud:PWM16E00:3175
PWM16E00:3175
cloud:PWM16E01:3175
PWM16E01:3175
cloud:PWM16E02:3175
PWM16E02:3175
cloud:PWM16E03:3175
PWM16E03:3175
cloud:PWM16E04:3175
PWM16E04:3175
cloud:PWM16E05:3175
PWM16E05:3175
cloud:PWMD:57
cloud:PWMD2:87
cloud:WL1:98
Loose/in: cexp:0::263
cloud:WL2:37
cloud:PH:797
cloud:PWM16E00:3178
PWM16E00:3178
cloud:PWM16E01:3178
PWM16E01:3178
cloud:PWM16E02:3178
PWM16E02:3178
cloud:PWM16E03:3178
PWM16E03:3178
cloud:PWM16E04:3178
PWM16E04:3178
cloud:PWM16E05:3178
PWM16E05:3178
cloud:PWMD:59
cloud:PWMD2:85
cloud:WL1:97
cloud:WL2:38
cloud:PWM16E00:3180
PWM16E00:3180
cloud:PWM16E01:3180
PWM16E01:3180
cloud:PWM16E02:3180
PWM16E02:3180
cloud:PWM16E03:3180
PWM16E03:3180
cloud:PWM16E04:3180
PWM16E04:3180
cloud:PWM16E05:3180
PWM16E05:3180
cloud:PWMD:62
cloud:PWMD2:82
cloud:WL1:98
cloud:C0:8
cloud:CEXP0:264
cloud:PWM16E00:3182
PWM16E00:3182
cloud:PWM16E01:3182
PWM16E01:3182
cloud:PWM16E02:3182
PWM16E02:3182
cloud:PWM16E03:3182
PWM16E03:3182
cloud:PWM16E04:3182
PWM16E04:3182
cloud:PWM16E05:3182
PWM16E05:3182
cloud:PWMD:64
cloud:PWMD2:80
Loose/in: cexp:0::264
cloud:PWM16E00:3184
PWM16E00:3184
cloud:PWM16E01:3184
PWM16E01:3184
cloud:PWM16E02:3184
PWM16E02:3184
cloud:PWM16E03:3184
PWM16E03:3184
cloud:PWM16E04:3184
PWM16E04:3184
cloud:PWM16E05:3184
PWM16E05:3184
cloud:PWMD:67
cloud:PWMD2:77
cloud:WL1:97
cloud:T5:734
cloud:PWM16E00:3186
PWM16E00:3186
cloud:PWM16E01:3186
PWM16E01:3186
cloud:PWM16E02:3186
PWM16E02:3186
Loose/in: cexp:0::263
Loose/in: t:4:719
Loose/in: cexp:0::264
Loose/in: t:4:721
Loose/in: t:5:735
Loose/in: cexp:0::263
Loose/in: cexp:0::264
Connecting to cloud server...
Connected
Subscribing to Loose/out/#
Loose/in: all:0
cloud:PWM16E00:3542
PWM16E00:3542
cloud:PWM16E01:3542
PWM16E01:3542
cloud:PWM16E02:3542
PWM16E02:3542
cloud:PWM16E03:3542
PWM16E03:3542
Loose/in: cexp:0::263
cloud:PWM16E04:3542
PWM16E04:3542
cloud:PWM16E05:3542
PWM16E05:3542
Loose/in: cexp:0::264
cloud:ATOLOW:0
cloud:ATOHIGH:0
cloud:EM:137
cloud:EM1:22
cloud:REM:7
cloud:BID:4
cloud:AF:0
cloud:SF:0
cloud:PWMD:60
cloud:PWMA:0
cloud:PWMDO:255
cloud:PWMAO:255
cloud:R1:226
R1:226
cloud:ROFF1:255
ROFF1:255
cloud:RON1:0
RON1:0
cloud:R2:131
R2:131
cloud:ROFF2:255
ROFF2:255
cloud:RON2:0
RON2:0
cloud:R3:0
R3:0
cloud:ROFF3:255
ROFF3:255
cloud:RON3:0
RON3:0
cloud:R4:0
R4:0
cloud:ROFF4:255
ROFF4:255
cloud:RON4:0
RON4:0
cloud:R5:0
R5:0
cloud:ROFF5:255
ROFF5:255
cloud:RON5:0
RON5:0
cloud:R6:0
R6:0
cloud:ROFF6:255
ROFF6:255
cloud:RON6:0
RON6:0
cloud:R7:0
R7:0
cloud:ROFF7:255
ROFF7:255
cloud:RON7:0
RON7:0
cloud:R8:0
R8:0
cloud:ROFF8:255
ROFF8:255
cloud:RON8:0
RON8:0
cloud:ALARM:0
cloud:PWMD2:84
cloud:PWMA2:100
cloud:PWMD2O:255
cloud:PWMA2O:255
cloud:WL:0
cloud:WL1:99
cloud:WL2:49
cloud:WL3:3
cloud:WL4:2
cloud:HUM:0
cloud:DCM:13
cloud:DCS:99
cloud:DCD:63
cloud:DCT:45
cloud:PWME0:74
PWME0:74
cloud:PWME1:0
PWME1:0
cloud:PWME2:73
PWME2:73
cloud:PWME3:73
PWME3:73
cloud:PWME4:86
PWME4:86
cloud:PWME5:86
PWME5:86
cloud:PWME0O:255
PWME0O:255
cloud:PWME1O:255
PWME1O:255
cloud:PWME2O:255
PWME2O:255
cloud:PWME3O:255
PWME3O:255
cloud:PWME4O:255
PWME4O:255
cloud:PWME5O:255
PWME5O:255
cloud:AIW:0
cloud:AIB:0
cloud:AIRB:0
cloud:RFM:0
cloud:RFS:0
cloud:RFD:0
cloud:RFW:0
cloud:RFRB:0
cloud:RFR:0
cloud:RFG:0
cloud:RFB:0
cloud:RFI:0
cloud:RFWO:0
cloud:RFRBO:0
cloud:RFRO:0
cloud:RFGO:0
cloud:RFBO:0
cloud:RFIO:0
cloud:IO:0
cloud:LEAK:0
cloud:C0:8
cloud:C1:0
cloud:C2:0
cloud:C3:0
cloud:C4:0
cloud:C5:0
cloud:C6:0
cloud:C7:0
cloud:R:0
cloud:ROFF:255
cloud:RON:0
cloud:T1:750
cloud:T2:761
cloud:T3:687
cloud:PH:796
cloud:T4:719
cloud:T5:734
cloud:T6:0
cloud:ORP:0
cloud:SAL:415
cloud:PHE:0
cloud:PAR:0
cloud:CEXP0:264
cloud:CEXP1:0
cloud:CEXP2:0
cloud:CEXP3:0
cloud:CEXP4:0
cloud:CEXP5:0
cloud:CEXP6:0
cloud:CEXP7:0
cloud:PWM16E00:3545
PWM16E00:3545
cloud:PWM16E01:3545
PWM16E01:3545
cloud:PWM16E02:3545
PWM16E02:3545
cloud:PWM16E03:3545
PWM16E03:3545
cloud:PWM16E04:3545
PWM16E04:3545
cloud:PWM16E05:3545
PWM16E05:3545
cloud:PWMD:58
cloud:PWMD2:86
cloud:WL1:95
cloud:WL2:48
cloud:CEXP0:263
cloud:PWM16E00:3547
PWM16E00:3547
cloud:PWM16E01:3547
PWM16E01:3547
cloud:PWM16E02:3547
PWM16E02:3547
Loose/in: cexp:0::263
cloud:PWM16E03:3547
PWM16E03:3547
cloud:PWM16E04:3547
PWM16E04:3547
cloud:PWM16E05:3547
PWM16E05:3547
The second part is the low dim of these lights on in the morning. As I look a the log, it appears that it's not dimming all the way to zero at night. This log shows the last dimming commands sent until I stopped the logging at 7am.

Code: Select all

cloud:PWM16E05:380
PWM16E05:380
cloud:PWMD:93
cloud:PWMD2:51
cloud:WL1:97
cloud:C0:161
cloud:PWM16E00:378
PWM16E00:378
cloud:PWM16E01:378
PWM16E01:378
cloud:PWM16E02:378
PWM16E02:378
cloud:PWM16E03:378
PWM16E03:378
cloud:PWM16E04:378
PWM16E04:378
cloud:PWM16E05:378
PWM16E05:378
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL1:98
cloud:PH:808
cloud:PWM16E00:376
PWM16E00:376
cloud:PWM16E01:376
PWM16E01:376
Loose/in: cexp:0::417
cloud:PWM16E02:376
PWM16E02:376
cloud:PWM16E03:376
PWM16E03:376
cloud:PWM16E04:376
PWM16E04:376
cloud:PWM16E05:376
PWM16E05:376
cloud:PWMD:96
cloud:PWMD2:48
cloud:WL1:99
cloud:SAL:372
cloud:CEXP0:415
cloud:PWM16E00:374
PWM16E00:374
cloud:PWM16E01:374
PWM16E01:374
cloud:PWM16E02:374
PWM16E02:374
cloud:PWM16E03:374
PWM16E03:374
cloud:PWM16E04:374
PWM16E04:374
cloud:PWM16E05:374
PWM16E05:374
cloud:PWMD:97
cloud:PWMD2:47
cloud:WL1:98
cloud:C0:159
cloud:PH:807
cloud:SAL:371
cloud:PWM16E00:372
PWM16E00:372
cloud:PWM16E01:372
PWM16E01:372
cloud:PWM16E02:372
PWM16E02:372
cloud:PWM16E03:372
PWM16E03:372
cloud:PWM16E04:372
PWM16E04:372
cloud:PWM16E05:372
PWM16E05:372
Loose/in: t:5:743
cloud:PWMD:98
cloud:PWMD2:46
cloud:PWM16E00:369
PWM16E00:369
Loose/in: t:5:744
Loose/in: t:5:743
Loose/in: t:5:744
Loose/in: t:5:743
Loose/in: t:5:744
Loose/in: t:5:743
Connecting to cloud server...
Connected
Subscribing to Loose/out/#
Loose/in: all:0
cloud:ATOLOW:0
cloud:ATOHIGH:0
cloud:EM:137
cloud:EM1:22
cloud:REM:7
cloud:BID:4
cloud:AF:0
cloud:SF:0
cloud:PWMD:63
cloud:PWMA:0
cloud:PWMDO:255
cloud:PWMAO:255
cloud:R1:226
R1:226
cloud:ROFF1:255
ROFF1:255
cloud:RON1:0
RON1:0
cloud:R2:131
R2:131
cloud:ROFF2:255
ROFF2:255
cloud:RON2:0
RON2:0
cloud:R3:0
R3:0
cloud:ROFF3:255
ROFF3:255
Loose/in: t:5:744
cloud:RON3:0
RON3:0
cloud:R4:0
R4:0
cloud:ROFF4:255
ROFF4:255
Loose/in: t:5:743
cloud:RON4:0
RON4:0
cloud:R5:0
R5:0
cloud:ROFF5:255
ROFF5:255
cloud:RON5:0
RON5:0
cloud:R6:0
R6:0
cloud:ROFF6:255
ROFF6:255
cloud:RON6:0
RON6:0
Loose/in: cexp:0::415
cloud:R7:0
R7:0
cloud:ROFF7:255
ROFF7:255
cloud:RON7:0
RON7:0
Loose/in: cexp:0::417
cloud:R8:0
R8:0
cloud:ROFF8:255
ROFF8:255
cloud:RON8:0
RON8:0
cloud:ALARM:0
cloud:PWMD2:81
cloud:PWMA2:100
cloud:PWMD2O:255
cloud:PWMA2O:255
cloud:WL:0
cloud:WL1:97
cloud:WL2:79
cloud:WL3:3
cloud:WL4:2
cloud:HUM:0
cloud:DCM:13
cloud:DCS:99
cloud:DCD:63
cloud:DCT:45
cloud:PWME0:25
PWME0:25
cloud:PWME1:33
PWME1:33
cloud:PWME2:30
PWME2:30
Loose/in: cexp:0::415
cloud:PWME3:30
PWME3:30
cloud:PWME4:0
PWME4:0
cloud:PWME5:0
PWME5:0
Loose/in: cexp:0::417
cloud:PWME0O:255
PWME0O:255
cloud:PWME1O:255
PWME1O:255
cloud:PWME2O:255
PWME2O:255
Loose/in: cexp:0::415
cloud:PWME3O:255
PWME3O:255
cloud:PWME4O:255
PWME4O:255
cloud:PWME5O:255
PWME5O:255
cloud:AIW:0
cloud:AIB:0
cloud:AIRB:0
cloud:RFM:0
cloud:RFS:0
cloud:RFD:0
cloud:RFW:0
cloud:RFRB:0
cloud:RFR:0
cloud:RFG:0
cloud:RFB:0
cloud:RFI:0
cloud:RFWO:0
cloud:RFRBO:0
cloud:RFRO:0
cloud:RFGO:0
cloud:RFBO:0
cloud:RFIO:0
cloud:IO:0
cloud:LEAK:0
cloud:C0:161
cloud:C1:0
cloud:C2:0
cloud:C3:0
cloud:C4:0
cloud:C5:0
cloud:C6:0
cloud:C7:0
cloud:R:0
cloud:ROFF:255
cloud:RON:0
cloud:T1:770
cloud:T2:775
cloud:T3:698
cloud:PH:807
cloud:T4:735
cloud:T5:743
cloud:T6:0
cloud:ORP:0
cloud:SAL:371
cloud:PHE:0
cloud:PAR:0
cloud:CEXP0:417
cloud:CEXP1:0
cloud:CEXP2:0
cloud:CEXP3:0
cloud:CEXP4:0
cloud:CEXP5:0
cloud:CEXP6:0
cloud:CEXP7:0
cloud:PWMD:60
cloud:PWMD2:84
cloud:WL1:99
cloud:WL2:80
cloud:PWMD:58
Loose/in: cexp:0::417
cloud:PWMD2:86
cloud:PH:808
cloud:T5:744
cloud:PWMD:56
cloud:PWMD2:88
cloud:WL1:98
cloud:T5:743
cloud:PWMD:54
cloud:PWMD2:90
cloud:PH:807
cloud:SAL:370
cloud:PWMD:52
cloud:PWMD2:92
cloud:PH:808
cloud:PWMD:50
cloud:PWMD2:94
cloud:WL1:99
cloud:PH:807
cloud:PWMD:49
cloud:PWMD2:95
cloud:WL1:98
cloud:PWMD:47
cloud:PWMD2:97
cloud:WL1:100
cloud:SAL:371
cloud:PWMD:46
cloud:PWMD2:98
cloud:WL1:99
cloud:WL1:97
cloud:SAL:370
cloud:PWMD:45
cloud:PWMD2:99
cloud:WL1:99
cloud:PWME2:29
PWME2:29
cloud:PWME3:29
PWME3:29
cloud:PH:806
cloud:WL1:97
cloud:PH:807
cloud:PWMD:46
cloud:PWMD2:98
cloud:WL1:98
cloud:PWMD:47
cloud:PWMD2:97
cloud:PWMD:48
cloud:PWMD2:96
cloud:PH:808
cloud:SAL:371
cloud:PWMD:51
cloud:PWMD2:93
cloud:PH:807
cloud:SAL:370
cloud:WL1:99
cloud:SAL:371
Loose/in: cexp:0::416
cloud:PWMD:55
cloud:PWMD2:89
cloud:WL1:98
cloud:C0:160
cloud:SAL:370
cloud:CEXP0:416
Loose/in: cexp:0::417
cloud:PWMD:57
cloud:PWMD2:87
cloud:WL1:99
cloud:SAL:371
cloud:CEXP0:417
cloud:PWMD:59
cloud:PWMD2:85
cloud:C0:161
cloud:PH:808
cloud:SAL:370
Loose/in: cexp:0::416
cloud:PWMD:62
cloud:PWMD2:82
cloud:WL1:98
cloud:C0:160
cloud:SAL:371
cloud:CEXP0:416
Loose/in: cexp:0::417
cloud:PWMD:64
cloud:PWMD2:80
cloud:WL2:79
cloud:C0:161
cloud:PH:807
cloud:CEXP0:417
cloud:PWMD:67
cloud:PWMD2:77
cloud:WL2:80
cloud:PH:808
cloud:PWMD:69
cloud:PWMD2:75
cloud:WL1:99
cloud:PH:807
cloud:PWMD:72
cloud:PWMD2:72
cloud:WL1:98
cloud:PWMD:75
cloud:PWMD2:69
cloud:WL1:97
cloud:PWMD:77
cloud:PWMD2:67
cloud:WL1:99
cloud:SAL:370
cloud:PWMD:80
cloud:PWMD2:64
cloud:WL1:100
cloud:SAL:371
cloud:PWMD:82
cloud:PWMD2:62
cloud:WL1:98
Loose/in: cexp:0::416
cloud:PWMD:85
cloud:PWMD2:59
cloud:C0:160
cloud:CEXP0:416
Loose/in: cexp:0::417
cloud:PWMD:87
cloud:PWMD2:57
cloud:WL1:99
cloud:WL2:79
cloud:C0:161
cloud:CEXP0:417
cloud:PWMD:89
cloud:PWMD2:55
cloud:WL2:80
cloud:PWMD:91
cloud:PWMD2:53
cloud:WL1:97
Loose/in: cexp:0::416
cloud:PWMD:93
cloud:PWMD2:51
cloud:WL1:99
cloud:WL2:79
cloud:C0:160
cloud:CEXP0:416
Loose/in: cexp:0::417
cloud:PWMD:95
cloud:PWMD2:49
cloud:WL1:98
cloud:WL2:80
cloud:C0:161
cloud:PH:808
cloud:CEXP0:417
cloud:PWMD:96
cloud:PWMD2:48
Loose/in: cexp:0::416
cloud:PWMD:97
cloud:PWMD2:47
cloud:WL2:79
cloud:C0:160
cloud:PH:807
cloud:CEXP0:416
Loose/in: cexp:0::417
cloud:PWMD:98
cloud:PWMD2:46
cloud:WL2:80
cloud:C0:161
cloud:CEXP0:417
cloud:PWMD:99
cloud:PWMD2:45
cloud:WL1:99
cloud:WL2:79
cloud:WL1:98
Loose/in: cexp:0::416
cloud:WL1:97
cloud:WL2:80
For reference, this is the lighting code [LEDgroupslvl = 99]:

Code: Select all

//  Normalized code for Lights across all groups

    for (int z=0;z<6;z++)
    {
        ReefAngel.PWM.Set16ChannelRaw( z , PWMSlopeHighRes(12,27,21,27,3,LEDgroupslvl,30,0) );
    }

  if (millis() - last16channelcheck > 1000 && ReefAngel.Network.IsMQTTConnected())

  {
    last16channelcheck = millis();
    for (byte a = 0; a < 6; a++) // a < 16 has been Modified for 6ch Dimming module
    {
      if (ReefAngel.PWM.SIXTEENChExpansionChannel[a] != OldPercentage16[a])
      {
        if (a<10)
          sprintf(buffer, "%s0%d:%d", "PWM16E", a, ReefAngel.PWM.SIXTEENChExpansionChannel[a]);
        else
          sprintf(buffer, "%s%d:%d", "PWM16E", a, ReefAngel.PWM.SIXTEENChExpansionChannel[a]);
        Serial.println(buffer);
        ReefAngel.Network.CloudPublish(buffer);
        OldPercentage16[a] = ReefAngel.PWM.SIXTEENChExpansionChannel[a];
      }
      if (ReefAngel.PWM.SIXTEENChExpansionChannelOverride[a] != OldPercentage16Override[a])
      {
        if (a<10)
          sprintf(buffer, "%s0%d:%d", "PWM16EO", a, ReefAngel.PWM.SIXTEENChExpansionChannelOverride[a]);
        else
          sprintf(buffer, "%s%d:%d", "PWM16EO", a, ReefAngel.PWM.SIXTEENChExpansionChannelOverride[a]);
        Serial.println(buffer);
        ReefAngel.Network.CloudPublish(buffer);
        OldPercentage16Override[a] = ReefAngel.PWM.SIXTEENChExpansionChannelOverride[a];
      }
    }
  }
///// 16ch DImming using Cloud Wifi Hub Expansion code end
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by rimai »

PWMSlopeHighRes(12,27,21,27,3,LEDgroupslvl,30,0)
The above line instructs it to go from 3% to 99% and back down to 3% and it will stay at 3% until the next cycle.
Try changing the 3% to 0%.
Roberto.
User avatar
Loose
Posts: 88
Joined: Fri Sep 01, 2017 8:15 am
Location: Severna Park, MD

Re: 2nd Salinity module w/Cloud Wifi Hub

Post by Loose »

Will do. Figured it was my code and maybe I just didn't notice it before we did this salinity addition.

Any thoughts on the power cycling? It's not that big a deal as I'm usually not around when it happens.

And.... let me know when you might have time to program the Cloud Hub to control the lights directly. I still have the 16 channel expansion in the box. :-)
Post Reply