[C++] 382 SwitchBot管理アプリの製作 その9 UserDefaultsでデータ永続化 Objective-C++, wxWidgets

[Mac M2 Pro 12CPU, Sonoma 14.5, wxWidgets 3.2.5]

設定データを保存する方法としてCSVを考えていましたが、macOSアプリですからOS固有の方法を活用してみたくなりました。

Objective-C++で書いた関数を使って設定データをUserDefaultsで管理するようにしました。

以前開発していたBBSブラウザと同様、cppファイルとmmファイルがプロジェクトに混在する形となります。

#include <iostream>
#import <Foundation/Foundation.h>

void saveToUserDefaults(const std::string& key, const std::string& value) {
    NSString *nsKey = [NSString stringWithUTF8String:key.c_str()];
    NSString *nsValue = [NSString stringWithUTF8String:value.c_str()];
    [[NSUserDefaults standardUserDefaults] setObject:nsValue forKey:nsKey];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

std::string getFromUserDefaults(const std::string& key) {
    NSString *nsKey = [NSString stringWithUTF8String:key.c_str()];
    NSString *nsValue = [[NSUserDefaults standardUserDefaults] stringForKey:nsKey];
    if (nsValue) {
        return std::string([nsValue UTF8String]);
    } else {
        return "";
    }
}

[C++] 381 SwitchBot管理アプリの製作 その8 エアコン自動運転 wxWidgets

[Mac M2 Pro 12CPU, Sonoma 14.5, wxWidgets 3.2.5]

エアコン自動運転機能を実装しました。

エアコン動作温度を0.1度単位で設定し、温度幅を純正アプリの0.5度から最小0.1度にすることができます。

これでエアコン操作をこのアプリに任せて、なおかつ浴室の状態を常にモニタリングできるようになりました。グラフは過去の数値を最大4時間分プロットしています。

次はiPhone版やiPad版をC++(Objective-C++)ベースで作れるかどうか検討します。