Commit Graph

911 Commits

Author SHA1 Message Date
penfold42
d3e447f422 Add new white_algorithms to web UI 2019-02-08 23:48:40 +11:00
penfold42
bceb255b7a Implemented warm white (and added cool white) RGBW white algorithms 2019-02-08 23:48:39 +11:00
penfold42
b77e7c4acd sk6812 white_algorithm json parsing bug 2019-02-08 23:48:39 +11:00
penfold42
b048771e4a Ws281x rpi pwm parsing fixes 2019-02-08 23:48:39 +11:00
SJunkies
53966d1885
Fixes PhilipsHue Brightness, ColorGamut+new Lights
Hue RGB Color Conversion for Brightness is wrong! - use RGB to HSV instead of XYZ Space! 
For correct use, reset brightnessFactor back to 1.0 in config! - It was just a Workaround, not the Solution!
Fixed wrong ColorGamut A/B/C Values + Added New Lamp Models: LCT015, LCT016, LCT024
2019-02-07 11:37:53 +01:00
Paulchen-Panther
5cc353468d Flatbuffer, Forwarder
- Flatbuffer now only sends data if priority registration was successful
- Forwarder no longer needs to worry about registering the priority
2019-02-05 19:55:48 +01:00
Paulchen-Panther
657fe00211
Troubleshooting and ...
- More i18n
- Easy use of mutual exclusion in JsonAPI with QMutexLocker
- Smoothing type "linear" hidden in the WebUI, because there is currently only one
- Message forwarding implemented again
- For compatibility to home assistants and other remote controls, "activeEffects" and "activeLedColor" has been added to the JSON-RPC
- FlatBuffer clear now the Priority on disconnect
- The information "available V4L2 devices" is now only displayed if the device list is not empty
- LED device "PiBlaster" excluded from OSX build
2019-02-03 14:36:57 +01:00
Paulchen-Panther
a412c34e68
Backwards compatibility ensured 2019-01-27 13:41:21 +01:00
Paulchen-Panther
1f132bcfa9 Fixes
remove Brindosch's V4L2 stream notifier adaption
avoid compilation 'note' on GCC 6 ARM
2019-01-22 22:07:58 +01:00
Paulchen-Panther
1a9433861e Cleanup
- .deb work
- update package creation
- added hyperion package icon
- remove V4L2 warning for OSX build
2019-01-19 18:35:40 +01:00
Paulchen Panther
38946a0b06
Temporary solution
Due to the wrong interpretation of the OpCode, larger WebSocket frames are interpreted as a binary message. A new implementation of the WebSocket protocol in Hyperion is necessary. The QT class QWebSocketServer does not have this problem. However, this can not be mixed with an existing QTcpServer implementation without using a new WebSocket port.
2019-01-13 20:14:05 +01:00
Paulchen-Panther
28aa6a6954 Fixes 2019-01-07 23:33:27 +01:00
Paulchen-Panther
2cda2a11e0 Fix V4L2 2019-01-07 18:13:49 +01:00
Paulchen-Panther
2dca1c93e6 Commits from @MartB and more ...
- Commit: 1d9165f403
- New default QT capture implementation
- UploadHandler added to Effects Configurator to allow uploading GIF files
- Docker compile script and instruction
- Travis Fix
2019-01-06 21:09:27 +01:00
Paulchen-Panther
7352ff4d42 Threading and more
- webui remove restarts
- threading for LedDevice
2019-01-01 19:58:50 +01:00
Paulchen-Panther
d6b2cfaf9d update 2018-12-31 15:48:29 +01:00
Paulchen-Panther
38950edf35 remove protobuf (part 2) 2018-12-30 22:07:53 +01:00
Paulchen-Panther
559311e18c
remove protobuf 2018-12-30 16:43:22 +01:00
Paulchen-Panther
2a77f6f012
even more changes
Signed-off-by: Paulchen-Panther <Paulchen--Panter@gmx.net>
2018-12-28 18:28:49 +01:00
Paulchen-Panther
3700566d10 add flatbuffer dependencies 2018-12-28 18:08:58 +01:00
Paulchen-Panther
d762aa2f3e Details coming soon. 2018-12-27 23:11:32 +01:00
Paulchen Panther
e3be03ea73
Close client connection on stop 2018-12-20 15:16:23 +01:00
Paulchen Panther
a78d8d3a03
Removed ColorOrder from schema 2018-12-20 15:15:07 +01:00
Paulchen Panther
46dbede8f4
add aurora schema to resource file 2018-12-20 15:13:45 +01:00
Paulchen Panther
87c9c23807
emit rawLedColors before transform 2018-12-20 15:12:45 +01:00
Paulchen Panther
669501a084
LED stream set to max 20hz 2018-12-20 15:10:39 +01:00
Paulchen Panther
44013aa36c
Remove invalid iCCP chunk from icon 2018-12-02 14:26:41 +01:00
Paulchen Panther
ed7f538e38
Delete hyperion-icon_32px.png 2018-12-02 14:25:36 +01:00
Ansel Zandegran
820e16b6cb Add Schema 2018-11-07 21:01:53 +01:00
Rick164
f7d5c2c908
Merge pull request #500 from zandegran/master
Nanoleaf Aurora integration for Hyperion
2018-10-28 13:13:07 +01:00
Rick164
1860f6166c
Merge pull request #514 from oCanna/fix/hyperion-x11
Update screen dimensions only if they really change
2018-10-25 22:29:40 +02:00
Rick164
3df30be316
Merge pull request #503 from penfold42/apa104 2018-10-24 20:40:29 +02:00
Bart J
63839f9fc7 Update screen dimensions only if they really change 2018-08-04 16:01:53 +02:00
penfold42
dc1d3f96c2 Fix timing in comments 2018-03-01 18:45:36 +11:00
penfold42
96cefd7603 fixed bitpair_to_byte table
fixed end frame byte count
2018-03-01 17:34:34 +11:00
penfold42
e190a51cfc [UNTESTED] Add support for apa104 led type 2018-03-01 17:31:04 +11:00
Ansel Zandegran
72fac77bb0 Add Aurora Integration 2018-02-05 08:17:18 +01:00
Ansel Zandegran
ba83843d3d WIP: Mode change done 2018-02-04 23:19:34 +01:00
MartB
2afbc26bf9
RGBTransform fix gamma adjustment of green, blue always taking red value
This fixes #493 and is also present on the latest beta rework branch.
2018-01-26 10:49:49 +01:00
Daniel
bc4007ac67 Add Karatelight support (#487)
* Add Karatelight support

* Add Karatelight Schema

* Actually use the new schema file

* Put karate device to USB group in webinterface
2017-11-29 17:59:26 +01:00
brindosch
fa75143dbf
remove kodiVideoChecker (#475) 2017-11-22 00:52:55 +01:00
brindosch
0f9f3a17e7
Move WebSocket to Webserver & HttpJsonRpc async (#486)
* Move WebSocket to Webserver and HttpJsonRpc is now async

* revert...
2017-11-20 00:06:45 +01:00
brindosch
29058420a2 Fix Websocket
from @Paulchen-Panther
2017-10-14 17:37:22 +02:00
brindosch
4c2b75b45a Python 3.4 (#479)
* Python 3

* fix travis osx

* try fix

* get info

* digging in the dirt

* .

* .

* cleanup

* .

* .

* finalize, add multi threaded python support
2017-10-13 17:49:29 +02:00
brindosch
992dd6ea84 cmake 3.0.0 (#480) 2017-10-13 00:06:31 +02:00
Paulchen Panther
9cc6c75633 Use GIF files for effects (#477)
* Add new Effects

* add schema file for gif based effects

* add background color to snake effect

* add background color to snake effect

* Update schema file for snake effect

* Add function getImage

* add function getImage

* optimize lights.gif

* Add format to GIF schema
2017-10-12 12:00:32 +02:00
brindosch
838008568a JsonUtils & improvements (#476)
* add JsonUtils

* update

* repair

* update

* ident

* Schema correct msg other adjusts

* fix effDel, ExceptionLog, cleanup

* fix travis qt5.2

* not so funny

* use Qthread interrupt instead abort bool

* update services
2017-10-12 11:55:03 +02:00
brindosch
59ec767373 Add SECAM video standard to v4l2 2017-10-04 21:23:45 +02:00
redPanther
6f443a48dd Refactor websocket + true receive (#471)
* save it

* ws: multiframe receive now works

* port cfg write with autocorrect to jsonprocessor
cleanup

* cleanup

* cleanup

* add support for image data over ws binary frame
2017-09-16 09:08:21 +02:00
brindosch
74ff5c7ada Philiphs Hue Improvments (#472)
* patch and improve philiphshue

* cleanup

* cleanup

* cleanup

* LedDevice switchOn()

* add signal for on/off to ledDevice
2017-09-16 00:18:17 +02:00
brindosch
81f5f51257 UI fixes/updates (#468)
* fix logging display

* hue wizard add usrname

* fix restartAction sometimes not executed

* remove configRevision

* remove v4l2 grabMode(2d/3d)

* remove latchTime from configs

not in main led device schema

* config comment: all grabbers can crop

* remove smoothing delay&pause for effects

* finalize disable effects ui

* fix empty effect selects

* remote page add 2D/3D videoMode

* add blackborder texts

* Update EffectEngine.cpp
2017-09-04 23:12:59 +02:00
redPanther
cb7b5fa588 amlogic: integrate grabbing via ge2d (#469)
* - grabber auto off when not set as active prio
- join aml and fb - on aml platform both grabbers are needed, so they joind in one module and share one prio. user don't the the nasty magic behind
- aml: preparation for direct ge2d access

* just save it, in the middle of ge2d impl

* fix compile issues

* now grabbing works basicly

* add 3d support for ge2d

* next step, we got some video from aml

* switch back to rgba

* cleanup

* code cleanup, remove unused stuff
2017-09-03 13:48:16 +02:00
redPanther
2aa4df92a9 amlogic refactoring (#464)
* - grabber auto off when not set as active prio
- join aml and fb - on aml platform both grabbers are needed, so they joind in one module and share one prio. user don't the the nasty magic behind
- aml: preparation for direct ge2d access

* just save it, in the middle of ge2d impl

* fix compile issues

* now grabbing works basicly

* add 3d support for ge2d

* next step, we got some video from aml

* switch back to rgba

* remove unfinished ge2d stuff

* commit missing changes

* some urgent fixes, needs some beautifying, but it works now

* fixes and refctoring
2017-09-01 08:50:37 +02:00
redPanther
9eff6384cc grabber api and feature unification (#462)
* move setvideomode to common place

* implement more croping and 3d support

* more api unification

* more refactoring

* osx fix

* next step

* add a mock for osx grabber. Now it is possible to test compile on none osx platforms.

* more unifications ...

* remove obsolete includes and grabbers are not dyn allocated. dispmanx needs rework an probaly not work atm

* first version of dispmanx mock. it compiles, but outputs a black image

* now dispmanx mock works!

* activate mocks in travis linux build
prepare dispmanx to rgb image out

* dispmanx now with image rgb output
fix deadlock with w/h -1 in grabber v4l
cleanups

* fix json

* fix some runtime stuff

* Update FramebufferWrapper.cpp

fix missing code

* unify grabframe

* 3d and croping for amlogic

* fix setimage not working

* make use of templates
save some codelines

* save more code lines
2017-08-12 07:55:32 +02:00
redPanther
317a903b14 Leddevices source tree refactoring (#461)
* rework structure of leddevice source tree

* fix data type vor v4l sig detection value in webui

* automate leddevicefactory.cpp
2017-08-07 10:05:46 +02:00
redPanther
f3bbe158bf fix Websockets send with data > 65535 bytes (#460)
* json websockets: now sending of multiple frames as well es 64bit frame size works. code ideas taken from qtwebsockets

* remove debug stuff

* remove stl stuff
2017-08-06 21:50:30 +02:00
redPanther
569e59110e implement set videomode via json api (#457)
* implement set videomode via json api

* refactor grabbers:
- new base class
- move shared code to base class

* fix osx

* rework all cmakelist files with auto file collection. except leddevices (need further restructuring)

* store current video and grabbing mode

* add json stuff

* remove grabbingmode - we do not want to expose it
2017-08-04 23:08:15 +02:00
redPanther
6279dcb2a9 per effect smoothing (#456)
* add dynamic smoothing first step
* extend prio muxer to hold smoothing preset id
* add icons for systray
* fix missing changes in prio muxer
*  implement specific smoothing params for effects
* refactoring: std::min/max to qMin/Max
* some code optimization
* fix schema and translation
* revoke change of python include order
* fix eol in effect shemas
* optimize random,candle and fadecandy json schemas
2017-08-04 12:01:45 +02:00
redPanther
6625a318ac hyperiond desktop integration (#453)
* add deployment

* add correct api key

* fix cmake lists and add heroku app name

* Update .gitmodules

sync modules with upstream

* add possibility to start hyperiond as systray app

* cleanup

* - new command line options: --desktop --service to set desired mode (systray icon / console only)
- auto detect x server - if avail run in gui mode
- on osx always run in gui mode
- use existing icon from webconfig, instead of own icon
- add ability to no gice a config file name. If config not given, default config file will be set (home dir, or hyperiond dir, depending on writable state)

* fix warnings and compile error

* use own icon for systray purpose

* use new logo

* - set application properties
- fix force service mode
2017-08-01 17:29:47 +02:00
brindosch
5c7085439b update to cmake 2.8.12 (#451)
* update

* resolve qt5w

* test

* Go down

cmake python search won the price for crazy lib searches!

* 2.7 python forced, RPATH

* upstream

* ...

* update

* ...

* 2.7.12 py it picks random versions...

* max 7.12.5....

* Test 14.04 tests
2017-08-01 15:42:36 +02:00
brindosch
8a794039cf Expand effect engine & ui update (#445)
* update

* update

* update

* .

* .

* .

* update

* .

* .

* .

* .

* update

* .

* update

* .

* update

* update

* update

* update

* update

* update

* .

* update

* update

* update

* .

* .

* .

* Revert "."

This reverts commit 4dd6404b32.

* update

* .

* .

* .

* .

* .

* .

* .

* .

* .

* .

* .

* ...

* .

* .

* .

* .

* .

* .

* .

* .

* .

* update

* update

* update

* remove svg and pic

* colorpicker imgs to base64 to prevent delayed load if not cached

* fix json2python func

* update swirl with rgba

* add double swirl, tune default val in schema, update explanation

* adjust swirl.py

* FileObserver for config checks with timer as fallback (#4)
2017-07-30 14:36:23 +02:00
Paulchen Panther
5bd020a570 JSON Auto correction + hyperion schema split for better readability (#452)
* revoke schema split

* add "getAutoCorrectedConfig" function

* revoke schema split

* revoke schema split

* revoke schema split

* Prevent compiler error if none grabber is available

* revoke schema split

* add "getAutoCorrectedConfig" function

* revoke schema split

* remove "configMigrator"

* remove "configMigrator"

* Change TestConfigFile to show how the autocorrection works

* revoke schema split

* revoke schema split

* remove "ConfigMigrator"

* remove "ConfigMigrator"

* remove "ConfigMigratorBase"

* remove "ConfigMigratorBase"

* Add QJsonUtils.h

* added ability "ignore-required"

It has been added the ability to correct the configuration without having to pay attention to the keyword "required" in the hyperion schema

* Allow Comments in Hyperion Schema

* add ability to ignore the "required" keyword in hyperion schema

* add ability to ignore the "required" keyword in hyperion schema

* add ability to ignore the "required" keyword in hyperion schema

* //Allow Comments in Hyperion Schema

* Update jsonschema.py to version 0.8.0 to support ...

references in json schema

* add RefResolver from jsonschema.py to resolve

references in hyperion schema

* remove dupe code

* split the hyperion schema in separatly files

For better readability

* add function "resolveReferences" to resolve

references in hyperion schema.

* remove CURRENT_CONFIG_VERSION

* remove CURRENT_CONFIG_VERSION

* split the hyperion schema in separatly files

For better readability

* Create schema-backgroundEffect.json

* Add the rest of the Hyperion schema via upload

* Remove Comments in config file

* Add return variable to function writeJson().

fix function resolveReferences().
edit function load() to handle QPair result from schemaChecker.

* edit function validate() to return QPair variable

* fit function loadEffectDefinition()

* fit function checkJson()

*  Expand error check by dividing

"_error" variable in "_error" and "_schemaError".
Replace variable "bool" in validate() in QPair

* Extend function "cmd_cfg_set" to handle auto correction

* Extend function "loadConfig" to handle auto correction

* fix function loadConfig()
2017-07-30 13:32:10 +02:00
brindosch
622a171808 add http jsonrpc (#450) 2017-07-05 23:19:52 +02:00
penfold42
a99b7c5f59 Fixed piblaster support (#448)
added "sudo" to the CompileHowto
2017-07-05 23:19:44 +02:00
brindosch
e98122c9cb Add zeroconf TxtRecords (#449)
* txtrecords

* typo
2017-07-05 16:54:41 +02:00
brindosch
5da871dc9f Move JsonProcessing from JsonClientConnection to own class (#444)
* update

* Tell me why...
2017-06-24 11:52:22 +02:00
brindosch
d3707cb118 Websocket auto serverinfo responder (#443)
* serverinfo cb

* remove webui cron

* missing header file

* tcp connection should trigger to
2017-06-17 23:29:04 +02:00
brindosch
91c7637a2b add unique id
Zeroconf TXT record is missing
2017-06-17 23:27:41 +02:00
brindosch
a7f72a7bf2 fix mess 2017-05-29 21:34:47 +02:00
brindosch
e2ca9bcaa5 Stats
Testing time!
Also new: Effects dirs are now created automatically
2017-05-29 15:59:11 +02:00
penfold42
64fc6a9003 Artnet (#440)
* Started implementing artnet/DMX support

It compiles, but certainly wont work just yet

* Fix up packet data and length
correct default udp port

The data looks ok in wireshark

* Code cleanup
Sequence runs from 1..255 not 0
fix universe > 255

* code cleanups and force even number of channels

* Fix potential endianness issue

* added support for 'x' channels per fixture with zero padding
its very basic support for now - it needs better multi universe support
2017-05-26 22:17:12 +02:00
penfold42
564d4578d3 Rpi ws281x submodule update (#441)
* Updated rpi_ws281x submodule version
added dma channel option

* update translations
2017-05-23 18:14:27 +02:00
penfold42
93d520706e HyperionUsbAsp supports both ws2801 and ws2812 led strips (#438)
Re-add this option to the schema
2017-05-16 13:45:42 +02:00
penfold42
1bff517adf Ammeded timing to suit new revision of ws2812c (#439)
Should also work with WS2813 (but untested)

Included comments on the timing calculations
2017-05-13 19:09:26 +02:00
redPanther
f6209174c3 effects: image: make saving and minsize work (#433) 2017-04-14 07:58:34 +02:00
redPanther
b65d811640 add limit for write to leddevice (#432)
* add limit for write to leddevice

* add to default config

* add i18n

* extend xmas effect

* fix indention

* add check for minimum brightness

* adapt effects to fading and new minWriteTime

* remove old latchTime
rename minimumWriteTime to latchTime
make it as dev specific option

* set default for rewriteTime to 1s
pause smoothing on color too

* reenable smoothing for color - it looks nicer :-)

* fix timeout timer
2017-04-09 22:28:32 +02:00
brindosch
f7dd6b8b1a update (#431) 2017-04-07 21:33:40 +02:00
redPanther
cd62dcd351 Update MultiColorAdjustment.cpp
backlight threshold and brightness are independend now - check not neccessary
2017-04-07 20:42:27 +02:00
redPanther
5ea3c752b5 new brightness handling (#430)
* clean color adjustment

* now a prio duration of "0" means infinity

* implement dynamic 'just in time' initialization

* implement new brightness handling

* cahnge access level

* i18n fix

* - cleanup brightness stuff
- update webserver, now with initial ssl support

* - backlightThreshold is now 0-100 instead 0-1
- better performance for brightness - use piecewise linear instead of sqrt
2017-04-03 05:19:05 +02:00
redPanther
852f7b86bb clean color adjustment (#428) 2017-03-31 19:37:27 +02:00
brindosch
7f8ad86bdd update philipshue 2017-03-31 11:11:28 +02:00
ntim
59ce0a640e Added brightnessFactor configuration option to LedDevicePhilipsHue (#427)
* Added missing json document compilation to states retrieval.

* Major rework and implemented feature to increase brightness by a configurable factor.

* Made network manager property of the hue bridge class.

* Fixed some errors regarding model id handling.

* Removed early return.

* Update of philips hue schema for new parameter
2017-03-31 10:17:14 +02:00
redPanther
e9040f885d disable smoothing for effects (#425)
* no smooth for efx
rework fade effect

* join strobe and fade effects
new effect "breath"

* - make transition efx to smooth mode more smooth
- fixes for pacman
- rework fade base effect - make it more versatile
- fix prios in schema files
- new notify blue effect to demonstrate capability of fade effect
2017-03-30 06:20:20 +02:00
brindosch
230c403bba Limit gamma to 5.0 2017-03-26 15:59:36 +02:00
brindosch
8e12d189b0 Hyperion Switcher + cleanup (#423)
* upd

* update

* update

* update schemachecker

* ...

* fix lowest priority

* zeroconf updates (#421) (#3)

* zeroconf:
add ip
make names more uniq

* tune dns name for webconfig

* update

* update

* update

* update ui

* ...

* min val for gamma

* lost somewhere this

* add status to hyperion object

* update ui
2017-03-24 10:17:36 +01:00
redPanther
c6fa40fa87 global on/off (#424)
* implement global on/off

* set gamma minimum to 0.1
2017-03-23 17:11:07 +01:00
redPanther
a08e951762 zeroconf updates (#421)
* zeroconf:
add ip
make names more uniq

* tune dns name for webconfig
2017-03-22 23:08:01 +01:00
redPanther
0d996d6d10 clearall don't remove prio 254/255 (reserverved for system purpose) (#420) 2017-03-22 11:52:20 +01:00
redPanther
0aa467cceb populate zeroconf/avahi/bonjour records via json api (#419)
* start of integrating a bonkour service browser

* some experiments

* blub

* bonjour browser via jsonrpc ...

* fix indention

* - make leddevice as component
- extend sysinfo with domain
- add more data for  bonjour browser (e.g. split domain and hostname)

* code cleanup

* add translation

* use component names instead of ids

* fix compile
2017-03-21 17:55:46 +01:00
brindosch
9a0e1daf7b Reports - final version (#418)
* remove device config at log

* ...

* update ui
2017-03-18 00:05:04 +01:00
redPanther
a20e073bbd make v4l signal detection switchable (#415) 2017-03-15 20:33:11 +01:00
redPanther
bfb9a08c80 migrate std::string to qstring + add sysinfo via json (#412)
* std::string -> qstring part 1

* more string migration

* more string migration ...

* ...

* more qstring mogrations
add sysinfo via json

* remove unneccessary includes

* integrate sysinfo into webui
2017-03-04 22:17:42 +01:00
redPanther
7207756978 Sysinfo (#409)
* new sysinfo

* finish sysinfo
2017-03-02 10:50:31 +01:00
redPanther
221af075a4 implement origin for effects (#408)
* implement rigin for efx

* implement origin for effects and other components
add experimental adalight firmware for arduino with upto 5 pwm channels

* cleanup

* origin ip now with dns lookup

* fix compile

* move some code
2017-03-01 15:23:53 +01:00
brindosch
31f352e7ce json-rpc - origin, ui update (#407)
* try ace

* .

* update

* ...

* update

* update

* test

* -

* update

* fix

* .

* Revert "."

This reverts commit 631c30f8c0.

* Revert "fix"

This reverts commit be3dbc9cbd.

* Revert "update"

This reverts commit 50fc89e800.

* Revert "-"

This reverts commit 8a6c1fdab3.

* Revert "test"

This reverts commit 50b3641490.

* update schema

* update ui

* flags

* adjustments
2017-02-28 17:53:41 +01:00
redPanther
72e2f0bf18 check config when writing (#405)
* check config when writing

* integrate #403
2017-02-26 15:30:10 +01:00
redPanther
26154befa4 avhai cleanup + grabber list (#402)
* - cleanup shared_avahi stuff
- add a list of avilable grabbers to json server info

* fix compile
2017-02-17 08:33:34 +01:00
brindosch
01d04255dc fix tr, raise def gamma, add 'es' as language 2017-02-16 18:33:36 +01:00
redPanther
cab3c2fdc9 add more drawing func to effect engine (#400)
* - add more drawing func to effect engine
- make provider rs232 less noisy
- json checks: remove utf8 conversion temporarly and make it compat with py3 again

* fix compile prob
2017-02-16 07:33:58 +01:00
brindosch
7c336b0511 ledConfig in config, report creation and upload (#398)
* update effects

* fix

* try

* .

* Update clock.py

* Update clock.py

* upd

* impl ledConfig

* upd

* fix

* update

* update js

* fix pacman

* change order of priorities
2017-02-15 15:53:35 +01:00