Skip to content

Commit

Permalink
Merge branch 'release/1.3.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
K-Ko committed May 10, 2013
2 parents 9889e23 + 2c6c024 commit 8c67767
Show file tree
Hide file tree
Showing 41 changed files with 811 additions and 297 deletions.
4 changes: 2 additions & 2 deletions .version
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
1.2.0
2013-05-01
1.3.0
2013-05-10
21 changes: 12 additions & 9 deletions bin/PVLng.functions
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ function log {
##############################################################################
function usage {
s=$(cat "$0" | \
awk '{if($0~/^#+ +USAGE +>+/){while(getline>0){if($0~/^#+ *<+ *USAGE/)exit;print $0}}}')
awk '{if($0~/^#+ +USAGE +>+/){while(getline>0){if($0~/^#+ *<+ *USAGE/)exit;print $0}}}')
eval s="$(echo \""$s"\")"
echo "$s" >&2
}
Expand All @@ -50,7 +50,7 @@ function usage {
### read config file
##############################################################################
function read_config {
test "$1" || error_exit 'Missing config file!'
test "$1" || error_exit 'Missing config file!'
test -r "$1" || error_exit 'Configuration file is not readable!'

while read var value; do
Expand All @@ -67,7 +67,7 @@ function read_config {
function bool {
case $(echo "$1" | tr '[A-Z]' '[a-z]') in
1|on|yes|true) echo 1 ;;
*) echo 0 ;;
*) echo 0 ;;
esac
}

Expand Down Expand Up @@ -100,14 +100,17 @@ function curl_cmd {
### $2 = message
##############################################################################
function save_log {
log 1 "Scope : $1"
log 1 "Message: $2"
log 1 "Scope : $1"
log 1 "Message : $2"

test "${2:0:1}" != '@' && message="message=\"$2\"" || message="message$2"
### detect @filename or "normal string" to post
test "${2:0:1}" == '@' && msg="$2" || msg="=\"$2\""

$(curl_cmd) --header "X-PVLng-key: $PVLngAPIkey" --request PUT \
--data-urlencode scope="$1" --data-urlencode $message \
$PVLngHost/api/log
$(curl_cmd) --request PUT \
--header "X-PVLng-key: $PVLngAPIkey" \
--data-urlencode scope="$1" \
--data-urlencode "message$msg" \
$PVLngHost/api/log
}

##############################################################################
Expand Down
73 changes: 73 additions & 0 deletions bin/cosm/cosm.conf.dist
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
##############################################################################
### @author Knut Kohl <[email protected]>
### @copyright 2012-2013 Knut Kohl
### @license GNU General Public License http://www.gnu.org/licenses/gpl.txt
### @version $Id$
##############################################################################

##############################################################################
### Common settings
##############################################################################

##############################################################################
### Cosm Api URL
### required
##############################################################################
APIURL "http://api.cosm.com/v2/feeds"

##############################################################################
### Cosm ApiKey, must have the "create" permission
### required
##############################################################################
APIKEY ""

##############################################################################
### Cosm feed Id
### required
##############################################################################
FEED ""

##############################################################################
### Update interval, same as in crontab!
### required
##############################################################################
INTERVAL

##############################################################################
### Per stream settings
##############################################################################

##############################################################################
### Count of following GUIDs to read
##############################################################################
GUID_N 0

##############################################################################
### Reapeat the follwing settings for each channel to read.
### Give all belonging parameters same _<#>
##############################################################################

### copy >>>

##############################################################################
### PVLng sensor GUID
### required
##############################################################################
GUID_1 ""

##############################################################################
### Cosm stream Id
### required
##############################################################################
STREAM_1 ""

##############################################################################
### Format to push the channel value to Cosm
### Remember, PVLng responses very detailed agerage data,
### so it can make sense to set it to %.1f for example
### Format is used for printf
### optional, defaults to %s
##############################################################################
FORMAT_1 ""

### <<< copy
162 changes: 162 additions & 0 deletions bin/cosm/cosm.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
#!/bin/sh
##############################################################################
### @author Knut Kohl <[email protected]>
### @copyright 2012-2013 Knut Kohl
### @license GNU General Public License http://www.gnu.org/licenses/gpl.txt
### @version $Id$
##############################################################################

##############################################################################
### Init
##############################################################################
pwd=$(dirname $0)
APIURL=
APIKEY=
FEED=
GUID_N=0

. $pwd/../PVLng.conf
. $pwd/../PVLng.functions

CACHED=false

while getopts "tvxh" OPTION; do
case "$OPTION" in
t) TEST=y; VERBOSE=$(expr $VERBOSE + 1) ;;
v) VERBOSE=$(expr $VERBOSE + 1) ;;
x) TRACE=y ;;
h) usage; exit ;;
?) usage; exit 1 ;;
esac
done

shift $((OPTIND-1))

read_config "$1"

##############################################################################
### Check config data
##############################################################################
test "$APIURL" || error_exit "Cosm API URL is required (APIURL)!"
test "$APIKEY" || error_exit "Cosm ApiKey is required (APIKEY)!"

test "$FEED" || error_exit "Feed Id must be set (FEED)!"
FEED=$(int "$FEED")
test $FEED -gt 0 || error_exit "Feed Id must > 0 (FEED)!"

test "$INTERVAL" || error_exit "Update interval must be set (INTERVAL)!"
INTERVAL=$(int "$INTERVAL")
test $INTERVAL -gt 0 || error_exit "Update interval must > 0 (INTERVAL)!"

GUID_N=$(int "$GUID_N")
test $GUID_N -gt 0 || error_exit "No sections defined (GUID_N)"

##############################################################################
### Start
##############################################################################
test "$TRACE" && set -x

curl=$(curl_cmd)

LC_NUMERIC=en_US

i=0

while test $i -lt $GUID_N; do

i=$(expr $i + 1)

log 1 "--- $i ---"

eval GUID=\$GUID_$i
log 2 "GUID : $GUID"
test "$GUID" || error_exit "Sensor GUID is required (GUID_$i)"

eval STREAM=\$STREAM_$i
log 2 "Stream : $STREAM"
test "$STREAM" || error_exit "Cosm datastream Id is required (STREAM_$i)"

eval FORMAT=\$FORMAT_$i
log 2 "Format : $FORMAT"

### read value
url="$PVLngURL1/$GUID.tsv?period=${INTERVAL}minutes"
log 2 "Get-URL : $url"

### skip attributes row, get last row
row=$($curl $url | tail -n+2 | tail -n1)

### Just after 0:00 no data for today yet
test "$row" || continue

### set timestamp and data to $1 and $2
set $row
timestamp=$1

if test "$FORMAT"; then
value=$(printf "$FORMAT" "$2")
else
value=$2
fi

age=$(echo "scale=0;($(date +%s)-$timestamp)/60" | bc -l)
log 2 "Last : $(date -d @$timestamp)"
log 2 "Age : $age min."

### test for valid timestamp
### last readed timestamp must be greater or equal $valid
if test $age -gt $INTERVAL; then
log 1 "Skip timestamp outside update interval."
continue
fi

log 1 "Value : $value"

URL="${APIURL}/${FEED}/datastreams/${STREAM}.csv"
log 1 "Feed-URL : $URL"

test "$TEST" && continue

### Send
rc=$($curl --request PUT \
--header "X-ApiKey: $APIKEY" \
--write-out %{http_code} \
--output $TMPFILE \
--data-binary "$value" \
$URL)

### Check result, ONLY 200 is ok
if test $rc -eq 200; then
### Ok, data added
log 1 "Ok"
else
### log error
save_log "Cosm" "Failed: $(cat $TMPFILE)"
fi

done

set +x

exit

##############################################################################
# USAGE >>

Push channel data to datastreams on Cosm.com

Usage: $scriptname [options] config_file

Options:

-t Test mode, don't save to PVLng
Sets verbosity to info level
-v Set verbosity level to info level
-vv Set verbosity level to debug level
-h Show this help
Requires a configuation file $pwd/cosm.conf
See $pwd/cosm.conf.dist for details.
# << USAGE
8 changes: 4 additions & 4 deletions bin/twitter/twitter.items
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ function twitter_power_max {
max=0
while read line; do
value=$(echo "$line" | cut -f2)
test $value -gt $max && max=$value
test $(int $value) -gt $max && max=$value
done < $TMPFILE

log 1 "=> $max"
Expand All @@ -71,11 +71,11 @@ function twitter_today {
### Overall production in MWh
##############################################################################
function twitter_overall {
url="$PVLngURL1/$1.tsv?absolute=1"
url="$PVLngURL1/$1.tsv?period=all"
log 1 "$url"

### skip attribtues line, get last line, get 2nd value
value=$($curl $url | tail -n+2 | tail -n1 | cut -f2)
### get attribtues line, get 24th value - consumption
value=$($curl $url | head -n1 | cut -f24)
log 1 "=> $value"

echo $value
Expand Down
9 changes: 5 additions & 4 deletions bin/twitter/twitter.sh
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ ITEMS=0
while test $ITEMS -lt $ITEM_N; do

ITEMS=$(expr $ITEMS + 1)
log 1 "--- Section $ITEMS ---"
log 1 "--- $ITEMS ---"

eval ITEM=\$ITEM_$ITEMS
log 1 "Item : $ITEM"
Expand All @@ -70,8 +70,12 @@ while test $ITEMS -lt $ITEM_N; do
log 1 "GUID : $GUID"

value=$(twitter_$ITEM $GUID)
value=$(int $value)
log 1 "Value : $value"

### Exit if no value is found, e.g. no actual power outside daylight times
test "$value" != "0" || test "$FORCE" || exit

eval FACTOR=\$FACTOR_$ITEMS
log 1 "Factor: $FACTOR"

Expand All @@ -80,9 +84,6 @@ while test $ITEMS -lt $ITEM_N; do
log 1 "Value : $value"
fi

### Exit if no value is found, e.g. no actual power outside daylight times
test "$value" != "0" || test "$FORCE" || exit

PARAMS="$PARAMS $value"

done
Expand Down
Loading

0 comments on commit 8c67767

Please sign in to comment.