Skip to content

Commit 3c2f68b

Browse files
authored
Merge pull request smarthomeNG#1030 from Morg42/sm-1
smartmeter: improve webif feedback
2 parents fe8fe84 + c4c33e6 commit 3c2f68b

3 files changed

Lines changed: 34 additions & 23 deletions

File tree

smartmeter/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,11 @@ def create_items(self, data: dict = {}, file: str = '') -> bool:
210210
dir = self._sh._items_dir
211211
file = os.path.join(dir, f'smartmeter-{id}.yaml')
212212

213+
self.item_file = file
214+
213215
if os.path.exists(file):
214216
self.logger.warning(f'output file {file} exists, not overwriting.')
215-
return False
217+
raise FileExistsError
216218

217219
result = {}
218220
for nr, code in enumerate(data):
@@ -246,7 +248,6 @@ def create_items(self, data: dict = {}, file: str = '') -> bool:
246248

247249
try:
248250
yaml_save(file, {id: result})
249-
self.item_file = file
250251
except Exception as e:
251252
self.logger.warning(f'saving item file {file} failed with error: {e}')
252253
return False

smartmeter/webif/__init__.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,13 @@ def submit(self, cmd=None):
145145
result = self.plugin.query(assign_values=False)
146146

147147
elif cmd == 'create_items':
148-
result = {'success': self.plugin.create_items(), 'file': self.plugin.item_file}
148+
try:
149+
result = {'success': self.plugin.create_items(), 'file': self.plugin.item_file, 'err': ''}
150+
except FileExistsError:
151+
result = {'success': False, 'file': '', 'err': f'Datei {self.plugin.item_file} bereits vorhanden, bitte erst löschen oder umbennen.'}
152+
self.logger.warning(result)
153+
except Exception as e:
154+
self.logger.error(e)
149155

150156
if result is not None:
151157
# JSON zurücksenden

smartmeter/webif/templates/index.html

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -305,39 +305,43 @@
305305
switch (id) {
306306
case 'detect':
307307
if (data.discovery_successful) {
308-
updateButton(buttonElement, 'btn-success', "true");
309-
alert('Ermittlung des Smartmeter-Protokoll erfolgreich!');
310-
shngInsertText('protocol', data.protocol || '', 'headtable');
308+
updateButton(buttonElement, 'btn-success', "true");
309+
alert('Ermittlung des Smartmeter-Protokoll erfolgreich!');
310+
shngInsertText('protocol', data.protocol || '', 'headtable');
311311
} else {
312-
updateButton(buttonElement, 'btn-danger');
313-
alert('Ermittlung des Smartmeter-Protokoll fehlgeschlagen!\n' + data.log);
312+
updateButton(buttonElement, 'btn-danger');
313+
alert('Ermittlung des Smartmeter-Protokoll fehlgeschlagen!\n' + data.log);
314314
}
315315
break;
316316

317317
case 'query':
318318
if (data) {
319-
updateButton(buttonElement, "btn-success");
320-
alert('Auslesen des Smartmeter erfolgreich!');
321-
322-
for (const obis in data) {
323-
const obis_data = data[obis][0];
324-
const obis_data_formatted = jsonToKeyValueLines(obis_data);
325-
console.log("obis=" + obis, "data=" + obis_data_formatted);
326-
createOrUpdateTableRowObis('obis_data_table', obis, obis_data_formatted);
327-
}
319+
updateButton(buttonElement, "btn-success");
320+
alert('Auslesen des Smartmeter erfolgreich!');
321+
322+
for (const obis in data) {
323+
const obis_data = data[obis][0];
324+
const obis_data_formatted = jsonToKeyValueLines(obis_data);
325+
console.log("obis=" + obis, "data=" + obis_data_formatted);
326+
createOrUpdateTableRowObis('obis_data_table', obis, obis_data_formatted);
327+
}
328328
} else {
329-
updateButton(buttonElement, "btn-danger");
330-
alert('Auslesen des Smartmeter fehlgeschlagen!');
329+
updateButton(buttonElement, "btn-danger");
330+
alert('Auslesen des Smartmeter fehlgeschlagen!');
331331
}
332332
break;
333333

334334
case 'create_items':
335335
if (data.success === true) {
336-
updateButton(buttonElement, "btn-success", "true");
337-
alert('Item Erstellung erfolgreich, Items geschrieben in ' + data.file + '!');
336+
updateButton(buttonElement, "btn-success", "true");
337+
alert('Item Erstellung erfolgreich, Items geschrieben in ' + data.file + '!');
338338
} else {
339-
updateButton(buttonElement, "btn-danger");
340-
alert('Item Erstellung fehlgeschlagen!');
339+
updateButton(buttonElement, "btn-danger");
340+
if (data.err) {
341+
alert(data.err)
342+
} else {
343+
alert('Item Erstellung fehlgeschlagen!');
344+
}
341345
}
342346
shngInsertText('protocol', data.protocol || '', 'headtable');
343347
break;

0 commit comments

Comments
 (0)