diff --git a/cbpi/__init__.py b/cbpi/__init__.py
index 5fada43..f5d10d4 100644
--- a/cbpi/__init__.py
+++ b/cbpi/__init__.py
@@ -1 +1 @@
-__version__ = "4.0.0.8"
\ No newline at end of file
+__version__ = "4.0.0.12"
\ No newline at end of file
diff --git a/cbpi/api/kettle_logic.py b/cbpi/api/kettle_logic.py
index 02874ca..ef52353 100644
--- a/cbpi/api/kettle_logic.py
+++ b/cbpi/api/kettle_logic.py
@@ -28,16 +28,11 @@ class CBPiKettleLogic(metaclass=ABCMeta):
await asyncio.sleep(1)
def get_state(self):
- print("########STATE", self.state)
+
return dict(state=self.state)
async def start(self):
- print("")
- print("")
- print("")
- print("##################START UP KETTLE")
- print("")
- print("")
+
self.running = True
async def stop(self):
diff --git a/cbpi/cli.py b/cbpi/cli.py
index a77471f..2330edb 100644
--- a/cbpi/cli.py
+++ b/cbpi/cli.py
@@ -13,8 +13,6 @@ import os
import pathlib
import shutil
-
-
def create_plugin_file():
import os.path
if os.path.exists(os.path.join(".", 'config', "plugin_list.txt")) is False:
@@ -31,10 +29,38 @@ def create_config_file():
shutil.copy(srcfile, destfile)
print("Config Folder created")
+ if os.path.exists(os.path.join(".", 'config', "actor.json")) is False:
+ srcfile = os.path.join(os.path.dirname(__file__), "config", "actor.json")
+ destfile = os.path.join(".", 'config')
+ shutil.copy(srcfile, destfile)
+
+ if os.path.exists(os.path.join(".", 'config', "sensor.json")) is False:
+ srcfile = os.path.join(os.path.dirname(__file__), "config", "sensor.json")
+ destfile = os.path.join(".", 'config')
+ shutil.copy(srcfile, destfile)
+
+ if os.path.exists(os.path.join(".", 'config', "kettle.json")) is False:
+ srcfile = os.path.join(os.path.dirname(__file__), "config", "kettle.json")
+ destfile = os.path.join(".", 'config')
+ shutil.copy(srcfile, destfile)
+
+ if os.path.exists(os.path.join(".", 'config', "step_data.json")) is False:
+ srcfile = os.path.join(os.path.dirname(__file__), "config", "step_data.json")
+ destfile = os.path.join(".", 'config')
+ shutil.copy(srcfile, destfile)
+
+ if os.path.exists(os.path.join(".", 'config', "dashboard", "cbpi_dashboard_1.json")) is False:
+ srcfile = os.path.join(os.path.dirname(__file__), "config", "dashboard", "cbpi_dashboard_1.json")
+ destfile = os.path.join(".", "config", "dashboard")
+ shutil.copy(srcfile, destfile)
+
+
def create_home_folder_structure():
pathlib.Path(os.path.join(".", 'logs/sensors')).mkdir(parents=True, exist_ok=True)
pathlib.Path(os.path.join(".", 'config')).mkdir(parents=True, exist_ok=True)
- print("Log Folder created")
+ pathlib.Path(os.path.join(".", 'config/dasboard')).mkdir(parents=True, exist_ok=True)
+ pathlib.Path(os.path.join(".", 'config/dasboard/widgets')).mkdir(parents=True, exist_ok=True)
+ print("Folder created")
def copy_splash():
srcfile = os.path.join(os.path.dirname(__file__), "config", "splash.png")
@@ -123,7 +149,7 @@ def remove(package_name):
match_uninstalled = re.search(pattern, data)
if match_uninstalled is None:
- print(data)
+
print("Faild to uninstall plugin")
return False
diff --git a/cbpi/config/config.yaml b/cbpi/config/config.yaml
index 27d1a5d..cc1c19d 100644
--- a/cbpi/config/config.yaml
+++ b/cbpi/config/config.yaml
@@ -2,7 +2,7 @@
name: CraftBeerPi
version: 4.0.8
-#: /myext
+index_url: /cbpi_ui/static/index.html
port: 8000
diff --git a/cbpi/config/dashboard/cbpi_dashboard_1.json b/cbpi/config/dashboard/cbpi_dashboard_1.json
new file mode 100644
index 0000000..92079a0
--- /dev/null
+++ b/cbpi/config/dashboard/cbpi_dashboard_1.json
@@ -0,0 +1,3 @@
+{
+ "elements": []
+}
\ No newline at end of file
diff --git a/cbpi/config/plugin_list.txt b/cbpi/config/plugin_list.txt
index e69de29..da44c91 100644
--- a/cbpi/config/plugin_list.txt
+++ b/cbpi/config/plugin_list.txt
@@ -0,0 +1,3 @@
+cbpi4-ui:
+ installation_date: '2021-01-06 16:03:31'
+ version: '0.0.1'
\ No newline at end of file
diff --git a/cbpi/controller/basic_controller.py b/cbpi/controller/basic_controller.py
index 658a326..2f14006 100644
--- a/cbpi/controller/basic_controller.py
+++ b/cbpi/controller/basic_controller.py
@@ -90,11 +90,11 @@ class BasicController:
return
type = item["type"]
- print(type)
- print(self.types)
+
+
clazz = self.types[type]["class"]
item["instance"] = clazz(self.cbpi, item["id"], {})
- print(item["instance"])
+
await item["instance"].start()
item["instance"].task = self._loop.create_task(item["instance"].run())
logging.info("Sensor started {}".format(id))
@@ -142,7 +142,7 @@ class BasicController:
logging.info("{} call all Action {} {}".format(self.name, id, action))
try:
item = self.find_by_id(id)
- print(item)
+
instance = item.get("instance")
await instance.__getattribute__(action)(**parameter)
except Exception as e:
diff --git a/cbpi/controller/dashboard_controller.py b/cbpi/controller/dashboard_controller.py
index 299d335..f8963b2 100644
--- a/cbpi/controller/dashboard_controller.py
+++ b/cbpi/controller/dashboard_controller.py
@@ -11,22 +11,25 @@ class DashboardController():
self.logger = logging.getLogger(__name__)
self.cbpi.register(self)
+ self.path = os.path.join(".", 'config', "cbpi_dashboard_1.json")
+
async def init(self):
pass
async def get_content(self, dashboard_id):
try:
- with open('./config/dashboard/cbpi_dashboard_%s.json' % dashboard_id) as json_file:
+ with open(self.path) as json_file:
data = json.load(json_file)
return data
except:
return {}
async def add_content(self, dashboard_id, data):
- with open('./config/dashboard/cbpi_dashboard_%s.json' % dashboard_id, 'w') as outfile:
+ with open(self.path, 'w') as outfile:
json.dump(data, outfile, indent=4, sort_keys=True)
return {"status": "OK"}
async def delete_content(self, dashboard_id):
- if os.path.exists('./config/dashboard/cbpi_dashboard_%s.json' % dashboard_id):
- os.remove('./config/dashboard/cbpi_dashboard_%s.json' % dashboard_id)
+ if os.path.exists(self.path):
+ os.remove(self.path)
+
diff --git a/cbpi/controller/plugin_controller.py b/cbpi/controller/plugin_controller.py
index 372b7fa..619a995 100644
--- a/cbpi/controller/plugin_controller.py
+++ b/cbpi/controller/plugin_controller.py
@@ -173,7 +173,7 @@ class PluginController():
for method_name, method in cls.__dict__.items():
if hasattr(method, "action"):
- print(method_name)
+
key = method.__getattribute__("key")
parameters = []
for p in method.__getattribute__("parameters"):
diff --git a/cbpi/extension/dummysensor/__init__.py b/cbpi/extension/dummysensor/__init__.py
index 65ae6b2..32df456 100644
--- a/cbpi/extension/dummysensor/__init__.py
+++ b/cbpi/extension/dummysensor/__init__.py
@@ -34,7 +34,6 @@ class CustomSensor(CBPiSensor):
async def run(self):
while self.running is True:
- print("HALLO")
self.value = random.randint(0,50)
self.push_update(self.value)
await asyncio.sleep(1)
diff --git a/cbpi/http_endpoints/http_dashboard.py b/cbpi/http_endpoints/http_dashboard.py
index c447b20..c18d74f 100644
--- a/cbpi/http_endpoints/http_dashboard.py
+++ b/cbpi/http_endpoints/http_dashboard.py
@@ -4,6 +4,7 @@ from voluptuous import Schema
from cbpi.http_endpoints.http_curd_endpoints import HttpCrudEndpoints
from cbpi.utils import json_dumps
+import os
class DashBoardHttpEndpoints(HttpCrudEndpoints):
@@ -11,9 +12,7 @@ class DashBoardHttpEndpoints(HttpCrudEndpoints):
def __init__(self, cbpi):
self.cbpi = cbpi
self.controller = cbpi.dashboard
- self.cbpi.register(self, "/dashboard")
-
-
+ self.cbpi.register(self, "/dashboard", os.path.join(".","config", "dashboard", "widgets"))
@request_mapping(path="/{id:\d+}/content", auth_required=False)
diff --git a/config/cbpi_dashboard_1.json b/config/cbpi_dashboard_1.json
new file mode 100644
index 0000000..5f3b3f8
--- /dev/null
+++ b/config/cbpi_dashboard_1.json
@@ -0,0 +1,64 @@
+{
+ "elements": [
+ {
+ "id": "6c670263-7b19-426c-8769-19aac8ebb381",
+ "name": "CustomSVG",
+ "props": {
+ "name": "tank",
+ "width": "200"
+ },
+ "type": "CustomSVG",
+ "x": 295,
+ "y": 45
+ },
+ {
+ "id": "cbe859ca-b8e8-433f-952c-938a2f8a309b",
+ "name": "CustomSVG",
+ "props": {
+ "name": "tank",
+ "width": "100"
+ },
+ "type": "CustomSVG",
+ "x": 555,
+ "y": 55
+ },
+ {
+ "id": "1f1d5ee6-1ccc-409b-a240-c81d50b71627",
+ "name": "CustomSVG",
+ "props": {
+ "name": "kettle",
+ "width": "100"
+ },
+ "type": "CustomSVG",
+ "x": 795,
+ "y": 90
+ }
+ ],
+ "pathes": [
+ {
+ "coordinates": [
+ [
+ 305,
+ 75
+ ],
+ [
+ 160,
+ 190
+ ],
+ [
+ 245,
+ 460
+ ],
+ [
+ 525,
+ 395
+ ],
+ [
+ 560,
+ 75
+ ]
+ ],
+ "id": "d22d65d2-c4db-4553-856a-e9239a79e136"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/config/dashboard/widgets/kettle.svg b/config/dashboard/widgets/kettle.svg
new file mode 100644
index 0000000..a2000ef
--- /dev/null
+++ b/config/dashboard/widgets/kettle.svg
@@ -0,0 +1,81 @@
+
+
+
diff --git a/config/dashboard/widgets/tank.svg b/config/dashboard/widgets/tank.svg
new file mode 100644
index 0000000..5eaf7b7
--- /dev/null
+++ b/config/dashboard/widgets/tank.svg
@@ -0,0 +1,101 @@
+
+
+
diff --git a/config/step_data.json b/config/step_data.json
index 4bd1d70..8bf517b 100644
--- a/config/step_data.json
+++ b/config/step_data.json
@@ -3,6 +3,16 @@
"name": ""
},
"profile": [
-
+ {
+ "id": "6mdUtsrBaWeDvKgUXJiLqu",
+ "name": "Test",
+ "props": {
+ "Param1": 123,
+ "Param2": "HALLO",
+ "Param3": 1
+ },
+ "status": "I",
+ "type": "CustomStep2"
+ }
]
}
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
index 3ee8248..15480d0 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,14 +1,16 @@
-pandas
-aiohttp>=3.4.4
-aiohttp-auth>=0.1.1
-aiohttp-route-decorator>=0.1.4
-aiohttp-security>=0.4.0
-aiohttp-session>=2.7.0
-aiohttp-swagger>=1.0.5
-aiojobs>=0.2.2
-aiosqlite>=0.7.0
-cryptography>=2.3.1
-voluptuous>=0.11.5
-pyfiglet>=0.7.6
+aiohttp==3.7.3
+aiohttp-auth==0.1.1
+aiohttp-route-decorator==0.1.4
+aiohttp-security==0.4.0
+aiohttp-session==2.9.0
+aiohttp-swagger==1.0.15
+aiojobs==0.3.0
+aiosqlite==0.16.0
+cryptography==3.3.1
+requests==2.25.1
+voluptuous==0.12.1
+pyfiglet==0.8.post1
+pandas==1.1.5
shortuuid==1.0.1
-tabulate==0.8.7
\ No newline at end of file
+tabulate==0.8.7
+cbpi4-ui==0.0.2
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 0946b45..b2261fa 100644
--- a/setup.py
+++ b/setup.py
@@ -27,9 +27,10 @@ setup(name='cbpi',
"requests==2.25.1",
"voluptuous==0.12.1",
"pyfiglet==0.8.post1",
- 'pandas==1.2.0',
+ 'pandas==1.1.5',
'shortuuid==1.0.1',
- 'tabulate==0.8.7'
+ 'tabulate==0.8.7',
+ 'cbpi4-ui==0.0.2',
],
dependency_links=[
'https://testpypi.python.org/pypi'