1
0
Fork 0
mirror of https://github.com/Luzifer/tasmota-build.git synced 2024-12-22 22:01:18 +00:00

Initial version

This commit is contained in:
Knut Ahlers 2018-01-18 20:13:35 +01:00
commit 638d74145a
Signed by: luzifer
GPG key ID: DC2729FDD34BE99E
5 changed files with 98 additions and 0 deletions

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
tasmota
venv
build

27
Makefile Normal file
View file

@ -0,0 +1,27 @@
TASMOTA_VERSION=v5.11.1
default: build_sonoff build_sonoff-minimal
ci: clean default
build_%: download update_user-config venv
cd tasmota && ../venv/bin/platformio run -e $*
mkdir -p build
cp tasmota/.pioenvs/$*/firmware.bin build/$*.bin
clean:
rm -rf tasmota build venv
download:
git clone https://github.com/arendst/Sonoff-Tasmota.git tasmota
cd tasmota && git reset --hard $(TASMOTA_VERSION)
update_user-config: venv
./venv/bin/python update.py
cd tasmota && git --no-pager diff -w sonoff/user_config.h
venv:
virtualenv -p python2 venv
./venv/bin/pip install -r requirements.txt
.PHONY: venv

24
config.yml Normal file
View file

@ -0,0 +1,24 @@
---
STA_SSID1: '${WIFI_SSID}'
STA_PASS1: '${WIFI_PASS}'
OTA_URL: '${OTA_URL}'
MQTT_HOST: '${MQTT_HOST}'
MQTT_USER: '${MQTT_USER}'
MQTT_PASS: '${MQTT_PASS}'
MQTT_TOPIC: '"unconfigured"'
USE_DOMOTICZ: '!undef'
USE_EMULATION: '!undef'
USE_DISCOVERY: '!undef'
NTP_SERVER1: '"ptbtime1.ptb.de"'
NTP_SERVER2: '"ptbtime2.ptb.de"'
USE_IR_REMOTE: '!undef'
USE_WS2812: '!undef'
USE_ARILUX_RF: '!undef'
...

2
requirements.txt Normal file
View file

@ -0,0 +1,2 @@
PyYAML
platformio

42
update.py Normal file
View file

@ -0,0 +1,42 @@
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
import os
import yaml
def fmt_line(prefix, param, content, comment):
return '{: <47} // {}'.format('{}#define {: <22} {}'.format(prefix, param, content), comment)
def get_line(param, content, comment):
if content == '!undef':
return fmt_line('//', param, '', comment)
if content == '!def':
return fmt_line('', param, '', comment)
if content[:2] == '${':
envvar = content.strip('${}')
if envvar in os.environ:
content = os.environ[envvar]
return fmt_line('', param, content, comment)
def main():
cfg = yaml.load(open('config.yml'))
config = open('tasmota/sonoff/user_config.h').read().split('\n')
for (i, line) in enumerate(config):
for param, content in cfg.items():
if '#define {} '.format(param) in line:
comment = line.lstrip('/').split(' //', 1)[1].strip()
config[i] = get_line(param, content, comment)
with open('tasmota/sonoff/user_config.h', 'w') as fh:
fh.write('\n'.join(config))
if __name__ == '__main__':
main()