-
Notifications
You must be signed in to change notification settings - Fork 11
Home
Author: Bart Van Der Meerssche
Transfer to markdown and additions: Markus Gebhard
Let's kick off this manual with a short tour of a Fluksometer's externals. We will introduce each of the Fluksometer's ports, buttons and LEDs.
There are currently two slightly different versions of the Fluksometer in the wildlife.
- Version 2a, denoted as FLM02A, serves up to three analog current clamps, has two pulse inputs and an RS-485 serial connector.
- Version 2b, denoted as FLM02B, contains a revised sensor board that allows toggling analog and pulse input. It provides configurable three respective one analog input, two respective four pulse inputs and a P1 data port. The FLM02B also contains an RFM12B wireless module supporting a JeeNode-compatible protocol.
Both hardware versions share the same firmware, yet provide some feature differences which are addressed in the following sections.
The screw terminal contains twelve inputs. A port on the screw terminal is defined as a pair of adjacent inputs. We have printed the port numbers on the side of the enclosure for easy reference, with the polarity denoted by + and -. Ports #1 to #3 are analog ports that are tuned to accept Flukso split-core current clamps. Ports #4 and #5 can be used for detecting pulses. This includes support for, but is not limited to, the S0 interface (S0 is an open-collector interface standardized in DIN EN 62053-31) common to DIN-rail energy meters (for gas and water measurement you may also use a simple reed switch toggled by a magnet built into the meter; another alternative is optical detection). Finally, the FLM02A port #6 offers a half-duplex RS-485 serial interface. Contrary to the other ports, the RS-485 port has its polarity indicated by the letters a and b.
With the FLM02B clamp ports #2 and #3 can be toggled to provide two additional pulse inputs; port #6 offers connection to a P1 data port, as it is provided by Benelux smart meters.
Note that the Flukso split-core current clamps provide a well-defined impedance ("inner resistance") which must fit to the sensor board's input setup; therefore it is not possible to attach "any kind of" current clamp.
Note: There are new meters out in the wildlife that contain so called Cyble targets (little metal plate on a spinning wheel) which are inductively detected; currently the Fluksometer does not support these kind of measuring devices, if not provided as a pulse output as described (original detector or potentially also an optical sensor).
The ethernet port offers support for a 10baseT/100baseTx interface with auto-negotiation and auto MDI/MDI-X crossover detection.
The center-positive power jack accepts a DC voltage between 9V and 15V. The switching adapter should have a minimum rating of 500mA output current.
The pushbutton has a triple function. Which function will be triggered depends on how long the button is pressed. Make sure the heartbeat LED is blinking before using the button.
Mode | Description |
---|---|
Toggle reporting mode | If you press the button for 2 to 5 seconds, the Fluksometer will toggle its reporting mode to the Flukso server from wifi to ethernet or vice-versa. A blinking wifi LED indicates the Fluksometer is in wifi mode. An always-off wifi LED means it's in ethernet mode. |
Restore networking defaults | If you press the button between 10 and 30 seconds, the Fluksometer will restore its default network settings. |
Restore firmware | Keep the button pressed for between 60 and 120 seconds to restore the Fluksometer's stock firmware and reboot. You will have to reconfigure all network and sensor settings. Connect to the local web interface after the heartbeat LED starts blinking again. |
The Fluksometer has five red LEDs on the top of its enclosure. Together these LEDs provide us with an overview of the Fluksometer's internal functioning, the status of its network interfaces and its ability to communicate with the Flukso server. From left to right, these LEDs are:
LED | Description |
---|---|
Wifi | If the wifi interface is enabled, the wifi LED will blink. A fast blink rate (approx. twice per second) signals that no wifi connection can be established. A slow blink rate (once every three seconds) signifies that a wifi connection has been successfully set up. |
Ethernet | The ethernet LED will be on when an ethernet link is established. This can either be a 10baseT or 100baseTX link in full- or half-duplex mode. |
Globe | After the Fluksometer has finished its boot sequence, the globe LED will be on when it can access the Flukso server. Every time the Fluksometer reports to the Flukso server, the LED will blink in case of a successful call. The globe LED will be turned off when the call is not completed successfully. A successful call has been made when either a 200 or 204 HTTP response code is returned by the Flukso server. |
Heartbeat | The heartbeat LED is positioned right next to the globe LED. While the globe LED informs us about the status of the Fluksometer's external communication, the heartbeat LED allows us to monitor the Fluksometer's internal functioning. This LED will be on when the sensor board is running its firmware. From the moment the Flukso daemon is started during the boot sequence, it will start polling the sensor board every second for data. Each poll triggers a blink of this LED, thus mimicking a real heartbeat. Hence, a 'heartbeat' is an indication of a Fluksometer that has booted, a running Flukso daemon, a sensor board running its firmware and proper communication between the main board and sensor board. |
Power | The power LED is directly connected to the internal 3.3V supply. A burning LED indicates that power has been applied to the device and the internal voltage regulators are working properly. |
The following section will guide you through the installation steps that should lead to your Fluksometer's successful deployment.
Out of the box, a Fluksometer will report to the Flukso server via the wifi interface. Please refer to Wifi Mode if you wish to use your Fluksometer in this reporting mode. As detailed in Pushbutton, the Fluksometer's pushbutton can be used to toggle the reporting mode to ethernet. The networking setup for this case is described in Ethernet Mode.
Power up your Fluksometer and wait until the heartbeat LED starts to blink. Connect your computer to the Fluksometer's ethernet port with a direct cable; your computer will get an IP address by the FLM built-in DHCP service. If this is not the case, you may assign your computer a manual IP address in the range of 192.168.255.*, for example 192.168.255.100. Don't use 192.168.255.1 as this is the default address of the Fluksometer.
Now surf to http://192.168.255.1. Log into the Fluksometer with user root and default password root. Configure the wifi page with the proper SSID (wifi network name) and security key so that the Fluksometer gets connected with the internet via your local wifi network. After saving these settings, the globe LED on the Fluksometer should light up. To further test your configuration, try surfing to http://www.flukso.net while the ethernet cable is still connected to the Fluksometer.
Note: While saving settings doesn't take long, restarting the whole wifi and networking stack with its dependencies can take more than a minute to complete. Be patient.
When the reporting mode is toggled to ethernet, the ethernet interface will be set as a DHCP client. The wifi interface will be disabled. Connect the Fluksometer's ethernet port to your network and find out which IP address it has been assigned by your DHCP server. Power up your Fluksometer and wait until the heartbeat LED starts to blink. The globe LED should now be on. Surf to the Fluksometer's ethernet IP address. No further network configuration steps should be required.
In case you want to assign your Fluksometer a fixed IP address, do so by applying a fixed address in your network router respective DHCP server. Here usually a dedicated DHCP reservation entry has to be made, that maps the desired IP address to the Fluksometer's MAC address; consult your router manual on how to proceed for this purpose.
The sensor configuration will be synchronized with the Flukso server each time you save the sensor page. A synchronization can only be successful when the Fluksometer has internet connectivity. You should therefore make sure the globe LED is lit before commencing this configuration step. If not, then goto section Networking.
The status section lists a couple of parameters to help you verify that your Fluksometer is configured and operating correctly.
Attribute | Description |
---|---|
System | The system section provides some key information on the FLuksometer's setup. It tells the hardware version, installed firmware revision, and hostname respective its serial number. The Fluksometer's system time is presented in UTC. If this time setting is showing a Jan 1970 date, then your network firewall might be blocking NTP's UDP port 123. |
Network | The network section tells the chosen communication mode. When generating the sensor page, the Fluksometer will try pinging the Flukso server and report the outcome in "Flukso.net ping test". A failed ping indicates a networking problem, so please consult section Networking before continuing the sensor configuration. |
Sensor config synchronisation | Saving the sensor page will trigger a synchronisation action with the sensor board and the Flukso server. The "last" entry shows the last time a synchronisation attempt was made. The status indicates the last synchronisation attempt's outcome. |
Your Fluksometer will by default be configured to report its measurements to the Flukso server. Clear the checkbox on "Send readings to the Flukso platform" if you want to stop all communication with the Flukso server. Since no HTTP calls will be initiated to the server anymore, the globe LED will be turned off.
The Fluksometer can make its sensor measurements available through a local JSON/REST API as well. While the Flukso server allows you to analyze your historical data and derive trend information, this local API is useful for monitoring your sensors in real-time. Sixty data points with a second resolution will be made available via the local API. No historical data is stored on the Fluksometer itself. Set the checkbox if you wish to enable the local API feature.
By specifying "Allow remote firmware upgrades" you may decide if firmware upgrades can be remotely pushed to your Fluksometer.
The Fluksometer provides a built-in Mosquitto MQTT broker. Sensor readings are injected into the broker and can be read out by any MQTT client. Point the client to the FLM's IP address and select port 1883. Gauge (Watt) and counter (Wh) readings are published on /sensor/<sensorid>/gauge
and /sensor/<sensorid>/counter
topics respectively.
Select the number of phases that apply for your current clamp setup. When selecting 3 phases, the three current clamp ports will be grouped and presented as a single sensor #1. Sensors #2 and #3 will be disabled automatically after saving. When selecting 1 phase, each clamp port will be sampled separately and mapped to sensors #1, #2 and #3 respectively.
Note that on a FLM02B sensors #2 and #3 can be toggled to support two additional pulse inputs.
As already indicated in the previous section, a sensor is a logical entity that can aggregate multiple physical screw terminal ports as defined in section Ports. Since the screw terminal contains a maximum of six ports, six sensors per Fluksometer can physically be attached.
A sensor is defined by a unique identifier. Sensors can be enabled or disabled individually. Leave sensors in a disabled state when not in use. An enabled sensor requires a name. This name will be used in the Flukso website's charts. It's important that you assign a distinct name for each enabled sensor associated with your account.
By convention, we use main for total household electricity consumption and solar for photo-voltaic production. When adding other users ("Fluksonians") to your chart on the Flukso website, the main sensors will be the ones on display. A sensor can only contain ports of the same class. Ports that have different classes cannot be aggregated into a single sensor. We now introduce each of the three classes in turn:
Ports #1, #2 and #3 are analog ports. They accept Flukso split-core current clamps of 50A, 100A, 250A and 500A. A three-phase setup requires all current clamps to be identical. Besides the current range, you can also specify the line voltage for each clamp. The default is 230V, which applies to the mains electricity voltage in most European countries. Australia and New-Zealand have a 240V power grid. Please consult this Wikipedia article if you are unsure about your country's mains voltage.
Ports #4 and #5 on the screw terminal are pulse ports. They are mapped to sensors #4 and #5 respectively. A meter-constant defines the amount of flow represented by each pulse. For electricity, the unit is Wh per pulse while water and gas are specified in liter per pulse. Fractional meter constants are allowed down to 0.001.
Note: Most small energy meters define their meter-constant in imp/kWh. 1000, 2000 and 5000 imp/kWh values on the energy meter equal meter-constants of 1, 0.5 and 0.2 Wh/pulse on the Fluksometer respectively.
Note: For the FLM02B analog and pulse option of sensors #2 and #3 can be toggled; behavior then is respective the chosen input type.
FLM02A only: The RS-485 port #6 is mapped to sensor #6. The baud rate is set to a fixed 115200.
FLM02B only: With the FLM v2b the firmware contains a Dutch P1-port telegram parser. It converts the P1 port data to standard Flukso sensor readings. Hence, there's no difference in the dash or the API when accessing a sensor whose time-series data was generated by a current clamp, a DIN-rail kWh meter or a local smart meter port. The sensor associated with the smart meter will count backwards when power is injected into the grid.
With the FLM02B and its built-in RFM12B wireless module you get the prerequisites to connect FluksoKubes, tiny autonomous sensor units that can be deployed all over your home to measure environmental values like temperature and humidity. As the RFM12B uses 868MHz transmission, this needs to be considered when placing the Fluksometer.
Disconnect all cables from the Fluksometer. Now find a suitable location near the fuse box to install the device. Mounting holes have been provisioned on the back of the Fluksometer. Alternatively, you can use a plastic cable tie or velcro.
For safety reasons, switch off the main electricity supply when installing the current clamps. Attach a clamp to each non-neutral line in the fuse box. Close the clamps firmly. You should hear a double click. The lip should lie flush with the clamp's body.
Connect a cable from each current clamp to the Fluksometer's screw terminal. Use the red wire for positive polarity and the black one for negative polarity.
It has shown that measuring Photo-Voltaic inverter output by current clamps results in a high "phantom load" due to large capacitors in the generation path (see explanation on reactive power). To avoid this "phantom load" you should consider using a pulse meter for solar supply measurement. There are rather cheap single-phase DIN-rail pulse meters that suffice this requirement.
Switch the main electricity supply back on. Activate the Fluksometer by inserting its power plug.
Visit www.flukso.net/user/register and fill in the form to create your account. Once logged in, you can associate the Fluksometer with your account. Click on the My account:Devices tab and submit the Fluksometer's serial number. You should now see this Fluksometer added to the device list.
Point your browser to www.flukso.net. A first reading should be visible on the hour chart within five minutes from powering up.
You are now part of the Flukso community!
Once the Fluksometer is operational, it will start collecting data on its configured ports. These measurements are sent to the Flukso server and stored in a time series database. You can access the data in chart form via the Flukso website. The same data is also made available in a machine-readable format via the RESTful API.
This chapter is a description of the Flukso API, version 1.0. Although only a single version is currently in use, you are required to specify the version for each API call. This will prevent any existing code from breaking when new, incompatible versions of the API are introduced in the future.
You can include the versioning parameter either as part of the header (X-Version: 1.0
) or as a query parameter (&version=1.0
).
The server will verify each time whether a correct token has been specified for the requested resource. For extracting information, you can use two types of tokens:
Token | Description |
---|---|
Sensor-level | A default token is generated for each sensor providing full read access to the sensor resource. The database structure has been conceived to support multiple tokens per sensor, each with different access restrictions. This functionality is however not currently activated. It might be interesting when you want to make a subset of your sensor data available to a third-party service for further processing. This would allow you to revoke this specific token at any time without affecting other services accessing the same sensor data. |
Account-level | A token is also made available to each account, which you can regard as an API key. This single token allows you to access data of all devices and sensors associated with your account. |
Type | Value |
---|---|
unix_time() |
int32 representing the number of seconds elapsed since midnight UTC of Jan 1, 1970 |
time_range() |
minute, 15min, hour, day, week, month, year, decade, night |
unit() |
watt, kwhperyear, eurperyear, audperyear, lpermin, lperday, m3peryear |
request | retrieve sensor data in time series format from flukso.net | ||
verb | GET | ||
url | https://api.flukso.net/sensor/<sensorid> | ||
query params | interval | time_range() | time range for which values should be returned, from `now - interval` till `now` |
start | unix_time() | start time | |
end | unix_time() | end time | |
resolution | time_range() | format data in this resolution | |
unit | unit() | convert values to specified unit | |
callback | string() | jsonp function name | |
response | a JSON array containing `[unix timestamp, value]` array elements |
The most straightforward way to extract time series data from the platform is by use of the interval
query parameter. E.g. specifying interval=month
will return one month worth of data in a day
resolution, the default resolution for this interval. A default resolution can be overridden by including it explicitely in the query parameters. If you would like to fully customize the interval, then you should instead use the start
and, optionally, end
parameters. Below is a compatibility matrix detailing which parameters are Required [R]
, Exclusive [X]
or Optional [O]
.
interval | start | end | resolution | |
interval | R | X | X | O |
start | X | R | O | O |
icarus75@cirrus:~$ curl -k -v -X GET -H "Accept: application/json" -H "X-Version: 1.0" -H "X-Token:d8a8ab8893ea73f768b66b45234b5c3a" "https://api.flukso.net/sensor/c1411c6b4f9910bbbab09f145f8533b9?interval=month&unit=watt"
> GET /sensor/c1411c6b4f9910bbbab09f145f8533b9?interval=month&unit=watt HTTP/1.1
> User-Agent: curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15
> Host: api.flukso.net
> Accept: application/json
> X-Version: 1.0
> X-Token: d8a8ab8893ea73f768b66b45234b5c3a
>
< HTTP/1.1 200 OK
< Server: nginx/0.7.64
< Date: Thu, 07 Jul 2011 10:34:35 GMT
< Content-Type: application/json
< Connection: keep-alive
< Content-Length: 494
<
[[1307664000,234],[1307750400,169],[1307836800,72],[1307923200,71],[1308009600,103],[1308096000,263],[1308182400,176],[1308268800,165],[1308355200,261],[1308441600,400],[1308528000,139],[1308614400,235],[1308700800,151],[1308787200,141],[1308873600,113],[1308960000,301],[1309046400,210],[1309132800,166],[1309219200,286],[1309305600,237],[1309392000,241],[1309478400,148],[1309564800,125],[1309651200,187],[1309737600,248],[1309824000,263],[1309910400,143],[1309996800,191],[1310083200,"nan"]]
icarus75@cirrus:~$ curl -k -v -X GET -H "Accept: application/json" -H "X-Version: 1.0" -H "X-Token: d8a8ab8893ea73f768b66b45234b5c3a" "https://api.flukso.net/sensor/c1411c6b4f9910bbbab09f145f8533b9?start=1309478400&end=1309996800&resolution=day&unit=watt"
> GET /sensor/c1411c6b4f9910bbbab09f145f8533b9?start=1309478400&end=1309996800&resolution=day&unit=watt HTTP/1.1
> User-Agent: curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15
> Host: api.flukso.net
> Accept: application/json
> X-Version: 1.0
> X-Token: d8a8ab8893ea73f768b66b45234b5c3a
>
< HTTP/1.1 200 OK
< Server: nginx/0.7.64
< Date: Thu, 07 Jul 2011 12:45:02 GMT
< Content-Type: application/json
< Connection: keep-alive
< Content-Length: 122
<
[[1309564800,125],[1309651200,187],[1309737600,248],[1309824000,263],[1309910400,143],[1309996800,191],[1310083200,"nan"]]
request | retrieve sensor parameters from flukso.net | ||
verb | GET | ||
url | https://api.flukso.net/sensor/<sensorid> | ||
query params | param | all | return all sensor parameters |
response | a JSON object containing containing all sensor parameters |
icarus75@cirrus:~$ curl -k -v -X GET -H "Accept: application/json" "https://api.flukso.net/sensor/c1411c6b4f9910bbbab09f145f8533b9?version=1.0&token=d8a8ab8893ea73f768b66b45234b5c3a¶m=all"
> GET /sensor/c1411c6b4f9910bbbab09f145f8533b9?version=1.0&token=d8a8ab8893ea73f768b66b45234b5c3a¶m=all HTTP/1.1
> User-Agent: curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15
> Host: api.flukso.net
> Accept: application/json
>
< HTTP/1.1 200 OK
< Server: nginx/0.7.64
< Date: Thu, 07 Jul 2011 13:28:18 GMT
< Content-Type: application/json
< Connection: keep-alive
< Content-Length: 183
<
{"access":1310045295,"type":"electricity","function":"main","class":"pulse","voltage":null,"current":null,"phase":null,"constant":1.0,"enabled":1,"lastupdate":[1310045295,1006793948]}
request | retrieve real-time sensor data directly from the Fluksometer | ||
verb | GET | ||
url | http://192.168.255.1:8080/sensor/<sensorid> | ||
query params | interval | minute | fixed interval |
unit | watt, lperday | fixed unit | |
callback | string() | jsonp function name | |
response | a JSON array containing [unix timestamp, value] array elements |
icarus75@cirrus:~$ curl -v "http://192.168.255.1:8080/sensor/c1411c6b4f9910bbbab09f145f8533b9?version=1.0&interval=minute&unit=watt&callback=realtime"
> GET /sensor/c1411c6b4f9910bbbab09f145f8533b9?version=1.0&interval=minute&unit=watt&callback=realtime HTTP/1.1
> User-Agent: curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15
> Host: 192.168.255.1:8080
> Accept: */*
>
< HTTP/1.1 200 OK
< Connection: close
< Transfer-Encoding: chunked
< Content-Type: application/json
<
realtime([[1310047446,124],[1310047447,125],[1310047448,125],[1310047449,125],[1310047450,125],[1310047451,125],[1310047452,125], ... [1310047501,124],[1310047502,124],[1310047503,124],[1310047504,"nan"],[1310047505,"nan"]])
As denoted above, each Fluksometer provides a built-in MQTT broker which transmits MQTT messages into the LAN.
To access these messages, you may use the local UI tab mqtt
when accessing your Fluksometer from a browser http://<local FLM IP address>/#/mqtt
(no login is required for this).
Alternatively install a MQTT client on your computer or tablet, for example Mosquitto.
Having done that, you have a MQTT client, for example mosquitto_sub
from mosquitto.org.
Call your FLM using the command line
mosquitto_sub -h "your FLM's local IP address" -p 1883 -v -t /sensor/#
for example
mosquitto_sub -h 192.168.0.50 -p 1883 -v -t /sensor/#
The # denotes a wildcard that will show all your sensors' topics (-t
), so gauge
and counter
on each sensor-ID, -v
is used to show which sensor sent what data.
Another option is using a + to filter topics; for example -t /sensor/+/gauge
delivers just the gauge messages of all attached sensors.
This can also programmatically be used to save FLM data to a local database or include it into a home automation network.
Note: As the built-in MQTT broker is not restricted to FLM only messages, you may use it also to exchange MQTT messages from other MQTT publishers. For this, publish MQTT messages to the respective FLM broker's IP-address, for example using mosquitto_pub
. Refer to the corresponding documentation for details.
The Fluksometer uses a special MQTT topic to publish its current configuration. On topic /device/<device id>/config/sensor
all parameters are available that indicate specific sensor settings. This may be used to show the actual sensor names instead of just their IDs as provided by the gauge
and counter
topics.
The Fluksometer stores its sensors' counter values in a specific built-in format, called TMPO. TMPO is a compact, platform-independent file format to store key-value-pairs of time series. Refer to the Introducing TMPO slide deck for further details.
Your Fluksometer at its base is an openWRT router, so it contains a basic, Linux-like operating system. By that it offers the capability to add additional software features, but also to do some software level debugging. With the [local syslog tab](http://$your FLM IP$/#/syslog) (login required) you get a first glance, what is going on. Here on startup all started services are noted and during normal operation here senor data recognition and transmission is noted. This, for example, looks as following two lines:
Mar 23 18:07:05 flukso-$flmid$ daemon.info fluksod[681]: processed pulse :1458756425:942856
Mar 23 18:07:18 flukso-$flmid$ daemon.info fluksod[681]: POST https://api.flukso.net/sensor/$sensorid$: 200
If this does not provide sufficient information, then you have the choice to log into your Fluksometer also via Secure Shell (ssh).
ssh root@<your FLM IP>
Default password is root
, but may (and should) be changed using the command passwd
.
Being a basic Linux environment, you have all the different commands at hand to check out, what is going on in your device. By ps
, for example, you may list all running processes; by df
you get a glance on the occupied space on your device's memory. Refer to the openWRT documentation for more options.
Note: IF no pulse is registered THEN no data is transferred to the Flukso server; if you are sure that there should be pulses registered, then especially ensure correct sensor connection (for example, correct polarity of current clamps and pulse inputs on terminals, good connection of the cables: use wire-end sleeves)
This section contains some questions and answers collected from the Flukso forum.
Accuracy of the current clamp measurements is primarily determined by the power factor and variations in line voltage. So, if consuming devices have different power factors (unequal to 1), by the measuring principle of the current clamps you may get "inaccurate" readings; refer to Wikipedia for the physics behind this phenomenon. Total current equals the vector sum of the device currents and not the scalar sum. Hence a total clamp will give a slightly lower reading than the sum of the readings of, for example, two sub clamps measuring dedicated device lines.
Note that by setting a different line voltage in the Fluksometer's configuration you may alter the detected power readings.
In the current setup of the Fluksometer it is not possible to add additional sensors, for example on temperature, which contribute to the provided dashes. Nevertheless, you may use a trick and supply analog readings to a clamp port (be aware of the correct impedance). As an alternative you may send MQTT messages to the Fluksometer's MQTT broker and use an external visualization solution subscribing to this.
Note: With the FLM02B all requirements are met to integrate wireless sensors via RFM12B 868MHz, for example provided by the FluksoKubes.
There are some solutions that allow you to visualize Fluksometer readings also apart from the Flukso dash. Use your preferred search engine to find corresponding web content, for example on an Android app showing readings via the REST API.
While there are official distribution channels for the Fluksometer in Europe and Australia, the use is not restricted to these continents. By supplying full CE and FCC certification you may utilize a Fluksometer also in your country. Chose a proper clamp setup to meet your local requirements, for example for U.S. two phase systems corresponding 100A current clamps.
It may be convenient to use the Fluksometer with an uninterruptible power supply; as can be seen from the power requirements (9-15V DC, 500mA min.) this may easily be reached by using an appropriate 12V lead acid battery, just as an example.
The Fluksometer buffers its readings to be transmitted to the Flusko server as well as it stores its readings in an on-device "database". Refer to TMPO for more information. If a connect to the Flukso server fails, the Fluksometer will retry its transmission so that no data gets lost.
The Fluskometer is named a "community meter". Thus, you may compare your data with that of other Fluksonians. Use the option to show other Fluksonians' readings in your dash by adding them to your settings in the Flusko dash.
...certain meters; well, as long as you get pulses from your meter, you are about to succeed to interface it with the Fluksometer's pulse ports. If you are not sure if your meter supplies pulses, ask your utility, consult the meter's specification or check with a compass, if a magnet is built in (on water and gas meters) to utilize a reed switch.
By default you cannot access the local web pages via the wireless interface. The FLM firewall will block requests on port 80 on the wifi interface. You may change this by ssh'ing into the device via ethernet and then running two commands:
prompt@localpc:~ $ ssh root@192.168.255.1 [default password: root]
root@flukso-xxxxxx:~$ uci set firewall.@zone[1].input=ACCEPT
root@flukso-xxxxxx:~$ uci commit
For the firewall to recognize the changes, you may need to restart it
root@flukso-xxxxxx:~$ /etc/init.d/firewall restart
The Fluksometer's metering constants need to meet your pulse meter output. Set them with respect to Wh represented per pulse. This is, for example for 2000 pulses per kWh equal to 1000 Wh / 2000 pulses = 0.5 Wh/pulse; 1 kWh / 1000 pulses = 1000 Wh / 1000 pulses = 1 Wh/pulse and so forth.
The Fluksometer provides real-time readings only in the local area network; it sends its data to the Flukso server only once every 15 min. So you may experience a delay in the dash. If a connect is not possible then even longer.
While the pulse input can be supplied with any reed switch or open-collector interface, you may not use "any kind" of current clamp with the Fluksometer. By hardware the analog input is set up with a voltage divider that brings the "offcial" clamps' output voltage range and impedance into the necessary input range of the analog-to-digital converters. If you meet this setup, you may of course adapt to different sensors; do so by own risk only. (To quote inspector Sledge Hammer: "Trust me, I know what I am doing.")
Mysql, OpenHAB, ... - there are plenty of different approaches you may use to work or integrate your Fluksometer readings with. Be curious and try it out yourself; use your preferred search engine to scan exsiting solutions.
If your Fluksometer is not working as expected, follow Dogbert's tech advice "shut up and reboot"; if that does not cure your issue, then consult the system log and describe the error as precise as possible; someone in the forum may help. If not, Flukso headquarter will step in and will perform a remote debugging session.
The Fluksometer source code is open sourced on Github. Become also a member of this huge community and take a look at the code itself or its forks by other enthusiasts. There are very interesting approaches to encounter. For convenient utilization of the source code (and this documentation) install Git.
Well, as depicted in Measuring Solar, measuring solar power generation is best done using a pulse meter due to the fact that solar inverters in off-mode seem generally to have a pretty bad power factor, thus provide phantom readings through their built in capacitors.
The Fluskometer transmits its readings (via its REST API and MQTT topics) and configuration information (MQTT only) in a JSON (JavaScript Object Notation) format allowing easy programmatic use in nearly every programming environment (so not restricted to JavaScript). See the paragraph on MQTT messages for more details.
Restricted by the hardware setup, the Fluskometer is capable to interface with up to three current clamps, up to four pulse meters, a Dutch P1 smart meter and several other devices through its built-in wireless interface. Integration of these inputs into the Flukso sensor storage and website are restricted to "officially supported" devices. But as all code is open source, you may help yourself, for example by utilizing additional sensors through MQTT.
The Fluksometer continuously publishes counter and gauge readings via MQTT topics /sensor/<sensorid>/counter
and /sensor/<sensorid>/gauge
on its broker address <flukso IP>:1883
.
The payload format of these messages consists of an array with elements timestamp, value and unit, for example [1459065184,2149218,"Wh"]
and [1459065180,157,"W"]
.
To obtain device configuration information there is a topic /device/<device id>/config/sensor
. This provides an object with properties specifying a lot of different Fluksometer features, for example an enumeration of all sensors and information on set APIs. A sensor is represented as in following excerpt:
"1": {
"id": "<sensor id>",
"class": "analog",
"type": "electricity",
"counter": 1699569,
"function": "Mains L1",
"port": [ 1 ],
"enable": 1,
"rid": 0,
"current": 50,
"data_type": "counter",
"voltage": 230
}
Use an MQTT client, for example mosquitto_sub, to take a look at your own data.
To post its readings to the Flusko server, the Fluksometer also publishes TMPO content on topic /sensor/<device id>/tmpo/+/+/+/gz
. Payload here is a gzipped object with counter values, for example
/sensor/<sid>/tmpo/0/8/1422801920/gz
{ h:
{ cfg:
{ id: '<sid>',
type: 'electricity',
port: [Object],
function: '<sensor name>',
rid: 0,
current: 50,
data_type: 'counter',
voltage: 230 },
tail: [ 1422802131, 637842 ],
vsn: 1,
head: [ 1422801984, 637840 ] },
t: [ 0, 66, 81 ],
v: [ 0, 1, 1 ] }
"Normally" (in a setup where you want to measure power consumption against a neutral line) you will use one current clamp per phase. So all live wires will get a clamp which provides indication of current flow towards the "returning" neutral wire. But as ususal there is an exception from this rule. There exists cabling without neutral in which a phase may act as supply, but also as return path. In Belgium and the Netherlands there partly exists not 3x400V + N but 3x230V without N. In this case circuits will be driven by, for example L1-L2, not L1-N, L indicating "live" and N "neutral".
In this (special) case the current flow between the L-wires cannot be summed in a scalar way, as these currents flow in different phases, with a 120° phase angle between each pair of currents and using complex calculus - here live wires are indicated as r, s, and t:
Ir = |Irt| + |Irs|*e^(j*2*pi/3)
Is = |Irs|*e^(j*2*pi/3) + |Its|*e^(j*4*pi/3)
It = |Its|*e^(j*4*pi/3) + |Irt|
|Ir|^2 = |Irt|^2 + |Irs|^2 - 2*|Irt|*|Irs|*cos(2*pi/3)
|Is|^2 = |Irs|^2 + |Its|^2 - 2*|Irs|*|Its|*cos(2*pi/3)
|It|^2 = |Its|^2 + |Irt|^2 - 2*|Its|*|Irt|*cos(2*pi/3)
What we're actually looking for is this
P = V*(|Irt| + |Irs| + |Its|) with V = 230V
It is not possible to derive |Irt|, |Irs| and |Its| from the currents that are actually measured, namely |Ir|, |Is| and |It| without having |Ir-Is|, |Ir-It| and |Is-It| at disposition. This however requires that there is information about the phase difference between Ir, Is and It, which is not available in the FLM's setup.
Having a mix of 3-phase and single-phase loads in a 3x230V without N requires a compromise on accuracy. You may hook up two clamps, one on the "black" and one on the "brown" phase. Configure the Fluksometer as 3-phase with a 230V voltage. This will cause a measurement error for any 3-phase load, for example an induction cooker. Instead of 3*amps*133V = 400*amps (W) the Fluksometer will register 2*amps*230V = 460*amps (W) for the induction plates, or a 15% deviation.
So, if only two phases are used, with the third one acting as neutral, then two clamps on the used phases will work, with some compromise in accuracy when a 3-phase load is active. Putting a clamp on each phase and configuring the voltage as 133V will only yield correct results with a true three-phase load.
There are some simple optical sensors that you may utilize to interface with, for example, a gas or water meter. As long as such sensor provides an open-collector output, you are fine interfacing it with the FLM's pulse ports. Be aware of the required power supply to these sensors.
The Flukso website by itself does not provide an integrated search function. Yet you are able to use any search engine for this purpose. Restrict your query to the flusko.net website by parameter "site:flukso.net" and dare to ask the right question... For example, you can enter this into Google
site:flukso.net 3-phase pulse counter
to find all posts relating to 3-phase pulse counters.
For pulse input there should be no issue in using a (twisted pair) wire of several 10s of meters length; pulse detection is on falling edge, thus against ground potential "overriding" the FLM internal pull-up resistor. For analog/clamp input you may test yourself; the resistance of the wire should not be "significant" for this.